當前位置:
首頁 > 最新 > 淺析 AnyCast 技術

淺析 AnyCast 技術

在講解任播 (AnyCast) 前,我們先來說說 協議里常見的幾種數據傳輸方式單播、組播、廣播。


什麼是單播

單播概念

單播(Unicast)是指封包在計算機網路的傳輸過程中,目的地址為單一目標的一種傳輸方式。每次只有兩個實體相互通信,發送端和接收端都是唯一確定的。它是現今網路應用最為廣泛,通常所使用的網路協議或服務大多採用單播傳輸,例如一切基於 TCP 的協議。

單播地址

在 IPv4 網路中,0.0.0.0 到 223.255.255.255 屬於單播地址。

單播優點

伺服器及時響應客戶機的請求。

伺服器針對每個客戶不同的請求發送不同的數據,容易實現個性化服務。

單播缺點

伺服器針對每個客戶機發送數據流,伺服器流量=客戶機數量×客戶機流量。在客戶數量大、每個客戶機流量大的流媒體應用中伺服器不堪重負。

現有的網路帶寬是金字塔結構,城際省際主幹帶寬僅僅相當於其所有用戶帶寬之和的 5%。如果全部使用單播協議,將造成網路主幹不堪重負。現在的 P2P 應用就已經使主幹經常阻塞,只要有 5% 的客戶在全速使用網路,其它用戶網速將嚴重受損,而將主幹網路帶寬在短時間內擴展 20 倍幾乎是不可能。


多播概念

多播(Multicast,台灣又譯作多點發送、多點廣播或群播,中國大陸又譯作組播)是指把信息同時傳遞給一組目的地址。它使用策略是最高效的,因為消息在每條網路鏈路上只需傳遞一次,而且只有在鏈路分叉的時候,消息才會被複制。

與多播相比,常規的點到點的傳遞被稱作單播。當以單播的形式把消息傳遞給多個接收方時,必須向每個接收者都發送一份數據副本。由此產生的多餘副本將導致發送方效率低下,且缺乏可擴展性。不過,許多流行的協議用限制接收者數量的方法彌補了這一不足(例如:XMPP)。

多播地址

多播組可以是永久的也可以是臨時的。多播組地址中,有一部分由官方分配的,稱為永久多播組。永久多播組保持不變的是它的 IP 地址,組中的成員構成可以發生變化。永久多播組中成員的數量都可以是任意的,甚至可以為零。那些沒有保留下來供永久組播組使用的 IP 多播地址,可以被臨時多播組利用。

乙太網傳輸單播 IP 報文的時候,目的 MAC 地址使用的是接收者的 MAC 地址。但是在傳輸多播報文時,傳輸目的不再是一個具體的接收者,而是一個成員不確定的組。所以使用的是多播 MAC 地址。

多播 MAC 地址是和多播 IP 地址對應的。IANA 規定,多播 MAC 地址的高 24 位為 0x01005e,低 23 位的 MAC 地址為多播 IP 地址的低 23 位。

由於 IP 多播地址的後 28 位中只有 23 位被映射到 MAC 地址,這樣就會有 32 個 IP多播地址映射到同一 MAC 地址上。

多播地址分配情況

224.0.0.0 - 224.0.0.255 為預留的多播地址(永久組地址),地址 224.0.0.0 保留不做分配,其它地址供路由協議使用。

224.0.1.0 - 224.0.1.255 是公用多播地址。

224.0.2.0 - 238.255.255.255 為用戶可用的多播地址(臨時組地址),全網範圍內有效。

239.0.0.0 - 239.255.255.255 為本地管理組播地址,僅在特定的本地範圍內有效。

永久的多播地址分配情況

224.0.0.0 基準地址(保留)

224.0.0.1 所有主機的地址 (包括所有路由器地址)

224.0.0.2 所有多播路由器的地址

224.0.0.3 不分配

224.0.0.4 DVMRP 路由器

224.0.0.5 所有 OSPF 路由器

224.0.0.6 OSPF DR/BDR

224.0.0.7 ST 路由器

224.0.0.8 ST 主機

224.0.0.9 RIP-2 路由器

224.0.0.10 Eigrp 路由器

224.0.0.11 活動代理

224.0.0.12 DHCP 伺服器/中繼代理

224.0.0.13 所有 PIM 路由器

224.0.0.14 RSVP 封裝

224.0.0.15 所有 CBT 路由器

224.0.0.16 指定 SBM

224.0.0.17 所有 SBMS

224.0.0.18 VRRP

多播優點

需要相同數據流的客戶端加入相同的組共享一條數據流,節省了伺服器的負載。

由於多播協議是根據接受者的需要對數據流進行複製轉發,所以服務端的服務總帶寬不受客戶接入端帶寬的限制。IP 協議允許有 2 億 6 千多萬個(268435456)組播,所以其提供的服務可以非常豐富。

