76672182_p0.jpg

1. Multicast Source Discovery Protocol(组播源发现协议)特征


  • MSDP 采用 TLV 结构,但目前只支持 IPv4
  • MSDP 封装在 TCP 数据报文中,是一个 TCP 的应用
  • MSDP 与 BGP 的邻居关系建立过程类似
  • MSDP 可以实现 PIM-SM 域内的 Anycost RP,达到共享组播源信息的目的
  • MSDP 可以解决多个 PIM-SM 域之间 RP 的互连问题(域间组播)
  • MSDP 通过单播报文,在各个 PIM-SM 域之间交互 SA 消息,以建立 MSDP 邻居
  • SA 消息也是通过 PRF 检查来避免环路
  • MSDP 邻居分类
    • 源端 MSDP:必须部署在 RR 上,否则无法向外发布组播源信息
    • 传输 MSDP:可以部署在任意位置,但需要与各个 MSDP IP 可达,互连多个 MSDP 邻居,做为中转站
    • 接收 MSDP:必须部署在 RR 上,否则无法接收远端 MSDP 发布组播源信息。通过 MSDP 里的组播源信息为根构建 SPT 树

      2. MSDP Message


封装在 TCP 数据报文中,是一个 TCP 的应用

image.png
MSDN Message 格式解析

  • Type:报文类型
    • Source-Active(SA):携带多个(S,G)信息,在多个 RP 之间传递,或者封装 PIM-SM 组播数据
      • 包含源 RP 的 IP 地址
      • 域中活动的(S,G)列表
    • Source-Active Request:请求指定组播组的(S,G)列表,减少源加入延迟
      • 包含被请求的组播组
    • Source-Active Response:对 Source-Active Request 消息的响应
    • KeepAlive:保持MSDP对等体的连接关系
    • Reserved:用作 Notification
    • MSDP traceroute in progress:MSDP 路由跟踪
    • MSDP traceroute reply:MSDP 路由跟踪答复

      3. MSDP 邻居建立


采用「TCP 639 」端口建立连接

image.png

  1. 指定对端的 MSDP 邻居后,由 IP 地址大的主动发起连接,并启动定时器。主动端状态由 Down → Listen;被动端状态由 Down → Connect
  2. 被动端接收到 MSDP 消息,则邻居关系建立成功。主动端状态由 Listen → Up;被动端状态由 Connect → Up
  3. 双方互相发送 Keepalive 消息保持邻居的 TCP 连接

    4. SA 消息与组播源信息的传递


1)SA 消息的 RPF 检查规则

  1. 发出 SA 消息的邻居就是源 RP,则接收该 SA 消息并向其他对等体转发
  2. 接收从静态 RPF 邻居到来的 SA 消息
  3. 如果一台路由器只拥有一个远端 MSDP 邻居,则该远端邻居自动成为 RPF 邻居,接收从该远端邻居发来的 SA 消息
  4. 发出 SA 消息的邻居与本地路由器属于同一 Mesh Group,则接收该 SA 消息
  5. 如果是从 eBGP/MBGP 过来的 SA 消息,则选用 IP 地址大的邻居的 SA 消息
  6. 如果是从 iBGP/MBGP 或存在 IGP/组播静态路由过来的 SA 消息,则选用所有等价路由中 MSDP 邻居的 SA 消息

    1)组播源信息的传递

    image.png

  7. PIM-SM1 的 RP 通过 DR 发送的 Register 消息获得组播源的信息

  8. PIM-SM1 的 RP 创建 SA 消息(包含:组播源地址、组播组地址和源端 RP 地址),周期性向 MSDP 邻居发送
  9. PIM-SM2 的 RP 收到 SA 消息后,针对 PIM-SM1 的 RP 进行 RPF 检查
    • 如果检查通过,则向其他 MSDP 邻居转发,并检查自己域内是否由该组播组的成员
    • 如果检查失败则丢弃
  10. PIM-SM3 的 RP 收到 SA 消息后,针对 PIM-SM1 的 RP 进行 RPF 检查
    • 如果检查通过,并检查自己域内是否由该组播组的成员。当发现存在成员时,会通过 IGMP 生成(*,G)表项,并创建(S,G)表项,向组播源逐跳发送 Join 消息,以建立一条 RP 到 组播源的 SPT 树
    • 如果检查失败则丢弃
  11. 组播流通过 SPT 树转发至 PIM-SM3,在由 RP 通过 RPT 向接收者转发。当接收者收到组播流后,可以自己决定是否做 SPT 切换(如果有最优路径,则自己构建一条到组播源的 SPT,不在通过 RP 转发了。或手工配置不切换)

    5. Anycost-RP


  • RP 路径最优:组播源向距离最近的 RP 进行注册,建立路径最优的SPT;接收者向距离最近的 RP 发起加入,建立路径最优的 RPT
  • RP 间的负载分担:每个 RP 上只需维护 PIM-SM 域内的部分源/组信息、转发部分的组播数据
  • RP 间的冗余备份:当某 RP 失效后,原先在该 RP 上注册或加入的组播源或接收者会自动选择就近的 RP 进行注册或加入操作