VxLAN网络组播优化

叠加网络拓展了二层网络,增强了虚拟机的移动性。VxLAN是在三层网络之上叠加二层网络的一种协议,它通过IP组播对共享网络基础设施上的租户逻辑网络进行隔离。在IETF的rfc文档中要求逻辑网络内的广播在物理网络中以组播的形式发出,VNI与组播组的映射由控制层设定,并通过控制通道下发到对应VTEP,VTEP设备根据连接的虚拟机所属VNI加入相应组播组中。然而IP组播需要消耗网络中的大量的资源,包括IP组播表和CPU资源。
在VxLAN构建的逻辑网络中,虚拟机向同一个逻辑网络的多个目标发送数据包主要有以下三种情况(BUM):
1. 广播
2. 未知单播
3. 组播

NSX的VxLAN架构如图所示,图中有两个子网,每个子网称为VTEP Segment。其中4台虚拟机属于同一个二层逻辑网络。
VxLAN网络组播优化_第1张图片
图1. 逻辑网络架构
NSX提出了三种BUM处理方法:
1. 多播
2. 单播
3. 混合
多播模式即IETF提出的实现方法。下面主要分析单播和混合模式。

单播
单播模式完全解耦了逻辑网络和物理网络,虚拟化节点以IP子网划分到不同的VTEP段(vtep segment)中,每个VTEP段中由一个虚拟化节点充当单播隧道终端(Unicast Tunnel End Point,UTEP),UTEP负责接收源VTEP段的单播流量并在本VTEP段中进行逻辑网络内的广播。
VxLAN网络组播优化_第2张图片
图2.单播模式
如图所示,BUM流量转发路径:
1. 图中有四台虚拟机连接到逻辑交换机(VNI 5001),VM1发送BUM到其他所有虚拟机。
2. 虚拟化节点(ESXi-1)查找由控制器下发本地VTEP表,确定本VTEP段转发目标以及远程UTEP转发目标,都以单播形式进行转发。发送给UTEP的单播数据包的VxLAN头部(“REPLICATE_LOCALLY”位);
3. UTEP收到后根据同样根据本地VTEP表将数据包复制后发送到目标虚拟化节点。
单播模式不需要对物理网络进行任何配置,不要求物理网络支持组播,此模式比较适用于小规模部署,在大规模环境和虚拟机BUM流量较多场景下,虚拟化节点对数据包复制的开销会大量增加,占用大量虚拟化节点的资源。

混合模式
混合模式类似于单播模式,组间的流量通过单播实现,但VTEP段内广播依然通过物理网络二层组播的方式实现(不需要配置组播路由)。在每个VTEP段中依然需要配置一个多播隧道终端(Mulicast Tunnel End Point,MTEP),负责接收源VTEP段的单播流量并在本VTEP段中进行组播。
VxLAN网络组播优化_第3张图片
图3. 混合模式
1. VM1产生BUM流量需要发送给VNI为5001的逻辑网络内的所有虚拟机,组播组239.1.1.1分配给了5001逻辑网络,而数据包只会发送到本地二层物理网络的组播通道中。
2. 虚拟化节点ESXi-1以239.1.1.1地址封装VM1的BUM流量,发送到此组播通道中,由于二层网络配置了组播,因此,此VETP段中加入239.1.1.1组的所有虚拟化节点(ESXi-2)都会接受到VM1发送的数据包。
3. 和单播模式相同,VTEP1查询本地VTEP表,决定需要通过单播发送的目标VTEP段中的MTEP节点,发送的数据包也会在VxLAN头部相关字段置位。
4. 相应MTEP收到此单播数据包后,通过查询相应字段确定数据包是否需要发送到组播通道中,如果置位这发送。此VTEP段中加入了组播组的节点都会收到次数据包。
混合模式中只要求物理网络配置二层组播,同时数据包的复制工作交给了交换机,适合大规模部署。然而,依然没有解决组播带来的问题。
VTEP组播优化

在《A Management Method of IP Multicast in Overlay Networks using OpenFlow》一文中提出了通过OpenFlow协议解决VxLAN组播问题。针对组播通知流量(加入/离开)消耗带宽以及网络设备处理通知流量带来的性能损耗问题,文章提出了利用OpenFlow协议将组播成员信息下发到网络设备中,同时配置VTEP加入相应组播组,完成组播配置。实现架构如图所示。

VxLAN网络组播优化_第4张图片

你可能感兴趣的:(虚拟网络,SDN)