【IP组播】PIM-SM的RP、RPF校验

目录

一: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 : 25       

Destination/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:53

Group/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.1

     Priority: 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上的流量负担得以减轻,实现了组播流量分布的优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/505598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos7.5安装gitlab-runner,配置CI/CD流水线

一般不建议gitlab-server和gitlab-runner装在同一台服务器 第一步&#xff1a;安装gitlab-runner,最好和gitlab实例版本一致 # 下载官方gitlab-runner安装脚本 curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | s…

springboot简历系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;简历系统当然也不能排除在外。简历系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用…

Sui现已推出共享对象删除功能

临时共享对象是Sui的一项新功能&#xff0c;使开发人员能够删除共享对象。这项新功能增加了开发人员可用的工具集&#xff0c;以及他们与共享对象交互的方式&#xff0c;提升了成本效率和对象管理的表达能力。 启用共享对象的临时创建和随后的删除功能&#xff0c;一旦其用途达…

vCenter 提示 Root user password expired 解决办法

vCenter root 密码过期告警 vCenter 一般部署为一台虚拟机&#xff0c;该 root 用户是 vCenter 虚拟机SSH登录的用户&#xff0c;以及 vcenter VAMI的登录用户&#xff0c;该密码默认过期时间为90天。 vCenter涉及多个登录界面&#xff0c;本次提示root密码过期的用户涉及后两…

【MySQL】聊聊全表查询会不会把数据库内存打爆

是实际的开发中&#xff0c;可能因为误操作。可能会执行一个全表扫描的SQL&#xff0c;如果这个表的数据比较大&#xff0c;比如10G&#xff0c;但是数据库内存8G &#xff0c;会不会将这个数据库内存打爆。带着这个问题&#xff0c;我们来深入学习下。其实主要就是一个server层…

echarts 图表/SVG 图片指定位置截取

echarts 图表/SVG 图片指定位置截取 1.前期准备2.图片截取3.关于drawImage参数 需求&#xff1a;如下图所示&#xff0c;需要固定头部legend信息 1.前期准备 echarts dom渲染容器 <div :id"barchart id" class"charts" ref"barchart">&…

1695. 删除子数组的最大得分-力扣(滑动窗口)

给你一个正整数数组 nums &#xff0c;请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子数组可获得的 最大得分 。 如果数组 b 是数组 a 的一个连续子序列&#xff0c;即如果它等于 a[l],a[l1],…,a[r] &#xff0…

Map和List输入的两种不同json格式

一、List to json格式 [{"type":"top.lovemom.pojo.ESP8266","devicePosition":"家里的阳台","deviceRemark":"我的设备1","publicIp":"127.0.0.1","userEmail":"123bggb.to…

Verilog基础【一】

文章目录 1.1 第一个verilog设计1.2 Verilog 简介1.3 Verilog环境搭建1.4 Verilog 设计方法设计方法设计流程 2.1 Verilog 基础语法格式注释标识符与关键字 2.2 Verilog 数值表示数值种类整数数值表示方法实数表示方法十进制&#xff1a;科学计数法&#xff1a; 字符串表示方法…

【论文极速读】 指令微调BLIP:一种对指令微调敏感的Q-Former设计

【论文极速读】 指令微调BLIP&#xff1a;一种对指令微调敏感的Q-Former设计 FesianXu 20240330 at Tencent WeChat search team 前言 之前笔者在[1]中曾经介绍过BLIP2&#xff0c;其采用Q-Former的方式融合了多模态视觉信息和LLM&#xff0c;本文作者想要简单介绍一个在BLIP2…

java多数据源几种实现方式以及demo

提示&#xff1a;多数据源实现方式、多数据源的使用场景。AbstractRoutingDataSource、DynamicDataSource框架、mybatisplus的Intercepter插件、java中多数据源的几种实现方式、mybatisPlus的插件实现多数据源 文章目录 前言一、多数据源的几种实现方式二、使用场景三、核心原理…

k8s1.28.8版本配置Alertmanager报警方式(邮件,企业微信)

文章目录 总结部署流程 Alertmanager 三大核心1. 分组告警2. 告警抑制3. 告警静默 报警过滤静默通知方案一&#xff1a;方案二&#xff1a; 抑制报警规则案例一 参考文档 自定义路由告警&#xff0c;分来自不同路由的告警&#xff0c;艾特不同的人员进行区分修改 alertmanager …

中缀转后缀表达式

思路分析 遇到数字&#xff0c;直接输出遇到符号 栈为空&#xff0c;符号直接入栈若为 ( &#xff0c;则直接入栈用当前符号和栈顶符号比较优先级 当前符号 > 栈顶符号&#xff0c;当前符号直接入栈&#xff0c;结束当前符号 < 栈顶符号,栈顶符号出栈并输出&#xff0c;…

verilog中的testbench语句——display,fopen,fread,fwrite——更新中

一、fopen bmp_file_read $fopen("../pic/picture.bmp","rb"); 要注意这类操作文件的函数&#xff0c;在vivado2018自带的仿真软件里&#xff0c;不综合直接仿真&#xff0c;它的当前文件夹如图所示。 一、fwrite $fwrite(bmp_file_write,"%c"…

【Effective Web】页面优化

页面优化 页面渲染流程 JavaScript 》 Style 》 Layout 》 Paint 》 Composite 首先js做了一些逻辑&#xff0c;触发了样式变化&#xff0c;style计算好这些变化后&#xff0c;把影响的dom元素进行重新布局&#xff08;layout&#xff09;,再画到画布中&#xff08;Paint&am…

【数据结构与算法】二叉树遍历、判断和 diff 算法

遍历 深度优先遍历 function Node(value) {this.value valuethis.left nullthis.right null }let a new Node(a) let b new Node(b) let c new Node(c) let d new Node(d) let e new Node(e) let f new Node(f) let g new Node(g) a.left c a.right b c.l…

如何提升公众号搜索量?分享内部运营的5步优化技术!

最近一直有自媒体同行朋友在写关于公众号的内容&#xff0c;很多都说公众号现在没得玩了。其实&#xff0c;在运营自媒体上面&#xff0c;思维不通&#xff0c;技术不到位&#xff0c;哪个平台都不适合你玩。 想要在自媒体上面运营变现&#xff0c;一定不要先点击广告变现&…

【二分查找】查找数列中数第一次出现的编号

一道巩固二分查找知识的题&#xff0c;非常简单&#xff0c;一起做一下吧 题目&#xff1a; 答案&#xff1a; #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N1000010;int n,m; int q[N];bool isBlue(int num…

7种2024年算法优化BP,实现回归,单/多变量输入,单/多步预测功能,机器学习预测全家桶再更新!...

截止到本期MATLAB机器学习预测全家桶&#xff0c;一共发了19篇关于机器学习预测代码的文章。算上这一篇&#xff0c;一共20篇&#xff01;参考文章如下&#xff1a; 1.五花八门的机器学习预测&#xff1f;一篇搞定不行吗&#xff1f; 2.机器学习预测全家桶&#xff0c;多步预测…

中文乱码 一文讲解 字符集和字符编码 不再困惑(有源码)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 这可能是应用级程序员最困惑的…