[NNTP] 32 bit article counters - some history
Clive D.W. Feather
clive at demon.net
Thu Jul 14 02:06:46 PDT 2005
> Note that this is a long-standing point of discussion for this working
> group. We first reached consensus on the current text about eight years
> ago; Clive was the one who drafted it originally.
True.
I've had a look back. My first wording was written on 1996-12-27 and
proposed a maximum of 999,999,999.
> However, this is the first time that I
> recall someone bringing up a configuration that files all articles into a
> single group.
Actually, to my slight amazement, *I* wrote on 1996-12-15:
| as a thought experiment,
| would the following conform to 977 and, if not, why not ?
[...]
| - Articles are numbered uniquely across the entire newsbase (with an
| article having the same number in every group it appears in).
| - Articles are numbered sequentially as they arrive from 1.
|
| I see nothing stating that article numbers must be less than (say) 2^32.
64-bit systems were mentioned in the ensuing threads. For example, Brian
Kantor wrote:
| Since the article numbers are not transmitted in a binary form, I see
| no reason to artificially restrict the range of article numbers by
| specifying the size or length of the representation. A specification
| that the numbers are DECIMAL and represent actual article counts should
| be sufficient. (I.e., we should not force epochal resets of a newsgroup
| article count just because it won't fit in N digits.)
and I replied:
| We need to specify the representation used in the protocol (decimal unsigned,
| leading zeroes allowed).
|
| If there is no upper limit on article numbers, all client software needs to
| implement arbitrary-precision arithmetic "just in case". This is, to my
| mind, unreasonable, and so we should put an upper bound.
|
| All reasonable systems can handle unsigned integers of at least 32 bits
| (the ISO C Standard requires them to). Therefore 4 294 967 295 (2^32-1)
| seems a reasonable limit. [I know I said 999999999 before; I won't embarrass
| myself by repeating my reasoning.]
The ISO C Standard point is an interesting one. The current version of the
Standard requires 64 bit support, but is not yet widely rolled out.
I replied to Chris Caputo:
| > If Usenet (as an example ;-) continues to grow as it has, we may eat this
| > space pretty quickly in which case we either need to expand the range to
| > 64 bits and/or precisely define how to handle rollovers.
|
| There's no existing practice for handling such rollovers. Here's some
| possibilities:
|
| (1) Ignore it. If a server reaches the limit for a group, the server
| operator declares a flag day when article numbers in several groups will
| be reset.
|
| (2) Assume that, by the time the problem is significant, we can write
| 977-ter (replacement for 977-bis) to say that 64 bits are allowed (I think
| it's too early for that).
|
| (3) Define some mechanism for giving groups epoch numbers. I don't like
| this offhand - too much has to change.
|
| (4) Make article numbers be modulo 2^32. Actually, this idea can be
| improved on. Divide the number space into 4 quadrants:
| Q0 = 1 to 2^30-1
| Q1 = 2^30 to 2^31-1
| Q2 = 2^31 to 2^31+2^30-1
| Q3 = 2^31+2^30 to 2^32-1
| Some time after the low water mark for a group enters Q3 and before the
| high water mark is reaching danger, the server should reset the group by
| subtracting 2^31 from all article numbers. If the client has a recorded HWM
| (or LWM) in Q3, and sees a GROUP response in Q1, it should assume this has
| happened and adjust its records in the same way. Obviously, the reset has
| to be atomic, but this could be done on Unix by:
| - link each article to its new number
| - change the active file
| - wait for all clients using the old numbers to disconnect (or
| forcibly disconnect them);
| - remove the links with the old numbers.
Later on, Chris Caputo wrote:
| The preceeding two comments have really got me thinking we shouldn't place
| any limitations on decimal length or range of article numbers. Why don't
| we just let the market decide how many decimal digits to use? Since this
| is a text based protocol, it seems we shouldn't even worry about what
| range a 32-bit number will allow. I certainly am thankful Brian and
| others didn't limit article numbers to 16-bits in RFC977, a bit length
| that might have been appropriate for the market when the rfc was drafted.
| We'd all be having flag days several times a year, if they did. In this
| same light, let's not limit RFC977bis. The market will decide when it is
| time to grow the range.
|
| I propose we change the draft to not place limitations on decimal length
| or range.
and the topic seems then to have died.
--
Clive D.W. Feather | Work: <clive at demon.net> | Tel: +44 20 8495 6138
Internet Expert | Home: <clive at davros.org> | Fax: +44 870 051 9937
Demon Internet | WWW: http://www.davros.org | Mobile: +44 7973 377646
Thus plc | |
More information about the ietf-nntp
mailing list