目录
文章目录
容器网络
CNM 容器网络模型
CNM(Container Networking Model,容器网络模型)是 Docker 公司立足于开源生态之上提出的容器网络模型,其设计初衷是实现跨多种网络基础设施的应用可移植性,本质上是一个基于 Multi-Drivers Plugins 软件架构进行设计的抽象网络能力接口层。
如下图所示,CNM 具有 3 个核心抽象概念:
- Network Sandbox(网络沙箱):本质是一个 Container Network Namespace,具有隔离的网络资源视图,包括:Interface、Route Table、DNS nameserver 等等。一个 Sandbox 可能包含多个 Endpoint。
- Network(网络):本质是一个 L2 Network or L3 Subnet,由底层的 Network Provider 提供。这些 Provider 可以是 Linux Kernel 原生的虚拟网络技术,例如:Linux Bridge,也可以是 SDN 厂商提供的技术方案,例如:OvS/OVN。
- Endpoint(端点):作为 Network 和 Sandbox 之间的接入点,根据提供的 Network Provider 可以具有不同的具体实现,例如:Kernel 提供的 Vtap、Veth-pair 等。