实验拓扑
实验需求
网络拓扑、IP地址规划如上图所示;
R1、R2、R3、R4运行OSPF协议,打通网络的单播路由;
R1、R2、R3、R4同时也是组播路由器,运行PIM-SM;
R3为RP,配置Loopback0,IP地址为3.3.3.3,该地址作为RP的地址;
接收者加入组播组224.1.1.1;观察RPT的构建;
在R4上将RPT-SPT的切换设置为永远不切换,同时从源开始发送组播数据,观察源的注册过程、RP到源的SPT建立过程、组播流量沿着RPT下行的过程。
在R4上将RPT-SPT的切换恢复为默认值,同时将R4的GE0/0/1口的OSPF Cost值稍稍调大,观察RPT到SPT的切换过程。
本实验可使用华为自研模拟器eNSP完成。
实验步骤及配置
R1、R2、R3及R4完成接口IP地址的配置,运行OSPF。
R1的基础配置如下:
[R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] ip address 10.1.12.1 24 [R1] interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1] ip address 10.1.14.1 24 [R1] ospf 1 router-id 1.1.1.1 [R1-ospf-1] area 0 [R1-ospf-1-area-0.0.0.0] network 10.1.12.1 0.0.0.0 [R1-ospf-1-area-0.0.0.0] network 10.1.14.1 0.0.0.0
R2的基础配置如下:
[R2] interface GigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0] ip address 10.1.12.2 24 [R2] interface GigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1] ip address 10.1.23.2 24 [R2] interface GigabitEthernet0/0/2 [R2-GigabitEthernet0/0/2] ip address 10.10.10 24 [R2] ospf 1 router-id 2.2.2.2 [R2-ospf-1] area 0 [R2-ospf-1-area-0.0.0.0] network 10.1.12.2 0.0.0.0 [R2-ospf-1-area-0.0.0.0] network 10.1.23.2 0.0.0.0 [R2-ospf-1-area-0.0.0.0] network 10.10.10.254 0.0.0.0 [R2-ospf-1-area-0.0.0.0] quit [R2-ospf-1] silent-interface GigabitEthernet0/0/2
R3的基础配置如下:
[R3] interface GigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0] ip address 10.1.23.3 24 [R3] interface GigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1] ip address 10.1.34.3 24 [R3] interface loopback 0 [R3-loopback0] ip address 3.3.3.3 255.255.255.255 #该地址作为RP的地址 [R3] ospf 1 router-id 3.3.3.3 [R3-ospf-1] area 0 [R3-ospf-1-area-0.0.0.0] network 10.1.23.3 0.0.0.0 [R3-ospf-1-area-0.0.0.0] network 10.1.34.3 0.0.0.0 [R3-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
R4的基础配置如下:
[R4] interface GigabitEthernet0/0/0 [R4-GigabitEthernet0/0/0] ip address 10.1.14.4 255.255.255.0 [R4] interface GigabitEthernet0/0/1 [R4-GigabitEthernet0/0/1] ip address 10.1.34.4 255.255.255.0 [R4] interface GigabitEthernet0/0/2 [R4-GigabitEthernet0/0/2] ip address 10.1.1.254 255.255.255.0 [R4] ospf 1 router-id 4.4.4.4 [R4-ospf-1] area 0 [R4-ospf-1-area-0.0.0.0] network 10.1.14.4 0.0.0.0 [R4-ospf-1-area-0.0.0.0] network 10.1.34.4 0.0.0.0 [R4-ospf-1-area-0.0.0.0] network 1.1.1.254 0.0.0.0 [R4-ospf-1-area-0.0.0.0] quit [R4-ospf-1] silent-interface GigabitEthernet0/0/2
R1、R2、R3及R4部署PIM-SM
R1的配置如下:
[R1] multicast routing-enable [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] pim sm #在接口上激活PIM-SM [R1] interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1] pim sm #在接口上激活PIM-SM [R1] pim [R1-pim] static-rp 3.3.3.3 #设置静态RP地址3.3.3.3
R2的配置如下:
[R2] multicast routing-enable [R2] interface GigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0] pim sm [R2] interface GigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1] pim sm [R2] interface GigabitEthernet0/0/2 [R2-GigabitEthernet0/0/2] pim sm [R2] pim [R2-pim] static-rp 3.3.3.3
R3的配置如下:
[R3] multicast routing-enable [R3] interface GigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0] pim sm [R3] interface GigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1] pim sm [R3] interface loopback0 [R3-loopback0] pim sm [R3] pim [R3-pim] static-rp 3.3.3.3
R4的配置如下:
[R4] multicast routing-enable [R4] interface GigabitEthernet0/0/0 [R4-GigabitEthernet0/0/0] pim sm [R4] interface GigabitEthernet0/0/1 [R4-GigabitEthernet0/0/1] pim sm [R4] interface GigabitEthernet0/0/2 [R4-GigabitEthernet0/0/2] igmp enable #连接组播接收者的接口激活IGMP [R4] pim [R4-pim] static-rp 3.3.3.3
完成配置后,先做一下初步的验证:
display pim neighbor VPN-Instance: public net Total Number of Neighbors = 2 Neighbor Interface Uptime Expires Dr-Priority BFD-Session 10.1.14.1 GE0/0/0 0040 0024 1 N 10.1.34.3 GE0/0/1 0039 0037 1 N
上述输出的是R4的PIM邻居表,可以看到R4发现了两个PIM邻居。在其他路由器上也做相应的查看,确保PIM邻居都发现完整了。
display pim rp-info VPN-Instance: public net PIM SM static RP Number:1 Static RP: 3.3.3.3
上面的输出查看的是R4的PIM RP信息,我们为R4手工告知了RP的地址,3.3.3.3,其实也就是R3。
组播用户加入组224.1.1.1,查看RPT的建立过程
现在组播接收者PC加入组224.1.1.1(具体的操作方法请见本手册的PIM-DM实验小节,有详细描述),这将触发PC发送IGMP成员关系报告,R4最为最后一跳路由器会从GE0/0/2口上收到这个报告,它便知道该接口下出现了组播组224.1.1.1的成员,它将建立(* , 224.1.1.1)的组播路由表项:
display pim routing-table VPN-Instance: public net Total 1 (*, G) entry; 0 (S, G) entry (*, 224.1.1.1) RP: 3.3.3.3 Protocol: pim-sm, Flag: WC EXT UpTime: 0004 Upstream interface: GigabitEthernet0/0/1 Upstream neighbor: 10.1.34.3 RPF prime neighbor: 10.1.34.3 Downstream interface(s) information: None
随后R4会向RPF上行接口发送(*,G)PIM Join消息,请求加入共享树RPT。R4如何判断哪个接口是RPF上行接口呢?R4通过单播路由表来判断,对于RPT,PIM路由器在做RPF检查的时候是朝向RP的,因此R4在单播路由表中查找到达RP3.3.3.3的路由,选择路由的出接口作为RPF接口,但是这里由于全网接口COST都是默认值,因此R4上关于3.3.3.3的OSPF路由在R1及R3上出现等价负载均衡,这时R4会选择R1及R3中接口IP较大的作为RPF的主邻居,也就是R3,因此R4的GE0/0/1成为RPF接口。这与上面的输出吻合。
R3在收到R4发上来的PIM Join消息后,它会创建一个(*,224.1.1.1)表项,将收到该报文的接口GE0/0/1添加到下行接口列表中,由于自己就是RP了,因此共享树的一个分支就此建立完成。
display pim routing-table VPN-Instance: public net Total 1 (*, G) entry; 0 (S, G) entry (*, 224.1.1.1) RP: 3.3.3.3 (local) Protocol: pim-sm, Flag: WC UpTime: 0009 Upstream interface: Register Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 1 #下行接口列表 1: GigabitEthernet0/0/1 Protocol: pim-sm, UpTime: 0009, Expires: 0021
源注册、RP到源的SPT建立过程、组播报文的传输过程
接下去我们来观察一下源注册、RP到源的SPT建立过程及组播报文的传输过程。首先在R4上将RPT-SPT的切换设置为永远不切换,因为这个特性我们在下一步中再去关注,这里暂时忽略掉。
[R4] pim [R4-pim] spt-switch-threshold infinity
使用上述配置将R4的PIM SPT切换特性设置为永远不切换。
现在组播源开始向组播组224.1.1.1发送组播数据(这可以通过ping 224.1.1.1来模拟)。组播数据到达第一跳路由器R2后,R2会将组播数据封装在单播的PIM Register报文中发往RP也就是R3。
通过在R2的GE0/0/1口上抓包,可以看到Register报文,这是一个单播包,目的地址是3.3.3.3。R3在收到这个包后,解封装发现里头是个(10.10.10.10,224.1.1.1)的组播数据包,因此在本地创建一个(10.10.10.10,224.1.1.1)表项,同时将组播数据包沿着RPT先传下去(从GE0/0/1口发出去)。另一方面,R3紧接着向源的方向(同样是借助单播路由表查找到10.10.10.10的路由来获得RPF接口)发送(10.10.10.10,224.1.1.1)的PIM Join消息,试图在自己与源之间建立一条源树SPT。
display pim routing-table VPN-Instance: public net Total 1 (*, G) entry; 1 (S, G) entry (*, 224.1.1.1) RP: 3.3.3.3 (local) Protocol: pim-sm, Flag: WC UpTime: 0057 Upstream interface: Register Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/0/1 Protocol: pim-sm, UpTime: 0057, Expires: 0033 (10.10.10.10, 224.1.1.1) RP: 3.3.3.3 (local) Protocol: pim-sm, Flag: SPT 2MSDP ACT UpTime: 0022 Upstream interface: GigabitEthernet0/0/0 Upstream neighbor: 10.1.23.2 RPF prime neighbor: 10.1.23.2 Downstream interface(s) information: Total number of downstreams: 1 1: GigabitEthernet0/0/1 Protocol: pim-sm, UpTime: 0022, Expires: -
R2收到这个Join消息后,将GE0/0/1口添加到(10.10.10.10,224.1.1.1)组播表项的下行接口列表中国,然后将组播流量沿着建立好的SPT转发到RP,而不再将组播流量封装到Register报文中。
dis pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 1 (S, G) entry (10.10.10.10, 224.1.1.1) RP: 3.3.3.3 Protocol: pim-sm, Flag: SPT LOC ACT UpTime: 0041 Upstream interface: GigabitEthernet0/0/2 Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 2 1: GigabitEthernet0/0/1 Protocol: pim-sm, UpTime: 0041, Expires: 0049 2: Register Protocol: pim-sm, UpTime: 0041, Expires: -
SPT切换过程
现在,将R4上之前配置的SPT切换的相关配置去除(undo spt-switch-threshold)。在默认情况下,R4作为最后一跳路由器,只要一收到224.1.1.1的组播数据包,则立即进行SPT的切换。接着将R4的GE0/0/1口OSPF Cost稍稍调大,调节为2(默认是1),我们通过这个动作来模拟这样一个事实:“R4从R1到达源,比从R3到达源要更近”。
现在,当R4从GE0/0/1口收到第一个224.1.1.1的组播数据包时,将启动SPT切换机制,朝着源的方向(也就是R1)发送(10.10.10.10,224.1.1.1)的PIM Join消息,请求加入SPT。
R1收到这个Join消息后,创建(10.10.10.10,224.1.1.1)表项,将GE0/0/1口添加到下行接口列表,同时向R2发送Join消息。R2收到这个Join消息后,将自己的GE0/0/0口添加到(10.10.10.10,224.1.1.1)表项的下行接口列表,并开始向GE0/0/0口下传组播数据。
display multicast routing-table Multicast routing table of VPN-Instance: public net Total 1 entry 00001. (10.10.10.10, 224.1.1.1) Uptime: 0005 Upstream Interface: GigabitEthernet0/0/2 List of 3 downstream interfaces 1: GigabitEthernet0/0/0 2: GigabitEthernet0/0/1 3: Register
这一步完成之后,网络中的组播路径树如下所示:
现在R4会从R1及R3收到组播数据的两份拷贝,这显然是没有意义的,因此它向R3发送一个Prune消息,将自己从RPT上剪除。R3收到这个消息后,将接口GE0/0/1从(*,224.1.1.1)表项的下行接口列表中删除,也就不再向GE0/0/1口发送组播流量了,然后发现下行接口列表为空,因此向R2发送一个Prune消息,请求将自己从SPT上修剪掉,因为它不再需要组播流量了。R2收到这个Prune消息后,将GE0/0/1口从表项的下行接口列表中删除。
最终R2的组播表项如下:
display pim routing-table VPN-Instance: public net Total 0 (*, G) entry; 1 (S, G) entry (10.10.10.10, 224.1.1.1) RP: 3.3.3.3 Protocol: pim-sm, Flag: SPT LOC ACT UpTime: 0019 Upstream interface: GigabitEthernet0/0/2 Upstream neighbor: NULL RPF prime neighbor: NULL Downstream interface(s) information: Total number of downstreams: 2 1: GigabitEthernet0/0/0 Protocol: pim-sm, UpTime: 0019, Expires: 0011 2: Register Protocol: pim-sm, UpTime: 0019, Expires: -
组播路径树如下:
全部0条评论
快来发表一下你的评论吧 !