使用MSDP实现跨域组播的首要任务是:建立MSDP对等体。
通常,在各个PIM-SM域的RP之间配置MSDP对等体关系,MSDP对等体之间交互SA(Source Active)消息,SA消息中携带组播源DR在RP上注册时的(S,G)信息。通过这些MSDP对等体之间的信息传递,任意一个RP发出的SA消息能够被其他所有的RP收到。
MSDP对等体并不是只能配置在RP上,如图1所示,MSDP对等体可以创建在任意的PIM路由器上,在不同角色的PIM路由器上所创建的MSDP对等体的功能有所不同。
图1 MSDP对等体位置
· 在RP上创建的MSDP对等体
MSDP对等体分类 | 位置 | 功能 |
---|---|---|
源端MSDP对等体 | 离组播源(Source)最近的MSDP对等体(通常也就是源端RP,如RP1) | 源端RP创建SA消息并发送给远端MSDP对等体,通告在本RP上注册的组播源信息。源端MSDP对等体必须配置在RP上,否则将无法向外发布组播源信息。 |
接收者端MSDP对等体 | 离接收者(Receiver)最近的MSDP对等体(如RP3) | 接收者端MSDP对等体在收到SA消息后,根据该消息中所包含的组播源信息,跨域加入以该组播源为根的SPT;当来自该组播源的组播数据到达后,再沿RPT向本地接收者转发。接收者端MSDP对等体必须配置在RP上,否则无法接收到其他域的组播源信息。 |
中间MSDP对等体 | 拥有多个远端MSDP对等体的MSDP对等体(如RP2) | 中间MSDP对等体把从一个远端MSDP对等体收到的SA消息转发给其他远端MSDP对等体,其作用相当于传输组播源信息的中转站。 |
· 在普通的PIM路由器(非RP)上创建的MSDP对等体
如RouterA和RouterB,其作用仅限于将收到的SA消息转发出去。
说明:
为了保证网络中所有RP都能参与源信息共享,且尽量缩小“MSDP连通图”的规模,推荐的配置方案是:在且仅在网络中所有RP上配置MSDP对等体。
MSDP的协议报文封装在TCP数据报中,协议报文的格式都符合标准的TLV(Type-Length-Value)消息格式,如图1所示。
图1 MSDP协议报文格式
· Type:报文类型。主要报文类型见表1。
· Length:报文长度。
· Value:报文内容,根据Type的取值而不同。
表1 MSDP协议报文类型 | |||
---|---|---|---|
Type取值 | 报文类型 | 功能 | 包含的主要信息 |
1 | Source-Active(SA) | 携带多组(S,G)信息,在多个RP之间传递。 | · 源RP的IP地址· 消息中包含的(S,G)项数量· 域中活跃的(S,G)列表 |
封装PIM-SM组播数据。 | · 源RP的IP地址· PIM-SM组播数据 | ||
2 | Source-Active Request(SA-Req) | 主动请求指定组G的(S,G)列表,减少源加入延迟。 | 被请求的组地址G |
3 | Source-Active Response(SA-Resp) | 对Source-Active Request消息的响应。 | · 源RP的IP地址· 消息中包含的(S,G)项数量· 域中活动(S,G)列表 |
4 | KeepAlive | 保持MSDP对等体的连接关系。只在对等体之间无其他协议报文交互时才发送。 | - |
5 | Reserved | 保留类型,当前是用作Notification消息。 | - |
6 | Traceroute in Progress | 用于MSDP的Traceroute功能,对SA消息的RPF传递路径进行跟踪和检测。 | · 源RP的IP地址· 域中活动(S,G)列表· 查询ID · 返回查询信息· 跳数 |
7 | Traceroute Reply |
由表1可以看出,SA消息中可以携带(S,G)信息,也可以封装组播数据报文。MSDP对等体之间通过交互SA消息共享(S,G)信息。为了避免SA消息中的(S,G)表项超时导致远端用户无法收到组播源的数据,可以在SA消息中封装组播数据报文。
由于SA消息是周期性发送的,当域内出现新的组用户时,要等待一个周期内的SA消息以获取有效的(S,G)信息。为了减少新组用户加入源SPT的时延,MSDP提供了Type2和Type3的SA-Req消息与SA-Resp消息,提高活动源信息更新的效率。