Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGPルートの優先度設定

BGPルートの優先順位付けについて

BGPは、現在最も広く使用されているルーティングプロトコルの1つであり、ネットワーク層到達可能性情報(NLRI)だけでなく、多くの種類のVPN到達可能性情報を伝送していますが、このプロトコルがBGPアップデートメッセージにおける情報の順序を指定していないことは注目すべき点です。この決定は実装に委ねられています。

大規模なシステムでは、BGPはシステム間でルーティング情報を交換するのにかなりの時間がかかる場合があります。これは、BGPの起動時や ルートの更新 操作時、および グレースフルリスタートを支援する場合に特に当てはまります。処理が必要な大量の情報を処理するために、BGPルート処理はキューを使用して行われます。アウトバウンド・ルートは、処理のために出力キューに入れられます。BGPルートの優先順位付けは、ユーザーがBGP更新メッセージに決定的に優先順位を付けることができる手段として、Junos OSリリース16.1で導入されました。BGPルートの優先順位付けは、出力キューで厳密に動作するプロセスであり、BGPピアルーターに送信される情報の順序付けに役立ちます。

デフォルト設定では、つまり、優先度をオーバーライドする output-queue-priority 設定またはポリシーが存在しない場合、ルーティングプロトコルプロセス(rpd)は、ルーティング情報ベース(RIB)ごとに、BGPルートを出力キューにエンキューします。RIBは、ルーティングテーブルとも呼ばれ、inet.0などの特定のアドレスファミリーとvrf.inet.0などのルーティングインスタンステーブルの両方に対応します。出力キューの処理中、BGP更新コードは、空ではない出力キューを持つ次のRIBに進む前に、現在のRIBの出力キューをフラッシュします。

注:
  • 理論的に可能性があったとしても、ルートを自動的に優先する試みはありません。したがって、個々のルートの優先順位付けは完全にユーザーに任されます。

  • ピアグループのBGPルート優先度が変更された場合、BGPピアセッションはリセットされます。

BGPルート優先度設定のユースケース

表1は 、ルート優先度設定の恩恵を受けるルートの種類と、その恩恵を受ける理由を示しています。これらのタイプのルートの例も含まれています。特定の大規模環境内でこれらのルートに優先順位を付けることで、ルーターは重要なルート変更に迅速に対応できます。

表1: BGPルート優先度設定の使用事例

ルートまたは更新タイプ

注記

例文

BGPネクストホップを即時転送ネクストホップに解決するために使用されるプレフィックス

これらのプレフィックスの変更は、できるだけ早く行う必要があります。

  • ホスト ルート

  • 再帰的解決要件の一部であるプレフィックス

トンネルエンドポイントに使用されるルート

GREやMPLSなどのトンネルエンドポイントは、BGPネクストホップとしてよく使用されます。

BGPラベル付きユニキャストルート

プロトコル機能の動作に不可欠なルートタイプ

一部のVPNプロトコルでは、特定のルートタイプを使用して、プロトコル内の時間的制約のある変更をトリガーします。これらのルートの変更は、できるだけ早く行う必要があります。

  • MVPNソースアクティブ自動検出(タイプ5)

  • マルチホームVPLSサイト

サービスプロバイダのインフラルート

これらのルートは、サービスプロバイダがビジネスを行う能力にとって不可欠です。正確で最新のルートがなければ、サービスプロバイダは一部のサービスを提供できない可能性があります。

  • 社内管理ネットワーク

  • ネットワーク運用のプレフィックス

  • DNSリソース

ネットワークトポロジーの変更

単純なルートの更新よりも優先順位を付ける必要があります。

  • ネットワークに新しいルーターが追加されました

  • ネットワークから削除されたルーター

BGPルート優先度設定のプロパティ

Junos OS の BGP ルートの優先度設定は、ユーザーが設定可能なトークン メカニズムによって処理される 17 個の優先順位付け(番号付き)出力キューのセットを使用して実装されます。このセクションでは、出力キューの優先順位付け、トークン システムの操作、キューへのルートの割り当てについて説明します。

優先順位付けされた出力キュー

表2は 、優先順位付けシステム内で利用可能な出力キューとその機能を示しています。優先度設定システムは、従来の低、中、高の優先度で機能し、1が最も低い優先度、16が最も高い優先度です。

表2:優先順位付けされた出力キュー

キュー

機能

迅速化

これは、優先度が最も高い出力キューです。このクラスのルートは、出力キューをフラッシュする間、出力キュー処理の一部が保証されます。このキューには番号がなく、設定では名前で参照されます。

