Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

5.2.4. 数据包流

假设您有两个容器:A 和 B。其中容器 A 的 eth0 的对等虚拟以太网设备名为 vethA,而容器 B 的 eth0 的对等设备名为 vethB

注意

如果您尚未熟悉 Docker 服务使用对等虚拟以太网设备,请参阅 Docker 的高级网络文档

现在假定容器 A 存在于本地主机上,容器 B 也在本地主机上。然后,从容器 A 到容器 B 的数据包流如下:

eth0 (A’的 netns) → vethAbr0vethBeth0 (B’的 netns)

接下来,假设容器 A 位于本地主机,容器 B 位于集群网络上的远程主机上。然后,从容器 A 到容器 B 的数据包流如下:

eth0 (in A's netns)→ vethAbr0vxlan0 → network [1]vxlan0br0vethBeth0 (在 B 的 netns)

最后,如果容器 A 连接到外部主机,流量类似如下:

eth0 (在 A 的 netns) → vethAbr0tun0 →(NAT)→ eth0 (物理设备) → Internet

几乎所有数据包交付决策都通过 OVS 网桥 br0 中的 OpenFlow 规则来执行,这简化了插件网络架构并提供灵活的路由。对于 ovs-multitenant 插件,这还提供强制的 网络隔离



[1] 这时,设备名称引用容器 B 主机上的设备。