BGP

【図解/BGP】4Byte-ASの互換性とAS4_PATH, AS4_AGGREGATOR属性

BGP Support for Four-octet AS Number Space

BGP の AS 番号は当初 2 Bytes [1 - 65535] の範囲で定義していましたが、インターネットと BGP の世界的な支持により不足してきました。

そこで 2007 年に RFC4893 により 4 Bytes の AS 番号が定義されました。(後に  2012 年に RFC6793 に改定)

この記事では既存の 2 Bytes AS 番号と互換性を保ちながらどのように 4 Bytes AS 番号を共存させるのか、その仕組みや設定について解説します。

Ciscoの4 Bytes-AS の設定

以下の構成における設定例を示します。

[RT1 config]

RT1(config)# router bgp 65000.65000
RT1(config-router)# bgp asnotation dot
RT1(config-router)# network 1.1.1.0 mask 255.255.255.0
RT1(config-router)# neighbor 10.1.12.2 remote-as 65001.65001

[RT2 config]

RT2(config)# router bgp 65001.65001
RT2(config-router)# bgp asnotation dot
RT2(config-router)# network 2.2.2.0 mask 255.255.255.0
RT2(config-router)# neighbor 10.1.12.1 remote-as 65000.65000

bgp asnotion dot コマンドは無くてもいいですが、設定しないと [2 Bytes].[2 Bytes] 表記ではなく 4 Bytes の 10 進数表記になり、例えば 65000:65000 が 4259905000 と表示され、非常に見にくくなります。

BGP Capability

BGP では規格ができた後にも追加機能がちょこちょこと追加されてきています。ただ、相手がその機能を使えないとうまく働かないようなものも多く、そのようなものについては、OPEN メッセージでネゴシエーションをすることができます。このネゴシエーション機能を Capability と呼びます。

例えば clear ip bgp * soft で使う [ Route-Refresh] メッセージも後から追加された機能であり、OPEN メッセージでネゴシエーションされます。ORF (Outbound Route Filtering) という機能も途中から追加されたものであり、Capability でネゴシエーションされます。

ここまで話せば分かると思いますが、4 Bytes AS 番号についても相手が対応できるかどうかを Capability でネゴシエーションします。

4 Bytes AS 番号を設定したときの OPEN メッセージのパケットキャプチャを見てみると、以下のようになっています。

OPEN メッセージ内にも自分の AS 番号を入れるところがありますが、ネゴシエーション前で 4 Bytes にするわけにはいきません。なのでここでは 23456 という AS 番号を使うことが RFC で規定されています。そして 4 Bytes AS 番号 (65000.65000 = 4259905000) はこの Capability の中に格納されます。

ここでネゴシエーションが成功すれば、以降の UPDATE メッセージには通常の AS_PATH 属性等に 4 Bytes AS 番号が格納されます。

また、相手が 4 Bytes AS 番号に対応していない場合に備え、RFC では新たに以下の 2 つの属性を追加しています。

  • AS4_PATH ・・・ 2 Bytes AS番号の AS_PATH の代わりにこの属性を使って 4 Bytes AS 番号を広報する
  • AS4_AGGREGATOR ・・・ 2 Bytes AS 番号の AGGREGATOR の代わりにこの属性を使って 4 Bytes AS 番号を広報する

Optional Transitive なので、自分が対応していなくても周りに伝えることができるのです。

最後に参考として、今回の構成図のパケットキャプチャは以下からダウンロードできます。

https://milestone-of-se.nesuke.com/pcap/bgp-4bytes-asn.pcapng

コメント

タイトルとURLをコピーしました