IPv6
IPv6是Internet Protocol Version 6的縮寫,其中Internet Protocol譯為“互聯網協議”。IPv6是IETF(互聯網工程任務組,Internet Engineering Task Force)設計的用于替代現行版本IP協議(IPv4)的下一代IP協議,號稱可以為全世界的每一粒沙子編上一個網址。
由于IPv4最大的問題在于網絡地址資源有限,嚴重制約了互聯網的應用和發展。IPv6的使用,不僅能解決網絡地址資源數量的問題,而且也解決了多種接入設備連入互聯網的障礙。
組成結構
表示方法
IPv6的地址長度為128b,是IPv4地址長度的4倍。于是IPv4點分十進制格式不再適用,采用十六進制表示。IPv6有3種表示方法。
IPv6的長分布式結構圖
一、冒分十六進制表示法
格式為X:X:X:X:X:X:X:X,其中每個X表示地址中的16b,以十六進制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
這種表示法中,每個X的前導0是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二、0位壓縮表示法
在某些情況下,一個IPv6地址中問可能包含很長的一段0,可以把連續的一段0壓縮為“::”。但為保證地址解析的唯一性,地址中”::”只能出現一次,例如:
FF01:0:0:0:0:0:0:1101 → FF01::1101
0:0:0:0:0:0:0:1 → ::1
0:0:0:0:0:0:0:0 → ::
三、內嵌IPv4地址表示法
為了實現IPv4-IPv6互通,IPv4地址會嵌入IPv6地址中,此時地址常表示為:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六進制表示,而最后32b地址則使用IPv4的點分十進制表示,例如::192.168.0.1與::FFFF:192.168.0.1就是兩個典型的例子,注意在前96b中,壓縮0位的方法依舊適用[3] 。
報文內容
IPv6報文的整體結構分為IPv6報頭、擴展報頭和上層協議數據3部分。IPv6報頭是必選報文頭部,長度固定為40B,包含該報文的基本信息;擴展報頭是可選報頭,可能存在0個、1個或多個,IPv6協議通過擴展報頭實現各種豐富的功能;上層協議數據是該IPv6報文攜帶的上層數據,可能是ICMPv6報文、TCP報文、UDP報文或其他可能報文。
IPv6的報文頭部結構如圖:
IPv6協議技術特點
3.1 IPv6相對于IPv4有哪些較為顯著的優勢?
相對于IPv4,IPv6有如下一些顯著的優勢:
(1)地址容量大大擴展,由原來的32位擴充到128位,徹底解決IPv4地址不足的問題;支持分層地址結構,從而更易于尋址;擴展支持組播和任意播地址,這使得數據包可以發送給任何一個或一組節點;
(2)大容量的地址空間能夠真正的實現無狀態地址自動配置,使IPv6終端能夠快速連接到網絡上,無需人工配置,實現了真正的即插即用;
(3)報頭格式大大簡化,從而有效減少路由器或交換機對報頭的處理開銷,這對設計硬件報頭處理的路由器或交換機十分有利;
(4)加強了對擴展報頭和選項部分的支持,這除了讓轉發更為有效外,還對將來網絡加載新的應用提供了充分的支持;
(5)流標簽的使用讓我們可以為數據包所屬類型提供個性化的網絡服務,并有效保障相關業務的服務質量;
(6)認證與私密性:IPv6把IPSec作為必備協議,保證了網絡層端到端通信的完整性和機密性;
(7)IPv6在移動網絡和實時通信方面有很多改進。特別地,不像IPv4,IPv6具備強大的自動配置能力從而簡化了移動主機和局域網的系統管理。
3.2 報頭結構
3.2.1 IPv6的報頭結構是怎樣的?
新的IPv6報頭的結構比IPv4簡單得多, IPv6報頭中刪除了IPv4報頭中許多不常用的域,放入了可選項和報頭擴展中;IPv6中的可選項有更嚴格的定義。IPv4中有10個固定長度的域、2個地址空間和若干個選項,IPv6中只有6個域和2個地址空間。
雖然IPv6報頭占40字節,是24字節IPv4報頭的1.6倍,但因其長度固定(IPv4報頭是變長的),故不需要消耗過多的內存容量。
IPv4中的報頭長度(header length)、服務類型(type of service,TOS)、標識符(identification)、標志(flag)、分段偏移(fragment offset)和報頭校驗和(header checksum)這6個域被刪除。報文總長(total length)、協議類型(protocol type)和生存時間(time to live,TTL)3個域的名稱或部分功能被改變,其選項(options)功能完全被改變,新增加了2個域,即優先級和流標簽。
下圖為具體的IPv4與IPv6報頭比較。
表1 IPv4包頭格式
4bit版本號
4bit報頭長度
8bit服務類型
16bit數據包長度
標識符(16bit)
標志(4bit)
分段偏移(12bit)
生存時間(8bit)
傳輸協議(8bit)
報頭校驗和(16bit)
源IP地址(32bit)
目的IP地址(32bit)
選項(24bit)
填充(8bit)
表2 ipv6包頭格式
4bit版本號
4bit優先級
24bit流標簽
凈荷長度(16bit)
下一報頭(8bit)
HOP限制(8bit)
源IP地址(128bit)
目的IP地址(128bit)
3.3 地址問題
3.3.1 為什么IPv6協議的地址長度是128位?
有些人也許要問,IPv4地址不夠用,那我在IPv4上再增加幾位地址表示就行了,何必非要是IPv6的128 位呢?這種提問是對芯片設計及CPU處理方式不理解造成的,同時也對未來網絡的擴展沒有充分的預見性。芯片設計中數值的表示我們知道是全用“0”、“1” 代表,CPU處理字長發展到現在分別經歷了4位、8位、16位、32位、64位等,我們知道,在計算機中,當數據能用2的指數次冪字長位的二進制數表示時,CPU對數值的處理效率最高。IPv4地址對應的是32比特字長就是因為當時的互聯網上的主機CPU字長為32位。現在的64位機已十分普及,128 位機正在成長中。將地址定為64位在網絡擴展性上顯得不足,定為其它的一個長度在硬件芯片設計、程序編制方面的效率都將下降,因此從處理效率和未來網絡擴展性上考慮,將IPv6的地址長度定為128位是十分合適的。
3.3.2 IPv6的128位地址是一個什么概念?
IPv6提供128位的地址空間,IPv6所能提供的巨大的地址容量可以從以下幾個方面來說明:
共有2128個不同的IPv6地址,也就是全球可分配地址數為340,282,366,920,938,463,463,374,607,431,768,211,456個;
若按土地面積分配,每平方厘米可獲得2.2*1020個地址。
IPv6地址耗盡的機會是很小的。在可預見的很長時期內,IPv6的128位地址長度形成的巨大的地址空間能夠為所有可以想象出的網絡設備提供一個全球唯一的地址,IPv6充足的地址空間將極大地滿足那些伴隨著網絡智能設備的出現而對地址增長的需求,例如個人數據助理(PDA)、移動電話(Mobile Phone)、家庭網絡接入設備(HAN)等。
3.3.3 IPv6地址是如何表示的?
IPv4地址表示為點分十進制格式,32位的地址分成4個8位分組,每個8位寫成十進制,中間用點號分隔。而IPv6的128位地址則是以16位為一分組,每個16位分組寫成4個十六進制數,中間用冒號分隔,稱為冒號分十六進制格式。例如:21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 是一個完整的IPv6地址。
IPv6的地址表示有以下幾種特殊情形:
IPv6地址中每個16位分組中的前導零位可以去除做簡化表示,但每個分組必須至少保留一位數字。如上例中的地址,去除前導零位后可寫成:21DA:D3:0:2F3B:2AA:FF:FE28:9C5A。
某些地址中可能包含很長的零序列,為進一步簡化表示法,還可以將冒號十六進制格式中相鄰的連續零位合并,用雙冒號“::”表示。“::”符號在一個地址中只能出現一次,該符號也能用來壓縮地址中前部和尾部的相鄰的連續零位。例如地址1080:0:0:0:8:800:200C:417A,0:0:0:0: 0:0:0:1,0:0:0:0:0:0:0:0分別可表示為壓縮格式1080::8:800:200C:417A,::1,:: 。
在IPv4和IPv6混合環境中,有時更適合于采用另一種表示形式:x:x:x:x:x:x:d.d.d.d,其中x是地址中6個高階16位分組的十六進制值,d是地址中4個低階8位分組的十進制值(標準IPv4表示)。例如地址0:0:0:0:0:0:13.1.68.3 ,0:0:0:0:0:FFFF:129.144.52.38 寫成壓縮形式為::13.1.68.3,::FFFF.129.144.52.38 。
要在一個URL中使用文本IPv6地址,文本地址應該用符號“[”和“]”來封閉。例如文本IPv6地址FEDC:BA98:7654:3210:FEDC:BA98:7654:3210寫作URL示例為
[url=http://[fedc:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html]http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html[/url]
。
3.3.4 IPv6地址為128位,配地址豈不是要花費很多時間?
IPv6協議支持地址自動配置,這是一種即插即用的機制。IPv6節點通過地址自動配置得到IPv6地址和網關地址。
IPv6支持無狀態地址自動配置和狀態地址自動配置兩種地址自動配置方式。在無狀態地址自動配置方式下,需要配置地址的網絡接口先使用鄰居發現機制獲得一個鏈路本地地址。網絡接口得到這個鏈路本地地址之后,再接收路由器宣告的地址前綴,結合接口標識得到一個全球地址。而狀態地址自動配置的方式,如動態主機配置協議(DHCP),需要一個DHCP服務器,通過客戶機/服務器模式從DHCP服務器處得到地址配置的信息。
3.3.5 IPv6地址都有哪些類型?
所有類型的IPv6地址都被分配到接口,而不是節點。IPv6地址是單個或一組接口的128位標識符,有三種類型:
(1) 單播(Unicast)地址
單一接口的標識符。發往單播地址的包被送給該地址標識的接口。對于有多個接口的節點,它的任何一個單播地址都可以用作該節點的標識符。IPv6單播地址是用連續的位掩碼聚集的地址,類似于CIDR的IPv4地址。IPv6中的單播地址分配有多種形式,包括全部可聚集全球單播地址、NSAP地址、IPX分級地址、站點本地地址、鏈路本地地址以及運行IPv4的主機地址。單播地址中有下列兩種特殊地址:
不確定地址
單播地址0:0:0:0:0:0:0:0稱為不確定地址。它不能分配給任何節點。它的一個應用示例是初始化主機時,在主機未取得自己的地址以前,可在它發送的任何IPv6包的源地址字段放上不確定地址。不確定地址不能在IPv6包中用作目的地址,也不能用在IPv6路由頭中;
回環地址
單播地址0:0:0:0:0:0:0:1稱為回環地址。節點用它來向自身發送IPv6包。它不能分配給任何物理接口。
(2) 任意播(AnyCast)地址
一組接口(一般屬于不同節點)的標識符。發往任意播地址的包被送給該地址標識的接口之一(路由協議度量距離最近的)。IPv6任意播地址存在下列限制:
· 任意播地址不能用作源地址,而只能作為目的地址;
· 任意播地址不能指定給IPv6主機,只能指定給IPv6路由器;
IPv6任意播地址
(3) 組播(MultiCast)地址
一組接口(一般屬于不同節點)的標識符。發往多播地址的包被送給該地址標識的所有接口。地址開始的11111111標識該地址為組播地址。
IPv6組播地址
IPv6中沒有廣播地址,它的功能正在被組播地址所代替。另外,在IPv6中,任何全“0”和全“1”的字段都是合法值,除非特殊地排除在外的。特別是前綴可以包含“0”值字段或以“0”為終結。一個單接口可以指定任何類型的多個IPv6地址(單播、任意播、組播)或范圍。
3.3.6 什么是IPv6的可聚集全球單播地址?
IPv6為點對點通信設計了一種具有分級結構的地址,這種地址被稱為可聚集全球單播地址(Aggregatable Global Unicast Address),它在RFC2374中定義。可聚集地址具有三個層次的分級結構:
公用拓撲:提供公用互聯網傳送服務的供應商和交換局群體;
站點拓撲:本地的特定站點或組織,不提供到本站點以外節點的公用傳送服務;
接口標識符:標識鏈路上的接口;
可聚集全球單播地址的分級結構劃分如下圖所示。開始3個地址位是地址類型前綴,用于區別其它地址類型。其后的13位TLA ID、32位NLA ID、16位SLA ID和 64位主機接口ID,分別用于標識分級結構中自上向下排列的TLA (Top Level Aggregator,頂級聚集體)、NLA(Next Level Aggregator,下級聚集體)、SLA(Site Level Aggregator,站點級聚集體)和主機接口。RES保留,以備將來TLA或NLA擴充用。TLA是與長途服務供應商和電話公司相互連接的公共網絡接入點,它從國際Internet注冊機構如IANA處獲得地址。NLA通常是大型ISP,它從TLA處申請獲得地址,并為 SLA分配地址。SLA也可稱為訂戶(subscriber),它可以是一個機構或一個小型ISP。SLA負責為屬于它的訂戶分配地址。SLA通常為其訂戶分配由連續地址組成的地址塊,以便這些機構可以建立自己的地址分級結構以識別不同的子網。分級結構的最底層是網絡主機。
IPv6可聚集全球單播地址
設計這樣的地址格式是為了既支持基于當前供應商的聚集,又支持被稱為交換局的新的聚集類型。其組合使高效的路由聚集可用于直接連接到供應商和連接到交換局兩者的站點上。站點可以選擇連接到兩種類型中的任何一種聚集點。
3.3.7 IPv6的地址分配方式與IPv4有什么區別?
IPv4中,地址是用戶擁有的。也就是說,一旦用戶從某機構處申請到一段地址空間,他就永遠使用該地址空間,而不管他是從哪個因特網服務提供者(ISP)處獲得服務。這種方式的缺點是ISP必須在路由表中為每個用戶的網絡號維護一條表項。隨著用戶數的增加,會出現大量無法會聚的特殊路由,即使無類別域間路由(CIDR)也不能處理這樣的路由表爆炸現象。
IPv6改變了地址的分配方式,從用戶擁有變成了ISP擁有。全球網絡號由因特網地址分配機構(IANA)分配給ISP,用戶的全球網絡地址是ISP地址空間的子集。每當用戶改變ISP時,全球網絡地址必須更新為新ISP提供的地址。這樣ISP能有效地控制路由信息,避免路由爆炸現象的出現。
3.3.8 一臺IPv6主機有多少地址?
通常一臺IPv6主機有多個IPv6地址,即使該主機只有一個單接口。一臺IPv6主機可同時擁有以下幾種單點傳送地址:
· 每個接口的鏈路本地地址;
· 每個接口的單播地址(可以是一個站點本地地址和一個或多個可聚集全球地址);
· 回環(loopback)接口的回環地址(::1)。
此外,每臺主機還需要時刻保持收聽以下多點傳送地址上的信息:
· 節點本地范圍內所有節點組播地址(FF01::1);
· 鏈路本地范圍內所有節點組播地址(FF02::1);
· 請求節點(solicited-node)組播地址(如果主機的某個接口加入請求節點組);
· 組播組組播地址(如果主機的某個接口加入任何組播組)。
3.3.9 一臺IPv6路由器有多少地址?
一臺IPv6路由器可被分配以下幾種單點傳送地址:
· 每個接口的鏈路本地地址;
· 每個接口的單播地址(可以是一個站點本地地址和一個或多個可聚集全球地址);
· 子網-路由器任意播地址;
· 其他任意播地址(可選);
· 回環接口的回環地址(::1)。
同樣,除以上這些地址外,路由器需要時刻保持收聽以下多點傳送地址上的信息流:
· 節點本地范圍內的所有節點組播地址(FF01::1);
· 節點本地范圍內的所有路由器組播地址(FF01::2);
· 鏈路本地范圍內的所有節點組播地址(FF02::1);
· 鏈路本地范圍內的所有路由器組播地址(FF02::2);
· 站點本地范圍內的所有路由器組播地址(FF05::2);
· 請求節點(solicited-node)組播地址(如果路由器的某個接口加入請求節點組);
· 組播組組播地址(如果路由器的某個接口加入任何組播組)。
3.4 地址自動配置技術
3.4.1 IPv6如何實現“即插即用”?
“即插即用”是指無需任何人工干預,就可以將一個節點插入IPv6網絡并在網絡中啟動,IPv6使用了兩種不同的機制來支持即插即用網絡連接:啟動協議(BOOTstrap Protocol,BOOTP)和動態主機配置協議(DHCP)。這兩種機制允許IP節點從特殊的BOOTP服務器或DHCP服務器獲取配置信息。這些協議采用“狀態自動配置”(Stateful Autoconfiguration),即服務器必須保持每個節點的狀態信息,并管理這些保存的信息。
狀態自動配置的問題在于,用戶必須保持和管理特殊的自動配置服務器以便管理所有“狀態”,即所容許的連接及當前連接的相關信息。對于有足夠資源來建立和保持配置服務器的機構,該系統可以接受;但是對于沒有這些資源的小型機構,工作情形較差。
3.4.2 除了狀態自動配置,IPv6還提供什么自動配置服務?
除了狀態自動配置,IPv6還采用了一種被稱為無狀態自動配置(Stateless Auto Configuration)的自動配置服務。RFC2462中描述了IPv6的無狀態自動配置。無狀態自動配置要求本地鏈路支持組播,而且網絡接口能夠發送和接收組播包。無狀態自動配置過程要求節點采用如下步驟:
首先,進行自動配置的節點必須確定自己的鏈路本地地址;
然后,必須驗證該鏈路本地地址在鏈路上的唯一性;
最后,節點必須確定需要配置的信息。該信息可能是節點的IP地址,或者是其他配置信息,或者兩者皆有。如果需要IP地址,節點必須確定是使用無狀態自動配置過程還是使用狀態自動配置過程來獲得。
具體地說,在無狀態自動配置過程中,主機首先通過將它的網卡MAC地址附加在鏈路本地地址前綴1111111010之后,產生一個鏈路本地單播地址(IEEE已經將網卡MAC地址由48位改為了64位。如果主機采用的網卡的MAC地址依然是48位,那么IPv6網卡驅動程序會根據IEEE的一個公式將48位MAC地址轉換為64位MAC地址)。接著主機向該地址發出一個鄰居發現請求(Neighbor Discovery Request),以驗證地址的唯一性。如果請求沒有得到響應,則表明主機自我配置的鏈路本地單播地址是唯一的。否則,主機將使用一個隨機產生的接口ID 組成一個新的鏈路本地單播地址。然后,以該地址為源地址,主機向本地鏈路中所有路由器多點傳送一個路由器請求(Router Solicitation)來請求配置信息,路由器以一個包含一個可聚集全球單播地址前綴和其它相關配置信息的路由器宣告(Router Advertisement)作為響應。主機用它從路由器得到的全球地址前綴加上自己的接口ID,自動配置全球地址,然后就可以與Internet中的其它主機通信了。
如果沒有路由器為網絡上的節點服務,也就是本地網絡孤立于其他網絡,則節點必須尋找配置服務器來完成其配置;否則,節點必須偵聽路由器宣告報文。這些報文周期性地發往所有主機的組播地址,以指明諸如網絡地址和子網地址等配置信息。節點可以等待路由器宣告,也可以通過發送組播請求給所有路由器的組播地址來請求路由器發送宣告。一旦收到路由器的響應,節點就可以使用響應的信息來完成自動配置。
使用無狀態自動配置,無需手動干預就能夠改變網絡中所有主機的IP地址。例如,當企業更換了聯入Internet的ISP時,將從新ISP處得到一個新的可聚集全球地址前綴。ISP把這個地址前綴從它的路由器上傳送到企業路由器上。由于企業路由器將周期性地向本地鏈路中的所有主機多點傳送路由器宣告,因此企業網絡中所有主機都將通過路由器宣告收到新的地址前綴,此后,它們就會自動產生新的IP地址并覆蓋舊的IP地址。
3.5 域名解析技術
3.5.1 IPv6域名系統的體系結構是什么樣的?
IPv6網絡中的DNS與IPv4的DNS在體系結構上是一致的,都是采用樹型結構的域名空間,如下圖所示。IPv4協議與IPv6協議的不同并不意味著IPv4 DNS體系和IPv6 DNS體系需要各自獨立,相反,DNS的體系和域名空間必須一致,即IPv4和IPv6共同擁有統一的域名空間。在IPv4到IPv6的過渡階段,域名可以同時對應于多個IPv4和IPv6的地址。以后隨著IPv6網絡的普及,IPv6地址將逐漸取代IPv4地址。下圖的最上方是DNS樹形結構中唯一的一個根(Root),用點號“。”表示。根的下一級稱為頂級域(Top Level Domain,TLD),也稱一級域。頂級域的下級就是二級域(Second Level Domain,SLD),二級域的下級就是三級域,依次類推。每個域都是其上級域的子域(Sub Domain),比如“.net.cn”是“.cn”的子域,而“cnnic.net.cn”既是“net.cn”的子域,同時也是“.cn”的子域。
DNS樹上的每一個節點都有一個標識(Label),根節點的標識是“空”(即長度為0),其它節點的標識的長度在1到63字節之間。一個節點的域名是由從這個節點到根節點的路徑上的所有標識從左到右順序排列組成的,標識之間用“。”分隔。例如
http://www.cnnic.net.cn/
DNS的整個域名空間劃分成許多的區(Zone),見上圖中的橢圓標記,數據采用分布式存儲。每個區都有域名服務器(包括主服務器和輔服務器),以資源記錄(Resource Record)的形式來存儲域名信息。資源記錄包括了主機名(域名)和IP地址的對應,以及子域服務器的授權等多種類型。
用戶在使用DNS服務時,可以不必細致地了解DNS域名空間的樹型結構體系,只需在設置網絡時指定一個DNS服務器或使用動態主機配置(DHCP)等相關技術,從而使用戶的應用程序可以通過操作系統內嵌的解析器(Resolver)訪問DNS系統,查詢域名相關的網絡資源信息。
3.5.2 如何自動發現提供解析服務的DNS服務器?
(1) 無狀態的DNS服務器發現
無狀態DNS服務器自動發現有以下幾種方式:
為子網內部的DNS服務器配置站點范圍內的任意播地址。要進行自動配置的節點以該任意播地址為目的地址發送服務器發現請求,詢問DNS服務器地址、域名和搜索路徑等DNS信息。這個請求到達距離最近的DNS服務器,服務器根據請求,回答DNS服務器單播地址、域名和搜索路徑等DNS信息。節點根據服務器的應答配置本機DNS信息,以后的DNS請求就直接用單播地址發送給DNS服務器。
與第一種方式相同,只是不用站點范圍內的任意播地址,而采用站點范圍內的組播地址或鏈路組播地址等。
一直用站點范圍內的任意播地址作為DNS服務器的地址,所有的DNS解析請求都發送給這個任意播地址。距離最近的DNS服務器負責解析這個請求,得到解析結果后把結果返回請求節點,而不像第一種方式是把DNS服務器單播地址、域名和搜索路徑等DNS信息告訴節點。
從網絡擴展性、安全性、實用性等多方面綜合考慮,第一種采用站點范圍內的任意播地址作為DNS服務器地址的方式相對較好。
(2) 有狀態的DNS服務器發現
有狀態的DNS服務器發現方式是通過類似DHCP的服務器把DNS服務器地址、域名和搜索路徑等DNS信息告知節點。當然,這需要額外的服務器。
3.5.3 在IPv4到IPv6的過渡階段如何實現DNS?
在IPv4到IPv6的過渡過程中,作為Internet基礎架構的DNS服務也要支持這種網絡協議的升級和轉換。可以用兩種方法實現IPv4到IPv6過渡階段的DNS:
(1) DNS-ALG與NAT-PT相結合的方法
IPv4和IPv6的DNS在記錄格式等方面有所不同,為了實現IPv4網絡和IPv6網絡之間的DNS查詢和響應,可以將應用層網關DNS-ALG與NAT-PT相結合,作為IPv4和IPv6網絡之間的翻譯器。例如,IPv4的地址域名映射使用“A”記錄,而IPv6使用“AAAA”或“A6”記錄。那么,IPv4節點發送到IPv6網絡的DNS查詢請求是“A”記錄,DNS-ALG就把“A”改寫成“AAAA”,并發送給IPv6網絡中的DNS服務器。當服務器的回答到達DNS-ALG時,DNS-ALG修改回答,把“AAAA”改為“A”,把IPv6地址改成DNS-ALG地址池中的IPv4轉換地址,把這個IPv4轉換地址和IPv6地址之間的映射關系通知NAT-PT,并把這個IPv4轉換地址作為解析結果返回IPv4主機。IPv4主機就以這個IPv4轉換地址作為目的地址與實際的IPv6主機通過NAT-PT通信。這個過程示意如下圖。
(2) 雙協議棧方式
對于采用雙協議棧方式的過渡方法,在DNS服務器中同時存在“A”記錄和“AAAA”(或“A6”)記錄。由于節點既可以處理IPv4協議,也可以處理IPv6協議,因此無需類似DNS ALG的轉換設備。無論DNS服務器回答“A”記錄還是“AAAA”記錄,都可以進行通信。
3.6 鄰居發現
3.6.1 IPv6鄰居發現協議包括哪些內容?
IPv6定義了鄰居發現協議(Neighbor Discovery protocol,NDP),它使用一系列IPv6控制信息報文(ICMPv6)來實現相鄰節點(同一鏈路上的節點)的交互管理,并在一個子網中保持網絡層地址和鏈路層地址之間的映射。鄰居發現協議中定義了5種類型的信息:路由器宣告、路由器請求、路由重定向、鄰居請求和鄰居宣告。通過這些信息,實現了對以下功能的支持:
· 路由器發現:即幫助主機來識別本地路由器;
· 前綴發現:節點使用此機制來確定指明鏈路本地地址的地址前綴以及必須發送給路由器轉發的地址前綴;
· 參數發現:幫助節點確定諸如本地鏈路MTU之類的信息;
· 地址自動配置:用于IPv6節點自動配置;
· 地址解析:替代了ARP和RARP,幫助節點從目的IP地址中確定本地節點(即鄰居)的鏈路層地址;
· 下一跳確定:可用于確定包的下一個目的地,即可確定包的目的地是否在本地鏈路上。如果在本地鏈路,下一跳就是目的地;否則,包需要選路,下一跳就是路由器,鄰居發現可用于確定應使用的路由器;
· 鄰居不可達檢測:幫助節點確定鄰居(目的節點或路由器)是否可達;
· 重復地址檢測:幫助節點確定它想使用的地址在本地鏈路上是否已被占用;
· 重定向:有時節點選擇的轉發路由器對于待轉發的包而言并非最佳。這種情況下,該轉發路由器可以對節點進行重定向,使它將包發送給更佳的路由器。例如,節點將發往Internet的包發送給為節點所在的內部網服務的默認路由器,該內部網路由器可以對節點進行重定向,以使其將包發送給連接在同一本地鏈路上的 Internet路由器。
3.6.2 IPv6鄰居發現協議與IPv4地址解析協議有什么區別?
IPv6不再執行地址解析協議(ARP)或反向地址解析協議(RARP),而以鄰居發現協議中的相應功能代替,IPv6鄰居發現協議與IPv4地址解析協議主要區別如下:
IPv4中地址解析協議ARP是獨立的協議,負責IP地址到鏈路層地址的轉換,對不同的鏈路層協議要定義不同的ARP協議。IPv6中鄰居發現協議NDP包含了ARP的功能,且運行于因特網控制報文協議ICMPv6上,更具有一般性,包括更多的內容,而且適用于各種鏈路層協議;
ARP協議以及ICMPv4路由器發現和ICMPv4重定向報文基于廣播,而NDP協議的鄰居發現報文基于高效的組播和單播;
可達性檢測的目的是確認相應IP地址代表的主機或路由器是否還能收發報文,IPv4沒有統一的解決方案。NDP中定義了可達性檢測過程,保證IP報文不會發送給“黑洞”。
3.7 超長數據傳送問題
3.7.1 IPv6如何解決超長數據的傳送問題?
IPv6要求互聯網上的每條鏈路具有1280或更多個八位組的最大傳輸單元(MTU)。無法在一段之內傳送1280個八位組的鏈路必須根據鏈路的情況在IPv6下層的協議中提供分段和重組機制。具有可配置MTU的鏈路,比如PPP鏈路必須配置為具有至少1280個八位組的MTU;要發送大于路徑MTU的包,節點可以使用IPv6分段報頭,在源節點將包分段,并在目的節點將包重組。
3.7.2 IPv6通信中源節點如何發現到目的節點的最大傳輸單元?
RFC1981 中描述了一種動態發現路徑最大傳輸單元(PMTU)的方法。基本思想是源節點最初假定到目的節點的一條路徑的PMTU是這條路徑第一跳的已知MTU。如果發往這條路徑的任何包由于太大而不能被路徑上的一些節點轉發,那些節點將丟棄這些包并發回ICMPv6包太大消息。源節點收到這樣一個消息后應根據包太大消息中報告的MTU壓縮的那一跳的MTU值減小它為這條路徑假定的PMTU。當節點對PMTU的估計值小于或等于實際PMTU時路徑MTU發現過程結束。要注意在這個過程中“發包-收到包太大消息”的循環可能反復多次,因為路徑上總潛在可能存在MTU更小的鏈路。節點也可以通過停止發送比IPv6最小鏈路MTU大的包來終止這個發現過程。
3.8 路由技術
3.8.1 IPv6在路由方面有什么新特點?
IPv6采用聚類機制,定義了非常靈活的層次尋址及路由結構,同一層次上的多個網絡在上層路由器中表示為一個統一的網絡前綴,這樣可以顯著減少路由器必須維護的路由表項。在理想情況下,一個核心主干網路由器只須維護不超過8192個表項。這大大降低了路由器的尋路和存儲開銷。
IPv6協議所帶來的另一個特點是提供數據流標簽,即流量識別。路由器可以識別屬于某個特定流量的數據包,并且這條信息第一次接收時即被記錄下來,下一次這個路由器接收到同樣的流量數據包后,路由器采用識別的記錄情況,而不需查對路徑選擇表,從而減少了數據處理的時間。
多點傳送路由是指目的地址是一個多點傳送地址的信息包路由。在IPv6中,多點傳送路由的問題與IPv4中類似,只是功能有所加強,分別成為了ICMPv6和OSPFv6的一部分,而不是IPv4中的單獨協議,從而成為了IPv6整體的一部分。為了路由多點傳送信息包,IPv6中創建了一個分布樹(多點傳送樹)到達組里的所有成員。
3.8.2 IPv6中可用的路由協議包括哪些?
IPv6主要使用三種路由協議:RIPv6(Routing Information Protocol,路由信息協議)、OSPFv6(Open Shortest Path First,開放最短路徑優先)和IDRPv2(Inter-Domain Routing Protocol,域間路由協議)以及可能的EIGRP和雙層的IS-IS。
RIPv6是可以與IPv6共同使用的RIP版本。更新后的RIP允許接收128位地址,沒有增加新特性,沒有消除以前限制的相關前綴長度。這種選擇的原因是為了保持RIPv6的簡單性,這樣它可以在非常簡單的設備上實現。
OSPFv6是可以用于IPv6的OSPF版本,它也是IPv6推薦的內部網關路由協議(IGP),作為所有路由器廠商的標準實現,它適于大型網絡。OSPFv6作為OSPF的更新,允許傳送新的128位地址和相關的前綴長度,在OSPFv6中,區域定義為128位地址。
IDRP是和IPv6共同使用的外部網關路由協議(EGP),IDRP是一個路徑矢量協議,在OSI結構中是設計在無連接網絡協議(CLNP,ISO 8473)使用的,在Internet上作為EGP從BGP-4得出,適于和IPv6共同使用的IDRP版本是IDRPv2。
3.9 組播技術
3.9.1 IPv6在支持組播方面有什么特征?
IPv6加強了組播功能,這是一種可將信息傳遞給所有已登記了欲接收該消息的主機的功能。使用組播功能可以同時傳遞數據給大量的用戶,傳遞過程只會占有一些公共或專用帶寬開銷而不會浪費帶寬在整個網絡里廣播。在IPv6的組播功能中增加了 “標志”,可以區分永久性與臨時性地址,更有利于組播功能的實現。IPv6還包含了一些限制組播消息傳遞范圍的一些特性,這樣,組播消息可以被局限在一個特定的位置、區域、公司或其它約定范圍,從而減少了帶寬的使用并可提供安全性。組播的意義在于只有用戶加入相應的組播組才能收到發給該組的信息,這對于視頻節目的發送來說意義尤其重大,模擬電視中的頻道概念就完全可以用組播組的概念來代替。而且組播組的范圍可以包括同一本地網、同一機構網、甚至IPv6全球地址空間中的任何位置的節點,這就為網絡多媒體信息服務提供了更大的靈活性。
3.10 對移動性的支持
3.10.1 什么是移動IPv6?
移動IPv6協議為用戶提供可移動的IP數據服務,讓用戶可以在世界各地都使用同樣的IPv6地址,非常適合未來無線上網。
現在的互聯網協議IPv4,原本不提供任何移動性支持。針對這一情況,IETF于1996年制訂了支持移動互聯網設備的協議,稱為移動IP,其協議有兩種版本:基于IPv4的移動IPv4和基于IPv6的移動IPv6。
移動IP的主要目標是:不管是連接在本地鏈路還是移動到外地網絡,移動節點總是通過本地地址尋址。移動IP在網絡層加入了新的特性,在改變網絡連接點時,運行在節點上的應用程序不用修改或配置仍然可用。這些特性使得移動節點總是通過本地地址通信。這種機制對于IP層以上的協議層是完全透明的。移動節點所在的本地鏈路稱為移動節點的家鄉鏈路,移動節點的本地地址稱為家鄉地址。
移動IPv6操作包括家鄉代理注冊、三角路由、路由優化、綁定管理、移動檢測和家鄉代理發現。移動IPv6的工作機制如下圖所示。圖中有3條鏈路和3個系統。鏈路A上有一個路由器提供家鄉代理服務,這個鏈路是移動節點的家鄉鏈路。移動節點從鏈路A移動到鏈路B。鏈路C上有一個通信節點,可以是移動的或者靜止的。
當移動節點連接到外地鏈路時,除了家鄉地址外,它還可以通過一個或多個轉交地址進行通信。轉交地址是移動節點在外地鏈路時的IP地址。移動節點的家鄉地址和轉交地址之間的關聯稱為“綁定”。移動節點的轉交地址可以自動配置。
移動IPv6的實現離不開家鄉鏈路上的家鄉代理。當移動節點離開本地時,要向家鄉鏈路上的一個路由器注冊自己的一個轉交地址,要求這個路由器作為自己的家鄉代理。家鄉代理需要用代理鄰居發現來截獲家鄉鏈路上發往移動節點家鄉地址的數據包,然后通過隧道將截獲的數據包發往移動節點的主轉交地址。為了通過隧道發送截獲的數據包,家鄉代理要把數據包進行IPv6封裝,外部的IPv6報頭地址設為移動節點的主轉交地址。
當移動節點離開本地時,家鄉鏈路的一些節點可能重新配置,導致執行家鄉代理功能的路由器被其他路由器所代替。在這種情況下,移動節點可能不知道自己家鄉代理的IP地址。移動IPv6提供了一種動態家鄉代理地址發現機制,移動節點可以動態發現家鄉鏈路上家鄉代理的IP地址,離開本地時,它在這個家鄉代理上注冊轉交地址。
移動IPv6還定義了一個附加的IPv6目的選項——家鄉地址選項。作為發送方的移動節點通過在發送的數據包中攜帶家鄉地址選項可以把家鄉地址告訴作為接收方的通信節點,而轉交地址對于移動IPv6以上層(如傳輸層)是透明的。
在IPv6中,移動節點能把自己的轉交地址告訴每個通信節點,使通信節點和移動節點之間進行直接路由,避免了三角路由問題。由于未來互聯網上會有大量的無線移動節點,因此,在路由效率上的大規模改善可能對互聯網的可擴展性產生本質的影響。
移動IPv6具有誘人的應用前景,它為新一代無線用戶提供了移動支持,但在移動越區切換、QoS、安全等方面仍不能滿足實際應用的需要。目前,許多研究機構(包括移動通信的著名廠商諾基亞、愛立信等)都在研究這些關鍵技術。
3.10.2 為什么IPv6能夠比IPv4更好地解決移動問題?
移動IPv6與移動IPv4相比優勢明顯,主要是其設計吸收了移動IPv4的發展經驗,并且抓住了設計新版本IP協議(IPv6)的大好時機,結合了IPv6的很多新特性。IPv6的出現是移動計算的一個重要里程碑,IPv6的下列主要特性對于未來的移動無線網絡的發展至關重要:足夠多的IP地址、安全數據報頭的實現、目的選項提高了路由效率、地址自動配置、避免入口過濾、錯誤恢復沒有軟狀態“瓶頸”。
移動IPv6協議的優點在移動終端數量持續上漲的今天尤其突出。IPv6將是實現移動互聯網上許多新型而精彩的服務的關鍵。盡管IPv4中也存在移動協議,但二者之間存在本質的區別:移動IPv4協議不適用于數量龐大的移動終端。目前全世界的移動終端數就超過7億個,而且移動電話終端的潮流才剛剛開始,包含諸如門、防盜自動警鈴等設備的下一輪終端浪潮已經顯露出來。移動IP需要為每個設備提供一個全球唯一的IP地址,不久的將來,當每個人都要攜帶一個或多個移動終端時,IPv4將沒有足夠的地址空間為在公共互聯網上運行的每個移動終端分配一個全球唯一的IP地址,而IPv6卻可以實現這一點。除了IPv6的其他優點外,單這一項功能就可以實現個人之間的直接通信。從另一個角度說,移動IPv6能夠通過簡單的擴展,滿足大規模移動用戶的需求。這樣,它就能在全球范圍內解決有關網絡和訪問技術之間的移動性問題。另外,IPv4協議中對移動性的支持不是強制的,而移動IPv6是IPv6協議中不可或缺的部分,所有IPv6的實現都必須支持移動性。
3.11 安全問題
3.11.1 IPv6能徹底解決互聯網中的安全問題嗎?
原來的互聯網安全機制只建立于應用程序級,如E-mail加密、SNMPv2網絡管理安全、接入安全(HTTP、SSL)等,無法從IP層來保證Internet的安全。為了加強互聯網的安全性,從1995年開始,IETF著手研究制定了一套IP安全(IP Security,IPSec)協議用于保護IP通信的安全。IPSec提供既可用于IPv4也可用于IPv6的安全性機制,它是IPv6的一個組成部分,也是IPv4的一個可選擴展協議。通過集成IPSec,IPv6實現了IP級的安全。IPSec提供如下安全性服務:訪問控制、無連接的完整性、數據源身份認證、防御包重傳攻擊、保密、有限的業務流保密性。IPSec的認證報頭(Authentication Header,AH,RFC2402中描述)協議定義了認證的應用方法,封裝安全負載(Encapsulating Security Payload,ESP,RFC2406中描述)協議定義了加密和可選認證的應用方法。IPSec安全性服務完全通過AH和ESP頭相結合的機制來提供,當然還要有正確的相關密鑰管理協議。在實際進行IP通信時,可以根據安全需求同時使用這兩種協議或選擇使用其中的一種。
IPv6實質上不會比IPv4更加安全。IPv6標準的起草者、思科總部的兩位“杰出網絡技術領袖”Fred Baker和Tony Hain認為IPv6從根本上來說,只是IP地址改變的協議包,并不能解決現在的互聯網協議IPv4中的安全問題。但是由于IPSec提供的端到端安全性的兩個基本組件——認證和加密——都是IPv6協議的必備組件,而在IPv4中,它們只是可選組件,因此,采用IPv6,安全性會更加簡便、一致。更重要的是,IPv6使我們有機會在將網絡轉換到這種新型協議的同時發展端到端安全性。
3.11.2 為解決IPv6網絡安全問題,傳統的安全設備需要做那些改進?
IPv6網絡中仍需要使用防火墻、入侵檢測系統等傳統的安全設備,但由于IPv6的一些新特點,IPv4網中現有的這些安全設備在IPv6網中不能直接使用,還需要做些改進:
防火墻的設計
由于IPv6相對IPv4在數據報頭上有了很大的改變,所以原來的防火墻產品在IPv6網絡上不能直接使用,必須做一些改進。針對IPv6的Socket套接口函數已經在RFC3493:Basic Socket Interface Extensions for IPv6中定義,以前的應用程序都必須參考新的API做相應的改動。
IPv4中防火墻過濾的依據是IP地址和TCP/UDP端口號。IPv4中IP頭部和TCP頭部是緊接在一起的,而且其長度是固定的,所以防火墻很容易找到頭部,并應用相應的策略。然而在IPv6中TCP/UDP報頭的位置有了根本的變化,它們不再是緊連在一起的,通常中間還間隔有其他的擴展頭部,如路由選項頭部,AH/ESP頭部等。防火墻必須讀懂整個數據包才能進行過濾操作,這對防火墻的處理性能會有很大的影響。
入侵檢測系統(IDS)的設計
在IPv6下也使我們不得不放棄以往的網絡監控技術,投身一個全新的研究領域。首先,IDS產品同防火墻一樣,在IPv6下不能直接運行,還要做相應的修改。其次,IDS的工作原理實際上是一個監聽器,接收網段上的所有數據包,并對其進行分析,從而發現攻擊,并實施相應的報警措施。但是,如果使用傳輸模式進行端到端的加密,IDS就無法工作,因為它接收的是加密的數據包,無法理解。當然,解決方案之一是讓IDS能對這些數據包進行解密,但這樣勢必會帶來新的安全問題。同時IPv6的可靠性是否如最初所設想的那樣,也有待時間的考驗。
由于IPv6中引入了網絡層的加密技術,未來網絡上的數據通訊的保密性將會越來越強,這使網絡入侵檢測系統和主機入侵檢測引擎也面臨在多種不同平臺如何部署的問題。這就需要研究IDS新的部署方式,再下一步,研究如何才能在任何網絡狀況、任何服務器、任何客戶端、任何應用環境都能進行適當的自轉換和自適應。
3.12 服務質量
3.12.1 為更好地提供服務質量,IPv6協議作了哪些考慮?
從協議的角度看,IPv6與目前的IPv4提供相同的服務質量(QoS),但是IPv6的優點體現在能提供不同的服務。這些優點來自于IPv6的包頭結構中新增的優先級字段和流標簽字段。優先級字段擴大到1個字節,這就可以定義256個級別的優先級,對各種多媒體信息根據緊急性確定數據包的優先級,從而保證每一項服務都能達到用戶滿意的質量。而有了20位長的流標簽字段,在傳輸過程中,中間的各節點就可以識別和分開處理任何IP地址流。在IPv6中,同一個業務流的所有數據包采用相同的流標簽,這樣當路由器檢測到相同的流標簽的時候就采用相同的路徑發出去,而不需要為每一個數據包重新選擇路由,從而大大提高了數據包轉發的效率,降低了端到端的延遲。盡管對流標簽的準確應用還沒有制定出有關標準,但將來它會用于基于服務級別的新計費系統。此外,在支持 “總是在線”連接、防止服務中斷以及提高網絡性能方面,IPv6也有助于改進服務質量。
IPv6實現QoS的協議是IETF的資源保留協議(Resource Reserve Protocol,RSVP)。主機用RSVP代表應用數據流(指可以由路由器或者轉發數據的主機辨別的相關數據包的流,在IPv6協議下就是擁有相同的流標簽的流)向網絡請求特定的服務質量,例如基于平均值的最大帶寬、最大接收延遲、優先隊列以及其他參數,主機也可以指定一個特定的網絡服務級別,這類似于數字視頻廣播(Digital Video Broadcasting,DVB)中的網絡信息表的概念。RSVP帶著這個請求通過網絡,訪問這個數據流經過的網絡的每個節點。在每個節點上,RSVP 試圖為這個流進行資源保留。這使得提供具有服務質量的圖像和其它實時業務成為可能。
3.13 IPv4向IPv6的轉換
3.13.1 什么是IPv6轉換機制?為什么需要轉換機制?
IPv6不可能立刻替代IPv4,因此在相當一段時間內IPv4和IPv6會共存在一個環境中。要提供平穩的轉換過程,使得對現有的使用者影響最小,就需要有良好的轉換機制。目前,這個議題是IETF ngtrans工作小組的主要目標,有許多轉換機制被提出,部分已被用于6Bone上。IETF推薦了雙協議棧、隧道技術以及NAT等轉換機制:
IPv6/IPv4雙協議棧技術
簡單地說,雙棧機制就是使IPv6網絡節點具有一個IPv4棧和一個IPv6棧,同時支持IPv4和IPv6協議。IPv6和IPv4是功能相近的網絡層協議,兩者都應用于相同的物理平臺,并承載相同的傳輸層協議TCP或UDP,如果一臺主機同時支持IPv6和IPv4協議,那么該主機就可以和僅支持IPv4或IPv6協議的主機通信,IPv6/IPv4雙協議棧的協議結構。
應用層協議
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應該盡量保證在不修改原有應用的情況下就可以使用
評論
查看更多