windows無法接收到組播問題

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章