+ All Categories
Home > Documents > Networking Breakout v0.3 -...

Networking Breakout v0.3 -...

Date post: 20-May-2020
Category:
Upload: others
View: 14 times
Download: 0 times
Share this document with a friend
24
Networking Breakout Dave Tucker Jana Radhakrishnan
Transcript
Page 1: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Networking BreakoutDave TuckerJana Radhakrishnan

Page 2: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Agenda

• Introduction

• Networking Deep Dive

• Ecosystem

• Q&A

Page 3: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Introduction

Page 4: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Why is Networking important?

• Networking itself is incredible vast and complex

• It's necessary to define networking for distributed applications consisting of micro-services

• BUT, it needs to be developer-friendly

Page 5: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

“We'll do for Networking, What Docker did for Compute.”

Page 6: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Goals

• Make "network" a first class object

• Provide a pluggable networking stack

• Span networks across multiple hosts

• Support multiple platforms

Page 7: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Libnetwork

• Open Sourced in April

• Over 200 Pull Requests

• Over 200 GitHub Stars

• Windows and FreeBSD ports in progress

Page 8: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Whats New?

• Updated Networking Stack in Docker

• Create Networks using the Docker CLI

• Multi-host Networking

• Services UI

blue = experimental

Page 9: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Networking Deep Dive

Page 10: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

What is Libnetwork

• Library for creating and managing network stacks for containers

• Test daemon/client called "dnet"

• Driver-based networking

• Implements the Container Network Model

Page 11: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Container Network Model (CNM)• Endpoint

• Network

• Sandbox

Page 12: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Create

Network

Create

Container

Defer to Driver

Defer to Driver

Page 13: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Libnetwork API

• libnetwork.New

• controller.ConfigureNetworkDriver

• controller.NewNetwork

• network.CreateEndpoint

• endpoint.Join

Page 14: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

RESTful API

• Provides CRUD for Networks and Endpoints

• /network

• /network/<network_id>/endpoints

• /network/<network_id>/endpoints/<endpoint_id>

• /network/<network_id>/endpoints/<endpoint_id>/containers

• /services

• /services/<service_id>

• /services/<service_id>/backends

Page 15: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Drivers

• Drivers implement the Driver API

• They provide the specifics of how a network and endpoint are implemented

Page 16: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Bridge Driver

• Creates a Linux Bridge for each network

• Creates a veth pair for each endpoint - One end is attached to the bridge

- The other appears as eth0 inside the containers

• iptables rules created for NAT

Page 17: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Overlay Driver• Creates a separate network namespace for every network

- Facilitates overlapping IP address space across networks

• Creates a Linux Bridge and VXLAN tunnels to every other discovered host

• Creates a veth pair for each endpoint - One end is attached to the bridge - The other appears as eth0 inside the container

• Network namespace connected to host network using NAT - Facilitates exiting the overlay network at every host(for external connectivity)

Page 18: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Network Plugins

• Implemented using libnetwork's remote driver

• Uses JSON-RPC transport

• Can be written in any language

• Can be deployed as a container

Page 19: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Networking Ecosystem

Page 20: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

– R. Callon, RFC 1925 - The Twelve Networking Truths

“One size never fits all.”

Page 21: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks
Page 22: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Call to Action!

• Try the Docker Experimental Channel! - https://experimental.docker.com

• Contribute to libnetwork - Raise an Issue or Submit a Pull Request

• Chat with us on IRC - #docker-network on Freenode

• Stop by at the booth for a demo

Page 23: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Q&A

Page 24: Networking Breakout v0.3 - 7u2psl.com5.z0.glb.qiniucdn.com7u2psl.com5.z0.glb.qiniucdn.com/dockercon/Networking Breakout.pdf · • Updated Networking Stack in Docker • Create Networks

Thank youDave Tucker

[email protected] @dave_tucker

Jana Radhakrishnan

[email protected] @mrjana


Recommended