1(最低優先度)

これは、優先度が最も低い出力キューです。これはデフォルトの優先度キューであり、自動プロトコル決定またはユーザーポリシーからの明示的なキュー割り当てがないルートがデフォルトでこのキューに配置されることを意味します。ルート更新メッセージは、デフォルトでこのキューに配置されます。

2 - 16(低 - 高優先度)

これらの出力キューの優先度は、最も低い優先度(2)から最も高い優先度(16)までの範囲です。ユーザーポリシーまたはBGPピア設定に基づいてルートが割り当てられます。優先度の高い出力キュー内のルートは、優先度の低いキュー内のルートをプリエンプトできます。

キューへのルートの割り当て

さまざまなキューへのルートの割り当ては、BGPエクスポートポリシーの設定と割り当てによって実行できます。つまり、ルート優先度は、各 BGPピアグループだけでなく、BGPピアグループ内の特定のネイバー設定でも異なる可能性があります。ポリシーステートメントのアクション部分を使用して、キューにルートを割り当てることもできます。ポリシーステートメントのアクションによるキューへのルートの割り当ては、BGP設定による割り当てを上書きします。

ルートがキューに割り当てられている場合

優先順位付けされたルートは、ルート処理中にのみそれぞれのキューに追加されます。これは通常、次の条件下で発生します。

  • 確立されたBGPネイバーからルートを受信した場合。

  • 再設定中やピアの初期確立中など、ルーティングテーブルのウォーク中。

ルーティングテーブルウォークは、システムの内部ルーティングテーブルの順序に基づいて、テーブル内で順次ルーティングテーブルを処理します。たとえば、 inet.0inet6.0などです。この内部順序は事前に決定されており、運用担当者が変更することはできません。

順序の後半で処理されたルーティングテーブルに優先度の高いルートが存在する場合、これらのルートは、プロセスの早い段階で遭遇した優先度の低いルートの後にキューに追加されることがあります。

ワークトークンメカニズム

トークンは、BGP更新メッセージを作成する作業に対応します。すべてのキューには、バケットに格納されているトークンが割り当てられます。特定のバケット内のトークン数は、ユーザーが設定できます。このようにして、ユーザーは、自分のルートを希望する割合で提供することを許可するポリシーを作成できます。優先度スケジューラの設定は、 [edit protocols bgp] 階層レベルでBGP内でグローバルに実行されます。デフォルトでは、すべての優先度キューのバケットに少なくとも 1 つのトークンがあり、誤って構成された優先度が枯渇しないようにします。

キューの優先度と公平性について

BGPルート優先度設定で使用されるスキームは、公平性と優先度という2つの要素に焦点を当てています。

  • 公平性とは、特定のキューに実行する作業がある場合、他のキューがある時点で何らかの作業を完了することが保証されることを意味します。各キューの実行が許可される作業量は、各優先度に割り当てられたトークンの数によって決まります。

  • 優先順位とは、競合する仕事があり、公平性が確保されている場合、常により重要な仕事を選択することを意味します。

例えば、低、中、高の3つの優先度クラスを想定します。これらは、それぞれキュー1、2、3に割り当てることができます。あるいは、キュー 3、6、および 9 に割り当てることもできます。公平を期すために、優先度の高いものが利用可能な作業の 50%、中程度が 35%、低いものが残りの 15% を取得するという決定の場合、トークンは 50 から高、35 から中、15 から低として割り当てることができます。または、トークンを5から高、4から中、2から低として割り当てることができます。17のキューのいずれかに1から100までの値を割り当てることができます。すべてのキュー内のトークンの合計数に対する 1 つのキュー内のトークン数の比率は、各キューで実行される作業の割合を示します。

優先順位は、作業がキューに表示されているときに、作業スケジューラによってトークンが別のキューで消費される処理中である場合に最も重要です。 表3は 、この例の出発点を示しています。

表3:キューとトークン

優先キュー(キュー番号)

キューに割り当てられたトークン数

キューに残っているトークン数

キュー内のエントリー数

高 (9)

50

50

0

ミディアム (6)

35

15

5000

低 (3)

15

15

10000

作業スケジューラーが中キュー (キュー番号 6) を処理していて、20 個のトークンを消費したと仮定すると、中キューの残りの項目に 15 個のトークンが残り、優先度の低いキューには 15 個のトークンが残っています。作業スケジューラの次回の実行前に 5 つの項目が優先キューに到着した場合、優先キューにはまだ 50 個のトークンが残っているため、これらの 5 つの項目が最初に送信されます。

