陳仲華,沈成彬
(中國(guó)電信股份有限公司上海研究院 上海200122)
隨著Internet技術(shù)的廣泛應(yīng)用,作為其基礎(chǔ)的IPv4地址資源日漸匱乏,全球IPv4地址分布的不均衡性加重了地址需求的矛盾,使部分地區(qū)的IPv4地址提前出現(xiàn)短缺的局面。近期新興的物聯(lián)網(wǎng)應(yīng)用又增加了對(duì)IP地址的需求,這更加速了IPv4地址的消耗。雖然目前IPv4技術(shù)領(lǐng)域出現(xiàn)了諸如運(yùn)營(yíng)商N(yùn)AT、RSIP等技術(shù),改善了目前IPv4公網(wǎng)地址短缺的現(xiàn)狀,但這些技術(shù)沒有從根本上解決地址短缺的問題,同時(shí)此類技術(shù)的使用又引入了NAT穿透等眾多問題,有較大的局限性。因此,部署基于IPv6技術(shù)的下一代互聯(lián)網(wǎng)成為徹底改變IP地址短缺情況的唯一技術(shù)手段。IPv6具有海量地址空間,可以滿足未來互聯(lián)網(wǎng)發(fā)展和新興物聯(lián)網(wǎng)發(fā)展的需要,但I(xiàn)Pv6是一項(xiàng)與IPv4技術(shù)完全不同的技術(shù),其地址結(jié)構(gòu)、定義、地址分配方式與IPv4地址完全不同,從IPv4地址的應(yīng)用和管理到IPv6地址的應(yīng)用和管理還有許多問題需要研究。
IPv6地址分為單播地址、多播地址和任播地址。
(1)單播地址
大家所熟悉的IPv4地址是采用點(diǎn)分十進(jìn)制數(shù)的形式表示的,即D.D.D.D,其中D為不大于255的正整數(shù),例如192.168.10.1,這樣IPv4就擁有超過40億個(gè)地址。
與IPv4地址組成形式不同,IPv6地址采用冒號(hào)分割8個(gè)4位十六進(jìn)制數(shù),即X:X:X:X:X:X:X:X,其中X表示一個(gè)4位的十六進(jìn)制數(shù),例如:2001:000C:0000:0000:0022:FAFF:FE8E:8072。
圖1 根據(jù)主機(jī)物理地址生成接口地址方式
與IPv4地址分為網(wǎng)絡(luò)號(hào)(子網(wǎng)號(hào))和主機(jī)號(hào)的思想類似,IPv6地址也可以分為兩部分,即地址前綴和接口地址。在實(shí)際應(yīng)用中,IPv6地址的前綴由于要參與路由,通常由網(wǎng)絡(luò)決定。而IPv6地址的后綴則有多種生成方式。
最常用的一種生成方式是根據(jù)主機(jī)設(shè)備的物理層地址生成,稱為EUI-64算法。其過程如圖1所示。
主機(jī)自身的MAC地址分為兩部分,即設(shè)備廠商標(biāo)識(shí)和設(shè)備標(biāo)識(shí),在生成IPv6接口地址時(shí),主機(jī)將廠商標(biāo)識(shí)和設(shè)備標(biāo)識(shí)分開,并在中間插入FFFE,同時(shí)物理地址的第一字節(jié)的右邊第二位如果為0,則將該位變?yōu)?,這樣就構(gòu)成了主機(jī)IPv6接口地址,這樣的接口地址可以簡(jiǎn)化IPv6和物理地址的映射關(guān)系,使鏈路層的通信更加方便。
另一種接口地址采用IPv4地址嵌入的方式生成,其接口地址格式為:X:X:X:X:D.D.D.D。其中X為4位十六進(jìn)制數(shù),D為小于255的十進(jìn)制數(shù),X可以隨機(jī)生成,而D則根據(jù)主機(jī)當(dāng)前使用的IPv4地址直接生成。這種地址嵌入了主機(jī)當(dāng)前的IPv4地址,有利于實(shí)現(xiàn)IPv4與IPv6的兼容。
此外,IPv6接口地址還可以通過各種隨機(jī)方式生成,但無論采用何種方式,生成的IPv6地址都必須經(jīng)過地址沖突檢測(cè),才能夠正式在網(wǎng)絡(luò)上使用,以防止在同一子網(wǎng)絡(luò)內(nèi)產(chǎn)生地址沖突。
從目前業(yè)內(nèi)的設(shè)備支持情況看,對(duì)于單播地址中接口地址的生成方式,一般都會(huì)采用EUI-64的算法,生成接口地址。由于這一算法的廣泛部署(幾乎所有的操作系統(tǒng)都支持這種算法生成接口地址),IPv6地址從本質(zhì)上來將被人為地分成了前64 bit和64 bit兩個(gè)部分。從網(wǎng)絡(luò)側(cè)地址管理的角度來看,IPv6地址的管理實(shí)際上已經(jīng)演變成為對(duì)IPv6地址前綴的管理。
圖2 IPv6多播地址格式
(2)多播地址
在IPv6中多播取代了IPv4中的廣播功能,IPv6多播地址的劃分比IPv4更嚴(yán)格,同時(shí)對(duì)于多播功能的支持也更完善。IPv6多播地址的格式如圖2所示。
多播地址以FF開頭,之后的4個(gè)比特位為標(biāo)志位,再之后的4個(gè)比特位標(biāo)識(shí)多播的有效范圍,其后的112 bit標(biāo)識(shí)多播組的ID。標(biāo)志位的主要功能是表示該多播是否為一個(gè)全球公開的多播組,同時(shí)還提供了不同多播域之間進(jìn)行信息交互的標(biāo)志。范圍標(biāo)識(shí)表示該多播組的有效范圍是本地鏈路,還是一個(gè)預(yù)先設(shè)定的管理域,抑或是全球范圍。多播組編號(hào)則表示了這個(gè)多播組的身份,有需要的節(jié)點(diǎn)可以通過組編號(hào)加入這個(gè)多播組中。
IPv6多播的應(yīng)用程度遠(yuǎn)勝于IPv4多播,在IPv6協(xié)議族中,并不存在類似于IPv4中的ARP/RARP一類的二層地址解析協(xié)議以及ARP/RARP以來的廣播方式。取而代之的是,在IPv6網(wǎng)絡(luò)中二層地址的解析依賴于IPv6的多播。例如,一臺(tái)IPv6主機(jī)需要查詢本地網(wǎng)絡(luò)中是否已經(jīng)有主機(jī)使用與其相同的IPv6地址時(shí),它將通過多播地址FF02::2發(fā)送這個(gè)請(qǐng)求。
(3)任播地址
任播地址可以看作一組特殊的單播地址,它分配給一系列的節(jié)點(diǎn),在轉(zhuǎn)發(fā)去往該地址的數(shù)據(jù)時(shí),路由器將根據(jù)這些節(jié)點(diǎn)的路由距離大小轉(zhuǎn)發(fā)到其中的一個(gè)最佳節(jié)點(diǎn),從而完成負(fù)載均衡、節(jié)點(diǎn)冗余等功能。
在IPv6技術(shù)的實(shí)際使用中,由于IPv6擁有海量地址空間,分配和管理這一海量地址空間的難度要遠(yuǎn)遠(yuǎn)大于IPv4的地址管理難度。因此,根據(jù)實(shí)際使用的需要出現(xiàn)了一些新的地址分配方式。目前IPv6技術(shù)中有3種主流的地址分配方式,可以適應(yīng)不同應(yīng)用場(chǎng)合的需要。
圖3 無狀態(tài)地址分配過程
(1)無狀態(tài)地址分配
無狀態(tài)地址分配(NDRA)是IPv6中特有的地址分配方式,其基本思想是網(wǎng)絡(luò)側(cè)不管理IPv6地址的狀態(tài),包括節(jié)點(diǎn)應(yīng)該使用什么樣的地址、地址的有效期有多長(zhǎng),且基本不參與地址的分配過程。其具體的分配過程如圖3所示。
節(jié)點(diǎn)設(shè)備連接到網(wǎng)絡(luò)中后,將自動(dòng)選擇接口地址(通過算法生成IPv6地址的后64 bit),并加上FE80的前綴地址,作為節(jié)點(diǎn)的本地鏈路地址,本地鏈路地址只在節(jié)點(diǎn)與鄰居之間的通信有效,路由器設(shè)備將不路由以該地址為源地址的數(shù)據(jù)分組。在生成本地鏈路地址后,節(jié)點(diǎn)將進(jìn)行DAD(地址沖突檢測(cè)),檢測(cè)該接口地址是否有鄰居節(jié)點(diǎn)已經(jīng)使用,如果節(jié)點(diǎn)發(fā)現(xiàn)地址沖突,則無狀態(tài)地址分配過程將終止,節(jié)點(diǎn)將等待手工配置IPv6地址。如果在檢測(cè)定時(shí)器超時(shí)后仍沒有發(fā)現(xiàn)地址沖突,則節(jié)點(diǎn)認(rèn)為該接口地址可以使用,此時(shí)終端將發(fā)送路由期前綴通告請(qǐng)求,尋找網(wǎng)絡(luò)中的路由設(shè)備,當(dāng)網(wǎng)絡(luò)中配置的路由設(shè)備接收到該請(qǐng)求,則將發(fā)送地址前綴通告響應(yīng),將節(jié)點(diǎn)應(yīng)該配置的IPv6地址前64 bit的地址前綴通告給網(wǎng)絡(luò)節(jié)點(diǎn),網(wǎng)絡(luò)節(jié)點(diǎn)將地址前綴與接口地址組合,構(gòu)成節(jié)點(diǎn)自身的全球IPv6地址。
無狀態(tài)地址分配是一種簡(jiǎn)化IPv6海量地址分配復(fù)雜程度的技術(shù),通過使用該技術(shù)可以做到節(jié)點(diǎn)連接網(wǎng)絡(luò)的即插即用。在實(shí)際應(yīng)用中接口地址的生成可以由多種算法生成。同時(shí),也可以由網(wǎng)絡(luò)側(cè)根據(jù)接入節(jié)點(diǎn)的身份認(rèn)證信息為節(jié)點(diǎn)指定固定的接口地址。
(2)有狀態(tài)地址分配
有狀態(tài)的地址分配(DHCPv6)技術(shù),類似于IPv4時(shí)的DHCPv4技術(shù),節(jié)點(diǎn)接入網(wǎng)絡(luò)后將發(fā)起地址請(qǐng)求的多播,網(wǎng)絡(luò)中的DHCP服務(wù)器接收到該多播后,為節(jié)點(diǎn)動(dòng)態(tài)分配IPv6的地址。同時(shí),DHCP服務(wù)器需要管理節(jié)點(diǎn)IPv6地址的使用有效期。與DHCPv4類似,DHCPv6協(xié)議也可以攜帶節(jié)點(diǎn)身份認(rèn)證的選項(xiàng)參數(shù),根據(jù)節(jié)點(diǎn)身份的認(rèn)證結(jié)果為節(jié)點(diǎn)分配指定的IPv6地址。
(3)基于地址前綴代理的分配
基于地址前綴代理的分配(DHCP-PD)方式是一種層次化分配IPv6地址的方式。該方式允許網(wǎng)絡(luò)中的網(wǎng)關(guān)設(shè)備將IPv6地址的前綴以層次化的方式分配給下一級(jí)的接入網(wǎng)關(guān)設(shè)備,其過程如圖4所示。
圖4 DHCP PD地址分配過程
以圖4為例,網(wǎng)絡(luò)接入設(shè)備(可以是接入路由器或BRAS設(shè)備)收到用戶側(cè)網(wǎng)關(guān)設(shè)備發(fā)起的攜帶有前綴代理選項(xiàng)的DHCP請(qǐng)求時(shí),將下發(fā)一個(gè)攜帶56 bit前綴地址長(zhǎng)度的DHCP響應(yīng)分組,通知用戶側(cè)網(wǎng)關(guān)網(wǎng)絡(luò)已將該56 bit地址前綴批發(fā)給用戶網(wǎng)關(guān)。用戶網(wǎng)關(guān)在獲得該56 bit地址前綴之后可以自主選擇為終端分配該網(wǎng)絡(luò)內(nèi)的任意64 bit的子網(wǎng)絡(luò)號(hào)作為終端的前綴地址,并通過無狀態(tài)地址分配的方式分配給終端使用。也可以選擇將這56 bit的地址前綴再分割成小于64 bit的前綴地址長(zhǎng)度,以DHCP-PD方式批發(fā)給下一級(jí)網(wǎng)關(guān)使用。
在IPv6網(wǎng)絡(luò)中,地址的分配和管理難度要遠(yuǎn)大于IPv4網(wǎng)絡(luò),這不僅由于IPv6龐大的地址空間,使得網(wǎng)絡(luò)側(cè)如果直接維護(hù)所有地址狀態(tài)(類似于DHCPv4方式),將給網(wǎng)絡(luò)側(cè)的地址分配和管理系統(tǒng)造成巨大的性能壓力,同時(shí)也是因?yàn)镮Pv6技術(shù)本身更關(guān)注于地址的移動(dòng)性。因此,從3種地址分配的方式看,各有其優(yōu)點(diǎn)和劣勢(shì)。
(1)無狀態(tài)地址分配方式
其優(yōu)點(diǎn)在于網(wǎng)絡(luò)側(cè)只需要管理地址前綴的分配,網(wǎng)絡(luò)側(cè)自動(dòng)將網(wǎng)絡(luò)前綴的分配情況通過RA(router advertisment,路由器通告)告知終端,終端獲得地址前綴之后,就能夠根據(jù)自身算法獲得全局唯一的IPv6地址,網(wǎng)絡(luò)側(cè)由于不需要管理終端地址,因此其地址分配和管理的性能壓力幾乎沒有。同時(shí),無狀態(tài)地址分配方式特別適合移動(dòng)網(wǎng)絡(luò)場(chǎng)景,當(dāng)終端在不同基站和業(yè)務(wù)接入點(diǎn)設(shè)備間移動(dòng)時(shí),只需要接收路由設(shè)備的RA報(bào)文,即可以更換自身的IPv6地址,以滿足報(bào)文路由的需要。
(2)DHCPv6地址分配方式
DHCPv6地址分配方式沿用原有IPv4網(wǎng)絡(luò)的DHCPv4地址分配方式,這一分配方式采用與原有DHCPv4一樣的C/S協(xié)議架構(gòu),因此雖然協(xié)議報(bào)文結(jié)構(gòu)與DHCPv4差異較大,但是DHCPv6在實(shí)際部署中,仍然具有很好的兼容性。同時(shí),DHCPv6協(xié)議在功能上也較DHCPv4協(xié)議有所提升,例如DHCPv6協(xié)議可以由網(wǎng)絡(luò)側(cè)DHCP服務(wù)器主動(dòng)要求終端釋放地址,而不像DHCPv4協(xié)議,網(wǎng)絡(luò)側(cè)只能夠等待終端地址租期到期,才能夠通過續(xù)租失敗來迫使終端釋放地址,這個(gè)功能目前看來,IPoE接入場(chǎng)景下,對(duì)于IP地址的管控有著很明顯的優(yōu)勢(shì)。但是,由于DHCPv6需要在網(wǎng)絡(luò)側(cè)對(duì)地址進(jìn)行集中的管理,包括地址使用的有效期檢測(cè)等,因此對(duì)于管理系統(tǒng)的性能將造成壓力,因此在一個(gè)大規(guī)模的網(wǎng)絡(luò)中完全依賴DHCPv6方式進(jìn)行地址的分配和管理,存在一定的風(fēng)險(xiǎn)。
(3)DHCP-PD方式
DHCP-PD方式是IPv6網(wǎng)絡(luò)中特有的地址分配方式,其本意是為了減少網(wǎng)絡(luò)側(cè)地址管理的壓力,而引入的地址分層管理和地址批租機(jī)制。就地址分配協(xié)議本身看,DHCP-PD完全采用DHCPv6的協(xié)議格式,并通過DHCPv6的Option擴(kuò)展支持地址的分層管理。因此,DHCP-PD同樣具有較好的兼容性。同時(shí),由于引入了批租機(jī)制,地址可以成段地分配到最低層次的網(wǎng)絡(luò)中,使得在固定接入方式下,為每個(gè)終端分配一個(gè)IPv6地址成為可能。但是,DHCP-PD的地址分配機(jī)制對(duì)于地址管理的層次性有著很高的要求,下一級(jí)地址完全取自上一級(jí)地址段范圍,使得這種地址分配方式只能適合有較好規(guī)劃,且網(wǎng)絡(luò)組織基本固定的網(wǎng)絡(luò)架構(gòu),不太適合網(wǎng)絡(luò)結(jié)構(gòu)變化頻繁或有較高移動(dòng)性要求的網(wǎng)絡(luò)。最后,由于DHCP-PD是一種網(wǎng)絡(luò)地址前綴的分配方式,對(duì)于最終終端的地址,DHCP-PD還是要結(jié)合DHCPv6或者無狀態(tài)地址分配為終端進(jìn)行地址的分配。
由于上述IPv6地址分配方式的優(yōu)缺點(diǎn)不同,因此需要針對(duì)IPv6網(wǎng)絡(luò)場(chǎng)景的不同進(jìn)行地址分配和管理方式的設(shè)計(jì),才能夠滿足地址分配管理的要求。
首先,對(duì)于傳統(tǒng)PPPoE方式的固定接入網(wǎng)絡(luò),在網(wǎng)絡(luò)支持IPv6之后,初期從兼容性方面考慮,可以沿用DHCP地址分配方式,在不改變網(wǎng)絡(luò)基本架構(gòu)的前提下,在BRAS設(shè)備上開啟DHCPv6的服務(wù),為終端分配IPv6地址。在IPv6終端數(shù)量增長(zhǎng)到一定程度,網(wǎng)絡(luò)側(cè)管理地址遇到性能瓶頸時(shí),啟用DHCP-PD將地址段批租到低一層次的接入設(shè)備(如家庭網(wǎng)關(guān))上進(jìn)行管理,以減輕網(wǎng)絡(luò)側(cè)的壓力,同時(shí)在終端網(wǎng)絡(luò)內(nèi)部仍舊可以采用DHCPv6方式給終端分配IPv6地址。這一方式同樣適合采用IPoE方式接入的網(wǎng)絡(luò),例如WLAN和IPTV網(wǎng)絡(luò)。
其次,在移動(dòng)網(wǎng)場(chǎng)景中,由于終端存在較強(qiáng)的移動(dòng)性,采用無狀態(tài)地址分配方式將會(huì)是一種較好的選擇。當(dāng)終端移動(dòng)到一個(gè)新的網(wǎng)絡(luò)中時(shí),接收這個(gè)網(wǎng)絡(luò)中的路由器通告的IPv6地址前綴,同時(shí)結(jié)合終端自身生成的接口地址,就能夠使終端配置一個(gè)有效的IPv6地址。當(dāng)終端從當(dāng)前網(wǎng)絡(luò)中移走,并進(jìn)入下一個(gè)新網(wǎng)絡(luò)時(shí),由于終端接收到的路由器地址通告發(fā)生了改變,因此終端可以知道自身所處的網(wǎng)絡(luò)發(fā)生了改變,從而觸發(fā)終端更新其自身的IPv6地址。此外,由于終端可能同時(shí)接收到兩個(gè)網(wǎng)絡(luò)的路由器通告,因此,終端也可能同時(shí)接入到兩個(gè)網(wǎng)絡(luò),并實(shí)現(xiàn)負(fù)載均衡的功能。
最后,對(duì)于一些物聯(lián)網(wǎng)IPv6接入場(chǎng)景,由于終端運(yùn)算能力有限,代碼存儲(chǔ)能力也有限,不可能要求終端支持完整的IPv6協(xié)議和DHCPv6協(xié)議棧,在終端層面采用無狀態(tài)地址分配方式是一種較好的選擇。在這樣的網(wǎng)絡(luò)中,物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備可以通過DHCPv6/DHCP-PD協(xié)議獲取一個(gè)或一段IPv6地址,并采用無狀態(tài)地址分配方式向物聯(lián)網(wǎng)內(nèi)部宣告這一地址前綴,終端節(jié)點(diǎn)在獲得前綴之后能夠通過簡(jiǎn)單算法就能生成自身有效的IPv6地址,實(shí)現(xiàn)對(duì)外通信。
在引入IPv6時(shí),首先遇到的問題就是IP地址格式的改變和地址分配方式的變化,這些改變給傳統(tǒng)的IP地址的管理提出了一些新的需求?;谶@些新的需求,目前相關(guān)技術(shù)組織已經(jīng)研發(fā)了多種不同的地址分配方式,但是這些方式?jīng)]有哪一種可以單獨(dú)滿足IPv6地址分配和管理的方方面面的要求,也沒有哪一種可以單獨(dú)滿足所有IPv6部署場(chǎng)景。因此,對(duì)于IPv6地址的分配和管理,必須采用多種技術(shù)相結(jié)合的方式,分網(wǎng)絡(luò)場(chǎng)景采用不同的組合,才能滿足實(shí)際網(wǎng)絡(luò)的各種要求。
1 RFC4862.IPv6 Stateless Address Autoconfiguration,2007
2 RFC4291.IP Version 6 Addressing Architecture,1998
3 RFC3633.IPv6 Prefix Options for Dynamic Host Configuration Protocol(DHCP)Version 6,2003