此協議和單播協議一樣允許在 Internet 寬頻網上傳輸。

多播缺點

與單播協議相比沒有糾錯機制,發生丟包錯包後難以彌補,但可以通過一定的容錯機制和 QOS 加以彌補。

現行網路雖然都支持組播的傳輸,但在客戶認證、QOS(指一個網路中能夠利用各種基礎技術,為指定的網路通信提供更好的服務能力。QOS 是網路的一種安全機制,用來解決網路延遲和阻塞等問題的一種技術。)等方面還需要完善。

儘管 IP 多播是一個非常令人滿意的概念模型,但它對於網路內部的狀態需求要比僅提供儘力而為服務的 IP 單播模型大得多,在這一點上已經遭到了一些人的批評。更糟的是,到目前為止還沒有一種機制能保證 IP 多播模型可以被擴展到足以容納數以百萬計的發送者和多播組的地步,而這往往又是使完全通用的多播應用成為商用互聯網中的實際應用的必要條件。


廣播概念

廣播(Broadcast)是指封包在計算機網路中傳輸時,目的地址為網路中所有設備的一種傳輸方式。實際上,這裡所說的所有設備也是限定在一個範圍之中,稱為廣播域。

並非所有的計算機網路都支持廣播,例如 X.25 網路和幀中繼都不支持廣播,而且也沒有在整個互聯網範圍中的廣播。IPv6 亦不支持廣播,廣播相應的功能由多播代替。

通常,廣播都是限制在區域網中的。比如:乙太網或令牌環網路,因為廣播在區域網中造成的影響遠比在廣域網中小得多。

廣播地址

乙太網和 IPv4 網都用全 1 的地址表示廣播,分別是 ff:ff:ff:ff:ff:ff 和 255.255.255.255。

廣播優點

網路設備簡單,維護簡單,布網成本低廉。

由於伺服器不用向每個客戶機單獨發送數據,所以伺服器流量負載極低。

廣播缺點

無法針對每個客戶的要求和時間及時提供個性化服務。

網路允許伺服器提供數據的帶寬有限,客戶端的最大帶寬=服務總帶寬。例如有線電視的客戶端的線路支持 100 個頻道(如果採用數字壓縮技術,理論上可以提供 500 個頻道),即使服務商有更大的財力配置更多的發送設備、改成光纖主幹,也無法超過此極限。也就是說無法向眾多客戶提供更多樣化、更加個性化的服務。

廣播禁止在 Internet 寬頻網上傳輸。


任播概念

Anycast 最初是在 RFC1546 中提出並定義的,根據 RFC1546 的說明 IPv4 的任播地址不同於 IPv4 的單播地址,它建議從 IPv4 的地址空間分配出一塊獨立的地址空間作為任播地址空間。

Anycast 提供的是一種無狀態的、儘力而為的服務,目前對於 Anycast 的中文譯稱主要有任播、泛潘、選播等。任播的基本概念是從物理主機設備中分離出的邏輯服務標識符,任播地址可以根據服務類型來分配,使得網路服務擔當一個邏輯主機的角色。

RFC1546 定義的這種任播沒有得到廣泛的使用,在 1998 年的 RFC2373 規定了 IPv6 定址體系結構。在這個文檔中改進了任播的定義:發送到一個任播地址的報文被傳送到由該地址標識的介面之一(根據路由協議的距離量度最近的一個)。RFC2373 定義的 IPv6 的任播模型沒有限制路由選擇的下部結構,也沒有限制可使用該服務的上部協議。

RFC3513 (廢棄了 RFC 2373)中,進一步對任播進行了定義:任播地址被分配給兩個以上的介面 (一般指不同 IP 地址的節點) ,而發送到這個地址上的分組被路由到最近的介面。這裡最近可以是指路由器跳數、伺服器負載、伺服器吞吐量、客戶和伺服器之間的往返時間 (RTT,round trip time)、鏈路的可用帶寬等特徵值 (metric) 決定。

在實際應用中,任播 (Anycast) 是一種網路定址和路由的策略。Anycast 採用將一個單播地址分配到處於 Internet 中多個不同物理位置的主機上,發送到這個主機的報文被網路路由到路由協議度量的最近的目標主機上。

例如:在 IP 網路上通過一個 Anycast 地址標識一組提供特定服務的主機,同時服務訪問方並不關心提供服務的具體是哪一台主機(比如:DNS 或者鏡像服務),訪問該地址的報文可以被 IP 網路路由到這一組目標中的任何一台主機上。

任播與單播、廣播和組播區別

在單播中,在網路地址和網路節點之間存在一一對應的關係。

