当前位置 : 主页 > 编程语言 > 其它开发 >

HCNP Routing&Switching之组播技术PIM-SM RP

来源:互联网 收集:自由互联 发布时间:2022-05-15
我们知道在RPT里,所有组播数据流都会通过RP转发到接收者;对于一个RP来说,它可以同时服务于多个组播组,但一个组播组只能对应一个唯一的RP;所谓RP就是RPT(Rendezvous Point Tree)里
HCNP Routing&Switching之组播技术PIM-SM RP 我们知道在RPT里,所有组播数据流都会通过RP转发到接收者;对于一个RP来说,它可以同时服务于多个组播组,但一个组播组只能对应一个唯一的RP;所谓RP就是RPT(Rendezvous Point Tree)里的RP(Rendezvous Point),即汇合点;所有的组播源和接收者都是以该点为树根所形成的数据转发路径(RPT)来转发报文,组播源先向树根发送数据报文,之后的报文再向下转发到达所有接收者;

  前文我们了解了组播技术中,组播路由协议PIM的稀疏模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16142795.html;今天我们来聊一聊组播路由协议PIM稀疏模式中RP相关话题;

  我们知道在RPT里,所有组播数据流都会通过RP转发到接收者;对于一个RP来说,它可以同时服务于多个组播组,但一个组播组只能对应一个唯一的RP;所谓RP就是RPT(Rendezvous Point Tree)里的RP(Rendezvous Point),即汇合点;所有的组播源和接收者都是以该点为树根所形成的数据转发路径(RPT)来转发报文,组播源先向树根发送数据报文,之后的报文再向下转发到达所有接收者;

  RP发现

  RP发现有两种方式,一种是静态RP,即通过人工手动指定静态RP的ip地址,在所有PIM路由器上配置;另一种就是动态RP,所谓动态RP就是通过几台PIM路由器配置C-RP(Candidate-RP,候选RP),最后从C-RP中竞选产生RP;在竞选RP之前,首先要配置C-BSR(Candidate-BootStrap Router,候选自举RP),从C-BSR中先选出BSR;BSR负责收集C-RP的通告信息,并发布到整个PIM-SM网络,让所有路由器知道RP的位置;简单讲动态RP是在众多C-BSR中先选举BSR,然后有选举的BSR收集C-RP的通告信息,然后再从多个C-RP中竞选出RP,然后再由BSR通告给PIM-SM整个网络路由器让其知道RP的位置;静态和动态是可以同时配置的,默认情况下静态比动态优先级更低,但是静态可以配置更高;

  提示:首先在PIM-SM网络中通过多个C-BSR中竞选出BSR,然后由BSR收集C-RP发出的通告信息,再从多个C-RP中竞选出RP;然后再由BSR将其竞选出RP的结果通告给整个PIM-SM网络中的所有路由器,让所有路由器知道RP的位置;

  BSR选举规则

  1、在多个C-BSR中先比较其优先级,优先级数字越大,优先级越高,即优先级越大越有限成为BSR;

  2、如果优先级一样,则比较接口ip地址,ip地址大者成为BSR;

  RP选举规则

  1、如果只有一个C-RP,那么该节点就是域里的RP;如果有多个C-RP,首先比较C-RP的优先级,优先级较高(数字越小)者称为RP;

  2、如果优先级相同,者使用哈希(hash)函数计算哈希值,该值较大者称为RP;

  3、如果优先级和哈希值都相同,则比较C-RP接口ip地址,ip地址大者成为RP;

  实验:如下拓扑,配置PIM-SM

  pc1、pc2、msc1的配置

  各路由器配置

  R1的配置

sys
sys R1
int g0/0/0
ip add 192.168.21.1 24
int g0/0/1
ip add 192.168.11.1 24
q

ospf 1234 router-id 1.1.1.1
area 0
net 192.168.21.1 0.0.0.0
net 192.168.11.1 0.0.0.0
q
q

multicast routing-enable
int g0/0/0
pim sm
int g0/0/1
pim sm
View Code

  R2的配置

sys
sys R2
int g0/0/0
ip add 192.168.32.2 24
int g0/0/1
ip add 192.168.42.2 24
int g0/0/2
ip add 192.168.21.2 24
q

ospf 1234 router-id 2.2.2.2
area 0
net 192.168.32.2 0.0.0.0
net 192.168.42.2 0.0.0.0
net 192.168.21.2 0.0.0.0
q
q

multicast routing-enable
int g0/0/0
pim sm
int g0/0/1
pim sm
int g0/0/2
pim sm
View Code

  R3的配置

sys
sys R3
int g0/0/0
ip add 192.168.13.254 24
int g0/0/1
ip add 192.168.32.3 24
q

ospf 1234 router-id 3.3.3.3
area 0
net 192.168.13.254 0.0.0.0
net 192.168.32.3 0.0.0.0
q
q

multicast routing-enable
int g0/0/0
pim sm
igmp en
int g0/0/1
pim sm 
View Code

  R4的配置

sys
sys R4
int g0/0/0
ip add 192.168.24.254 24
int g0/0/1
ip add 192.168.42.4 24
q

ospf 1234 router-id 4.4.4.4
area 0
net 192.168.24.254 0.0.0.0
net 192.168.42.4 0.0.0.0
q
q

