BGPのCOMMUNITY属性

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

COMMUNITY属性の定義

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

【COMMUNITY属性の定義】
項目 説明
タイプコード 8
カテゴリ オプション転送(Optional transitive)
概略 ルーティングポリシー決定で利用
パス属性値 以下を複数可能
AS番号(2バイト) + 情報(2バイト)

カテゴリがOptional transitiveの場合、BGPスピーカーでサポートは必須ではないため、解釈できない可能性があります。解釈できない場合は、そのままBGPピアに転送する必要があります。

使い方

COMMUNITY属性のパス属性値は、2バイトのAS番号と2バイトの情報(タグとも呼ばれます)で構成されます。合計4バイトの値を使って経路をどのように扱うかポリシーを定義し、その値を受信した時に定義したポリシーを経路に反映します。

例えば、AS番号64500でCOMMUNITY属性の64500:90(16進数ではFBF4005A)を受信した場合、LOCAL_PREF属性を90にする定義をしたとします。その時、AS:64503からCOMMUNITY属性の64500:90が送信されてくると、LOCAL_PREFを90にして内部ピアに広報します。

COMMUNITY属性の利用例

LOCAL_PREFのデフォルトは100で高い値が優先されるため、COMMUNITY属性の64500:90を受信した経路は優先度が低くなります。

これは、複数のASから受信しても同様にLOCAL_PREFを90にすることもできるため、1つ1つのASや経路に対してポリシーを定義しなくて済みます。つまり、COMMUNITY属性を利用すれば、インターネットという膨大な経路がある中で、ポリシーの定義を簡素化できるということです。

COMMUNITY属性はLOCAL_PREFだけでなく、以下のようなことが可能です。

  • 特定のASだけに経路を広報する。
  • AS_PATH属性にPrepend(複数同じAS番号を追加)する。

COMMUNITY属性の値をどう扱うかは自ASで自由に決められるため、公開していることもあります。NTTコニュニケーションズであれば、以下で公開されています。

Routing Policies

Well-known Communities

COMMUNITY属性は自ASで自由に決められると説明しましたが、規格で決められているものもあります。Well-known Communitiesです。Well-known Communitiesは、BGPスピーカーで必ず実装が必要なもので、例えば以下があります。()内の数字は、16進数で表記しています。

GRACEFUL_SHUTDOWN(FFFF0000)
受信した経路の優先度を下げて使わないようにする(グレースフルシャットダウン)。
NO_EXPORT(FFFFFF01)
受信した経路をASの外に広報しない(コンフェデレーションの外に広報しない)。
NO_ADVERTISE(FFFFFF02)
受信した経路を内部含めてすべてのBGPピアに広報しない。
NO_EXPORT_SUBCONFED(FFFFFF03)
受信した経路をASの外に広報しない(コンフェデレーション内の他メンバーASにも広報しない)。
BLACKHOLE(FFFF029A)
受信した経路への通信を遮断する。

グレースフルシャットダウンは、メンテナンスなどでBGPを停止する前に、経路の優先度を下げるために使います。受信側は、LOCAL_PREFの値を下げる(推奨値は0)などで、その経路を使わないようにします。BGPが停止すると通信ができなくなりますが、GRACEFUL_SHUTDOWNを受信すると他の経路を使うようになるため、通信は継続できます。

グレースフルシャットダウン

BLACKHOLEは、他AS経由でDDOS攻撃を受けている時に、攻撃を手前で遮断できる有効な手段です。ただし、BLACKHOLEを受信したら必ず破棄という訳ではなく、どう扱うかは各ASの判断にまかされています。

Well-known Communitiesは、BGP Well-known Communitiesで管理されています。

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