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