[ppml] ":" - Re: Proposed Policy: 4-Byte AS Number Policy Proposal

From ppml-bounces@arin.net Wed Dec 14 04:30:07 2005
To: ppml@arin.net
From: Michael.Dillon@btradianz.com
Date: Wed, 14 Dec 2005 10:32:06 +0000
Subject: [ppml] Fw: ":" - Re: Proposed Policy: 4-Byte AS Number
  Policy Proposal

> I'm also not thrilled with "2-byte only" and "4-byte only" ASN; there's
too
> much chance of confusion with "2-byte" and "4-byte" ASNs which have a
> different enough meaning to warrant a better distinction. I'd prefer
> something like "legacy" vs. "expanded", "low" vs. "high", etc.

That's an example of the lack of plain English in the
proposal. Why don't we just talk about AS numbers greater
than 65535 or AS numbers less than 65536?

Because there is more to it than just that. :slight_smile:

there is the matter of whether they are represented by 2 bytes, or 4 bytes
_in_transmission_. '0x00004F4F' is a '4-byte' AS number that has a value
less than 65,536. It _should_ be treated identically with the 2-byte AS
number '0x4F4F', as I understand the currently-proposed methodoloty, but
there is no intrinsic reason why that _must _be the case. A two-byte AS
number, and a 4-byte AS number with the SAME numeric value, _are_
distinguishable as =different= entities.

1. ARIN begin allocating AS numbers greater than 65535
to those who specifically request them starting on $date.

2. On $date ARIN will not allocate AS numbers less than
65536 unless a small number is specifically requested.

3. On $date, ARIN will no longer make a distinction
between AS numbers less than 65536 and larger ones.

Guess what? I said it in plain English so I don't have to
define what is an "AS number less than 65536" or an "AS number
greater than 65535". I also don't have to invent silly new
notations so that AS2 looks different after the change.
A number is a number is a number.

Is it? <grin>

Do you represent AS 17 in two bytes, or four?

if you use 2 bytes, do you, "somewhere down the road", change to representing
it with 4 bytes? or do you deal with 'mixed-length' codes "in perpetuity"?

> That's an example of the lack of plain English in the
> proposal. Why don't we just talk about AS numbers greater
> than 65535 or AS numbers less than 65536?

Because there is more to it than just that. :slight_smile:

there is the matter of whether they are represented by 2 bytes, or 4

bytes

_in_transmission_. '0x00004F4F' is a '4-byte' AS number that has a

value

less than 65,536. It _should_ be treated identically with the 2-byte AS

number '0x4F4F',

Thank you for pointing out why we don't need to concern
ourselves with the difference between old AS 2 and new
AS 2. They are the same in every way that matters except
to protocol sniffers and protocol implementors. The new
AS number spec says so itself.

Is it? <grin>

Do you represent AS 17 in two bytes, or four?

Right now I am representing it in 4 bytes because
by email client uses two bytes (UTF8) per decimal
digit. But what difference does this make. Whether
it is 17, 021, 0x11 or "17" it is still greater than
16 and less than 18.

if you use 2 bytes, do you, "somewhere down the road", change to

representing

it with 4 bytes? or do you deal with 'mixed-length' codes "in

perpetuity"?

The whole discussion on PPML is about ARIN beginning to use
4 byte binary representation for AS numbers so that they can
begin giving out AS numbers greater than 65535 to those people
who *WANT* such numbers in order to use 4 byte AS numbers operationally.
And to be ready for the day when AS numbers less than 65536 have
run out.

It is a good idea for people to begin scheduling this change
in any internal systems which record AS numbers in binary
form. Of course, those far-sighted companies who represent
AS numbers as variable length strings in their applications
and databases will have no need to change things.

If you had to cross-post from PPML, you could have chosen
something with more operational relevance like the fact that
multiple networks will appear to be using AS 23456 because
at the boundary between old BGP4 speakers and new BGP4 speakers,
any AS numbers greater than 65535 will be mapped into AS 23456.

--Michael Dillon

No, there isn't. AS numbers are integers. It just so happens that there
are now two representations of said integers with different domain bounds.

Any other interpretation simply adds too much confusion. After all, "2
byte AS2" vs. "4 byte AS2" implies *more than* 4 bytes -- because you have
to use metadata beyond the 4 bytes to represent which "type" of AS you have.

Actually, for actual implementation, there are subtle differences between
AS 0x0002 ans AS 0x00000002. True, they are the same AS in 16 and 32 bit
representation, and, for allocation policy, they are the same, but, in
actual router guts, there are limited circumstances where you might actually
care which one you are talking about.

Owen

The metadata in this case is per BGP session, not per AS as implied by the
original post. They are still logically equivalent.

Further, the least error-prone way to implement BGP that can work in both 2
and 4 byte AS representations is to go completely 4-byte internally on the
router, and treat the 2-byte sessions as a backwards compatibility case.
In such an implementation, there is also no such thing as a "2-byte AS",
because all ASs are represented in 4 bytes.