IPv6的普及离不开DNS(域名系统)对IPv6的支持。管理日本域名的DNS服务器已经开始支持IPv6。不过,位于其上游、管理路由域名的服务器(路由服务器)在这一方面却相对滞后。其原因就是存在“512Byte问题”。此次我们就来探讨一下DNS支持IPv6方面的障碍——“512Byte问题”。 DNS是负责根据域名分配IP地址的系统。在DNS标准中,数据量均控制在512Byte以下,通过一个UDP数据包进行传输。 目前, 通过DNS发出路由服务器地址请求时,就会接收到在全球运行的13台路由服务器的域名和IPv4地址。服务器之所以为13台,是因为其数量受到DNS可交换数据量--512Byte的限制。也就是说,仅有13份域名和IPv4地址的话,还勉强可以控制在512Byte以内的容量内。 DNS不能通过UDP传输超过512Byte的数据。这就是所谓的“512Byte问题”。 如果DNS支持IPv6的话,在请求的应答当中,IPv6地址就会与IPv4地址一起发送过来。在请求路由服务器地址时,除13份的域名和IPv4地址外,还需要发送13份的IPv6地址。这样一来,返回的信息量自然就超过了512Byte。 DNS服务器在交换超过512Byte的数据时采用TCP代替UDP。但是,采用TCP会增大DNS服务器的负荷。这是因为需要进行TCP连接的确立和切断等处理。假如位于域名上游的所有路由服务器均由于高负荷的TCP处理而导致性能下降,那么整个DNS就会停止工作。这一点是采用TCP无论如何也无法避免的。 那么,管理日本域名的DNS服务器为什么可以支持IPv6呢?这是因为通过在登录到上游路由服务器的信息上采取措施,将应答数据包的容量控制在了512Byte以内。在将日本域名登录至路由服务器时,需要登录的服务器只有6台,减少了需要登录的路由服务器数量,此外,还将这些域名统一缩短为a.dns.jp和b.dns.jp等。 不过,从根本上解决512Byte问题的方案也已经亮相。人们已开始利用旨在通过UDP帮助DNS交换超过512B的数据的“EDNS0(Extension Mechanisms For DNS Version 0)”。使用EDNS0,在向DNS发出请求时,可以通知对方自己可接收的UDP数据包的最大数据容量。使用这一功能,就可以通过一个UDP数据包来交换超过512Byte的数据。应用最广泛的DNS服务器软件“BIND”的最新版本Version 9即可支持EDNS0。
摘自 中宽网
|