Anycast

IP網路上提供特定服務的主機

Anycast最初是在RFC1546中提出並定義的,它的最初語義是,在IP網路上通過一個Anycast地址標識一組提供特定服務的主機,同時服務訪問方並不關心提供服務的具體是哪一台主機(比如DNS或者鏡像服務),訪問該地址的報文可以被IP網路路由到這一組目標中的任何一台主機上,它提供的是一種無狀態的、儘力而為的服務。目前對於Anycast的中文譯稱主要有,“任播”、“泛播”、“選播”等,本文一律使用“任播”一詞,或者直接使用英文單詞“Anycast”。

基本概況


Anycast 指IPV6協議中一個發送方同最近的一組接收方之間的通信。Anycast 的定義是: 當一個單播地址被分配到多於一個的介面上時,發到該介面的報文被網路路由到由路由協議度量的“最近”的目標介面上。 Anycast 允許源結點向一組目標結點中的一個結點發送數據報,而這個結點由路由系統選擇,對源結點透明;同時,路由系統選擇“最近”的結點為源結點提供服務,從而在一定程度上為源結點提供了更好的服務也減輕了網路負載。正是Anycast 這一通信模式的特點,使它在IP網路中具有了應用前景。首先,分佈的服務共享相同的IP地址,同時在IP層進行透明的服務定位,這使得各種網路服務特別是應用層服務具有更強的透明性,比如DNS(Domain Name System,域名系統),在IPv6網路中它可以共享一個熟知的IP地址,用戶不需要特殊配置也不用關心訪問的是哪一台DNS伺服器;其次,路由系統選擇了“最近”的服務,縮短了服務響應的時間,同時減輕了網路負載;最後,相同的服務在網路上冗餘分佈,路由系統可以提供機制選擇負載相對輕的帶寬相對高的路徑來轉發報文,這樣就給用戶帶來了兩個方面的好處:
1) 減弱了分散式拒絕服務攻擊(DDoS:Distributed Denial of Service)對用戶帶來的影響。當 Anycast 組中某一個成員或者幾個成員受到攻擊時,負責報文轉發的路由器可以根據各個組成員的響應時間來決定報文應該轉發到哪個成員上,這樣受到攻擊的成員由於沒有響應,所以報文就不會被轉發到那裡,同時,由於 Anycast 提供的服務訪問透明性,組成員也相對較難受到DDoS攻擊。
2) 減弱了網路擁塞給用戶帶來的影響。同上面的道理,當 Anycast 的某些組成員處在擁塞的網段時,它的響應時間就較長,報文可以被轉發到響應較好的成員那裡。
Anycast與Multicast和Unicast是三種通信方式,其中Multicast是指一個發送方同多個接收方之間的通信;Unicast 是指單個發送方和單個接收方之間的通信。Anycast 的用途之一是用一個主機進行組內所有主機路由表的更新工作。IPV6可以自動判斷最近的網關,然後將數據包傳給此網關。反過來,此主機可以對組內所有的主機進行Anycast,直到完成整個路由表的更新工作。

Multicast


Multicast 的中文譯名是多播,它是指網路中一個節點發出的信息被多個節點收到。與此相對的有Unicast和Broadcast,前者是指一個節點發出的信息只被一個節點收到,後者是指一個節點發出的信息被子網內所有節點收到。實際上,在數據鏈路層和網路層都有Multicast,通常所說的Multicast大多是針對IP的。這種技術用於多媒體應用、多用戶交互(如聊天室)、軟體分發等,相比與傳統的Unicast可以大大提高效率。在子網內實現 Multicast 較為簡單,跨越子網時需要路由器、網關等設備的支持。

Unicast


Unicast(單播):在客戶端與媒體伺服器之間需要建立一個單獨的數據通道,從一台伺服器送出的每個數據包只能傳送給一個客戶機,這種傳送方式稱為單播。指網路中從源向目的地轉發單播流量的過程。單播流量地址唯一。每個用戶必須分別對媒體伺服器發送單獨的查詢,而媒體伺服器必須向每個用戶發送所申請的數據包拷貝。這種巨大冗餘首先造成伺服器沉重的負擔,響應需要很長時間,甚至停止播放;管理人員也被迫購買硬體和帶寬來保證一定的服務質量。文字單播方式下,只有一個發送方和一個接收方。與之比較,組播是指單個發送方對應一組選定接收方的一種通信,任意播是指任意發送方對應一組較為接近的接收方間的一種通信。早期的點對點通信含義類似於單播。