BGP 4-Byte AS Number

Hi Gareth,

I just fixed this error, thanks.

Rene

Hi Rene,

what would be the range for higher bit Asdot+ starting from ::
65536- 1.0
65537-1.1
65538-1.2
!
!
!
will be continued till last AS no but what will be the last AS value for this ( ? becomes ?.?) .
Also please emphasize it in this way that it can show starting, Medium and last values ?

Hello Pradyumna

If you continue this sequence, you will get:

  • AS 65536 becomes 1.0
  • AS 65537 becomes 1.1
  • AS 65538 becomes 1.2
  • AS 131071 becomes 1.65535
  • AS 131072 becomes 2.0
  • AS 131073 becomes 2.1
  • AS 131074 becomes 2.2
  • AS 4294967296 becomes 65535.65535
  • AS 4294967297 becomes 65536.1
  • AS 4294967298 becomes 65536.2
  • AS 4295032831 becomes 65536.65535
  • AS 4295032832 becomes 65536.65536

Now all of these values can be calculated, but many of them are reserved for various purposes including private AS’es and other uses. These can be seen at the following IANA link. Another cool tool you might find useful is this IANA converter of the various ASN formats.

I hope this has been helpful!

Laz

Hi Laz,

Thanks for this explanation but I think it must be stopped at AS 4295032831 becomes 65536.65535 as we know sequence started from 1.0 and 0-65535 makes total count 65536 and so 1-65536 makes total count 65536 so according to last AS value post dotted notation becomes 65537th which is exceeding the range.

Am i right or not ?

Hello Pradyumna

My numbers were incorrect. It seems it should actually end at 4294967295 which is 65535.65535 which in binary is just 32 ones. But I was using the IANA converter to verify, and it seems to be able to convert ASNs up to 4295032832 or 65536.65536 which is incorrect, because in order to represent these numbers you need 33 bits, but ASNs are only 32 bits.

So it seems that IANA’s converter is incorrect :crazy_face: unless there is some other explanation for this.

I hope this has been helpful!

Laz

Thanks Laz for this correction and well explanation.

But Still confused for 65536 range b/c as per total counts b/w range, it should be up to 65536:65535 b/c before decimal value staring from 1 not 0?

Hello Pradyumna

Remember that asdot simply represents a 32 bit binary number. In binary, we have:

11111111111111111111111111111111

We can separate this into two 16 bit numbers like so:

1111111111111111 1111111111111111

Now if we translate these into decimal and put a dot between them we get:

65535.65535

This is the highest AS number you can get. Remember, that we start counting at 0, and if you include 0, we have a total number of 65536 values, but in decimal their representation goes from 0 to 65535.

I hope this has been helpful!

Laz

1 Like

Thanks Laz now convinced.

1 Like

Hi,

There is an error on Rene’s example:

#AS 5434995
5434995 / 65536 = 82
5434995 - (82 * 65536) = 61043
asdot = 82.6104

It should be 82.61043.

Thank you @obertigiovannicesare, just fixed this typo.

Rene

I could not understand the as-dot here , can you please help me ??

Hello Narad

A 4 byte AS number is represented by 32 bits. For AS numbers less than 65536, these numbers are simply represented as numbers ranging from 1 to 655356. For larger numbers, ASdot represents them as two 16 bit numbers separated by a dot. So for example:

  • An AS number of 00000000 00000000 00000000 11111111 is
  1. 256 in decimal
  2. 256 in Asdot
  3. 0.256 in Asdot+
  • An AS number of 00000000 00000000 11111111 11111111 is
  1. 65535 in decimal
  2. 65535 in Asdot
  3. 0.65535 in Asdot+
  • An AS number of 00000000 00000001 11111111 11111111 is
  1. 131071 in decimal
  2. 1.65535 in Asdot
  3. 1.65535 in Asdot+

So if the two leftmost octets are zeros, then Asdot is the same as decimal. If however there is even a single “1” in any of the two leftmost octets, Asdot will revert to Asdot+.

I hope this has been helpful!

Laz

Hi Team
Would you explain how AS_TRANS calculated, i just didnt see any formula how exactly is created! you pick 23456 for remote as on R1, randomly chosen or whats the base here ? Thanks

Hello Nahro

