networking breakout v0.3 -...
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/5.jpg)
“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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/20.jpg)
– 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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/21.jpg)
![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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022040306/5ec5564d13b08355f20a9b9a/html5/thumbnails/23.jpg)
Q&A