洪陽
(杭州師范大學錢江學院計算機科學與技術系,浙江 杭州 310012)
網絡的連通性和安全性具有十分重要的戰略意義,只通過一條鏈路連接到骨干網絡的模式容易發生單點失效而導致網絡癱瘓,因此,許多企業和網絡提供者(ISP)都迫切希望連接兩個以上的提供者來實現更好的性能。據統計,目前Internet有至少60%的AS域有兩個以上的ISP,而且數量在不斷增加。AS域通過使用多條鏈路與Internet連接,建立一個可靠的、具有容錯能力的網絡,這就是互聯網的多宿主概念。
IPv4網絡主要是通過邊界網關協議BGP來實現多宿主。BGP是目前Internet上廣泛使用的外部網關協議,該協議允許各個自治系統根據自身情況獨立地配置IP策略來選擇和發布路由信息,交換網絡可達信息,是ISP互連的基本手段。Internet上每個ISP都至少擁有一個唯一的AS號,并且通過BGP向其對等互聯同伴廣播其網絡信息。BGP交換的網絡可達性信息提供了足夠的信息來檢測路由回路并根據性能優先和策略約束對路由進行決策。
路由策略是通過路由系統來解決多宿主問題的一種策略。路由系統是Internet的基礎設施和用戶網絡的關鍵支撐,多宿主站點經過路由控制或路由優化以確定使用哪一條路徑連接到Internet。路由策略可以分為使用BGP的IPv6多宿主、“隧道”機制的IPv6多宿主和ISP之間協商的多宿主。
主機中心策略是指通過主機來實現鏈路容錯性、均衡負載等能力,由主機對源地址和目的地址進行選擇。多宿主站點的每個主機都擁有多個全局IP地址,選擇不同的源地址相當于選擇了不同的ISP??梢詫AROS和MobileIPv6看成是主機中心策略解決多宿主的方法。
網關策略是指在多宿主站點和上游ISP網絡之間使用一個“網關”,通過對源地址的轉換來達到多宿主的目的。使用類似NAT的IPv6多宿主,MHTP和MHAP等都屬于網關策略。
ASI機制重點研究當多宿主站點與對端主機進行數據傳輸時,當路徑發生變化時應如何維持會話存活性,使上層服務不受影響的問題。若多宿主的主鏈路失效,多宿主主機選擇備選ISP繼續通信。為了避免備選ISP邊界路由器對原始報文的過濾,我們選擇多宿主站點出口路由器使用屬于其空間的地址替換原始IP地址,并在報文頭中隱匿報文原始的IP地址。當報文到達目的站點后,對端主機對報文源地址選項進行識別。
在ASI機制報文隱匿的過程中,站點出口路由器對報文頭部進行修改。在修改報頭源地址項的同時,需要一個新的選項將初始源地址作為候選地址保存。這樣報文到達對端主機時才能識別,將候選地址還原成源地址。同樣,對端主機向多宿主主機發送報文時也需要定義一個新的擴展選項,將要隱匿的地址放入其中。
IPv6簡化了報頭格式,盡管IPv6的地址長度是IPv4的四倍,但是IPv6的基本報頭只是IPv4報頭長度的兩倍,同時取消了對報頭中可選項長度的嚴格限制,增加了靈活性。報文頭的簡化使得IP的某些工作方式發生了變化。一方面,所有報頭長度統一,因此不再需要報頭長度字段。此外,通過修改報文分段的規則可以在報頭中去掉一些字段。IPv6中的分段只能由源主機進行,該報文所經過的中間路由器不能再進行任何分段。最后,去掉IP頭校驗和不會影響可靠性,這主要是因為頭校驗和將由更高層協議(UDP和TCP)負責。下面是對IPv6報頭格式的描述,如下圖所示:
版本:長度為4位的網際協議版本號,對于IPv6其值為60
類別:長度為8位,指明為該報文提供了某種“區分服務”。
流標簽:長度為20位,用于標識屬于同一業務流的包。
凈荷長度:長度為16位,它包括數據包凈荷的字節長度,即IPv6報頭后面所包含的字節數。
下一個報頭:指出后面緊跟的IPv6報頭的協議類型。它可以用來指出高層是TCP還是UDP,也可以用來指明IPv6擴展頭的存在。
跳數限制:長度為8位,每當一個節點對包轉發一次,這個字段就會被減1。如果該字段值為0,此包將被丟棄。
源地址:長度為128位,指出了IPv6包的發送方。
目的地址:長度為128位,指出了IPv6包的接收方。
Linux下TCP/IP協議的體系結構可以分為四層概念模型,即應用層、傳輸層、網絡層和網絡接口層。最底層是網絡接口層,主要負責數據幀的接收和發送。接收來自物理介質的數據時,把它轉換到能被網絡協議識別的網絡緩沖區中,并傳遞到特定的網絡進行傳輸。發送數據時,把來自網絡層的網絡緩沖區數據發送到物理介質上,并接收硬件設備產生的應答信號。網絡層主要實現IP層協議,負責將數據包封裝或解封,并運行必要的路由算法。傳輸層能夠實現TCP或UDP協議,在計算機之間提供通信會話。應用層是建立在TCP/IP協議組之上的一系列用戶應用程序。
在ASI機制中多宿主主機向對端主機發送報文時,邊界路由器對報文源地址的隱匿過程主要是在網絡的IP層進行。因此可以通過對IP層接收和轉發數據包的代碼修改實現隱匿的過程。
報文經過多宿主站點出口路由器,從候選ISP接入Internet到達對端主機,報文的識別過程也是在對端主機的IP層完成。ASI Optional Header能夠被解封,將候選內容源地址重寫回數據包頭部,然后再交給上層處理協議。
Linux中實現了對路由器基本功能的完備支持,其原理是在Linux下用普通計算機添加多個網卡,每塊網卡上的設置必須符合所屬子網的相關屬性,在其上運行支持路由功能的操作。在Linux下通過一些基本的設置就可以配置成穩定簡單、功能齊全的路由器,取代硬件路由器。
我們采用的網絡測試工具是Iperf。Iperf是一個TCP/IP和UDP/IP的性能測量工具,能夠提供網絡吞吐率信息,以及抖動、丟包率、最大段和最大傳輸單元大小等統計信息,從而能夠幫助我們測試網絡性能。選擇的軟件版本是Iperf-2.0.2其安裝過程是在指定目錄下,按以下進行:/configure;make clean;make;makeinstall。在測量過程中,主要使用到兩個命令:PING命令和Iperf命令。PING命令可以用來測量指定報文大小的往返延遲時間,即RTT的平均值。PING命令是用戶測試TCP/IP配置、判斷連接問題的診斷工具。一臺主機通過發送一個ICMP請求報文到網上的另一臺主機并隨后監聽返回的應答報文來檢查本地主機與該機的網絡連接狀況。ICMP應答報文一般包含信息有:
IP地址:返回ICMP數據包的主機IP地址
字節數:返回ICMP數據包的字節數
TTL:在ICMP返回數據包中的IP頭中的TTL域的值
時間:數據包從送出到返回所消耗的時間erf命令在TCP下的主要功能有:可以測量網絡帶寬、報告MSS/MTU(最大傳輸單元)值的大小和觀測值、支持TCP窗口值通過套接字緩沖、當P線程或Win32線程可用時,支持多線程等等。我們使用Iperf命令來測量網絡的鏈接速度與報文大小的關系。
測量報文在正常路徑下(路徑1)傳輸時的往返延遲時間RTT和多宿主主機經過路徑切換后(路徑2)的RTT值,對它們進行比較。測量TCP鏈接速度和報文大小的關系,比較TCP鏈接速度在路徑1和路徑2中的區別。通過對ASI原型系統進行驗證,從幾組測試數據的比較結果我們可以看出,加入了隱匿和識別模塊對傳輸時延和TCP的鏈接速度都有影響。報文長度越大,RTT越大,說明報文在傳輸過程中的處理時間變長。報文長度越大,TCP的鏈接速度越大,報文改變傳輸路徑后,隱匿和識別過程使得TCP的鏈接速度降低。但是降低的幅度不大,表明了ASI機制的可行性。
[1]姚曉宇,趙晨,Linux內核防火墻Netfilter實現與應用研究,計算機工程,2003年.
[2]文偉平,文偉平,卿斯漢,蔣建春,王業君,應用IPv6路徑MTU探測時的防火墻設計,計算機工程,2005年.