PIM SM路由协议基础:
PIM SM基本原理:
RP的发现:
- 在网络中维护一台RP,所有的pim路由器都知道RP的位置,RP负责接受组播数据,并向组播接受者进行转发,RP跟组播源构建一颗SPT树,RP跟组播接受者构建一颗RPT树。
RPT的构建:
- 当网络中出现组成员,用户通过IGMP加入某组播组,然后由最后一跳路由器(成员端DR)向RP发送( G)表项的join报文,并逐跳在pim路由器上建立( G)表项。
- ==成员端DR会每隔60S向上游pim路由器发送join报文,收到join报文后,重置接口计时器(210s),超时后就会将此接口从下游接口中移除==
- ==只要接受者存在,成员端DR会每隔60S向上游pim路由器发送join报文,用来刷新(* G)条目。维护RPT树。==
组播源注册:
- 当网络中出现活跃的组播源,源端DR会将此组播数据封装在register报文中,以单播的形式发送给RP,
SPT的构建:
- RP收到此register报文后,就得知了组播源的地址,然后向组播源发送(S G)表项的join报文,然后在沿途的pim路由器上创建相应的(S G)表项,构建一颗SPT树,之后的组播数据就根据(S G)进行转发,
- RP这时可以通过两个方向收到组播数据,一个是从SPT,另一个是根据单播注册隧道,这时就会由RP像源端DR发送register stop 报文,注册停止报文,DR收到之后,就会启动一个注册抑制计时器,60s,超时后,继续发送注册报文。
- 为了降低RP的系统开销,在注册抑制计时器超时前5s,会像RP发送probe(空注册报文)报文中仅含组播源和组播组的信息,不含组播数据。
==空注册报文的作用:向RP通告组播源处于活跃,通知RP发送注册停止报文刷新注册抑制计时器时间==
断言机制:
因为SM是拉流量的,在MA网络中,拉之前就已经选举了DR,所以非DR不会响应这个MA网络中主机的加组请求,也就不会像上发送(* G)jion,不能在上游路由器上创建下游接口,因此一般情况下不会触发断言机制,除非特殊情况,不通过DR,直接发送给RP.
BSR-自举协议:
RP的发现:
静态RP:
- 在每一台路由器上进行静态部署
动态RP/C-RP
- 将多个pim路由器部署为C-RP,来动态选出RP,同时还需要配置C-BSR,选举出BSR,来收集所有C-RP的通告信息。
- C-BSR的竞选:
- 开始,所有的C-BSR都认为自己的BSR,以组播地址224.0.0.13向全网发送bootstarp报文,TTL值为1。
- bootstarp携带C-BSR优先级,地址,每一台pim路由器收到后,通过比较选出BSR
- 先比较优先级再比较地址。都比大。
- C-RP的竞选:
- 所有的C-RP都会以单播的形式向BSR发送Advertisement报文,==60s一次。超时时间为150s==
- Advertisement报文携带C-RP的服务的组地址范围,C-RP的地址,优先级。
- BSR收到之后,会将所有C-RP发送过来的报文进行一个汇总,汇总成AS-set,并封装在boostarp报文中,进行全网发送。
- pim路由器收到之后,使用相同的规则进行计算和比较,选出一个RP.
- C-RP服务的组地址范围,越精确越优,(掩码长者优先)
- 比较C-RP的优先级,比大
- 将组地址、C-RP的地址、BSR的hash掩码长度(默认为30),进行hash运算,进行比较
- 比较C-RP的地址。比大
- 比较出RP后,将组播组和RP的对应关系保存下来,指导后续的建树过程。
- RFP校验:
- BSR发送bootstarp报文,要进行RPF检验。
- 接受组播数据的入接口是到达组播源的出接口
- 接受的组播数据源地址是到达组播源的下一跳。
- 满足两个要求后,才可发送bootstarp报文。
- 因为bootstarp报文的ttl值为1,所以路由器转发时,源地址逐跳封装。
- BSR发送bootstarp报文,要进行RPF检验。
RPT/SPT树的切换:
STP切换机制:成员端DR周期性的检测组播报文的转发速率,一旦发现(S G)报文的转发熟虑超过阈值,则触发SPT切换。
- 组成员端DR逐跳向远端DR逐跳发送(S G)join报文,并沿途创建(S G)表项,建立源端DR到成员端DR的SPT树
- SPT树建立后,成员端DR会沿着RPT树逐跳向RP发送剪枝报文,删除(* G)表项中相应的下游接口,之后再不必向下转发数据。
- 如果SPT不经过RP,那么RP会继续逐跳向源端DR发送剪枝报文,删除(S G)表项中相应的下游接口,之后再不必向下转发数据。
缺省情况下,设备一般没有配置阈值,所以当成员端DR知道了组播源的地址时,就会触发SPT的切换。