在廣播和多播中,網路地址和網路節點之間存在一對多的關係。每一個目的地址對應一群接收可以複製信息的節點。

在任播中,網路地址和網路節點之間存在一對多的關係。每一個地址對應一群接收節點,但在任何給定時間,只有其中之一可以接收到傳送端來的信息。

在互聯網中,通常使用邊界網關協議來實現任播。

任播優點

不同客戶端將訪問不同目的主機,此過程對客戶端透明,從而實現了目的主機的負載均衡。

當任意目的主機接入的網路出現故障,導致該目的主機不可達時,客戶端請求可以在無人為干預的情況下自動被路由到目前可達的最近目的主機,在一定程度上為目標主機提供了冗餘性。

當目的主機受到 DoS 攻擊而無法到達時,由於網路不可到達,客戶端請求也將路由到其它目的主機上。而在 DDoS 攻擊時,由於任播的負載均衡效應,避免了單台目的主機承受所有攻擊流量,因此在一定程度上為目的主機提高了安全性。

因為任播利用路由度量到最近的目的主機,提高了客戶端響應速度。

任播缺點

使用任播中的共享單播地址不能作為客戶端發起請求,因為請求的響應不一定能返回到發起的任播單播地址。因此,目前任播僅適合一些特定的上層協議。從目前的實際應用來看,任播最廣泛的應用是 DNS 的部署。

什麼是 BGP Anycast

BGP Anycast 就是利用一個或多個 AS 號碼在不同的地區廣播相同的一個 IP 段。利用 BGP 的尋路原則,越短的 AS Path 會選成最優路徑,從而優化了訪問速度。

BGP Anycast 相較於 IP Anycast 多了一個 BGP AS,也就是說宣告的這段 IP 擁有獨立的 AS 號,屬於獨立的自治域。

阿里的 DNS 就是一個典型的 BGP AnyCast 服務,本質上 BGP Anycast 就是不同伺服器用了相同的 IP 地址。

AnyCast 的實現原理

配置 AnyCast 節點組

配置三個節點的 AnyCast 組

組的三個節點都使用相同的 IP 地址 10.5.0.1

配置 AnyCast 的等價路由

客戶端接入路由宣告相同目標地址三條路由

三條路由的度量值 (Metric) 值等價

可使用靜態或動態協議

配置 AnyCast 的多路由節點

經過之前的配置連續的數據包可被送到不同的任播節點

AnyCast 不同源節點的路由選擇

經過之前的配置來自不同節點的流量可被路由到不同的節點

接收數據包的伺服器有單播路由決定

所以通訊模型適用於單個請求或單個響應的協議

域內基於 IPv4 的 AnyCast 服務

地址的選擇

目前的做法是從單播 IP 地址空間分配任播地址。

指定任播使用的子網(盡量小)。

利於域間的路由宣告。

常用的指定是 24。

子網有可能不會附加任何介面。

主機的配置

配置主機接收流量的任播地址(配置與迴環口)

配置每個主機的唯一管理地址

配置迴環口地址

查看迴環口地址

服務的配置

具體的業務配置(例如DNS),這裡不詳述。

網路的配置

A. 域內的配置

如果配置的服務完全在你的路由域內,則只需要考慮域內配置,條件如下:

所有的任播節點都在域內

多個域內的位置

需要配置路由將任播流量傳遞給伺服器。

B. 靜態的 IGP 路由配置

在路由器上配置靜態路由(主機路由),確保路由通過域傳播。

方案優點: 無需服務中斷即可重定向伺服器。

方案缺點: 伺服器故障沒有狀態檢測。

C. 動態的 IGP 路由配置

在任播伺服器上運行基於主機路由的守護進程,如 GateD、Zebra 或 Quagga。

任播伺服器本身是路由的發起者。

當主機停機時,路由被自動撤銷。

方案優點:可檢測到任播伺服器的狀態。

方案缺點:任播伺服器需要自建服務不可用路由自動撤銷的機制。

域外基於 IPv4 的 AnyCast 服務

配置原則

域外的實現基於 BGP 協議

域外的配置方式遵守傳統 BGP 基本規則

網路設置步驟

宣告全球唯一的 AS 號

宣告直連的網段

宣告鄰居路由的 AS 號和 IP 段

服務配置步驟

配置服務去監聽任播 IP


http://www.google.com

http://t.cn/RBkIvnV

http://t.cn/RBkpQfh

http://t.cn/8Ftlhp9

http://t.cn/RrAJNQ6

http://t.cn/RGCgN9e

今日思想

Love the life you live, live the life you love.

喜歡自己過的生活,過自己喜歡的生活。

——佚名


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 運維之美 的精彩文章:

使用 Nginx的image_filter 模塊來構建動態縮略圖伺服器

TAG:運維之美 |