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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【洛谷 P8695】[蓝桥杯 2019 国 AC] 轨道炮 题解(映射+模拟+暴力枚举+桶排序)

[蓝桥杯 2019 国 AC] 轨道炮 题目描述 小明在玩一款战争游戏。地图上一共有 N N N 个敌方单位&#xff0c;可以看作 2D 平面上的点。其中第 i i i 个单位在 0 0 0 时刻的位置是 ( X i , Y i ) (X_i, Y_i) (Xi​,Yi​)&#xff0c;方向是 D i D_i Di​ (上下左右之一, 用…

基于Spring Boot的餐厅点餐系统

基于Spring Boot的餐厅点餐系统 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 部分系统展示 管理员登录界面 用户注册登录界面 …

股权激励和期权激励对比辨析

文章目录 概念定义 收益方式 风险评估 应用和分析 股权激励和期权激励&#xff0c;两者的区别是什么&#xff0c;本文就来梳理对比一下。 概念定义 股权激励&#xff0c;是指上市公司以本公司股票为标的&#xff0c;对其董事、高级管理人员及其他员工进行的长期性激励。取得…

JVM专题——类文件加载

本文部分内容节选自Java Guide和《深入理解Java虚拟机》, Java Guide地址: https://javaguide.cn/java/jvm/class-loading-process.html &#x1f680; 基础&#xff08;上&#xff09; → &#x1f680; 基础&#xff08;中&#xff09; → &#x1f680;基础&#xff08;下&a…

C++从入门到精通——入门知识

1. C关键字(C98) C总计63个关键字&#xff0c;C语言32个关键字 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称都将存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的就是对标识符的名…

ST表---算法

相当于二分的思想&#xff0c;一直比较最值 ST的创建 现在创建成功&#xff0c;是应该如何查询的问题 ST表的查询 虽然这两区间有重叠&#xff0c;但是可以一个往前数&#xff0c;一个往后数&#xff0c;互不影响 时间复杂度 创建st表的复杂度为n*logn 使用时的复杂度为O(…

【机器学习】K-近邻算法(KNN)介绍、应用及文本分类实现

一、引言 1.1 K-近邻算法&#xff08;KNN&#xff09;的基本概念 K-近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种基于实例的学习算法&#xff0c;它利用训练数据集中与待分类样本最相似的K个样本的类别来判断待分类样本所属的类别。KNN算法…

Golang 哈希表底层实现原理

1、本文讨论Golang的哈希表 Golang哈希表的实现&#xff0c;底层数据结构是数组单链表&#xff0c;链表节点由8个key、value和键的高八位组成的。为了方便理解&#xff0c;先简单看一个图快速理解。 我们来看一下Golang哈希表的结构体定义 简单介绍一下结构体中几个关键的…

.NET CORE 分布式事务(四) CAP实现最终一致性

目录 引言&#xff1a; 1.0 最终一致性介绍 2.0 CAP 2.0 架构预览 3.0 .NET CORE 结合CAP实现最终一致性分布式事务 3.1 准备工作(数据库&#xff0c;本文使用的是MySql) 3.1.1 数据模型 3.1.2 DbContext 3.1.3 数据库最终生成 3.2 Nuget引入 3.3 appsettings.json …

【漏洞复现】极简云 download.php 接口处存在任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

OpenHarmony实战:小型系统平台驱动移植

在这一步&#xff0c;我们会在源码目录//device/vendor_name/soc_name/drivers目录下创建平台驱动。 建议的目录结构&#xff1a; device ├── vendor_name │ ├── drivers │ │ │ ├── common │ │ │ ├── Kconfig # 厂商驱动内核菜单入口 │ …

武汉星起航电子商务公司领航跨境电商新纪元,助力品牌走向全球

在全球经济一体化的时代背景下&#xff0c;跨境电商正成为推动国际贸易增长的重要力量。武汉星起航电子商务有限公司&#xff0c;作为一家专注于提供一站式解决方案的跨境电商服务商&#xff0c;凭借其丰富的实战经验和专业团队&#xff0c;在行业中取得了令人瞩目的成绩。 自…

前端学习<四>JavaScript基础——02-JavaScript入门:hello world

开始写第一行 JavaScript&#xff1a;hello world JS 代码的书写位置在哪里呢&#xff1f;这个问题&#xff0c;也可以理解成&#xff1a;引入 JS 代码&#xff0c;有哪几种方式&#xff1f;有三种方式&#xff1a;&#xff08;和 CSS 的引入方式类似&#xff09; 行内式&…

前端(动态雪景背景+动态蝴蝶)

1.CSS样式 <style>html, body, a, div, span, table, tr, td, strong, ul, ol, li, h1, h2, h3, p, input {font-weight: inherit;font-size: inherit;list-style: none;border-spacing: 0;border: 0;border-collapse: collapse;text-decoration: none;padding: 0;margi…

014——超声波模块驱动开发Plus(基于I.MX6uLL、SR04和poll机制)

目录 一、基础知识 二、分析为什么打印会影响中断 三、驱动程序 四、应用程序 五、验证及其它 一、基础知识 013——超声波模块驱动开发&#xff08;基于I.MX6uLL与SR04&#xff09;-CSDN博客 二、分析为什么打印会影响中断 asmlinkage __visible int printk(const ch…

戴尔电脑Dell SupportAssist占用内存高,卸载Dell SupportAssist

咨询戴尔客服了解到&#xff0c;SupportAssist是机器出厂自带的一款应用&#xff0c;主要的功能是可以检查驱动更新以及做一些硬件方面的健康检测&#xff0c;有时候后台运行可能会导致进程占用内存比较大&#xff0c;导致访问被的应用崩溃。 咨询卸载不影响之后&#xff0c;然…

【Python系列】 yaml中写入数据

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

使用pytorch构建一个初级的无监督的GAN网络模型

在这个系列中将系统的构建GAN及其相关的一些变种模型&#xff0c;来了解GAN的基本原理。本片为此系列的第一篇&#xff0c;实现起来很简单&#xff0c;所以不要期待有很好的效果出来。 第一篇我们搭建一个无监督的可以生成数字 (0-9) 手写图像的 GAN&#xff0c;使用MINIST数据…

BugKu:Simple SSTI

1.进入此题 2.查看源代码 可以知道要传入一个名为flag的参数&#xff0c;又说我们经常设置一个secret_key 3.flask模版注入 /?flag{{config.SECRET_KEY}} 4.学有所思 4.1 什么是flask&#xff1f; flask是用python编写的一个轻量web开发框架 4.2 SSTI成因&#xff08;SST…

RIP协议(路由信息协议)

一、RIP协议概述 RIP协议&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;即根据跳数来度量路由开销&#xff0c;进行路由选择。 相比于其它路由协议&#xff08;如OSPF、ISIS等&#xff09;&#…