PIM Sparse Mode

  • 和Dense Mode相反,是假设Subnet中没有Receiver,除非收到明确的请求
  • 和Dense Mode相同,也是使用单播路由表来确认RPF接口
  • Receiver 发送IGMP Join 给 LHR,然后LHR会将其转换为 PIM Join,发给Shared Tree 中的DR 或者 Source Tree中的 FHR

过程分析

  • FHR在收到来自Sender的数据包后,需要向RP发起注册
  • FHR对multicast数据进行封装,然后放进 unicast 数据包,发给RP
  • RP解封装,
    • 如果没有存活的 Shared Tree —— 表示没有Receiver,RP回复 Register Stop 消息给FHR
    • 如果有存活的 Shared Tree,就会向下游转发 multicast 数据包,同时发送(S,G) join信息给上游,来创建source tree
    • 如果在RP 和 Source 之间有多个Router,这些Router 上都会创建(S,G) 和 (*,G) 的两种路由条目 —— Source Tree 和 Shared Tree 是交织存在的
    • 一旦RP 和Source 之间的Source Tree (组播路由表)构建完成,RP会发送 Register Stop Message 给FHR,来告知FHR 停止发送单播数据包
    • PIM Register Tunnel 会一直存在,保持活动状态 —— 只要有有效的RPF路径存在,即使没有了Active Multicast Stream
  • 91 Multicast PIM Sparse Mode - 图1

Shared Tree Join

  • Receiver 发送IGMP Join给LHR,LHR发送(*,G) PIM Join 给DR
  • 如果LHR 和 RP 之间不是直连的,那二者之间的所有Router 都会参与 Shared Tree的构建

PIM SPT Switchover

  • PIM-SM 允许LHR 从 Shared Tree 转变成Source Tree ,在特定的路由上 (从RP获取数据,变成从Source获取数据)——这是Cisco 设备的默认行为
  • 一旦从Shared Tree 的RP 收到第一个 Multicast 数据包,就能知道 Source 的IP地址,立刻开始尝试和Source 建立 Source Tree (即使走RP的组播路由更佳)
  • LHR 检查自己的单播路由表,找到去往Source 的最佳路径,发送(S,G) Join 消息
  • LHR一旦通过Source Tree 收到了来自FHR的第1个 Multicast 数据包,if necessarily,将Source Tree 去往FHR的接口切换为 RPF,并发送 Prune 消息给RP 来关闭来自RP的 重复数据转发
  • Switchover 机制可以针对指定的Group 关闭,或全部关闭

Designated Router

  • 当1个LAN 内存在多个 PIM-DM Routers时,会通过PIM Hello 来选举出DR,来避免重复发送数据进入LAN 或者 RP,并提供冗余
  • 优先比较 DR Priority(默认值为1),大者被选
  • DR Priority 相同时,比较IP地址,大者被选
  • 默认的DR保持时间是Hello间隔的3.5 倍,如果在这个保持时间内,没有收到Hello,就选举新的DR
  • Source Network 的DR 用于将Multicast 封装成 Unicast 发给RP
  • DR is required on both the sourceside network and receiver-side network. A source-side DR acts on behalf of the multicast source to send register messages to the RP. The receiver-side DR acts on behalf of the ulticast receivers to send join messages to the RP. PIM-DM does not require a DR