dcox@ssd.kodak.com (Don Cox ) (06/13/91)
SunOS4.1.1, Sun3/60, BIND 4.8.3 I have a primary nameserver and a secondary for ssd.kodak.com. On the primary machine I have the following entry: ssd.kodak.com. IN SOA ispdgate.ssd.kodak.com. dcox.ssd.kodak.com. ( 32.1 ; Serial ^^^^ 1800 ; Refresh every 30 minutes 300 ; Retry every 5 minutes 604800 ; Expire after one week 3600 ) ; Minimum If I look at the file for ssd.kodak.com on the secondary I get: ssd IN SOA ispdgate.ssd.kodak.com. dcox.ssd.kodak.com. ( 320001 1800 300 604800 3600 ) ^^^^^^ If I make a change on the primary, it doesn't get transfered to the secondary for up to 24 hours. Is this because the secondary is somehow translating the serial number into 320001 when it's 32.1 on the primary? Wouldn't this mean that the secondary would never get updated, since 32.1 would never be greater than 320001? When I changed the serial number on the primary to 320002 (so that it would be greater than the number on the secondary) the transfers started taking place every 30 minutes, as specified in the refresh. When I looked at the access time for ssd.kodak.com on the secondary (ls -la) it changed every three hours whether I incremented the serial number on the primary or not. Is this just because the file was 'touched' to verify the serial number on the secondary, and there wasn't an actual transfer from primary to secondary? Thanks much. -- Don Cox Phone (716) 253-7121 KMX (716) 253-7998 INTERNET dcox@ssd.kodak.com
karl.kleinpaste@osc.edu (06/14/91)
dcox@ssd.kodak.com writes:
ssd.kodak.com. IN SOA ispdgate.ssd.kodak.com. dcox.ssd.kodak.com. (
32.1 ; Serial
1800 ; Refresh every 30 minutes
300 ; Retry every 5 minutes
604800 ; Expire after one week
3600 ) ; Minimum
The fundamental problem is that dotted numbers aren't supposed to be
in the SOA serial # field. From RFC 1035, section 3.3.13, page 19:
SERIAL The unsigned 32 bit version number of the original copy
of the zone. Zone transfers preserve this value. This
value wraps and should be compared using sequence space
arithmetic.
Any conversion of a dotted number to "unsigned 32 bit" is probably
implementation-dependent, and almost certainly wrong.
I use a YYMMDD encoding, e.g., 910123 means that I last updated the
zone last January 23rd.
"When in doubt, quote an RFC." --Ed Vielmetti
--karl
phil@eecs.nwu.edu (William LeFebvre) (06/14/91)
In article <1991Jun13.161911.29541@ssd.kodak.com>, dcox@ssd.kodak.com (Don Cox ) writes: |> SunOS4.1.1, Sun3/60, BIND 4.8.3 |> |> I have a primary nameserver and a secondary for ssd.kodak.com. |> On the primary machine I have the following entry: |> |> ssd.kodak.com. IN SOA ispdgate.ssd.kodak.com. dcox.ssd.kodak.com. ( |> 32.1 ; Serial |> |> If I look at the file for ssd.kodak.com on the secondary I get: |> |> ssd IN SOA ispdgate.ssd.kodak.com. dcox.ssd.kodak.com. ( |> 320001 1800 300 604800 3600 ) Believe it or not, in BIND "32.1" is the same as "320001". The exact interpretation of "." is "000". Quite seriously (I looked at the code). This means that 32.10 > 32.9 by a very significant margin: 32.10 == 3200010 and 32.9 == 320009, a order of magnitude difference. I personally avoid using the "." notation for serial numbers. It it non-standard and as ill-defined (and IMHO, poor) semantics. As for the rest of it: I'm not sure why the transfers weren't taking place. But since it seems to work without the dot, I would advise just leaving it that way. William LeFebvre Computing Facilities Manager and Analyst Department of Electrical Engineering and Computer Science Northwestern University <phil@eecs.nwu.edu>
MAP@LCS.MIT.EDU (Michael A. Patton) (06/14/91)
Date: 13 Jun 91 20:07:55 GMT From: eecs.nwu.edu!phil@ucbvax.berkeley.edu (William LeFebvre) In article <1991Jun13.161911.29541@ssd.kodak.com>, dcox@ssd.kodak.com (Don Cox ) writes: |> ssd.kodak.com. IN SOA ispdgate.ssd.kodak.com. dcox.ssd.kodak.com. ( |> 32.1 ; Serial Believe it or not, in BIND "32.1" is the same as "320001". The exact interpretation of "." is "000". Quite seriously (I looked at the code). This means that 32.10 > 32.9 by a very significant margin: 32.10 == 3200010 and 32.9 == 320009, a order of magnitude difference. I was mostly ignoring this thread because it was obvious to me that the problem was that 32.1 was against the spec and several people had said that, but when I noticed this message it suddenly dawned on me how this brokenness was screwing this particular poor soul and why it was an object lesson about staying with the standards... I now understand what got Don Cox, he probably "increased" the serial from 31.xx (where xx was greater than 9), to 32.1 assuming the natural interpretation. Unfortunately, according to bind 32.1 << 31.11 so it doesn't think the serial increased. The right solution to this is DON'T USE THE x.y FORMAT FOR SERIAL, the spec says a single integer. Bind has offerred to let you have a non-standard system, and as I would expect with a non-standard setup, it DOES NOT WORK except under some specific circumstances that the implementer had in mind. __ /| /| /| \ Michael A. Patton, Network Manager / | / | /_|__/ Laboratory for Computer Science / |/ |/ |atton Massachusetts Institute of Technology
gdmr@dcs.ed.ac.uk (George Ross) (06/17/91)
In article <9106141643.AA26522@gaak.LCS.MIT.EDU>, MAP@LCS.MIT.EDU (Michael A. Patton) writes: > I now understand what got Don Cox, he probably "increased" the serial > from 31.xx (where xx was greater than 9), to 32.1 assuming the natural > interpretation. Unfortunately, according to bind 32.1 << 31.11 so it > doesn't think the serial increased. Actually, he may have "increased" it from nnnnn.9 to nnnnn.10 and tripped over an overflow. The pre-overflow results would have been nnnnn0009 and nnnnn00010. > it DOES NOT WORK except under some specific circumstances that the > implementer had in mind. Looks to me like it's just plain broken. It could have been a good idea -- having explicit major and minor versions could cue the less sophisticated, thereby avoiding mistakes. Quite apart from the implementation being wrong, though, it rapidly runs into overflow problems. -- George D M Ross, Department of Computer Science, University of Edinburgh Kings Buildings, Mayfield Road, Edinburgh, Scotland, EH9 3JZ Tel: 031-650 5147 Internet: gdmr@dcs.ed.ac.uk JANET: gdmr@uk.ac.ed.dcs
mohta@NECOM830.CC.TITECH.AC.JP (Masataka Ohta) (06/17/91)
> Believe it or not, in BIND "32.1" is the same as "320001". The exact > interpretation of "." is "000". Quite seriously (I looked at the code). > > This means that 32.10 > 32.9 by a very significant margin: > 32.10 == 3200010 and 32.9 == 320009, a order of magnitude difference. > The right solution to this is DON'T USE THE x.y FORMAT FOR SERIAL, the > spec says a single integer. Isn't it a good idea to use numbers like 320001, 320002, 320003, ... , 320010, ... , 320100, ... and then 330001 without "."? Masataka Ohta
jbryans@beach.csulb.edu (Jack Bryans) (06/17/91)
In article <BOB.91Jun17130137@volitans.MorningStar.Com> bob@MorningStar.Com (Bob Sutterfield) writes: > I find numbers like 91061203 much more readable. That denotes my > third try last Wednesday. It even sorts, if that's of any value to > you. What happens in nine years? Jack
bob@MorningStar.Com (Bob Sutterfield) (06/18/91)
In article <9106171434.AA24830@necom830.cc.titech.ac.jp> mohta@NECOM830.CC.TITECH.AC.JP (Masataka Ohta) writes:
Isn't it a good idea to use numbers like 320001, 320002, 320003,
... , 320010, ... , 320100, ... and then 330001 without "."?
I find numbers like 91061203 much more readable. That denotes my
third try last Wednesday. It even sorts, if that's of any value to
you.
jnford@argos.weeg.uiowa.edu (Jay Ford) (06/18/91)
In article <JBRYANS.91Jun17110704@beach.csulb.edu>, jbryans@beach.csulb.edu (Jack Bryans) writes: |> In article <BOB.91Jun17130137@volitans.MorningStar.Com> bob@MorningStar.Com (Bob Sutterfield) writes: |> |> > I find numbers like 91061203 much more readable. That denotes my |> > third try last Wednesday. It even sorts, if that's of any value to |> > you. |> |> What happens in nine years? X.500? Or, a serial number format of yyyymmddnn (with a 4-digit year) could be used. Numbers of this format increase monotonically and will fit in an unsigned 32-bit field through the year 4294 (2^32 - 1 = 4294967295). (For brain-dead DNS implementations which do signed serial numbers, it will work through 2147.) You can even go from the yymmddnn format to the yyyymmddnn format without getting into trouble, because the numbers will always increase. ------------------------------------------------------------------------ Jay Ford, Weeg Computing Center, University of Iowa, Iowa City, IA 52242 jnford@handlebar.weeg.uiowa.edu, 319-335-5555
karl.kleinpaste@osc.edu (06/18/91)
jbryans@beach.csulb.edu writes: > I find numbers like 91061203 much more readable. That denotes my > third try last Wednesday. It even sorts, if that's of any value to > you. What happens in nine years? You bump way forward in the sequence to, e.g., 2000061203. With 2-digit sub-day identifiers as Bob uses, you can still last until the year 4294 before a 32-bit unsigned integer overflows. --karl
kre@cs.mu.oz.au (Robert Elz) (06/18/91)
jnford@argos.weeg.uiowa.edu (Jay Ford) writes: >Or, a serial number format of yyyymmddnn (with a 4-digit year) could be used. That's exactly what we use here already - ie: the serial number of AU is 1991061500 I've been using that format for ages - but now I've come to believe that the 2 digit 'nn' is unnecessary, one digit would be enough - more than 10 changes in a day just doesn't happen often enough to matter (and if it ocasionally does you can just borrow a number from tomorrow). I don't think I've ever actually gotten past about 05 ... That also solves all problems with possible signed numbers, etc, for a very long time indeed. Unfortunately switching from the 'nn' format back to a single 'n' isn't trivial, or I'd do that. kre
rickert@mp.cs.niu.edu (Neil Rickert) (06/18/91)
In article <kre.677213961@mundamutti.cs.mu.OZ.AU> kre@cs.mu.oz.au (Robert Elz) writes: >That's exactly what we use here already - ie: the serial number of AU is > > 1991061500 > >I've been using that format for ages - but now I've come to believe that >the 2 digit 'nn' is unnecessary, one digit would be enough - more than > >Unfortunately switching from the 'nn' format back to a single 'n' >isn't trivial, or I'd do that. If the software is reasonably compliant with the RFCs, changing should not be particularly difficult. Start by using: 4199106150 (i.e. with a superfluous leading 4). Use this format for a week, or so, till you are sure all outdate copies of your SOA record have timed out everywhere. Then drop the leading '4'. Wrap around beyond 2^32 is supposed to be handled smoothly, according to the RFC requirements. -- =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Neil W. Rickert, Computer Science <rickert@cs.niu.edu> Northern Illinois Univ. DeKalb, IL 60115 +1-815-753-6940
kre@cs.mu.oz.au (Robert Elz) (06/19/91)
rickert@mp.cs.niu.edu (Neil Rickert) writes: >If the software is reasonably compliant with the RFCs, The softwre in issue is BIND, which bears only a cursory resemblance to the RFC's ... The test in 4.8.3 is ... if (zp_start.z_serial > serial_no || serial_no == 0) (the variables are unsigned). This particular part of BIND bears even less than usual resemblance to the RFC's ... Even if a new BIND with this (not the most serious of BIND's bugs) fixed were distributed, its not worth the hassle of making sure that all secondary servers has updated, just to avoid some possible problem with the high order bit becomes set around 2137 (by which time, just maybe, a working BIND might exist). But I do believe that all BIND's have treated this field as unsigned, so the real problem won't come for another couple of millenia, if BIND isn't fixed by then, people using the yyyymmddnn scheme are going to be in all kinds of trouble. Frankly, I kind of suspect that I won't really care... kre
barrett@Daisy.EE.UND.AC.ZA (Alan P Barrett) (06/20/91)
In article <kre.677213961@mundamutti.cs.mu.OZ.AU>, kre@cs.mu.oz.au (Robert Elz) writes: jnford@argos.weeg.uiowa.edu (Jay Ford) writes: >Or, a serial number format of yyyymmddnn (with a 4-digit year) could be used. That's exactly what we use here already - ie: the serial number of AU is 1991061500 I've been using that format for ages - but now I've come to believe that the 2 digit 'nn' is unnecessary, one digit would be enough - more than 10 changes in a day just doesn't happen often enough to matter (and if it ocasionally does you can just borrow a number from tomorrow). I don't think I've ever actually gotten past about 05 ... That also solves all problems with possible signed numbers, etc, for a very long time indeed. Unfortunately switching from the 'nn' format back to a single 'n' isn't trivial, or I'd do that. kre
lmjm@doc.ic.ac.uk (Lee McLoughlin) (06/23/91)
In article <1991Jun20.093116.19537@Daisy.EE.UND.AC.ZA> barrett@Daisy.EE.UND.AC.ZA (Alan P Barrett) writes: From: barrett@Daisy.EE.UND.AC.ZA (Alan P Barrett) Subject: Re: decimals in the serial field In article <kre.677213961@mundamutti.cs.mu.OZ.AU>, kre@cs.mu.oz.au (Robert Elz) writes: jnford@argos.weeg.uiowa.edu (Jay Ford) writes: >Or, a serial number format of yyyymmddnn (with a 4-digit year) could be used. That's exactly what we use here already - ie: the serial number of AU is 1991061500 I've been using that format for ages - but now I've come to believe that the 2 digit 'nn' is unnecessary, one digit would be enough - more than 10 changes in a day just doesn't happen often enough to matter (and if it ocasionally does you can just borrow a number from tomorrow). I don't think I've ever actually gotten past about 05 ... Locally we use this format with a two digit nn bit. We use hesiod to export more and more of the /etc type files around (passwd, services, printcap, automounter maps...). It is not that hard to get more than 10 passwd entry changes in a day. -- -- Lee McLoughlin phone: 071 589 5111 X 5085 fax: 071 581 8024 Department of Computing, Imperial College, 180 Queens Gate, London SW7 2BZ, UK Janet: lmjm@uk.ac.ic.doc Uucp: lmjm@icdoc.UUCP (or ..!ukc!icdoc!lmjm) DARPA: lmjm@doc.ic.ac.uk (or lmjm%uk.ac.ic.doc@nsfnet-relay.ac.uk)