【IP 组播】PIM-SM

目录

原理概述

实验目的

实验内容

实验拓扑

1.基本配置

2.配置IGP

3.配置PIM-SM

4.用户端DR与组播源端DR

5.从RPT切换到SPT

6.配置PIM-Silent接口


原理概述

PIM-SM 是一种基于Group-Shared Tree 的组播路由协议,与 PIM-DM 不同,它适合于组播组成员分布广泛而稀疏的大型网络。 Group-Shared Tree 分为两种:一种被称为Steiner Tree ,另一种被称为 Rendezvous Point Tree (简称 RPT ), PIM-SM 采用的组播树是 RPT。

RPT 是一棵以汇聚点 RP ( Rendezvous Point )路由器为根,以直连有组成员的路由器为叶子的组播树。 RP 是一个组播供求信息的汇聚中心,它需要处理组播源端 DR ( Designated Router )发送的组播注册消息及用户端 DR 发送的组播加入消息。

RP 是 PIM-SM 网络中的一台至关重要的路由器,网络中的所有 PIM 路由器都必须知道谁是 RP 。当网络中出现活跃的组播源(组播源向某组播组发送第一个组播数据)时,组播源端 DR 会将此组播数据封装在注册消息中并以单播形式发往 RP , RP 收到此消息后会立即创建相应的( S , G )组播路由表项。当网络中出现活跃的组播用户(用户主机通过 IGMP 加入某组播组 G )时,用户端 DR 会向 RP 发送加入组播组 G 的消息,在该消息去往 RP 的路径上的每台路由器都创建(*, G )表项,由此便生成了一棵以 RP 为根的 RPT 。当网络中有活跃的组播用户时,组播报文先被封装在单播报文中从组播源发往 RP ,然后 RP 再将组播报文沿 RPT 转发给组播用户。若网络中没有活跃的组播用户时,组播数据到达 RP 后就停止了,不会再向下转发。

显然, RPT 并非是一棵 SPT ( Shortest Path Tree ),经由 RP 的转发路径可能不是从组播源到组播用户之间的最短路径。为了提高组播转发效率, PIM-SM 在实际部署时,通常都会允许从 RPT 切换到 SPT 。

PIM 路由器会通过 PIM-Hello 消息来发现 PIM 邻居、协调各项协议参数、维护邻居关系。 PIM-Hello 消息的目的 IP 地址是组播地址:224.0.0.13(表示同一网段中的所有 PIM 路由器),源地址为发送接口的 IP 地址, TTL 值为1。另外, PIM-Hello 的一个重要作用就是用来选举 DR 。在 PIM-SM 中, DR 分为两种:组播源网段中的 DR 称为组播源端 DR ,它负责向 RP 发送组播注册消息;组成员网段中的 DR 称为用户端 DR ,它负责向 RP 发送组播加入消息。

实验目的

理解PIM-SM的应用场景

掌握PIM-SM的基本配置

理解PIM-SM中RPT到SPT的切换

理解组播源端DR和用户端DR的作用

实验内容

实验拓扑如下图所示。本实验模拟了一个公司网络场景,包含了6台路由器,3台交换机、一台组播服务器Source-1和两台终端电脑。所有路由器都运行OSPF,并且都位于区域0。管理员需要在网络中部署PIM-SM,从而实现以组播的方式向员工播放培训视频。

实验拓扑

1.基本配置

根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R2之间的连通性。

其余直连网段的连通性测试过程在此省略。

配置组播服务器Source-1的组播IP地址为224.1.1.1,组播MAC地址为01-00-5E-01-01-01,如图所示

配置Source-1

2.配置IGP

在每台路由器上配置OSPF协议。

r1ospf 1
r1-ospf-1area 0
r1-ospf-1-area-0.0.0.0network 10.0.1.0 0.0.0.255
r1-ospf-1-area-0.0.0.0network 50.0.14.0 0.0.0.255
r1-ospf-1-area-0.0.0.0network 172.16.1.0 0.0.0.255

r2ospf 1
r2-ospf-1area 0
r2-ospf-1-area-0.0.0.0network 10.0.1.0 0.0.0.255
r2-ospf-1-area-0.0.0.0network 172.16.1.0 0.0.0.255

r3ospf 1
r3-ospf-1area 0
r3-ospf-1-area-0.0.0.0network 10.0.3.3 0.0.0.0
r3-ospf-1-area-0.0.0.0network 10.0.1.0 0.0.0.255
r3-ospf-1-area-0.0.0.0network 20.0.35.0 0.0.0.255
r3-ospf-1-area-0.0.0.0network 30.0.36.0 0.0.0.255
r3-ospf-1-area-0.0.0.0network 40.0.34.0 0.0.0.255

