【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协议。

[r1]ospf 1
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 10.0.1.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 50.0.14.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.1.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255

[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.1.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 20.0.35.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 30.0.36.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 40.0.34.0 0.0.0.255

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

[r5]ospf 1
[r5-ospf-1]area 0
[r5-ospf-1-area-0.0.0.0]network 20.0.35.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]network 30.0.2.0 0.0.0.255

[R6]ospf 1
[R6-ospf-1]area 0
[R6-ospf-1-area-0.0.0.0]network 30.0.2.0 0.0.0.255
[R6-ospf-1-area-0.0.0.0]network 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。

[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

[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

[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
[r3-GigabitEthernet0/0/2]int g4/0/0
[r3-GigabitEthernet4/0/0]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]igmp enable
[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]igmp enable
[r5-GigabitEthernet0/0/0]int g0/0/1
[r5-GigabitEthernet0/0/1]pim sm

[R6]multicast routing-enable
[R6]int g0/0/0
[R6-GigabitEthernet0/0/0]pim sm
[R6-GigabitEthernet0/0/0]igmp enable
[R6-GigabitEthernet0/0/0]int g0/0/2
[R6-GigabitEthernet0/0/2]pim sm

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

[r1]pim
[r1-pim]static-rp 10.0.3.3

[r2]pim
[r2-pim]static-rp 10.0.3.3

[r3]pim
[r3-pim]static-rp 10.0.3.3

[r4]pim
[r4-pim]static-rp 10.0.3.3

[r5]pim
[r5-pim]static-rp 10.0.3.3

[R6]pim
[R6-pim]static-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。

[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]pim 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 才会发起切换。下面给出禁止切换的示例。

[r4]pim
[r4-pim]spt-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接口。

[r4]int g0/0/1
[r4-GigabitEthernet0/0/1]pim silent

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

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

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

相关推荐
_.Switch1 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
qq_254674411 小时前
工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置
网络
JokerSZ.1 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
小松学前端4 小时前
第六章 7.0 LinkList
java·开发语言·网络
城南vision4 小时前
计算机网络——TCP篇
网络·tcp/ip·计算机网络
Ciderw4 小时前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
Tony聊跨境5 小时前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip
2403_875736876 小时前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市
Tassel_YUE8 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化