| < draft-ietf-dnsind-serial-01.txt | draft-ietf-dnsind-serial-02.txt > | |||
|---|---|---|---|---|
| Network Working Group Robert Elz | Network Working Group Robert Elz | |||
| Internet Draft University of Melbourne | Internet Draft University of Melbourne | |||
| Expiration Date: August 1996 | Expiration Date: September 1996 | |||
| Randy Bush | Randy Bush | |||
| RGnet, Inc. | RGnet, Inc. | |||
| February 1996 | March 1996 | |||
| Serial Number Arithmetic | Serial Number Arithmetic | |||
| draft-ietf-dnsind-serial-01.txt | draft-ietf-dnsind-serial-02.txt | |||
| 1. Status of this Memo | 1. Status of this Memo | |||
| This document is an Internet-Draft. Internet-Drafts are working | This document is an Internet-Draft. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its areas, | documents of the Internet Engineering Task Force (IETF), its areas, | |||
| and its working groups. Note that other groups may also distribute | and its working groups. Note that other groups may also distribute | |||
| working documents as Internet-Drafts. | working documents as Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
| RFC1034 uses the same terminology when defining secondary server zone | RFC1034 uses the same terminology when defining secondary server zone | |||
| consistency procedures. | consistency procedures. | |||
| Unfortunately the term "sequence space arithmetic" is not defined in | Unfortunately the term "sequence space arithmetic" is not defined in | |||
| either RFC1034 or RFC1035, nor do any of their references provide | either RFC1034 or RFC1035, nor do any of their references provide | |||
| further information. | further information. | |||
| This phrase seems to have been intending to specify arithmetic as | This phrase seems to have been intending to specify arithmetic as | |||
| used in TCP sequence numbers [RFC793], and defined in [IEN-74]. | used in TCP sequence numbers [RFC793], and defined in [IEN-74]. | |||
| [Aside: there may be another ref, not an IETF (online) doc, | ||||
| which may be more to the point, but what is it?] | ||||
| Unfortunately, the arithmetic defined in [IEN-74] is not adequate for | Unfortunately, the arithmetic defined in [IEN-74] is not adequate for | |||
| the purposes of the DNS, as no general comparison operator is | the purposes of the DNS, as no general comparison operator is | |||
| defined. | defined. | |||
| To avoid further problems with this simple field, this document | To avoid further problems with this simple field, this document | |||
| defines the field and the operations available upon it. This | defines the field and the operations available upon it. This | |||
| definition is intended merely to clarify the intent of RFC1034 and | definition is intended merely to clarify the intent of RFC1034 and | |||
| RFC1035, and is believed to generally agree with current | RFC1035, and is believed to generally agree with current | |||
| implementations. However, older, superseded, implementations are | implementations. However, older, superseded, implementations are | |||
| known to have treated the serial number as a simple unsigned integer, | known to have treated the serial number as a simple unsigned integer, | |||
| skipping to change at page 5, line 43 ¶ | skipping to change at page 5, line 33 ¶ | |||
| 7. Examples | 7. Examples | |||
| 7.1. A trivial example | 7.1. A trivial example | |||
| The simplest meaningful serial number space has SERIAL_BITS == 2. In | The simplest meaningful serial number space has SERIAL_BITS == 2. In | |||
| this space, the integers that make up the serial number space are 0, | this space, the integers that make up the serial number space are 0, | |||
| 1, 2, and 3. That is, 3 == 2^SERIAL_BITS - 1. | 1, 2, and 3. That is, 3 == 2^SERIAL_BITS - 1. | |||
| In this space, the largest integer that it is meaningful to add to a | In this space, the largest integer that it is meaningful to add to a | |||
| sequence number is 2^(SERIAL_BITS - 1) - 1, ie: 1. | sequence number is 2^(SERIAL_BITS - 1) - 1, or 1. | |||
| Then, as defined 0+1 == 1, 1+1 == 2, 2+1 == 3, and 3+1 == 0. | Then, as defined 0+1 == 1, 1+1 == 2, 2+1 == 3, and 3+1 == 0. | |||
| Further, 1 > 0, 2 > 1, 3 > 2, and 0 > 3. It is undefined whether | Further, 1 > 0, 2 > 1, 3 > 2, and 0 > 3. It is undefined whether | |||
| 2 > 0 or 0 > 2, and whether 1 > 3 or 3 > 1. | 2 > 0 or 0 > 2, and whether 1 > 3 or 3 > 1. | |||
| 7.2. A slightly larger example | 7.2. A slightly larger example | |||
| Consider the case where SERIAL_BITS == 8. In this space the integers | Consider the case where SERIAL_BITS == 8. In this space the integers | |||
| that make up the serial number space are 0, 1, 2, ... 254, 255. | that make up the serial number space are 0, 1, 2, ... 254, 255. | |||
| 255 == 2^SERIAL_BITS - 1. | 255 == 2^SERIAL_BITS - 1. | |||
| In this space, the largest integer that it is meaningful to add to a | In this space, the largest integer that it is meaningful to add to a | |||
| sequence number is 2^(SERIAL_BITS - 1) - 1, ie: 127. | sequence number is 2^(SERIAL_BITS - 1) - 1, or 127. | |||
| Addition is as expected in this space, eg: 255+1 == 0, | Addition is as expected in this space, for example: 255+1 == 0, | |||
| 100+100 == 200, and 200+100 == 44. | 100+100 == 200, and 200+100 == 44. | |||
| Comparison is more interesting, 1 > 0, 44 > 0, 100 > 0, 100 > 44, | Comparison is more interesting, 1 > 0, 44 > 0, 100 > 0, 100 > 44, | |||
| 200 > 100, 255 > 200, 0 > 255, 100 > 255, 0 > 200, and 44 > 200. | 200 > 100, 255 > 200, 0 > 255, 100 > 255, 0 > 200, and 44 > 200. | |||
| Note that 100+100 > 100, but that (100+100)+100 < 100. Incrementing | Note that 100+100 > 100, but that (100+100)+100 < 100. Incrementing | |||
| a serial number can cause it to become "smaller". Of course, | a serial number can cause it to become "smaller". Of course, | |||
| incrementing by a smaller number will allow many more increments to | incrementing by a smaller number will allow many more increments to | |||
| be made before this occurs. However this is always something to be | be made before this occurs. However this is always something to be | |||
| aware of, it can cause surprising errors, or be useful as it is the | aware of, it can cause surprising errors, or be useful as it is the | |||
| skipping to change at page 7, line 32 ¶ | skipping to change at page 7, line 9 ¶ | |||
| correctly succeeded in following the primary server's serial number | correctly succeeded in following the primary server's serial number | |||
| changes, at each step. | changes, at each step. | |||
| Note that each, and every, increment to the serial number must be | Note that each, and every, increment to the serial number must be | |||
| treated as the start of a new sequence of increments for this | treated as the start of a new sequence of increments for this | |||
| purpose, as well as being the continuation of all previous sequences | purpose, as well as being the continuation of all previous sequences | |||
| started within the period specified by SOA.expire. | started within the period specified by SOA.expire. | |||
| Caution should also be exercised before causing the serial number to | Caution should also be exercised before causing the serial number to | |||
| be set to the value zero. While this value is not in any way special | be set to the value zero. While this value is not in any way special | |||
| in serial number arithmetic, many DNS implementations have treated | in serial number arithmetic, or to the DNS SOA serial number, many | |||
| zero as a special case, with special properties, and unusual | DNS implementations have incorrectly treated zero as a special case, | |||
| behaviour may be expected if zero is used as a DNS SOA serial number. | with special properties, and unusual behaviour may be expected if | |||
| zero is used as a DNS SOA serial number. | ||||
| 10. Document Updates | 10. Document Updates | |||
| RFC1034 and RFC1035 are to be treated as if the references to | RFC1034 and RFC1035 are to be treated as if the references to | |||
| "sequence space arithmetic" therein are replaced by references to | "sequence space arithmetic" therein are replaced by references to | |||
| serial number arithmetic, as defined in this document. | serial number arithmetic, as defined in this document. | |||
| 11. Security Considerations | 11. Security Considerations | |||
| This document does not consider security. | This document does not consider security. | |||
| skipping to change at page 8, line 30 ¶ | skipping to change at page 8, line 8 ¶ | |||
| [RFC793] Transmission Control protocol | [RFC793] Transmission Control protocol | |||
| Information Sciences Institute, USC, September 1981 | Information Sciences Institute, USC, September 1981 | |||
| [IEN-74] Sequence Number Arithmetic | [IEN-74] Sequence Number Arithmetic | |||
| William W. Plummer, BB&N Inc, September 1978 | William W. Plummer, BB&N Inc, September 1978 | |||
| 13. Acknowledgements | 13. Acknowledgements | |||
| Thanks to Rob Austein for suggesting clarification of the undefined | Thanks to Rob Austein for suggesting clarification of the undefined | |||
| comparison operators, and to Michael Paddon for attempting to locate | comparison operators, and to Michael Patton for attempting to locate | |||
| the missing reference, which must exist somewhere. Thanks also to | another reference for this procedure. Thanks also to members of the | |||
| members of the IETF DNSIND working group of 1995-6. | IETF DNSIND working group of 1995-6, in particular, Paul Mockapetris. | |||
| 14. Author's Address | ||||
| Robert Elz | ||||
| Computer Science | ||||
| University of Melbourne | ||||
| Parkville, Vic, | ||||
| Australia. | ||||
| End of changes. 9 change blocks. | ||||
| 12 lines changed or deleted | 10 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||