一、概述
受限于底层网络基础设施的多样性影响,容器网络虚拟化尚未出现事实上的胜出者。
当前容器网络虚拟化实践依然百家争鸣,一派繁荣。
二、容器网络虚拟化方案
容器网络虚拟化社区主要有underlay、overlay以及路由三大方向技术实践:
1、underlay方案
underlay方案中容器和宿主机链接于同一层基础网络上,容器与容器、容器与节点之间网络由底层网络基础设施打通。
underlay方案示意如下图:
underlay方案中,容器内网络包到宿主机网络流转路径如下:
1)容器内数据包经本地路由至容器网口
2)数据包经vethpair(类网线)到宿主机命名空间bridge设备
3)数据包出宿主机网口进入宿主机网络
接下来,数据包将经宿主机网络被投递至目标节点,进一步按上图示反向路径投递给目标容器。
2、overlay方案
overlay方案中容器网络独立于节点网络 ,容器跨主机通信时容器网络数据包被封装进节点网络数据包中,经节点间隧道通信。
overlay方案有二层、三层overlay两种常见实现,如下为二层overlay方案示意图:
overlay方案(二层vxlan实现)中,容器内数据包到宿主机网络流转路径如下:
1)容器内数据包经本地路由表至容器网络设备
2)数据包经类网线vethpair到宿主机命名空间brdige设备
3)经宿主机路由表进入vtep设备
4)vtep设备对数据包进行封包,封装成宿主机vxlan数据包
5)数据包经宿主机网络设备进入宿主机网络
接下来,数据包将经宿主机网络被投递至目标节点,进一步按上图示反向路径投递给目标容器。
overlay方案(三层udp实现)中,容器内数据包到宿主机网络流转路径如下:
详细过程略
3、路由方案
路由方案中容器网络和宿主机网络分属不同网段,容器跨主机通信经路由直接投递至目标节点,无需进行二次封解包。
路由方案方案示意图如下:
路由方案中,容器内数据包到宿主机网络流转路径如下:
1)容器内数据包经本地路由表至容器网络设备
2)数据包经类网线vethpair到宿主机命名空间brdige设备
3)经宿主机路由表进入节点网络投递给目标宿主机
接下来,数据包将经由宿主机网络被投递至目标节点,进一步按上图示反向路径投递给目标容器。
三、网络虚拟化方案评价
网络虚拟化方案 | 开源实践 | 方案评价 |
overlay方案 | flannel(vxlan)、flannel(udp)、calico(ipip) |
overlay方案性能差,社区数据表明二层overlay性能损耗20% - 30%之间,三层overlay性能损耗高达80%。 overvlay方案对底层网络依赖少,适用构建第三方kvm虚拟化主机之上的容器云平台。 |
underlay方案 | contiv(underlay) |
underlay方案性能好,部分厂商数据表明其基于underlay方案的容器虚拟化方案性能损耗在5%左右。 underlay方案对底层网络依赖强,适用构建可管控底层网络基础设施的物理机上私有云平台场景 |
路由方案 | calico(bgp)、contiv(bgp)、flannel(host-gw) |
overlay方案性能良好,社区数据表明路由方案性能损耗在5%~10%之间。 路由方案对底层基础设施有依赖,建议根据平台对基础设施掌握程度,酌情选择适宜路由方案套件 |