dockercon eu 2015: docker networking deep dive

31
Docker Networking Deep Dive Dave Tucker Product Manager Jana Radhakrishnan Senior Software Engineer

Upload: docker-inc

Post on 10-Jan-2017

2.971 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: DockerCon EU 2015: Docker Networking Deep Dive

Docker Networking Deep DiveDave TuckerProduct Manager

Jana RadhakrishnanSenior Software Engineer

Page 2: DockerCon EU 2015: Docker Networking Deep Dive

Agenda

What's Next?IPv6 Service Discovery Security

Better togetherDeploying an app using Swarm, Compose and Networking

What's in 1.9Overview Bridge Driver Overlay Driver Default Gateway service

Use CasesMicrosegmentation Multi-Tenancy Cloud portability

Page 3: DockerCon EU 2015: Docker Networking Deep Dive

What's in 1.9?Lot's of networking awesomeness

Page 4: DockerCon EU 2015: Docker Networking Deep Dive

— Moby Dock

“Transform networking, like Docker did for compute”

4

Page 5: DockerCon EU 2015: Docker Networking Deep Dive

5

• New top-level UX & API: docker network • Multiple micro-segmented networks • Connect containers to multiple networks • Multi-host networking • Pluggable

• Network driver plugins • IP Address Management plugins

Features available in 1.9

Page 6: DockerCon EU 2015: Docker Networking Deep Dive

6

• A Network... • Interconnects a set of containers • Provides isolation for these containers

• Every network is backed by a driver • Networks are scoped as Local or Global • Scope is chosen based on negotiated

driver scope

Networks and Scopes

Page 7: DockerCon EU 2015: Docker Networking Deep Dive

7

docker network create

mrjana@dev-1:~$ docker network create --help

Usage: docker network create [OPTIONS] NETWORK-NAME

Creates a new network with a name specified by the user

--aux-address=map[] auxiliary ipv4 or ipv6 addresses used by Network driver -d, --driver=bridge Driver to manage the Network --gateway=[] ipv4 or ipv6 Gateway for the master subnet --help=false Print usage --ip-range=[] allocate container ip from a sub-range --ipam-driver=default IP Address Management Driver -o, --opt=map[] set driver specific options --subnet=[] subnet in CIDR format that represents a network segment

Page 8: DockerCon EU 2015: Docker Networking Deep Dive

Bridge Network Driver

8

C1

Docker0 br-ee40a8236479

Host NIC

X

Docker Host

C2

C3

C4

C5

C6

Page 9: DockerCon EU 2015: Docker Networking Deep Dive

Multi-host Networking

KV Store

Docker Host Docker Host Docker Host

C1

C2

C3C4

C5

C6C7

C8

C9

Page 10: DockerCon EU 2015: Docker Networking Deep Dive

Overlay Network Driver

10

C1

C2

C3

C5

C4

br0

Veth

Veth

Veth

Host NIC

VXLAN

Host NIC

br0

Veth

Veth

VXLAN

Docker Host 1 Docker Host 2

Page 11: DockerCon EU 2015: Docker Networking Deep Dive

Overlay Control Plane

11

KV STORE

Serf

IP Address allocation VXLAN ID allocation

(Network, subnet) -> VXLAN ID

Populate Neighbor Table entries Populate L2 FDB entries Populate Neighbor Table entries

Populate L2 FDB entries

Docker Host 1 Docker Host 2

Page 12: DockerCon EU 2015: Docker Networking Deep Dive

Default gateway service

12

C2 Overlay Network 2

default_gwbridge

C1Overlay Network 1

ICC=false

Port Mapping & NAT Happens here

Page 13: DockerCon EU 2015: Docker Networking Deep Dive

Use CasesHow to use Docker's new networking

Page 14: DockerCon EU 2015: Docker Networking Deep Dive

Use Case: Multi-Tenancy

14

Network "Foo"

Network "Bar"

C1 C2

Page 15: DockerCon EU 2015: Docker Networking Deep Dive

Use Case: Microsegmentation

15

Network "frontend"

Network "backend"

App DB1

DB

Page 16: DockerCon EU 2015: Docker Networking Deep Dive

Use Case: Cloud Portability

16

Network "ubercloud"

aws do

Page 17: DockerCon EU 2015: Docker Networking Deep Dive

What's Next?More awesome, coming soon

Page 18: DockerCon EU 2015: Docker Networking Deep Dive

Better IPv6 Support- IPv6 that just works out of the box

- IPv6 address allocation

- Static public address assignments

- Bridge Network and Overlay Network

- Support for AAAA record resolution

Page 19: DockerCon EU 2015: Docker Networking Deep Dive

Service Discovery- DNS based service discovery

- Register one or more containers as providing a "service" within a network

- Provide DNS records to allow the service to be discovered

Page 20: DockerCon EU 2015: Docker Networking Deep Dive

Security- Encryption for the Overlay Network

- Official "proxy" container for tying networks together

- Like in the micro-segmentation use case

- "Offline" networks

Page 21: DockerCon EU 2015: Docker Networking Deep Dive

Better togetherDeploying an application with networking

Page 22: DockerCon EU 2015: Docker Networking Deep Dive

— Dave Tucker

“Taking Kitematic's Minecraft Demo and turning

it up to eleven ”

22

Page 23: DockerCon EU 2015: Docker Networking Deep Dive

The problem statement

- Deploy a Minecraft server

- Support multiple worlds, one for each mode of play

- Central lobby

- Survival world

- Creative world

Page 24: DockerCon EU 2015: Docker Networking Deep Dive

The Application

LobbySurvival Creative

Page 25: DockerCon EU 2015: Docker Networking Deep Dive

Infrastructure

Overlay Network

Page 26: DockerCon EU 2015: Docker Networking Deep Dive

See it in action!

Page 27: DockerCon EU 2015: Docker Networking Deep Dive

Thank you!Dave Tucker@dave_tucker [email protected]

Jana Radhakrishnan@mrjana [email protected]

Page 28: DockerCon EU 2015: Docker Networking Deep Dive

Q&A

Page 29: DockerCon EU 2015: Docker Networking Deep Dive

Backup

Page 30: DockerCon EU 2015: Docker Networking Deep Dive

Day in the life of packet

30

C1 ARP Request br0Flood

ARP RequestSrc

VXLAN Interface

Proxy ARP Response C1 br0

Full IP packet with L2 header

Flood IP packet

Src VXLAN

InterfaceLookup FDB Send VXLAN

packet

Src Host NICSend on the

wire

Dst Host NICProcess

VXLAN Encap

Dst VXLAN

InterfaceSend original

IP packet over bridge

br0

Flood IP packet

C2

Page 31: DockerCon EU 2015: Docker Networking Deep Dive

Classic three tier application

App WebDB Front End Network

Back End Network