📄 draft-ietf-dnsop-respsize-01.txt
字号:
3.2. For longer query names, the number of address records supplied will be lower. Furthermore, it is only by using a common parent name (which is GTLD-SERVERS.NET in this example) that all 13 addresses are able to fit. The following output from a response simulator demonstrates these properties: % perl respsize.pl 13 13 0 common name, average case: msg:303 nsaddr#13 (green) common name, worst case: msg:495 nsaddr# 1 (red) uncommon name, average case: msg:457 nsaddr# 3 (orange) uncommon name, worst case: msg:649(*) nsaddr# 0 (red) % perl respsize.pl 13 13 2 common name, average case: msg:303 nsaddr#11 (orange) common name, worst case: msg:495 nsaddr# 1 (red) uncommon name, average case: msg:457 nsaddr# 2 (orange) uncommon name, worst case: msg:649(*) nsaddr# 0 (red) (Note: The response simulator program is shown in Section 5.) Here we use the term "green" if all address records could fit, or "orange" if two or more could fit, or "red" if fewer than two could fit. It's clear that without a common parent for nameserver names, much space would be lost. We're assuming an average query name size of 64 since that is the typical average maximum size seen in trace data at the time of this writing. If Internationalized Domain Name (IDN) or any other technology which results in larger query names be deployed significantly in advance of EDNS, then more new measurements and new estimates will have to be made. 4 - Conclusions 4.1. The current practice of giving all nameserver names a common parent (such as GTLD-SERVERS.NET or ROOT-SERVERS.NET) saves space in DNS responses and allows for more nameservers to be enumerated than would otherwise be possible. (Note that in this case it is wise to serve the common parent domain's zone from the same servers that are named within it, in order to limit external dependencies when all your eggs are in a single basket.) 4.2. Thirteen (13) seems to be the effective maximum number of nameserver names usable traditional (non-extended) DNS, assuming a common parent domain name, and assuming that additional-data truncation is undesirable in the average case. Expires December 2004 [Page 5] INTERNET-DRAFT June 2003 RESPSIZE 4.3. Adding two to five IPv6 nameserver address records (AAAA RRs) to a prototypical delegation that currently contains thirteen (13) IPv4 nameserver addresses (A RRs) for thirteen (13) nameserver names under a common parent, would not have a significant negative operational impact on the domain name system. 5 - Source Code #!/usr/bin/perl -w $asize = 2+2+2+4+2+4; $aaaasize = 2+2+2+4+2+16; ($nns, $na, $naaaa) = @ARGV; test("common", "average", common_name_average($nns), $na, $naaaa); test("common", "worst", common_name_worst($nns), $na, $naaaa); test("uncommon", "average", uncommon_name_average($nns), $na, $naaaa); test("uncommon", "worst", uncommon_name_worst($nns), $na, $naaaa); exit 0; sub test { my ($namekind, $casekind, $msg, $na, $naaaa) = @_; my $nglue = numglue($msg, $na, $naaaa); printf "%8s name, %7s case: msg:%3d%s nsaddr#%2d (%s)\n", $namekind, $casekind, $msg, ($msg > 512) ? "(*)" : " ", $nglue, ($nglue == $na + $naaaa) ? "green" : ($nglue >= 2) ? "orange" : "red"; } sub pnum { my ($num, $tot) = @_; return sprintf "%3d%s", } sub numglue { my ($msg, $na, $naaaa) = @_; my $space = ($msg > 512) ? 0 : (512 - $msg); my $num = 0; while ($space && ($na || $naaaa )) { if ($na) { if ($space >= $asize) { $space -= $asize; Expires December 2004 [Page 6] INTERNET-DRAFT June 2003 RESPSIZE $num++; } $na--; } if ($naaaa) { if ($space >= $aaaasize) { $space -= $aaaasize; $num++; } $naaaa--; } } return $num; } sub msgsize { my ($qname, $nns, $nsns) = @_; return 12 + # header $qname+2+2 + # query 0 + # answer $nns * (4+2+2+4+2+$nsns); # authority } sub average_case { my ($nns, $nsns) = @_; return msgsize(64, $nns, $nsns); } sub worst_case { my ($nns, $nsns) = @_; return msgsize(256, $nns, $nsns); } sub common_name_average { my ($nns) = @_; return 15 + average_case($nns, 2); } sub common_name_worst { my ($nns) = @_; return 15 + worst_case($nns, 2); } sub uncommon_name_average { my ($nns) = @_; return average_case($nns, 15); } sub uncommon_name_worst { my ($nns) = @_; return worst_case($nns, 15); } Expires December 2004 [Page 7] INTERNET-DRAFT June 2003 RESPSIZE Security Considerations The recommendations contained in this document have no known security implications. IANA Considerations This document does not call for changes or additions to any IANA registry. IPR Statement Copyright (C) The Internet Society (2003-2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Authors' Addresses Paul Vixie 950 Charter Street Redwood City, CA 94063 +1 650 423 1301 vixie@isc.org Akira Kato University of Tokyo, Information Technology Center 2-11-16 Yayoi Bunkyo Tokyo 113-8658, JAPAN +81 3 5841 2750 kato@wide.ad.jp Expires December 2004 [Page 8]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -