Ip

單播、任播、廣播和多播流量有什麼區別?

  • November 15, 2018

我從未有幸在需要復雜路由的環境中工作,或者如果確實需要,它是在我的上游處理的。我一直使用非常簡單的靜態路由配置,從不需要做任何多路徑路由——因此我對這個主題普遍感到困惑。我想更好地理解多播和任播。

  • 單播、任播、廣播和多播流量有什麼區別?
  • 它們通常用於什麼情況以及為什麼(例如,哪些應用程序使用哪種方法)?
  • 您如何計算給定網段或廣播域的廣播流量過多?
  • 允許廣播和多播流量有哪些安全隱患?

簡單的說:

------------------------------------------------------------
| TYPE      | ASSOCIATIONS     | SCOPE           | EXAMPLE |
------------------------------------------------------------
| Unicast   | 1 to 1           | Whole network   | HTTP    | 
------------------------------------------------------------
| Broadcast | 1 to Many        | Subnet          | ARP     |
------------------------------------------------------------
| Multicast | One/Many to Many | Defined horizon | SLP     |
------------------------------------------------------------
| Anycast   | Many to Few      | Whole network   | 6to4    |
------------------------------------------------------------

當兩個網路節點需要相互通信時使用單播。這很簡單,所以我不會花太多時間在上面。根據定義,TCP 是一個單播協議,除非涉及到任播(下面會詳細介紹)。

當您需要讓兩個以上的節點查看流量時,您可以選擇。

如果所有節點都在同一個子網上,那麼廣播就成為一種可行的解決方案。子網上的所有節點都將看到所有流量。沒有維護類似 TCP 的連接狀態。廣播是乙太網協議中的第 2 層特性,也是 IPv4 中的第 3 層特性。

組播就像是可以跨子網的廣播,但不像廣播不會觸及所有節點。節點必須訂閱多播組才能接收資訊。多播協議通常是 UDP 協議,因為根據定義不能維持連接狀態。向多播組傳輸數據的節點不知道正在接收什麼節點。預設情況下,Internet 路由器不傳遞多播流量。但是,對於內部使用,這是完全允許的;因此,上圖中的“定義範圍”。多播是 IPv4 和 IPv6 的第 3 層功能。

要使用任播,您可以在 Internet 的多個位置宣傳同一個網路,並依靠最短路徑計算將客戶匯集到您的多個位置。就網路節點本身而言,它們使用單播連接與您的任播節點通信。有關 Anycast 的更多資訊,請嘗試:什麼是“anycast”以及它有什麼幫助?. Anycast 也是第 3 層的功能,但它是路由合併發生方式的函式。


例子

非單播方法如何在真實網際網路中使用的一些範例。

廣播
ARP 是一種廣播協議,TCP/IP 堆棧使用它來確定如何將流量發送到網路上的其他節點。如果目的地在同一個子網上,則使用 ARP 來找出到達指定 IP 地址的 MAC 地址。這是到保留的 FF:FF:FF:FF:FF:FF MAC 地址的第 2 級(乙太網)廣播。

此外,微軟的機器瀏覽協議是著名的基於廣播的。創建了諸如 WINS 之類的變通方法以允許跨子網瀏覽。這涉及到第 3 級 (IP) 廣播,這是一個 IP 數據包,其目標地址列為子網的廣播地址(在 192.168.101.0/24 中,廣播地址為 192.168.101.255)。

NTP 協議允許使用廣播方法來宣佈時間源。

組播
在企業網路中,組播可以將實時影片傳送到多個節點,而無需在傳送影片源的伺服器方面擁有大量頻寬。通過這種方式,您可以讓影片伺服器僅在 100Mb 連接上提供 720p 流,但仍可將該提要提供給 3000 個客戶端。

當 Novell 從 IPX 轉向 IP 時,他們不得不選擇一種服務廣告協議來替換 IPX 中的 SAP 協議。在 IPX 中,服務廣告協議每次宣布服務可用時都會在*網路範圍內發佈公告。*由於 TCP/IP 缺少這樣的全域通告協議,Novell 選擇使用基於多播的協議:服務定位協議。新伺服器在 SLP 多播組上宣布其服務。尋找特定類型服務的客戶端向多播組宣布他們的需求並偵聽單播回复。