キューサービスの手順

キューサービスの手順は、各グループが独自のトークンバケットを維持し、BGPピアグループごとに動作します。

  • 各優先度のトークンバケットは、設定されたトークン数またはデフォルトの1でフルに開始します。

  • BGP更新を開始するためにルートエントリーがキューから取得されるたびに、そのキューからトークンが差し引かれます。

  • 優先キューにはトークンがありますが、ルート パッキング ルールに従って、他のすべてのキュー エントリーが優先キューから引き出されます。

  • エントリーは、優先度が最も高いキューから取得されます。つまり、キュー・サービス・メカニズムの実行の間に優先度の高いキューにエントリーが追加され、その優先度の高いキューで使用可能なトークンがある場合、優先度の高いキュー内の新しいエントリーが最初に送信され、優先度の低いキューのエントリーがプリエンプトされます。新しいエントリが到着したときに優先度の高いキューに使用可能な作業トークンがない場合、新しいエントリは次のトークン更新が終わるまで送信されません。

  • トークンは、すべての優先キューが処理された後(どのキューにもエントリーが残っていない)か、すべてのトークンが使い果たされたときに更新されます。

例:BGP出力優先度スケジューラとグローバルアドレスファミリー優先度の設定

この例では、システム全体の BGP ルート優先度スケジューラを構成およびテストする方法を示します。

要件

この例では、以下のハードウェアおよびソフトウェアコンポーネントを使用しています。

  • Junos OSリリース16.1以降を実行するMXシリーズルーター(R1)

BGPルート優先順位付けスケジューラを設定する前に、BGPプロトコルがルーターで実行されていることを確認します。

概要

BGPルート優先度スケジューラは、ルート優先度付けシステムの17個の出力キュー内で実行される作業量を制御するために使用されます。システムは、作業トークンが割り当てられているルーティングインスタンスごとに、17の優先順位付けされた出力キューのセットを使用します。17 の優先順位付けされた出力キュー(1-16 および優先)すべてに、デフォルトで 1 つのトークンが割り当てられています。17 個のキューのそれぞれに 1 から 100 までの任意の数のトークンを割り当てることができます。トークンをキューに割り当てることで、キュー内のルートで実行される作業量のバランスを取ることができます。さらに、高、中、低優先度キューイングのデフォルト設定は、各キーワードを特定の番号付き出力キューに割り当てることで構成できます。この例では、17の優先度キューそれぞれに異なる数のワークトークンを設定し、また、inet ユニキャストルートのグローバル出力優先度を設定し、グローバル優先度設定を上書きするようにいくつかの BGP グループを設定することで継承を実証します。

設定

  • 17個の出力キューのそれぞれに update-tokens を割り当てます。

  • デフォルトの highmedium、および low 優先度キューとして使用する番号付きキューを指定します。

  • inet unicastルートのグローバル出力優先度を設定します。

  • グループのオーバーライド機能を表示するtest1という名前のBGPグループを設定します。

  • グローバル継承を表示するtest2という名前のBGPグループを設定します。

CLIクイックコンフィグレーション

この例をすばやく設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー アンド ペーストします。

個々の出力優先度キューの設定

ステップバイステップの手順

次の例では、設定階層のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。

  1. 優先順位付けされた 17 個の出力キューのそれぞれに更新トークンを割り当てます

高、中、低優先度のルート更新に使用するデフォルトキューの設定

ステップバイステップの手順

結果

設定を確認するには、動作モードから show bgp output-scheduler コマンドを発行します。

ルートファミリーのグローバル出力優先度の設定

手順

ステップバイステップの手順
  1. inet unicastルートのグローバルoutput-queue-priorityを設定します。

test1という名前のBGPグループを設定します

手順

ステップバイステップの手順
  1. グループ test1 を設定して、グローバル出力優先度を上書きし、グループを上書きするネイバーを1つ含め、グループをオーバーライドしないネイバーを1つ含めます。

test2という名前のBGPグループを設定します

ステップバイステップの手順
  1. グローバルデフォルトを受け入れるようにBGPグループ test2 を設定します。

検証

BGP出力スケジューラ設定の検証

目的

BGP出力スケジューラの設定を確認するには、動作モードから show bgp output-scheduler コマンドを発行します。

アクション

意味

出力は、出力スケジューラ設定が各出力キューに適切な数のトークンを適用することに成功し、優先度の高い、中、低いキーワードが適切な出力キューに割り当てられたことを示しています。

