VXLAN


在传统的大二层网络里,实现二层网络隔离主要依赖于vlan技术。但是在目前云计算的环境下,基于vlan的二层网络存在很多问题,如下:

  1. 虚拟机规模受网络设备表项规格的限制
    二层转发基于mac转发表。在云领域,虚机的规模很大,导致mac表的规模很大,接入层设备的压力较大。
  2. 网络隔离能力有限
    公有云中,租户较多,vpc的数目也较多。VLAN只有12bit的标示位,最多能够4096 个 VLAN 网络。对于公有云场景也是无法满足那么多租户的网络需求。
  3. 虚机迁移的需求受限
    云中,虚机的迁移是较为频繁的需求。虚机的迁移需要保证,虚机的IP及MAC地址不变,因此,无论虚机迁移至何处,都需要保证虚机在原来的子网内。在vlan模式下,这就要求迁移的目标宿主机在同一个二层网络下,这就限制了虚机迁移的范围。

针对VLAN上述存在的问题,因此VXLAN被提出用于实现网络隔离。同样GRE也是同样功能。

VXLAN协议
VXLAN:Virtual eXtensible Local Area Network,虚拟扩展局域网。基于UDP实现跨三层网络的二层网络,MAC-IN-UDP。
VXLAN报文架构:

VXLAN报文

如上报文格式:
VXLAN头部封装的是原始的二层报文,VXLAN头部则封装在UDP报文中。
Inner:
内部报文,分别是内部目的地址MAC及IP地址。

VXLAN Header:
共 8 个字节,目前使用的是 Flags 中的一个 8bit 的标识位和 24bit 的VNI(Vxlan Network identifier) ,其余部分没有定义,但是在使用的时候必须设置为 0x0000。

Outer UDP:
共8个字节,IANA分配的标准目的端口使用 4798,但是各厂商可以根据需要进行修改,同时UDP的校验和必须设置成全 0。

Outer IP:
共20个字节,目的IP地址可以是单播地址,也可以是多播地址。 单播情况下,目的IP地址是目的VTEP的 IP地址;当用于VXLAN控制平面时会使用多播地址。

VNI:
用于标记逻辑网络,实现网络隔离的唯一标示。

VXLAN通信模式:

VXLAN_TUNNEL

VTEP(VXLAN Tunnel Endpoints):VXLAN隧道端点,分配有具体的IP,对vxlan数据包的封装及解封装。既可以部署在交换机上,也可以部署在物理节点上。
VXLAN Tunnel:VXLAM隧道,虚拟概念,只需要三层互通即可。

VXLAN通信流程:

ARP请求过程

server1 -> server3,发送ARP请求,查询server3的mac地址。

  • server1发送源mac:vm1_mac,目的mac: FFFF:FFFF:FFFF:FFFF,源IP: vm1_ip,目的IP: vm3_ip,广播报文,请求vm3的mac地址;
  • vm1的arp广播包到达Device1 VTEP1,VTEP1学习了VM1的{mac,vni,Interface},添加对应的表项。查询本地mac表,若查询到,则直接应答vm1。若未查询,在根据vni,将ARP广播包通过组播发送至其余的VTEP。在隧道中,ARP包封装为一个普通的UDP包;
  • VTEP1发送的组播包到达Device2 VTEP2, Device VTEP3后。对vxlan包进行解封装,得到vm1的原始报文。根据这些报文,VTEP2,VTEP3学习记录mac表信息,{vni,内层mac,vtep_port}(实际在ovs中,{vni,mac,vtep_port}通过流表学习并动态插入的);具有ARP代理功能的vtep中,也会记录mac ip的对应关系。
  • VTEP2 VTEP3解封数据包,继续广播ARP报文。

ARP应答

  • ARP的应答为一个单播过程,VM3收到ARP的广播包,目的IP,目的MAC为VM1_ip,VM1_mac;应答包到达VTEP3,VTEP3学习{vm3_mac,vm3_vni,interface};同时由于在ARP广播包中学习到VM1的{mac,vni,vtep_port},所以VTEP3封装arp应答包,直接发送给VTEP1;
  • VTEP1收到VTEP3发送的UDP包,解封装获得原始包,同时学习了VM3的{mac,vni,vtep_port};由于VTEP中有VM1的mac关系表,因此,直接根据{VM1_mac,vni,interface}进行数据包的转发。

数据的传输,参考ARP的应答过程。

ARP洪泛流量抑制

此功能主要VTEP能够学习记录ARP的表项,在收到ARP的查询时,能够无需广播,根据已有的表项进行ARP应答。
如上图所示结构:

  • VM1->VM3,发送ARP请求时,ARP包到达VTEP1时,学习记录VM1的{mac,ip}信息。VTEP1将ARP请求广播至VTEP2,VTEP3时,VTEP{2,3}也会学习记录VM1的{mac,ip}信息。
  • VM3->VM1,应答时,应答包到达VTEP3时,VTEP3可以学习到VM3的{mac,ip}信息;数据包到达VTEP1是,VTEP1同时也能够学习到VM3的{mac,ip}信息;
  • 因此当VTEP1下另有虚机需要arp vm3的信息时,VTEP1在本地直接查询到VM3的mac,并arp的应答,避免了广播。

VXLAN网关

VXLAN网关分为集中式网关和分布式网关:

  • 集中式网关

  • 分布式网关

你可能感兴趣的:(VXLAN)