BGPコミュニティとは?基礎から設定までを徹底解説(Ciscoルータ)

BGP(Border Gateway Protocol)コミュニティは、プレフィックスに付与できるメタデータです。これは、同じポリシーやフィルタリングを複数のプレフィックスに対して効率的に適用するための便利な機能です。BGPコミュニティを利用することで、ルーティングポリシーを柔軟に制御し、特定のプレフィックスに対して異なるルーティング動作を指定できます。

スポンサーリンク

コミュニティの表記形式

コミュニティは「2バイト:2バイト」または「4バイト」の表記形式で表され、通常、前半の2バイトはAS番号(Autonomous System Number)、後半は任意に定義されます。これにより、異なるASや組織間で統一されたポリシーを適用することが可能です。

  • 例: 1:100 の場合、AS 1 のネットワークに対して特定のポリシーを適用する場合などに使用されます。

さらに、特別なコミュニティとして、Well-known community があります。これらは標準的に定義された動作を持つため、よく使われるものを覚えておくと便利です。

  • no-export: このコミュニティが付与されたプレフィックスは、AS外には広告されません。
  • no-advertise: プレフィックスが他のネイバーにも広告されません。
スポンサーリンク

実際のユースケース

BGPコミュニティは、大規模ネットワークやインターネットサービスプロバイダー(ISP)で広く使われており、以下のような状況で役立ちます。

  • ASプリペンド: 特定の経路を他の経路よりも優先度を低くしたい場合に、ASパスに複数の同じAS番号を追加して、経路選択を影響させます。
  • ルートフィルタリング: 特定のコミュニティが付与されたプレフィックスをフィルタリングすることで、不要な経路がルーティングテーブルに追加されるのを防ぎます。


スポンサーリンク

構成例の解説

本記事で紹介するシナリオでは、R1が異なるプレフィックスにコミュニティ値を付与し、R2がそれに基づいてASプリペンドを行います。このように、BGPコミュニティを使うことで、異なるルーティングポリシーを簡潔かつ効率的に適用することができます。

今回の例では、R1からR2を経由して、R3にプレフィックスが広告されます。この際、R2は受け取ったプレフィックスのコミュニティ値に応じて、異なるASプリペンド処理を行います。

プレフィックス     コミュニティ値  
(R1で付与)
R2で実施する処理
1.1.1.1/321:1AS 1をプリペンド
11.11.11.11/321:11AS 1 と AS 11をプリペンド
111.111.111.111/321:111AS 1 と AS 11とAS 111をプリペンド
スポンサーリンク

BGPの基本設定

まず、各ルータで基本的なBGP設定を行います。AS番号、ネイバー、および広告するプレフィックスを設定します。

R1の設定

R1(config)# interface Loopback0 
R1(config-if)#  ip address 1.1.1.1 255.255.255.255 
R1(config)# interface Loopback11 
R1(config-if)#  ip address 11.11.11.11 255.255.255.255 
R1(config)# interface Loopback111 
R1(config-if)#  ip address 111.111.111.111 255.255.255.255 

R1(config)#router bgp 1
R1(config-router)# network 1.1.1.1 mask 255.255.255.255
R1(config-router)# network 11.11.11.11 mask 255.255.255.255
R1(config-router)# network 111.111.111.111 mask 255.255.255.255
R1(config-router)# neighbor 192.168.12.2 remote-as 2

R2の設定

R2(config)#router bgp 2
R2(config-router)# neighbor 192.168.12.1 remote-as 1
R2(config-router)# neighbor 192.168.23.3 remote-as 3

R3の設定

R3(config)#router bgp 3
R3(config-router)# neighbor 192.168.23.2 remote-as 2

 設定が完了すると、ネイバーがアップします。

スポンサーリンク

コミュニティ設定

R1の設定

まず、R1の各プレフィックスにコミュニティを付与します。これにより、R2でのASプリペンド処理をコミュニティに応じて柔軟に制御できます。

ステップ 0: 事前設定

まず、コミュニティを2バイト:2バイト形式で表示するように、「ip bgp-community new-format」を適用します。

R1(config)# ip bgp-community new-format

ステップ 1: プレフィックスリストの設定

各プレフィックスを「ip prefix-list」で定義します。ここでは、R1のループバックインターフェイスに設定されているアドレスに対して、コミュニティを付与する準備を行います。

R1(config)# ip prefix-list LOOPBACK_1 seq 5 permit 1.1.1.1/32
R1(config)# ip prefix-list LOOPBACK_11 seq 5 permit 11.11.11.11/32
R1(config)# ip prefix-list LOOPBACK_111 seq 5 permit 111.111.111.111/32

この設定により、ルートマップを使用して、特定のプレフィックスに対して異なるコミュニティを付与できるようになります。

ステップ 2: コミュニティの付与

