BGPコミュニティとは
BGPコミュニティ(Community)は、BGPルートに付加されるメタデータ(属性)の一種で、ネットワーク管理者がルートをグループ化して扱うためのツールです。コミュニティは、32ビットの値で表現され、通常はAS番号:値 の形式で書かれます。これにより、特定のルートに一意のタグを付けて、ルートの扱いを制御することができます。
BGPにはすでにベンダー側で用意されているWell-known コミュニティと個人で設定ができる標準コミュニティ、拡張コミュニティに分かれています。
Cisco機器で使用できるWell-knownコミュニティは以下となります。
| Well-knownコミュニティ | 内容 |
|---|---|
| NO_EXPORT | このコミュニティを持つルートは、他のAS(外部BGPピア)にはアドバタイズされませんが、iBGPピアにはアドバタイズされます。 |
| NO_ADVERTISE | のコミュニティを持つルートは、どのBGPピアにもアドバタイズされません。iBGPピアやeBGPピアを問わず、すべてのピアにアドバタイズが行われません |
| INTERNET | このコミュニティを持つルートは、すべてのBGPピアにアドバタイズされます。 |
| LOCAL-AS | このコミュニティを持つルートは、他のAS(外部BGPピア)に加えてサブASのネイバーにもアドバタイズしません。 |
| GRACEFUL_SHUTDOWN | BGPセッションを終了する際に使用するコミュニティで、ネットワーク全体に影響を最小限に抑えつつ、BGPのシャットダウンをサポートするために使用されます。 |
BGP Well-knowコミュニティを使用したフィルタリングの設定

Router1
hostname Router1
int g0/2
ip address 192.168.12.1 255.255.255.0
no shut
int lo1
ip address 1.1.1.1 255.255.255.255
int lo2
ip address 2.2.2.2 255.255.255.255
router bgp 65001
neighbor 192.168.12.2 remote-as 65002
netw 1.1.1.1 mask 255.255.255.255
netw 2.2.2.2 mask 255.255.255.255
Router2
hostname Router2
int g0/1
ip address 192.168.12.2 255.255.255.0
no shut
int g0/3
ip address 192.168.23.2 255.255.255.0
no shut
int g0/4
ip address 192.168.24.2 255.255.255.0
no shut
router bgp 65002
neighbor 192.168.12.1 remote-as 65001
neighbor 192.168.23.3 remote-as 65003
neighbor 192.168.24.4 remote-as 65002
netw 192.168.12.0 mask 255.255.255.0
netw 192.168.23.0 mask 255.255.255.0
netw 192.168.24.0 mask 255.255.255.0
Router3
hostname Router3
int g0/2
ip address 192.168.23.3 255.255.255.0
no shut
router bgp 65003
neighbor 192.168.23.2 remote-as 65002
netw 192.168.23.0 mask 255.255.255.0
Router4
hostname Router4
int g0/2
ip address 192.168.24.4 255.255.255.0
no shut
router bgp 65002
neighbor 192.168.24.2 remote-as 65002
netw 192.168.24.0 mask 255.255.255.0
no-exportコミュニティを使用して、ルートフィルタリングを実施します。
■送信側の設定
1.コミュニティ値の設定
アクセスリストとルートマップを使用して、フィルタリングをする対象にコミュニティ値を付与します。
Router1(config)#access-list 1 permit 1.1.1.1
Router1(config)#access-list 1 permit 2.2.2.2
Router1(config)#route-map COM permit 10
Router1(config-route-map)#match ip address 1
Router1(config-route-map)#set community no-export
Router1(config-route-map)#exit
Router1(config)#route-map COM permit 20
2.コミュニティ値の送付
send-communityコマンドを使用してコミュニティ値をネイバーへアドバタイズします。
Router1(config)#router bgp 65001
Router1(config-router)#neighbor 192.168.12.2 send-community
Router1(config-router)#neighbor 192.168.12.2 route-map COM out
3.動作確認
設定を反映させるためにBGPセッションをクリアします。
Router1#clear ip bgp * soft out
Router3のRouter4のルート情報を確認すると、Router2とiBGP関係であるRouter4ではルート情報の受信が出来ていますが、eBGP関係であるRouter3では1.1.1.1と2.2.2.2のルート情報の受信が出来なくなっています。


BGP コミュニティ値を使用したフィルタリングの設定

Router1
hostname Router1
int g0/2
ip address 192.168.12.1 255.255.255.0
no shut
int lo1
ip address 1.1.1.1 255.255.255.255
int lo2
ip address 2.2.2.2 255.255.255.255
router bgp 65001
neighbor 192.168.12.2 remote-as 65002
netw 1.1.1.1 mask 255.255.255.255
netw 2.2.2.2 mask 255.255.255.255
Router2
hostname Router2
int g0/1
ip address 192.168.12.2 255.255.255.0
no shut
int g0/3
ip address 192.168.23.2 255.255.255.0
no shut
int g0/4
ip address 192.168.24.2 255.255.255.0
no shut
router bgp 65002
neighbor 192.168.12.1 remote-as 65001
neighbor 192.168.23.3 remote-as 65003
neighbor 192.168.24.4 remote-as 65002
netw 192.168.12.0 mask 255.255.255.0
netw 192.168.23.0 mask 255.255.255.0
netw 192.168.24.0 mask 255.255.255.0
Router3
hostname Router3
int g0/2
ip address 192.168.23.3 255.255.255.0
no shut
router bgp 65003
neighbor 192.168.23.2 remote-as 65002
netw 192.168.23.0 mask 255.255.255.0
Router4
hostname Router4
int g0/2
ip address 192.168.24.4 255.255.255.0
no shut
router bgp 65002
neighbor 192.168.24.2 remote-as 65002
netw 192.168.24.0 mask 255.255.255.0
現在、Router3,Router4ではRouter1のLoopbackIPアドレスの1.1.1.1と2.2.2.2を受信していますが、これをコミュニティ値を付与してフィルタリングします。
■送信側の設定
1.コミュニティの形式変更
従来のコミュニティ値は1つの32ビットの数値として表示されていましたが、以下のコマンドを実行することで、AS番号:値といったような形式に変換されます。
Router1(config)#ip bgp-community new-format
2.コミュニティ値の設定
アクセスリストとルートマップを使用して、フィルタリングをする対象にコミュニティ値を付与します。
Lo1:1.1.1.1に65001:100、Lo2に65001:200を付与します。
Router1(config)#access-list 1 permit 1.1.1.1
Router1(config)#access-list 2 permit 2.2.2.2
Router1(config)#route-map COM permit 10
Router1(config-route-map)#match ip address 1
Router1(config-route-map)#set community 65001:100
Router1(config-route-map)#exit
Router1(config)#route-map COM permit 20
Router1(config-route-map)#match ip address 2
Router1(config-route-map)#set community 65001:200
Router1(config-route-map)#exit
Router1(config)#route-map COM permit 30
3.コミュニティ値の送付
send-communityコマンドを使用してコミュニティ値をネイバーへアドバタイズします。
Router1(config)#router bgp 65001
Router1(config-router)#neighbor 192.168.12.2 send-community
Router1(config-router)#neighbor 192.168.12.2 route-map COM out
4.BGPセッションのクリアとコミュニティ値確認
設定を反映させるためにBGPセッションをクリアします。
Router1#clear ip bgp * soft out
Router2でRouter1から受信したルート情報を確認するとコミュニティ値が付与されていることが確認できます。

Router2ではip bgp-community new-formatコマンドを使用していないので32ビット形式のフォーマットでコミュニティ値が表示されています。
■受信側の設定
動作があらかじめ決められているウェルノウンコミュニティと違い、独自に設定したコミュニティ値は受信側でも動作の設定が必要になります。
1.コミュニティの形式変更
受信側でも同じくコミュニティ値の形式を変更します。
Router2(config)#ip bgp-community new-format
2.コミュニティリストの作成
Router1から送信されたコミュニティ値に対してコミュニティリストを対応付けます。
Router2(config)#ip community-list 1 permit 65001:100
Router2(config)#ip community-list 2 permit 65001:200
3.ルートマップの作成
作成したコミュニティリストの動作を設定します。
コミュニティ値65001はR3向けのルートマップではアドバタイズしないようにして、コミュニティ値65002はR4向けのルートマップではアドバタイズしないようにしています。
Router2(config)#route-map FROM-R1-TO-R3 deny 10
Router2(config-route-map)#match community 1
Router2(config-route-map)#route-map FROM-R1-TO-R3 permit 20
Router2(config-route-map)#route-map FROM-R1-TO-R4 deny 10
Router2(config-route-map)#match community 2
Router2(config-route-map)#route-map FROM-R1-TO-R4 permit 20
4.BGPピアにルートマップを適用
作成したルートマップをBGPピアに適用します。
Router2(config)#router bgp 65002
Router2(config-router)#neighbor 192.168.23.3 send-community
Router2(config-router)#neighbor 192.168.23.3 route-map FROM-R1-TO-R3 out
Router2(config-router)#neighbor 192.168.24.4 send-community
Router2(config-router)#neighbor 192.168.24.4 route-map FROM-R1-TO-R4 out
5.動作確認
Router2でBGPセッションをクリアします。
Router2#clear ip bgp * soft out
Router3で1.1.1.1、Router4で2.2.2.2に関するルート情報を受信しなくなっています。


オプション設定
(オプション)ルート マップによって指定された標準または拡張コミュニティ リストに一致する着信または発信アップデートのコミュニティ属性からコミュニティを削除します。
Router(config-router)#set comm-list list-num delete