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ルート処理はキューを使用して行います。アウトバウンド経路は、処理のために出力キューに入れられます。Junos OSリリース16.1では、BGP更新メッセージの優先順位付けをユーザーが決定的に行うことができる手段として、BGPルートの優先順位付けが導入されました。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更新メッセージを作成する作業に対応します。すべてのキューには、バケットに格納されているトークンが割り当てられます。特定のバケット内のトークンの数は、ユーザーが設定できます。このようにして、ユーザーは自分のルートが希望する比率で提供されることを許可するポリシーを作成できます。優先度スケジューラの設定は、BGP内で [edit protocols 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 つのトークンが割り当てられています。1 から 100 までの任意の数のトークンを 17 個のキューのそれぞれに割り当てることができます。キューにトークンを割り当てると、キュー内のルートで実行される作業量のバランスを取ることができます。さらに、高、中、および低の優先順位キューイングのデフォルト設定は、各キーワードを特定の番号付き出力キューに割り当てることによって構成できます。この例では、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 labeled-unicast ルートが inet unicast ルートの前に収束できるように、BGP ルートの優先度を設定する例を示します。

要件

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

  • この例の焦点となる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を設定します。このために、ピアルーターであるR1から inet unicast ルートと inet labeled-unicast ルートの両方を受け入れるようにR2ルーターを設定します。次に、ルートリフレクタからR1のinet.0ルーティングテーブルにデータを入力し、そのテーブルの一部をrib-groupインポートを使用してinet.3labeled-unicastテーブルにインポートします。ルートがR1でキューイングされているので、 inet.3 RIBのルートが inet.0 RIBの残りのルートより先にフラッシュされるかどうかを観察することで、動作を検証できます。

BGPルート優先順位付けの設定

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

R1の場合:

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

  • ルート リフレクタからインターネット ルートを取得するために使用する reflector という名前の 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. internal という名前の BGP グループを設定します

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

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

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

検証

ネイバー更新の適切な優先順位付けの確認

目的

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

アクション

BGPネイバー192.0.2.2のキューに入っているルート更新を表示するには、運用モードから show bgp neighbor output-queue 192.0.2.2 コマンドを発行します

意味

show bgp neighbor output-queue 192.0.2.2 からの出力では、ラベル付きユニキャスト ルート更新がプライオリティ 2 出力キューに配置され、プライオリティ 2 出力キューが、プライオリティ 1 出力キューにあるユニキャスト ルート更新の前にプライオリティ 2 出力キューが空になっていることがわかります。