tcp 组播_华为组播理论知识详解(八)

四、MSDP简介

MSDP是Multicast Source Discovery Protocol(组播源发现协议)的简称,是为了解决多个PIM-SM(Protocol Independent Multicast Sparse Mode,协议无关组播—稀疏模式)域之间的互连而开发的一种域间组播解决方案,用来发现其他PIM-SM域内的组播源信息。

MSDP目前只支持在IPv4网络部署,域内组播路由协议必须是PIM-SM。MSDP仅对ASM(Any-Source Multicast)模型有意义。

PIM-SM模式下,源端DR(Designated Router)向RP注册,成员端DR也会向RP发起加入报文,因此RP可以获取到所有组播源和组播组成员的信息。

随着网络规模的增大以及便于控制组播资源,管理员可能会将一个PIM网络划分为多个PIM-SM域,此时各个域中的RP无法了解其他域中的组播源信息。

MSDP可以解决这一问题。

MSDP通过在不同PIM-SM域的路由器(通常在RP上)之间建立MSDP对等体,MSDP对等体之间交互SA(Source-Active)消息,共享组播源信息,最终可以使一个域内的组播用户接收到其他域的组播源发送的组播数据。

MSDP用于在ISP(Internet Service Provider)之间建立对等体。通常,ISP并不希望借助其他ISP的RP来向自己的用户提供服务。这一方面是出于安全性考虑,另一方面如果其他ISP的RP发生故障导致业务中断,用户投诉的却是自己的服务。

借助MSDP,每个ISP可以实现依靠自己的RP来向Internet转发和接收组播数据。

尽管MSDP是为域间组播产生的,但它在PIM-SM域内还有着一项特殊的应用——Anycast RP(任播RP)。

Anycast RP是指在同一PIM-SM域内通过设置两个或多个具有相同地址的RP,并在这些RP之间建立MSDP对等体关系,以实现域内各RP之间的负载分担和冗余备份。

MSDP可以实现域间组播,同时对ISP而言还有以下优点:

1、PIM-SM域可以依靠本域的RP提供服务,降低了对其他域RP的依赖。还可以控制本域的源信息是否传递到其他域中,提高了网络安全性。

2、如果某个域中只有接收者,他不必去整个网络上汇报组成员关系,只在本PIM-SM域内汇报,就可以接收到组播数据。

3、单个PIM-SM域内的设备不需要专门维护整网的组播源信息和组播路由表项,节省系统资源。

1、MSDP对等体

使用MSDP实现跨域组播的首要任务是:建立MSDP对等体。

通常,在各个PIM-SM域的RP之间配置MSDP对等体关系,MSDP对等体之间交互SA(Source Active)消息,SA消息中携带组播源DR在RP上注册时的(S,G)信息。通过这些MSDP对等体之间的信息传递,任意一个RP发出的SA消息能够被其他所有的RP收到。

8c5cada9c1e20c4a52fde74342867f5b.png

图1 MSDP对等体位置

MSDP对等体并不是只能配置在RP上,如上图1所示,MSDP对等体可以创建在任意的PIM路由器上,在不同角色的PIM路由器上所创建的MSDP对等体的功能有所不同。

1、在RP上创建的MSDP对等体

df02d77e77d5e8f64dbc4ae4ef41c7e5.png

2、在普通的PIM路由器(非RP)上创建的MSDP对等体

如RouterA和RouterB,其作用仅限于将收到的SA消息转发出去。

为了保证网络中所有RP都能参与源信息共享,且尽量缩小“MSDP连通图”的规模,推荐的配置方案是:在且仅在网络中所有RP上配置MSDP对等体。

2、MSDP协议报文

MSDP的协议报文封装在TCP数据报中,协议报文的格式都符合标准的TLV(Type-Length-Value)消息格式,如下图1所示。

25ee51840b849a756cb781c4a2daaddc.png

图1 MSDP协议报文格式

Type:报文类型。主要报文类型见下下表1。

Length:报文长度。

Value:报文内容,根据Type的取值而不同。

88ce430e1b3f299f93f1d28d1472ce99.png

