BGP(Border Gateway Protocol)は、インターネットの基盤ともいえる重要なルーティングプロトコルです。しかし、IBGPでは全ルータ間のフルメッシュ接続が必要なため、大規模ネットワークでは構成が複雑になりがちです。そこで有効なのが「BGPコンフェデレーション」。これは、AS(Autonomous System)を複数のサブASに分割することで、IBGPフルメッシュの負担を軽減し、スケーラビリティを高める手法です。
この記事では、Ciscoルータを使ったBGPコンフェデレーションの設定と動作確認手順をステップバイステップで解説します。
BGPコンフェデレーションの設定
概要
BGP(Border Gateway Protocol)のコンフェデレーションは、大規模なAS(Autonomous System)を複数のサブASに分割することで、IBGPフルメッシュの制約を緩和する仕組みです。通常、IBGPのピアリングでは、すべてのルータ間でフルメッシュ接続が必要ですが、コンフェデレーションではASをサブASに分割することで、このピアリングの負担を軽減します。
サブAS間では、EBGPのように見えるものの、実際にはIBGPとして動作します。
- サブASに分割:ASを複数のサブASに分割することで、IBGPのフルメッシュ要件を緩和。
- 内部ではIBGP、外部からはEBGP:サブAS間ではEBGPのように見えるが、実際はIBGPとして動作。
- BGP属性の変化:サブAS間の通信ではconfed-internalやconfed-externalといったBGP属性が適用され、外部ASに対しては通常のAS_PATHで表示される。
主なメリット
- スケーラビリティ向上:BGPピア数の削減により、大規模ネットワークでも効率的な運用が可能。
- 管理の簡略化:サブAS内でのルートリフレクタ使用により、ピアリングの管理がシンプルに。
BGPコンフェデレーションの設定
ここでは、Ciscoルータを用いて、BGPコンフェデレーションを設定する具体的な手順を解説します。設定は、以下のネットワーク構成に基づいて行います:
- サブAS235:ルータR2, R3, R5(ルートリフレクタを使用)
- サブAS6:ルータR6
- 外部AS:AS2356
- IGP:EIGRPを使用し、ループバックアドレスでBGPピアを設定
R5のBGPコンフェデレーション設定
R5は、サブAS235に属し、ルートリフレクタとして動作します。ここでは、R2およびR3とピアリングを設定し、公開ASとしてAS2356を指定します。さらに、ループバックインタフェースを利用してピアを構成します。
R5(config)#router bgp 235 R5(config-router)#bgp confederation identifier 2356 R5(config-router)#neighbor 2.2.2.2 remote-as 235 R5(config-router)#neighbor 2.2.2.2 update-source loopback 0 R5(config-router)#neighbor 2.2.2.2 route-reflector-client R5(config-router)#neighbor 3.3.3.3 remote-as 235 R5(config-router)#neighbor 3.3.3.3 update-source loopback 0 R5(config-router)#neighbor 3.3.3.3 route-reflector-client
R2のBGPコンフェデレーション設定
R2もサブAS235のメンバーであり、R5およびR6とBGPピアリングを構成します。R6とはサブAS6に対してbgp confederation peersでピアリングを指定し、EBGPと同様にebgp-multihopを設定します。
R2(config)#router bgp 235 R2(config-router)#bgp confederation identifier 2356 R2(config-router)#neighbor 5.5.5.5 remote-as 235 R2(config-router)#neighbor 5.5.5.5 update-source loopback 0 R2(config-router)#neighbor 6.6.6.6 remote-as 6 R2(config-router)#neighbor 6.6.6.6 update-source loopback 0 R2(config-router)#neighbor 6.6.6.6 ebgp-multihop R2(config-router)#bgp confederation peers 6 R2(config-router)#neighbor 192.168.12.1 remote-as 1
R3のBGPコンフェデレーション設定
R3はサブAS235に属し、R5と同様にルートリフレクタとして動作します。R5およびR6とBGPピアリングを設定し、公開ASとしてAS2356を指定します。
R3(config)#router bgp 235 R3(config-router)#bgp confederation identifier 2356 R3(config-router)#neighbor 5.5.5.5 remote-as 235 R3(config-router)#neighbor 5.5.5.5 update-source loopback 0 R3(config-router)#neighbor 6.6.6.6 remote-as 6 R3(config-router)#neighbor 6.6.6.6 update-source loopback 0 R3(config-router)#neighbor 6.6.6.6 ebgp-multihop R3(config-router)#bgp confederation peers 6 R3(config-router)#neighbor 192.168.34.4 remote-as 4
R6のBGPコンフェデレーション設定
R6は、サブAS6に属するルータであり、サブAS235に属するR2およびR3とピアリングを行います。R6は、公開ASとしてAS2356を指定し、サブAS235に対してピアリングを設定します。
R6(config)#router bgp 6 R6(config-router)#bgp confederation identifier 2356 R6(config-router)#neighbor 2.2.2.2 remote-as 235 R6(config-router)#neighbor 2.2.2.2 update-source loopback 0 R6(config-router)#neighbor 2.2.2.2 ebgp-multihop R6(config-router)#neighbor 3.3.3.3 remote-as 235 R6(config-router)#neighbor 3.3.3.3 update-source loopback 0 R6(config-router)#neighbor 3.3.3.3 ebgp-multihop R6(config-router)#bgp confederation peers 235
R1とR4のBGP設定
R1とR4は外部ASとして、AS2356とのピアリングを行います。これにより、コンフェデレーション全体が外部ASに対して単一のASとして見えます。
R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.12.2 remote-as 2356
R4(config)#router bgp 4 R4(config-router)#neighbor 192.168.34.3 remote-as 2356
設定のポイント
- ebgp-multihop設定:サブAS間をループバックインタフェースで接続する場合、EBGPと同様にebgp-multihopが必要です。
- bgp confederation identifier:公開AS番号(AS2356)を設定します。
- bgp confederation peers:サブAS間のピアを指定し、内部のサブASとして認識。
動作確認
BGPの動作確認では、R1のループバックアドレス1.1.1.1/32をBGPネットワークにアドバタイズし、他のルータが正しくルートを学習するかを確認します。
R1のルートアドバタイズ
まず、R1のループバック1.1.1.1/32をBGPにアドバタイズします。これにより、ネットワーク内の他のルータがこのルートを学習し始めます。
R1(config)#router bgp 1 R1(config-router)#network 1.1.1.1 mask 255.255.255.255
R2のルート学習の確認
R2がR1から1.1.1.1/32を学習しているかを確認します。この学習が成功すれば、コンフェデレーション内の他のルータにもルートが伝播されます。
R2#sh 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:
9 11
Refresh Epoch 1
1
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
R5とR6でのBGP属性の確認
R5とR6では、1.1.1.1/32のルートにconfed-internalまたはconfed-external属性が付加されていることを確認します。
R5では、1.1.1.1/32に対して、新しい属性 confed-internal が付けられています。これは、同じサブASから学習したルートであることを意味します。
R5#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 Refresh Epoch 1 1, (Received from a RR-client) 192.168.12.1 (metric 307200) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, confed-internal, best rx pathid: 0, tx pathid: 0x0
R6では、1.1.1.1/32に対して、confed-external が付けられています。これは、コンフェデレーション内の違うサブASから学習したルートであることを意味します。注意すべきは、eBGPのような動作をしていますが、Nexthop 192.168.12.1 が変更されないことです。
R6#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 8 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 (235) 1 192.168.12.1 (metric 307200) from 3.3.3.3 (3.3.3.3) Origin IGP, metric 0, localpref 100, valid, confed-external rx pathid: 0, tx pathid: 0 (235) 1 192.168.12.1 (metric 307200) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, confed-external, best rx pathid: 0, tx pathid: 0x0
AS_CONFED_SETの確認
AS_CONFED_SETと呼ばれる新しいBGP属性を使用し、サブASをリストの先頭に( )で追加します。AS-PATHは (235) 1 です。これは、このルートが別のサブAS(235)から来たことを意味します。R2がR6に更新を送信したときに、追加されます。
R3のBGPテーブル 1.1.1.1/32 を確認します。
R3#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 3 Refresh Epoch 1 1 192.168.12.1 (metric 307200) from 5.5.5.5 (5.5.5.5) Origin IGP, metric 0, localpref 100, valid, confed-internal, best Originator: 2.2.2.2, Cluster list: 5.5.5.5 rx pathid: 0, tx pathid: 0x0
R3は1.1.1.1/24をベストパスとして認識していますので、R4(AS4)にアドバタイズします。その際、AS_CONFED_SETでサブAS番号がリスト化されていれば、そのリストは削除され、公開AS(AS2356)に変更されます。
R4#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 6 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 2356 1 192.168.34.3 from 192.168.34.3 (3.3.3.3) Origin IGP, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0
補足情報(ベストパス選択の仕組み)
R6のBGPテーブル1.1.1.1/32を確認してみます。
R6#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 8 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 3.3.3.3 (3.3.3.3) Origin IGP, metric 0, localpref 100, valid, confed-external rx pathid: 0, tx pathid: 0 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, confed-external, best rx pathid: 0, tx pathid: 0x0
R6は、1.1.1.1/32のルートをルータID 2.2.2.2 と3.3.3.3の二箇所からアドバタイズされており、2.2.2.2 からのルートをベストパスとしています。これは、ベストパス選択アルゴリズムより、ルータIDが3.3.3.3より2.2.2.2の方が小さいためです。
R6からR1(1.1.1.1)には、R2を経由して、接続します。
R6#traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.26.2 1 msec 1 msec 1 msec
2 192.168.12.1 2 msec 1 msec 2 msec
ここで、R2のルータIDを222.222.222.222に変更して、ベストパスの選択結果を確認します。
R2(config)#router bgp 235 R2(config-router)#bgp router-id 222.222.222.222
これで、R6上で1.1.1.1/32は、ルータID 3.3.3.3からのルートがベストパスになっています。
R6#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 12 Paths: (2 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 3.3.3.3 (3.3.3.3) Origin IGP, metric 0, localpref 100, valid, confed-external, best rx pathid: 0, tx pathid: 0x0 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 2.2.2.2 (222.222.222.222) Origin IGP, metric 0, localpref 100, valid, confed-external rx pathid: 0, tx pathid: 0
再度、R6からR1(1.1.1.1)への接続を確認すると、変更前と変わらずR2経由となります。
R6#traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.26.2 2 msec 0 msec 1 msec
2 192.168.12.1 2 msec 1 msec 2 msec
これは、ネクストホップ(192.168.12.1)がルータID変更前後で変わらないためです。
ネクストホップ(192.168.12.1)に対して、出力インタフェースを決定し、1.1.1.1に接続します。BGPで学習したルータと通信経路は異なることはよくあります。通信経路は、BGPで学習した経路のネクストホップに対してのIGPの経路に依存します。
まとめ
BGPコンフェデレーションは、大規模ネットワークでのIBGPフルメッシュの制限を緩和し、ネットワークのスケーラビリティを向上させることができます。
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント