数据中心多播
多播是一种将相同流量高效传送给多个主机的方法。来自源的流量可以传递给一组分布式的感兴趣监听器,从而使单一的流量流能够到达多个接收者。HPE Aruba Networking 支持 IPv4 和 IPv6 多播;然而,本文件重点介绍 IPv4。
目录
概述
HPE Aruba Networking 数据中心支持在数据中心内主机之间以及数据中心与外部主机之间的多播流量。协议无关模式——稀疏模式(PIM-SM)、PIM——双向(PIM-BIDIR)、源特定多播(SSM)以及互联网组管理协议(IGMP)支持在 EVPN-VXLAN 和传统两层数据中心架构中的多播路由。
多播流量被识别为目标 IP 地址位于 224.0.0.0/4 IPv4 地址块内,并在网络中的路由器之间根据专用的多播路由表进行转发。该保留块中的每个唯一地址被称为多播组。无论是单播还是多播流量,都使用相同的 IP 头,但路由表维护和流量转发决策存在关键差异。
单播路由表将单播 IP 前缀与路由器上的接口相关联。当路由器接收单播数据包时,会在本地转发表中进行查找,以找到目标地址在 IP 头中的最长前缀匹配。除非是共享主机路由的 EVPN-VXLAN 覆盖,否则不需要且可能不存在目标地址的精确前缀匹配。如果目标 IP 地址不在已安装在转发表中的前缀范围内,则会丢弃该数据包。可以分配一个匹配所有地址的默认路由,为不匹配更具体前缀的流量提供默认转发路径。只有与最长前缀匹配相关联的接口会被选中以转发接收的数据包。当多个接口与相同的最长前缀匹配时,路由器会根据负载均衡算法只选择其中一个接口转发数据包。
多播路由表将 IP 多播组与一个或多个出口路由器接口相关联。当路由器接收多播数据包时,会对目标 IP 地址(即多播组)进行精确匹配查找。如果未找到匹配项,则会丢弃该数据包;如果找到匹配项,则会在与多播组相关联的接口列表上转发该数据包。
多播允许将单一数据流沿多条网络路径发送给多个接收者。发送端无需为每个感兴趣的监听器维护单独的流量流,而只需发送一个带有多播组目标 IP 的单一流,所有感兴趣的主机都可以接收相同的数据。这减轻了源主机的 CPU 负担,并最小化了网络中的流量利用率,特别适用于可以利用此传输方式的应用。多播流量常用于服务发现、主机成像、电话通信和视频应用。
多播组件
多播路由器需要一种高效建立源与感兴趣接收者之间转发状态的方法。通常,网络中只有少数主机对接收某个多播组的流量感兴趣,而且这些接收者并不知晓源 IP 地址。
类似于使用 OSPF 和 BGP 等协议构建单播路由表的方式,多播路由结合了多种控制平面协议和策略,以确保多播流量能够传递给所有感兴趣的接收者,同时只在合适的链路上消耗容量,并最小化路由器资源的使用。
PIM-SM
PIM-SM 是在 HPE Aruba Networking 数据中心中推荐的多播路由协议,也是构建多播路由表的主要协议。
一般而言,PIM-SM 路由范围限定在一个 PIM-SM 域内,该域大致定义为一组连续的 PIM-SM 支持路由器,它们共同协商域内哪个成员执行路由器 rendezvous point(RP)功能。一个 PIM 域通常包括执行路由功能的全部园区和数据中心交换机。PIM-SM 在传统和覆盖网络架构中均可运行。
PIM-SM 维护与直接连接的 PIM 对等体的邻接关系。PIM 设备主要在收到邻居的 PIM 加入和修剪消息后,添加或删除多播路由表项,这些消息传达对特定多播组流量的兴趣。多播路由项包含两个主要组成部分:入接口(IIF)和出接口列表(OIL)。当在 PIM 路由器上接收多播数据包时,数据包会被复制并在 OIL 中的所有接口上转发。
直接连接到包含源和接收者的二层 LAN 和 VLAN 段的 PIM 路由器被称为指定路由器(DRs)。
Rendezvous Point(RP)
在 PIM-SM 网络中,对接收某个多播组流量感兴趣的主机通常不知道源 IP 地址,因此此信息由网络基础设施代表接收者进行维护。一个或多个 PIM-SM 路由器被指定为 RP,管理多播组与源 IP 地址的映射。最佳实践是为 RP 功能分配一个路由器回环 IP,以确保接口始终处于激活状态。
PIM-SM 仅允许为一段多播组范围分配单一 IP 地址作为 RP。通常,将整个多播 IP 地址范围(224.0.0.0/4)分配给一个 RP 地址。为了实现 RP 冗余,采用 anycast 策略,即在两个不同的物理交换机上配置相同的 RP IP 地址。
每个多播组的源由源的 DR(通常是源的 IP 网关)通过单播 PIM 注册消息向 RP 注册。RP 在将信息添加到源地址表后,会发送 Register-Stop 消息。源的 DR 定期通过空注册消息维护多播组源地址在 RP 上的状态。
使用 anycast RP 进行冗余时,必须注意单播 PIM 注册消息只会送达其中一个 anycast RP。两个交换机都需要完整的源地址集,以确保环境的完整性。多播源发现协议(MSDP)通过在两个 anycast RPs 之间共享多播组源地址条目,解决了这一问题,确保两个交换机都拥有完整的多播组到源 IP 的数据库。
引导路由器(BSR)
所有 PIM 域中的 PIM-SM 路由器必须手动配置 RP 的 IP 地址,或使用自动化方法。
引导路由器(BSR)机制,作为 PIM-SM 协议的内置功能,提供了一种动态选择 RP 和在整个 PIM 域中分发 RP 地址的方法。该机制减轻了在所有执行多播路由的 CX 交换机上手动配置 RP 信息的管理负担。
BSR 过程分为两个阶段。首先,选举出一台配置为候选 BSR 的 PIM-SM 路由器,作为 PIM 域的 BSR。被选中的 BSR 的身份会在整个 PIM 域中进行分发。第二,配置为候选 RP 的 PIM-SM 路由器会向 BSR 广告一个特定接口 IP(通常是回环 IP),作为可能的 RP。BSR 会从候选 RP 中选择一个作为域的活跃 RP,然后通知 PIM 域中的所有其他成员已选中的 RP 地址。候选 RP 应分配优先级值,以影响 RP 选择过程。
使用 anycast RP 时,两个候选 RP 会广告相同的 IP 回环地址和相同的优先级值。最佳实践是将两个 PIM-SM 路由器同时配置为候选 BSR 和候选 RP,二者都广告相同的候选 RP 地址和优先级,从而最小化配置、实现 RP 冗余并简化故障排查。
互联网组管理协议(IGMP)
IGMP 通过两种方法识别局域网或 VLAN 段中对多播流量感兴趣的主机。
当主机对接收某个多播组的流量感兴趣时,会通过向已知的多播地址发送非请求的 IGMP 成员报告,通知 IGMP 支持的 PIM-SM 路由器其兴趣。局部网络的 PIM DR 会开始建立多播状态,允许源流量到达感兴趣的监听器,具体内容请参见 Routed Multicast Flow Setup 部分。
一个或多个 PIM-SM 路由器被配置为局部 LAN 或 VLAN 段的 IGMP 查询器。配置的 IGMP 查询器会定期发出请求,询问多播组的兴趣状态,并对所有组发出一般查询。对多播流量感兴趣的主机会以 IGMP 成员报告响应。
在 HPE Aruba Networking 数据中心中,提供 IP 网关服务的 VSX 交换机的 VLAN SVIs 被配置为 IGMP 查询器。
推荐使用 IGMPv3 作为协议版本,AOS-CX 交换机默认使用该版本。
IGMP Snooping
IGMP Snooping 在二层交换机上启用,用于监控主机与多播路由器之间的 IGMP 通信。通过监听 IGMP 消息,交换机可以发现对特定多播组感兴趣的下游端口。每个 IP 多播组对应一个 MAC 地址。基于 IGMP Snooping 数据,交换机会将多播组的 MAC 地址安装到二层转发表中。这确保多播流量只转发到对该多播组感兴趣的主机所在的端口,而不是泛洪到同一 VLAN 的所有端口,从而节省带宽和资源。
并不存在 MAC 地址与 IP 组播组的一对一映射关系。组播组 IP 地址的最后 23 位(对应范围为 00:00:00–7F:FF:FF)会附加到 01:00:5E 组织单位标识符(OUI)后面,以创建表示该组的 MAC 地址,并可以安装在第 2 层转发表中。这种策略会导致 MAC 地址超额订阅,即每个 MAC 地址可能代表 32 个 IP 组播组。在为应用选择组播组地址时,应考虑这一点,以确保第 2 层转发的优化。
建议在所有执行第 2 层操作的 AOS-CX 交换机上启用 IGMP 监控配置,特别是在使用组播时。这可以通过不占用没有下游接收者的链路容量来提升网络性能。不感兴趣的下游主机无需处理这些数据包。
路由组播流设置
组播接收者与源之间的网络路径被称为分发树,其中接收者是树的叶子,PIM 路由器链路是分支,树的根是源。
组播路由表指定两种类型的条目:(*,G) 和 (S,G)。对于这两种类型的条目,”G” 表示组播组。在 (*,G) 路由条目中,”*” 表示特定组播组的所有可能源。在 (S,G) 条目中,”S” 表示单个源地址。
(*,G) 发音为“星号逗号G”,(S,G) 发音为“S逗号G”。
两种多播路由类型有助于构建多播转发表,并为每个条目指定两个组成部分:一个出接口列表(OIL)和一个入接口(IIF)。当某个组存在路由状态时,从上游源接收的多播流量会沿每个包含在组合的 (*,G) 和 (S,G) OIL 中的接口向下转发,面向所有感兴趣的接收者。
接收者的DR负责启动构建分发树和路由状态的过程。
共享树(Rendezvous Point Tree)
当第一个感兴趣的监听器对某个多播组发送IGMP加入请求时,接收者的DR尚不了解该组的源。由于RP知道PIM域中的所有多播源,接收者的DR开始向RP构建分发树。这条路径被称为rendezvous point tree(RPT)。
接收者的DR将接收者网络段的接口添加到 (*,G) 路由条目的出接口列表(OIL)中。然后,DR根据反向路径转发(RPF)向RP发送 (*,G) PIM加入请求,RPF确定与RP的IP地址最近的单播路由距离的接口。发送 (*,G) 加入请求的相同接口也被添加为 (*,G) 路由条目的入接口。
上游的PIM-SM邻居接收 (*,G) PIM加入请求后,会创建一个 (*,G) 路由条目,并将接收到加入请求的接口添加到多播组的OIL中。然后,它使用RPF向RP发送 (*,G) 加入请求,选择最近的接口,再次将该接口添加为 (*,G) 路由条目的IIF。这个过程会重复,直到RP收到 (*,G) PIM加入请求。
最短路径树(SPT)
RP包含PIM域中所有已知源的列表,因此它用于促进源和感兴趣的接收者之间在路由网络上的初始流量传输。
当RP从PIM邻居接收到 (*,G) PIM加入请求时,它会为该组创建一个 (*,G) 路由条目,并将PIM加入请求的接口添加到OIL中。然后,它会查阅已知源列表,针对请求的多播组的每个已知源,构建一棵最短路径树(SPT)。
以下过程对RP已知的每个源地址重复执行。RP会添加一个 (S,G) 路由条目。RPF过程会查阅单播路由表,确定到源的最短路由距离的接口。该接口被添加为 (S,G) 路由条目的IIF,并向源所在接口的PIM邻居发送 (S,G) 加入请求。接收 (S,G) PIM加入请求的上游PIM-SM邻居会创建一个 (S,G) 路由条目,并将接收到请求的接口添加到多播组的OIL中,然后根据RPF向源发送 (S,G) 加入请求,将该接口作为 (S,G) 路由条目的IIF。这个过程会重复,直到多播源的DR收到 (S,G) PIM加入请求。
以下图示提供了建立初始RPT和从RP到源的SPT的简单示例,每条路径中只有一个路由器。在构建完分发树后,流量沿着与构建PIM多播路由状态相反的方向流动。
路由多播路径优化
在从RP到源的SPT建立后,多播流量可以从源头流向感兴趣的接收者。多播流量通过SPT从源头转发到RP,然后由RP使用RPT将多播组流量转发给感兴趣的监听者。
然而,通过RP的组合分发树可能不是源和接收者之间的最短路径。在多播流量从源到达接收者的DR后,会知道源IP,从而构建更优化的路径。接收者的DR为每个观察到的多播组源添加一个 (S,G) 路由条目,然后使用相同的 上述描述的过程 开始向单个源构建SPT。当接收者的DR在SPT上观察到流量后,会通过向RP发送特殊的PIM修剪消息,将源从RPT中移除,从而实现源的修剪。这允许其他源上线并通过RPT向多播组接收者传递流量。在RP收到RPT上的PIM修剪消息后,也可以修剪对应源的SPT。
从感兴趣的接收者的DR到源的DR构建SPT,确保网络容量的最优利用,并减少RP上的资源消耗。
以下示意图展示了从接收者的DR到源的SPT切换后,优化的流量流向,源已从RPT和从RP到源的SPT路径中被修剪。
VSX 考虑因素
在VSX对上实现PIM-SM和IGMP功能时,每个交换机作为不同的路由器操作,共享相同的局域网段。
默认情况下,只有VSX对中的一台成员作为下游主机的PIM DR。DR负责为多播流构建RPT和SPT。当需要在VSX成员故障后实现及时的多播恢复时,可以启用VSX对的PIM主动-主动模式。在此模式下,一台成员被指定为DR,另一台成员作为代理-DR,处于备份角色。DR和代理-DR都启动构建RPT和SPT,但只有DR会向感兴趣的接收者转发流量。这允许在DR故障时实现快速恢复,因为多播流已经在代理DR上流动。一旦检测到DR故障,代理DR可以立即开始转发多播流,无需等待重新构建新的多播路由状态。在实现两层拓扑时,数据中心核心交换机应配置为主动-主动PIM。
在使用带有集成路由与桥接(IRB)的EVPN-VXLAN叠加时,面向主机的SVI接口配置为在两个VSX成员上以DR的行为运行,无论DR角色如何,通过在接口上分配 ip pim-sparse vsx-virtual-neighbor 命令。IGMP和PIM加入请求在两个VSX成员中以相同方式处理,且两个成员都主动转发接收到的多播流到下游主机。在EVPN-VXLAN环境中,两个VSX成员被分配相同的逻辑VTEP地址。与上述主动-主动配置不同,只有VSX对中的一台成员会根据底层网络的负载均衡算法,从远程VTEP接收多播流中的单个包。因此,两个VSX成员都必须主动转发多播流,以确保传递到接收者,并且在此设计中不会出现多播包的重复传递到下游主机。
两层多播操作
在两层数据中心中,核心层交换机作为PIM-SM路由器操作,支持数据中心主机之间以及数据中心与外部网络之间的多播路由。通常,数据中心核心交换机通过BSR机制学习园区RP。主动-主动PIM在核心交换机故障时提供多播流的快速故障转移。被选为PIM DR的核心交换机会向园区RP报告直接连接的多播源。核心交换机还通过IGMP学习多播接收者。
IGMP snooping优化了核心层和接入层交换机上的2层多播转发,使核心交换机只将流量转发给有兴趣的接收者的下游接入交换机,接入交换机只将流量转发到直接连接的端口。
下图标识了与两层数据中心相关的不同角色启用多播功能。
RP 位置
当数据中心连接到园区网络时,园区RP可以由数据中心交换机使用BSR机制学习。
当外部RP不可用时,可以在两层路由核心上配置任播RP,以支持路由多播。
EVPN-VXLAN 多播操作
HPE Aruba Networking的EVPN-VXLAN实现支持使用PIM-SM在单个或多个数据中心fabric中高效路由多播流量。支持IPv4多播转发(包括2层和3层),并实现了额外的IGMP和PIM优化,以适应叠加网络拓扑。
下图标识了在EVPN-VXLAN数据中心中不同角色启用的多播功能。每个overlay VRF启用PIM,并在overlay接口上配置。IGMP在面向主机的overlay接口上配置。每个overlay VRF之间在边界叶子交换机和防火墙之间形成单独的PIM邻接。
当主机位于边界叶子时,边界叶子交换机上也需要支持 IGMP 和 IGMP snooping。
在 EVPN-VXLAN 隧道上原生支持 2层和 3层多播协议简化了多播叠加配置和故障排除。IGMP 和 PIM-SM 优化 IP 多播转发,仅将多播组流量限制在感兴趣的监听器所在的 VTEP 上。这减少了网络流量和可能的拥塞。
VXLAN 桥接多播
在 VXLAN 叠加中,2层多播流量在源和接收端之间在相同的 2层 VNI(VLAN)内通过桥接逻辑进行转发,跨越 VTEP。
默认情况下,当 VTEP 从连接的源接收多播流量时,它会复制并转发该流量到所有配置了相同 2层 VNI 的其他 VTEP。远端 VTEP 接收多播流量后,会将其泛洪到所有配置了与 2层 VNI 相关联的 VLAN 的端口。所有同一 VLAN 内的 fabric 主机都能接收多播流量,无论它们是否对多播组感兴趣。
IGMP snooping 优化了 VXLAN 叠加中的 2层多播转发。当启用时,VTEP 会将 IGMP 加入和离开消息转发给配置了相同 L2 VNI 的对端 VTEP,IGMP 消息在接收的 VTEP 之间共享。每个 VTEP 根据共享的 IGMP 消息更新其本地的 2层多播转发表。这使得源连接的 VTEP 仅将多播流量转发给对特定多播组感兴趣的 VTEP。
下图展示了带有 IGMP snooping 优化的多播转发。一个主机发送 IGMP 加入请求以表达对某个多播组的兴趣。该 IGMP 加入请求被转发到所有其他 VTEP。连接源的 VTEP 仅将多播流量转发给对该多播组感兴趣的 VTEP。接收端的 VTEP 仅将流量转发给发起 IGMP 加入的单个主机。
IGMP 查询器位置
在 HPE Aruba Networking 的 VXLAN 叠加中,IGMP 加入、离开、查询和响应会泛洪到 fabric 中的所有 VTEP。当使用对称 IRB 进行单播流量时,IGMP 查询器在所有面向主机的 VLAN SVI 上配置。
当使用集中式网关时,IGMP 查询器应配置在集中式网关上,集中式网关提供路由多播功能。
VXLAN 路由多播
在每个 VTEP 本地部署 IP 网关的 IRB 方案比集中式网关具有更好的扩展性。在此模型中,每个叶子交换机通过与虚拟接口建立 PIM 邻接,连接到每个远端 VTEP,虚拟接口关联到 3层 VNI。其结果是在数据中心 fabric 中为每个叠加 VRF 建立了完整的 PIM 邻接网格。
当多播发送者和接收者位于不同子网中时,VXLAN 叠加中的 3层多播流量在同一 VRF 的子网之间路由。当接收端的 2层 VNI 出现在源 VTEP 上时,AOS-CX 多播使用非对称 IRB,通过在源 VTEP 本地路由流量,并使用适当的 2层 VNI 将流量发送到接收端 VTEP。
下图展示了在 VXLAN 叠加中,从 VLAN 30 的源路由多播流量到 VLAN 20 的主机。2层 IGMP snooping 优化(未示出)仍然限制目标 VTEP 仅将多播流量转发给表达兴趣的主机。
当多播源在 EVPN-VXLAN 环境中开始发送多播组的流量时,其本地连接的 VTEP 会将多播源的单播 IP 地址注册到 PIM-SM 域的 RP 上。当单播路由使用对称 IRB 时,连接到源的 VLAN SVI IP 地址不是唯一的,因此在 VTEP 的叠加 VRF 中配置一个唯一的回环 IP,用于发起 PIM Register 消息。当 RP 位于 EVPN-VXLAN fabric 之外时,必须向外部网络广告一条路由,允许 RP 与这些回环地址通信,以便 RP 发送 PIM Register-Stop 消息并建立到源的 DR 的 SPT。
RP 位置
当数据中心连接到园区网络时,园区 RP 可以由 EVPN-VXLAN 叶子交换机使用,并通过 BSR 机制学习。
当外部 RP 不可用时,可以在一对冗余的叶子交换机(通常是边界叶子)上配置任播 RP。在配置 VSX 叶子对上的 RP 时,通常为每个叠加 VRF 配置一个 RP。