由上表1可以看出,SA消息中可以携带(S,G)信息,也可以封装组播数据报文。MSDP对等体之间通过交互SA消息共享(S,G)信息。为了避免SA消息中的(S,G)表项超时导致远端用户无法收到组播源的数据,可以在SA消息中封装组播数据报文。

由于SA消息是周期性发送的,当域内出现新的组用户时,要等待一个周期内的SA消息以获取有效的(S,G)信息。为了减少新组用户加入源SPT的时延,MSDP提供了Type2和Type3的SA-Req消息与SA-Resp消息,提高活动源信息更新的效率。

3、MSDP对等体建立过程

MSDP对等体通过TCP连接建立,使用端口639。

两台设备使能MSDP并互相指定对方为MSDP对等体后,两端先比较IP地址,IP地址较小的一端会启动连接重试定时器(ConnectRetry timer),并主动发起TCP连接。IP地址较大的一端负责确认是否有TCP连接在端口639建立。 TCP连接建立后,MSDP对等体关系就建立了,对等体之间通过KeepAlive消息维持连接关系。

ec841f8206f3912f294aeed5d13ae71b.png

图1 MSDP对等体建立过程

如上图1所示,RouterA和RouterB之间建立MSDP对等体的过程如下:

1、起始状态下,两台路由器的MSDP会话状态都是Down。

2、在两端使能MSDP并互相指定对方为MSDP对等体后,两端比较建立连接使用的地址:

RouterA的地址较小,进入Connect状态,向RouterB发起连接,并启动ConnectRetry定时器。该定时器用于定义连接重试的周期。

RouterB的地址较大,进入Listen状态,等待对端进行连接。

3、TCP连接建立成功后,两端的MSDP会话进入Up状态。

4、MSDP对等体两端发送KeepAlive消息,通知对方保持MSDP连接状态。

4、MSDP认证

在TCP连接建立时进行加密认证,可以保证安全性。配置了认证功能后,MSDP对等体两端必须都使用相同的加密算法和密码,才能正常建立TCP连接,否则不建立连接。MSDP支持MD5和Keychain两种加密方式,二者在使用时互斥,MSDP对等体之间只能选择一种方式加密。

5、组播源信息在域间传递过程

517412c61fb65fbd97a142811eec86aa.png

图1 组播源信息在域间的传递

如上图1所示,PIM-SM网络被划分为4个PIM-SM域。PIM-SM1域内存在激活的组播源(Source),RP1通过组播源注册过程了解到了该组播源的存在。

如果PIM-SM2和PIM-SM3域也希望知道该组播源的具体位置,进而能够从该组播源获取组播数据,则需要在RP1与RP2、RP2与RP3之间分别建立MSDP对等体关系。

组播源信息在域间传递的过程如下:

1、当PIM-SM1域内的组播源Source向组播组G发送第一个组播数据包时,DR1(Designated Router)将该组播数据封装在注册报文(Register Message)中,并发给RP1。RP1因此获知了该组播源的相关信息。

2、RP1作为源端RP,创建SA消息,并周期性地向它的对等体RP2发送。SA消息中包含组播源的地址S、组播组的地址G以及创建该SA消息的源端RP(即RP1)的地址。

3、RP2接收到该SA消息后,执行RPF(Reverse Path Forwarding)检查。检查通过,向RP3转发,同时检查本域内是否存在组G成员。由于PIM-SM2域内没有组G的接收者,故RP2不做其他动作。

4、RP3接收到该SA消息后,执行RPF检查,检查通过。由于PIM-SM3域内存在组G成员,会通过IGMP协议在RP3上生成(*,G)表项,表示本域内存在组G成员。

5、RP3创建(S,G)表项,向组播源Source逐跳发送(S,G)加入报文,创建一条从Source到RP3的组播路径(SPT)。组播数据沿SPT到达RP3后,再沿RPT向接收者转发。

6、当接收者侧DR3收到Source发出的组播数据后,可以自行决定是否发起SPT切换。

6、控制SA消息转发

