组播实验-IGMP、IGMP Snooping及PIM-DM协议

设备连接方式如图所示,4台路由器运行OSPF,均创建Loopback0,IP地址为10.0.x.x/32,x为设备编号。

4台路由器构成一个组播网络,R1作为第一跳路由器连接组播源239.0.0.12,R4作为最后一跳路由器连接组播组239.0.0.12的接收者,为了能够让组播源的流量顺利被R4上的组播组成员接收,在每台路由器上均部署PIM-DM,并在R4的GE0/0/1接口上激活IGMPv2。

同时为了优化交换机S2上的组播流量转发行为,在S2上部署IGMP Snooping并手动指定其路由器接口、成员接口。

参考链接:http://e.huawei.com

实验任务:

①设备基础IP地址配置。

②配置R1、R2、R3、R4之间的OSPF,在互联接口、LoopbackO接口上激活OSPF。开启路由器的组播路由功能,部署PIM-DM,在相应接口上开启PIM-DM

③在R1上模拟组播源发送组播数据,观察各个路由器的PIM路由表。

④修改R3的GE0/0/1接口OSPF Cost值,影响断言机制选举结果,之后再次查看R2、R3的PIM路由表。

⑤在S2上配置IGMP Snooping,手动配置路由器端口、成员端口。

任务步骤:

①互联接口、环回口IP地址配置

设备命名

AR1:

<Huawei>system-view

