目次
概要
BGPで学習したネットワーク(BGPルート)宛てのパケットを負荷分散することもできます。BGPルートの負荷分散を行うための2つの方法について解説します。
BGPルートの負荷分散
OSPFなどIGPではデフォルトで等コストロードバランスが可能です。あるネットワークに対する等コストのルート情報があれば、複数のルートをルーティングテーブルに登録して負荷分散が可能です。BGPでも負荷分散は可能です。主な方法として、次の2つあります。
- NEXT_HOPのIPアドレスへのパケットが負荷分散されるようにする
- ベストパス以外のBGPルートもルーティングテーブルに載せるようにする(maximum-paths)
この2つのBGPルートの負荷分散の方法について解説します。
NEXT_HOPのIPアドレスへの負荷分散
BGPで学習したルート情報のネクストホップは、NEXT_HOPアトリビュートのIPアドレスです。BGPのルート情報でパケットをルーティングするとき、NEXT_HOPアトリビュートのIPアドレスにパケットを転送するために、ルーティングテーブルを再検索します。
そこで、NEXT_HOPアトリビュートのIPアドレスへのルーティングで負荷分散されるようにすれば、BGPルートでの負荷分散が可能です。
この図は、NEXT_HOPのIPアドレスへの負荷分散の例を表しています。R1とR2がお互いのループバックインタフェースのIPアドレスでネイバーを確立しています。
R1はR2からBGPで100.2.2.0/24のルートを学習しルーティングテーブルに登録しています。そのネクストホップは、2.2.2.2です。2.2.2.2へパケットをルーティングするためのルートをOSPFで学習していて、等コストロードバランスができるようになっています。
R1に100.2.2.0/24あてのパケットがやってくると、BGPルート情報にマッチします。そのネクストホップアドレスが2.2.2.2です。ルータは、2.2.2.2に転送するためにルーティングテーブルを再検索します。2.2.2.2へ転送するためのルートは、等コストロードバランスができるようになっているので、結果的に100.2.2.0/24へのルーティングが2つのリンクで負荷分散できるようになります。
このような負荷分散は、IBGPネイバーから学習したルートでもEBGPネイバーから学習したルートでも同じです。
maximum-paths
BGPでは、基本的にベストパスのルート情報のみをルーティングテーブルに載せます。maximum-pathsコマンドによってベストパス以外のルート情報もルーティングテーブルに載せて、負荷分散できるようになります。
maximum-pathsコマンドで複数のBGPルートをルーティングテーブルに登録するためには、各ルートのWEIGHT、LOCAL_PREFERENCE、MED、AS_PATH、ORIGINなどのアトリビュートがすべて同じである必要があります。BGPのアトリビュートは、IGPでのメトリックに相当するので、やはり等コストロードバランスと考えることもできます。
maximum-pathsコマンドの構文は次の通りです。
BGP maximum-pathsコマンド
(config)#router bgp <AS>
(config-rouer)#maximum-paths {1-6}
<AS>: AS番号
{1-6}: ルーティングテーブルに載せるルートの数
maximum-pathsの設定例
図のネットワーク構成において、R3でmaximum-pathsコマンドの動作について確認します。
maximum-pathsコマンドを設定する前の各ルータのBGPの設定は次の通りです。
R1 BGP設定
router bgp 1 no synchronization bgp log-neighbor-changes network 172.16.1.0 mask 255.255.255.0 neighbor 3.3.3.3 remote-as 100 neighbor 3.3.3.3 ebgp-multihop 255 neighbor 3.3.3.3 update-source Loopback0 no auto-summary
R2 BGP設定
router bgp 1 no synchronization bgp log-neighbor-changes network 172.16.1.0 mask 255.255.255.0 neighbor 3.3.3.3 remote-as 100 neighbor 3.3.3.3 ebgp-multihop 255 neighbor 3.3.3.3 update-source Loopback0 no auto-summary
R3 BGP設定
router bgp 100 no synchronization bgp log-neighbor-changes neighbor 1.1.1.1 remote-as 1 neighbor 1.1.1.1 ebgp-multihop 255 neighbor 1.1.1.1 update-source Loopback0 neighbor 2.2.2.2 remote-as 1 neighbor 2.2.2.2 ebgp-multihop 255 neighbor 2.2.2.2 update-source Loopback0 no auto-summary
また、R3のBGPテーブルおよびルーティングテーブルは次の通りです。
R3 BGPテーブル、ルーティングテーブル
R3#show ip bgp ~省略~ Network Next Hop Metric LocPrf Weight Path * 172.16.1.0/24 2.2.2.2 0 0 1 i *> 1.1.1.1 0 0 1 i R3#show ip bgp 172.16.1.0 BGP routing table entry for 172.16.1.0/24, version 2 Paths: (2 available, best #2, table Default-IP-Routing-Table) Advertised to non peer-group peers: 2.2.2.2 1 2.2.2.2 (metric 2) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, external 1 1.1.1.1 (metric 2) from 1.1.1.1 (1.1.1.1) Origin IGP, metric 0, localpref 100, valid, external, best R3#show ip route ~省略~ Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/2] via 192.168.13.1, 00:05:26, FastEthernet0/0 C 192.168.13.0/24 is directly connected, FastEthernet0/0 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 192.168.23.2, 00:05:26, FastEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 172.16.0.0/24 is subnetted, 1 subnets B 172.16.1.0 [20/0] via 1.1.1.1, 00:04:28 C 192.168.23.0/24 is directly connected, FastEthernet0/1
R3ではR1から受信したルートがベストパスになっています。これはR1のルータIDがR2のルータIDよりも小さいからです。そして、ベストパスであるR1から受信したルートのみがルーティングテーブルに登録されています。
この状態から、R3でmaximum-pathsコマンドの設定を行います。
R3 maximum-pathsコマンド
router bgp 100 maximum-paths 2
maximum-pathsコマンド設定後、R3のBGPテーブルおよびルーティングテーブルは次のように変化します。
R3 maximum-pathsコマンド設定後のBGPテーブル、ルーティングテーブル
R3#show ip bgp ~省略~ Network Next Hop Metric LocPrf Weight Path * 172.16.1.0/24 2.2.2.2 0 0 1 i *> 1.1.1.1 0 0 1 i R3#show ip bgp 172.16.1.0 BGP routing table entry for 172.16.1.0/24, version 2 Paths: (2 available, best #2, table Default-IP-Routing-Table) Multipath: eBGP Advertised to non peer-group peers: 2.2.2.2 1 2.2.2.2 (metric 2) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, external, multipath 1 1.1.1.1 (metric 2) from 1.1.1.1 (1.1.1.1) Origin IGP, metric 0, localpref 100, valid, external, multipath, best R3#show ip route ~省略~ Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/2] via 192.168.13.1, 00:13:42, FastEthernet0/0 C 192.168.13.0/24 is directly connected, FastEthernet0/0 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 192.168.23.2, 00:13:42, FastEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 172.16.0.0/24 is subnetted, 1 subnets B 172.16.1.0 [20/0] via 2.2.2.2, 00:00:54 [20/0] via 1.1.1.1, 00:00:54 C 192.168.23.0/24 is directly connected, FastEthernet0/1
maximum-pathsコマンドを設定しても、ベストパスはやはり1つのみ決まります。そして、ベストパス以外でもAS_PATH、MED、LOCAL_PREFERENCE、WEIGHT、ORIGINが同じであればルーティングテーブルに載せられるようになります。
次に、maximu-pathsコマンドが機能しない場合も見ておきましょう。R3でR1から受信するルートのMEDアトリビュートを変更します。
R3 R1から受信するルートのアトリビュートを変更
route-map TEST permit 10 set metric 10 ! router bgp 100 neighbor 1.1.1.1 route-map TEST in
R1から受信するBGPルートのMEDを変更したあと、BGPテーブルおよびルーティングテーブルは次のようになります。
R3 BGPテーブル、ルーティングテーブル (アトリビュート変更後)
R3#show ip bgp ~省略~ Network Next Hop Metric LocPrf Weight Path *> 172.16.1.0/24 2.2.2.2 0 0 1 i * 1.1.1.1 10 0 1 i R3#show ip bgp 172.16.1.0 BGP routing table entry for 172.16.1.0/24, version 3 Paths: (2 available, best #1, table Default-IP-Routing-Table) Multipath: eBGP Flag: 0x800 Advertised to non peer-group peers: 1.1.1.1 1 2.2.2.2 (metric 2) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, external, best 1 1.1.1.1 (metric 2) from 1.1.1.1 (1.1.1.1) Origin IGP, metric 10, localpref 100, valid, external R3#show ip route ~省略~ Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/2] via 192.168.13.1, 00:26:50, FastEthernet0/0 C 192.168.13.0/24 is directly connected, FastEthernet0/0 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 192.168.23.2, 00:26:50, FastEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 172.16.0.0/24 is subnetted, 1 subnets B 172.16.1.0 [20/0] via 2.2.2.2, 00:00:13 C 192.168.23.0/24 is directly connected, FastEthernet0/1
このようにアトリビュートを変更すると、maximum-pathsコマンドを設定していてもベストパス以外はルーティングテーブルに登録されなくなります。
まとめ
ポイント
- BGPルートの負荷分散を行うには、主に次の方法があります。
- NEXT_HOPのIPアドレスへのパケットが負荷分散されるようにする
- ベストパス以外のBGPルートもルーティングテーブルに載せるようにする(maximum-paths)
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プレフィックスの交換