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可以通过静态的方式指定,也可以通过动态的方式选举
动态选举方式:
需要选举俩个角色:

  1. C-RP:参加竞选RP的竞选者
    RP最终从C-RP中选举出来
  2. 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:

  1. 配置需要参与选举的C-RP:
    c-rp priority 1(优先级)
    c-rp 接口名
  2. 配置需要参与选举的C-BSR:
    c-bsr priority 1(优先级)
    c-bsr 接口名