家用路由 SSDP 发现的问题

137 天前
 sorasyl

现有华硕路由 1 台 设备 3 台

问题出在 ios 设备的 ssdp 的 discover 包能在 linux 上收到,但是三星的 ssdp 的 discover 包在 linux 上收不到,但是能在路由器上用 tcpdump 收到

discover 投递的地址都是 udp 的 239.255.255.250:1900

1274 次点击
所在节点    宽带症候群
5 条回复
tool2d
137 天前
我以前遇到过,是内核编译的问题,igmp 缺了一点东西

https://web.archive.org/web/20200202071849/http://www.udpcast.linux.lu/pipermail/udpcast/2012-December/001200.html

后来是手动拼接了 igmp v2 一个 ip 包,强制发送 RawSocket 解决的。
pagxir
137 天前
需要 igmp snooping 来完成组播报文的 L2 端口转发。估计 ios 设备发送的是 L2 的广播包,且跟 iOS 跟 linux 在同一个广播域。
sorasyl
137 天前
@tool2d 大佬,我监听了路由器上 br0 的 igmp 报文,确实没有收到安卓设备的 igmp v3 的 report ,会是这个原因导致的吗
sorasyl
137 天前
@pagxir 大佬,我监听了路由器上 br0 的 igmp 报文,确实没有收到安卓设备的 igmp v3 的 report ,会是这个原因导致的吗
pagxir
137 天前
正常的情况下,组播发送方加不加入组也不影响发送组播包。但是接收方需要加入组才能接收到组播报文。L3 的组播报文需要正确的映射到 L2 的组播组去。你可以 tcpdump 查查 L2 组播组跟 L3 组播组是否一致。路由器一般会运行 igmpd 跟 mld 来协助处理 igmp/igmpv6 协议,通过它们建立正确的 L2 转发表,如果没有 igmpd/mld 的话,要么全部禁用组播,要么就直接 flooding 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1003712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX