任意播技術

轉自:[url]http://sj.media.edu.cn/xiayidai/index2.php?id=2&IDx=275[/url]
通訊 是支持導向服務地址的,可是目前IPv6中它的不少定義是模糊的,而且在控制路由方面沒有達成一致的協議標準,所以節點間任播通訊仍然沒法實現。
 
 
在本文中首先說明了基於IPv6的任播通訊,及目前在該領域中存在許多可能的應用,並指出一些問題和與之對應的解決辦法,隨後介紹了一種使用特殊任播地址來創建TCP鏈接的任播地址解析協議(AARP),使得任播地址在適應已經存在的應用和高層協議時,不須要修改或者擴展的狀況下更加有效。
 
1 IPv6 地址類型的概述
 
IPv6 地址長度爲128比特,地址按照其傳輸類型分爲三種,即單播地址(UnicastAddress)、多播地址(Multicast Address)和任播地址(Anycast Address)。單播和多播地址在IPv4中已經存在,任播地址是IPv6中新的成員,RFC 2723IPv6地址結構中的的任播地址定義爲一系列網絡接口(一般屬於不一樣的節點)的標識,其特色是:發往一個任播地址的分組將被轉發到由該地址標識的最近的一個網絡接口(最近的定義是基於路由協議中的距離度量)。
 
單播地址是每一個網絡接口的惟一的標識符,多個接口不能分配相同的單播地址,帶有一樣目的地地址的數據包被髮往同一個節點;另外一方面,多播地址被分配給一組節點,組中全部成員擁有一樣的組播地址,而帶有一樣地址的數據包同時發給全部成員;相似於多播地址,單一的任播地址被分配給多個節點(任播成員),但和多播機制不一樣的是:每次僅有一個分配任播地址的成員與發送端通訊。通常與任播地址相關的有三個節點,當源節點發送一個目的地地址爲任播地址地數據包時,數據包被髮送給三個節點中的一個,而不是全部的主機。任播機制的優點在於源節點不須要了解服務節點或目前網絡的狀況,而能夠接收特定服務,當一個節點沒法工做時,帶有任播地址的數據包又被髮往其餘兩個主機節點,從任播成員中選擇合適的目的地節點取決於任播路由協議。
 
2 IPv6 任播技術的分析
 
任播技術是一種新的網絡應用,它可以支持把一樣的地址能夠分配給多個節點去提供特定服務的以服務導向的地址,而帶有任播目的地地址的數據報可以使用相同的任播地址並被傳給衆多節點中的任意一個。因特網研究任務組(IRTF)在1993年到RFC 1546中已經定義了任播技術的做用:主機向一個任播地址發送數據報,網絡負責盡力將數據報傳遞到至少一個,最好也是一個,按任播地址接收數據的服務器上。'採用任播機制的初衷是完全去簡化在互聯網中尋找合適服務器的任務;任播通訊的基本概念是從物理主機設備中分離出的邏輯服務標識符,任播地址能夠根據服務類型來分配,使得網絡服務擔當一個邏輯主機的角色。
 
雖然目前任播技術的定義不是十分清楚,可是終端主機經過路由器是被基於包交換所決定。任播技術的概念並不侷限於網絡層,它也能夠在其餘層實現(例如:應用層),網絡層和應用層的任播技術均有優勢和缺點。
 
3 IPv6 任播技術的應用
 
適合於任播通訊的應用有不少,其中比較重要的一個應用是服務器位置。發送端的主機能夠在衆多一樣功能的主機中選擇其中一個,若是合理地利用任播路由方法去將任播需求均勻的分配到主機上,任播主機之中的負載分配目標能夠達到。在任播主機中使用簡便的隨即選擇方法在網絡層任播技術中卻不會奏效,例如:CPU的負載,由於很難知道每一個服務器的資源使用狀態,而應用層任播技術使用該方法倒是實用的。
 
另外一個重要應用是服務位置,發送端主機能夠經過說明任播地址去從多個任播主機中選擇與最佳的、最小時延的、最大輸出量的主機進行通訊,例如:在諸如移動ad hoc網絡這類動態改變環境下運用該方法特別適用。經過網絡層的任播技術,節點能夠和合適的或是最近的服務器進行通訊,並經過應用層任播技術得到該類服務。
 
網絡層任播技術的優點在於能夠提供令源節點在無須藉助服務節點和網絡的狀況下,可以接收到特定服務機制的簡便方法。
 
4 IPv6 任播技術的問題和解決方法
 
IPv6 任播技術仍然存在許多問題。首先是任播技術的使用場合和應用任播技術的優勢,其次是基於IPv6的任播技術是一個路由協議並無被包括IPv6的規範說明中,而這正是使得任播技術應用更普遍不可獲缺的條件,路由器應該在決定目的地網絡讓任播包能夠合適的傳送地過程當中起到主動做用。目前的任務是須要設計和應用合適的任播路由協議到任播應用場合之中,並讓互聯網可以逐步去支持任播技術。例如:任播路由即便在因特網中只有少許的節點或路由器支持任播技術時也可以恰當的工做。全部基於TCP和一些基於UDP的協議在互聯網應用中已經說明了,端主機之間創建通訊過程,並在交換信息過程當中認爲它們是一致的。
 
4.1 主機向任播成員通告參與的問題
 
