******想要进入全国网工交流群,结交更多网工,提升技术硬实力?添加微信号 spotoa ,进入全国网工交流40群!********
阅读福利:豆瓣高分书籍《TCP-IP路由技术(第1卷)(第2版)》,回帖即可领取高清版资源!
01 啥是MSDP?
MSDP是Multicast Source Discovery Protocol(组播源发现协议)的简称,是为了解决多个PIM-SM(Protocol Independent Multicast Sparse Mode,协议无关组播-稀疏模式)域之间的互连而开发的一种域间组播解决方案,用来发现其它PIM-SM域内的组播源信息。
在基本的PIM-SM模式下,组播源只向本PIM-SM域内的RP注册,且各域的组播源信息是相互隔离的,因此RP仅知道本域内的组播源信息,只能在本域内建立组播分发树,将本域内组播源发出的组播数据分发给本地用户。
如果能够有一种机制,将其它域内的组播源信息传递给本域内的RP,则本域内的RP就可以向其他域内的组播源发起加入过程并建立组播分发树,从而实现组播数据的跨域传播。
基于这一设想,MSDP通过在网络中选取适当的路由器建立MSDP对等体关系,以连通各PIM-SM域的RP。通过在各MSDP对等体之间交互SA(Source Active,信源有效)消息来共享组播源信息。
02 MSDP工作机制
(1)MSDP对等体
通过在网络中配置一对或多对MSDP对等体,形成彼此相连的一张“MSDP连通图”,以连通各个PIM-SM域的RP。通过这些MSDP对等体之间的接力,可以把某RP发出的SA消息传递给其他所有的RP。
MSDP对等体可以创建在任意的PIM-SM路由器上,在不同角色的PIM-SM路由器上所创建的MSDP对等体的功能有所不同:
在RP上创建的MSDP对等体
源端MSDP对等体:即离组播源(Source)最近的MSDP对等体(通常也就是源端RP,如RP1)。
源端RP创建SA消息并发送给远端MSDP对等体,通告在本RP上注册的组播源信息。源端MSDP对等体必须配置在RP上,否则将无法向外发布组播源信息。
接收者端MSDP对等体:即离接收者(Receiver)最近的MSDP对等体(如RP3)。
接收者端MSDP对等体在收到SA消息后,根据该消息中所包含的组播源信息,跨域加入以该组播源为根的SPT;当来自该组播源的组播数据到达后,再沿RPT向本地接收者转发。
中间MSDP对等体:即拥有多个远端MSDP对等体的MSDP对等体(如RP2)。
中间MSDP对等体把从一个远端MSDP对等体收到的SA消息转发给其它远端MSDP对等体,其作用相当于传输组播源信息的中转站。
在普通的PIM-SM路由器(非RP)上创建的MSDP对等体
如Router A和Route B,其作用仅限于将收到的SA消息转发出去。
说明:对于通过BSR机制动态选举RP的PIM-SM网络来说,RP是由C-RP选举产生的。为了增强其网络的健壮性,一个PIM-SM域内往往存在不止一个C-RP。
由于无法预计RP选举的结果,为了保证选举获胜的C-RP能始终位于“MSDP连通图”上,需要在所有的C-RP之间建立MSDP对等体关系。
而选举落败的C-RP在“MSDP连通图”上所担当的角色相当于普通的PIM-SM路由器。
(2)借助MSDP对等体实现域间组播
PIM-SM1域内存在激活的组播源(Source),RP1通过组播源注册过程了解到了该组播源的存在。
如果PIM-SM2和PIM-SM3域也希望知道该组播源的具体位置,进而能够从该组播源获取组播数据,则需要在RP1与RP3、RP2与RP3之间分别建立MSDP对等体关系。
借助MSDP对等体进行域间组播的工作过程如下:
(1)当PIM-SM1域内的组播源向组播组G发送第一个组播数据包时,DR1将该组播数据封装在注册消息(Register Message)中,并发给RP1。RP1因此获知了该组播源的相关信息。
(2)RP1作为源端RP,创建SA消息,并周期性地向其他MSDP对等体发送。SA消息中包含组播源的地址S、组播组的地址G以及创建该SA消息的源端RP(即RP1)的地址。
(3)MSDP对等体对收到的SA消息进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以及各种转发策略的过滤,从而只接受和转发来自正确路径并通过过滤的SA消息,以避免SA消息传递环路;另外,可以在MSDP对等体之间配置MSDP全连接组(Mesh Group),以避免SA消息在MSDP对等体之间的泛滥。
(4)SA消息在MSDP对等体之间转发,最终该组播源的相关信息将传遍所有建立了MSDP对等体关系的PIM-SM域(即PIM-SM2和PIM-SM3)。
(5)PIM-SM2中的RP2在收到该SA消息后,检查本域内是否有组播组G的接收者(Receiver)存在;
如果有接收者,RP2与接收者之间维护组播组G的RPT。RP2创建(S,G)表项,向源端的DR1逐跳发送(S,G)加入消息(Join Message),从而跨越个PIM-SM域直接加入以该组播源为根的SPT组播数据沿SPT到达RP2后,再沿RPT向接收者转发。
当接收者端的DR2收到来自组播源的组播数据后,可以自行决定是否发起从RPT向SPT的切换;如果没有接收者,RP2不会创建(S,G)表项,也不加入以该组播源为根的SPT。
说明:
MSDP全连接组:要求所有组成员之间两两建立MSDP对等体关系,且所有组成员均使用相同的组名称。
在使用MSDP进行域间组播时,RP在收到组播源的信息后就不再需要依赖其它PIM-SM域内的RP,此时接收者可以跨越各PIM-SM域内的RP,而直接加入基于组播源的SPT。
(3) SA消息的RPF检查规则
网络中有五个自治系统AS1-AS5,AS内部使用IGP互联,AS之间使用BGP或MBGP互联。
每个AS中包含至少一个PIM-SM域,且每个PIM-SM域中包含至少一个RP。各RP之间建立起MSDP对等体关系,其中RP3、RP4和RP5之间建立MSDP全连接组,并在RP7上将RP6配置为静态RPF对等体。
当PIM-SM域内只存在一个MSDP对等体时,该域又称为STUB域(如图3中的AS4)。
STUB域内的MSDP对等体可以同时拥有多个远端MSDP对等体,用户可以从中选取其中一个或多个配置为静态RPF对等体。
对于来自静态RPF对等体的SA消息不进行RPF检查,直接接受并向其它对等体转发。
MSDP对等体将按照如下RPF检查规则处理收到的SA消息:
(1)当RP2收到RP1发来的SA消息时
由于SA消息中所携带的源端RP的地址与MSDP对等体的地址相同,说明发出SA消息的MSDP对等体就是创建该SA消息的RP,于是RP2接受该SA消息并向其它对等体(RP3)转发。
(2)当RP3收到RP2发来的SA消息时
由于SA消息来自同一个AS的MSDP对等体(RP2),且该对等体是到源端RP最佳路径上的下一跳,于是RP3接受该SA消息并向其他对等体(RP4和RP5)转发。
(3)当RP4和RP5分别收到RP3发来的SA消息时
由于SA消息来自同一个全连接组的MSDP对等体(RP3),于是RP4和RP5均接受该SA消息并不再向本组其他成员转发,而只向本组之外的其它MSDP对等体(RP6)转发。
(4)当RP6收到RP4和RP5(假设RP5的IP地址较大)发来的SA消息时
尽管同处AS3的RP4和RP5都与RP6建立了MSDP对等体关系,但由于RP5的IP地址较大,于是RP6只接受IP地址较高的MSDP对等体(RP5)发来的SA消息。
(5)当RP7收到RP6发来的SA消息时
由于SA消息来自其静态RPF对等体(RP6),于是RP7接受该SA消息并向其它对等体(RP8)转发。
(6)当RP8收到RP7发来的SA消息时
属于不同AS的MSDP对等体之间存在BGP或MBGP路由。由于SA消息来自不同AS的MSDP对等体(RP7),且该对等体是到源端RP的BGP或MBGP路由的下一跳,于是RP8接受该SA消息并向其他对等体(RP9)转发。
(7)当RP9收到RP8发来的SA消息时
由于只有一个MSDP对等体(RP8),于是RP9接受该SA消息。对于由其它路径到来的SA消息,MSDP对等体将不接受也不转发。
—————————————————————————————————— HCIE/CCIE的提升空间有多少?看看群内聊天讨论就知道!
添加老杨老师微信:spotoa,加入全国网工交流群(已建立50+个),获取更多CCIE/HCIE考试一手资讯+考试必备资料,也欢迎添加网工老杨老师微信:spotoa
【推荐阅读】
|