windows无法接收到组播问题

在部分路由器环境下,Windows设备发现服务无法通过组播接收发现报文。通过修改注册表固定IGMP版本为v2,解决了win10系统在IGMPv2环境下无法正常加入组播组的问题。

windows上组播接收异常的问题

应项目要求, 参与将一个设备发现服务从 linux 移植到 windows 上的过程, 设备发现服务通过加入特定的组播组,比如239.255.255.250,来监听对应组播组的发现报文,接收到目的地址为对应组播组的地址时,返回当前设备的IP地址,完成发现的流程。

测试过程中发现, 在部分型号路由器(包括TPlink部分型号,萤石,ASUS)下, 无法进行 SADP 搜索。通过抓包发现, windows 端 win10 系统发送的均为 IGMPv3 报文, 路由器上发送的均为IGMPv2 的报文, 在客户端发送对应的 239.255.255.250 地址段的组播报文时, 路由器未转发数据包到 windows 网段, 可以认为是没能成功加入组播组。

按照微软官网描述,在发现系统所处的环境为 IGMPv2 组播环境时, 会自动切换到以 IGMPv2, 但此时看来因某种未知原因, windows 的该机制没有生效。故而从官网上找到一种固定 windows 系统的 IGMP 版本的办法, 通过修改注册表的方式固定从网卡以 IGMPv2 的方式加入组播组, 修改完成后, 即可正常在该路由器环境下接收到 IGMP 报文。修改地址如下:

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\services\\Tcpip\\Parameters

截图如下:
在这里插入图片描述

新增 DWORD 类型的 IGMPLevel 字段为 2 , DWORD 类型的 IGMPVersion 字段为 3。

IGMPVersion 字段中 2 表示 IGMPv1, 3 为 IGMPv2, 4 为 IGMPv3(默认)。
IGMPLevel 字段中 0 表示不支持组播, 1 表示只支持发送 IPv4 组播, 2 表示完全支持IGMP(默认)

参考网址:

https://social.technet.microsoft.com/Forums/windows/en-US/0d0da348-3b8b-4790-8aa2-60740a02536f/windows-7-and-igmp-multicast

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值