PIM-SM模式
使用”拉“的方式来传输数据
适合网络结构较大,组成员分布分散,成员较少的拓扑结构
具有:邻居发现,DR选举,RP发现,RPT构建,组播源注册,SPT切换,断言等机制。
和SM不同的地方是取消了剪枝,嫁接等功能
1. 邻居发现
30S发送一次hello包,通过224.0.0.13组播地址发送,通过报文中的优先级和ip地址选举DR(越大越优先)和DM的邻居发现机制一样
2. DR选举
DM模式中DR只扮演查询器的角色,在SM模式中还有其他作用
源端DR(组播源侧):负责向RP单播发送组成员注册(register)报文
组成员DR(主机侧):负责向RP发送join加入报文
3. RPT构建
当出现组成员时,成员DR收到报告igmp,于是向RP发送join报文,告诉RP有成员加入,并且经过的每一跳路由器都会有(*,G)路由表,生成一棵以RP为根的RPT树
前面有说过PRT模式,因为RPT模式时通过RP转发组播数据,所以其他组播路由器不需要知道组播源具体是谁,也不用知道具体在哪
4. 组播源注册
当组播源出现时,会发送组播文给源端DR,源端DR收到会以单播的方式发register报文给RP,RP收到后会解封装,将里面的组播源和组播地址放入自己的(S,G)表项中,并且会向源DR发送带有(S,G)的join报文,途径的每一跳路由器都会生成(S,G)表项,并且生成以组播源为根的SPT树
建立后会回复源端DR,register-stop报文,告诉源端DR已经收到,不用再发了,否则源端DR会周期性的发register报文
同时,当RP的(S,G)表项建立后,会根据成员DR的(*,G)表项发送组播报文给成员
5. SPT切换
当RP到成员的路径不一定是最优的,并且组播流量很大时,RP的工作负担会很大,所以需要SPT的切换机制(流量阈值可以配置)
如果流量达到阈值,成员DR或者上游路由器会向RP发送剪枝消息,并且会向组播源发送join报文,建立一棵以组播源为根的SPT树
这里就相当于恢复到了DM模式,但是和DM模式相比更加经济实惠,一开始采用RPT的机制,如果没有成员就不会触发,但是SPT会一开始就触发,然后发现没有成员再进行剪枝,有成员再嫁接
6. 断言
和DM的断言机制一样,通过单播路由的优先级,cost值还有下游的ip地址进行选举
RP发现:
RP可以通过静态的方式指定,也可以通过动态的方式选举
动态选举方式:
需要选举俩个角色:
- C-RP:参加竞选RP的竞选者
RP最终从C-RP中选举出来- C-BSR:负责收集竞选者信息的唱票人
选举出的BSR最终将收集到的C-RP的信息发给pim中所有的组播路由器进行投票选举,最终获胜的C-RP会成为RP
C-BSR比较规则:
比较优先级(越大越优先)
比较ip地址(越大越优先)
C-RP比较规则:
先比较C-RP的优先级(越小越优先)
比较hash值(越大越优先)
比较ip地址(越大越优先)
配置:
全局模式下开启组播功能: multicast routing-enable
在pim组播路由器的每个接口都配置:pim sm
在主机侧的最后一跳路由器上配置:igmp en
静态指定RP:pim模式下,输入static-rp 2.2.2.2(指定的RP地址)
每个pim组播路由器上都要配置,并且单播路由不能忘记宣告回环地址
动态配置RP:
- 配置需要参与选举的C-RP:
c-rp priority 1(优先级)
c-rp 接口名 - 配置需要参与选举的C-BSR:
c-bsr priority 1(优先级)
c-bsr 接口名