现有华硕路由 1 台 设备 3 台
问题出在 ios 设备的 ssdp 的 discover 包能在 linux 上收到,但是三星的 ssdp 的 discover 包在 linux 上收不到,但是能在路由器上用 tcpdump 收到
discover 投递的地址都是 udp 的 239.255.255.250:1900
1
tool2d 2023-12-27 10:48:45 +08:00
我以前遇到过,是内核编译的问题,igmp 缺了一点东西
https://web.archive.org/web/20200202071849/http://www.udpcast.linux.lu/pipermail/udpcast/2012-December/001200.html 后来是手动拼接了 igmp v2 一个 ip 包,强制发送 RawSocket 解决的。 |
2
pagxir 2023-12-27 11:05:26 +08:00
需要 igmp snooping 来完成组播报文的 L2 端口转发。估计 ios 设备发送的是 L2 的广播包,且跟 iOS 跟 linux 在同一个广播域。
|
3
sorasyl OP @tool2d 大佬,我监听了路由器上 br0 的 igmp 报文,确实没有收到安卓设备的 igmp v3 的 report ,会是这个原因导致的吗
|
4
sorasyl OP @pagxir 大佬,我监听了路由器上 br0 的 igmp 报文,确实没有收到安卓设备的 igmp v3 的 report ,会是这个原因导致的吗
|
5
pagxir 2023-12-27 12:26:10 +08:00
正常的情况下,组播发送方加不加入组也不影响发送组播包。但是接收方需要加入组才能接收到组播报文。L3 的组播报文需要正确的映射到 L2 的组播组去。你可以 tcpdump 查查 L2 组播组跟 L3 组播组是否一致。路由器一般会运行 igmpd 跟 mld 来协助处理 igmp/igmpv6 协议,通过它们建立正确的 L2 转发表,如果没有 igmpd/mld 的话,要么全部禁用组播,要么就直接 flooding 。
|
6
yyysuo 144 天前
大佬解决了吗,我也遇到了奇怪的问题,用 igmpproxy ,连接同一 wifi 的 4 台设备,一台联通小新 PC 和 ip14p 播放 rtp 正常,一台 dell pc 和火棒用 tivimate 播放不了,其中 dell pc 最奇怪,只有播放其中 1 个台,都是用的同一份 m3u ,全是相同的 rtp 。
|