Huawei\]sysname AR1 R2、R3相同操作,不再重复。 # 配置R1 GE0/0/0接口、GE0/0/1接口、LoopBack0接口IP地址 \[AR1\]interface GigabitEthernet 0/0/0 \[AR1-GigabitEthernet0/0/0\]ip address 10.0.12.1 24 \[AR1-GigabitEthernet0/0/0\]interface GigabitEthernet 0/0/1 \[AR1-GigabitEthernet0/0/1\]ip address 10.0.13.1 24 \[AR1-GigabitEthernet0/0/1\]interface LoopBack 0 \[AR1-LoopBack0\]ip ad 10.0.1.1 32 # 配置R2 GE0/0/0接口、GE0/0/1接口、LoopBack0接口IP地址 \[AR2\]interface GigabitEthernet 0/0/0 \[AR2-GigabitEthernet0/0/0\]ip address 10.0.12.2 24 \[AR2-GigabitEthernet0/0/0\]interface GigabitEthernet 0/0/1 \[AR2-GigabitEthernet0/0/1\]ip address 10.0.234.2 24 \[AR2-GigabitEthernet0/0/1\]interface LoopBack 0 \[AR2-LoopBack0\]ip address 10.0.2.2 32 # 配置R3 GE0/0/1接口、GE0/0/2接口、LoopBack0接口IP地址 \[AR3\]interface GigabitEthernet 0/0/1 \[AR3-GigabitEthernet0/0/1\]ip address 10.0.13.3 24 \[AR3-GigabitEthernet0/0/1\]interface GigabitEthernet 0/0/2 \[AR3-GigabitEthernet0/0/2\]ip address 10.0.234.3 24 \[AR3-GigabitEthernet0/0/2\]interface LoopBack 0 \[AR3-LoopBack0\]ip address 10.0.3.3 32 # 配置R4 GE0/0/0接口、GE0/0/1接口、LoopBack0接口IP地址 \[AR4\]interface GigabitEthernet 0/0/0 \[AR4-GigabitEthernet0/0/0\]ip address 10.0.234.4 24 \[AR4-GigabitEthernet0/0/0\]interface GigabitEthernet 0/0/1 \[AR4-GigabitEthernet0/0/1\]ip address 192.168.1.1 24 \[AR4-GigabitEthernet0/0/1\]interface LoopBack 0 \[AR4-LoopBack0\]ip address 10.0.4.4 32 # 在R1、R4上检查IP地址连通性 ![](https://i-blog.csdnimg.cn/direct/cfefb306b1b449ea9483687eeb4f3efd.png) ![](https://i-blog.csdnimg.cn/direct/09924e77fef744a18f4851a9ba87268d.png) ## **②配置OSPF** 使用Loopback0接口地址作为Router lD,在互联接口、Loopback0接口上激活OSPF。 # 配置R1 \[AR1\]ospf router-id 10.0.1.1 \[AR1-ospf-1\]area 0 \[AR1-ospf-1-area-0.0.0.0\]network 10.0.1.1 0.0.0.0 \[AR1-ospf-1-area-0.0.0.0\]network 10.0.12.1 0.0.0.0 \[AR1-ospf-1-area-0.0.0.0\]network 10.0.13.1 0.0.0.0 # 配置R2 \[AR2\]ospf router-id 10.0.2.2 \[AR2-ospf-1\]area 0 \[AR2-ospf-1-area-0.0.0.0\]network 10.0.2.2 0.0.0.0 \[AR2-ospf-1-area-0.0.0.0\]network 10.0.12.2 0.0.0.0 \[AR2-ospf-1-area-0.0.0.0\]network 10.0.234.2 0.0.0.0 # 配置R3 \[AR3\]ospf router-id 10.0.3.3 \[AR3-ospf-1\]area 0 \[AR3-ospf-1-area-0.0.0.0\]network 10.0.3.3 0.0.0.0 \[AR3-ospf-1-area-0.0.0.0\]network 10.0.13.3 0.0.0.0 \[AR3-ospf-1-area-0.0.0.0\]network 10.0.234.3 0.0.0.0 # 配置R4 \[AR4\]ospf router-id 10.0.4.4 \[AR4-ospf-1\]area 0 \[AR4-ospf-1-area-0.0.0.0\]network 10.0.4.4 0.0.0.0 \[AR4-ospf-1-area-0.0.0.0\]network 10.0.234.4 0.0.0.0 \[AR4-ospf-1-area-0.0.0.0\]network 192.168.1.1 0.0.0.0 # 在R1、R4上检查OSPF邻居状态 ![](https://i-blog.csdnimg.cn/direct/50429fa0cce34c9a966f2db628e749ba.png) ![](https://i-blog.csdnimg.cn/direct/eeabafaaaf434f05bac78ba2ab399310.png) 路由器之间的OSPF邻居已经全部正常建立。 # 在R4上查看OSPF路由表 ![](https://i-blog.csdnimg.cn/direct/baf67b80b6444af8b9794434ba1b1e07.png) R4上已经学习到全网的OSPF路由。 ## **③部署PIM-DM** 在所有路由器上开启组播路由功能,在需要运行PIM-DM的接口下开启组播路由协议。 # 开启组播路由功能 \[AR1\]multicast routing-enable \[AR2\]multicast routing-enable \[AR3\]multicast routing-enable \[AR4\]multicast routing-enable # 在R1相应接口上开启PIM-DM \[AR1\]interface GigabitEthernet 0/0/0 \[AR1-GigabitEthernet0/0/0\]pim dm \[AR1-GigabitEthernet0/0/0\]interface GigabitEthernet 0/0/1 \[AR1-GigabitEthernet0/0/1\]pim dm # 在R2相应接口上开启PIM-DM \[AR2\]interface GigabitEthernet 0/0/0 \[AR2-GigabitEthernet0/0/0\]pim dm \[AR2-GigabitEthernet0/0/0\]interface GigabitEthernet 0/0/1 \[AR2-GigabitEthernet0/0/1\]pim dm # 在R3相应接口上开启PIM-DM \[AR3\]interface GigabitEthernet 0/0/1 \[AR3-GigabitEthernet0/0/1\]pim dm \[AR3-GigabitEthernet0/0/1\]interface GigabitEthernet 0/0/2 \[AR3-GigabitEthernet0/0/2\]pim dm # 在R4相应接口上开启PIM-DM \[AR4\]interface GigabitEthernet 0/0/0 \[AR4-GigabitEthernet0/0/0\]pim dm \[AR4-GigabitEthernet0/0/0\]interface GigabitEthernet 0/0/1 \[AR4-GigabitEthernet0/0/1\]pim dm # 在R1、R4上检查PIM邻居关系 ![](https://i-blog.csdnimg.cn/direct/18f6797f595d4180b7dafb2f61adbbd4.png) ![](https://i-blog.csdnimg.cn/direct/bf872525309947ddbe9dd11b96f97a8a.png) R1与R2、R1R3、R4与R2及R3之间已经成功形成PIM邻居关系。 # 在R4的GE0/0/1接口上开启IGMP,并配置静态组播组模拟组播接收者 \[AR4\]interface GigabitEthernet 0/0/1 \[AR4-GigabitEthernet0/0/1\]igmp enable \[AR4-GigabitEthernet0/0/1\]igmp static-group 239.0.0.12 # 在R4上查看IGMP接口信息 ![](https://i-blog.csdnimg.cn/direct/47e0257c60764e25bd9217d7735fa541.png) 默认IGMP版本为V2,R4为IGMP查询者。 ## **④观察PIM路由表** 在R1上以Loopback0接口为源地址,向239.0.0.12发送ICMP数据包,模拟组播源,之后在4台路由器上查看PIM路由表。 # R1上模拟组播源,发送组播流量 \[AR1\]ping -a 10.0.1.1 -c 10 239.0.0.12 使用该命令实际上设备并不会对外发送组播流量,而是会触发PIM-DM的State-Refresh报文。 # PIM-DM State-Refresh报文内容 ![](https://i-blog.csdnimg.cn/direct/e9032b552d914ffb9827f4cbc279d719.png) State-Refresh 报文中会携带组播源地址(10.0.1.1),组播组地址(239.0.0.12),下游设备收到后会创建(S,G)表项,并继续向下游发送State-Refresh报文。 # 在设备上查看State-Refresh报文发送情况 ![](https://i-blog.csdnimg.cn/direct/dcbe7ce403bb43ba9dc8edd04757ec68.png) 当已发送(sent)个数不为0时,再去查看下游的(S,G)表项,否则将无法看到内容。PIM-SM并无State-Refresh报文,因此无法使用该方式触发生成组播路由表。 # 之后查看4台路由器的PIM路由表 ![](https://i-blog.csdnimg.cn/direct/77f1d07b14a341d6834f7876523c96ba.png) R1上(S,G)表项的入接口为Loopback0,因为组播源为设备直连,所以PRF邻居为NULL。下游接口为GE0/0/1,R1将组播流量转发给R3。 ![](https://i-blog.csdnimg.cn/direct/58f848aa61234877b593d333e5d61a08.png) R2上并无下游接口。 ![](https://i-blog.csdnimg.cn/direct/b7337757188c4869867072e1bec7923c.png) R3的下游接口为GE0/0/2。 R2、R3的下游接口与R4的上游接口在同一个网段,此时触发断言机制,R2、R3通过各自的GE0/0/1接口和GE0/0/2接口发送断言报文进行选举,R2、R3到达组播源的单播路由拥有相同的路由优先级、单播路由开销值,但是R3的GE0/0/2接口拥有更大的IP地址(10.0.234.3,大于10.0.234.2),因此R3在断言选举中胜出,继续向R4转发组播流量,而R2不再从自己的GE0/0/1接口转发组播流量,这是R2的PIM路由表中没有下游接口的原因。 ![](https://i-blog.csdnimg.cn/direct/f146b6d420c246599ab7f120766f6b89.png) R4的上游邻居为R3,自身为最后一跳路由器。 ## **⑤修改IGP cost值,影响断言选举结果** 在R3上修改GE0/0/1接口的OSPF cost值,使得R3到达组播源地址的单播路由拥有更大的开销值,从而在断言选举中失败,让R2变为断言选举胜出者。 # 在R2、R3上查看前往组播源地址10.0.1.1的路由开销值 ![](https://i-blog.csdnimg.cn/direct/4fcd074811714403a3e2dbb5d8af738b.png) ![](https://i-blog.csdnimg.cn/direct/8dda731be19c465684f250770286b83a.png) R2、R3前往10.0.1.1的路由开销值都为1。 # 修改R3上 GE0/0/1接口的OSPF cost \[AR3\]interface GigabitEthernet 0/0/1 \[AR3-GigabitEthernet0/0/1\]ospf cost 2 ![](https://i-blog.csdnimg.cn/direct/9b8b6765fb2a420ca737e367030f0f78.png) 此时R3前往10.0.1.1的路由开销值为2。 # 为了更好地观察现象,修改R2、R3的GE0/0/1接口和GE0/0/2接口Assert状态的超时时间为10s \[AR2\]interface GigabitEthernet 0/0/1 \[AR2-GigabitEthernet0/0/1\]pim holdtime assert 10 \[AR3\]interface GigabitEthernet 0/0/2 \[AR3-GigabitEthernet0/0/2\]pim holdtime assert 10 # 在R1上开启**debugging pim join-prune receive**,观察剪枝过程 \terminal debugging \terminal monitor \debugging pim join-prune receive # 在R1上重新触发组播流量 \[AR1\]ping -a 10.0.1.1 -c 10 239.0.0.12 # 重新查看R2、R3的PIM路由表 ![](https://i-blog.csdnimg.cn/direct/3236a5b8441b41d086fb079aaff6156d.png) ![](https://i-blog.csdnimg.cn/direct/37251f8c9c6345b7992657e290bfd556.png) 此时R3上没有下游接口,R2为断言选举胜出者。 # 观察R1上的debug输出 Oct 7 2025 11:54:01.389.1-08:00 AR1 PIM/7/JP:(public net): PIM ver 2 JP receiving 10.0.13.3 -\> 224.0.0.13 on GigabitEthernet0/0/1 (P013156) Oct 7 2025 11:54:01.389.2-08:00 AR1 PIM/7/JP:(public net): Upstream 10.0.13.1, Groups 1, Holdtime 180 (P013160) Oct 7 2025 11:54:01.389.3-08:00 AR1 PIM/7/JP:(public net): Group: 239.0.0.12/32 --- 0 join 1 prune (P013169) Oct 7 2025 11:54:01.389.4-08:00 AR1 PIM/7/JP:(public net): Prune: 10.0.1.1/32 (P013179) Oct 7 2025 11:54:02.739.1-08:00 AR1 PIM/7/JP:(public net): PIM ver 2 JP receiving 10.0.12.2 -\> 224.0.0.13 on GigabitEthernet0/0/0 (P013091) Oct 7 2025 11:54:02.739.2-08:00 AR1 PIM/7/JP:(public net): Upstream 10.0.12.1, Groups 1, Holdtime 0 (P013097) Oct 7 2025 11:54:02.739.3-08:00 AR1 PIM/7/JP:(public net): Group: 239.0.0.12/32 --- 1 join 0 prune (P013107) Oct 7 2025 11:54:02.739.4-08:00 AR1 PIM/7/JP:(public net): Join: 10.0.1.1/32 (P013117) 在debug 中可以看到来自R3的prune报文,group为239.0.0.12,组播源为10.0.1.1。 ## **⑥配置ooIGMP Snping** 为了优化交换机S2对组播流量的转发行为,在S2上开启IGMP Snooping,并手动配置路由器端口、成员端口。 # 在全局、VLAN1中开启IGMP Snooping \[SW2\]igmp-snooping enable \[SW2\]vlan 1 \[SW2-vlan1\]igmp-snooping enable \[SW2-vlan1\]quit # 手动配置GE0/0/1为路由器端口 \[SW2\]interface GigabitEthernet 0/0/1 \[SW2-GigabitEthernet0/0/1\]igmp-snooping static-router-port vlan 1 # 手动配置GE0/0/10为组播组239.0.0.12的成员端口 \[SW2\]interface GigabitEthernet 0/0/10 \[SW2-GigabitEthernet0/0/10\]l2-multicast static-group group-address 239.0.0.12 vlan 1 \[SW2-GigabitEthernet0/0/10\]quit # 查看S2的二层组播转发表 ![](https://i-blog.csdnimg.cn/direct/9ffd1f100c0242ba92ecf389bf9d8c86.png) GE0/0/1为路由器端口,GE0/0/10为成员端口,注意该命令查看的结果需要存在Up状态的成员接口,需要在GE0/0/10上连接设备,使接口为Up状态。 ## **思考:** ### PIM的DM模式应用在大规模网络上,有哪些劣势? PIM-DM只适用于组播接受者较为密集的小型网络中,它采用粗犷的方式将组播流量先扩散到全网,不需要组播流量的分支通过协议报文将自己从SPT上剪除,这在接收者较为分散的大型网络中会导致大量的不必要组播流量、频繁地组播协议报文的交互,对链路带宽、设备资源造成不必要的浪费。 ## **配置参考:** ### **AR1** **:** > # > > sysname AR1 > > # > > interface GigabitEthernet0/0/0 > > ip address 10.0.12.1 255.255.255.0 > > pim dm > > # > > interface GigabitEthernet0/0/1 > > ip address 10.0.13.1 255.255.255.0 > > pim dm > > # > > interface LoopBack0 > > ip address 10.0.1.1 255.255.255.255 > > # > > ospf 1 router-id 10.0.1.1 > > area 0.0.0.0 > > network 10.0.1.1 0.0.0.0 > > network 10.0.12.1 0.0.0.0 > > network 10.0.13.1 0.0.0.0 > > # ### **AR2** **:** > # > > sysname AR2 > > # > > interface GigabitEthernet0/0/0 > > ip address 10.0.12.2 255.255.255.0 > > pim dm > > # > > interface GigabitEthernet0/0/1 > > ip address 10.0.234.2 255.255.255.0 > > pim holdtime assert 10 > > pim dm > > # > > interface LoopBack0 > > ip address 10.0.2.2 255.255.255.255 > > # > > ospf 1 router-id 10.0.2.2 > > area 0.0.0.0 > > network 10.0.2.2 0.0.0.0 > > network 10.0.12.2 0.0.0.0 > > network 10.0.234.2 0.0.0.0 > > # ### **AR3** **:** > # > > sysname AR3 > > # > > interface GigabitEthernet0/0/1 > > ip address 10.0.13.3 255.255.255.0 > > pim dm > > ospf cost 2 > > # > > interface GigabitEthernet0/0/2 > > ip address 10.0.234.3 255.255.255.0 > > pim holdtime assert 10 > > pim dm > > # > > interface LoopBack0 > > ip address 10.0.3.3 255.255.255.255 > > # > > ospf 1 router-id 10.0.3.3 > > area 0.0.0.0 > > network 10.0.3.3 0.0.0.0 > > network 10.0.13.3 0.0.0.0 > > network 10.0.234.3 0.0.0.0 > > # ### **AR4** **:** > # > > sysname AR4 > > # > > interface GigabitEthernet0/0/0 > > ip address 10.0.234.4 255.255.255.0 > > pim dm > > # > > interface GigabitEthernet0/0/1 > > ip address 192.168.1.1 255.255.255.0 > > pim dm > > igmp enable > > igmp static-group 239.0.0.12 > > # > > interface LoopBack0 > > ip address 10.0.4.4 255.255.255.255 > > # > > ospf 1 router-id 10.0.4.4 > > area 0.0.0.0 > > network 10.0.4.4 0.0.0.0 > > network 10.0.234.4 0.0.0.0 > > network 192.168.1.1 0.0.0.0 > > # ### **SW2** **:** > # > > sysname SW2 > > # > > igmp-snooping enable > > # > > vlan 1 > > igmp-snooping enable > > # > > interface GigabitEthernet0/0/1 > > igmp-snooping static-router-port vlan 1 > > # > > interface GigabitEthernet0/0/10 > > l2-multicast static-group group-address 239.0.0.12 vlan 1 > > #