r4ospf 1
r4-ospf-1area 0
r4-ospf-1-area-0.0.0.0network 40.0.34.0 0.0.0.255
r4-ospf-1-area-0.0.0.0network 40.0.2.0 0.0.0.255
r4-ospf-1-area-0.0.0.0network 50.0.14.0 0.0.0.255

r5ospf 1
r5-ospf-1area 0
r5-ospf-1-area-0.0.0.0network 20.0.35.0 0.0.0.255
r5-ospf-1-area-0.0.0.0network 30.0.2.0 0.0.0.255

R6ospf 1
R6-ospf-1area 0
R6-ospf-1-area-0.0.0.0network 30.0.2.0 0.0.0.255
R6-ospf-1-area-0.0.0.0network 30.0.36.0 0.0.0.255

配置完成后,查看R1的路由表。

可以看到,R1已经获得了所有网段的路由信息。至此,网络已经通过了OSPF实现了互通。

3.配置PIM-SM

在所有路由器上开启组播功能,并在每台路由器的每个接口下配置命令pim sm,除此之外,还需要在R5和R6的G0/0/0接口以及R4的G0/0/1接口下使能IGMP。

r1multicast routing-enable
r1int g0/0/0
r1-GigabitEthernet0/0/0pim sm
r1-GigabitEthernet0/0/0int g0/0/1
r1-GigabitEthernet0/0/1pim sm
r1-GigabitEthernet0/0/1int g0/0/2
r1-GigabitEthernet0/0/2pim sm

r2multicast routing-enable
r2int g0/0/0
r2-GigabitEthernet0/0/0pim sm
r2-GigabitEthernet0/0/0int g0/0/1
r2-GigabitEthernet0/0/1pim sm

r3multicast routing-enable
r3int g0/0/0
r3-GigabitEthernet0/0/0pim sm
r3-GigabitEthernet0/0/0int g0/0/1
r3-GigabitEthernet0/0/1pim sm
r3-GigabitEthernet0/0/1int g0/0/2
r3-GigabitEthernet0/0/2pim sm
r3-GigabitEthernet0/0/2int g4/0/0
r3-GigabitEthernet4/0/0pim sm

r4multicast routing-enable
r4int g0/0/0
r4-GigabitEthernet0/0/0pim sm
r4-GigabitEthernet0/0/0int g0/0/1
r4-GigabitEthernet0/0/1pim sm
r4-GigabitEthernet0/0/1igmp enable
r4-GigabitEthernet0/0/1int g0/0/2
r4-GigabitEthernet0/0/2pim sm

r5multicast routing-enable
r5int g0/0/0
r5-GigabitEthernet0/0/0pim sm
r5-GigabitEthernet0/0/0igmp enable
r5-GigabitEthernet0/0/0int g0/0/1
r5-GigabitEthernet0/0/1pim sm

R6multicast routing-enable
R6int g0/0/0
R6-GigabitEthernet0/0/0pim sm
R6-GigabitEthernet0/0/0igmp enable
R6-GigabitEthernet0/0/0int g0/0/2
R6-GigabitEthernet0/0/2pim sm

选择R3为RP节点,并在每台路由器上手工配置R3为静态RP。

r1pim
r1-pimstatic-rp 10.0.3.3

r2pim
r2-pimstatic-rp 10.0.3.3

r3pim
r3-pimstatic-rp 10.0.3.3

r4pim
r4-pimstatic-rp 10.0.3.3

r5pim
r5-pimstatic-rp 10.0.3.3

R6pim
R6-pimstatic-rp 10.0.3.3

配置完成后,查看R3的PIM邻居信息。

可以看到,R3与所有相邻的路由器都已成功建立了PIM邻居关系。

4.用户端DR与组播源端DR

本网络中,PC-2,R5、R6处于同一网段。如果PC-2希望加入组播组,则PIM-SM需要在R5和R6之间选举出一台用户端DR来发送组播加入消息,从而避免RP接收到重复的加入消息。选举DR时,首先比较DR优先级(缺省情况下优先级的值为1),若优先级一样则比较接口IP地址的大小,IP地址较大者将成为DR。

在R5、R6上查看DR信息。

可以看到,R6(30.0.2.254)现在是PC-2所在网段的DR。在PC-2上使用IGMP加入组播组224.1.1.1,在R3的G0/0/1和G0/0/2接口查看报文情况。如下图所示,可以看到,R3仅仅从G0/0/2接口收到了来自DR路由器R6的组播加入消息,而G0/0/1接口没有收到任何组播加入消息。

R3的G0/0/2接口报文情况

在R3上查看PIM路由表

可以看到,R3在收到加入消息后,其组播路由表中生成了(*,G)的组播路由条目,下游接口为G0/0/2,形成了从RP(R3)到R6的一棵RPT。

