摘要:IPv6取代IPv4已經(jīng)成為網(wǎng)絡(luò)發(fā)展的必然趨勢,然當(dāng)前的過渡技術(shù)中大多都是針對有公網(wǎng)IPv4地址的用戶提出的,不能穿越NAT設(shè)備,為此該文介紹了兩種面向NAT用戶的隧道技術(shù),分析了其工作機制及優(yōu)缺點。
關(guān)鍵詞:IPv6;NAT;隧道;Teredo;Silkroad
中圖分類號:TP393文獻標(biāo)識碼:A文章編號:1009-3044(2009)27-7653-02
IPv6取代IPv4已成為必然,網(wǎng)絡(luò)界的研究熱點是怎樣由IPv4向IPv6的成功平滑過渡。在現(xiàn)階段,解決過渡問題的基本技術(shù)主要有三種:IPv4/IPv6協(xié)議轉(zhuǎn)換和雙協(xié)議棧及隧道技術(shù)。其中遂道技術(shù)是一種重要的過渡技術(shù),絕大多數(shù)隧道基于IPv6-In-IPv4封裝方式,就是將IPv6分組封裝在IPv4分組中,利用已有的IPv4路由體系進行傳輸,解決被IPv4網(wǎng)絡(luò)分離的兩個IPv6網(wǎng)絡(luò)或節(jié)點之間通信的問題。但IPv6-In-IPv4報文無法通過IPv4網(wǎng)絡(luò)中大量存在的NAT設(shè)備,因此這類隧道不能在有NAT的環(huán)境中使用。但我國的現(xiàn)狀是8000多萬個上網(wǎng)用戶只有3000多萬個IPv4地址。除了采用動態(tài)分配緩解地址緊張外,更多的則是采用NAT 技術(shù)來解決這個問題。在IPv4向IPv6的過渡時期,如何為這些NAT用戶提供IPv6接入服務(wù),使得它們能和其他IPv6節(jié)點實現(xiàn)互通互訪,是一個切實需要解決的問題。
1 幾種面向NAT用戶的遂道技術(shù)分析
國際上現(xiàn)有的隧道機制中微軟公司提出的Teredo協(xié)議和中科院計算所提出的Silkroad協(xié)議是專為NAT用戶設(shè)計的過渡技術(shù)。它們都采用IPv6-in-UDP隧道,也就是將IPv6報文封裝在IPv4 UDP載荷中的方式實現(xiàn)NAT用戶和IPv6網(wǎng)絡(luò)的互連。
1.1 Teredo的地址獲取過程
Teredo的客戶端產(chǎn)生一個IPv6的路由請求報文,并將其封裝在IPv4的UDP數(shù)據(jù)包的凈荷里通過現(xiàn)有的IPv4網(wǎng)絡(luò)發(fā)給Teredo服務(wù)器,服務(wù)器收到這個路由請求后,向客戶端返回一個包含有一個IPv6的地址前綴以及Teredo客戶端經(jīng)過NAT設(shè)備映射后的公有IPv4地址和端口號的路由信息,根據(jù)這個返回的路由宣告消息客戶端生成一個結(jié)構(gòu)如圖1的IPv6地址。然后,Teredo 客戶端會定期地發(fā)送單一的氣泡數(shù)據(jù)包(由IPv6報頭組成,并且不包含 IPv6 有效載荷,為維持或建立一個 NAT 映射而發(fā)送)到 Teredo 服務(wù)器。Teredo 服務(wù)器會在不回復(fù)的情況下丟棄該數(shù)據(jù)包。這個周期性的數(shù)據(jù)包會重新刷新 NAT 的轉(zhuǎn)換表。來維持這種映射關(guān)系。[3]
1.2 Teredo的局限性
在Teredo機制中同一鏈路上客戶端之間的通信是不受限的,其它類型的通信則依賴于客戶端的所屬的NAT類型。而對于對稱NAT類型,則根據(jù)數(shù)據(jù)包中的目的地址來轉(zhuǎn)換它的私有地址及端口,如果目的地址不同,那么經(jīng)過轉(zhuǎn)換后的外部地址和外部端口也會不同。這樣隧道另一端 IPv4 地址的變化就會引起 NAT 用戶本身隧道參數(shù)的變化。但 Teredo 協(xié)議一個隱含的假定是用戶配置了IPv6地址后,內(nèi)嵌其中的隧道參數(shù)是不會發(fā)生變化的。顯然如果存在對稱類型 NAT 的情況,從用戶IPv6地址中獲得的隧道參數(shù)則是不正確的,這就導(dǎo)致了Teredo服務(wù)對對稱NAT用戶的不適用。
Teredo 的實現(xiàn)相對比較復(fù)雜,與現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu)很難兼容。因為不僅需要增設(shè) Teredo 服務(wù)器來協(xié)助 Teredo 客戶端建立連接,而且還要求Teredo客戶端所要訪問的一般 IPv6 站點附近的路由器有 Teredo中繼功能,即該路由器不但要能識別 Teredo 格式的特殊 IPv6 地址,還要向所在網(wǎng)絡(luò)廣播 Teredo 格式的地址的可達性,并能和 Teredo 服務(wù)器共同完成穿透 NAT 的功能。這必然需要對所有的 IPv6 網(wǎng)絡(luò)入口處的路由器進行升級。
1.3 Silkroad遂道技術(shù)4
Silkroad 協(xié)議是由中科院計算所提出的,能支持所有類型的NAT用戶與 IPv6 網(wǎng)絡(luò)進行互連,能為用戶分配固定不變的 IPv6 地址,而具有更高的安全性。雖然Silkroad隧道也采用IPv6-In-UDP隧道的方式實現(xiàn)NAT用戶與IPv6網(wǎng)絡(luò)互聯(lián)的。但不同的是它為NAT用戶分配的IPv6地址沒有采用固定格式的前綴,而且地址中也沒有嵌入NAT映射地址或映射端口等信息。
Silkroad協(xié)議的體系結(jié)構(gòu)如圖2。
1.3.1 Silkroad體系簡介
初始化過程中,客戶端向?qū)Ш狡靼l(fā)送一個接入請求報文,由導(dǎo)航器為其選擇一個路由距離最近的隧道服務(wù)器,將服務(wù)器的 IPv4 地址返回給客戶端。客戶端然后向指定的隧道服務(wù)器發(fā)送一個地址請求報文,報文內(nèi)容為身份認證信息以及創(chuàng)建 IPv6 地址所需要的接口標(biāo)識符,當(dāng)服務(wù)器收到請求報文后對客戶端的身份進行認證,通過認證后便為其構(gòu)造一個 IPv6 地址,接著在映射表中添加該地址和隧道參數(shù)之間的映射關(guān)系,然后將地址和更新過的身份認證信息作為響應(yīng)報文的內(nèi)容再返回給客戶端。 客戶端再對服務(wù)器的身份進行認證,當(dāng)通過認證后配置 IPv6 地址,并建立另一端為服務(wù)器的 IPv6-In-UDP隧道。 在此之后,客戶端就可以通過該隧道和 IPv6 網(wǎng)絡(luò)上的其他節(jié)點進行端到端的通信,服務(wù)器在數(shù)據(jù)轉(zhuǎn)發(fā)過程中要檢查數(shù)據(jù)包的合法性:一個是以目的IPv6 地址為入口查找映射表,如果沒有這個入口,表明數(shù)據(jù)包是一個非法數(shù)據(jù)包,作丟棄處理;另一個是檢查從 IPv4 接口收到的數(shù)據(jù)包,以源IPv6 地址為入口查找映射表,如果沒有這個入口或者這個入口對應(yīng)的隧道參數(shù)和數(shù)據(jù)包的源IPv4地址、源UDP端口不一致,則表明數(shù)據(jù)包為非法數(shù)據(jù)包,也作丟棄處理。 在只有源或目的是合法用戶的情況下,數(shù)據(jù)包才能通過上述檢查,從而大大增強了網(wǎng)絡(luò)的安全性。
服務(wù)器在運行過程中,會周期性地向?qū)Ш狡鲌蟾尕撦d信息如CPU利用率、帶寬利用率、用戶數(shù)目等。對這些信息進行統(tǒng)計和分析則有導(dǎo)航器負責(zé),以便系統(tǒng)管理員能動態(tài)掌握服務(wù)器的運行狀況,在客戶端建立遂道之前給予指導(dǎo)。
1.3.2 Silkroad地址構(gòu)造
客戶端的IPv6 地址是由64 位的地址前綴和64位的接口標(biāo)識符組合構(gòu)成,地址前綴由隧道服務(wù)器確定,因為隧道服務(wù)器在部署的時候都會分配一個全球唯一的64位地址前綴用于構(gòu)造客戶端IPv6地址,所以客戶端只要確定了選擇接入的隧道服務(wù)器,64位的地址前綴也隨之確定而不再發(fā)生變化,IEEE定義了64位的Eui-64編碼,用來表示網(wǎng)絡(luò)適配器的地址,如圖3所示。
參考Pppv6生成接口標(biāo)識符的方法,如果客戶端有EUI-64地址,哪么只要將它的“U”位取反,就可以得到接口標(biāo)識符;如果有Eui-48地址哪么在其中間添加值為“0xfffe”的16位比特,成為一個EUI-64地址后,再將“U”位取反便可得到接口標(biāo)識符;如果沒有EUI-48 或EUI-64地址,就將機器序列號等數(shù)值轉(zhuǎn)換成64位編碼。采用這種方式生成的接口標(biāo)識符不僅具有固定性,而且具有唯一性,從而保證了IPv6 地址的唯一性。雖然客戶端可以獲得一個固定不變的IPv6地址,但必須在有一個IPv6的域名的前提下,客戶端才可以被其它節(jié)點主動的去訪問。
1.3.3 隧道維護和狀態(tài)信息管理
當(dāng)客戶端完成初始化過程后會以一定的時間間隔周期性的向隧道服務(wù)器發(fā)送IPv6-In-UDP報文,一般發(fā)送默認周期為30s。對于狀態(tài)信息的管理服務(wù)器通常采用客戶端顯式通知的方式,盡可能多地刪除那些不再使用的信息,從而降低因維護信息對系統(tǒng)資源的消耗。例如如果客戶端在下線之前向服務(wù)器發(fā)送一個中斷連接請求,哪么服務(wù)器收到請求后便會刪除對應(yīng)的映射關(guān)系。但這種方式不能較好地處理客戶端異常下線的情況。 對于異常下線的情況Silkroad則采用客戶端維護UDP會話的過程來管理狀態(tài)信息。 服務(wù)器會為每個建立的映射關(guān)系設(shè)定一個計時器,一旦收到來自客戶端的數(shù)據(jù)包就會刷新計時器重新計時。如果收到的是一個空數(shù)據(jù)包,哪么服務(wù)器除了刷新計時器外將不作任何其他處理。如果計時器一旦超時,服務(wù)器就認為客戶端已經(jīng)下線,便刪除對應(yīng)的映射關(guān)系。采用這種方式可使隧道服務(wù)器上維護的都是處于活動狀態(tài)的映射關(guān)系,使管理更加高效。
1.3.4 Silkroad的不足
Silkroad 在解決 Teredo 問題的同時也付出了一定的代價。它的不足之處在于兩個客戶端之間通信時,從源客戶端發(fā)出的數(shù)據(jù)包必須先到達隧道服務(wù)器,再由隧道服務(wù)器轉(zhuǎn)發(fā)給目標(biāo)客戶端;而相應(yīng)的返回的數(shù)據(jù)包也必須由隧道服務(wù)器的中轉(zhuǎn),才能到達源客戶端。 所以這種三角路由方式會增大客戶端之間通信的時間開銷,也會增加隧道服務(wù)器的通信負載。
2 結(jié)束語
該文針對目前提出的IPv4向IPv6過渡的技術(shù)不能穿越NAT設(shè)備的不足,主要介紹了Teredo和Silkroad這兩種面向NAT用戶的遂道技術(shù),從實現(xiàn)原理和特點以及各種技術(shù)的優(yōu)缺點上進行了分析與研究,對IPv4向IPv6過渡時期的共存和轉(zhuǎn)換機制提供了一定技術(shù)參考。
參考文獻:
[1] Carpenter B, Moore K. Connection of IPv6 Domin via IPv4 Clouds[S].RFC 3056, 2001-02.
[2] C Huitema.Teredo:Tunneling IPv6 over UDP through NAts,draft-huitema-v6ops-Teredo-00,2003(7).
[3] 張浩鋒, 解沖鋒.向IPv6過渡的E-Teredo服務(wù)原理和實現(xiàn)[J]. 現(xiàn)代電信科技,2005(6).
[4] 吳賢國.面向NAT用戶的IPv6遂道技術(shù)研究[J].計算機學(xué)報,2007(3).
[5] 王曉楓.對UDP中穿越NATs的IPv6遂道的改進[J].計算機工程,2004(7).
[6] 華為3Com技術(shù)有限公司.IPv6技術(shù),2004(6).