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
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