multicast routing-enable
int g0/0/0
pim sm
igmp en
int g0/0/1
pim sm
View Code

  在R2上验证pim邻居

  提示:可以看到R2有三个邻居,分别是R1、R3和R4;和我们的拓扑是符合的;

  在R2的g0/0/2口抓包,让组播源发送数据,看看对应是否会生成组播路由?会不会像dm那样先扩散呢?

  提示:通过抓包,并没有发现有组播udp,只有pim的hello包;

  验证,看看R2上是否有组播路由产生呢?

  提示:可以看到R2上并没有组播路由产生;

  在R1上验证是否有组播路由产生呢?

  提示:可以看到R1上有组播路由产生,并且是(s,g)的形式;但是该路由信息只有上游接口,并没有下游接口;这是因为该路由器直连组播源,对应并没有接收者,所以只会有上游接口;通过上述截图我们也可以看到对应RP也是空;

  手动配置静态RP为2.2.2.2

  提示:在其他路由器上也需要配置同样的RP;同时其他路由器单播网络必须能够到达对应RP;

  提示:我们这里选择R2为RP,所以在R2上必须有一个接口的ip地址为RP的ip地址,并且该ip需要在ospf中宣告,便于其他路由器学习到到达RP的路由;

  在任意路由器上验证RP信息

  提示:验证RP信息,后面需要更对应组播地址,表示查看对应组播组里RP信息;默认情况下我们配置的静态RP信息是匹配所有组播组;

  提示:当然我们需要给某个组播组配置一个单独的RP,我们可以对应RP地址后面加ACL,表示ACL匹配到的地址都是对应的RP;prefered这个参数是配置静态RP信息优于动态RP,即当同时配置静态RP和动态RP后,静态RP上加上prefered这个参数后,对应静态RP的优先级就高于动态RP;

  在pc2上加入对应组播组,在R4上抓包看看对应过程

  提示:可以看到PC2 点加入对应组播组的时候,首先R4会发送igmp 查询,pc2报告有成员加入;

  提示:可以看到随后R4会发送加入消息给整个pim网络;

  查看R4的路由表,看看对应路由是否生成?

  提示:可以看到对应组播路由已经产生,并且是以(*,G)的形式,并不是(S,G);对应路由的下游接口也产生了;

  在R1上抓包,然后组播源发送数据

  提示:可以看到在R1上抓包能够抓到组播源向RP的注册包,这个包是通过在udp里封装了一个Pim包头来携带组播源的注册信息;

  在RP上查看对应组播路由

  提示:可以看到RP上的路由有源树和共享树两种形式,这是因为RP到组播源走SPT,RP到接收者走RPT;

  提示:同时我们在R2上也能抓到R4向R2发送到加入消息,对应是发送给RP所配置的地址;

  配置动态RP

  在R1和R2上新建lo接口,并配置c-bsr ,看看对应bsr的竞选过程

  将lo1接口宣告在ospf里

  提示:将lo1接口宣告在ospf里,是让其他路由器学习到相应接口的路由;

  提示:对应接口注意要先开启pim sm 然后才能配置对应角色;

  提示:可以看到在默认优先级的情况下,在R1配置成C-bsr以后,对应抓包会看到R1会周期性的发送bootstrap消息告诉其他路由自己是bsr;当R2配置c-bsr以后,对应R1看自己和R2的优先级一样,且R2的ip地址比自己大,此后R1就被抑制,取而代之的是R2成为BSR周期性的发送bootstrap消息告诉其他路由器自己是bsr;当然我们可以修改R1的优先级来来影响竞选结果;

  修改R1c-bsr的优先级为5

  再次查看bsr,看看谁是bsr?

  提示:可以看到当R1更改优先级以后,对应bsr就成为了R1;这是因为R1的优先级大于R2;

  配置R1和R2对应lo接口为c-rp接口

  抓包查看交互过程

  提示:从抓包的信息可以看到R2在向R1通告,R1向其他路由器发送bootstrap消息,说明BSR是R1;但RP是谁还不知道;

  验证:查看RP信息,看看谁竞选为RP了?

  提示:可以看到R2成为了RP;

  修改R2的C-RP的优先级为10,看看对应RP会不会被R1竞选?

  查看RP信息

  提示:可以看到把R2的c-RP的优先级加大以后,对应RP就变成了R1,这是因为RP选举首先看优先级,优先级数字越小则成为RP ;

  播放组播源,然后查看R4的路由表,看看对应是否发生了RPT向SPT切换了呢?

  提示:可以看到R4上也有了SPT,说明发生了RPT向SPT切换;

  在R4上修改永不向SPT切换

  再次查看R4的路由表,看看对应是否还会有SPT呢?

  提示:可以看到此时R4的路由表中就只有RPT,并没有SPT;说明RPT没有向SPT切换;

  PIM-DM和PIM-SM比较

  PIM-DM适用于规模较小、组成员相对比较密集的网络中,工作机制是通过周期性“扩散-剪枝”维护一棵连接组播源和组播成员的单向无环SPT;

  PIM-SM适用于组成员相对比较稀疏,分布广泛的大型网络中;工作机制采用接收者主动加入的方式建立组播分发树,需要维护RP、构建RPT、注册组播源;

网友评论