BGPのCOMMUNITY属性
BGPの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にして内部ピアに広報します。
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コニュニケーションズであれば、以下で公開されています。
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のパス属性一覧」に戻る