Linux下IPV4與IPV6的互操作性研究
作為向下一代互聯網絡協議過渡的重要步驟,國際的IPv6試驗網--6bone在1996年成立了。現在,6bone已經擴展到全球50多個國家和地區,成為IPv6研究者、開發者和實踐者的主要平臺。CERNET國家網絡中心于1998年6月加入6bone,同年11月成為其骨干網成員。 電子科大作為教育網的西南主節點,在得到Nokia的IPv6路由器之后,積極參與IPv6技術研究,我們先查閱研究了大多數與IPv6有關的RFC文檔和相關技術資料,并且在此基礎上進行了很多網絡實驗。該文先簡單闡述了IPV6的必要性和IPv4與IPv6升級轉換的機制,然后具體闡明了在Linux操作系統下進行的IPv6網絡實驗及其結論。
一、使用IPv6的必要性
現在運行的因特網協議IPv4存在其固有的局限性,一是地址問題,IPv4的地址只有32位,這意味著總的地址數大約是40億,并且還有許多地址是不可用的。按照目前網絡的發展趨勢,到2005和2015年之間IPv4的地址就會耗盡,必須用另一種地址方案來替代它,二是IPv4提供的服務局限性,IPv4盡它的最大努力來傳送信息包,但是它不會保證提供給上層的服務是可靠的,沒有QoS(服務質量)的概念。這些問題都是IPv4的薄弱環節,致命弱點,另外因特網不斷提出對移動性、安全性以及多媒體業務的支持等問題,IPv4都無法解決,這樣就迫使我們必須引入下一帶因特網協議--IPv6。
二、IPv4與IPv6的互操作
要將現在的IPv4網絡升級到IPv6網絡,不可能所有的機器在同時啟用IPv6協議棧,配置好IPV6地址,安裝好IPV6應用程序,所以必須實現IPv4與IPv6絡之間的互操作及平滑升級機制。IPv4到IPv6的升級轉換機制的首要條件是答應IPv6和IPv4主機互操作;其次是在相互依靠性很小的情況下使IPv6的主機和路由器能在因特網中快速發展;第三是轉換對端用戶,系統治理員和網絡實施者來說易于理解和執行。IPv6轉換機制是一套主機和路由器執行的協議機制,有一套定址和配置的操作指導方案,盡可能減少轉換過程中造成的破壞。
IPv6轉換機制的主要目標如下:
可增加的升級和擴展性:單個IPv4的主機和路由器可在不需要其它的主機和路由器同時升級的情況下單獨升級成IPv6,新的IPv6主機和路由器可以后再一臺臺的安裝成IPv6。
最小的升級依靠性。將主機升級成IPv6的唯一先決條件是域名服務器必須先升級以處理IPv6地址記錄。
方便的尋址。當IPv4的主機和路由器升級到IPv6后,他們必須繼續用原來的地址。他們不需要指定新的地址。治理者不需制定新的地址分配方案。
很低的啟動開銷。將IPv4系統升級成IPv6很少或幾乎不需要預備工作。
IPv6轉換機制確保IPv6主機能和任何因特網上的IPv4通信,直到IPv4被淘汰,并在那時答應在小范圍內互相通信。這個特征保護了用戶已經在IPv4上的巨大投入并使得IPv6不會將IPv4孤立。基于以上原因,IPv4主機和路由器上與Ipv6主機和路由器現在廣泛采用了如下兩種互操作的機制:隧道技術和雙IP協議棧技術。
A.隧道技術:
隧道提供了一種利用IPv4路由基礎上傳輸IPv6包的方法。隧道應用于下面幾種應用中:路由器到路由器、主機到路由器、主機到主機和路由器到主機。路由器到路由器和主機到路由器隧道技術都是將IPv6包傳到路由器,隧道的終點是中間路由器,必須將IPv6包解出,并且轉發到它的目的地。隧道終點的地址必須由配置隧道節點的配置信息獲得,這種類型的隧道稱作人工配置隧道。當利用隧道到達IPv6的主干網時,假如一個在IPv4網絡和IPv6網絡邊界的IPv4/IPv6路由器的IPv4地址已知時,那么隧道的端點可以配置為這個路由器。這個隧道的配置可以被寫進路由表中作為"缺省路由"。這就是說所有IPv6目的地址符合此路由的都可以使用這條隧道,這種隧道就是默認配置的隧道。主機到主機和路由器到主機隧道技術都是將IPv6包傳到主機的,可以用IPv6包的信息獲得終點地址。隧道入口創建一個IPv4封裝頭并傳送包,隧道出口解包,去掉IPv4頭,更新IPv6頭,處理IPv6包。隧道入口節點需要保存隧道信息如MTU等。假如用于目的節點的IPv6地址是與IPv4兼容的地址,隧道的IPv4地址可以自動從IPv6地址繼續下來,因此也就不需要人工配置。這種隧道也就稱為自動隧道。
B.雙IP協議棧方式
雙協議棧方式包括提供IPv6和IPv4協議棧的主機和路由器。雙協議棧工作方式的簡單描述如下:假如應用程序使用的目的地址是IPv4地址,那么將使用IPv4協議棧;假如應用程序使用的目的地址是兼容IPv4的IPv6地址,那么IPv6就封裝到IPv4中;假如目的地址是另一種類型的IPv6地址,那么就使用IPv6地址,可能封裝在默認配置的隧道中。
雙協議棧的缺省IP包發送算法為:
a. 假如IP包的目的地址是IPv4地址:
假如目的站點在可達鏈路上,直接發送;假如目的站點不可達,要么送往在線路由器,要么不可達。
b. 假如IP包的目的地址是IPv4兼容的IPv6地址:
假如目的站點在可達鏈路上,直接發送IPv6包;假如目的站點處于off-link,(1)假如有可達IPv4路由器,則封裝在IPv4包中發往IPv4路由器;(2)假如有可達IPv6路由器,則不封裝,直接發送;(3)假如沒有可達路由器,則不可達。
c. 假如IP包的目的地址是純IPv6地址:
假如目的站點在 可達鏈路上,直接發送IPv6包;假如目的站點處于off-link,(1)假如有可達IPv6路由器,則直接發送到路由器;(2) 假如目的地通過手動隧道可達,并且鏈路上有可達IPv4路由器,則封裝成IPv4包,目的IP地址為隧道終點地址,鏈路地址為可達路由器的鏈路地址。(3)否則為不可達。
d. 在線/離線的確定
IPv4使用子網掩碼確定,IPv6使用鄰居發現協議。兩者共同使用的是:假如目的地址是IPv4地址,則使用RFC1122比較兩者的掩碼;假如目的地址是IPv4兼容的IPv6地址,則使用低32位目的地址的子網掩碼比較;假如是IPv6純地址,則使用鄰居發現協議。