應用層協議
TCP/UDP協議
IPv6協議
IPv4協議
鏈路層及物理協議
隧道技術
隧道機制就是必要時將IPv6數據包作為數據封裝在IPv4數據包里,使IPv6數據包能在已有的IPv4基礎設施(主要是指IPv4路由器)上傳輸的機制。隨著IPv6的發展,出現了一些被運行IPv4協議的骨干網絡隔離開的局部IPv6網絡,為了實現這些IPv6網絡之間的通信,必須采用隧道技術。隧道對于源站點和目的站點是透明的,在隧道的入口處,路由器將IPv6的數據分組封裝在IPv4中,該IPv4分組的源地址和目的地址分別是隧道入口和出口的IPv4地址,在隧道出口處,再將IPv6分組取出轉發給目的站點。隧道技術的優點在于隧道的透明性,IPv6主機之間的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技術在IPv4向IPv6演進的初期應用非常廣泛。但是,隧道技術不能實現IPv4主機和IPv6主機之間的通信;
網絡地址轉換技術
網絡地址轉換(Network Address Translator,NAT)技術是將IPv4地址和IPv6地址分別看作內部地址和全局地址,或者相反。例如,內部的IPv4主機要和外部的IPv6主機通信時,在NAT服務器中將IPv4地址(相當于內部地址)變換成IPv6地址(相當于全局地址),服務器維護一個IPv4與IPv6地址的映射表。反之,當內部的IPv6主機和外部的IPv4主機進行通信時,則IPv6主機映射成內部地址,IPv4主機映射成全局地址。NAT技術可以解決IPv4主機和IPv6主機之間的互通問題。
3.13.2 目前常見的IPv4/IPv6互通轉換的技術標準有哪些?
現有網絡到IPv6網絡的過渡在技術上已十分成熟,而且這種過渡可以是循序漸進的。國際標準化組織和許多研發機構都開發出了多種IPv4與IPv6的互通轉換機制。下面給出了目前常見的IPv4/IPv6互通轉換技術標準:
· 6to4:RFC 3056
· NAT-PT(Network Address Translation-Protocol Translation):RFC 2766
· SIIT(Stateless IP/ICMP Translation):RFC 2765
· Tunnel broker:RFC 3053
· 6over4:RFC 2529
· BIS(Bump-In-the-Stack):RFC 2767
· BIA(Bump-in-the-API):RFC 3338
· SOCKS-gateway:RFC 3089
· TCP/UDP-relay:RFC 3142
· DSTM(Dual Stack Transition Mechanism):draft-ietf-ngtrans-dstm-08.txt
· ISATAP(Intra-Site Automatic Tunnel Addressing Protocol):draft-ietf-ngtrans-isatap-08.txt
3.13.3 什么是隧道?“IPv6 over IPv4”是什么意思?
隧道(Tunnel)是指將一種協議報頭封裝在另一種協議報頭中,這樣,一種協議就可以通過另一種協議的封裝進行通信。IPv6隧道是將IPv6報頭封裝在IPv4報頭中,這樣IPv6協議包就可以穿越IPv4網絡進行通信。
在IPv6全面實施之前,總有一些網絡先提供對IPv6的支持,但是這些IPv6網絡被運行IPv4協議的骨干網絡隔離開來。“IPv6 over IPv4”的隧道就用來連接這些孤立的IPv6網絡。隧道技術目前是國際IPv6試驗床6Bone所采用的技術。利用隧道技術可以通過現有的運行IPv4協議的Internet骨干網絡(即隧道)將局部的IPv6網絡連接起來,因而是IPv4向IPv6過渡的初期最易于采用的技術。隧道技術的優點在于隧道的透明性,IPv6主機之間的通信可以忽略隧道的存在,隧道只起到物理通道的作用。它不需要大量的IPv6專用路由器設備和專用鏈路,可以明顯地減少投資。其缺點是:在IPv4網絡上配置IPv6隧道是一個比較麻煩的過程,而且隧道技術不能實現IPv4主機和IPv6主機之間的通信。
IPv4/v6互通技術
本文首先介紹互通技術出現的背景及現狀,隨后對IPv4向IPv6過渡的三種基本技術作了簡單的介紹,接下來分別介紹了IPv6小島之間的通信方式,以及IPv6小島與IPv4海洋之間的通信方式,最后就如何選擇合適的過渡機制談了些看法。
1.互通技術出現的背景及現狀
IPv6已被認為是下一代互聯網絡協議核心標準之一。但是,一種新的協議從誕生到廣泛應用需要一個過程,尤其是對于IPv4仍然很好的支撐著的Internet而言。在IPv6的網絡流行于全球之前,總是有一些網絡首先使用IPv6協議棧并希望能夠與當前的Internet正常通信。為達到這一目的,研究者們必須開發出IPv4 / IPv6互通技術以保證IPv4能夠平穩過渡到IPv6,除此之外,互通技術應該對普通用戶做到“無縫”,對信息傳遞做到高效。
為了開展對于IPv4/IPv6過渡問題和高效無縫互連問題的研究,國際上,IETF組建了專門的working group即NGTRANS工作組來處理這個問題。同時,IETF在全球范圍內成立試驗床6-Bone,專門對IPv6的特性進行研究。目前已經出現了多種過渡技術和互連方案,這些技術各有特點,用于解決不同過渡時期、不同環境的通信問題。
在過渡的初期,Internet將由運行IPv4的“海洋”和運行IPv6的“小島”組成。隨著時間的推移,IPv4的海洋將會逐漸變小,而IPv6的小島將會越來越多,最終完全取代IPv4。在過渡的初期,要解決的問題可以分成兩大類:第一類就是解決這些IPv6的小島之間互相通信的問題;第二類就是解決IPv6的小島與IPv4的海洋之間通信的問題。
針對這兩類問題已經提出了很多方案,有一些已經相當成熟并形成了RFC,有一些還只是作為Internet draft,有待進一步完善。
2.IPv4向IPv6過渡的三種基本技術
目前解決過渡問題基本技術主要有三種:雙協議棧(RFC 2893 obsolete RFC1933)、隧道技術(RFC 2893)、NAT-PT(RFC 2766)。
(1) 雙協議棧 ( Dual Stack)
采用該技術的節點上同時運行IPv4和IPv6兩套協議棧。這是使IPv6節點保持與純IPv4節點兼容最直接的方式,針對的對象是通信端節點(包括主機、路由器)。這種方式對IPv4和IPv6提供了完全的兼容,但是對于IP地址耗盡的問題卻沒有任何幫助。由于需要雙路由基礎設施,這種方式反而增加了網絡的復雜度。
(2) 隧道技術 ( Tunnel)
隧道技術提供了一種以現有IPv4路由體系來傳遞IPv6數據的方法:將IPv6的分組作為無結構意義的數據,封裝在IPv4數據報中,被IPv4網絡傳輸。根據建立方式的不同,隧道可以分成兩類:(手工)配置的隧道和自動配置的隧道。隧道技術巧妙地利用了現有的IPv4網絡,它的意義在于提供了一種使IPv6的節點之間能夠在過渡期間通信的方法,但它并不能解決IPv6節點與IPv4節點之間相互通信的問題。
(3) NAT-PT
轉換網關除了要進行IPv4地址和IPv6地址轉換,還要包括協議并翻譯。轉換網關作為通信的中間設備,可在IPv4和IPv6網絡之間轉換IP報頭的地址,同時根據協議不同對分組做相應的語義翻譯,從而使純IPv4和純IPv6站點之間能夠透明通信。
3.IPv6小島之間的通信方式
(1) 手工配置隧道 ( Configured Tunnel, RFC2893 )
這種隧道的建立是手工配置的,需要隧道兩個端點所在網絡的管理員協作完成。隧道的端點地址由配置來決定,不需要為站點分配特殊的IPv6地址,適用于經常通信的IPv6站點之間。每一個隧道的封裝節點必須保存隧道終點的地址,當一個IPv6包在隧道上傳輸時終點地址會作為IPv4包的目的地址進行封裝。通常封裝節點要根據路由信息決定一個包是否要通過隧道轉發。
采用手工配置隧道進行通信的站點之間必須有可用的IPv4 連接,并且至少要具有一個全球唯一的IPv4地址。站點中每個主機都至少需要支持IPv6,路由器需要支持雙棧。在隧道要經過NAT設施的情況下這種機制不可用。
手工配置隧道的主要缺點是網絡管理員的負擔很重,因為他要為每一條隧道做詳細的配置。
(2) 自動配置的隧道 ( Auto-configured Tunnel, RFC2893 )
這種隧道的建立和拆除是動態的,它的端點根據分組的目的地址確定,適用于單獨的主機之間或不經常通信的站點之間。自動配置的隧道需要站點采用IPv4兼容的IPv6地址( IPv4 Compatible IPv6 Address,0::IPv4ADDR/96 ),這些站點之間必須有可用的IPv4連接,每個采用這種機制的主機都需要有一個全球唯一的IPv4地址。
采用這種機制不能解決IPv4地址空間耗盡的問題(采用手工配置隧道的站點就不需要IPv4地址)。兩外還有一種危險就是如果把Internet 上全部IPv4路由表包括到IPv6網絡中,那么會加劇路由表膨脹的問題。這種隧道的兩個端點都必須支持雙協議棧(手工配置就不需要)。在隧道要經過NAT設施的情況下這種機制不可用。
(3) Tunnel Broker ( RFC3053- IPv6 Tunnel Broker )
Tunnel Broker不是一種隧道機制,而是一種方便構造隧道的機制。可以簡化隧道的配置過程,適用于單個主機獲取IPv6連接的情況。Tunnel Broker也可用于站點之間,但這時可能會在IPv6的路由表中引入很多條目,導致IPv6的路由表過于龐大,違背了IPv6設計的初衷。用戶可以通過Tunnel Broker從支持IPv6的ISP處獲得持久的IPv6地址和域名。 Tunnel Broker要求隧道的雙方都支持雙棧并有可用的IPv4連接,在隧道要經過NAT設施的情況下這種機制不可用。采用TB方法,可以使IPv6 的ISP可以很容易對用戶執行接入控制,按照策略對網絡資源進行分配。
TB轉換機制包括Tunnel Server(TS)和Tunnel Broker(TB)。server和boker位于不同的計算機上,對于隧道的控制通常是web形式的。
(4) 6 over 4 ( RFC2529 ),IPv4多播隧道
6 over 4 也是一種自動建立隧道的機制,這種隧道端點的IPv4地址采用鄰居發現的方法確定。與手工配置隧道不同的是,它不需要任何地址配置;與自動隧道不同的是它不要求使用V4兼容的V6地址。但是采用這種機制的前提就是IPv4網絡基礎設施支持IPv4多播。這里的IPv4多播域可以是采用全球唯一的IPv4地址的網絡,或是一個私有的IPv4網絡的一部分。這種機制適用于IPv6路由器沒有直接連接的物理鏈路上的孤立的IPv6主機,使得它們能夠將IPv4廣播域作為它們的虛擬鏈路,成為功能完全的IPv6站點。
采用這種方法連接的IPv6站點的不需要采用IPv4兼容地址,也不需要手工配置的隧道。當采用6 over 4的站點通過一臺支持6 over 4的路由器與外界相連時,站點內的主機可以和外部IPv6站點通信。但是6 over 4還是沒有解決一個孤立的用戶連接到全球性的IPv6 Internet上。
(5) 6 to 4 ( RFC3056)
6to4也是一種自動構造隧道的機制,這種機制要求站點采用特殊的IPv6地址(2002:IPv4ADDR::/48 ),這種地址是自動從站點的IPv4地址派生出來的。所以每個采用6to4機制的節點至少必須具有一個全球唯一的IPv4地址,(這種地址分配方法,可以使得其它域的邊界路由器自動地區分隧道接收端點是否在本域內)。由于這種機制下隧道端點的IPv4地址可以從IPv6地址中提取,所以隧道的建立是自動的。6to4不會在IPv4的路由表中引入新的條目,在IPv6的路由表中只增加一條表項。采用6to4機制的IPv6 ISP只需要做很少的管理工作,這種機制很適用于運行IPv6的站點之間的通信。6to4要求隧道中至少有兩臺路由器支持雙棧和6to4,主機要求至少支持IPv6協議棧。
6to4機制允許在采用6to4的IPv6站點和純IPv6站點之間通過中繼路由器 ( 6to4 Relay Router ) 進行通信,這時不要求通信的兩個端點之間具有可用的IPv4連接,中繼路由器建議運行BGP4+。
這種機制把廣域的IPv4網絡作為一個單播的點到點鏈路層。這種機制適合作為V4/V6共存的初始階段的轉換工具,它可以與防火墻、NAT共存,但是NAT box必須具有全球唯一的IPv4地址,并且應有6to4機制和完備的路由功能。
在隧道終點,任何從正常IPv4鏈路傳來的6to4數據流都可以被接受和解封裝。為了防止IPv6欺騙,可采用附加的基于源地址的包過濾技術。一種方法就是檢查用于封裝的IPv4地址是否與被封裝的IPv6包頭地址一致。這種檢查要在中繼路由器(relay router)中設置。在任何情況下,6to4數據流中的源和目的地址嵌入的V4地址必須是以全球唯一單播地址格式,否則這些數據包將會在不被警告的情況被丟棄。
4.IPv6小島與IPv4海洋之間的通信方式
(1) Dual Stack Model ( RFC2893 )
在這種模型下,任意節點都是完全雙棧的。這時不存在IPv4與IPv6之間的相互通信問題,但是這種機制要給每一個IPv6的站點分配一個IPv4地址。這種方法不能解決IPv4地址資源不足的問題,而且隨著IPv6站點的增加會很難得到滿足,因此這種方法只能用在早期的變遷過程。
(2) Limited Dual Stack Model ( RFC2893 )
在這種模型下,服務器和路由器仍然是雙棧的,而非服務器的主機只需要支持IPv6。這種機制可以節省大量的IPv4地址,但是在純IPv6和純IPv4節點之間的通信將會出現問題,為了解決這種問題,必須與其它技術結合使用。
(3) SIIT ( Stateless IP/ ICMP Translation, RFC2765 )
SIIT定義了在IPv4和IPv6的分組報頭之間進行翻譯的方法,這種翻譯是無狀態的,因此對于每一個分組都要進行翻譯。這種機制可以和其它的機制(如NAT-PT)結合,用于純IPv6站點同純 IPv4站點之間的通信,但是在采用網絡層加密和數據完整性保護的環境下這種技術不可用。純IPv6節點和純IPv4節點通過一個SIIT轉換器通信,IPv6節點看到的對方一個IPv4瞞apped地址的主機,同時它自己則使用一個IPv4 translated的地址。如果IPv6主機發出的IP分組中的目的地址是一個IPv4瞞apped地址,那么SIIT轉換器就知道這個IP分組需要進行協議轉換。
(4) NAT-PT (Network Address Translation - Protocol Translation, RFC2766 )
NAT-PT就是在做IPv4/IPv6地址轉換(NAT)的同時在IPv4分組和IPv6分組之間進行報頭和語義的翻譯(PT)。適用于純IPv4站點和純IPv6站點之間的通信。對于一些內嵌地址信息的高層協議(如FTP),NAT-PT需要和應用層的網關協作來完成翻譯。在NAT-PT的基礎上利用端口信息,就可以實現NAPT-PT,這點同目前IPv4下的NAPT沒有本質區別。
NAT-PT的原理和SIIT類似,其改進的地方是將傳統的IPv4下的NAT應用于SIIT中的IPv4地址的選取當中。SIIT的一個最大的缺點是需要比較大的IPv4地址池,以供IPv6應用動態分配。這個IPv4地址池很大程度上制約了SIIT的應用。而NAT-PT采用傳統的IPv4下的NAT技術來分配IPv4地址,這樣就可以以很少的IPv4地址構成自己的IPv4地址分配池,可以給大量的需要進行地址轉換的應用使用協議轉換服務。
在實現方面,如果沒有DNS-ALG的支持,只能實現由IPv6發起的與IPv4之間的通信,反之,包就會被丟棄。如果有DNS-ALG的支持,就可以實現雙向的通信。有一些應用需要一定程度的地址穩定性,NAT-PT可以被配置成提供V6到特定V4地址的靜態映射。
該機制適用于過渡的初始階段,使得基于雙協議棧的主機,能夠運行IPv4應用程序與IPv6應用互相通信。這種技術允許不支持IPv6的應用程序透明地訪問純IPv6站點。該機制要求主機必須是雙棧的,同時要在協議棧中插入三個特殊的擴展模塊:域名解析器、地址映射器和翻譯器,相當于在主機的協議棧中使用了NAT-PT。
(6) BIA ( Bump-In-the-API, Internet Draft )
這種技術同BIS類似,只是在API層而不是在協議棧的層次上進行分組的翻譯,所以它的實現比BIS要簡單一些,因為不需要對IP包頭進行翻譯。BIS與BIA的主要區別是:BIS用在沒有IPv6協議棧的系統上,BIA用在有IPv6協議棧的系統上。
當雙棧主機上的IPv4應用與其它IPv6主機通信時,API翻譯器檢測到從IPv4應用發出的基于socket API的函數,就調用IPv6 socket API函數與IPv6主機通信。
(7) SOCKS64 ( Socks gateway, rfc3089 )
SOCKS64是原有SOCKS協議 ( RFC1928 ) 的擴展,相當于IP層的代理。這種機制不需要修改DNS或者做地址映射,可用于多種環境,但是需要采用SOCKS代理服務器,并在客戶端安裝支持SOCKS代理的軟件,對于用戶來講不是透明的。該機制增加了兩個新的功能部件,它們構成了網關機制。
除了上述7種通信方式,IPv6小島與IPv4海洋之間還可以通過TRT、DSTM、ALG等方式進行通信。
5.如何選擇合適的過渡機制
從已有的過渡機制可以看出,目前所有的方案都是針對某一種問題而提出的。這些過渡機制都不是普遍適用的,每一種機制都適用于某種或幾種特定的網絡情況,而且常常需要和其它的技術組合使用。在實際應用時需要綜合考慮各種實際情況來制定合適的過渡策略。對于某一類互連問題,設計者們可以找出新的方式,并隨著網絡技術和發展不斷的改進和更新這種方式。
為選擇一個合適的機制,首先需求要明確,明確應用的類型、范圍和系統的類型,然后選擇合適的轉換機制進行設計和實施。IPv4向IPv6過渡時期,通常采用的組網原則:
· 在能直接建立IPv6鏈路的情況下,使用純IPv6路由;
· 在不能使用IPv6鏈路的情況下,IPv6節點之間使用隧道技術;
· 雙棧的IPv6/IPv4主機和純IPv6或者純IPv4 的主機通信不需要采用協議轉換,而直接“自動”選擇相應的通信協議(IPv4或者 IPv6)。
· 對于純IPv6和純IPv4主機之間的通信,則應該使用協議轉換或者應用層網關(ALG)技術,設計的協議轉換器或者ALG應該盡量保證在不修改原有應用的情況下就可以使用
評論
查看更多