< 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/