IP : IP ルーティング

BGP で最適パスを選択するアルゴリズム

2009 年 4 月 15 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2012 年 5 月 21 日) | フィードバック

目次


概要

Border Gateway Protocol(BGP; ボーダーゲートウェイ プロトコル)ルータは、通常は同じ宛先へのパスを複数受信します。BGP の最適パス アルゴリズムは、IP ルーティング テーブルに格納し、トラフィック転送に使用する最適なパスを決めるものです。



前提条件

要件

このドキュメントに関する特別な要件はありません。



使用するコンポーネント

このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。



表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。



ルータでパスが無視される理由

特定のプレフィクスについてルータで受信されるすべてのパスがリストに並んでいると仮定します。このリストは show ip bgp longer-prefixes コマンドの出力に類するものです。この場合、パスの中には最適パスの候補と見なされないものがあります。そのようなパスには通常、show ip bgp longer-prefixes コマンドの出力中に有効なフラグがありません。ルータでは、次の状況にあるパスは無視されます。

  • show ip bgp longer-prefixes の出力で not synchronized とマーキングされているパス

    BGP 同期がイネーブルになっている場合、内部 BGP(iBGP)パスが有効なパスと見なされるためには、IP ルーティング テーブル内にプレフィクスの一致するパスが必要です。Cisco IOS(R) ソフトウェアでは、デフォルトで BGP 同期がイネーブルになっています。一致するルートを Open Shortest Path First(OSPF)隣接ルータから学習した場合、その OSPF ルータの ID と、iBGP 隣接ルータの BGP ルータ ID とが必ず一致します。ほとんどのユーザでは、no synchronization BGP サブコマンドを使用して同期化をディセーブルにする方が選択されます。

    注:Cisco IOS ソフトウェア リリース 12.2(8)T 以降では、同期はデフォルトでディセーブルにされています。

  • NEXT_HOP にアクセスできないパス

    パスに関連付けられている NEXT_HOP への Interior Gateway Protocol(IGP)ルートが存在することを確認します。

  • 外部 BGP(eBGP)隣接ルータからのパスで、ローカルの Autonomous System(AS; 自律システム)が AS_PATH に含まれる場合

    このようなパスはルータへの入力時に拒否され、BGP Routing Information Base(RIB; ルーティング情報ベース)にも格納されません。同じことは、アクセス、プレフィクス、AS_PATH、またはコミュニティ リストを介して実装されたルーティング ポリシーによって拒否されるパスについても当てはまります。ただし、隣接ルータに対して soft-reconfiguration inbound を設定している場合は除きます。

  • bgp enforce-first-as をイネーブルにしていて、隣接ルータの AS が AS_SEQUENCE 内の最初の AS 番号として UPDATE に含まれていない

    この場合、ルータによって通知が送信され、セッションが閉じられます。

  • show ip bgp longer-prefixes の出力で (received-only) とマーキングされているパス

    これらのパスはポリシーに基づいて拒否されています。ただし、パスを送信している隣接ルータに対して soft-reconfiguration inbound が設定されているため、これらのパスはルータによって格納されています。



最適パス アルゴリズムの仕組み

