多播流上没有 IGMP 报告数据包

问题描述 投票:0回答:1

我正在尝试在启用了 IGMP 侦听的交换机后面使用

ffmpeg
捕获多播流:

root [ /tmpfs/root ] $ ffmpeg -i rtp://239.0.0.1:5006 /tmp/stream.mp4

流总是在路由器成员端口时间用完后断开,所以总是在我配置的 260 秒之后。

在我的 tcdump 捕获中,我可以看到第一个加入组数据包:

6   0.004965    192.168.1.12    224.0.0.22  IGMPv3  54  Membership Report / Join group 239.0.0.1 for any sources
7   0.005046    192.168.1.31    239.0.0.1   UDP 1382    5006 → 5006 Len=1340
8   0.005390    192.168.1.31    239.0.0.1   UDP 1109    5006 → 5006 Len=1067
...

此后,将不再捕获任何 IGMP 报告数据包,直至时间耗尽:

...
225360  279.883980  192.168.1.12    224.0.0.22  IGMPv3  54  Membership Report / Leave group 239.0.0.1

在我的 Linux 6.1.60 内核中,启用了

CONFIG_IP_MULTICAST=y
CONFIG_BRIDGE_IGMP_SNOOPING=y

我尝试调整主动报告间隔的间隔:

echo "10000" > /proc/sys/net/ipv4/conf/eth1/igmpv3_unsolicited_report_interval

据我了解,IGMP报告应该回答IGMP查询,但是IGMP查询应该从哪里来?来自流媒体摄像头还是交换机?我可以强制我的内核在没有查询的情况下发送报告吗?

linux networking multicast igmp
1个回答
0
投票

我找到了问题的解决方案。

我缺少一个负责 IGMP 查询数据包的“多播路由器”。

我必须在内核中启用

CONFIG_IP_MROUTE=y
并配置 pimd 守护进程。守护进程查询网络中的多播成员。

© www.soinside.com 2019 - 2024. All rights reserved.