BGPのAS_PATH属性

BGPのAS_PATH属性について説明しています。

AS_PATH属性の定義

AS_PATH属性の定義は、以下のとおりです。

【AS_PATH属性の定義】
項目 説明
タイプコード 2
カテゴリ 必須(Well-known mandatory)
概略 経由したAS番号の羅列
パス属性値 以下フォーマットを参照

カテゴリがWell-known mandatoryの場合、すべてのBGPスピーカーでサポートが必須です。また、必ずBGPパケットのパス属性として含む必要があります。

AS_PATHのパス属性値は、以下フォーマットになっています。

ASパスセグメントのフォーマット

これは、ASパスセグメントと呼ばれます。

それぞれの説明は、以下のとおりです。

【AS_PATH属性値の説明】
項目 説明
パスセグメントタイプ 1:AS_SET(経由した順番は意味なし)
2:AS_SEQUENCE(経由した順番にAS番号が羅列)
パスセグメント長 パスセグメント値で羅列するASの数
パスセグメント値 経由したAS番号の羅列

EBGPでの動作

EBGP(External Border Gateway Protocol)で接続した際、自ASから取り込んだ経路であればセグメントタイプをAS_SEQUENCEにし、パスセグメント長は1、パスセグメント値に自身のAS番号を入れてAS_PATH属性を生成します。

これを受信したBGPスピーカーが他BGPに広報する時は、パスセグメント長を2にし、パスセグメント値の一番左に自身のAS番号を追加します。

つまり、経由したAS番号が羅列されます。

これは、宛先へ複数の経路がある場合の優先度にも使われます。例えば、2つのAS番号を持つルートと、3つのAS番号を持つルートでは、2つのAS番号を持つルートが選択されます。

AS:64501へは64052と64503を経路した経路より、64054だけ経由した経路が優先される。

AS_PATH属性は、経由したAS番号の羅列のため、もし自身のAS番号があるルートを受信した場合、ループしていると判断して無視します。

複数の経路があって、片方の経路を優先したい場合、優先しない経路で自身のAS番号を複数追加(Prepend)することもあります。

AS64502を2回追加することで、経路の優先度を下げられる。

パスセグメントタイプのAS_SETは、経路を集約した時に使われます。例えば、異なるASを経由してきた個別の経路が1つの経路に集約された時、個別の経路が経由したAS番号をすべてAS_PATHに記述してパスセグメントタイプをAS_SETとします。その際、AS番号の順番が意味を持たなくなります。また、新たなASパスセグメントをセグメントタイプのAS_SEQUENCEで自身のAS番号を付与し、追加します。

AS64502と64503の経路を集約すると、AS_SETで64502と64503がセットされる。さらに、別のASパスセグメント追加して、AS_SEQUENCEで自身のAS番号をセットする。

AS_SETを使いたい時は、ルーターの集約するためのコマンドで、オプションとして提供されたりします。このオプションを使わずに集約した場合、経路のループを防ぐためにATOMIC_AGGREGATE属性を使う必要があります。

なお、RFC 6472 - Recommendation for Not Using AS_SET and AS_CONFED_SET in BGPでは、AS_SETは非推奨になっています。

IBGPでの動作

IBGP(Internal Border Gateway Protocol)で接続した際、自ASから取り込んだ経路であれば、パス属性値の長さを0にしてAS_PATHのパス属性値自体は空とします。

EBGPで他ASから受け取った経路の場合、IBGP接続先に広報する時にAS_PATH属性値は変更しません。

他ASの経路はIBGPで送信する時にAS_PATHを変更せず、自ASの経路をIBGPで送信する時にAS_PATHは空になる。

AS番号の補足

AS_PATHは、4バイトのAS番号にも対応しています。このため、4バイトのAS番号に対応したBGPスピーカー(これをNEW BGP speakerと言います)間では、4バイトで付与します。

4バイトのAS番号に対応していないBGPスピーカー(これをOLD BGP speakerと言います)に広報する時は、AS_PATHに23456(AS_TRANSと呼ばれます)の番号を付与します。これで、OLD BGP speakerでもAS_PATHが解釈できます。

NEW BGP speakerから送信する時、本来は65537 65536と送信したいが、OLD BGP speakerが相手の時は23456 23456で送信する。

BGPピアが4バイトに対応しているかは、OPENメッセージのオプションで判断できます。

なお、2バイトのAS番号が割り当てられている場合、NEW BGP speakerからOLD BGP speakerへはAS_TRANSを使わずに、実際のAS番号をAS_PATH属性に追加します。

BGPのパス属性一覧」に戻る