グループ設定、グループオーバーライド、ネイバーオーバーライドの検証

目的

設定されたグループがグループのオーバーライド、ネイバーのオーバーライド、継承を実証していることを確認するには、運用モードから show bgp group group-name コマンドを発行します。

アクション
意味

出力は、ピア224.223.2.2の出力キューの優先度が7、ルート更新の優先度が8、撤退の優先度が優先されていることを示しています。ネイバー 224.223.1.1 の出力キューの優先度は 4 で、ルート更新の優先度は 6 であり、撤退優先度はファミリー inet unicastのデフォルト設定(3)です。

グローバル優先度設定からの継承の検証

目的

グローバルBGPルート優先度設定を上書きするように構成されていないグループを確認するには、運用レベルで show bgp group group-name コマンドを発行します。

アクション
意味

出力は、test2グループ内のinet unicastルートのデフォルトのルート優先度がグローバル設定と一致していることを示しています。

例:BGPルート優先度設定を使用したルーティングテーブルコンバージェンスの制御

次の例では、inet unicastルートBGP前にinet labeled-unicastルートが収束できるように、ルートの優先順位を設定します。

要件

この例では、以下のハードウェアおよびソフトウェアコンポーネントを使用しています。

  • この例では、Junos OS リリース 16.1 以降を実行する MX シリーズ ルーター(R1)について説明します。

  • R1との内部BGPピアとして設定された2番目のルーター(R2)。

  • R1 のルーティングテーブルにデータを入力するために使用される BGP ルートリフレクタ(RR)。この例では、ルートリフレクタを設定しません。

概要

BGPルート優先順位付け機能は、ルーター内のアウトバウンドBGP更新メッセージに優先順位を付けることができるように設計されています。BGPルート優先順位付けを使用することで、ユーザーは、GREやMPLSトンネルのエンドポイント変更などのより重要なBGPルート更新をより、ルートの更新などの重要度の低いBGPルートの更新よりも先に送信するようにすることができます。

この例では、R2へのinet labeled-unicastルート更新をinet unicastルート更新よりも高い優先度として扱うようにR1を設定します。これを行うには、R2 ルーターが、ピアルーター R1 からの inet unicast ルートと inet labeled-unicast ルートの両方を受け入れるように設定します。次に、ルートリフレクタからR1上のinet.0ルーティングテーブルを入力し、インポートを使用してそのテーブルの一部rib-grouplabeled-unicastinet.3テーブルにインポートします。ルートが R1 でキューイングされているため、inet.3 RIB のルートが inet.0 RIB の残りのルートよりも先にフラッシュされているかどうかを観察することで、動作を検証できます。

BGPルートの優先度の設定

R2をR1のBGPピアとして設定します。

R1の場合:

  • ルーターR2をルーターR1のピアとして設定します。

  • ルートリフレクタからインターネットルートを取得するために使用するリフレクタという名前のBGPグループを作成します。

  • ラベル付きユニキャストトラフィックを優先度の高い出力キューに割り当てるために使用する、internal という名前の BGP グループを作成します。

  • リフレクタから受信したルートをインポートするRIBグループを作成します。

  • inet.0 RIBのどの部分をRIBグループにインポートするかを決定するポリシーを作成します。

CLIクイックコンフィグレーション

この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。

ルーターR2

ルーターR1

手順

ステップバイステップの手順

次の例では、設定階層のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。

R2を設定するには:

  1. internal という名前の BGP グループを設定します。

ステップバイステップの手順

R1を設定するには:

  1. RR からルートを受信する reflector という名前の BGP グループを設定します。

  2. 内部という名前の BGP グループを設定します。

  3. into3という名前のRIBグループを設定します。

  4. match-longという名前のルーティングポリシーを設定します

  5. match-allという名前のルーティングポリシーを設定します

検証

ネイバーの更新に適切な優先度が設定されていることの確認

目的

ルート更新が適切なキューに配置されていること、およびキューが更新されていることを確認します。

アクション

BGPネイバー 192.0.2.2 のキューに格納されているルート更新を確認するには、動作モードから show bgp neighbor output-queue 192.0.2.2 コマンドを発行します。出力は、inet-ユニキャストルートがinetラベル付きユニキャストルートよりも先にアドバタイズされることを示しています。

意味

show bgp neighbor output-queue 192.0.2.2からの出力は、ラベル付けされたユニキャストルート更新が優先度2の出力キューに配置され、優先度1の出力キューにあるユニキャストルート更新の前に優先度2の出力キューが空になっていることを示しています。