BGP(コミュニティとは)
BGP経路を制御するには、以下の方法があります。
- 配布リスト
- プレフィックスリスト
- ルートマップ
しかし、これらの制御では、ネットワークの規模が大きくなり、ルータの台数が増えてくると、どうしても煩雑になってしまいます。
そこで、BGPでは、この問題を克服するために「コミュニティ」という機能が用意されています。
コミュニティを使用すると、経路情報にCOMMUNITY属性に値をセットすることで、COMMUNITY属性に基づいて、ポリシーどおりに経路情報を操作することが可能になります。
COMMUNITY属性は、16進数で00000000~FFFFFFFFの値で表現します。
※00000000~0000FFFF、FFFF0000~FFFFFFFFは、予約されています。
COMMUNITY属性は、4オクテットからなり、一般的には、上位2オクテットにAS番号、残りの下位2オクテットにポリシーを表す数値を入れ、上位2オクテットと下位2オクテットの間に「:」で区切って表現します。
16進数だとちょっと扱いにくいですよね!10進数でも扱うことができます。
COMMUNITY属性を 「100:200」のように10進数表記にするには、次のコマンドを入力します。
Router(config)#ip bgp-community new-format
COMMUNITY属性の値は、ユーザーが自由に定義することができます。
あらかじめ、COMMUNITY属性には、定義済みのものがあります。
代表的なものに以下のものがあります。
| no-export | eBGPピアにアドバタイズしません。他ASに経路情報を転送しない。 |
| no-advertise | eBGP、iBGP共にアドバタイズしません。他ルーターに経路情報を転送しない。 |
| local-as | 同じコンフェデレーションに属する他のサブASにアドバタイズします。外部のサブASに、アドバタイズしません。 |
| no-export-subconfed | コンフェデレーションにおいて、他メンバーASに経路情報をアドバタイズしない。 |
| internet | 全てのBGPスピーカーがデフォルトで所属します。経路のフィルタリングは行われません。 |
コミュニティの設定
コミュニティの設定は、以下の手順になります。
- 送信側でコミュニティを設定する。
- 送信側でコミュニティ属性を付随させる。
- 受信側で「community-lists」を作成し、「route-map」でポリシーを適用する。
ここで、注意しなければならないのは、送信側で付随させたコミュニティ属性は、デフォルトでアップデートに付随されないということです。
アップデートにコミュニティ属性を付随させるには以下のコマンドを設定する必要があります。
Router(config-router)#neighbor {IPアドレス} send-community
●基本コミュニティリスト
Router(config)#ip community-list {1-99} {permit|deny} {community_number}
●拡張コミュニティリスト
Router(config)#ip community-list {100-199} {permit|deny} 正規表現
コミュニティリストを使用するとroute-mapのmatch句で指定することで、コミュニティ値に基づいてフィルタリングを行ったり、メトリックなどのパラメータを設定することができます。
BGPは、非常に奥の深いプロトコルです。COMMUNITY属性の詳細やコミュニティリストを使った設定等の専門的なことに関しては、専門書を読んでみることをオススメします。
ここでは、コミュニティ属性に「no-export」を付随させアドバタイズさせる方法を紹介していきます。
続きは、「BGP(コミュニティの設定)」でネットワークを設定していきます。
