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。

vxlan的封包格式。
ethernet header 就是mac地址头
可以看出,VXLAN报文比原始报文多出了50个字节。这样的话就对小包的传输就不太合算。
而且每次都需要进行vxlan的数据包封包和解包会存在一定的性能损耗
在k8s网络中的应用
在k8s的网络插件flannel和calico中都支持vxlan模式
flannel默认和推荐的方法是使用VxLAN