The AS_TRANS number is defined as 23456 by the IANA and is always the same. The RFC4893 states that:

…this document introduces a reserved 2-octet AS number – AS_TRANS. The AS number 23456 has been assigned by the IANA for AS_TRANS.

I hope this has been helpful!

Laz

1 Like

Thanks Sir Laz
This is why we love Network Lessons, geting reply for all questions

1 Like

Rene/Laz,

With regards to the 4-byte ASNs, what would be appropriate workaround while using communities since standard is limited to 2-bytes. Cisco’s extcommunity attribute doesn’t seem to fit the bill for using route oriented declarations. Would you then be limited to using standard reserved ASNs eg. 65535 for iBGP purposes only? Thanks.

Hello William

It seems that the IETF has provided for such cases by defining a new type of BGP extended community that carries a 4-octet AS. This is defined in RFC5668. However, the set community route-map command can still only accommodate 2-byte ASNs. (Take a look at this Cisco community thread which sheds some light on that).

Cisco’s extended communities have been designed to accommodate 8 octets, which is what is needed for use of communities with a 4-byte ASN, however, these are used most often for MPLS VPN to share the RTs, and can be seen being used in these lessons:

Currently, there doesn’t seem to be a workaround for 4-byte ASNs, however, can you tell us a little bit more about what you want to achieve? It may help in devising a solution to the problem.
Is there a particular scenario that you have in mind? Let us know so that we can help you further.

I hope this has been helpful!

Laz

Hello!

Please, how do we make regular expressions work with 4-byte AS numbers? I have this simple topology here

and I want to only allow routes that originated from AS 1.1 to be accepted from R1
obrázok
obrázok
Yet it filters completely everything that comes from AS 1.1 and instead uses the path through AS 1.5 instead

The problem is that it only seems to work if I issue

bgp asnotation dot

but it still takes extremely long to convergence for some reason.

Can someone please explain to me how RegEx works with 4-Byte AS numbers?

Thank you in advance.

David

Hello David

When using a 4-byte AS number in your BGP implementations, then the regular expressions that are used for BGP must conform to the format that has been configured in the local router. For example, if the format you are using is

When using regular expressions with BGP, if you are using a 4-byte format of the ASN, then the syntax must match the configured AS notation. For example, the default notation is ASplain. In such a situation, you must use the decimal number between 0 and 4294967295 in your regular expressions.

If you have configured the device to use ASdot notation, then you must use that notation in your regular expressions. I have confirmed this in the lab. Here you see a BGP table of R1 with the AS displayed using the default ASplain notation:

R1#show ip bgp | begin Network 
     Network          Next Hop            Metric LocPrf Weight Path
 *>   1.1.1.1/32       192.168.12.2             0             0 12000013 i

To see what regular expression will match this, we try the following show commands:

R1#show ip bgp regexp ^183.6925$
R1#show ip bgp regexp ^12000013$
BGP table version is 2, local router ID is 192.168.12.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
              t secondary path, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>   1.1.1.1/32       192.168.12.2             0             0 12000013 i

Note that the first show command tries to display the prefixes that correspond to the ASdot notation of the AS, but there are no results. When using the ASplain notation, we get a result.

Let’s try it the other way around. Below I have changed the notation to ASdot, and have displayed the BGP table once again. You can see that the AS number is displayed as ASdot.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#router bgp 12000012
R1(config-router)#bgp asnotation dot
R1(config-router)#exit
R1(config)#exit
R1#show ip bgp | begin Network                  
     Network          Next Hop            Metric LocPrf Weight Path
 *>   1.1.1.1/32       192.168.12.2             0             0 183.6925 i
R1#

Now let’s try to show the prefixes with the appropriate regular expression:

R1#show ip bgp regexp ^12000013$                
R1#show ip bgp regexp ^183.6925$                
BGP table version is 2, local router ID is 192.168.12.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
              t secondary path, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>   1.1.1.1/32       192.168.12.2             0             0 183.6925 i
R1#

Using the ASplain notation nothing shows up, but using the configured ASdot notation, it shows up.

So the format you should use in your regular expressions for the ASNs should match the configured format in the local router. This is why your regular expression containing ^1\.1$ only matches when the ASdot notation is configured.

I hope this has been helpful!

Laz

Hello Laz

It all makes sense now, thank you for your help!

1 Like