普通的vlan是在网络中划分一个逻辑的子网,vlan数量4094个,互相隔离。后来由于vlan数量不够,出现了QinQ技术,vlan进行两层嵌套,扩大了vlan数量。由于大规模云计算的出现,传统的vlan数量已经不能满足需求。而且随着虚拟化技术的出现,虚拟机可以跨pod甚至跨机房进行迁移而且IP和MAC需要保持不变。如果在传统的网络中,IP一般是随物理网络固定好,如果需要改动IP,一般涉及到物理网络的变更。这样一来就催生了VxLAN技术的产生。
VxLAN其实是一种隧道技术,它是在现有的物理(underlay)网络构建出一个逻辑(overlay)网络。它的头部与IP头部封装的方式一样,采用了Mac in UDP技术,使得只要物理网络两端IP可达,建立VxLAN隧道,就能使现有的二层网络进行扩大,不再受物理网络的限制,也叫大二层技术。注意,这里只扩大了子网的物理网络的范围,广播域没有扩大,从而避免了广播风暴。而且VNI标签多达24bit,可以容纳多达1600w个不同的子网,足以满足云计算网络中的需求。
一、VxLAN报文格式
Outer UDP端口使用4798,但可以修改
Outer IP头封装:源IP为发送报文的虚拟机所属的VTEP的IP地址,目的IP为目的虚拟机所属的VTEP IP地址。
Outer的目的IP地址可以是单播和组播地址,单播的情况下,目的IP为VTEP(Vxlan Tunnel End Point)的IP地址,在多播的情况下引入VXLAN的管理层,利用VNI和IP多播组的映射来确定VTEP。
当目的IP为接收端的VTEP的IP时,假如不知道这个IP地址,则需要执行ARP请求来获取,步骤如下:
1、目标IP被替换成与源虚拟机具有相同VNI的多播组IP地址;
2、所有VTEP端都接收该多播报文,VTEP查找所在主机上的全部虚拟机来匹配源虚拟机的Inner 目的MAC。
3、目标VTEP的虚拟机会回应该多播包,从而获得目标VTEP的IP地址。
4、发送端VTEP添加VNI-VTEP-虚拟机MAC的映射关系到自己的VXLAN表中,以避免再次组播学习。
Outer 以太封装:SA为发送报文的虚拟机所属的VTEP MAC地址,DA为目的虚拟机所属的VTEP上路由表中下一跳MAC地址。
二、VxLAN网络结构
NVE(Network Virtrualization Edge网络虚拟边缘节点)是实现网络虚拟化的功能实体,VM里的报文经过NVE封装后,NVE之间就可以在基于L3的网络基础上建立起L2虚拟网络。网络设备实体以及服务器实体上的VSwitch都可以作为NVE。
VTEP为VXLAN隧道的端点,封装在NVE中,用于VXLAN报文的封装和解封装。VTEP与物理网络相连,分配的地址为物理网络IP地址。VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。
VNI(VXLAN Network Identifier):VXLAN网络标识VNI类似VLAN ID,用于区分VXLAN段,不同VXLAN段的虚拟机不能直接二层相互通信。一个VNI表示一个租户,即使多个终端用户属于同一个VNI,也表示一个租户。VNI由24比特组成,支持多达16M((2^24-1)/1024^2)的租户。
VAP(Virtual Access Point):虚拟接入点VAP统一为二层子接口,用于接入数据报文。为二层子接口配置不同的流封装,可实现不同的数据报文接入不同的二层子接口。
VM之间的通信模式主要有3种:同VNI下的不同VM(分布在同一实体和不同实体两种),不同VNI下的跨网访问,VXLAN和非VXLAN之间的访问。
三、VXLAN网关
二层网关:位于同一VNI终端用户通信,L2网关收到用户报文后,根据报文中包含的目的MAC类型,报文转发流程分为:
1. MAC地址为BUM(broadcast&unknown-unicast&multicast)地址,按照 BUM报文转发流程进行处理
2. MAC地址为已知单播地址,按照已知单播报文转发流程进行处理
三层网关:L3网关解决的就是不同VNI以及VXLAN和非VXLAN之间的互访。L3网关分为集中式网关和分布式网关,这2者的主要区别就在于L3网关是在leaf上还是在spine上。
如上图,集中式L3 GW在spine上,可以看出集中式spine的ARP表项是一个瓶颈,并且子网流量转发绕远。
而分布式则是L2,L3网关都在leaf上。当网络规模较大时,需采用分布式网关,分布式网关时,VTEP在leaf上。spine节点不感知VXLAN隧道。
,