组播
组播是在一台源IP主机和多台(一组)IP主机之间进行,中间地设备可以根据接受者地需要,有选择性地对数据进行复制和转发。
优势是适合点对多点的传输,且可以跨网段,无重复流量,能够大量节约网络带宽,降低网络负载。可以更方便地提供在线直播、网络电视等服务。
20.1 名词简介
组播组:用IP组播地址进行标识的一个集合。
组播源:信息的发送者
组播组成员:加入某组播组的主机便成为该组播组的成员。
组播路由器:支持三层组播功能的路由器或交换机。
组播信息传输与电视节目传输的类比:
顺序 | 电视节目传输过程 | 组播方式传输过程 |
---|---|---|
1 | 电视台向频道内发送数据 | 组播源向组播组发送数据 |
2 | 观众打开电视机选择到这个频道 | 接收者主机加入该组播组 |
3 | 电视机播放该频道电视节目 | 主机接收到发送给这个组的数据 |
4 | 观众可以随时控制电视机的开关和频道间的切换 | 主机可以动态加入或退出组播组 |
20.2 组播的服务模型
-
ASM模型
仅针对组地址进行组播分发,接收者主机加入组播组以后可以接收到任意源发送到该组的数据。可以配置针对组播源的过滤策略。
此模型要求组地址必须在整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,会导致网络流量拥塞。
-
SSM模型
对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时可以指定只接收哪些源和拒绝哪些源。加入组后,接收者主机只会收到指定源发送到该组的数据。
此模型对组地址不做唯一要求,因为此模型中会对每一个(源,组)信息生成表项,这样可以节省组播组地址,并且不会造成网络拥塞,但需要每个组播源保持唯一,“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。
20.3 组播地址
地址范围 | 含义 |
---|---|
224.0.0.0~224.0.0.255 | 永久组地址。IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。 |
224.0.1.0~231.255.255.255233.0.0.0~238.255.255.255 | ASM组播地址,全网范围内有效。说明:其中,224.0.1.39和224.0.1.40是保留地址,不建议使用。 |
232.0.0.0~232.255.255.255 | 缺省情况下的SSM组播地址,全网范围内有效。 |
239.0.0.0~239.255.255.255 | 本地管理组地址,仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突。 |
常用的永久组地址:
永久组地址 | 含义 |
---|---|
224.0.0.0 | 不分配 |
224.0.0.1 | 网段内所有主机和路由器(等效于广播地址) |
224.0.0.2 | 所有组播路由器 |
224.0.0.3 | 不分配 |
224.0.0.4 | DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器 |
224.0.0.5 | OSPF(Open Shortest Path First,开放最短路径优先)路由器 |
224.0.0.6 | OSPF DR(Designated Router,指定路由器) |
224.0.0.7 | ST(Shared Tree,共享树)路由器 |
224.0.0.8 | ST主机 |
224.0.0.9 | RIP-2(Routing Information Protocol version 2,路由信息协议版本2)路由器 |
224.0.0.11 | 移动代理(Mobile-Agents) |
224.0.0.12 | DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器/中继代理 |
224.0.0.13 | 所有PIM(Protocol Independent Multicast,协议无关组播)路由器 |
224.0.0.14 | RSVP(Resource Reservation Protocol,资源预留协议)封装 |
224.0.0.15 | 所有CBT(Core-Based Tree,有核树)路由器 |
224.0.0.16 | 指定SBM(Subnetwork Bandwidth Management,子网带宽管理) |
224.0.0.17 | 所有SBM |
224.0.0.18 | VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议) |
224.0.0.22 | 所有使能IGMPv3(Internet Group Management Protocol, Version 3,因特网组管理协议)的路由器 |
224.0.0.19 ~ 224.0.0.21224.0.0.23 ~ 224.0.0.255 | 未指定 |
20.4 组播MAC地址
以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位。
IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址映射到同一MAC地址上。例如IP地址为224.0.1.1、224.208.1.1、225.0.1.1、239.208.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01,因此在分配地址时必须考虑这种情况。
20.5 组播协议
在IP组播传输模型中,发送者不关心接收者所处的位置,只要将数据发送到约定的目的地址,剩下的工作就交给网络去完成。网络中的组播设备必须收集接收者的信息,并按照正确的路径实现组播报文的转发和复制。在组播的发展过程中,形成了一套完整的协议来完成此任务。
20.5.1 IGMP
网络组管理协议,负责IPv4组播成员管理的协议,运行在组播网络中的最后一段,即主机与组播路由器之间,IGMP协议在主机端实现组播组成员加入与离开,在上游的三层设备中实现组成员关系的维护与管理,同时支持与上层组播路由协议的信息交互。一般配置在组播路由器与主机相连的接口。
到目前为止,IGMP有三个版本:IGMPv1、IGMPv2和IGMPv3。
所有IGMP版本都支持ASM模型。IGMPv3可以直接应用于SSM模型,而IGMPv1和IGMPv2则需要SSM Mapping技术的支持。
20.5.1.1 IGMPv1
由组播路由协议PIM选举出唯一的组播信息转发者作为查询器,负责该网段的组成员关系查询
包含两种报文:
- 普遍组查询报文:查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
- 成员报告报文:主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询。
分为3种工作机制:
-
普遍组查询和响应机制
- 查询器周期性(默认每60s一次)地发送目的地址为224.0.0.1的普遍组查询报文;收到该报文的组成员启动定时器,范围为0~10秒之间的随机值。
- 第一个定时器超时的组成员发送针对该组的报告报文,使该组内其它主机停止定时器,抑制住报文。
- 查询器收到报文报文后,发现本网段中存在该组播组成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组波源。网络中一旦有该组播组的数据到达路由器,将向该网段转发。
-
新组成员加入机制
1. 主机不等待查询报文到来,主动发送针对目标组播组的报文以声明加入。
2. 查询器收到报文后,知道本网段中出现目标组播组成员,生成组播转发项(*,G2)
-
组成员离开机制
静默离开,直到本网段内没有一台组播组成员,查询器不会收到组成员的报告报文, 默认130s后删除对应组播组的组播转发表项。
20.5.1.2 IGMPv2
在v1的基础上增加了两种报文:
- 成员离开报文:成员离开组播组时主动向查询器发送的报文。
- 特定组查询报文:查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
在v1基础上增加了查询器选举和离开组机制。
-
查询器选举机制
- 最初所有运行IGMPv2的组播路由器都认为自己是查询器,向本网段内的所有主机和组播路由器发送普遍组查询报文,在收到其它组播路由器的普遍组查询报文后,将源IP与自己的接口地址作比较,IP地址最小的组播路由器将成为查询器,其它组播路由器成为非查询器
- 非查询器上都会启动一个定时器,如果在超时前未收到了来自查询器的查询报文,则认为原查询器失效,并发起新的查询器选举过程。
-
离开组机制
-
向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对目标组的离开报文
-
查询器收到离开报文,会发送针对目标组的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
-
如果该网段内还存在目标组成员,这些成员在收到查询器发送的特定组查询报文后,会立即回复针对目标组的报告报文,查询器收到后将继续维护该组
如果该网段内不存在目标组成员,在Timer-Membership超时后将删除对应组表项,不会向下游转发此组播组数据。
-
20.5.1.3 IGMPv3
主要是为了配合SSM模型发展起来的,提供了在报文中携带组播源信息的能力,即主机可以对组播源进行选择。
报文包含两大类:查询报文和成员报告报文
-
查询报文
- 包含了普遍组查询报文、特定组查询报文和新增的特定源组查询报文。特定源组查询报文用于查询是否愿意接受特定源发送的报文。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
-
成员报告报文
- 包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
在IGMPv2的机制基础上增加了主机对组播源的选择能力。
-
特定源组加入:
IGMPv3的成员报告报文的目的地址为224.0.0.22(表示同一网段所有使能IGMPv3的路由器)。
如果现在网络中仅存在两个组播源S1,S2,现只接收S1组播数据,可有两种方案:
- 主机发送IGMPv3报文(G,INCLUDE,(S1)),仅接收源S1向组播组发送的数据。
- 主机发送IGMPv3报文(G,EXCLUDE,(S2)),不接收源S2向组播组发送的数据。
-
特定源组查询
当接收到组成员发送的改变组播组与源列表的对应关系报告时,查询器会发送特定源组查询报文。如果组成员希望接收其中任意一个源的组播数据,将回复报告报文,IGMP查询器根据回复的组成员报告更新该组对应的源列表。
20.5.1.4 IGMP SSM Mapping
SSM(Source-Specific Multicast)称为指定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源,机制是通过在路由器上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*, G)信息转化为对应的(G, INCLUDE, (S1, S2...))信息,以提供SSM组播服务。
IGMP SSM Mapping不处理IGMPv3的报告报文。为了保证同一网段运行任意版本IGMP的主机都能得到SSM服务,需要在与成员主机所在网段相连的组播路由器接口上运行IGMPv3。
总结:
项目 | IGMPv1 | IGMPv2 | IGMPv3 |
---|---|---|---|
查询器选举方式 | 依靠组播路由协议PIM选举 | 同网段组播路由器之间竞争选举 | 同网段组播路由器之间竞争选举 |
普遍组查询报文 | 支持 | 支持 | 支持 |
成员报告报文 | 支持 | 支持 | 支持 |
特定组查询报文 | 不支持 | 支持 | 支持 |
成员离开报文 | 不支持 | 支持 | 没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达 |
特定源组查询报文 | 不支持 | 不支持 | 支持 |
指定组播源 | 不支持 | 不支持 | 支持 |
可识别报文协议版本 | IGMPv1 | IGMPv1、IGMPv2 | IGMPv1、IGMPv2、IGMPv3 |
ASM模型 | 支持 | 支持 | 支持 |
SSM模型 | 需要IGMP SSM Mapping技术支持 | 需要IGMP SSM Mapping技术支持 | 支持 |
20.5.1.5 IGMP Snooping
IGMP Snooping是二层组播的基本功能,可以实现组播数据在数据链路层的转发和控制。当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带的信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发,未配置的情况下会直接广播。
工作机制:
- 当交换机收到查询器的普遍组查询报文后,判断哪个接口为连接路由器的接口。
- 当有Client希望加入到组播组时,会以组播方式发送一个IGMP成员报告报文,交换机收到后会建立二层组播转发表,将Client接口号,连接路由器的接口号和连接交换机的接口号加入到表中。
- 形成表项后,可以使转发到此组播组的数据只发往加入到此组的Client。
20.5.1.6 IGMP Proxy
在简单的树形结构中,组播查询器往往管理的大量用户,当大量用户主机频繁进组/离组时,会产生大量报文,给组播查询器带来大量压力,此时就可以将RouterB配置为代理,代理设备可以收集下游成员主机的IGMP报告/离开报文,将报告/离开报文汇聚后代理下游成员主机统一上送给接入设备;另一方面,代理设备也可以代理IGMP查询器向下游成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发。在接入设备RouterA看来,RouterB就是一台主机;在下游成员主机看来,RouterB就是IGMP查询器。
20.5.2 PIM
协议无关组播,这里的协议无关是指与单播路由协议无关,即PIM不需要维护专门的单播路由信息,而是利用单播路由表的路由信息对组播报文执行RPF检查(基于单播路由表检查组播报文源的路由表项的入接口是否与收到组播报文的入接口一致,不一致就丢弃),检查通过后创建组播路由表项,从而转发组播报文。
PIM根据使用场景分为DM(密集模式)和SM(稀疏模式)。
20.5.2.1 PIM-DM
采用“推(Push)模式”转发组播报文,一般应用于组播组成员规模相对较小,分布相对密集的网络,关键工作机制包括邻居发现、扩散、剪枝、嫁接、状态刷新和断言,其中扩散、剪枝、嫁接是构建SPT的主要方法。
-
邻居发现
- PIM路由器每个开启PIM协议的接口都对外发送hello报文,目的地为224.0.0.13(表示同一网段中的所有PIM路由器),地址为接口的IP地址,TTL值为1。
- Hello报文中携带多项PIM协议报文参数,主要用于PIM邻居之间PIM协议报文的控制。具体如下:
- DR_Priority:表示各路由器接口竞选DR的优先级,优先级越高越容易获胜。
- Holdtime:表示保持邻居为可达状态的超时时间。如果在超时时间内没有收到PIM邻居发送的Hello报文,路由器则认为邻居不可达。
- LAN_Delay:表示共享网段内传输Prune报文的延迟时间。
- Neighbor-Tracking:表示邻居跟踪功能。
- Override-Interval:表示Hello报文中携带的否决剪枝的时间间隔。
- 周期性发送hello报文维持邻居关系
-
扩散
当PIM路由器接收到组播报文,根据单播路由表进行RPF检查(检查数据包的源IP路由是否在路由项中),通过后在该路由器上创建(S,G)表项,下游接口列表中添加除上游接口之外所有与PIM邻居相连的接口,后续到达的组播报文从各个下游接口转发出去,最后组播报文扩散到达叶子路由器,若与该叶子路由器相连用户网段上存在组成员,则将与该网段相连的接口加入(S,G)表项的下游接口列表中,后续的组播报文会向组成员转发;若与该叶子路由器相连用户网段上不存在组成员,且不需要向其下游PIM邻居转发组播报文,则执行剪枝动作。
-
剪枝
当PIM路由器接收到组播报文后,RPF检查通过,但是下游网段没有组播报文需求。此时PIM路由器会向上游发送剪枝报文,通知上游路由器禁止相应下游接口的转发,将其从(S,G)表项的下游接口列表中删除。路由器在被裁剪的下游接口启动一个剪枝定时器,超时后恢复转发。周期性持续“扩散-剪枝”的操作,PIM-DM周期性的刷新SPT(以组播源为根,组播组成员为叶子的组播分发树)。
当下游接口被剪枝后:
- 如果下游有组成员加入,并且希望下次“扩散-剪枝”前就恢复组播报文转发,则执行嫁接操作。
- 如果下游一直没有组成员加入,希望该接口保持抑制转发状态,则执行状态刷新操作。
-
嫁接
使有新组成员加入的网段快速得到组播报文。叶子路由器通过IGMP了解到与其相连的用户网段上,组播组G有新的组成员加入。随后叶子路由器会向上游发送Graft报文,请求上游路由器恢复相应出接口转发,将其添加在(S,G)表项下游接口列表中。嫁接过程从叶子路由器开始,到有组播报文到达路由器结束。
-
状态刷新
为了避免被裁剪的接口因为“剪枝定时器”超时而恢复转发,离组播源最近的第一跳路由器会周期性地触发State Refresh报文在全网内扩散。收到State Refresh报文的PIM路由器会刷新剪枝定时器的状态。被裁剪接口的下游叶子路由器如果一直没有组成员加入,该接口将一直处于抑制转发状态。
-
断言
当一个网段内有多个相连的PIM路由器RPF检查通过向该网段转发组播报文时,则需要通过断言机制来保证只有一个PIM路由器向该网段转发组播报文。PIM路由器在接收到邻居路由器发送的相同组播报文后,会以组播的方式向本网段的所有PIM路由器发送Assert报文,其中目的地址为永久组地址224.0.0.13。其它PIM路由器在接收到Assert报文后,将自身参数与对方报文中携带的参数做比较,进行Assert竞选。竞选规则如下:
- 单播路由协议优先级较高者获胜。
- 如果优先级相同,则到组播源的开销较小者获胜。
- 如果以上都相同,则下游接口IP地址最大者获胜。
根据Assert竞选结果,路由器将执行不同的操作:
- 获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
- 落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。
Assert竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。所有Assert Loser可以周期性地恢复组播报文转发,从而引发周期性的Assert竞选。
20.5.2.2 PIM-SM
20.5.2.2.1 PIM-SM(ASM)
在ASM和SSM的工作机制不同,在ASM采用“拉(Pull)模式”转发组播报文,一般应用在组播组成员规模相对较大、相对稀疏的网络。基于这一种稀疏的网络模型,它的实现方法是:
- 在网络中维护一台重要的PIM路由器:汇聚点RP,可以为随时出现的组成员或组播源服务,网络中所有PIM路由器都知道RP的位置。
- 当网络中出现组成员时,最后一跳路由器向RP发送Join报文,逐条创建(*,G)表项,生成一棵以RP为根的RPT。
- 当网络中出现活跃的组播源(组播源向某组播组G发起一个组播数据)时,第一跳路由器将组播数据封装在Register报文中单播发往RP,在RP上创建(S,G)表项,注册源信息
在ASM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换和断言。
-
邻居发现(与PIM-DM一样)
-
DR竞选
通过交互Hello报文选出DR,竞选规则:
- DR优先级较高者获胜。
- 如果DR优先级相同或该网段至少存在一台PIM路由器不支持在Hello报文中携带DR优先级,则IP地址较大者获胜。
如果当前DR出现故障至PIM邻居关系超时,会进行重新选举。
- DR的主要作用:
- 在连接组播源的共享网段,负责向RP发送Register注册报文。与组播源相连的DR称为源端DR。
- 在连接组成员的共享网段,负责向RP发送Join加入报文。与组成员相连的DR称为组成员端DR。
-
RP发现
RP负责处理源端DR注册信息及组成员加入请求,类似于一个供求信息的汇聚中心,网络中所有PIM路由器都必须知道RP的地址。一个RP可以为多个组播组服务,但一个组播组只能对应一个RP,有两种配置方式:
- 静态RP:在网络中所有PIM上配置相同的RP地址,静态指定RP。
- 动态RP,在PIM域内选择几台路由器,配置C-RP(候选RP)来动态竞选出RP,同时还需要配置C-BSR(候选BSR)竞选出BSR。BSR用于收集C-RP的通告信息向PIM-SM区域内的所有PIM路由器发布。
- C-BSR竞选
- 向全网的PIM路由器发送Bootstrap报文,其中携带优先级和地址,
- PIM路由器收到后先比较优先级,优先级较高者获胜(优先级数值越大越高),如果优先级相同,IP地址较大者获胜。
- C-RP竞选
- 向BSR发送Advertisement报文,其中携带服务的组范围、优先级和地址。
- BSR将这些信息汇总为RP-Set,封装在Bootstrap,发布给全网所有的PIM路由器
- 根据以下规则选出RP:
- 与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。
- 如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。
- 如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。
- 如果以上比较结果都相同,则C-RP的IP地址较大者获胜。
- C-BSR竞选
-
RPT构建
RPT是一棵以RP为根,已存在组成员关系的PIM路由器为叶子的组播分发树。当有组成员加入时,DR向RP发送Join报文,RPF检查通过后,在通向RP的路径上逐条创建(*,G)表项,生成一棵以RP为根的RPT。
-
组播源注册
任何一个新出现的组播源都必须首先在RP处注册。
- 组播源将组播报文发给源端DR
- 源端DR收到后将其封装在Register报文中,发送给RP。
- RP收到后解封装建立(S,G)表项,将组播数据沿RPT发送到达组成员。
-
SPT切换(Switchover)
组成员端DR逐跳向源端DR逐跳发送Join报文并创建(S,G)表项,建立源端DR到组成员DR的SPT,之后进行剪枝操作,。当超过一定阈值的情况下触发SPT切换,默认情况下一般未设置组播报文转发速率的法制,RP或者组成员端RP在接收到第一份组播报文时都会触发各自的SPT切换。
-
断言
与PIM-DM中相同。
BSR管理域
为了实现网络管理精细化,可以将一个PIM-SM网络划分为多了BSR管理域和一个Global域。
每个BSR管理域中维护一个BSR、为某一特定地址范围的组播组服务,Global域中维护一个BSR,为所有剩余的组播组服务。
每个BSR管理域都有自己的边界,该管理域的组播信息(C-RP宣告报文、BSR自举报文等)不能跨越域传播。
Global域包含PIM-SM网络内的全部PIM路由器。不属于任意BSR管理域的组播报文,可以在整个PIM网络范围内传播,能穿越任意BSR管理域。
20.5.2.2.1 PIM-SM(SSM)
SSM模型是借助PIM-SM的部分技术和IGMPv3来实现的,无需维护RP、无需构建RPT、无需注册组播源,可以直接在源与组成员之间建立SPT,主要工作机制包括邻居发现、DR竞选、构建SPT。
-
邻居发现
与PIM-DM中相同
-
DR竞选
与PIM-SM(ASM)中相同
-
SPT构建
PIM路由器借助IGMPv3协议了解到用户主机到组播源的需求,逐跳向源方向发送Join报文,并且创建SPT。
20.5.2.2.3 PIM-DM和PIM-SM对比
协议 | 名称 | 模型分类 | 适用场景 | 工作机制 |
---|---|---|---|---|
PIM-DM | Protocol Independent Multicast-Dense Mode 协议无关组播—密集模式 | ASM模型 | 适合规模较小、组播组成员相对比较密集的局域网。 | 通过周期性“扩散-剪枝”维护一棵连接组播源和组成员的单向无环SPT。 |
PIM-SM | Protocol Independent Multicast-Sparse Mode 协议无关组播—稀疏模式 | ASM模型 | 适合网络中的组成员相对比较稀疏,分布广泛的大型网络。 | 采用接收者主动加入的方式建立组播分发树,需要维护RP、构建RPT、注册组播源。 |
SSM模型 | 适合网络中的用户预先知道组播源的位置,直接向指定的组播源请求组播数据的场景。 | 直接在组播源与组成员之间建立SPT,无需维护RP、构建RPT、注册组播源。 |
20.5.3 MSDP
组播源发现协议,用来解决多个PIM-SM域之间的互联问题,仅限于PIM-SM(ASM)使用。
MSDP通过TCP在不同PIM-SM域的路由器(通常在RP上)之间建立MSDP对等体,MSDP对等体之间交互SA(Source-Active)消息,共享组播源信息,最终可以使一个域内的组播用户接收到其他域的组播源发送的组播数据。如果不在RP上配置MSDP对等体,那么其作用仅限于将收到的SA消息转发出去。
还可以配置Anycast RP(任播RP)是实现在同一个PIM-SM区域内设置两个或多个具有相同地址的RP,并在这两个RP之间建立MSDP对等体关系,以实现负载分担和冗余备份。
为防止SA消息在转发过程中产生环路,需进行RPF检查,还可以配置各种转发策略的过滤来避免环路。
为防止SA信息在MSDP对等体之间泛滥,可以在对等体之间配置MSDP全连接组,收到组内成员的SA信息不进行RPF检查,直接接收,同时不再向组内其他成员转发;如果收到的SA信息不是来自组内的成员,则进行RPF检查,通过后向其它所有组内成员转发。
为防止某些只适合在本区域内指导转发的(S,G)表项(如组播源用的是私网地址)传出,可以对SA消息进行过滤(一般使用ACL)。
20.6 MVPN
组播VPN当前支持两种方式:MD和BGP A-D
-
MD
MD VPN中,所有属于同一MD的PE上的VPN实例都要加入一个公共的组播组,这个组播组称为Shared-Group。
Shared-Group中PE分发形成的组播分发树被称之为Share-MDT,一个Shared-Group中只能有一棵。
死亡数据从源PEMTI(组播隧道接口)通过MT(组播隧道)穿越公网传输到目的MTI。
仅需要PE支持多实例,无需升级CE,但只能运行在ASM中。
-
BGP A-D
也需要Shared-Group建立Share-MDT,但不需要手动配置邻居信息,可通过BDP的A-D功能自动发现peer。
只能在SSM中使用。
当在公网中使用Shared-MDT转发数据时,组播报文将被传输到同一VPN实例的所有PE上,一旦数据速率较大,可能会在公网中泛滥,于是为私网组播数据流建立了专门的Switch-MDT,将组播数据流从Share-MDT切换到Switch-MDT,从而可以按需组播,用户可以配置切换条件。
20.7 跨域
可使用OptionA和OptionB两种方式:
-
OptionA
支持ASM和SSM两种模型。
需要在每个自治域中分别建立一个独立的MD,在两个MD之间实现私网组播数据跨自治域传输。
-
OptionB
仅支持SSM模型。
需要使用PIM Vector(带RD)技术,即PE和ASBR通过查询BGP MDT SAFI路由来获取发布此路由的BGP邻居信息,并将其作为Vector,并在发送PIM加入报文时携带此Vector信息。
当收到此种加入报文时,检查Vector信息是否为本地接口地址
- 若不是,根据Vector信息进行选路,继续发送PIM加入报文。
- 若是,则继续查找新的Vector信息,直到组播源地址在本自治域内,然后通过IGP路由查到组播源地址的路由。