hello云胜

技术与生活

0%

vxlan

简单理解下vxlan,因为不是专业搞网络的,没必要搞得太透彻,只说下vxlan是怎么回事。

理解vxlan之前,先理解两个名词overlay和underlay。

underlay就是指底层的物理网络。

overlay就是在物理网络之上的虚拟覆盖网络。

vxlan就是一种overlay技术。通过三层的网络搭建虚拟的二层网络。

简单来说,就是在underlay网络上使用隧道技术,使用udp协议构建起overlay逻辑网络。

好处是什么?

对原有的网络架构影响小,不需要对原网络做任何改动(因为使用隧道打通),就可在原网络的基础上架设一层新的网络。

vxlan技术是对vlan技术的升级,VLAN技术的缺陷是VLAN Header预留的长度只有12比特,所以最多只能支持划分4096个子网。无法满足现在云计算场景的需要。

云计算场景下,虚拟机/容器会随时大规模迁移,因此网络需要保证一直可用,这就是大二层的概念。但是在保证大二层的同时又需要控制二层的广播域不能太大。

vxlan是建立在三层网络上的,因此要求网络必须三层可达。在三层网络上面搭建一层虚拟的二层网络。

我们提了很多次隧道这个词。要注意隧道tunnel只是一个逻辑上的概念,并没有一个真实的物理实体与其对应。

只是vxlan的通信双方以为互相之间是直接通信,是vxlan为通信双方建立了一个单独的通信通道。

缺点:

因为vxlan是一个二层网络,所以他的报文时mac in udp。

image-20231010095203859

vxlan的封包格式。

ethernet header 就是mac地址头

可以看出,VXLAN报文比原始报文多出了50个字节。这样的话就对小包的传输就不太合算。

而且每次都需要进行vxlan的数据包封包和解包会存在一定的性能损耗

在k8s网络中的应用

在k8s的网络插件flannel和calico中都支持vxlan模式

flannel默认和推荐的方法是使用VxLAN