另一方面,组播源Source-1,R1,R2处于同一网段,PIM-SM需要在R1和R2之间选举出组播源端DR来向RP发送注册消息。在R1,R2上查看DR信息。

可以看到,IP地址较大的R2(172.16.1.20)目前是组播源端DR。接下来,我们可以通过修改优先级的方法来强制让R1成为组播源端DR。

r1int g0/0/0
r1-GigabitEthernet0/0/0pim hello-option dr-priority 2

配置完成后,在R1上查看DR信息。

可以看到,R1现在已经成为了组播源端DR。在Source-1上使用组播地址224.1.1.1发送组播报文,在RP路由器R3的G4/0/0接口查看接收到的注册消息,如下图所示。

蓝色的报文是Source-1发送的组播报文

DR路由器R1向RP路由器R3发送的组播注册消息

5.从RPT切换到SPT

对本网络而言,从RPT到SPT的切换过程可简单示意如下:最后一跳组播路由器R4收到来自上游路由器R3转发的组播数据包后,会查看自己的单播路由表,发现去往组播源172.16.1.1的最短路径的下一跳不是上游路由器R3,而是路由器R1,因此,R4会发起由RPT到SPT的切换。

在PC-1上使用IGMP加入组播组224.1.1.1,在R4上查看组播路由表。

可以看到,R4上生成了(*,224.1.1.1)的组播路由,上游接口是连接到RP路由器的G0/0/0接口。

在组播源发送组播地址为224.1.1.1的组播报文,当PC-1接收到组播报文后,在R4上查看组播路由表。

可以看到,R4在接收到组播数据后生成了(172.16.1.1,224.1.1.1)的组播路由,且上游接口切换到了 GE 0/0/2。切换过程中,R4会向R1发送组播加入消息,要求从R1接收组播数据,同时R4也会向R3发送剪枝消息,使R3停止向自己转发组播数据。

缺省情况下, PIM-SM 路由器会在收到第一个组播数据包后立即进行从 RPT 到 SPT 的切换。如果不希望发生切换,则可使用配置命令来禁止切换。另外,也可以设定切换阈值,实现有条件的切换。在用户端 DR 上配置了切换阈值后,只有当组播报文的速率超过阈值时,用户端 DR 才会发起切换。下面给出禁止切换的示例。

r4pim
r4-pimspt-switch-threshold infinity
<r4>display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 1 (S, G) entry

(*, 224.1.1.1)

RP: 10.0.3.3

Protocol: pim-sm, Flag: WC

UpTime: 00:10:43

Upstream interface: GigabitEthernet0/0/0

Upstream neighbor: 40.0.34.3

RPF prime neighbor: 40.0.34.3

Downstream interface(s) information:

Total number of downstreams: 1

1: GigabitEthernet0/0/1

Protocol: igmp, UpTime: 00:10:43, Expires: -

(172.16.1.1, 224.1.1.1)

RP: 10.0.3.3

Protocol: pim-sm, Flag: ACT

UpTime: 00:05:35

Upstream interface: GigabitEthernet0/0/0
Upstream neighbor: 40.0.34.3
RPF prime neighbor: 40.0.34.3

Downstream interface(s) information:

Total number of downstreams: 1

1: GigabitEthernet0/0/1

Protocol: pim-sm, UpTime: 00:05:35, Expires: -

可以看到,当配置禁止切换后,R4生成的(172.16.1.1,224.1.1.1)的组播路由的上游接口没有发生切换。

6.配置PIM-Silent接口

通常情况下,路由器直连用户主机的接口上是需要配置PIM的,但是这样的配置同时也存在着安全隐患:当恶意主机发送大量PIM-Hello报文时,有可能导致路由器瘫痪。为了避免上述情况的发生,可以在路由器直连用户主机的接口上配置PIM Slient,禁止该接口和转发任何PIM协议报文,同时,此接口上的组播转发功能及IGMP功能都不受影响。

配置R4的G0/0/1接口为PIM-Slient接口。

r4int g0/0/1
r4-GigabitEthernet0/0/1pim silent

配置完成后,查看R4的PIM接口详细信息,并在R4的G0/0/1接口查看数据包的发送

R4的G0/0/1接口的报文情况

可以看到,R4的G0/0/1接口的Slient功能已经使能,此接口不再发送PIM-Hello报文。

相关推荐
网络研究院8 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智8 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest8 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_8 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
2601_961845159 小时前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博
程序猿阿伟9 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
InHand云飞小白10 小时前
无人值守站点网络困境?工业级路由器IR315破解连接难题
网络·物联网·4g·工业路由器·4g路由器·iiot·蜂窝路由器
森G10 小时前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt
江华森11 小时前
TCP/IP 协议栈实战 — 7 个实验详解
网络·tcp/ip·智能路由器
酉鬼女又兒11 小时前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php