7 Network Working Group G. Sisson
8 Request for Comments: 4471 B. Laurie
9 Category: Experimental Nominet
13 Derivation of DNS Name Predecessor and Successor
18 This memo defines an Experimental Protocol for the Internet
19 community. It does not specify an Internet standard of any kind.
20 Discussion and suggestions for improvement are requested.
21 Distribution of this memo is unlimited.
25 Copyright (C) The Internet Society (2006).
29 This document describes two methods for deriving the canonically-
30 ordered predecessor and successor of a DNS name. These methods may
31 be used for dynamic NSEC resource record synthesis, enabling
32 security-aware name servers to provide authenticated denial of
33 existence without disclosing other owner names in a DNSSEC secured
38 1. Introduction ....................................................2
39 2. Notational Conventions ..........................................3
40 3. Derivations .....................................................3
41 3.1. Absolute Method ............................................3
42 3.1.1. Derivation of DNS Name Predecessor ..................3
43 3.1.2. Derivation of DNS Name Successor ....................4
44 3.2. Modified Method ............................................4
45 3.2.1. Derivation of DNS Name Predecessor ..................5
46 3.2.2. Derivation of DNS Name Successor ....................6
47 4. Notes ...........................................................6
48 4.1. Test for Existence .........................................6
49 4.2. Case Considerations ........................................7
50 4.3. Choice of Range ............................................7
51 4.4. Wild Card Considerations ...................................8
52 4.5. Possible Modifications .....................................8
53 4.5.1. Restriction of Effective Maximum DNS Name Length ....8
54 4.5.2. Use of Modified Method with Zones Containing
58 Sisson & Laurie Experimental [Page 1]
60 RFC 4471 DNS Name Predecessor and Successor September 2006
63 SRV RRs .............................................8
64 5. Examples ........................................................9
65 5.1. Examples of Immediate Predecessors Using Absolute Method ..10
66 5.2. Examples of Immediate Successors Using Absolute Method ....14
67 5.3. Examples of Predecessors Using Modified Method ............19
68 5.4. Examples of Successors Using Modified Method ..............20
69 6. Security Considerations ........................................21
70 7. Acknowledgements ...............................................21
71 8. References .....................................................21
72 8.1. Normative References ......................................21
73 8.2. Informative References ....................................22
77 One of the proposals for avoiding the exposure of zone information
78 during the deployment DNSSEC is dynamic NSEC resource record (RR)
79 synthesis. This technique is described in [DNSSEC-TRANS] and
80 [RFC4470], and involves the generation of NSEC RRs that just span the
81 query name for non-existent owner names. In order to do this, the
82 DNS names that would occur just prior to and just following a given
83 query name must be calculated in real time, as maintaining a list of
84 all possible owner names that might occur in a zone would be
87 Section 6.1 of [RFC4034] defines canonical DNS name order. This
88 document does not amend or modify this definition. However, the
89 derivation of immediate predecessor and successor, although trivial,
90 is non-obvious. Accordingly, several methods are described here as
91 an aid to implementors and a reference to other interested parties.
93 This document describes two methods:
95 1. An "absolute method", which returns the immediate predecessor or
96 successor of a domain name such that no valid DNS name could
97 exist between that DNS name and the predecessor or successor.
99 2. A "modified method", which returns a predecessor and successor
100 that are more economical in size and computation. This method is
101 restricted to use with zones consisting exclusively of owner
102 names that contain no more than one label more than the owner
103 name of the apex, where the longest possible owner name (i.e.,
104 one with a maximum length left-most label) would not exceed the
105 maximum DNS name length. This is, however, the type of zone for
106 which the technique of online signing is most likely to be used.
114 Sisson & Laurie Experimental [Page 2]
116 RFC 4471 DNS Name Predecessor and Successor September 2006
119 2. Notational Conventions
121 The following notational conventions are used in this document for
122 economy of expression:
124 N: An unspecified DNS name.
126 P(N): Immediate predecessor to N (absolute method).
128 S(N): Immediate successor to N (absolute method).
130 P'(N): Predecessor to N (modified method).
132 S'(N): Successor to N (modified method).
136 These derivations assume that all uppercase US-ASCII letters in N
137 have already been replaced by their corresponding lowercase
138 equivalents. Unless otherwise specified, processing stops after the
139 first step in which a condition is met.
141 The derivations make reference to maximum label length and maximum
142 DNS name length; these are defined in Section 3.1 of [RFC1034] to be
143 63 and 255 octets, respectively.
147 3.1.1. Derivation of DNS Name Predecessor
151 1. If N is the same as the owner name of the zone apex, prepend N
152 repeatedly with labels of the maximum length possible consisting
153 of octets of the maximum sort value (e.g., 0xff) until N is the
154 maximum length possible; otherwise proceed to the next step.
156 2. If the least significant (left-most) label of N consists of a
157 single octet of the minimum sort value (e.g., 0x00), remove that
158 label; otherwise proceed to the next step.
160 3. If the least significant (right-most) octet in the least
161 significant (left-most) label of N is the minimum sort value,
162 remove the least significant octet and proceed to step 5.
164 4. Decrement the value of the least significant (right-most) octet
165 of the least significant (left-most) label, skipping any values
166 that correspond to uppercase US-ASCII letters, and then append
170 Sisson & Laurie Experimental [Page 3]
172 RFC 4471 DNS Name Predecessor and Successor September 2006
175 the least significant (left-most) label with as many octets as
176 possible of the maximum sort value. Proceed to the next step.
178 5. Prepend N repeatedly with labels of as long a length as possible
179 consisting of octets of the maximum sort value until N is the
180 maximum length possible.
182 3.1.2. Derivation of DNS Name Successor
186 1. If N is two or more octets shorter than the maximum DNS name
187 length, prepend N with a label containing a single octet of the
188 minimum sort value (e.g., 0x00); otherwise proceed to the next
191 2. If N is one octet shorter than the maximum DNS name length and
192 the least significant (left-most) label is one or more octets
193 shorter than the maximum label length, append an octet of the
194 minimum sort value to the least significant label; otherwise
195 proceed to the next step.
197 3. Increment the value of the least significant (right-most) octet
198 in the least significant (left-most) label that is less than the
199 maximum sort value (e.g., 0xff), skipping any values that
200 correspond to uppercase US-ASCII letters, and then remove any
201 octets to the right of that one. If all octets in the label are
202 the maximum sort value, then proceed to the next step.
204 4. Remove the least significant (left-most) label. Unless N is now
205 the same as the owner name of the zone apex (this will occur only
206 if N was the maximum possible name in canonical DNS name order,
207 and thus has wrapped to the owner name of zone apex), repeat
212 This method is for use with zones consisting only of single-label
213 owner names where an owner name consisting of label of maximum length
214 would not result in a DNS name that exceeded the maximum DNS name
215 length. This method is computationally simpler and returns values
216 that are more economical in size than the absolute method. It
217 differs from the absolute method detailed above in the following
220 1. Step 1 of the derivation P(N) has been omitted as the existence
221 of the owner name of the zone apex never requires denial.
226 Sisson & Laurie Experimental [Page 4]
228 RFC 4471 DNS Name Predecessor and Successor September 2006
231 2. A new step 1 has been introduced that removes unnecessary labels.
233 3. Step 4 of the derivation P(N) has been omitted as it is only
234 necessary for zones containing owner names consisting of more
235 than one label. This omission generally results in a significant
236 reduction of the length of derived predecessors.
238 4. Step 1 of the derivation S(N) had been omitted as it is only
239 necessary for zones containing owner names consisting of more
240 than one label. This omission results in a tiny reduction of the
241 length of derived successors, and maintains consistency with the
242 modification of step 4 of the derivation P(N) described above.
244 5. Steps 2 and 4 of the derivation S(N) have been modified to
245 eliminate checks for maximum DNS name length, as it is an
246 assumption of this method that no DNS name in the zone can exceed
247 the maximum DNS name length.
249 3.2.1. Derivation of DNS Name Predecessor
253 1. If N is two or more labels longer than the owner name of the
254 apex, repeatedly remove the least significant (left-most) label
255 until N is only one label longer than the owner name of the apex;
256 otherwise proceed to the next step.
258 2. If the least significant (left-most) label of N consists of a
259 single octet of the minimum sort value (e.g., 0x00), remove that
260 label; otherwise proceed to the next step. (If this condition is
261 met, P'(N) is the owner name of the apex.)
263 3. If the least significant (right-most) octet in the least
264 significant (left-most) label of N is the minimum sort value,
265 remove the least significant octet.
267 4. Decrement the value of the least significant (right-most) octet,
268 skipping any values that correspond to uppercase US-ASCII
269 letters, and then append the label with as many octets as
270 possible of the maximum sort value.
282 Sisson & Laurie Experimental [Page 5]
284 RFC 4471 DNS Name Predecessor and Successor September 2006
287 3.2.2. Derivation of DNS Name Successor
291 1. If N is two or more labels longer than the owner name of the
292 apex, repeatedly remove the least significant (left-most) label
293 until N is only one label longer than the owner name of the apex.
294 Proceed to the next step.
296 2. If the least significant (left-most) label of N is one or more
297 octets shorter than the maximum label length, append an octet of
298 the minimum sort value to the least significant label; otherwise
299 proceed to the next step.
301 3. Increment the value of the least significant (right-most) octet
302 in the least significant (left-most) label that is less than the
303 maximum sort value (e.g., 0xff), skipping any values that
304 correspond to uppercase US-ASCII letters, and then remove any
305 octets to the right of that one. If all octets in the label are
306 the maximum sort value, then proceed to the next step.
308 4. Remove the least significant (left-most) label. (This will occur
309 only if the least significant label is the maximum label length
310 and consists entirely of octets of the maximum sort value, and
311 thus has wrapped to the owner name of the zone apex.)
315 4.1. Test for Existence
317 Before using the result of P(N) or P'(N) as the owner name of an NSEC
318 RR in a DNS response, a name server should test to see whether the
319 name exists. If it does, either a standard non-synthesised NSEC RR
320 should be used, or the synthesised NSEC RR should reflect the RRset
321 types that exist at the NSEC RR's owner name in the Type Bit Map
322 field as specified by Section 4.1.2 of [RFC4034]. Implementors will
323 likely find it simpler to use a non-synthesised NSEC RR. For further
324 details, see Section 2 of [RFC4470].
338 Sisson & Laurie Experimental [Page 6]
340 RFC 4471 DNS Name Predecessor and Successor September 2006
343 4.2. Case Considerations
345 Section 3.5 of [RFC1034] specifies that "while upper and lower case
346 letters are allowed in names, no significance is attached to the
347 case". Additionally, Section 6.1 of [RFC4034] states that when
348 determining canonical DNS name order, "uppercase US-ASCII letters are
349 treated as if they were lowercase US-ASCII letters". Consequently,
350 values corresponding to US-ASCII uppercase letters must be skipped
351 when decrementing and incrementing octets in the derivations
352 described in Section 3.
354 The following pseudo-code is illustrative:
356 Decrement the value of an octet:
358 if (octet == '[') // '[' is just after uppercase 'Z'
359 octet = '@'; // '@' is just prior to uppercase 'A'
363 Increment the value of an octet:
365 if (octet == '@') // '@' is just prior to uppercase 'A'
366 octet = '['; // '[' is just after uppercase 'Z'
372 [RFC2181] makes the clarification that "any binary string whatever
373 can be used as the label of any resource record". Consequently, the
374 minimum sort value may be set as 0x00 and the maximum sort value as
375 0xff, and the range of possible values will be any DNS name that
376 contains octets of any value other than those corresponding to
377 uppercase US-ASCII letters.
379 However, if all owner names in a zone are in the letter-digit-hyphen,
380 or LDH, format specified in [RFC1034], it may be desirable to
381 restrict the range of possible values to DNS names containing only
382 LDH values. This has the effect of
384 1. making the output of tools such as `dig' and `nslookup' less
385 subject to confusion,
387 2. minimising the impact that NSEC RRs containing DNS names with
388 non-LDH values (or non-printable values) might have on faulty DNS
389 resolver implementations, and
394 Sisson & Laurie Experimental [Page 7]
396 RFC 4471 DNS Name Predecessor and Successor September 2006
399 3. preventing the possibility of results that are wildcard DNS names
402 This may be accomplished by using a minimum sort value of 0x1f (US-
403 ASCII character `-') and a maximum sort value of 0x7a (US-ASCII
404 character lowercase `z'), and then skipping non-LDH, non-lowercase
405 values when incrementing or decrementing octets.
407 4.4. Wild Card Considerations
409 Neither derivation avoids the possibility that the result may be a
410 DNS name containing a wildcard label, i.e., a label containing a
411 single octet with the value 0x2a (US-ASCII character `*'). With
412 additional tests, wildcard DNS names may be explicitly avoided;
413 alternatively, if the range of octet values can be restricted to
414 those corresponding to letter-digit-hyphen, or LDH, characters (see
415 Section 4.3), such DNS names will not occur.
417 Note that it is improbable that a result that is a wildcard DNS name
418 will occur unintentionally; even if one does occur either as the
419 owner name of, or in the RDATA of an NSEC RR, it is treated as a
420 literal DNS name with no special meaning.
422 4.5. Possible Modifications
424 4.5.1. Restriction of Effective Maximum DNS Name Length
426 [RFC1034] specifies that "the total number of octets that represent a
427 name (i.e., the sum of all label octets and label lengths) is limited
428 to 255", including the null (zero-length) label that represents the
429 root. For the purpose of deriving predecessors and successors during
430 NSEC RR synthesis, the maximum DNS name length may be effectively
431 restricted to the length of the longest DNS name in the zone. This
432 will minimise the size of responses containing synthesised NSEC RRs
433 but, especially in the case of the modified method, may result in
434 some additional computational complexity.
436 Note that this modification will have the effect of revealing
437 information about the longest name in the zone. Moreover, when the
438 contents of the zone changes, e.g., during dynamic updates and zone
439 transfers, care must be taken to ensure that the effective maximum
440 DNS name length agrees with the new contents.
442 4.5.2. Use of Modified Method with Zones Containing SRV RRs
444 Normally, the modified method cannot be used in zones that contain
445 Service Record (SRV) RRs [RFC2782], as SRV RRs have owner names that
446 contain multiple labels. However, the use of SRV RRs can be
450 Sisson & Laurie Experimental [Page 8]
452 RFC 4471 DNS Name Predecessor and Successor September 2006
455 accommodated by various techniques. There are at least four possible
458 1. Use conventional NSEC RRs for the region of the zone that
459 contains first-level labels beginning with the underscore (`_')
460 character. For the purposes of generating these NSEC RRs, the
461 existence of (possibly fictional) ownernames `9{63}' and `a'
462 could be assumed, providing a lower and upper bound for this
463 region. Then all queries where the QNAME does not exist but
464 contains a first-level label beginning with an underscore could
465 be handled using the normal DNSSEC protocol.
467 This approach would make it possible to enumerate all DNS names
468 in the zone containing a first-level label beginning with
469 underscore, including all SRV RRs, but this may be of less a
470 concern to the zone administrator than incurring the overhead of
471 the absolute method or of the following variants of the modified
474 2. The absolute method could be used for synthesising NSEC RRs for
475 all queries where the QNAME contains a leading underscore.
476 However, this re-introduces the susceptibility of the absolute
477 method to denial of service activity, as an attacker could send
478 queries for an effectively inexhaustible supply of domain names
479 beginning with a leading underscore.
481 3. A variant of the modified method could be used for synthesising
482 NSEC RRs for all queries where the QNAME contains a leading
483 underscore. This variant would assume that all predecessors and
484 successors to queries where the QNAME contains a leading
485 underscore may consist of two labels rather than only one. This
486 introduces a little additional complexity without incurring the
487 full increase in response size and computational complexity as
490 4. Finally, a variant of the modified method that assumes that all
491 owner names in the zone consist of one or two labels could be
492 used. However, this negates much of the reduction in response
493 size of the modified method and may be nearly as computationally
494 complex as the absolute method.
498 In the following examples,
500 the owner name of the zone apex is "example.com.",
506 Sisson & Laurie Experimental [Page 9]
508 RFC 4471 DNS Name Predecessor and Successor September 2006
511 the range of octet values is 0x00 - 0xff excluding values
512 corresponding to uppercase US-ASCII letters, and
514 non-printable octet values are expressed as three-digit decimal
515 numbers preceded by a backslash (as specified in Section 5.1 of
518 5.1. Examples of Immediate Predecessors Using Absolute Method
520 Example of a typical case:
522 P(foo.example.com.) =
524 \255\255\255\255\255\255\255\255\255\255\255\255
525 \255\255\255\255\255\255\255\255\255\255\255\255
526 \255\255\255\255\255\255\255\255\255\255\255\255
527 \255\255\255\255\255\255\255\255\255\255\255\255
528 \255.\255\255\255\255\255\255\255\255\255\255
529 \255\255\255\255\255\255\255\255\255\255\255\255
530 \255\255\255\255\255\255\255\255\255\255\255\255
531 \255\255\255\255\255\255\255\255\255\255\255\255
532 \255\255\255\255\255\255\255\255\255\255\255\255
533 \255\255\255\255\255.\255\255\255\255\255\255
534 \255\255\255\255\255\255\255\255\255\255\255\255
535 \255\255\255\255\255\255\255\255\255\255\255\255
536 \255\255\255\255\255\255\255\255\255\255\255\255
537 \255\255\255\255\255\255\255\255\255\255\255\255
538 \255\255\255\255\255\255\255\255\255.fon\255\255
539 \255\255\255\255\255\255\255\255\255\255\255\255
540 \255\255\255\255\255\255\255\255\255\255\255\255
541 \255\255\255\255\255\255\255\255\255\255\255\255
542 \255\255\255\255\255\255\255\255\255\255\255\255
543 \255\255\255\255\255\255\255\255\255\255.example.com.
545 or, in alternate notation:
547 \255{49}.\255{63}.\255{63}.fon\255{60}.example.com.
549 where {n} represents the number of repetitions of an octet.
551 Example where least significant (left-most) label of DNS name
552 consists of a single octet of the minimum sort value:
554 P(\000.foo.example.com.) = foo.example.com.
562 Sisson & Laurie Experimental [Page 10]
564 RFC 4471 DNS Name Predecessor and Successor September 2006
567 Example where least significant (right-most) octet of least
568 significant (left-most) label has the minimum sort value:
570 P(foo\000.example.com.) =
572 \255\255\255\255\255\255\255\255\255\255\255\255
573 \255\255\255\255\255\255\255\255\255\255\255\255
574 \255\255\255\255\255\255\255\255\255\255\255\255
575 \255\255\255\255\255\255\255\255\255.\255\255
576 \255\255\255\255\255\255\255\255\255\255\255\255
577 \255\255\255\255\255\255\255\255\255\255\255\255
578 \255\255\255\255\255\255\255\255\255\255\255\255
579 \255\255\255\255\255\255\255\255\255\255\255\255
580 \255\255\255\255\255\255\255\255\255\255\255\255
581 \255.\255\255\255\255\255\255\255\255\255\255
582 \255\255\255\255\255\255\255\255\255\255\255\255
583 \255\255\255\255\255\255\255\255\255\255\255\255
584 \255\255\255\255\255\255\255\255\255\255\255\255
585 \255\255\255\255\255\255\255\255\255\255\255\255
586 \255\255\255\255\255.\255\255\255\255\255\255
587 \255\255\255\255\255\255\255\255\255\255\255\255
588 \255\255\255\255\255\255\255\255\255\255\255\255
589 \255\255\255\255\255\255\255\255\255\255\255\255
590 \255\255\255\255\255\255\255\255\255\255\255\255
591 \255\255\255\255\255\255\255\255\255.foo.example.com.
593 or, in alternate notation:
595 \255{45}.\255{63}.\255{63}.\255{63}.foo.example.com.
618 Sisson & Laurie Experimental [Page 11]
620 RFC 4471 DNS Name Predecessor and Successor September 2006
623 Example where DNS name contains an octet that must be decremented by
624 skipping values corresponding to US-ASCII uppercase letters:
626 P(fo\[.example.com.) =
628 \255\255\255\255\255\255\255\255\255\255\255\255
629 \255\255\255\255\255\255\255\255\255\255\255\255
630 \255\255\255\255\255\255\255\255\255\255\255\255
631 \255\255\255\255\255\255\255\255\255\255\255\255
632 \255.\255\255\255\255\255\255\255\255\255\255
633 \255\255\255\255\255\255\255\255\255\255\255\255
634 \255\255\255\255\255\255\255\255\255\255\255\255
635 \255\255\255\255\255\255\255\255\255\255\255\255
636 \255\255\255\255\255\255\255\255\255\255\255\255
637 \255\255\255\255\255.\255\255\255\255\255\255
638 \255\255\255\255\255\255\255\255\255\255\255\255
639 \255\255\255\255\255\255\255\255\255\255\255\255
640 \255\255\255\255\255\255\255\255\255\255\255\255
641 \255\255\255\255\255\255\255\255\255\255\255\255
642 \255\255\255\255\255\255\255\255\255.fo\@\255
643 \255\255\255\255\255\255\255\255\255\255\255\255
644 \255\255\255\255\255\255\255\255\255\255\255\255
645 \255\255\255\255\255\255\255\255\255\255\255\255
646 \255\255\255\255\255\255\255\255\255\255\255\255
647 \255\255\255\255\255\255\255\255\255\255\255.example.com.
649 or, in alternate notation:
651 \255{49}.\255{63}.\255{63}.fo\@\255{60}.example.com.
653 where {n} represents the number of repetitions of an octet.
674 Sisson & Laurie Experimental [Page 12]
676 RFC 4471 DNS Name Predecessor and Successor September 2006
679 Example where DNS name is the owner name of the zone apex, and
680 consequently wraps to the DNS name with the maximum possible sort
685 \255\255\255\255\255\255\255\255\255\255\255\255
686 \255\255\255\255\255\255\255\255\255\255\255\255
687 \255\255\255\255\255\255\255\255\255\255\255\255
688 \255\255\255\255\255\255\255\255\255\255\255\255
689 \255.\255\255\255\255\255\255\255\255\255\255
690 \255\255\255\255\255\255\255\255\255\255\255\255
691 \255\255\255\255\255\255\255\255\255\255\255\255
692 \255\255\255\255\255\255\255\255\255\255\255\255
693 \255\255\255\255\255\255\255\255\255\255\255\255
694 \255\255\255\255\255.\255\255\255\255\255\255
695 \255\255\255\255\255\255\255\255\255\255\255\255
696 \255\255\255\255\255\255\255\255\255\255\255\255
697 \255\255\255\255\255\255\255\255\255\255\255\255
698 \255\255\255\255\255\255\255\255\255\255\255\255
699 \255\255\255\255\255\255\255\255\255.\255\255
700 \255\255\255\255\255\255\255\255\255\255\255\255
701 \255\255\255\255\255\255\255\255\255\255\255\255
702 \255\255\255\255\255\255\255\255\255\255\255\255
703 \255\255\255\255\255\255\255\255\255\255\255\255
704 \255\255\255\255\255\255\255\255\255\255\255\255
707 or, in alternate notation:
709 \255{49}.\255{63}.\255{63}.\255{63}.example.com.
730 Sisson & Laurie Experimental [Page 13]
732 RFC 4471 DNS Name Predecessor and Successor September 2006
735 5.2. Examples of Immediate Successors Using Absolute Method
737 Example of typical case:
739 S(foo.example.com.) = \000.foo.example.com.
741 Example where DNS name is one octet short of the maximum DNS name
744 N = fooooooooooooooooooooooooooooooooooooooooooooooo
745 .ooooooooooooooooooooooooooooooooooooooooooooooo
746 oooooooooooooooo.ooooooooooooooooooooooooooooooo
747 oooooooooooooooooooooooooooooooo.ooooooooooooooo
748 oooooooooooooooooooooooooooooooooooooooooooooooo.example.com.
750 or, in alternate notation:
752 fo{47}.o{63}.o{63}.o{63}.example.com.
756 fooooooooooooooooooooooooooooooooooooooooooooooo
757 \000.ooooooooooooooooooooooooooooooooooooooooooo
758 oooooooooooooooooooo.ooooooooooooooooooooooooooo
759 oooooooooooooooooooooooooooooooooooo.ooooooooooo
760 oooooooooooooooooooooooooooooooooooooooooooooooo
763 or, in alternate notation:
765 fo{47}\000.o{63}.o{63}.o{63}.example.com.
786 Sisson & Laurie Experimental [Page 14]
788 RFC 4471 DNS Name Predecessor and Successor September 2006
791 Example where DNS name is the maximum DNS name length:
793 N = fooooooooooooooooooooooooooooooooooooooooooooooo
794 o.oooooooooooooooooooooooooooooooooooooooooooooo
795 ooooooooooooooooo.oooooooooooooooooooooooooooooo
796 ooooooooooooooooooooooooooooooooo.oooooooooooooo
797 oooooooooooooooooooooooooooooooooooooooooooooooo
800 or, in alternate notation:
802 fo{48}.o{63}.o{63}.o{63}.example.com.
806 fooooooooooooooooooooooooooooooooooooooooooooooo
807 p.oooooooooooooooooooooooooooooooooooooooooooooo
808 ooooooooooooooooo.oooooooooooooooooooooooooooooo
809 ooooooooooooooooooooooooooooooooo.oooooooooooooo
810 oooooooooooooooooooooooooooooooooooooooooooooooo
813 or, in alternate notation:
815 fo{47}p.o{63}.o{63}.o{63}.example.com.
842 Sisson & Laurie Experimental [Page 15]
844 RFC 4471 DNS Name Predecessor and Successor September 2006
847 Example where DNS name is the maximum DNS name length and the least
848 significant (left-most) label has the maximum sort value:
850 N = \255\255\255\255\255\255\255\255\255\255\255\255
851 \255\255\255\255\255\255\255\255\255\255\255\255
852 \255\255\255\255\255\255\255\255\255\255\255\255
853 \255\255\255\255\255\255\255\255\255\255\255\255
854 \255.ooooooooooooooooooooooooooooooooooooooooooo
855 oooooooooooooooooooo.ooooooooooooooooooooooooooo
856 oooooooooooooooooooooooooooooooooooo.ooooooooooo
857 oooooooooooooooooooooooooooooooooooooooooooooooo
860 or, in alternate notation:
862 \255{49}.o{63}.o{63}.o{63}.example.com.
866 oooooooooooooooooooooooooooooooooooooooooooooooo
867 oooooooooooooop.oooooooooooooooooooooooooooooooo
868 ooooooooooooooooooooooooooooooo.oooooooooooooooo
869 ooooooooooooooooooooooooooooooooooooooooooooooo.
872 or, in alternate notation:
874 o{62}p.o{63}.o{63}.example.com.
898 Sisson & Laurie Experimental [Page 16]
900 RFC 4471 DNS Name Predecessor and Successor September 2006
903 Example where DNS name is the maximum DNS name length and the eight
904 least significant (right-most) octets of the least significant
905 (left-most) label have the maximum sort value:
907 N = foooooooooooooooooooooooooooooooooooooooo\255
908 \255\255\255\255\255\255\255.ooooooooooooooooooo
909 oooooooooooooooooooooooooooooooooooooooooooo.ooo
910 oooooooooooooooooooooooooooooooooooooooooooooooo
911 oooooooooooo.ooooooooooooooooooooooooooooooooooo
912 oooooooooooooooooooooooooooo.example.com.
914 or, in alternate notation:
916 fo{40}\255{8}.o{63}.o{63}.o{63}.example.com.
920 fooooooooooooooooooooooooooooooooooooooop.oooooo
921 oooooooooooooooooooooooooooooooooooooooooooooooo
922 ooooooooo.oooooooooooooooooooooooooooooooooooooo
923 ooooooooooooooooooooooooo.oooooooooooooooooooooo
924 ooooooooooooooooooooooooooooooooooooooooo.example.com.
926 or, in alternate notation:
928 fo{39}p.o{63}.o{63}.o{63}.example.com.
954 Sisson & Laurie Experimental [Page 17]
956 RFC 4471 DNS Name Predecessor and Successor September 2006
959 Example where DNS name is the maximum DNS name length and contains an
960 octet that must be incremented by skipping values corresponding to
961 US-ASCII uppercase letters:
963 N = fooooooooooooooooooooooooooooooooooooooooooooooo
964 \@.ooooooooooooooooooooooooooooooooooooooooooooo
965 oooooooooooooooooo.ooooooooooooooooooooooooooooo
966 oooooooooooooooooooooooooooooooooo.ooooooooooooo
967 oooooooooooooooooooooooooooooooooooooooooooooooo
970 or, in alternate notation:
972 fo{47}\@.o{63}.o{63}.o{63}.example.com.
976 fooooooooooooooooooooooooooooooooooooooooooooooo
977 \[.ooooooooooooooooooooooooooooooooooooooooooooo
978 oooooooooooooooooo.ooooooooooooooooooooooooooooo
979 oooooooooooooooooooooooooooooooooo.ooooooooooooo
980 oooooooooooooooooooooooooooooooooooooooooooooooo
983 or, in alternate notation:
985 fo{47}\[.o{63}.o{63}.o{63}.example.com.
1010 Sisson & Laurie Experimental [Page 18]
1012 RFC 4471 DNS Name Predecessor and Successor September 2006
1015 Example where DNS name has the maximum possible sort order in the
1016 zone, and consequently wraps to the owner name of the zone apex:
1018 N = \255\255\255\255\255\255\255\255\255\255\255\255
1019 \255\255\255\255\255\255\255\255\255\255\255\255
1020 \255\255\255\255\255\255\255\255\255\255\255\255
1021 \255\255\255\255\255\255\255\255\255\255\255\255
1022 \255.\255\255\255\255\255\255\255\255\255\255
1023 \255\255\255\255\255\255\255\255\255\255\255\255
1024 \255\255\255\255\255\255\255\255\255\255\255\255
1025 \255\255\255\255\255\255\255\255\255\255\255\255
1026 \255\255\255\255\255\255\255\255\255\255\255\255
1027 \255\255\255\255\255.\255\255\255\255\255\255
1028 \255\255\255\255\255\255\255\255\255\255\255\255
1029 \255\255\255\255\255\255\255\255\255\255\255\255
1030 \255\255\255\255\255\255\255\255\255\255\255\255
1031 \255\255\255\255\255\255\255\255\255\255\255\255
1032 \255\255\255\255\255\255\255\255\255.\255\255
1033 \255\255\255\255\255\255\255\255\255\255\255\255
1034 \255\255\255\255\255\255\255\255\255\255\255\255
1035 \255\255\255\255\255\255\255\255\255\255\255\255
1036 \255\255\255\255\255\255\255\255\255\255\255\255
1037 \255\255\255\255\255\255\255\255\255\255\255\255
1040 or, in alternate notation:
1042 \255{49}.\255{63}.\255{63}.\255{63}.example.com.
1046 5.3. Examples of Predecessors Using Modified Method
1048 Example of a typical case:
1050 P'(foo.example.com.) =
1052 fon\255\255\255\255\255\255\255\255\255\255\255
1053 \255\255\255\255\255\255\255\255\255\255\255\255
1054 \255\255\255\255\255\255\255\255\255\255\255\255
1055 \255\255\255\255\255\255\255\255\255\255\255\255
1056 \255\255\255\255\255\255\255\255\255\255\255\255
1059 or, in alternate notation:
1061 fon\255{60}.example.com.
1066 Sisson & Laurie Experimental [Page 19]
1068 RFC 4471 DNS Name Predecessor and Successor September 2006
1071 Example where DNS name contains more labels than DNS names in the
1074 P'(bar.foo.example.com.) = foo.example.com.
1076 Example where least significant (right-most) octet of least
1077 significant (left-most) label has the minimum sort value:
1079 P'(foo\000.example.com.) = foo.example.com.
1081 Example where least significant (left-most) label has the minimum
1084 P'(\000.example.com.) = example.com.
1086 Example where DNS name is the owner name of the zone apex, and
1087 consequently wraps to the DNS name with the maximum possible sort
1092 \255\255\255\255\255\255\255\255\255\255\255\255
1093 \255\255\255\255\255\255\255\255\255\255\255\255
1094 \255\255\255\255\255\255\255\255\255\255\255\255
1095 \255\255\255\255\255\255\255\255\255\255\255\255
1096 \255\255\255\255\255\255\255\255\255\255\255\255
1097 \255\255\255.example.com.
1099 or, in alternate notation:
1101 \255{63}.example.com.
1103 5.4. Examples of Successors Using Modified Method
1105 Example of a typical case:
1107 S'(foo.example.com.) = foo\000.example.com.
1109 Example where DNS name contains more labels than DNS names in the
1112 S'(bar.foo.example.com.) = foo\000.example.com.
1115 Example where least significant (left-most) label has the maximum
1116 sort value, and consequently wraps to the owner name of the zone
1122 Sisson & Laurie Experimental [Page 20]
1124 RFC 4471 DNS Name Predecessor and Successor September 2006
1127 N = \255\255\255\255\255\255\255\255\255\255\255\255
1128 \255\255\255\255\255\255\255\255\255\255\255\255
1129 \255\255\255\255\255\255\255\255\255\255\255\255
1130 \255\255\255\255\255\255\255\255\255\255\255\255
1131 \255\255\255\255\255\255\255\255\255\255\255\255
1132 \255\255\255.example.com.
1134 or, in alternate notation:
1136 \255{63}.example.com.
1138 S'(N) = example.com.
1140 6. Security Considerations
1142 The derivation of some predecessors/successors requires the testing
1143 of more conditions than others. Consequently, the effectiveness of a
1144 denial-of-service attack may be enhanced by sending queries that
1145 require more conditions to be tested. The modified method involves
1146 the testing of fewer conditions than the absolute method and
1147 consequently is somewhat less susceptible to this exposure.
1151 The authors would like to thank Sam Weiler, Olaf Kolkman, Olafur
1152 Gudmundsson, and Niall O'Reilly for their review and input.
1156 8.1. Normative References
1158 [RFC1034] Mockapetris, P., "Domain names - concepts and
1159 facilities", STD 13, RFC 1034, November 1987.
1161 [RFC1035] Mockapetris, P., "Domain names - implementation and
1162 specification", STD 13, RFC 1035, November 1987.
1164 [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS
1165 Specification", RFC 2181, July 1997.
1167 [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR
1168 for specifying the location of services (DNS SRV)",
1169 RFC 2782, February 2000.
1171 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and
1172 S. Rose, "Resource Records for the DNS Security
1173 Extensions", RFC 4034, March 2005.
1178 Sisson & Laurie Experimental [Page 21]
1180 RFC 4471 DNS Name Predecessor and Successor September 2006
1183 8.2. Informative References
1185 [RFC4470] Weiler, S. and J. Ihren, "Minimally Covering NSEC
1186 Records and DNSSEC On-line Signing", RFC 4470, April
1189 [DNSSEC-TRANS] Arends, R., Koch, P., and J. Schlyter, "Evaluating
1190 DNSSEC Transition Mechanisms", Work in Progress,
1203 Phone: +44 1865 332211
1204 EMail: geoff@nominet.org.uk
1214 Phone: +44 20 8735 0686
1215 EMail: ben@algroup.co.uk
1234 Sisson & Laurie Experimental [Page 22]
1236 RFC 4471 DNS Name Predecessor and Successor September 2006
1239 Full Copyright Statement
1241 Copyright (C) The Internet Society (2006).
1243 This document is subject to the rights, licenses and restrictions
1244 contained in BCP 78, and except as set forth therein, the authors
1245 retain all their rights.
1247 This document and the information contained herein are provided on an
1248 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1249 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1250 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1251 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1252 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1253 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1255 Intellectual Property
1257 The IETF takes no position regarding the validity or scope of any
1258 Intellectual Property Rights or other rights that might be claimed to
1259 pertain to the implementation or use of the technology described in
1260 this document or the extent to which any license under such rights
1261 might or might not be available; nor does it represent that it has
1262 made any independent effort to identify any such rights. Information
1263 on the procedures with respect to rights in RFC documents can be
1264 found in BCP 78 and BCP 79.
1266 Copies of IPR disclosures made to the IETF Secretariat and any
1267 assurances of licenses to be made available, or the result of an
1268 attempt made to obtain a general license or permission for the use of
1269 such proprietary rights by implementers or users of this
1270 specification can be obtained from the IETF on-line IPR repository at
1271 http://www.ietf.org/ipr.
1273 The IETF invites any interested party to bring to its attention any
1274 copyrights, patents or patent applications, or other proprietary
1275 rights that may cover technology that may be required to implement
1276 this standard. Please address the information to the IETF at
1281 Funding for the RFC Editor function is provided by the IETF
1282 Administrative Support Activity (IASA).
1290 Sisson & Laurie Experimental [Page 23]