プレフィックスリストが定義されたら、それぞれに適切なコミュニティを付与します。これは、BGPルートマップで「set community」コマンドを使って実現します。各プレフィックスにコミュニティをセットするためのルートマップを作成します。

R1(config)# route-map SET-COMMUNITY permit 1
R1(config-route-map)#  match ip address prefix-list LOOPBACK_1
R1(config-route-map)#  set community 1:1
R1(config-route-map)#!
R1(config-route-map)# route-map SET-COMMUNITY permit 11
R1(config-route-map)#  match ip address prefix-list LOOPBACK_11
R1(config-route-map)#  set community 1:11
R1(config-route-map)#!
R1(config-route-map)# route-map SET-COMMUNITY permit 111
R1(config-route-map)#  match ip address prefix-list LOOPBACK_111
R1(config-route-map)#  set community 1:111
R1(config-route-map)#!         
R1(config-route-map)# route-map SET-COMMUNITY permit 1000

このルートマップでは、特定のプレフィックスリストに一致する経路に対して、それぞれ異なるコミュニティ値を付与しています。これにより、後続のルータ(R2)がコミュニティに基づいて異なる処理を実行できるようになります。

ルートマップにはデフォルトで暗黙のdenyがあるため、最後に何も処理しないシーケンス番号1000のルートマップを設定することが推奨されます。これにより、ルートマップに一致しない他のすべてのプレフィックスが正常にネイバーに広告されます。

ステップ 3: コミュニティの広告

R2にコミュニティを広告するには、ネイバーに対して「send-community」コマンドを使用して、コミュニティを含めたBGP経路を送信します。

コミュニティ値を広告するには、ネイバー設定でsend-communityコマンドの追加も必要です。

R1(config)#router bgp 1
R1(config-router)# neighbor 192.168.12.2 send-community
R1(config-router)# neighbor 192.168.12.2 route-map SET-COMMUNITY out

R2の設定

R2は、R1から受信したプレフィックスのコミュニティ値に基づいてASプリペンド処理を行います。これにより、コミュニティに応じた異なる経路選択の優先度を指定することが可能です。コミュニティを2バイト:2バイト形式で表示するように、「ip bgp-community new-format」も適用しておきます。

R2(config)#ip bgp-community new-format

ステップ 1: コミュニティリストの設定

まず、受信するコミュニティ値をリスト化します。

コミュニティ値を定義するため、ip community-listコマンドを使用します。

R2(config)#ip community-list 1 permit 1:1
R2(config)#ip community-list 11 permit 1:11
R2(config)#ip community-list 111 permit 1:111

ステップ 2: ルートマップによる処理設定

次に、受信したプレフィックスのコミュニティ値に基づいてASプリペンド処理を設定します。これにより、特定の経路に対して異なるASパスを追加し、経路の選択順序を制御します。

R2(config)#route-map AS-PREPEND-COMMUNITY permit 1
R2(config-route-map)# match community 1
R2(config-route-map)# set as-path prepend 1
R2(config-route-map)#!
R2(config-route-map)#route-map AS-PREPEND-COMMUNITY permit 11
R2(config-route-map)# match community 11
R2(config-route-map)# set as-path prepend 1 11
R2(config-route-map)#!
R2(config-route-map)#route-map AS-PREPEND-COMMUNITY permit 111
R2(config-route-map)# match community 111
R2(config-route-map)# set as-path prepend 1 11 111
R2(config-route-map)#!
R2(config-route-map)#route-map AS-PREPEND-COMMUNITY permit 1000
R2(config-route-map)#!

ステップ 3: R3へのポリシー適用

R2の設定が完了したら、R3へ広告するプレフィックスに対して、コミュニティに基づくポリシーを適用します。具体的には、R2がR1から受信した各プレフィックスに対し、適切なASプリペンドを行い、それをR3へ広告します。

R2のBGPプロセスで、ネイバーR3に対してルートマップAS-PREPEND-COMMUNITYを適用します。

R2(config)#router bgp 2
R2(config-router)#neighbor 192.168.23.3 route-map AS-PREPEND-COMMUNITY out

ここで指定されるroute-map AS-PREPEND-COMMUNITYは、R1から受信したプレフィックスのコミュニティ値に基づき、ASパスにプリペンド処理を行います。これにより、R2からR3に送信されるルート情報が、ネットワーク全体での経路選択に影響を与えるようになります。ASプリペンドを使用することで、特定の経路を通過させる際の優先度を下げ、他のルートを優先させることが可能です。

ステップ 4: BGPプロセスのリフレッシュ

次に、R2のBGPプロセスを再起動し、新しいポリシーが正しく適用されるようにします。

R2#clear ip bgp *
R2#
%BGP-5-ADJCHANGE: neighbor 192.168.12.1 Down User reset
%BGP_SESSION-5-ADJCHANGE: neighbor 192.168.12.1 IPv4 Unicast topology
 base removed from session  User reset
