目次
概要
BGPルートに任意のCOMMUNITYアトリビュート(プライベートCOMMUNITY)を付加して、ルート制御を行う設定例です。
Well-known COMMUNITYでは自動的なルートのフィルタが可能ですが、その影響範囲が限定的です。COMMUNITYを付加するASと実際にフィルタするASの間に他のASが含まれている場合、Well-known COMMUNITYではフィルタできません。また、Well-known COMMUNITYではフィルタ以外の動作もできません。
離れたAS間でルートフィルタや他のアトリビュートのセットなどの制御を行うためにプライベートCOMMUNITYを利用します。
ネットワーク構成
次のネットワーク構成でプライベートCOMMUNITYを利用したルート制御を行います。
ルート制御の内容と付加するCOMMUNITY
この図のAS1とAS300で次のようにルートを制御します。
- 111.1.1.0/24と150.1.0.0/16はAS200へ送信しない
- 100.1.1.0/24にはMED 10を付加してAS200へ送信する
- 100.1.2.0/24にはAS300を追加でプリペンドしてAS200へ送信する
- 100.1.3.0/24には追加のCOMMUNITY 10:3を付加してAS200へ送信する
ルートを制御するためにISP1でCOMMUNITYを付加します。付加するCOMMUNITYは自由に決められます。今回は下記の表ように各ルートにCOMMUNITYを付加します。
BGPルート | 付加するCOMMUNITY |
111.1.1.0/24 | 1:1000 |
150.1.0.0/16 | 1:1000 |
100.1.1.0/24 | 1:1 |
100.1.2.0/24 | 1:2 |
100.1.3.0/24 | 1:3 |
プライベートCOMMUNITYの設定と動作の確認
ISP1 BGPルートにCOMMUNITYを付加
COMMUNITYによってルートをグループ化するので、同じ制御を行いたいルートには同じCOMMUNITYを付加します。今回は、111.1.1.0/24と150.1.0.0/16は同じ制御を行うため同じ値のCOMMUNITYを付加します。それ以外の3つのルートはそれぞれ異なる制御なので、個別にCOMMUNITYを付加します。
ISP1でのCOMMUNITY付加の設定は次の通りです。
ISP1 COMMUNITY付加の設定
ip bgp-community new-format ! access-list 1 permit 111.11.1.0 access-list 1 permit 150.1.0.0 access-list 10 permit 100.1.1.0 access-list 20 permit 100.1.2.0 access-list 30 permit 100.1.3.0 ! route-map COMMUNITY2 permit 10 match ip address 1 set community 1:1000 ! route-map COMMUNITY2 permit 20 match ip address 10 set community 1:1 ! route-map COMMUNITY2 permit 30 match ip address 20 set community 1:2 ! route-map COMMUNITY2 permit 40 match ip address 30 set community 1:3 ! route-map COMMUNITY permit 1000 ! router bgp 1 neighbor 172.16.1.1 route-map COMMUNITY2 out
今回の設定では、各ルータのネイバーの設定にneighbor send-communityをすでに入れています。実際にCOMMUNITYによる制御を行うR3において、ISP1で付加したCOMMUNITYを確認します。
R3 COMMUNITYの確認
R3#sh ip bgp community 1:1000 ~省略~ Network Next Hop Metric LocPrf Weight Path *> 111.1.1.0/24 1.1.1.1 0 100 1 i *> 150.1.0.0 1.1.1.1 0 100 1 i R3#sh ip bgp community 1:1 ~省略~ Network Next Hop Metric LocPrf Weight Path *> 100.1.1.0/24 1.1.1.1 0 100 1 i R3#sh ip bgp community 1:2 ~省略~ Network Next Hop Metric LocPrf Weight Path *> 100.1.2.0/24 1.1.1.1 0 100 1 i R3#sh ip bgp community 1:3 ~省略~ Network Next Hop Metric LocPrf Weight Path *> 100.1.3.0/24 1.1.1.1 0 100 1 i
R3 COMMUNITYを参照してルートを制御
R3で、付加されているCOMMUNITYを参照してルート制御を行います。そのための設定は次のようになります。
R3 COMMUNITYによるルート制御の設定
ip community-list 1 permit 1:1000 ip community-list 2 permit 1:1 ip community-list 3 permit 1:2 ip community-list 4 permit 1:3 ! route-map COMMUNITY_ACTION deny 10 match community 1 route-map COMMUNITY_ACTION permit 20 match community 2 set metric 10 route-map COMMUNITY_ACTION permit 30 match community 3 set as-path prepend 300 route-map COMMUNITY_ACTION permit 40 match community 4 set community 10:3 additive route-map COMMUNITY_ACTION permit 1000 ! router bgp 300 neighbor 2.2.2.2 route-map COMMUNITY_ACTION out
この設定について、もう少し詳しく解説します。まず、付加されているCOMMUNITYを参照するためのコミュニティリストを作成しています。
コミュニティリストの作成
ip community-list 1 permit 1:1000 ip community-list 2 permit 1:1 ip community-list 3 permit 1:2 ip community-list 4 permit 1:3
コミュニティリストをルートマップのmatch条件で指定することで、ルートに付加されているCOMMUNITYの値を参照した制御が可能です。
ルートマップ「COMMUNITY_ACTION」で最初に決めた実際のルート制御を設定しています。まず、シーケンス10ではルートのフィルタです。1:1000(コミュニティリスト1)が付加されているルートはdenyでフィルタします。
route-map COMMUNITY_ACTION deny 10 match community 1
シーケンス20では1:1(コミュニティリスト2)が付加されているルートにMED 10を付加して送信しています。
route-map COMMUNITY_ACTION permit 20 match community 2 set metric 10
シーケンス30は1:2(コミュニティリスト3)が付加されているルートに対して追加のAS_PATHプリペンドを行っています。
route-map COMMUNITY_ACTION permit 30 match community 3 set as-path prepend 300
シーケンス40は1:3(コミュニティリスト4)が付加されているルートに対して追加のCOMMUNITY 10:3を付加しています。additiveのオプションがないと、COMMUNITY値が書き換わってしまうので注意してください。
route-map COMMUNITY_ACTION permit 40 match community 4 set community 10:3 additive
また、シーケンス1000はそのほかのルートをすべてpermitするためのものです。
route-map COMMUNITY_ACTION permit 1000
今回考えている構成では、扱っているルートが全部で6つしかなく、これまでのシーケンスで処理されているのでシーケンス1000は不要です。ですが、実際の環境では、その他のたくさんのルートがあることがほとんどです。それらを送信するためにシーケンス1000が必要です。
COMMUNITYによるルート制御の確認
R2で実際のBGPテーブルを確認しましょう。
R2 BGPテーブル
R2#show ip bgp BGP table version is 18, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 100.1.1.0/24 3.3.3.3 10 0 300 100 1 i *> 100.1.2.0/24 3.3.3.3 0 300 300 100 1 i *> 100.1.3.0/24 3.3.3.3 0 300 100 1 i R2#show ip bgp 100.1.1.0 BGP routing table entry for 100.1.1.0/24, version 16 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 300 100 1 3.3.3.3 (metric 2) from 3.3.3.3 (100.100.1.3) Origin IGP, metric 10, localpref 100, valid, external, best Community: 1:1 R2#show ip bgp 100.1.2.0 BGP routing table entry for 100.1.2.0/24, version 18 Paths: (1 available, best #1, table Default-IP-Routing-Table) Flag: 0x820 Not advertised to any peer 300 300 100 1 3.3.3.3 (metric 2) from 3.3.3.3 (100.100.1.3) Origin IGP, localpref 100, valid, external, best Community: 1:2 R2#show ip bgp 100.1.3.0 BGP routing table entry for 100.1.3.0/24, version 17 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 300 100 1 3.3.3.3 (metric 2) from 3.3.3.3 (100.100.1.3) Origin IGP, localpref 100, valid, external, best Community: 1:3 10:3
R2のBGPテーブルをみると、意図したとおりにルート制御ができていることがわかります。このようにCOMMUNITYを利用すれば、離れたAS間で何らかの条件でルートをグループ化してさまざまな制御を行うことが可能になります。
BGPの仕組み
- BGPの概要 ~AS間でルート情報を交換~
- BGPの動作
- BGPの基本設定と確認コマンド
- BGPピアグループ(Peer Group) ~ネイバーの設定をまとめよう~
- BGPネイバーの状態
- BGPコンフェデレーションの設定
- BGPコンフェデレーションの設定例
- BGPネイバー認証
- BGP Well Known Mandatory アトリビュート -ORIGIN/AS_PATH/NEXT_HOP-
- 図解!BGPベストパス選択アルゴリズム
- BGP 基本的な設定についての演習[Cisco]
- BGPの基本的な設定についての演習 ~トラブルシュート~
- BGP KEEPALIVEタイマ/ホールドタイムの設定
- BGPルート 最小送信間隔の設定
- BGPルートダンプニング
- マルチホーム – インターネット接続の冗長化 –
- マルチホームAS BGPルートフィルタのポイント
- マルチホームAS ベストパス選択のポイント
- マルチホームAS IGPとBGPの連携のポイント
- マルチホームAS BGPの設定例
- IP-VPNでのBGPの利用 設定例
- BGPルートフィルタの種類
- BGPルートフィルタ -ディストリビュートリスト-
- BGPルートフィルタ -ディストリビュートリスト設定例-
- BGPルートフィルタ -プレフィクスリスト-
- BGPルートフィルタ -プレフィクスリスト設定例-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)設定例-
- BGPルートフィルタ -ルートマップ(route-map)-
- BGPルートフィルタ -ルートマップ(route-map)設定例-
- BGP neighbor allowas-inコマンド
- BGP neighbor as-overrideコマンド
- BGPルート RIB Failure
- BGPルート アドミニストレイティブディスタンスの制御
- BGPルートの負荷分散
- BGPルート 条件付き生成
- BGPルート 条件付きアドバタイズ
- BGP ルート集約 自動集約
- BGPルート集約 networkコマンドによる集約
- BGPルート集約 networkコマンドによる集約 設定例
- BGP ルート集約 aggregate-addressコマンドによる集約
- aggregate-addressコマンドのオプション summary-only
- aggregate-addressコマンドのオプション attribute-map
- aggregate-addressコマンドのオプション as-set
- aggregate-addressコマンドのオプション advertise-map
- aggregate-addressコマンド as-set/attribute-map/advertise-map 設定例
- BGP選択型集約の概要
- BGP選択型集約 suppress-map
- BGP選択型集約 unsuppress-map
- BGP 選択型集約 suppress-map/unsuppress-map 設定例
- BGP local-as ~ネイバーに他のASのように見せる~
- BGP neighbor remove-private-ASコマンド
- bgp fast external-fallover
- BGP プレフィクス数の制限
- BGP COMMUNITYアトリビュートの使い方
- BGP Well-known COMMUNITYのルートフィルタ設定例
- BGP プライベートCOMMUNITYによるルート制御の設定例
- [演習]BGP応用 Part1:BGP基本設定
- [演習]BGP応用 Part2:ルート集約
- [演習]BGP応用 Part3:ポリシーベースルーティング
- [演習]BGP応用 Part4:トラブルシューティング
- BGP 設定ミスの切り分けと修正 Part1
- BGP 設定ミスの切り分けと修正 Part2
- BGP 設定ミスの切り分けと修正 Part3
- BGP 設定ミスの切り分けと修正 Part4
- BGP 設定ミスの切り分けと修正 Part5
- BGP 設定ミスの切り分けと修正 Part6
- BGP 設定ミスの切り分けと修正 Part7
- IPv6 BGPの設定例 Part1
- IPv6 BGPの設定例 Part2
- 2021年10月4日 Facebookに何が起こったか?
- IPv4 BGPネイバーでのIPv6プレフィックスの交換