節點申明除了針對任播地址的公開路由信息之外,它們能夠接受的數據報,而在IPv6的技術說明中節點必須是一個路由器。一個主機準備加入成爲任播成員或離開時,它必須有不一樣的能力去向最近的任播路由器通告它目前的狀態(加入或離開)。
4.2 支持高層申明協議的問題
 
由於任播技術擁有無狀態的特性,它不能確保屬於相同的任播地址的全部數據報會傳到同一個目的地節點,然而這將會致使的是諸如TCP這類的全狀態協議不被支持這一嚴重的問題。當主機向任播地址發起TCP鏈接時,接收端主機爲了確認信息包,它將不能設置本身的任播地址做爲源地址。IPv6技術說明中不容許任播地址來源於在包頭設置的源地址,這主要是因爲IPv6任播地址沒有定義單獨的源節點。若是協議容許任播地址被設置到包頭的源地址,接受端主機在通訊過程當中將不能確信全部發送的數據包來自於同一個主機,也就是說主機的任播地址不能接收到包確認。
 
4.3 實現任播路由的問題
 
目前現存任播技術的標準定義路由協議都很不清楚,所以在設計IPv6任播路由協議時還存在一些相關的技術問題。
 
a)可量測性問題。因爲任播成員無論它們實際的前綴時位置是分散的,因此針對任播地址的路由條目沒法被彙集。所以針對任播地址的路由條目必須分別被存儲在路由器中,當任播地址獲得普遍應用時,路由表會變得十分擁擠。
 
b)安全問題。維持任播成員關係特別重要,對主機得到成員資格最簡單的方式是它只需廣播針對相關任播地址進入路由器的路由條目。可是這種方法有時會致使嚴重的安全問題,即任播主機能夠自由的在路由表中添加或刪除路由條目。
 
c)選擇任播成員資格的標準。不一樣的應用須要不一樣的標準,若是應用中須要快速響應,在源節點和任播節點之間的傳播時延就至關重要,任播成員資格的最近節點應該做出選擇。任播路由機制的標準的選擇對於任播通訊容量能力影響極大。
 
任播地址重要的一個特色是任播地址必須從同一個地址空間分配做爲一個單播地址,於是從單播地址中沒法加以區別。RFC1546原來推薦的是分配任播機制自己的地址空間,爲了但願極大地下降因爲應用中錯誤而沒法辨識出任播地址的風險。當任播路由器配置時,互聯網中的一些路由器不可能處理任播地址,這些地址若是被分配在單播地址空間中,對於繼承的路由器針對通訊去配置特殊的操做變得沒有必要。任播路由器去判斷接收包的目的地地址是不是任播地址或是單播地址是很困難的,設計路由協議也會存在問題的。
 
5 新的任播地址解析協議及應用
 
任播地址解析協議(AARP)能夠知足IPv6任播和高層協議(諸如:沒有必要去修改應用和協議的TCPUDP)。更明確的說,實行AARP的目的是爲了解決專門用於通訊單播地址的任播地址的問題。AARP用來做爲一種寫在原始應用編程接口(API)之上的動態連接庫(DLL),這種庫其實是可以提供一套與原始IPv6API插槽相同的API插槽,並用來解決任播地址的AARP庫,它能夠在呼叫原始API以前將任播地址轉換成相應的通訊單播地址。任播地址僅僅用於應用層和AARP庫層,而在AARP庫層如下的層並不採用任播地址,只是處理轉換後的單播地址。
 
5.1 AARP 的地址解析過程
 
假設主機C想和任播地址爲AA的另外一個主機創建任播通訊,任播地址解析過程以下:(1)主機C呼叫帶有參數的任播地址的socket API模塊(譬如:TCP中的connect( ) ),AARP庫的API替代API的套接層面而被呼叫。(2AARP庫在被叫者的功能中將任播地址轉換成單播地址。(3)轉換後,AARP庫經過單播地址呼叫原來的socket API。(4)當通訊被創建之後,從主機C發出的全部信息包的目的地地址都給被賦以單播地址,並傳輸給主機S
 
5.2 AARP 的地址轉換方法
 
IPv6的協議規範得知當不能自身肯定任播地址時,鏈接任播地址的主機通訊應該至少從目的地主機接收到一個數據包。地址轉換有如下兩種方法:
 
5.2.1 探測數據包法(由客戶端發起)
 
主機在進行通訊以前首先發送一個探測數據包給任播地址,它能夠從返回數據包的源地址中獲得目的地主機的單播地址。
 
5.2.2 捎帶確認法(由服務器端發起)
 
捎帶確認法指的是經全雙工(雙向同時)數據鏈路,不用專門(確認)報文返回確認信息所用的技術。與一個方向的報文流有關的確認信息鉗在反方向正常攜帶數據的報文流中,當數據包從通訊對端返傳回來時,任播主機將任播地址附加到數據包。經過檢查附加在數據包上的信息,能夠確認數據包是從與任播地址相聯繫的主機上發送出的。
 
探測包方法中須要提供給探測數據包額外的網絡帶寬,這將會浪費網絡資源。與之相對的,捎帶確認方法須要修改應用使得任播地址能夠捎帶到數據包上。因爲實際應用中應當避免應用的任何修改,必須在AARP中包括單播地址來使用探測包法。
相關文章
相關標籤/搜索