当前位置: 首页 > news >正文

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

相关文章:

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

目录 一&#xff1a;PIM-SM的RP 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-SM和静态RP 4.配置动态RP 5.配置Anycast RP 二&#xff1a; RPF校验 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-DM 4.RPF校…...

前端代码规范-命名规范

命名规则 camelCase&#xff08;小驼峰式命名法 —— 首字母小写&#xff09;PascalCase&#xff08;大驼峰式命名法 —— 首字母大写&#xff09;kebab-case&#xff08;短横线连接式&#xff09;Snake&#xff08;下划线连接式&#xff09; 项目名称 项目名 全部采用小写方…...

移动端APP测试常见面试题精析

现在面试测试职位&#xff0c;要求非常全面&#xff0c;那么APP测试一般需要哪些技术呢&#xff1f;下面总结了APP测试常见面试题&#xff1a; 1.Android四大组件? Activity:描述UI&#xff0c;并且处理用户与机器屏幕的交互。应用程序中&#xff0c;一个Activity就相当于手…...

报错[Vue warn]: $listeners is readonly. $attrs is readonly.怎么解决?

代码也没有逻辑错误&#xff0c;但是报错 [Vue warn]: $listeners is readonly. $attrs is readonly. 情况1&#xff1a;多处声明了new Vue&#xff0c;解决方案&#xff1a;删除一个&#xff0c;用全局变量引用同一个Vue 情况2&#xff1a;import Vue from Vue;第二个Vue首字…...

android 14 apexd分析(1)apexd bootstrap

Apex的由来,我们都知道普通的apk我们可以通过应用商店playstore等进行更新,apex的引入是google希望也能通过playstore更新bin文件.so etc配置文件等类型文件. 这些文件的安装实际通过apexd来进行,现在我们来解析一下apexd, apexd的启动分为两个阶段,bootstrap和普通apexd启…...

C++ 中的 vector 的模拟实现【代码纯享】

文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中&#xff0c;vector 是一个非常重要的容器&#xff0c;它提供了动态数组的功能。在本篇博客中&#xff0c;我们将尝试模拟实现…...

UE4 方块排序动画

【动画效果】 入动画&#xff1a; 出动画&#xff1a; 【分析】 入动画&#xff1a;方块动画排序方式为Z字形&#xff0c;堆砌方向为X和Y轴向 出动画&#xff1a;方块动画排序方式为随机 【关键蓝图】 1.构建方块砌体 2.入/出动画...

网络与并发编程(一)

并发编程介绍_串行_并行_并发的区别 串行、并行与并发的区别 串行(serial)&#xff1a;一个CPU上&#xff0c;按顺序完成多个任务并行(parallelism)&#xff1a;指的是任务数小于等于cpu核数&#xff0c;即任务真的是一起执行的并发(concurrency)&#xff1a;一个CPU采用时间…...

超详细工具Navicat安装教程

Navicat是一款功能强大的数据库管理工具&#xff0c;可用于管理多种类型的数据库&#xff0c;包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。以下是Navicat工具的一些主要特点和功能&#xff1a; 一.功能介绍 跨平台支持 多种数据库支持 直观的用户界面 数据…...

RN在android/ios手机剪切图片的操作

之前写过一个React Native调用摄像头画面及拍照和保存图片到相册全流程但是这个仅限于调用摄像头拍照并保存图片,今天再写一个版本的操作,这个博客目前实现的有三点操作: 调用摄像头拍照对照片进行剪切从相册选取图片 功能上面来说有两点: 点击按钮可以对摄像头进行拍照,拍完照…...

