目录
一:PIM-SM的RP
原理概述
实验目的
实验内容
实验拓扑
1.基本配置
2.配置IGP
3.配置PIM-SM和静态RP
4.配置动态RP
5.配置Anycast RP
二: RPF校验
原理概述
实验目的
实验内容
实验拓扑
1.基本配置
2.配置IGP
3.配置PIM-DM
4.RPF校验过程
5.配置组播静态路由。
一:PIM-SM的RP
原理概述
一个 PIM-SM 网络中可以存在一个或多个 RP 。一个 RP 可以对应若干个组播组,负责这些组播组的注册消息的处理、加入消息的处理以及组播数据的转发,但是同一个组播组只能对应一个 RP 。 RP 是 PIM-SM 网络的核心,网络中的路由器必须知道 RP 的地址。
RP 有两种形式:静态 RP 和动态 RP 。静态 RP 是由人工选定的, PIM 网络中的所有 PIM 路由器上都需要逐一进行配置;通过配置,每台路由器便知道了静态 RP 的地址。动态 RP的确定过程相对比较复杂一些:在 PIM 网络中人工选定并配置若干台 PIM 路由器,使得它们成为 C-RP ( Candidate-RP ), RP 将从 C-RP 中选举产生。如果 C-RP 只有一个,则 RP 就是这个 C-RP ;如果有多个 C-RP ,则优先级最高者(优先级数值越小优先级越高,缺省值是0)将会被选举为 RP ;如果通过优先级比较无法选举出 RP ,则依靠 Hash 算法算出的数值来决定 RP ,数值最大者将成为 RP ( Hash 算法参数:组地址、掩码长度、 C-RP 地址);如果通过 Hash 数值也无法确定出 RP ,则拥有最高 IP 地址的 C-RP 将成为 RP 。选定和配置 C-RP 时,还必须同时选定和配置 C- BSR ( Candidate-BootStrap Router ),并由 C-BSR 选举产生出一个 BSR 。如果有多个 C-BSR ,则拥有最高优先级的 C-BSR 将成为 BSR ;如果根据优先级无法确定出 BSR ,则拥有最高 IP 地址的 C-BSR 将成为 BSR 。 BSR 是 PIM-SM 网络的管理核心,它负责收集网络中 C-RP 发出的 Advertisement 宣告信息,并计算出与每个组播组对应的 RP ,然后将 RP 的信息发布到整个 PIM -SM 网络中。
在传统的 PIM- SM 网络中,每个组播组只能映射到一个 RP ,当网络负载较大以及流量分布不合理时,可能导致 RP 拥塞或者网络资源严重浪费的情况。解决上述问题的一个方案便是配置 Anycast RP :在同一个 PIM-SM 网络中设置多个具有相同环回地址的 RP ,组播源和组播用户分别选择距离自己最近的 RP 进行 RPT 的创建,从而实现分担和优化组播流量的目的。
实验目的
理解RP的作用
掌握静态和动态RP的配置方法
理解Anycast RP的应用场景
掌握Anycast RP的配置方法
实验内容
实验拓扑如图所示,本实验网络包含了6台路由器、两台组播服务器和两台终端电脑。全网运行OSPF,并通过PIM-SM来实现组播服务。网络管理员需要配置静态RP、动态RP、Anycas RP,以便加深对PIM-SM网络行为的理解和认识。、
实验拓扑
1.基本配置
根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R3之间的连通性。
其余直连网段的连通性测试过程在此省略。
配置组播服务器Source-1的组播IP地址为224.1.1.1,组播MAC地址为01-00-5E-01-01-01,如图所示。
配置Source-1
配置组播服务器Source-2的组播IP地址为225.1.1.1,组播MAC地址为01-00-5E-02-02-02,如图所示
配置Source-2
2.配置IGP
在每台路由器上配置ODPF协议。
[r1]ospf 1
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 10.0.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 10.0.11.11 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255[r2]ospf 1
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[r3-LoopBack0]ip add 10.0.3.3 24[r3]ospf 1
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 10.0.3.3 0.0.0.0
[r3-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 10.0.35.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[r4]ospf 1
[r4-ospf-1]
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 10.0.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 10.0.46.0 0.0.0.255[r5]ospf 1
[r5-ospf-1]
[r5-ospf-1]area 0
[r5-ospf-1-area-0.0.0.0]
[r5-ospf-1-area-0.0.0.0]network 10.0.35.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]
[r5-ospf-1-area-0.0.0.0]network 10.0.56.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]
[r5-ospf-1-area-0.0.0.0]network 172.16.4.0 0.0.0.255
[r6]ospf 1
[r6-ospf-1]area 0
[r6-ospf-1-area-0.0.0.0]network 10.0.1.1 0.0.0.0
[r6-ospf-1-area-0.0.0.0]network 10.0.6.6 0.0.0.0
[r6-ospf-1-area-0.0.0.0]network 10.0.46.0 0.0.0.255
[r6-ospf-1-area-0.0.0.0]network 10.0.56.0 0.0.0.255
[r6-ospf-1-area-0.0.0.0]network 172.16.2.0 0.0.0.255
配置完成后,查看R1的路由器。
<r1>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 25 Routes : 25Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.1.1/32 Direct 0 0 D 127.0.0.1 LoopBack0
10.0.3.3/32 OSPF 10 1 D 10.0.13.3 GigabitEthernet
0/0/1
10.0.4.4/32 OSPF 10 2 D 10.0.12.2 GigabitEthernet
0/0/0
10.0.6.6/32 OSPF 10 3 D 10.0.13.3 GigabitEthernet
0/0/1
10.0.11.11/32 Direct 0 0 D 127.0.0.1 LoopBack1
10.0.12.0/24 Direct 0 0 D 10.0.12.1 GigabitEthernet
0/0/0
10.0.12.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/0
10.0.12.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/0
10.0.13.0/24 Direct 0 0 D 10.0.13.1 GigabitEthernet
0/0/1
10.0.13.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/1
10.0.13.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/1
10.0.24.0/24 OSPF 10 2 D 10.0.12.2 GigabitEthernet
0/0/0
10.0.34.0/24 OSPF 10 3 D 10.0.12.2 GigabitEthernet
0/0/0
10.0.35.0/24 OSPF 10 2 D 10.0.13.3 GigabitEthernet
0/0/1
10.0.46.0/24 OSPF 10 4 D 10.0.13.3 GigabitEthernet
0/0/1
10.0.56.0/24 OSPF 10 3 D 10.0.13.3 GigabitEthernet
0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.1.0/24 Direct 0 0 D 172.16.1.254 GigabitEthernet
0/0/2
172.16.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/2
172.16.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/2
172.16.2.0/24 OSPF 10 4 D 10.0.13.3 GigabitEthernet
0/0/1
172.16.3.0/24 OSPF 10 2 D 10.0.12.2 GigabitEthernet
0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
可与看到,R1已经获得了所有网段的路由信息。至此,网络已经通过OSPF实现了互通。
3.配置PIM-SM和静态RP
在所有路由器上开启组播功能,并在每台路由器的每个接口下配置命令pim-sm,除此之外,还需要在R1的G0/0/2和R6的G0/0/1接口下使能IGMP。
[r1]multicast routing-enable
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]pim sm
[r1-GigabitEthernet0/0/0]int g0/0/1
[r1-GigabitEthernet0/0/1]pim sm
[r1-GigabitEthernet0/0/1]int g0/0/2
[r1-GigabitEthernet0/0/2]pim sm
[r1-GigabitEthernet0/0/2]igmp enable
[r2]multicast routing-enable
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]pim sm
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]pim sm
[r2-GigabitEthernet0/0/1]int g0/0/2
[r2-GigabitEthernet0/0/2]pim sm
[r3]multicast routing-enable
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]pim sm
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]pim sm
[r3-GigabitEthernet0/0/1]int g0/0/2
[r3-GigabitEthernet0/0/2]pim sm
[r4]multicast routing-enable
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]pim sm
[r4-GigabitEthernet0/0/0]int g0/0/1
[r4-GigabitEthernet0/0/1]pim sm
[r4-GigabitEthernet0/0/1]int g0/0/2
[r4-GigabitEthernet0/0/2]pim sm
[r5]multicast routing-enable
[r5]int g0/0/0
[r5-GigabitEthernet0/0/0]pim sm
[r5-GigabitEthernet0/0/0]int g0/0/1
[r5-GigabitEthernet0/0/1]pim sm
[r5-GigabitEthernet0/0/1]int g0/0/2
[r5-GigabitEthernet0/0/2]pim sm
[r6]multicast routing-enable
[r6]int g0/0/0
[r6-GigabitEthernet0/0/0]pim sm
[r6-GigabitEthernet0/0/0]int g0/0/1
[r6-GigabitEthernet0/0/1]pim sm
[r6-GigabitEthernet0/0/1]igmp enable
[r6-GigabitEthernet0/0/1]int g0/0/2
[r6-GigabitEthernet0/0/2]pim sm
配置完成后,查看R1的PIM邻居信息。
可以看到,R1与R2和R3都已成功建立了PIM邻居关系。接下来,在每台路由器上手工配置R1(10.0.11.11)为静态RP。
[r1]interface loopback 1
[r1-LoopBack1]pim sm
[r1-LoopBack1]pim
[r1-pim]static-rp 10.0.11.11
[r2]pim
[r2-pim]static-rp 10.0.11.11
[r3]pim
[r3-pim]static-rp 10.0.11.11
[r4]pim
[r4-pim]static-rp 10.0.11.11
[r5]pim
[r5-pim]static-rp 10.0.11.11
[r6]pim
[r6-pim]static-rp 10.0.11.11
配置完成后,在R1和R2上查看RP信息。
可以看到,R1(10.0.11.11)已经成为了静态RP。
4.配置动态RP
选定并设置R1和R6为C-RP,R1使用loopback 0为RP接口,R6使用loopback 1为RP接口。同时,选定并配置R3和R4为C-BSR,R3和R4都使用LoopBack 0作为C-BRS接口。
[r1]int loopback 0
[r1-LoopBack0]pim sm
[r1-LoopBack0]pim
[r1-pim]c-rp loopback 0
[r6]int loopback 1
[r6-LoopBack1]pim sm
[r6-LoopBack1]pim
[r6-pim]c-rp loopback 1[r3]int loopback 0
[r3-LoopBack0]pim sm
[r3-LoopBack0]pim
[r3-pim]c-bsr loopback 0
[r4]int loopback 0
[r4-LoopBack0]pim sm
[r4-LoopBack0]pim
[r4-pim]c-bsr loopback 0
配置完成后,在R1上查看RP信息和BSR信息。
[r1]display pim rp-info
VPN-Instance: public net
PIM-SM BSR RP Number:2
Group/MaskLen: 224.0.0.0/4
RP: 10.0.1.1 (local)
Priority: 0
Uptime: 00:01:57
Expires: 00:01:53Group/MaskLen: 224.0.0.0/4
RP: 10.0.6.6
Priority: 0
Uptime: 00:01:57
Expires: 00:01:53
PIM SM static RP Number:1
Static RP: 10.0.11.11 (local)
[r1]display pim rp-info 224.1.1.1
VPN-Instance: public net
BSR RP Address is: 10.0.6.6
Priority: 0
Uptime: 00:04:53
Expires: 00:01:57
Static RP Address is: 10.0.11.11
RP mapping for this group is: 10.0.6.6
[r1]display pim bsr-info
VPN-Instance: public net
Elected AdminScoped BSR Count: 0
Elected BSR Address: 10.0.4.4
Priority: 0
Hash mask length: 30
State: Accept Preferred
Scope: Not scoped
Uptime: 00:05:56
Expires: 00:01:14
C-RP Count: 2
可以看到,R1和R6的RP优先级的值在缺省情况下都为0。当静态RP和动态RP同时存在时,动态RP优先。在优先级和Hash值的掩码长度相同的情况下,IP地址较大的C-RP(R6)被选为了RP。另外,C-BSR优先级相同的情况下,IP地址较大的R4或为了BSR。
通过修改优先级,可以控制RP的选举。
[r6]pim
[r6-pim]c-rp priority 10
配置完成后,重新在R1上查看RP的信息。
<r1>display pim rp-info 224.1.1.1
VPN-Instance: public net
BSR RP Address is: 10.0.1.1
Priority: 0
Uptime: 00:21:01
Expires: 00:01:49
Static RP Address is: 10.0.11.11
RP mapping for this group is: 10.0.1.1 (local host)
可以看到,当R6的RP优先级的值调整为10(数值越小优先级越高)时,优先级较高的R1成为了RP。
5.配置Anycast RP
本网络中,若R1为RP,那么当Source-2发送组播数据,PC-2接收时,组播源端DR(R5)产生的注册消息和用户端DR(R6)产生的加入消息都要发送给远处的R1,另外,组播数据也要经历R5-R1-R6的绕行路径,浪费了链路带宽和路由器的CPU资源。在这种情况下,配置Anycast RP便是一个不错的解决方案。
在R1和R6上配置Anycast RP。
[r1]pim
[r1-pim]anycast-rp 10.0.1.1
[r1-pim-anycast-rp-10.0.1.1]local-address 10.0.11.11
[r1-pim-anycast-rp-10.0.1.1]peer 10.0.6.6[r6]int loopback 0
[r6-LoopBack0]pim sm
[r6-LoopBack0]pim
[r6-pim]undo c-rp loopback 1
[r6-pim]undo c-rp priority
[r6-pim]c-rp loopback 0
[r6-pim]anycast-rp 10.0.1.1
[r6-pim-anycast-rp-10.0.1.1]local-address 10.0.6.6
[r6-pim-anycast-rp-10.0.1.1]peer 10.0.11.11
配置完成后,在R1和R6上查看RP信息。
<r1>display pim rp-info 224.1.1.1
VPN-Instance: public net
BSR RP Address is: 10.0.1.1
Priority: 0
Uptime: 00:38:20
Expires: 00:01:30
Static RP Address is: 10.0.11.11
RP mapping for this group is: 10.0.1.1 (local host)[r6]display pim rp-info 225.1.1.1
VPN-Instance: public net
BSR RP Address is: 10.0.1.1Priority: 0
Uptime: 00:40:29
Expires: 00:02:25
Static RP Address is: 10.0.11.11
RP mapping for this group is: 10.0.1.1 (local host)
可以看到,RP为10.0.1.1,R1和R6都可充当RP。接下来将要验证,组播注册消息和加入消息会由就近的RP来处理。
在R1和R6上打开Debugging功能。
<r1>debugging pim register
<r1>debugging pim join-prune
<r1>terminal monitor
<r1>terminal debugging
<r6>debugging pim register
<r6>debugging pim join-prune<r6>terminal monitor
<r6>terminal debugging
配置完成后,让Source-1发送224.1.1.1组播流量,PC-1接收,查看注册消息和加入消息的收发情况。
< RI >
Mar 30 202418:36:22.634.1-05:13 RI PIM /7/REG:( public net ): PIM ver 2 REG receiving 172.16.3.254>10.0.1.1 on GigabitEthernet0/0/0(S01758)
<R1>Mar 30 2024 18:36:22.634.2-05:13R1 PIM /7/REG:( public net ): Border bit : false , Null bit : false (S01769)
< RI >
Mar 30 2024 18:36:22.634.3-05:13R1 PIM /7/REG:( public net ): Encapsulated ip src :172.16.3.1, dst :224.1.1.1, len :20 (S01787)<R1>
Mar 30 202418:36:22.634.4-05:13R1 PIM /7/REG:( public net ): Receiving register message with source 172.16.3.1, group address 224.1.1.1(S213262)< RI >
Mar 30 2024 18:36:22.634.5-05:13R1 PIM /7/REG:( public net ): Receiving register from 172.16.3.254, Store the Source DR address (S213467)
<R1>
Mar 30 2024 18:36:22.634.6-05:13 R1 PIM /7/REG:( public net ): PIM ver 2 RSP sending 10.0.1.1>172.16.3.254 on GigabitEthernet0/0/0(S01624)
...
<R1>
Mar 30 2024 18:36:42.134.3-05:13R1 PIM /7/JP:( public net ): Group :224.1.1.1/32--- I join 0 prune (P013107)
<R1>
Mar 30 202418:36:42.134.4-05:13 RI PIM /7/JP:( public net ): Join :172.16.3.1/32 S (P013117)
......
<R6>
Mar 30 2024 18:36:25.175.1-05:13R6 PIM /7/REG:( public net ): PIM ver 2 REG receiving 10.0.11.11->10.0.6.6 on GigabitEthernet0/0/2 (S01758)<R6>
Mar 30 202418:36:25.175.2-05:13R6 PIM /7/REG:( public net ): Border bit : false , Null bit : false (S01769)
<R6>
Mar 30 2024 18:36:25.175.3-05:13R6 PIM /7/REG:( public net ): Encapsulated ip src :172.16.3.1, dst :224.1.1.1, len :20
(S01787)......
从上面的显示信息中可以看到源端DR(172.16.3.254)发送给R1的注册消息,以及用户端DR(R1)发送给R1的组播加入消息。另外还可以看到,R1将注册报文重新封装后发送给了Anycast RP的对等体R6,以便共享组播源信息。
当Source-2发送225.1.1.1组播数据,PC-2接收时,类似于上面的实验观察将表明,组播注册消息和加入消息都会就近发送给R6处理。
二: RPF校验
原理概述
所谓 RPF ( Reverse Path Forwarding )校验,就是指在基于 Source-Based Tree 的组播网络(例如 PIM-DM 网络)中路由器通过查找去往组播源的最优单播路由来判断所收到的组播数据是否来源于"正确的"上游接口。某一路由器去往某一组播源的最优单播路由所对应的出接口称为该路由器上关于该组播源的 RPF 接口。一台路由器从某一接口收到一个组播数据后,如果发现该接口不是相应组播源的 RPF 接口,就意味着 RPF 校验失败,所收到的组播数据将被丢弃;如果发现该接口正是相应组播源的 RPF 接口,就表明 RPF 校验通过,所收到的组播数据将被进行后续处理。
正是因为有了 RPF 校验机制,基于 Source-Based Tree 的组播网络中所生成的组播树才能是一棵 SPT ( Shortest Path Tree ),同时, RPF 校验机制也防止了组播数据在转发过程中出现重复报文及流量环路的情况。另外, RPF 校验过程中所使用的单播路由可以来源于任何一种单播路由协议,并不依赖于某一特定的单播路由协议。
当然,为了某些特殊的需要, RPF 接口也是可以被人为修改的。如果路由器上配置了组播静态路由,则 RPF 校验将首先依据组播静态路由而非单播路由。通过配置组播静态路由,可以在当前路由器上为特定的组播源人为指定一个 RPF 。组播静态路由只在所配置的路由器上才有效,不会以任何方式传递给其他路由器。
实验目的
理解 RPF 的原理和作用
掌握组播静态路由的配置方法
实验内容
实验拓扑如图所示。本实验网络包含了4台路由器、一台交换机、两台组播服务器和两台终端电脑,全网运行 OSPF ,并且部署了 PIM - DM 。组播服务器 Source -1存储的是学习视频,Source -2存储的是电影视频, PC-1需要从 Source-1接收学习视频, PC-2需要从 Source-2接收电影视频。网络管理员需要在R4上配置组播静态路由,以实现对组播流量分布的优化。
实验拓扑
1.基本配置
根据拓扑图进行相应的基本配置,并用ping命令检测R1与R2之间的连通性。
其余网段的连通性测试过程在此省略。
配置组播服务器Source-1的组播IP地址为224.1.1.1,组播MAC地址为01-00-5E-01-01-01,如图所示。
配置组播服务器Source-2的组播IP地址为225.1.1.1,组播MAC地址为01-00-5E-02-02-02,如图所示。
2.配置IGP
在每台路由器上配置OSPF协议。
[r1]ospf 1
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255[r2]ospf 1
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255[r3]ospf 1
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 20.0.1.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255[r4]ospf 1
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255[r4-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
配置完成后,查看R1的路由表。
可以看到,R1已经获得了所有网段的路由信息。至此,网络已经通过了OSPF实现了互通。
3.配置PIM-DM
在所有路由器上开启组播功能,并在每台路由器的每个接口下配置命令pim dm,除此之外,还要在R4的G0/0/2接口下使能IGMP。
[r1]multicast routing-enable
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]pim dm
[r1-GigabitEthernet0/0/0]int g0/0/1
[r1-GigabitEthernet0/0/1]pim dm
[r1-GigabitEthernet0/0/1]int g0/0/2
[r1-GigabitEthernet0/0/2]pim dm[r2]multicast routing-enable
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]pim dm
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]pim dm
[r3]multicast routing-enable
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]pim dm
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]pim dm
[r3-GigabitEthernet0/0/1]int g0/0/2
[r3-GigabitEthernet0/0/2]pim dm
[r4]multicast routing-enable
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]pim dm
[r4-GigabitEthernet0/0/0]int g0/0/1
[r4-GigabitEthernet0/0/1]pim dm
[r4-GigabitEthernet0/0/1]int g0/0/2
[r4-GigabitEthernet0/0/2]pim dm
[r4-GigabitEthernet0/0/2]igmp enable
配置完成后,查看R1的PIM邻居信息。
可以看到,R1与R2和R3都已成功建立了PIM邻居关系。
4.RPF校验过程
由于网络部署了 PIM-DM ,所以R1在接收到 Source-1发送的组播数据后,会通过它的每个 PIM - DM 接口转发组播数据。类似地,R2和R3也会将接收到的组播数据通过每个 PIM-DM 接口继续转发,这样一来,R4就会接收到两份来自不同接口的相同的组播数据。
在R4上打开 Debug 功能。
<r4>debugging pim join-prune
<r4>terminal monitor
<r4>terminal debugging
配置完成后,先让 PC-1加入组播组224.1.1.1,然后在 Source-1上发送组播地址为224.1.1.1的组播视频流。
<r4>
Mar 30 2024 19:48:08.615.1-08:00 r4 PIM/7/JP:(public net): PIM ver 2 JP sending
10.0.34.4 -> 224.0.0.13 on GigabitEthernet0/0/0 (P013091)
<r4>
Mar 30 2024 19:48:08.615.2-08:00 r4 PIM/7/JP:(public net): Upstream 10.0.34.3, G
roups 1, Holdtime 0 (P013097)
<r4>
Mar 30 2024 19:48:08.615.3-08:00 r4 PIM/7/JP:(public net): Group: 224.1.1.1/32 -
-- 1 join 0 prune (P013107)
<r4>
Mar 30 2024 19:48:08.615.4-08:00 r4 PIM/7/JP:(public net): Join: 172.16.1.1/32
(P013117)
<r4>
Mar 30 2024 19:49:09.215.1-08:00 r4 PIM/7/JP:(public net): PIM ver 2 JP sending
10.0.24.4 -> 224.0.0.13 on GigabitEthernet0/0/1 (P013091)
<r4>
Mar 30 2024 19:49:09.215.2-08:00 r4 PIM/7/JP:(public net): Upstream 10.0.24.2, G
roups 1, Holdtime 180 (P013097)
<r4>
Mar 30 2024 19:49:09.215.3-08:00 r4 PIM/7/JP:(public net): Group: 224.1.1.1/32 -
-- 1 join 0 prune (P013107)
<r4>
Mar 30 2024 19:49:09.215.4-08:00 r4 PIM/7/JP:(public net): Join: 172.16.1.1/32
(P013117)
可以看到,R4向R2发送了裁剪消息,使R2不再向R4转发该组播组的数据包。后来R4又收到了来自R2的裁剪消息,因为如果R4将来自R3的组播数据包又转发给R2,R2再转发给R1,这样就会形成组播环路,所以R2与R4之间互相发送裁剪消息,避免了重复包与组播环路的问题。
路由器之所以会发送裁剪消息避免重复包和环路问题,是由于 PIM-DM 具有 RPF 校验功能。路由器如果从非 RPF 接口收到了组播数据包,就会立即从该接口发送裁剪消息。在R4上可以观察到关于组播源172.16.1.1的RPF接口。
可以看到,对于R4来说,关于组播源172.16.1.1的 RPF 接口为 GE 0/0/0、 RPF邻居为R3(10.0.34.3)。 RPF 校验将依据如下顺序确定出 RPF 接口:组播静态路由、协议优先级的值最小的路由、Cost最小的路由、下一跳IP地址最大的路由。
在R4上查看单播路由表(注:R4上现在还没有配置组播静态路由)。
可以看到,R4去往组播源172.16.1.1的路由有两条,它们的协议优先级和 Cost 都是一样的。根据 RPF 校验规则,确定出来的R4的 RPF 接口应该是GE0/0/0,因为该接口对应的下一跳 IP 地址(10.0.34.3)大于接口 GE 0/0/1对应的下一跳 IP 地址(10.0.24.2)。最后,通过裁剪,组播转发路径将会是: Source -1>R1>R3>R4> PC -1。在R2上查看 RPF 接口。
在R2上查看RPF接口。
从上面的显示信息可知,R2上关于组播源172.16.1.1的 RPF 接口是 GE 0/0/0, RPF 邻居为R1(10.0.12.1)。
每台路由器上对于一个特定的组播源都只有唯一一个 RPF 接口,如果来自该组播源的组播数据包不是从这个 RPF 接口收到的话,将会被直接丢弃。
5.配置组播静态路由。
本网络中, Source -1使用组播地址224.1.1.1, Source-2使用组播地址225.1.1.1,二者同时发送组播视频流量, PC-1加入组播组224.1.1.1, PC-2加入组播组225.1.1.1。在这样的情况下,两个组播源发送的组播数据都会通过R3转发给R4。为了减轻R3的一部分负担,管理员可以在R4上配置组播静态路由,使得来自 Source-1的组播流量由R2转发给R4。
在R4上配置组播静态路由,修改关于组播源172.16.1.1的 RPF 接口。
[r4]ip rpf-route-static 172.16.1.0 24 10.0.24.2
配置完成后,在R4上查看关于组播源172.16.1.1的 RPF 接口。
可以看到,R4上关于组播源172.16.1.1的 RPF 接口已经变成了 GE 0/0/1。
让 PC-1加入组播组224.1.1.1, PC-2加入组播组225.1.1.1后,让 Source-1和 Source-2同时发送组播视频,并在R4的 GE 0/0/1接口查看报文情况,如图所示。
R4的G0/0/1接口报文情况
可以看到,R4的 GE 0/0/0接口接收到的是组播地址为225.1.1.1的 UDP 组播数据流。至此,学习视频流量的转发路径为: Source-1>R1>R2>R4> PC-1,电影视频流量的转发路径为:Source -2>R3>R4>PC-2,R3上的流量负担得以减轻,实现了组播流量分布的优化。