Re: ISSUE: Checkgroups control messages

Thorfinn <[email protected]>
Newsgroups gmane.ietf.usenet.format
Message-ID <[email protected]>

On 23 Sep 2008, at 16:20, Julien ÉLIE wrote:
> Hi Thorfinn,
>
>> Looking at the current USEPRO text... *ponder* Serial number MUST   
>> increase.  That is definitely a problem - you certainly can run out  
>> of  32 bit integer.  It's not all that likely, but it's certainly  
>> possible.
>
> That is why I also suggested a mechanism (yet to be defined) to  
> *reset*
> the counter.  But the main problem is that it will cause problems to
> a news server which does not receive the message of reset...
> So it is maybe a bad idea.

Yep - reset doesn't work, for exactly that reason.  We know that  
relying on a single message to propagate for future correctness is  
poor behaviour, especially since we know that message propagation  
isn't even guaranteed to be in sequence, let alone delivered at all.

>> I'd be uncomfortable putting in a 32 bit limit unless we also  
>> change  the text to deal with serial comparison in the same way  
>> that DNS  serial numbers are compared.
>>
>> From RFC 1035:
>> 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.
>
> I reckon it is the best solution to adopt.
> Say that there is a 32 bit limit and that serial numbers SHOULD be  
> used
> in case the checkgroups sender does not want to run out of available  
> numbers.
> It is up to him if he does not want to use serial numbers.


DNS solves the problem by saying "sequence space arithmetic"...  
meaning if you are within plus half-the-number-range, you can consider  
the number "greater than", but if you are within minus half-the-number- 
range, then you consider it less than.

e.g. for a sequence space of decimal 1000:

if your number is 250, then anything up to 750 is considered "greater  
than", but from 751 - 249 is considered "less than".  Or, if your  
number is 999, then anything up to 499 is considered "greater than",  
and 500-998 is considered "less than".  (I might be off-by-one, but it  
sort of doesn't matter - close enough is good enough for this purpose.)

So there's "effectively" a reset - because if you keep incrementing by  
small amounts, you eventually come around to the other side of the  
sequence space, and that "resets" it for you.

I note that a few DNS implementations do actually fail to implement  
this correctly... but at least the standard says something useful, and  
most DNS servers do implement handling of SERIAL changes correctly.

So I'd either go with:

1. the current text: "unsigned integer there is no limit" - in which  
case implementers can actually trim leading zeros and do a straight  
asciibetical comparison, no bigint library required.

2. unsigned 32 bit number, wrapping and compared using sequence space  
arithmetic.

-- 
<a href="http://tertius.net.au/~thorfinn/">[email protected]</a>
To err is human, to moo bovine.  -- BSD fortune file
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.