BGP は、最初の有効なパスを現在の最適なパスとして割り当てます。そして、有効なパスのリストの最後に達するまで、BGP によって最適なパスとリスト内の次のパスとが比較されます。このリストには最適なパスの決定に使用されるルールが規定されています。

  1. 最も高い WEIGHT を持つパスが優先されます。

    注:  WEIGHT は Cisco 独自のパラメータです。設定されているルータに対してローカルに割り当てられます。

  2. 最も高い LOCAL_PREF を持つパスが優先されます。

    注:LOCAL_PREF のないパスは、bgp default local-preference コマンドで値が設定されているか、デフォルト値 100 と見なされます。

  3. network または aggregate BGP サブコマンドによって、あるいは IGP からの再配布を通じて、ローカルで発信されたパスが優先されます。

    network コマンドや redistribute コマンドによるローカル パスの方が、aggregate-address コマンドによるローカル集約よりも優先されます。

  4. 最短の AS_PATH を持つパスが優先されます。

    注:次の項目にも注意してください。

    • bgp bestpath as-path ignore コマンドが設定されている場合、この手順はスキップされます。

    • AS_SET は、AS がセット内にいくつあっても 1 としてカウントされます。

    • AS_CONFED_SEQUENCE と AS_CONFED_SET は AS_PATH の長さには含まれません。

  5. 最小のオリジン タイプを持つパスが優先されます。

    注:IGP は Exterior Gateway Protocol(EGP)よりも小さく、EGP は INCOMPLETE よりも小さくなります。

  6. 最小の Multi-Exit Discriminator(MED)を持つパスが優先されます。

    注:次の項目にも注意してください。

    • この比較は、2 つのパスに含まれる最初の(隣接する)AS が同じ場合にのみ発生します。コンフェデレーション サブ AS はすべて無視されます。

      つまり、AS_SEQUENCE 内の最初の AS が複数のパスの間で同じ場合にのみ、MED が比較されます。それより前にある AS_CONFED_SEQUENCE はすべて無視されます。

    • bgp always-compare-med がイネーブルになっている場合、すべてのパスについて MED が比較されます。

      このオプションを AS 全体にわたってディセーブルにする必要があります。そうしないと、ルーティング ループが発生する可能性があります。

    • bgp bestpath med-confed が有効な場合、MED は AS_CONFED_SEQUENCE だけで構成されるすべてのパスについて比較されます。

      これらのパスは、ローカル コンフェデレーション内で発信されています。

    • 4,294,967,295 の MED を持つ、隣接ルータから受信したパスの MED は、BGP テーブルに挿入される前に変更されます。MED は 4,294,967,294 に変更されます。

    • bgp bestpath med missing-as-worst をイネーブルにしていない限り、MED なしで受信したパスには 0 の MED が割り当てられます。

      bgp bestpath med missing-as-worst をイネーブルにしている場合、パスには 4,294,967,294 の MED が割り当てられます。

    • bgp deterministic med コマンドもまたこの手順に影響を与える可能性があります。

      例については、『BGP ルータでの最適パスの選択のための Multi-Exit Discriminator 使用方法』を参照してください。

  7. iBGP パスよりも eBGP パスの方が優先されます。

    最適パスが選択される場合は、ステップ 9 に移動してください(マルチパス)。

    注:AS_CONFED_SEQUENCE と AS_CONFED_SET が含まれているパスはコンフェデレーションに対してローカルなものです。したがって、これらのパスは内部パスとして扱われます。Confederation External と Confederation Internal との間には違いはありません。

  8. BGP ネクストホップへの最小の IGP メトリックを持つパスが優先されます。

    最適パスがすでに選択されていても、続けてください。

  9. マルチパスが BGP マルチパス用にルーティング テーブルでインストールされる必要があるかどうか判断します。

    最適パスがまだ選択されていない場合、続けてください。

  10. 両方のパスが外部のときは、先に受信したパス(最も古いパス)が優先されます。

    この手順によってルートフラップが最小限に抑えられます。これは、たとえ次の決定条件(手順 11、12、および 13)に基づいて新しい方のパスが優先ルートになった場合でも、新しい方のパスによって古い方のパスが置き換えられないためです。

    これらの項目のいずれかが該当する場合、この手順をスキップします。

    • bgp best path compare-routerid コマンドをイネーブルにしている場合。

      注:このコマンドは、Cisco IOS ソフトウェア リリース 12.0.11S、12.0.11SC、12.0.11S3、12.1.3、12.1.3AA、12.1.3.T、および 12.1.3.E で導入されています。

    • ルータ ID が複数のパスで同じ場合(ルートを同じルータから受信したため)。

    • 現時点で最適なパスがない場合。

      たとえば、パスを供給している隣接ルータがダウンした場合などには、現時点での最適なパスが失われる可能性があります。

  11. 最小のルータ ID を持つ BGP ルータから送られたルートが優先されます。

    ルータ ID はルータ上で最大の IP アドレスで、ループバック アドレスに割り当てられた優先度が備わっています。また、bgp router-id コマンドを使用して、ルータ ID を手動で設定することもできます。

    注:パスに Route Reflector(RR; ルート リフレクタ)アトリビュートが含まれている場合、パス選択プロセスではルータ ID の代わりに発信元 ID が使用されます。

  12. 発信元 ID またはルータ ID が複数のパスで同じ場合は、最小のクラスタ リスト長を持つパスが優先されます。

    これが発生するのは、BGP RR 環境でだけです。この環境では、クライアントは RR または他のクラスタのクライアントとピア関係を確立できます。このシナリオでは、クライアントは RR 固有の BGP アトリビュートを認識している必要があります。

  13. 最小の隣接ルータ アドレスから送られたパスが優先されます。

    このアドレスは BGP ネイバー設定で使用されている IP アドレスです。このアドレスはローカル ルータとの TCP 接続に使用されるリモート ピアに対応します。



