摘要:IPv6協(xié)議是取代IPv4的下一代網(wǎng)絡(luò)協(xié)議,它具有許多新的特性與功能。域名系統(tǒng)(DNS)是Internet的基礎(chǔ)架構(gòu), IPv6的新特性也需要DNS的支持。因此,DNS勢必要升級以滿足IPv6的需求。本文從IPv6 DNS的體系結(jié)構(gòu)、IPv6的地址解析、IPv6地址自動配置和即插即用、IPv4到IPv6的過渡等幾方面對IPv6時代的DNS進行了分析和研究。
關(guān)鍵詞:IPv6 域名系統(tǒng)
一. 簡介
域名系統(tǒng)(Domain Name System,簡稱:DNS)的主要功能是通過域名和IP地址之間的相互對應關(guān)系,來定位網(wǎng)絡(luò)資源,即:根據(jù)域名查詢IP地址,反之亦然。DNS是當今Internet的基礎(chǔ)架構(gòu),眾多的網(wǎng)絡(luò)服務(如Http,F(xiàn)tp,Email等等)都是建立在DNS體系基礎(chǔ)之上的。權(quán)威人士指出:"一旦你理解了 DNS,你才真正懂得了Internet"。因此,DNS的重要性是不言而喻的。
IPv6協(xié)議是用來取代IPv4的互聯(lián)網(wǎng)協(xié)議。IPv6具有很多優(yōu)點。首先,它提供了巨大的地址空間,這實際上是推廣IPv6的動力。其次,IPv6 的地址結(jié)構(gòu)和地址分配采用嚴格的層次結(jié)構(gòu),以便于進行地址聚合,從而大大減小了路由器中路由表的規(guī)模。再次,IPv6協(xié)議支持網(wǎng)絡(luò)節(jié)點的地址自動配置,可以實現(xiàn)即插即用功能。而且,IPv6協(xié)議對主機移動性有較好的支持,適合于越來越多的互聯(lián)網(wǎng)移動應用。另外,IPv6協(xié)議在性、對多媒體流的支持性等方面都具有超過IPv4的優(yōu)勢。
admin5.com IPv6網(wǎng)絡(luò)中的DNS非常重要,一些IPv6的新特性和DNS的支持密不可分。本文從IPv6 DNS的體系結(jié)構(gòu)、IPv6的地址解析、IPv6地址自動配置和即插即用、IPv4到IPv6的過渡等幾方面對IPv6時代的DNS進行了分析和研究。
二. IPv6域名系統(tǒng)的體系結(jié)構(gòu)
IPv6網(wǎng)絡(luò)中的DNS與IPv4的DNS在體系結(jié)構(gòu)上是一致的,都是采用樹型結(jié)構(gòu)的域名空間。(如圖1所示)IPv4協(xié)議與IPv6協(xié)議的不同并不意味著需要單獨兩套IPv4 DNS體系和IPv6 DNS體系,相反的是,DNS的體系和域名空間必須是一致的,即,IPv4和IPv6共同擁有統(tǒng)一的域名空間。在IPv4到IPv6的過渡階段,域名可以同時對應于多個IPv4和IPv6的地址。以后隨著IPv6網(wǎng)絡(luò)的普及,IPv6地址將逐漸取代IPv4地址。
圖1的最上方是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é)點都有一個標識(Label),根節(jié)點的標識是"空"(即長度為0),其它節(jié)點的標識的長度在1到63字節(jié)之間。一個節(jié)點的域名是由從這個節(jié)點到根節(jié)點的路徑上的所有標識從左到右順序排列組成的,標識之間用"."分隔。例如www.cnnic.net.cn。
DNS的整個域名空間劃分成許多的區(qū)(Zone),見圖1中的橢圓標記,數(shù)據(jù)采用分布式存儲。每個區(qū)都有域名服務器(包括主服務器和輔服務器),以資源記錄(Resource Record)的形式來存儲域名信息。資源記錄包括了主機名(域名)和IP地址的對應,以及子域服務器的授權(quán)等多種類型。
用戶在使用DNS服務時,可以對不必細致地了解DNS域名空間的樹型結(jié)構(gòu)體系,只須在設(shè)置網(wǎng)絡(luò)時指定一個DNS服務器或使用動態(tài)主機配置(DHCP)等相關(guān)技術(shù)。從而用戶的應用程序可以通過操作系統(tǒng)內(nèi)嵌的解析器(Resolver)訪問DNS系統(tǒng),查詢域名相關(guān)的網(wǎng)絡(luò)資源信息。關(guān)于DNS詳細的描述可以參考[1][2]。
三. IPv6地址及其表示方法
IPv6地址長度為128比特,地址按照其傳輸類型分為3種[3]:
單播地址(Unicast Address):用來標識單一網(wǎng)絡(luò)接口。目標地址是單播地址的數(shù)據(jù)包將發(fā)送給以這個地址標識的網(wǎng)絡(luò)接口。
本文來自www.admin5.com 任播地址(Anycast Address):用來標識一組網(wǎng)絡(luò)接口(通常屬于不同的節(jié)點)。目標地址是任播地址的數(shù)據(jù)包將發(fā)送給其中路由意義上最近的一個網(wǎng)絡(luò)接口。
多播地址(Multicast Address):用來標識一組網(wǎng)絡(luò)接口的標識(通常屬于不同的節(jié)點)。發(fā)送到多播地址的數(shù)據(jù)包發(fā)送給本組中所有的網(wǎng)絡(luò)接口。在IPv6中沒有廣播地址(Broadcast Address),用多播地址取代。
其中,單播地址按照地址的傳輸范圍分為可聚合全局單播地址(Aggregatable Global Unicast Addresses)、NSAP地址、IPX層次地址、站點本地地址(Site-Local address)和鏈路本地地址(link-Local address)等。所有的網(wǎng)絡(luò)接口至少要有一個鏈路本地地址,同時還可以擁有多個地址(包括單播地址,任播地址和多播地址)。
IPv6的地址在表示和書寫時,用冒號將128比特分割成8個16比特的部分,每個部分包括4位的16進制數(shù)字,例如
1080:0000:0000:0000:0008:0800:0C:123A
在每個4位一組的十六進制數(shù)中,如其高位為0,則可省略。例如將0800寫成800,0008寫成8,0000寫成0。于是 1080:0000:0000:0000:0008:0800:0C:123A可縮寫成1080:0:0:0:8:800:0C:123A。為了進一步簡化,規(guī)范中導入了重疊冒號的規(guī)則,即用重疊冒號置換地址中的連續(xù)16比特的0。例如,將上例中的連續(xù)3個0置換后,可以表示成如下的縮寫形式。 1080::8:800:0C:123A。重疊冒號的規(guī)則在一個地址中只能使用一次。例如,地址0:0:0:BA98:7654:0:0:0可縮寫成::BA98:7654:0:0:0或0:0:0:BA98:7654::,但不能記成::BA98:7654::。
本文來自www.admin5.com 另外,可以用"IPv6地址/前綴長度"來表示地址前綴。這個表示方法類似于CIDR中IPv4的地址前綴表示法。這里IPv6地址是上述任一種表示法所表示的IPv6地址,前綴長度是一個十進制值,指定該地址中最左邊的用于組成前綴的比特數(shù)。例如,對32比特的前綴10800000(十六進制),可以如下表示:
1080::8:800:0C:123A/32
1080::/32
四. DNS對IPv6地址層次性的支持
IPv6可聚合全局單播地址是在全局范圍內(nèi)使用的地址,必須進行層次劃分及地址聚合。它的層次結(jié)構(gòu)如下表所示:
其中:
FP(001):用于可聚合全局單播地址的格式前綴(FP:Format Prefix)(3比特);
TLA ID:聚合標識符(Top-Level Aggregation Identifier);
RES:為將來使用而保留;
NLA ID:次級聚合標識符(Next-Level Aggregation Identifier);
SLA ID:站點級聚合標識符(Site-Level Aggregation Identifier);
INTERFACE ID: 接口標識符;
IPv6全局單播地址的分配方式如下:地址聚合機構(gòu)TLA(即大的ISP或地址管理機構(gòu))獲得大塊地址,負責給次級地址聚合機構(gòu)NLA(中小規(guī)模 ISP)分配地址,NLA給站點級地址聚合機構(gòu)SLA(子網(wǎng))和網(wǎng)絡(luò)用戶分配地址。IPv6地址的層次性在DNS中通過地址鏈技術(shù)可以得到很好的支持。下面從DNS正向地址解析和反向地址解析兩方面進行分析。
站長網(wǎng),站長資訊 4.1 正向解析
IPv4的地址正向解析的資源記錄是"A"記錄。IPv6地址的正向解析目前有兩種資源記錄,即,"AAAA"和"A6"記錄。其中,"AAAA"較早提出[4],它是對"A"記錄的簡單擴展,由于IP地址由32位擴展到128位,擴大了4倍,所以資源記錄由"A"擴大成4個"A"。"AAAA"用來表示域名和IPv6地址的對應關(guān)系,并不支持地址的層次性。
"A6"在RFC2874[5]中提出,它是把一個IPv6地址與多個"A6"記錄建立聯(lián)系,每個"A6"記錄都只包含了IPv6地址的一部分,結(jié)合后拼裝成一個完整的IPv6地址。"A6"記錄支持一些"AAAA"所不具備的新特性,如地址聚合,地址更改(Renumber)等。
首先,"A6"記錄方式根據(jù)TLA、NLA和SLA的分配層次把128位的IPv6的地址分解成為若干級的地址前綴和地址后綴,構(gòu)成了一個地址鏈。每個地址前綴和地址后綴都是地址鏈上的一環(huán),一個完整的地址鏈組成一個IPv6地址。這種思想符合IPv6地址的層次結(jié)構(gòu),從而支持地址聚合。
其次,用戶在改變ISP時,要隨ISP改變而改變其擁有的IPv6地址。如果手工修改用戶子網(wǎng)中所有在DNS中注冊的地址,是一件非常繁瑣的事情。而在用 "A6"記錄表示的地址鏈中,只要改變地址前綴對應的ISP名字即可,可以大大減少DNS中資源記錄的修改。并且在地址分配層次中越靠近底層,所需要改動的越少。
admin5.com站長資訊 在下例中,節(jié)點host.example.com地址由example.com(SLA)分配, example.com的地址由example1.net(NLA)分配,而example1.net的地址則是由ISP-A.net(TLA)分配。下面的多條記錄組成了一個完整的IPv6 DNS地址鏈。如果example1.net改變ISP,需要改變其DNS中的ISP地址前綴,而它的網(wǎng)絡(luò)用戶example.com則無需改變DNS設(shè)置。
例1:IPv6DNS地址鏈:
$ORIGIN example.com.
host IN A6 64 0:0:0:0:42::1 company.example1.net.
$ORIGIN example1.net.
company IN A6 32 0:0:1:1860:: SUBSCRIBER-X.ISP-A.net
$ORIGIN ISP-A.net.
SUBSCRIBER-X IN A6 0 3ffe:8050::
例2:把例1中的地址翻譯成"AAAA"記錄表示的形式:
$ORIGIN example.com.
host IN AAAA 3ffe:8050:1:1860:0:0:0:0:42::1
4.2 反向解析
IPv6反向解析的記錄和IPv4一樣,是"PTR",但地址表示形式有兩種。一種是用 "."分隔的半字節(jié)16進制數(shù)字格式(Nibble Format),低位地址在前,高位地址在后,域后綴是"IP6.INT."。另一種是二進制串(Bit-string)格式,以"["開頭,16進制地址(無分隔符,高位在前,低位在后)居中,地址后加"]",域后綴是"IP6.ARPA."。半字節(jié)16進制數(shù)字格式與"AAAA"對應,是對IPv4 的簡單擴展。二進制串格式與"A6"記錄對應,地址也象"A6"一樣,可以分成多級地址鏈表示,每一級的授權(quán)用"DNAME"記錄。和"A6"一樣,二進制串格式也支持地址層次特性。
總之,以地址鏈形式表示的IPv6地址體現(xiàn)了地址的層次性,支持地址聚合和地址更改。但是,由于一次完整的地址解析分成多個步驟進行,需要按照地址的分配層次關(guān)系到不同的DNS服務器進行查詢。所有的查詢都成功才能得到完整的解析結(jié)果。這勢必會延長解析時間,出錯的機會也增加。因此,需要進一步改進DNS 地址鏈功能,提高域名解析的速度才能為用戶提供理想的服務。
五. IPv6中的即插即用與DNS
IPv6協(xié)議支持地址自動配置[6][7],這是一種即插即用的機制,在沒有任何人工干預的情況下,IPv6網(wǎng)絡(luò)接口可以獲得鏈路局部地址、站點局部地址和全局地址等,并且可以防止地址重復。IPv6支持無狀態(tài)地址自動配置和有狀態(tài)地址自動配置兩種方式。
在無狀態(tài)地址自動配置方式下,需要配置地址的網(wǎng)絡(luò)接口先使用鄰居發(fā)現(xiàn)機制獲得一個鏈路本地地址。網(wǎng)絡(luò)接口得到這個鏈路本地地址之后,再接受路由器宣告的地址前綴,結(jié)合接口標識得到一個全局地址。而有狀態(tài)地址自動配置的方式,如DHCP(動態(tài)主機配置協(xié)議),需要一個DHCP服務器,通過客戶機/服務器模式從DHCP服務器處得到地址配置的信息。
IPv6節(jié)點通過地址自動配置得到IPv6地址和網(wǎng)關(guān)地址。但是,地址自動配置中不包括DNS服務器的自動配置。如何自動發(fā)現(xiàn)提供解析服務的DNS服務器也是一個需要解決的問題[8]。正在研究的DNS服務器的自動發(fā)現(xiàn)的解決方法可以分為無狀態(tài)和有狀態(tài)兩類。
admin5.com 在無狀態(tài)的方式下,需要為子網(wǎng)內(nèi)部的DNS服務器配置站點范圍內(nèi)的任播地址。要進行自動配置的節(jié)點以該任播地址為目的地址發(fā)送服務器發(fā)現(xiàn)請求,詢問DNS 服務器地址、域名和搜索路徑等DNS信息。這個請求到達距離最近的DNS服務器,服務器根據(jù)請求,回答DNS服務器單播地址、域名和搜索路徑等DNS信息。節(jié)點根據(jù)服務器的應答配置本機DNS信息,以后的DNS請求直接用單播地址發(fā)送給DNS服務器。
另外,也可以不用站點范圍內(nèi)的任播地址,而采用站點范圍內(nèi)的多播地址或鏈路多播地址等。還可以一直用站點范圍內(nèi)的任播地址作為DNS服務器的地址,所有的 DNS解析請求都發(fā)送給這個任播地址。距離最近的DNS服務器負責解析這個請求,得到解析結(jié)果后把結(jié)果返回請求節(jié)點,而不像上述做法是把DNS服務器單播地址、域名和搜索路徑等DNS信息告訴節(jié)點。從網(wǎng)絡(luò)擴展性,性,實用性等多方面綜合考慮,種采用站點范圍內(nèi)的任播地址作為DNS服務器地址的方式相對較好。
在有狀態(tài)的DNS服務器發(fā)現(xiàn)方式下,是通過類似DHCP這樣的服務器把DNS服務器地址、域名和搜索路徑等DNS信息告訴節(jié)點。當然,這樣做需要額外的服務器。
六. IPv6過渡階段與DNS
在IPv4到IPv6的過渡過程中,作為Internet基礎(chǔ)架構(gòu)的DNS服務也要支持這種網(wǎng)絡(luò)協(xié)議的升級和轉(zhuǎn)換。IPv4和IPv6的DNS記錄格式等方面有所不同,為了實現(xiàn)IPv4網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)之間的DNS查詢和響應,可以采用應用層網(wǎng)關(guān)DNS-ALG結(jié)合NAT-PT的方法[9],在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服務器。當服務器的回答到達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主機。IPv4主機以這個IPv4 轉(zhuǎn)換地址作為目的地址與實際的IPv6主機通過NAT-PT通信。示意如圖2。
對于采用雙協(xié)議棧方式的過渡方法,在DNS服務器中同時存在"A"記錄和"AAAA"(或"A6")記錄。由于節(jié)點既可以處理IPv4協(xié)議,也可以處理 IPv6協(xié)議,因此無需類似DNS ALG的轉(zhuǎn)換設(shè)備。無論DNS服務器回答"A"記錄還是"AAAA"記錄,都可以進行通信。
七. 總結(jié)
隨著Internet技術(shù)的不斷發(fā)展,IPv6已經(jīng)離我們越來越近。DNS作為IPv4時代的網(wǎng)絡(luò)基礎(chǔ)服務,對Internet起著重要的作用。在即將到來的IPv6時代,新的協(xié)議和功能要求DNS不再是僅僅提供傳統(tǒng)意義上的簡單資源定位,而是一方面提供類似IPv4 DNS的基礎(chǔ)功能,另一方面結(jié)合IPv6的新特性,和其它協(xié)議有機的結(jié)合在一起,提供新的功能,使網(wǎng)絡(luò)的配置、維護、使用變的更加簡單方便,讓用戶感覺到新技術(shù)帶來的新體驗。
參考文獻
[1] P. Mockapetris,RFC1034"DOMAIN NAMES - CONCEPTS AND FACILITIES",November 1987
[2] P. Mockapetris,RFC1035"DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION",November 1987
[3] R. Hinden, RFC2373:"IP Version 6 Addressing Architecture", July 1998
[4] S. Thomson, RFC1886:"DNS Extensions to support IP version 6", December 1995
[5] M. Crawford, RFC2874:"DNS Extensions to Support IPv6 Address Aggregation and Renumbering", July 00
[6] T. Narten, RFC2461:"Neighbor Discovery for IP Version 6 (IPv6)", December 1998
[7] S. Thomson, RFC2462:"IPv6 Stateless Address Autoconfiguration", December 1998
[8] Dave Thaler, draft-ietf-ipngwg-dns-discovery-analysis-00.txt,"Analysis of DNS Server Discovery Mechanisms for
IPv6", July 01
[9] G. Tsirtsis, RFC2766:"Network Address Translation - Protocol Translation (NAT-PT)", February 00