為什麼我的無偵聽器多重播送封包會影響 Wifi 效能?

為什麼我的無偵聽器多重播送封包會影響 Wifi 效能?

我有一個程序,每 50 毫秒發送一個 IPv6 多播封包(到 ff12::2:0:8afb:382b:c053:85f%en1)。我讓它在一個非常簡單的單一電腦 LAN 上運行(Mac mini <-wifi-> Linksys wifi 路由器 <-cat5-> DSL 數據機 <-> Internet)。在我的測驗中,沒有電腦加入該多播群組(即沒有人在監聽這些資料包)

我的問題是,當這個程式運作時,Mac的WiFi效能下降了50%以上。大概問題是所有這些多播資料包都佔用了我的大量 WiFi 頻寬並導致擁塞......但我根本不明白為什麼要傳輸這些資料包。據我了解,多播使用生成樹演算法來確保多播資料包僅路由到真正有興趣接收它們的主機。如果這是真的,並且考慮到我的LAN 上沒有其他電腦加入到該多播位址,那麼我的Mac 是否應該意識到這一點並且實際上不會發送任何資料包,除非/直到其他主機加入多播組?或者生成樹剔除僅在交換器上實現,而不是由主機本身實現?

答案1

多播是一件棘手的事情。路由器是仲裁多播資料包的設備,智慧交換器有時可以確保資料包不會到達它們不應該去的地方。但是,如果多播器和您的客戶端站之間沒有路由器(如果我沒看錯的話,則沒有路由器),那麼多播的行為將與該子網路上的廣播完全相同。

答案2

添加到 @sysadmin1138 的答案(這條評論對於評論框來說太長了)...

值得注意的是,802.11 在兩個方面增加了這種痛苦:BSS 內中繼和低組播速率。

在 802.11 上,如果原始發送者不在預期接收者的無線電範圍內,則同一 AP 上的無線到無線訊框必須由 AP 以無線方式重新傳輸。此過程稱為“BSS 內中繼”,解決了所謂的“隱藏節點問題”,即兩個無線節點可能都在 AP 的範圍內,但不在彼此的範圍內(隱藏)。因此,來自 AP 的一個無線用戶端並且可能需要發送到 AP 的另一個無線用戶端的每個幀(注意:這包括所有多播和廣播)都會透過同一通道傳輸兩次。第一的AP(這稱為到分發系統,或“ToDS”),然後再次AP(「FromDS」),作為 BSS 內中繼的一部分。

旅程的「ToDS」段處於客戶端可以成功與 AP 通訊的最高資料速率。因此,如果這是使用具有短保護間隔的 40MHz 頻道的現代 3x3 N 客戶端和 AP,則這可能是 450mbps。

不幸的是,對於旅程的「FromDS」段,幀必須以足夠低的資料速率發送,以便該 AP 的所有用戶端都能可靠地接收它們。這是因為多播不在 802.11 層進行確認,因為這會導致響應每個多播的 Ack 風暴。

某些 AP 允許您明確設定多播速率。其他允許您定義“基本”或“所需”速率集,然後 AP 從基本速率中選擇多播速率。還有一些只是讓您設定 b/g/n(或 a/n)相容模式,並基於此設定預先定義的基本速率和組播速率。許多 AP 預設採用完全相容模式,一直回到 802.11-1997 DSSS 資料速率 1 和 2 mbps(在 802.11b 增加了 5.5 和 11 mbps 之前)。這意味著您的多播速率可能低至 1mbps。

因此,在最壞的情況下,您的多播可能會吞噬 451相同大小的無線到有線(或有線到無線)單播訊框將佔用的頻道播放時間。

另請注意,在某些設計中,BSS 內中繼由 AP 的 802.11 NIC 中的微代碼執行,因此在這些架構上,這些幀在中繼之前不會通過 AP 的主機處理器。因此,即使 AP 是一個「智慧型」交換機,可能會違反分層模型並執行第 3 層 IGMP 偵聽來修剪多播樹,但在無線電卡完成 BSS 內操作之前,它也沒有機會執行此操作中繼幀。

答案3

當本地路由器(不是交換器)不完全支援時,組播預設為廣播行為。因此,它往往會傳播到 LAN 網段內的所有已知節點。

SoHo 路由器並不以完全或正確支援多播而聞名。許多依賴上游路由器,並且只期望 LAN 層級的用戶端。您可以嘗試調整路由器設置,但如果您的多播群組沒有訂閱者,為什麼不在來源處將其關閉呢?

相關內容