預設情況下,HP 列印機會在多播組中宣布它們的存在。使用正確的工具,可以很容易地了解網路上可用的列印機。

NTP 協議允許使用多播方法 (IP 224.0.1.1) 向僅一個子網之外的區域宣佈時間源。

Anycast

Anycast 有點特別,因為它是單播層。Anycast 宣佈在網路的不同部分使用相同的網路,以減少到達該網路所需的網路跳數。

6to4 IPv6 轉換協議使用任播。6to4 網關在特定 IP 192.88.99.1 上宣布它們的存在。希望使用 6to4 網關的客戶端將流量發送到 192.88.99.1 並信任網路將連接請求傳遞到 6to4 路由器。

特別受歡迎的 NTP 主機的 NTP 服務很可能是任播的,但我沒有證據證明這一點。協議中沒有任何內容可以阻止它。

其他服務使用 Anycast 來改善最終使用者的數據本地性。Google在某些地方使用其搜尋頁面(在其他地方使用地理 IP)使用 Anycast。根 DNS 伺服器出於類似原因使用任播。ServerFault 本身可能會去那裡,他們在紐約和俄勒岡州確實有數據中心,但還沒有去那裡。


網路問題

過多的廣播流量會搶奪該子網頻寬中的所有節點。如今,對於全雙工 GigE 埠,這已不是什麼大問題,但在半雙工 10Mb 時代,廣播風暴可能會很快導致網路停止執行。那些在所有節點上具有一個大衝突域的半雙工網路特別容易受到廣播風暴的影響,這就是為什麼網路書籍,尤其是較舊的書籍,要密切關注廣播流量的原因。交換/全雙工網路更難因廣播風暴而停止,但它仍然可能發生。廣播是IP 網路正常執行所必需的。

多播也有同樣的濫用可能性。如果多播組中的一個節點開始向該組發送大量流量,則所有訂閱節點都將看到所有這些流量。與廣播一樣,過多的 Mcast 流量會增加此類連接上發生衝突的可能性,而這是一個問題。

多播是 IPv4 的可選功能,但IPv6 是必需的。IPv4 廣播被 IPv6 中的多播取代(另請參閱:為什麼 IPv6 不能發送廣播?)。它在 IPv4 網路上經常被關閉。並非巧合的是,啟用多播是網路工程師在必須這樣做之前對遷移到 IPv6 持謹慎態度的眾多原因之一。

計算多少流量是多少流量取決於幾件事

  • **半雙工與全雙工:**半雙工網路對 bcast/mcast 流量的容忍度要低得多。
  • **網路埠的速度:**您的網路越快,這個問題就越少。在 10Mb 乙太網時代,埠上 5-10% 的流量可能是 bcast 流量,如果不是更多的話,但在 GigE 上低於 1%(可能更少)的可能性更大。
  • **網路上的節點數量:**您擁有的節點越多,您將產生的不可避免的廣播流量 (ARP) 就越多。如果您使用了廣播特定協議、Windows 瀏覽或其他諸如集群心跳之類的東西,問題開始的地方將會改變。
  • **網路技術:**有線乙太網速度足夠快,只要你有現代設備驅動它,bcast/mcast 就不太可能給你帶來問題。另一方面,無線可能會遭受過多的廣播流量,因為它是所有節點之間的共享介質,因此位於單個衝突域中。

最後,Bcast 和 Mcast 流量從頂部搶奪了埠的頻寬。當您開始擔心時,高度依賴於您的個人網路和對可變性能的容忍度。一般來說,網路節點數量的增長速度沒有網路速度那麼快,因此整體廣播百分比作為流量數量一直在下降。

某些網路出於特定原因不允許多播,而其他網路則從未花時間進行設置。有一些多播協議可以向任何監聽正確事物的人揭示有趣的資訊(SLP 就是這樣一種)。就我個人而言,我不介意次要的多播流量,因為我在做一些網路分析時看到的最大的煩惱是網路擷取被污染;為此,有過濾器。

引用自:https://serverfault.com/questions/279482