C语言 | Leetcode C语言题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; char * convert(char * s, int numRows){int n strlen(s), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;char * ans (char *)malloc(sizeof(char) * (n 1));int pos 0;for (int i 0; i < r; i) { // 枚举矩阵的…...

C 回调函数的两种使用方法

对回调&#xff08;callback&#xff09;函数的一点粗陋理解&#xff0c;在我小时候&#xff0c;隔壁村有家月饼小作坊&#xff08;只在中秋那段时间手工制作一些月饼出售&#xff0c;后来好像不做了&#xff09;&#xff0c;做出的月饼是那种很传统很经典的款式&#xff0c;里…...

医院云HIS系统源码,二级医院、专科医院his系统源码,经扩展后能够应用于医联体/医共体

基于云计算技术的B/S架构的HIS系统&#xff0c;为医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统&#xff0c;实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。 系统利用云计算平台的技术优势&#xff0c;建立统一的云HIS、云病历、云LIS&#xff0…...

NineData云原生智能数据管理平台新功能发布|2024年3月版

数据库 DevOps - 大功能升级 SQL 开发早期主要提供 SQL 窗口&#xff08;IDE&#xff09;功能&#xff0c;在产品经过将近两年时间的打磨&#xff0c;新增了大量的企业级功能&#xff0c;已经服务了上万开发者&#xff0c;覆盖了数据库设计、开发、测试、变更等生命周期的功能…...

java Web 疫苗预约管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 疫苗预约管理系统是一套完善的web设计系统&#xff0c;对理解JSP java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&#xff0c;使…...

Qt5.14.2 揭秘Qt日志神器高效诊断程序潜在隐疾

对程序员而言&#xff0c;代码中的bug往往如同无影无踪的隐疾&#xff0c;影响着程序的健康运行。而及时有效的诊断手段则是治疗这些隐疾的良药。今天&#xff0c;我们将一窥Qt日志框架QLoggingCategory的神奇功效&#xff0c;探究它如何为你的Qt应用程序构筑坚实的诊断防火墙。…...

Mac上设置环境变量PATH

一、配置文件有哪些 在Mac系统中&#xff0c;环境变量的配置文件主要包括以下几个&#xff1a; 文件名称描述/etc/paths系统级别的配置文件&#xff0c;系统启动时会加载它。/etc/profile系统级别的配置文件&#xff0c;所有用户登录时都会读取该文件。~/.bash_profile用户级别…...

Redis 全景图(1)--- 关于 Redis 的6大模块

这是我第一次尝试以长文的形式写一篇 Redis 的总结文章。这篇文章我想写很久了&#xff0c;只是一直碍于我对 Redis 的掌握没有那么的好&#xff0c;因此迟迟未动笔。这几天&#xff0c;我一直在看各种不同类型的 Redis 文章&#xff0c;通过阅读这些文章&#xff0c;引发了我对…...

Lambda表达式,Stream流

文章目录 Lambda表达式作用前提函数式接口特点 语法省略模式和匿名对象类的区别 Stream流思想作用三类方法获取方法单列集合(Collection[List,Set双列集合Map(不能直接获取)数组同一类型元素(Stream中的静态方法) 常见的中间方法终结方法收集方法 Optional类 Lambda表达式 作用…...

Apache Hive的基本使用语法(一)

一、数据库操作 创建数据库 create database if not exists myhive;查看数据库 use myhive; desc database myhive;创建数据库并指定hdfs存储 create database myhive2 location /myhive2;删除空数据库&#xff08;如果有表会报错&#xff09; drop database myhive;…...

Python爬虫详解:原理、常用库与实战案例

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言引言&#xff1a;一、爬虫原理1. HTTP请求与响应过程2. 常用爬虫技术 二、P…...

搭建跨境电商电商独立站如何接入1688平台API接口|通过1688API接口采集商品通过链接搜索商品下单

接口设计|接口接入 对于mall项目中商品模块的接口设计&#xff0c;大家可以参考项目的Swagger接口文档&#xff0c;以Pms开头的接口就是商品模块对应的接口。 参数说明 通用参数说明 参数不要乱传&#xff0c;否则不管成功失败都会扣费url说明……d.cn/平台/API类型/ 平台&…...

【GlobalMapper精品教程】073:像素到点(Pixels-to-Points)从无人机图像轻松生成点云

文章目录 一、工具介绍二、生成点云三、生成正射四、生成3D模型五、注意事项一、工具介绍 Global Mapper v19引入的新的像素到点工具使用摄影测量原理,从重叠图像生成高密度点云、正射影像及三维模型。它使LiDAR模块成为已经功能很强大的的必备Global Mapper扩展功能。 打开…...

论文复现1:Mobilealoha

abstract:从人类演示中进行的模仿学习在机器人技术中表现出了令人印象深刻的表现。然而,大多数结果都集中在桌面操作上,缺乏一般有用任务所需的移动性和灵活性。在这项工作中,我们开发了一种用于模仿双手且需要全身控制的移动操纵任务的系统。我们首先推出 Mobile ALOHA,这…...

pycharm复习

目录 1.基础语法 2.判断语句 3.while循环 4.函数 5.数据容器 1.基础语法 1.字面量 2.注释&#xff1a; 单行注释# 多行注释" " " " " " 3.变量&#xff1a; 变量名 变量值 print&#xff1a;输出多个结果&#x…...

【SQLSERVER】批量导出所有作业或链接脚本

1.在Microsoft SQL Server Management Studio中选择–>视图(v)–>对象资源管理器详细信息(F7) 2.SSMS图形界面&#xff0c;左侧是“对象资源管理器”&#xff0c;右侧是“对象资源管理器详细信息”界面 3.左侧的“对象资源管理器”界面–>点击“SQLSserver代理”–…...

函数参数缺省和内联函数【C++】

文章目录 函数参数缺省函数参数缺省的条件和要求 内联函数内联函数的工作原理内联函数的定义方法内联函数的要求解决方法&#xff1a;直接在.h中定义内联函数的函数体 内联函数再Debug模式下默认是不展开的 函数参数缺省 顾名思义&#xff1a;可以少传一个/多个参数给函数&…...

javaWeb城市公交查询系统的设计与实现

一、选题背景 随着低碳生活的普及&#xff0c;人们更倾向于低碳环保的出行方式&#xff0c;完善公交系统无疑具有重要意义。公交是居民日常生活中最常使用的交通工具之一&#xff0c;伴随着我国经济繁荣和城市人口增长&#xff0c;出行工具的选择也变得越来越重要。政府在公共…...

企业案例:金蝶云星空对接旺店通·企业版

某知名化妆品企业&#xff0c;主要专注于化妆品&#xff0c;护肤品等研发&#xff0c;销售&#xff0c;生产于一体化的企业。企业的业务模式涉及比较广&#xff0c;有2B,2C和国内外电商领域。由于对内部业务流程的连贯性和数据的准确性比较关注。财务系统用的金蝶云星空&#x…...

wpsword求和操作教程

wpsword求和怎么操作&#xff1a; 1、首先&#xff0c;单纯的数据是无法求和的&#xff0c;所以我们必须要“插入”一个“表格” 2、接着将需要求和的数据填入到表格中。 3、填完后&#xff0c;进入“布局”选项卡。 4、然后打开其中的“公式” 5、在其中选择求和公式“SUM”并…...

哪些网站是用vue做的/郑州搜索引擎优化公司

五. 收到退信错误提示为"554 5.7.1 Rejected xxx.xxx.xxx.xxx found in dnsbl.sorbs.net"&#xff0c;怎么办&#xff1f;这是因为收件人所在的邮件服务器使用RBL过滤垃圾邮件&#xff0c;而您的邮件服务器IP地址在RBL列表中&#xff0c;因此被拒绝了。一般此类的退信…...

私做政府网站什么罪/深圳网络推广优化

【来信】   贺老师你好&#xff0c;我是一名普通二本网络工程专业的大三学生。眼看着大三上学期又要结束了&#xff0c;非常的焦虑。之前一直没有好好学习&#xff0c;学的东西少之又少&#xff0c;大三下学期结束就要开始找实习了。学校开了java基础课程&#xff0c;这学期就…...

装修公司网站开发/中国营销网

C操作符的优先级 C操作符的优先级 操作符及其结合性 功能 用法 L L L:: :: ::全局作用域 类作用域 名字空间作用域::name class::name namespace::nameL L L L L. -> [] () ()成员选择 成员选择 下标 函数调用 类型构造object.member pointer->member variable[exp…...

在什么网站上可以做免费广告/强化防疫指导

什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”&#xff08;viewport&#xff09;中&#xff0c;通常这个虚拟的“窗口”&#xff08;viewport&#xff09;比屏幕宽&#xff0c;这样就不用把每个网页挤到很小的窗口中&#xff08;这样会破坏没有针对手机浏览器优化的…...

厦门网站建设外包/中国国家人事人才培训网证书查询

某些查询条件确定范围between and&#xff0c;not between and确定集合in&#xff0c;not in字符匹配like&#xff0c;not like空值is null&#xff0c;is not null多重条件and&#xff0c;or&#xff0c;not1。确定范围 查询年龄在&#xff08;不在&#xff09;21到24之间的学…...

2017还有人做网站吗/百度24小时人工电话

在命令行下运行 msdtc -uninstall &#xff0c;卸载 msdtc 服务&#xff1b; 再运行 msdtc -install &#xff0c;安装 msdtc 服务转载于:https://www.cnblogs.com/wlwjc/articles/1690230.html...