任播
目前任播技術的定義不是十分清楚,但是終端主機通
過路由器是被基於包交換所決定。任播技術的概念並不局限於網路層,它也可以在其他層實現(例如:套用層),網路層和套用層的任播技術均有優點和缺點。根據RFC2526(Reserved IPv6 Subnet Anycast Addresses, March 1993),任播地址是“IPv6中保留的地址,指定給一個或多個可能屬於不同物理節點的網路接口。其屬性為傳送到任播地址的數據分組會按照路由選擇協定的距離方法,被路由選擇到有該地址的最近接口。”另一特點是,任播地址與常規單播地址相似。向單播地址傳送數據分組的節點並不需要知道它是單播地址。
Anycasting最初是在RFC1546中提出並定義的,它的最初語義是,在IP網路上通過一個Anycast地址標識一組提供特定服務的主機,同時服務訪問方並不關心提供服務的具體是哪一台主機(比如DNS或者鏡像服務),訪問該地址的報文可以被IP網路路由到這一組目標中的任何一台主機上,它提供的是一種無狀態的、盡力而為的服務。
在RFCl546(Host Anycasting Service, November 1993)中,論述了任播的目的;但那時還沒有開發IPv6定址。理由是客戶端需要兩個或多個伺服器提供的服務。客戶端不介意哪個伺服器提供服務,重要的一點是使客戶端的查找服務更容易。例如,客戶可以鍵入請求並被連線到最近的伺服器,而不必從信息伺服器列表中選擇。任播也提供容錯,因為如果有伺服器出現故障,伺服器組中的其他伺服器可以提供服務。
RFC2373(IP Version 6 Addressing Architecture, July 1998)提供了較新的說明和動機:任播地址的一個期望套用是標識屬於某個提供網際網路服務的機構的路由器集合。這種地址可以用作IPv6路由標題的中間地址,使數據分組通過某一聚合或聚合序列傳遞。其他可能的用途是標識屬於某一子網的路由器組或提供進入某一路由範圍入口的路由器組。
RFC2373標準對任播的定義是,當一個單播地址被分配到多於一個的接口上時,發到該接口的報文被網路路由到由路由協定度量的“最近”的目標接口上。與Unicast和Multicast類似,Anycast也是IP網路的一種通信模式。Unicast允許源結點向單一目標結點傳送數據報,Multicast允許源結點向一組目標結點傳送數據報,而Anycast則允許源結點向一組目標結點中的一個結點傳送數據報,而這個結點由路由系統選擇,對源結點透明;同時,路由系統選擇“最近”的結點為源結點提供服務,從而在一定程式上為源結點提供了更好的服務也減輕了網路負載。
目前,任意點傳送地址僅被用做目標地址,且僅分配給路由器。任意點傳送地址是從單點傳送地址空間中分配的,使用了單點傳送地址格式中的一種。任播地址結構如圖1所示。
子網-路由器任意點傳送地址必須經過預定義,該地址從子網前綴中產生。為構造一個子網-路由器任意點傳送地址,子網前綴必須固定,餘下的位數置為全“0”。一個子網內的所有路由器接口均被分配該子網的子網-路由器任意點傳送地址。子網-路由器任意點傳送地址用於一組路由器中的一個與遠程子網的通信。
對任意的任播地址,都有最長的地址前綴P,它限定了一個拓撲區域,所有屬於該任播地址的接口都處在這個區域中。在P所限定的這個區域中,屬於該任播地址集合的每一個成員都必須作為尋經系統中的單獨入口而被廣告;在該區域之外,該任播地址也許會聚集到對該前綴P的尋經廣告中。
一個任播地址有一個拓撲區域,屬於該任播地址的所有成員都位於其中。在該區域內,每個成員必須作為路由選擇系統中的一個獨立項公布,但在區域外,這些成員作為單一的聚合任播地址存在。
RFC1546論述了一些潛在的問題。例如,IP是無國界的,而且並不記錄較早的數據報是在哪裡傳遞的。如果客戶端向任播地址傳送兩個數據報,一個可能會傳送到某一伺服器上,而另一個可能會傳送到另一個伺服器上。若要確保選定任播伺服器後,所有以後的數據分組都傳輸到該伺服器,需要一種機制。任播數據報還有可能會被傳送到服務於該任播地址的所有主機上。鑒於這些問題,RFC提供了IP任播較正確的定義,即“向服務於任播地址的至少一個主機,最好僅一個主機提供任播數據報的無國界最佳效果傳遞的服務。
RFC認為解決方法是,在第一次數據報交換中了解客戶端地址並將其用在所有以後的對話中,要求應用程式保持狀態。有關任播定址、其體系結構、在應用程式中的使用、安全性考慮以及其他細節的RFC2526提供了更多有關如何與IPv6一起實現任播的最新建議。
特點
任播通信模式的特點,使它在IP網路中具有了一定程式的套用前景。首先,分布的服務共享相同的IP位址,同時在IP層進行透明的服務定位,這使得各種網路服務特別是套用層服務具有更強的透明性,比如DNS,在IPv6網路中它可以共享一個熟知的IP位址,用戶不需要特殊配置也不用關心訪問的是哪一台DNS伺服器;其次,路由系統選擇了“最近”的服務,縮短了服務回響的時間,同時減輕了網路負載;最後,相同的服務在網路上冗餘分布,路由系統可以提供機制選擇負載相對輕的頻寬相對高的路徑來轉發報文,這樣就給用戶帶來了兩個方面的好處:
1)減弱了DOS攻擊對用戶帶來的影響。當任播組中某一個成員或者幾個成員受到攻擊時,負責報文轉發的路由器可以根據各個組成員的回響時間來決定報文應該轉發到哪個成員上,這樣受到攻擊的成員由於沒有回響,所以報文就不會被轉發到那裡,同時,由於任播提供的服務訪問透明性,組成員也相對較難受到DOS攻擊。
2)減弱了網路擁塞給用戶帶來的影響。同上面的道理,當任播的某些組成員處在擁塞的網段時,它的回響時間就較長,報文可以被轉發到回響較好的成員那裡。
雖然任播在以上方面有一定的優勢,但是目前任播的套用並不如期待中的一樣。套用層對任播的使用主要有伺服器自動選擇、服務自動定位,伺服器自動選擇可以使用在需要對某種套用層服務提供多個鏡像伺服器的情況,比如FTP服務、線上遊戲服務等。服務自動定位可以使用在主機不需要特別配置而使用一種知名服務的情況,典型的如DNS。網路層實現任播主要是依據任播路由表對報文進行透明轉發,向上層提供服務,這樣套用層就不需要專門的任播程式模組。任播路由表記錄了一個任播組所有成員的Unicast地址,當路由器收到一個指向任播地址的報文時,首先搜尋任播路由表找到相應的任播組,然後把報文轉發到這個組中的一個成員上。鑒於套用層對全球範圍內的任播的需求,所以促成了對網路層全球任播機制的研究。