相关推荐
人工智能训练20 小时前
在 Ubuntu 系统中利用 conda 创建虚拟环境安装 sglang 大模型引擎的完整步骤、版本查看方法、启动指令及验证方式
linux·运维·服务器·人工智能·ubuntu·conda·sglang
R.lin21 小时前
红包实现方案
java·开发语言·网络·后端·架构
王道长服务器 | 亚马逊云21 小时前
AWS Auto Scaling:自动扩容,让服务器像呼吸一样灵活
运维·网络·自动化·云计算·aws
小蜗牛爱远行21 小时前
服务器和docker容器时间不一致相关问题
运维·服务器·docker
Xの哲學21 小时前
Linux ioctl 深度剖析:从原理到实践
linux·网络·算法·架构·边缘计算
孙同学要努力21 小时前
《Linux篇》进程控制——进程创建(写时拷贝)、进程终止(退出码,exit,_exit)
linux·运维·服务器
Hali_Botebie21 小时前
服务器上用Slurm 管理训练bash 脚本任务
运维·服务器·bash
咕噜企业签名分发-淼淼21 小时前
app分发平台哪个好点?手机app应用内测分发平台支持负载均衡的重要性
运维·智能手机·负载均衡
一个儒雅随和的男子21 小时前
Nginx‌如何配置负载均衡,并使用对不同同负载均衡算法进行配置
运维·nginx·负载均衡
非凡的世界21 小时前
ThinkPHP6 集成TCP长连接 GatewayWorker
网络·网络协议·tcp/ip·gateway·thinkphp·worker·workman