组播Multicast进阶:PIM-SM实验配置

实验拓扑

实验需求

  • 网络拓扑、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

完成配置后,先做一下初步的验证:

<R4>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 00:53:40 00:01:24 1 N
10.1.34.3 GE0/0/1 00:53:39 00:01:37 1 N

上述输出的是R4的PIM邻居表,可以看到R4发现了两个PIM邻居。在其他路由器上也做相应的查看,确保PIM邻居都发现完整了。

<R4>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)的组播路由表项:

<R4>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: 00:00:04
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了,因此共享树的一个分支就此建立完成。

<R3>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: 00:00:09
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: 00:00:09, Expires: 00:03:21

源注册、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。

<R3>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: 00:02:57
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: 00:02:57, Expires: 00:02:33

(10.10.10.10, 224.1.1.1)
RP: 3.3.3.3 (local)
Protocol: pim-sm, Flag: SPT 2MSDP ACT
UpTime: 00:00:22
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: 00:00:22, Expires: -

R2收到这个Join消息后,将GE0/0/1口添加到(10.10.10.10,224.1.1.1)组播表项的下行接口列表中国,然后将组播流量沿着建立好的SPT转发到RP,而不再将组播流量封装到Register报文中。

<R2>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: 00:00:41
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: 00:00:41, Expires: 00:02:49
2: Register
Protocol: pim-sm, UpTime: 00:00:41, 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口下传组播数据。

<R2>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: 00:00:05
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的组播表项如下:

<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: 00:00:19
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: 00:00:19, Expires: 00:03:11
2: Register
Protocol: pim-sm, UpTime: 00:00:19, Expires: -

组播路径树如下:

猜你喜欢

转载自blog.csdn.net/weixin_43025343/article/details/132215377