%BGP-5-ADJCHANGE: neighbor 192.168.23.3 Down User reset
%BGP_SESSION-5-ADJCHANGE: neighbor 192.168.23.3 IPv4 Unicast topology
 base removed from session  User reset

BGPセッションのリフレッシュは、設定変更後に新しいポリシーを有効にするために重要です。clear ip bgp *コマンドは、すべてのBGPネイバーとのセッションを一旦リセットし、再確立します。これにより、新しいルートマップやポリシーが有効になります。

リフレッシュが完了すると、R2のログにBGPネイバーの再確立が表示されます。以下のメッセージは、R2がR1およびR3と再接続されたことを示しています。

%BGP-5-ADJCHANGE: neighbor 192.168.12.1 Up 
%BGP-5-ADJCHANGE: neighbor 192.168.23.3 Up 
R2#
スポンサーリンク

設定の検証と確認

R2でのBGPテーブル確認

R2でコミュニティが正しく付与され、R3に広告されたかどうかを確認するために、各ルータのBGPテーブルを確認します。まず、R2で受信したプレフィックスにコミュニティ値が正しく適用されているかを確認します。

R2#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     11        
  Refresh Epoch 1
  1
    192.168.12.1 from 192.168.12.1 (111.111.111.111)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: 1:1


R2#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 3
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     11        
  Refresh Epoch 1
  1
    192.168.12.1 from 192.168.12.1 (111.111.111.111)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: 1:11

R2#show ip bgp 111.111.111.111 
BGP routing table entry for 111.111.111.111/32, version 4
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     11        
  Refresh Epoch 1
  1
    192.168.12.1 from 192.168.12.1 (111.111.111.111)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: 1:111

これらの出力により、コミュニティ1:1、1:11、1:111がそれぞれのプレフィックスに適用されていることを確認できます。また、R3に対してこれらのプレフィックスが広告される際にASプリペンドが正しく行われているかもチェックします。

R3での経路の確認

次に、R3に対して正しくASプリペンドされた経路が広告されているかを確認します。

R3#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 30
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Refresh Epoch 1
  2 1 1
    192.168.23.2 from 192.168.23.2 (2.2.2.2)
      Origin IGP, localpref 100, valid, external, best

R3#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 31
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Refresh Epoch 1
  2 1 11 1
    192.168.23.2 from 192.168.23.2 (2.2.2.2)
      Origin IGP, localpref 100, valid, external, best

R3#show ip bgp 111.111.111.111
BGP routing table entry for 111.111.111.111/32, version 32
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Refresh Epoch 1
  2 1 11 111 1
    192.168.23.2 from 192.168.23.2 (2.2.2.2)
      Origin IGP, localpref 100, valid, external, best
  • 1.1.1.1/32 の経路では、ASパスに2 1 1が見られ、R2で1回のASプリペンドが適用されています。
  • 11.11.11.11/32 の経路では、ASパスに2 1 11 1が表示され、R2で2回のASプリペンドが適用されています。
  • 111.111.111.111/32 の経路では、ASパスに2 1 11 111 1が見られ、3回のASプリペンドが適用されています。

これにより、期待通りにASプリペンドが機能していることを確認できます。

スポンサーリンク

コミュニティを持たない経路の確認

次に、コミュニティが付与されていない経路(例: 222.222.222.222/32)がどのように広告されているかを確認します。このプレフィックスに対してはASプリペンドは行われず、R1からR3へそのまま広告されます。

R1(config)#interface loopback 222
R1(config-if)#ip address 222.222.222.222 255.255.255.255

R1(config)#router bgp 1
R1(config-router)#network 222.222.222.222 mask 255.255.255.255

R2のBGPテーブルで確認すると、このプレフィックスにはコミュニティ値が付与されていないため、ルートマップのシーケンス1000番が適用され、ASプリペンドが行われていないことが確認できます。

R2#show ip bgp 222.222.222.222
BGP routing table entry for 222.222.222.222/32, version 5
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     11        
  Refresh Epoch 1
  1
    192.168.12.1 from 192.168.12.1 (111.111.111.111)
      Origin IGP, metric 0, localpref 100, valid, external, best
R3#show ip bgp 222.222.222.222
BGP routing table entry for 222.222.222.222/32, version 33
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Refresh Epoch 1
  2 1
    192.168.23.2 from 192.168.23.2 (2.2.2.2)
      Origin IGP, localpref 100, valid, external, best
スポンサーリンク

まとめ

BGPにおけるコミュニティの活用とASプリペンドは、ネットワークの経路選択を高度に制御することができます。今回の設定では、R1で各プレフィックスにコミュニティを付与し、R2でそのコミュニティに基づいてASプリペンドを実施することで、R3に対する経路制御を行いました。さらに、コミュニティが付与されていないプレフィックスにはプリペンドが適用されないことも確認しました。

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント