Appswitch questions the status quo of networking in container/ Docker/ Kubernetes world and provides an alternate to overlays network with better performance and less complexity.
2. Agenda
- Recap of networking in docker/ kubernetes world
- How networking is broken in container world
- AppSwitch features/ working/ architecture
- AppSwitch demo
4. Packet Journey in kubernetes cluster
All problems in computer science can be solved with another layer, except
of course the problem of too many layers. – David Wheeler
- Many optimizations to improve the layers
- Complexity
- Can we remove the layers and associated complexity
instead?
9. AppSwitch: Promises
- Give apps sockets instead of devices
- NOT in data path (for TCP)
- Remove complexity (one daemonset [DS]/ container)
- Proxy less client side load balancer
- Application segmentation based on labels
- Service discovery/ registry
- Native or better performance
10. AppSwitch: Working
- Trap application’s system call (n/w related)
- listen()/ bind() to create a server endpoint and maintain service registry
- Virtualize ports/ IPs at system call layer
- listen()/ bind() to create virtual endpoints
- listen()/ bind(1.1.1.1:80) → listen()/ bind(10.0.0.15:40XYZ)
- Application/ server information is shared to other cluster nodes via gossip
protocol
- Connect() to connect to appropriate endpoint
- connect(1.1.1.1:80) → connect(10.0.0.15:40XYZ)
- Do NOT trap read/ write system call -- out of data path (for TCP)
11. AppSwitch: Working
- Give any name/ vIP to the app -- decouple app identity from the n/w’s
- Auto discovery of all servers as they bind()/ listen()
- Zones for segmentation
- Same application name (within same zone) will trigger client side load
balancing