パスを選択するプロセスのカスタマイズ

BGP コスト コミュニティと呼ばれる拡張コミュニティのアトリビュートにより、最適パス選択プロセスをカスタマイズする方法が提供されます。コスト コミュニティを比較するための追加ステップは、「最適パス アルゴリズムの仕組み」セクションで説明されているアルゴリズムに追加されます。この手順は、アルゴリズムで要求される手順(挿入ポイント)の後に挿入されます。最小のコスト値を持つパスが優先されます。

注:次の項目にも注意してください。

  • bgp bestpath cost-community ignore コマンドが発行されている場合、この手順はスキップされます。

  • cost community set 句は、コスト コミュニティ ID 番号(0 〜 255)およびコスト数値(0 〜 4,294,967,295)を使用して設定されます。コスト数値によってパスの優先度が判断されます。最小のコスト数値を持つパスが優先されます。具体的にコスト数値を使用して設定されているわけではないパスには、デフォルトのコスト数値である 2,147,483,647 が割り当てられます。この値は、0 〜 4,294,967,295 の中央値です。次に、これらのパスは最適パス選択プロセスに従って評価されます。2 つのパスが同じコスト数値を使用して設定されている場合、パス選択プロセスでは最も低いコミュニティ ID のパスが優先されます。

  • 現在、実装されているのは IGP_COST 挿入ポイントだけです。つまり、IGP_COST 挿入ポイントのコスト コミュニティだけが、「最適パス アルゴリズムの仕組み」のアルゴリズムの手順 8 の後で考慮されます。



BGP マルチパス

BGP マルチパスでは、同じ宛先への複数の BGP パスの IP ルーティング テーブルに対するインストールが許可されます。これらのパスは、ロード シェアリング用に最適パスとともにテーブル内へインストールされます。BGP マルチパスによる最適パスの選択への影響はありません。たとえば、ルータではアルゴリズムに従って、最適パスとしてパスの 1 つを引き続き指定しており、この最適パスを隣接ルータにアドバタイズします。

BGP マルチパスの機能には、次のものがあります。

  • eBGP マルチパス:maximum-paths n

  • iBGP マルチパス:maximum-paths ibgp n

  • eiBGP マルチパスmaximum-paths eibgp n

マルチパスの候補になるためには、同じ宛先へのパスに、最適パスの特性に等しいこれらの特性が備わっている必要があります。

  • Weight

  • Local preference

  • AS-PATH length

  • Origin

  • MED

  • 次のいずれか。

一部の BGP マルチパス機能により、マルチパス候補に追加の要件が加わりました。

eBGP マルチパスには次の追加要件があります。

  • パスは、外部またはコンフェデレーション外部の近接ルータ(eBGP)から学習されます。

  • BGP ネクストホップへの IGP メトリックは、最適パスの IGP メトリックと等しくなる必要があります。

iBGP マルチパスには次の追加要件があります。

  • パスは、内部の近接ルータ(iBGP)から学習されます。

  • ルータが不等コスト iBGP マルチパスで設定されない限り、BGP ネクストホップへの IGP メトリックは、最適パスの IGP メトリックと等しくなる必要があります。

BGP では、マルチパス候補から最近受信した、n 個までのパスが IP ルーティング テーブルに挿入されます。現在、n の最大値は 6 です。マルチパスがディセーブルになっている場合のデフォルト値は 1 です。

不等コスト ロード バランシングでは、BGP リンク帯域幅も使用できます。

注:同等の next-hop-self は、内部ピアに転送される前に、eBGP マルチパス間で選択される最適パスで実行されます。




関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報




Document ID: 13753