背景
客户有组播需求,经过测试发现组播源和接受端在同一个vlan可以通,组播源和接收端不在同一个vlan则不能通信,测试单播地址互相能ping通。
拓扑如下:

vlan10和vlan11各有1各组播源和客户端,只有同一各vlan下组播能通,vlan10和vlan11则不能通。
交换机配置
核心交换机配置
cpp
----------创建vlanif-----------------
Switch# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)# vlan database
Switch(config-vlan)# vlan 10,11
Switch(config-vlan)# exi
Switch(config)# interface vlan 10
Switch(config-if)# ip address 192.168.10.254/24
Switch(config-if)# no shutdown
Switch(config-if)# exit
Switch(config)# interface vlan 11
Switch(config-if)# ip address 192.168.11.254/24
Switch(config-if)# no shutdown
Switch(config-if)# exit
----------------组播相关配置-----------
Switch(config)#
Switch(config)# ip igmp snooping
Switch(config)# ip igmp snooping vlan 10
Switch(config)# ip igmp snooping vlan 11
Switch(config)# ip multicast-routing
Switch(config)# ip igmp snooping
Switch(config)# ip igmp snooping vlan 10
Switch(config)# ip igmp snooping vlan 11
Switch(config)# ip multicast-routing
Switch(config)# interface vlan 10
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface vlan 11
Switch(config-if)# ip pim sparse-mode
Switch(config-if)# exit
Switch(config)# ip igmp snooping vlan 10 querier address 192.168.10.254
Switch(config)# ip igmp snooping vlan 11 querier address 192.168.11.254
Switch(config)# ip pim rp-address 192.168.10.254
Switch(config)#
命令解释
| 命令 | 解释 |
|---|---|
| ip igmp snooping [ vlan vlan-id ] | 局模式或单 VLAN模式下开启 IGMP Snooping 功能 |
| ip multicast-routing | 启用交换机的组播路由功能 |
| ip pim sparse-mode | 使能 PIM-SM协议 |
| ip pim rp-address | 配置静态 RP 地址 |
| ip igmp snooping vlanx querier address x.x.x.x | 配置 VLAN 上组播查询器的源地址 |
1、配置 PIM-SM
PIM-SM(协议无关组播稀疏模式)是一个组播路由协议,用来将稀疏分散的组播设备联系起来协同工作。这样有助于分散的网络节点节约带宽,通过发送单一流量到多个接收者,达到降低网络流量的目的。
PIM-SM 使用接收者发起成员的 IP 组播模型,支持共享和最短路径树,并使用软状态机制,以适应不断变化的网络条件。它依赖于单播路由协议来建立和维护路由器间的组播路由。
2、 IGMP Snooping
IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探)是运行在二层以太网交换机上的组播约束机制,帮助设备建立和维护二层组播转发表,使组播报文按需在数据链路层转发。由于二层交换机无法学到组播 MAC 地址,组播报文在二层网络中被广播时,同一广播域的组播成员与非组播成员都能收到组播组报文。二层交换机通过 IGMP Snooping 可以有效地控制组播流量的泛洪,节省网络带宽的同时也提高了网络信息的安全性。当二层以太网交换收到主机和路由器之间传递的 IGMP 报文时,IGMP Snooping 将对 IGMP 报文所带的信息进行分析,将
端口和 MAC 组播地址建立起映射关系,并根据这样的映射关系转发组播数据。组播路由器定期发送通用组查询来维护组播组成员关系。所有接收者将发送 IGMP 报告报文来响应这个查询,交换机通过这个监听 IGMP 报告报文来建立转发表项。
3、配置 IGMP 查询器
三层交换机在所连接的网段上周期性地发送 IGMP 通用查询报文,通过解析返回的 IGMP 主机报告报文,获知该网段内的组播组成员信息。组播路由器周期性地发送查询报文,当得到某一组成员的IGMP 主机报告报文的时候,刷新该网段相应的组成员关系信息。
查看和维护
| 命令 | 解释 |
|---|---|
| show ip igmp snooping groups | 显示 IGMP snooping 组播组信息 |
| show ip igmp snooping global | 查看 IGMP Snooping 的全局配置 |
| show ip pim sparse-mode interface | 查看稀疏模式下的端口信息 |
| show ip pim sparse-mode mroute | 查看 SM模式下的组播路由 |
| show ip mroute [ sparse ] [ count summary ] | 显示组播路由表信息 sparse: 查看稀疏模式的组播路由,count: 查看路由和数据包的统计情况,summary: 查看组播路由的总体情况 |
验证过程
测试工具选择
1、使用SocketTool工具,将192.168.10.10、192.168.10.11、192.168.11.10、192.168.11.11,全加入224.1.1.1:65000组内,各自发送自己的ip地址,发现只有同网段能互相接收。
SocketTool组播测试
交换机上查看4个IP都加入到224.1.1.1这个组了

结果还是组播路由有问题。
2、使用VLC搭建视频组播源
a.在192.168.10.10和192.168.11.10搭建组播源,
媒体→流→添加→串流→RTP→添加→组播地址和端口→下一步→下一步

b.增加客户端
媒体→打开网络串流→输入组播地址(rtp://192.168.10.10:8888)(rtp://192.168.11.10:8888)→播放→视图→打开

视频加入组播组有点慢,需要等10秒左右才会有视频显示。
测试结果:还是同网段能播放,不同网段不能连接
问题排查
经过与400客服确认交换机配置,交换机配置没有问题。交换机也能看到组播路由。
只能抓包分析问题,发现这两个软件TTL默认为1,下一跳减为0就被丢弃了,这就是造成路由不通的原因。

更改软件TTL
SocketTool工具没有找到更改TTL的方法,所以SocketTool工具没法组播路由(下次别拿这个工具测了 坑!)。
组播测试抓包
VLC播放器更改方法如下
工具→偏好设置→全部→访问输出→跳数限制→(根据实际需求)→保存→ 关闭软件重新打开
请一定要重新打开软件,重新打开才会生效。
组播路由终于通了
VLC更改TTL组播测试