昨天给大家介绍了PIM-SM模式,在PIM-SM模式里最重要的就是RP的选举。RP的选举有三种方式,一种是静态指定RP,需要在每台路由器上都去配置,包括RP那台路由器。另外一种就是动态选举RP,动态选举又有两种方式,一种是Auto-RP,这是思科私有的,而另外一种则是BSR,这是工业标准。
概 念
接下来给大家介绍一下思科私有选举RP的Auto-RP:
在Auto-RP中有两个特别重要的角色,一个是MA(Mapping Agent),有点类似于班主任的角色;另一种是C-RP(Candidate RP),有点类似于要去竞选班长的角色,而最终MA会从C-RP中会选举出RP。
Auto-RP的机制基本是分两步:
(1)RP候选者(C-RP)每隔一段时间发送RP-Announce messages到一个组播地址224.0.1.39,只要一台路由器配置为MA,那么它就会自动加进224.0.1.39这个组,从而能够收到所有的RP-Announce消息。这个消息的思就是:我要竞选RP;
(2)当MA收到这些RP-Announce消息后,会对这些消息进行比较,从而确定谁成为RP,而选举的规则是谁的IP地址大谁就是RP,接着MA会发送一个RP-Discovery消息到组播地址224.0.1.40宣告谁是最终的RP,所有的Cisco PIM-SM路由器只要运行了PIM都会自动加入224.0.1.40这个组,从而得知RP信息。
实验介绍
接下来我们通过一个简单实验来了解一下PIM-SM的Auto-RP的配置方法:
一、实验拓扑:
实验步骤
1.R3上创建一个环回口模拟C-RP
R3:interface Loopback0
ip address 33.1.1.1 255.255.255.0
2.R5上创建一个环回口模拟C-RP,同时又模拟MA
R5:interface Loopback0
ip address 44.1.1.1 255.255.255.0
3.路由器之间运行IGP协议,主要是为了形成单播路由表做RPF检验,路由协议用哪种都无所谓,只要能形成路由表,我们这里选用OSPF。
R2:router ospf 1
network 12.1.1.1 0.0.0.0 area 0
(源必须宣告,否则无法做RPF校验)
network 23.1.1.0 0.0.0.255 ar 0
R3:router ospf 1
network 0.0.0.0 0.0.0.0 area 0
(C-RP的地址也必须宣告)
R4:router ospf 1
network 0.0.0.0 0.0.0.0 area 0
R5:router ospf 1
network 0.0.0.0 0.0.0.0 ar 0
(C-RP和MA的地址也必须宣告)
R6:router ospf 1
network 56.1.1.0 0.0.0.255 ar 0
验证OSPF,此时R6上应该能学到6条OSPF路由:
4.路由器运行组播路由协议PIM-SM
R2:ip multicast-routing (开启组播路由功能,必配)
int e0/0
ip pim sparse-mode
(连源的接口要配置,否则R2无法从R1收到组播流量)
int e0/1
ip pim sparse-mode
(接口下配置)
R3:ip multicast-routing
(开启组播路由功能,必配)
int lo0
ip pim sparse-mode
(C-RP的接口也必须配置,因为C-RP要发送组播流量)
int range e0/0-1
ip pim sparse-mode
(接口下配置)
R4:ip multicast-routing
(开启组播路由功能,必配)
int range e0/0-1
ip pim sparse-mode
(接口下配置)
R5:ip multicast-routing
(开启组播路由功能,必配)
int lo0
ip pim sparse-mode
(C-RP和MA的接口也必须配置,因为C-RP和MA都要发送组播流量)
int range e0/0-1
ip pim sparse-mode
(接口下配置)
R6:ip multicast-routing
(开启组播路由功能,必配)
int range e0/0-1
ip pim sparse-mode
(接口下配置,连接PC的端口也要配置)
配置完成后,我们可以在R6上去看PIM邻居:
5.设置MA和C-RP
R3:ip pim send-rp-announce lo0 scope 10
(配置R3的环回口为C-RP,scope后面的参数为RP-announce消息能够传递的跳数)
R5:ip pim send-rp-announce lo0 scope 10
(配置R5的环回口为C-RP,scope后面的参数为RP-announce消息能够传递的跳数)
ip pim send-rp-discovery lo0 scope 10
(配置R5的环回口为MA,scope后面的参数为RP-discovery消息能够传递的跳数)
这里有一个问题,C-RP需要向224.0.1.39发起竞选消息从而MA才能选举谁成为RP,但是在PIM-SM模式里必须有RP的存在才能发送组播流量,所以这样就会陷入一个循环,我们需要给224.0.1.39和224.0.1.40开一个后门,不需要RP就能发送组播流量:
R2-R6:ip pim autorp listener
这样C-RP和MA之间就能通过交互信息从而选举出RP,选举规则是IP地址大的,R3的环回口地址是33.1.1.1,R5的环回口地址是55.1.1.1,所以通过选举规则R5的环回口将成为RP。
此时在R5上查看组播路由表
6.PC加组,IGMP协议
路由器的接口只要运行了PIM协议,那么这个接口的IGMP就会自动开启;
我们只需要将PC加组即可:
R7:int e0/0
ip igmp join-group 239.1.1.1
(接口下配置)
此时在R6上能看到组信息,并且看到该组的RP信息:
此时在R6上可以看到RP是R5:
当PC加组之后,会形成一颗共享树,按照拓扑需求可以看出在R6和R5之间形成了一颗共享树,生成(*,G)表项:
此时源树还未形成,源树的形成需要组播流量的触发,所以我们在R1上发起测试。
此时源树会形成,路由器上就会生成(S,G)表项:
R2-R6:
———— / END / ————