vxlan 简介
名词解释
VNI(vxlan network identifier)
VTEP(Vxlan Tunnel End Point)
用于对VXLAN报文进行封装/解封装,包括ARP请求报文和正常的VXLAN数据报文,在一段封装报文
后通过隧道向另一端VTEP发送封装报文,另一端VTEP接收到封装的报文解封装后根据封装的MAC地址
进行装法。VTEP可由支持VXLAN的硬件设备或软件来实现。
什么是vxlan
vxlan(virsual extensible lan),虚拟局域网扩展,是一种虚拟化网络技术。vxlan提供了将二层网络overlay到三层网络上的能力,vxlan header中的VNI(vxlan network identifier)有24个bit位,使lan的数量远远大于vlan的4096个(vlan标识符为8个bit),达到了1600万以上。
vxlan的作用
- vlan的数量限制。4096个vlan远远不能满足大规模云计算数据中心的需要。
- 解决STP在大型网络设备带宽浪费和收敛性能变慢的缺陷。
- 解决TOR交换机MAC表耗尽问题。二层网络出现后,不仅要记录数据中心二层设备的MAC地址,还得记录其他数据中心二层范围内的MAC地址。这其中包括了海量的虚拟机的MAC地址,增加了TOR MAC表的需求。但目前的交换机芯片远远无法满足这一需求。
vxlan的数据平面
已经知道,VTEP为虚拟机的数据包加上了层包头,这些新的报头之有在数据到达目的VTEP后才会被去掉。中间路径的网络设备只会根据外层包头内的目的地址进行数据转发,对于转发路径上的网络来说,一个Vxlan数据包跟一个普通IP包相比,出了个头大一点外没有区别。由于VXLAN的数据包在整个转发过程中保持了内部数据的完整,因此VXLAN的数据平面是一个基于隧道的数据平面。
vxlan的控制平面
VXLAN不会在虚拟机之间维持一个长连接,所以VXLAN需要一个控制平面来记录对端地址可达情况。控制平面的表为(VNI,内层MAC,外层vtep_ip)。Vxlan学习地址的时候仍然保存着二层协议的特征,节点之间不会周期性的交换各自的路由表,对于不认识的MAC地址,VXLAN依靠组播来获取路径信息(如果有SDN Controller,可以向SDN单播获取)。另一方面,VXLAN还有自学习的功能,当VTEP收到一个UDP数据报后,会检查自己是否收到过这个虚拟机的数据,如果没有,VTEP就会记录源vni/源外层ip/源内层mac对应关系,避免组播学习。