SA消息在MSDP对等体之间转发,除了RPF检查,还可以配置各种转发策略的过滤,从而只接收和转发来自正确路径并通过过滤的SA消息,以避免SA消息传递环路;另外,可以在MSDP对等体之间配置MSDP全连接组(Mesh Group),以避免SA消息在MSDP对等体之间的泛滥。

1、SA消息的RPF检查规则

为了防止SA消息在MSDP对等体之间被循环转发,MSDP对接收到的SA消息执行RPF检查,在消息传递的入方向上进行严格的控制。不符合RPF规则的SA消息,将被丢弃。

RPF检查的主要规则为:MSDP设备收到SA消息后,根据MRIB(Multicast RPF Routing Information Base)确定到源RP(即创建该SA消息的RP)最佳路径的下一跳是哪个对等体,这个对等体也称为“RPF对等体”。

如果发现SA消息是从RPF对等体发出的,则接收该SA消息并向其他对等体转发。MRIB包括:MBGP、组播静态路由、单播路由(包括BGP、IGP)。

此外,还有如下的一些RPF检查规则,SA消息在转发时遵守:

规则1:

发出SA消息的对等体就是源RP,则接收该SA消息并向其他对等体转发。

规则2:

接收从静态RPF对等体到来的SA消息。一台路由器可以同时与多个路由器建立MSDP对等体关系。用户可以从这些远端对等体中选取一个或多个,配置为静态RPF对等体。

规则3:

如果一台路由器只拥有一个远端MSDP对等体,则该远端对等体自动成为RPF对等体,路由器接收从该远端对等体发来的SA消息。

规则4:

发出SA消息的对等体与本地路由器属于同一Mesh Group,则接收该SA消息。来自Mesh Group的SA消息不再向属于该Mesh Group的成员转发,但向该Mesh Group之外的所有对等体转发。

规则5:

到达源RP的路由需要跨越多个AS时,接收从下一跳AS(以AS为单位)中的对等体发出的SA消息,如果该AS中存在多个远端MSDP对等体,则接收从IP地址最高的对等体发来的SA消息。

7、MSDP全连接组(Mesh Group)

当网络中存在多个MSDP对等体时,很容易导致SA消息在对等体之间泛滥。同时,MSDP对等体对每一个到来的SA报文进行RPF检查,给系统造成很大的负担。

将多个MSDP对等体加入同一个Mesh Group,就可以大幅度减少在这些MSDP对等体之间传递的SA消息。

Mesh Group成员可以都属于同一个PIM-SM域,也可以分布在多个PIM-SM域中;可以都位于同一个AS,也可以位于多个AS中。

属于同一个Mesh Group的所有成员之间必须两两建立MSDP对等体连接,并承认对方为该Mesh Group的成员。

752f70429c60098fb72675b0ddbfe593.png

图1 Mesh Group内部成员之间的MSDP对等体连接

如上图1中的RouterA、RouterB、RouterC和RouterD,加入同一个Mesh Group,则必须在每台路由器上配置与其他三台路由器建立MSDP对等体关系。

当Mesh Group内部成员接收到SA消息后,首先检查该SA消息的来源:

如果该SA消息来自Mesh Group外部的某个MSDP对等体,则对该SA消息进行RPF检查。如果检查通过,向Mesh Group内其他所有成员转发。

如果该SA消息来自Mesh Group内部成员,则不进行RPF检查,直接接收。同时也不再向Mesh Group内其他成员转发。

8、SA消息过滤

缺省情况下,MSDP不过滤SA消息,从一个域中发出的SA消息可以被传递到全网的MSDP对等体。

然而,有些PIM-SM域的(S,G)表项只适用于本域内指导转发,如一些本地组播应用使用了全局的组播组地址,或组播源用的是私网地址10.x.x.x。如果不加过滤,这些(S,G)表项就会经过SA消息传递到其他MSDP对等体。

针对这种情况,可以配置SA消息的过滤规则(一般使用ACL定义过滤的规则),并在创建、转发或接收SA消息时使用这些规则,就可以实现SA消息过滤。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值