DNSにおけるUDPの制限って何ですか?

松浦 孝康(JPRS)
2003/12/3

 DNSの名前解決では、問い合わせおよび応答メッセージは、DNSが利用するUDPの制限で、512bytesまでと決まっています。 512bytesという制限は、IPパケットがフラグメンテーションを起こさないことが保証される最大サイズから設定されています。

 この制限がないと、サイズの大きなUDPパケットはIPパケットがフラグメンテーションを起こし、パケットがロスした場合の処理やパケットの到着順番が変わるなどの複雑な処理が必要となります。DNSではこのような複雑な処理を実装することはせず、必要に応じてUDPの代わりにTCPを利用することにしています。

 メッセージの大きさが制限されていることにより、やりとりする情報の量も制限を受けます。ルートサーバの数が全世界で13台というのも、実はこの制限によりやりとりできるNSレコードの数の上限が決まってしまうことによります。

 この辺りの技術的詳細については、JPRSのDNS関連技術情報ページにおいて解説されていますので興味のある方は参照してください (*1)。 またDNSサーバがIPv6のレコードであるAAAAを持つ場合においては、IPv6のアドレス長が128bitsとIPv4に比べて4倍になっているので、このサイズ制限をさらに圧迫します。

 現在、DNSSECやIPv6の名前解決などの、より多くの情報量が必要となるものに対しては、DNSの拡張プロトコルであるedns0を使用することで、より大きなサイズのUDPパケットを扱うことが可能となります。世の中で使用されているDNSサーバソフトウェアがすべてedns0に対応しているわけではありませんが(*2)、これが広まればこのUDPのサイズ制限問題が緩和されることになります。

*1) JP DNSサーバの最大数についてはこちらの情報を参照してください。
http://jprs.jp/tech/jp-dns-info/2003-07-10-max-number-of-dns-server.html

*2) BIND9においては実装されています。

関連記事 DNSがUDPを使うのはなぜですか?

DNS Tips Index

「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間