IPv6的普及離不開DNS(域名系統(tǒng))對IPv6的支持。管理日本域名的DNS服務(wù)器已經(jīng)開始支持IPv6。不過,位于其上游、管理路由域名的服務(wù)器(路由服務(wù)器)在這一方面卻相對滯后。其原因就是存在“512Byte問題”。此次我們就來探討一下DNS支持IPv6方面的障礙——“512Byte問題”。 DNS是負(fù)責(zé)根據(jù)域名分配IP地址的系統(tǒng)。在DNS標(biāo)準(zhǔn)中,數(shù)據(jù)量均控制在512Byte以下,通過一個UDP數(shù)據(jù)包進(jìn)行傳輸。 目前, 通過DNS發(fā)出路由服務(wù)器地址請求時,就會接收到在全球運行的13臺路由服務(wù)器的域名和IPv4地址。服務(wù)器之所以為13臺,是因為其數(shù)量受到DNS可交換數(shù)據(jù)量--512Byte的限制。也就是說,僅有13份域名和IPv4地址的話,還勉強可以控制在512Byte以內(nèi)的容量內(nèi)。 DNS不能通過UDP傳輸超過512Byte的數(shù)據(jù)。這就是所謂的“512Byte問題”。 如果DNS支持IPv6的話,在請求的應(yīng)答當(dāng)中,IPv6地址就會與IPv4地址一起發(fā)送過來。在請求路由服務(wù)器地址時,除13份的域名和IPv4地址外,還需要發(fā)送13份的IPv6地址。這樣一來,返回的信息量自然就超過了512Byte。 DNS服務(wù)器在交換超過512Byte的數(shù)據(jù)時采用TCP代替UDP。但是,采用TCP會增大DNS服務(wù)器的負(fù)荷。這是因為需要進(jìn)行TCP連接的確立和切斷等處理。假如位于域名上游的所有路由服務(wù)器均由于高負(fù)荷的TCP處理而導(dǎo)致性能下降,那么整個DNS就會停止工作。這一點是采用TCP無論如何也無法避免的。 那么,管理日本域名的DNS服務(wù)器為什么可以支持IPv6呢?這是因為通過在登錄到上游路由服務(wù)器的信息上采取措施,將應(yīng)答數(shù)據(jù)包的容量控制在了512Byte以內(nèi)。在將日本域名登錄至路由服務(wù)器時,需要登錄的服務(wù)器只有6臺,減少了需要登錄的路由服務(wù)器數(shù)量,此外,還將這些域名統(tǒng)一縮短為a.dns.jp和b.dns.jp等。 不過,從根本上解決512Byte問題的方案也已經(jīng)亮相。人們已開始利用旨在通過UDP幫助DNS交換超過512B的數(shù)據(jù)的“EDNS0(Extension Mechanisms For DNS Version 0)”。使用EDNS0,在向DNS發(fā)出請求時,可以通知對方自己可接收的UDP數(shù)據(jù)包的最大數(shù)據(jù)容量。使用這一功能,就可以通過一個UDP數(shù)據(jù)包來交換超過512Byte的數(shù)據(jù)。應(yīng)用最廣泛的DNS服務(wù)器軟件“BIND”的最新版本Version 9即可支持EDNS0。
摘自 中寬網(wǎng)