内部 BGP 機能の設定法
次のセクションには任意の内部 BGP(iBGP)設定作業があります。
• ルーティング ドメイン コンフェデレーションの設定(任意)
• ルート リフレクタの設定(任意)
• BGP タイマーの調整(任意)
• 削除された MED を最も条件の悪いパスと見なすようにルータを設定(任意)
• MED が副自律システム パスからパスを選択すると見なすようにルータを設定(任意)
• コンフェデレーションのパスの選択に MED を使用するようにルータを設定(任意)
• ルート ダンプニングの設定(任意)
ルーティング ドメイン コンフェデレーションの設定
内部 BGP(iBGP)メッシュを削減する方法の 1 つとして、ある自律システムを複数の副自律システムに分割し、単一のコンフェデレーションにグループ化することがあげられます。外部からは、このコンフェデレーションは単一の自律システムであるかのように見えます。それぞれの自律システムはそれ自体内で完全メッシュ化され、同一のコンフェデレーションにある他の自律システムとの接続をいくつか持っています。他の自律システムのピアに external BGP(eBGP; 外部 BGP)セッションがある場合でも、iBGP ピアであるかのようにルーティング情報を交換します。特に、ネクストホップ、Multi_Exit_Discriminator(MED)アトリビュート、およびローカル プリファレンス情報は保持されます。この機能により、自律システムすべてに対して単一の Interior Gateway Protocol(IGP)を保持することができます。
BGP コンフェデレーションを設定するには、コンフェデレーション ID を指定する必要があります。自律システムのグループは、外部からはコンフェデレーション ID を自律システム番号として持つ単一の自律システムのように見えます。BGP コンフェデレーション ID を設定するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp confederation identifier as-number |
BGP コンフェデレーションを設定します。 |
コンフェデレーション内の他の自律システムから特別な eBGP としてネイバーを処理するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp confederation peers as-number [as-number] |
コンフェデレーションに属する自律システムを指定します。 |
iBGP メッシュを削減する他の方法についてはルート リフレクタの設定を参照してください。
ルート リフレクタの設定
BGP を使用するには、iBGP スピーカーすべてが完全メッシュ化されている必要があります。ただし、iBGP スピーカーの数が多い場合、この要件はうまくスケーリングできません。コンフェデレーションを設定せずに iBGP メッシュを減らす別の方法として、ルート リフレクタの設定があります。
図 1 に、3 つの iBGP スピーカー(ルータ A、B、C)を持つ、単純な iBGP 設定の例を示します。ルート リフレクタがない場合、外部ネイバーからルータ A がルートを受信すると、ルータ B および C にもアドバタイズする必要があります。ルータ B および C は、iBGP が学習したルートを他の iBGP スピーカーに再アドバタイズしません。その理由は、これらのルータは内部のネイバーから学習したルートを他の内部ネイバーに渡さないからです。こうして、ルーティング情報のループを回避します。
図 1 完全メッシュ化された 3 つの iBGP スピーカー
ルート リフレクタがある場合、学習したルートをネイバーに渡す方法があるため、すべての iBGP スピーカーが完全メッシュ化されている必要はありません。このモデルでは、iBGP が学習したルートを一連の iBGP ネイバーに渡す役割を持つルート リフレクタとして、1 つの iBGP ピアが設定されます。図 2 では、ルータ B はルート リフレクタとして設定されています。ルータ A からアドバタイズされたルートをルート リフレクタが受信すると、ルータ C にアドバタイズします。逆の場合も同じです。このスキームにより、ルータ A とルータ C 間の iBGP セッションは不要になります。
図 2 ルート リフレクタのある単純な BGP モデル
ルート リフレクタの内部ピアは、次の 2 種類のグループに分けられます。クライアントのピア、および自律システム(非クライアント ピア)の他のルータすべてです。ルート リフレクタは、この 2 種類のグループ間のルートを反映します。ルート リフレクタおよびそのクライアントのピアは、 クラスタ を形成します。非クライアント ピアは互いに完全メッシュ化されている必要がありますが、クライアントのピアは、完全メッシュ化されている必要はありません。クラスタ内のクライアントは、クラスタ外の iBGP スピーカーとは通信しません。
図 3 に、より複雑なルート リフレクタのスキームを示します。ルータ A は、ルータ B、C、および D を持つクラスタのルート リフレクタです。ルータ E、F、および G は完全メッシュ化された、非クライアント ルータです。
図 3 より複雑な BGP ルート リフレクタのモデル
ルート リフレクタがアドバタイズされたルートを受信すると、ネイバーによって次のようなアクションを取ります。
• 外部 BGP スピーカーからのルートは、すべてのクライアントおよび非クライアント ピアにアドバタイズされます。
• 非クライアント ピアからのルートは、すべてのクライアントにアドバタイズされます。
• クライアントからのルートは、すべてのクライアントおよび非クライアント ピアにアドバタイズされます。したがって、そのクライアントは完全メッシュ化されている必要はありません。
ルート リフレクタおよびそのクライアントを設定するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# neighbor { ip-address | peer-group-name } route-reflector-client |
ローカル ルータを BGP ルート リフレクタとして、指定されたネイバーをクライアントとして、それぞれ設定します。 |
ルート リフレクタ対応の BGP スピーカーとともに、ルート リフレクタの概念を理解しない BGP スピーカーを併用することもできます。これらは、クライアントまたは非クライアント グループのメンバとなることが可能で、旧 BGP モデルからルート リフレクタ モデルへ、簡単に順次移行することができます。最初に、ルート リフレクタおよびいくつかのクライアントを持つ単一のクラスタを作成することができます。他のすべての iBGP スピーカーはルート リフレクタに対して非クライアント ピアとすることができ、クラスタを作成して徐々に追加していくことができます。
自律システムは複数のルート リフレクタを持つことができます。ルート リフレクタは、他のルート リフレクタを他の iBGP スピーカーと同様に扱います。ルート リフレクタは、他のルート リフレクタをクライアント グループまたは非クライアント グループに含むように設定できます。単純な設定では、バックボーンを多数のクラスタに分割することができます。各ルート リフレクタは、非クライアント ピアとして他のルート リフレクタとともに設定されます(このため、すべてのルート リフレクタは完全メッシュ化されます)。クライアントは、所属するクラスタのルート リフレクタとだけ、iBGP セッションを維持するように設定されます。
通常、クライアントのクラスタには、1 つのルート リフレクタがあります。その場合、クラスタはルート リフレクタのルータ ID で識別されます。冗長性を向上させ、シングル ポイント障害を避けるために、クラスタは複数のルート リフレクタを含むことがあります。この場合、クラスタ内のすべてのルート リフレクタに 4 バイトのクラスタ ID を設定し、ルート リフレクタが同一クラスタ内のルート リフレクタからのアップデートを識別できるようにする必要があります。クラスタの役割を果たすルート リフレクタはすべて完全メッシュ化され、同一のクライアントおよび非クライアント ピアのセットを持っている必要があります。
クラスタが複数のルート リフレクタを持つ場合は、次のコマンドをルータ コンフィギュレーション モードで使用して、クラスタ ID を設定します。
|
|
Router(config-router)# bgp cluster-id cluster-id |
クラスタ ID の設定 |
show ip bgp コマンドを使用して、送信元 ID およびクラスタ リストのアトリビュートを表示します。
デフォルトでは、ルート リフレクタのクライアントは完全メッシュ化されている必要はなく、クライアントからのルートは他のクライアントに反映されます。ただし、クライアントが完全メッシュ化されている場合は、ルート リフレクタはルートをクライアントに反映する必要はありません。
クライアントからクライアントへのルートの反映をディセーブルにするには、 no bgp client-to-client reflection コマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# no bgp client-to-client reflection |
クライアントからクライアントへのルート リフレクションをディセーブルにします。 |
iBGP が学習したルートが反映されるため、ルーティング情報がループする場合があります。ルート リフレクタ モデルには、ルーティングがループするのを防ぐために次のようなメカニズムがあります。
• 送信元 ID は、任意で非遷移な BGP アトリビュートです。これは 4 バイトのアトリビュートで、ルート リフレクタにより作成されます。このアトリビュートは、ローカル自律システムのルートの送信元のルータ ID を保持します。したがって、設定ミスによりルーティング情報が送信元に戻ってくる場合、その情報は無視されます。
• クラスタ リストは任意で非遷移な BGP アトリビュートです。これは、ルートが渡したクラスタ ID のシーケンスです。ルート リフレクタがクライアントから非クライアント ピアへのルート、およびその逆を反映するとき、ローカル クラスタ ID をクラスタ リストにアペンドします。クラスタ リストが空の場合は、新規のクラスタ リストが作成されます。このアトリビュートを使用して、ルート リフレクタは、設定ミスによりルーティング情報が同じクラスタにループ バックするかを識別することができます。クラスタ リストにローカル クラスタ ID が見つかった場合、そのアドバタイズメントは無視されます。
• アウトバウンド ルート マップで set 句を使用し、アトリビュートの変更や、場合によってはルーティング ループの作成を行うことができます。この動作を回避する目的で、アウトバウンド ルート マップの set 句は、iBGP ピアに反映されるルートとしては無視されます。
ルート リフレクタでの BGP VPLS オートディスカバリのサポート
Cisco IOS Release 12.2(33)SRE で、ルート リフレクタでの BGP VPLS オートディスカバリのサポートが導入されました。Cisco 7600 および Cisco 7200 シリーズのルータで、BGP ルート リフレクタが拡張され、ルート リフレクタで VPLS を明示的に設定しなくても BGP VPLS プレフィクスを反映できるようになりました。ルート リフレクタは VPLS プレフィクスを他の Provider Edge(PE; プロバイダー エッジ)ルータに反映し、PE が BGP セッションの完全メッシュを持つ必要がないようにします。ネットワーク管理者はルート リフレクタの BGP VPLS アドレス ファミリだけを設定します。
VPLS プレフィクスを反映できるルート リフレクタの設定については、「ルート リフレクタでの BGP VPLS オートディスカバリのサポート例」に例が示されています。VPLS オートディスカバリの詳細については、『 Cisco IOS MPLS Configuration Guide 』の「VPLS Autodiscovery:BGP Based」の章を参照してください。
BGP タイマーの調整
BGP は、ある種のタイマーを使用して、キープアライブ メッセージの送信や、キープアライブ メッセージを受信しなくなってからの間隔(この後 Cisco IOS ソフトウェアがピアのデッドを宣言する)などの周期的なアクティビティを制御しています。デフォルトでは、キープアライブ タイマーは 60 秒で、ホールドタイム タイマーは 180 秒です。これらのタイマーを調整することができます。接続が開始されたとき、BGP はホールドタイムをネイバーとネゴシエーションします。2 つのホールドタイムのうちの小さい方が選択されます。次に、ネゴシエーションされたホールドタイムおよび設定されたキープアライブ時間をもとにキープアライブ タイマーが設定されます。
すべてのネイバーに対して BGP タイマーを調整するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# timers bgp keepalive holdtime |
すべてのネイバーに対して BGP タイマーを調整します。 |
BGP のキープアライブ タイマーおよびホールドタイム タイマーを特定のネイバー用に調整するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# neighbor [ ip-address | peer-group-name ] timers keepalive holdtime |
指定されたピアまたはピア グループに対し、キープアライブまたはホールドタイム タイマー(秒単位)を設定します。 |
(注) 特定のネイバーまたはピア グループに対して設定されたタイマーは、timers bgp ルータ コンフィギュレーション コマンドを使用してすべての BGP ネイバーに対して設定されたタイマーを上書きします。
BGP ネイバーまたはピア グループのタイマーをクリアするには、 neighbor timers コマンドの no 形式を使用します。
削除された MED を最も条件の悪いパスと見なすようにルータを設定
削除された MED アトリビュートを持つパスを最も条件の悪いパスと見なすようにルータを設定するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp bestpath med missing-as-worst |
削除された MED は無限大の値を持つと見なし、MED 値を持たないそのパスを最も条件の悪いパスとするようにルータを設定します。 |
MED が副自律システム パスからパスを選択すると見なすようにルータを設定
パスを選択する際に MED 値を考慮するようにルータを設定するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp bestpath med confed |
コンフェデレーション内の複数の副自律システムによりアドバタイズされた中からパスを選択する際に MED を考慮するようにルータを設定します。 |
MED 間での比較が行われるのは、パスに外部自律システムがない場合に限ります(外部自律システムとは、コンフェデレーションの内部にない自律システムのことです)。パスに外部自律システムがある場合、外部 MED は透過的にコンフェデレーションを通過し、比較は行われません。
次の例では、ルート A をこれらのパスと比較します。
このケースでは、 bgp bestpath med confed ルータ コンフィギュレーション コマンドがイネーブルの場合、パス 1 が選択されます。4 番目のパスの方が MED の値が低いですが、このパスには外部自律システムがあるため、MED を比較する対象にはなりません。
コンフェデレーションのパスの選択に MED を使用するようにルータを設定
コンフェデレーション内の単一の副自律システムによりアドバタイズされたパスの中から最良のパスを選択するために MED を使用するようルータを設定するには、次のコマンドをルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp deterministic med |
同一自律システムの異なるピアによりアドバタイズされたルートから選択する際、MED 変数を比較するようにルータを設定します。 |
(注) bgp always-compare-med ルータ コンフィギュレーション コマンドがイネーブルな場合は、すべてのパスは完全に比較可能で、bgp deterministic med コマンドがイネーブルになっている場合でも、コンフェデレーションの他の自律システムからのパスも比較対象です。
ルート ダンプニングの設定
ルート ダンプニングは、インターネットワーク間でフラッピング ルートの伝搬を最小限に抑えるように設計された BGP 機能です。ルートは、その可用性が繰り返し切り替わる場合にフラッピングすると見なされます。
たとえば、自律システム 1、自律システム 2、および自律システム 3 という 3 つの BGP 自律システムがあるネットワークについて考えてみます。自律システム 1 のネットワーク A へのルートがフラッピングする(利用できなくなる)と仮定します。ルート ダンプニングがない状況では、自律システム 1 から自律システム 2 への eBGP ネイバーは、取り消しメッセージを自律システム 2 に送信します。すると、自律システム 2 の境界ルータは、自律システム 3 に取り消しメッセージを伝播します。ネットワーク A へのルートが再出現したとき、自律システム 1 は自律システム 2 に、自律システム 2 は自律システム 3 にアドバタイズメント メッセージを送信します。ネットワーク A へのルートが利用可能になったり不可になったりを繰り返す場合、取り消しメッセージおよびアドバタイズメント メッセージが多数、送信されます。これは、インターネットに接続されたインターネットワークで問題となります。インターネットのバックボーンでルートのフラッピングが生じると、通常、多くのルートに影響を与えるからです。
(注) ルート ダンプニングがイネーブルになっている場合、BGP ピア リセットにペナルティは適用されません。リセットするとそのルートは取り消されますが、ルート フラップ ダンプニングがイネーブルの場合でも、このインスタンスにペナルティは課されません。
フラッピングの最小化
ルート ダンプニング機能は、次のようにしてフラッピングの問題を最小限に抑えます。再び、ネットワーク A へのルートがフラッピングしたと仮定します。(ルート ダンプニングがイネーブルになっている)自律システム 2 内のルータは、ネットワーク A にペナルティ 1000 を割り当てて、履歴状態に移行させます。自律システム 2 内のルータは、引き続きネイバーにルートのステータスをアドバタイズします。ペナルティは累積します。ルート フラップが非常に頻繁に発生し、ペナルティが設定可能な抑制制限を超える場合は、フラップの発生回数に関係なく、ルータはネットワーク A へのルートのアドバタイズを停止します。そのため、ルート ダンプニングが発生します。
ネットワーク A に課されたペナルティは再使用制限に達するまで減衰し、達すると同時にそのルートは再びアドバタイズされます。再使用制限の半分の時点で、ネットワーク A へのルートのダンプニング情報が削除されます。
ルート ダンプニングの用語の概要
ルート ダンプニングについて説明する際には、次の用語が使用されます。
• フラップ:可用性が繰り返し切り替わるルート。
• 履歴状態:一度ルート フラップが発生した後で、そのルートにはペナルティが割り当てられ、履歴状態になります。これは、ルータに履歴情報に基づいた最良パスがないことを意味します。
• ペナルティ:ルート フラップが発生するたびに、別の自律システム内でルート ダンプニングについて設定されているルータは、ルートにペナルティ 1000 を割り当てます。ペナルティは累積します。そのルートのペナルティは、抑制限度を超えるまで BGP ルーティング テーブルに保存されます。抑制限度を超えると、ルート ステートは履歴からダンプに変更されます。
• ダンプ ステート:この状態では、ルート フラップが非常に頻繁に発生したため、ルータはこのルートを BGP ネイバーにアドバタイズしなくなります。
• 抑制限度:ペナルティがこの制限を超えるとルートは抑制されます。デフォルト値は 2000 です。
• 半減期:ルートにペナルティが割り当てられると、半減期期間(デフォルトでは 15 分)後にペナルティは半減されます。ペナルティの減少プロセスは、5 秒ごとに行われます。
• 再使用制限:フラッピング ルートのペナルティが減少し、この再使用制限を下回ると、ルートの抑制は解除されます。つまり、ルートは再び BGP テーブルに追加され、フォワーディングに再び使用されます。デフォルトの再使用制限は 750 です。ルートの抑制解除プロセスは 10 秒ごとに発生します。10 秒ごとに、ルータは、現在抑制が解除されているルートを検索して、アドバタイズします。
• 最大抑制制限:この値は、ルートを抑制できる最大時間です。デフォルト値は半減期の 4 倍です。
iBGP から取得した、自律システムの外部にあるルートはダンプニングされません。このポリシーによって、iBGP ピアが自律システムの外部にあるルートに高いペナルティを設定できなくなります。
ルート ダンプニングのイネーブル
BGP ルート ダンプニングをイネーブルにするには、次のコマンドをアドレス ファミリまたはルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp dampening |
BGP ルート ダンプニングをイネーブルにします。 |
さまざまなダンプニング要素のデフォルト値を変更するには、次のコマンドをアドレス ファミリ モードまたはルータ コンフィギュレーション モードで使用します。
|
|
Router(config-router)# bgp dampening half-life reuse suppress max-suppress [ route-map map-name ] |
ルート ダンプニング要素のデフォルト値を変更します。 |
BGP ルート ダンプニングのモニタリングおよびメンテナンス
フラッピングしているすべてのパスのフラップをモニタできます。ルートの抑制が解除され、少なくとも 1 半減期の間安定すれば、統計情報は削除されます。フラップの統計情報を表示するには、次のコマンドを必要に応じて使用します。
|
|
Router# show ip bgp flap-statistics |
すべてのパスの BGP フラップ統計情報を表示します。 |
Router# show ip bgp flap-statistics regexp regexp |
正規表現に一致するすべてのパスの BGP フラップ統計情報を表示します。 |
Router# show ip bgp flap-statistics filter-list access- list |
フィルタを通過したすべてのパスの BGP フラップ統計情報を表示します。 |
Router# show ip bgp flap-statistics ip- address mask |
単一エントリの BGP フラップ統計情報を表示します。 |
Router# show ip bgp flap-statistics ip- address mask longer-prefix |
さらに限定したエントリの BGP フラップ統計情報を表示します。 |
BGP フラップ統計情報をクリアする(したがってルートがダンプニングされる可能性を減少させる)には、次のコマンドを必要に応じて使用します。
|
|
Router# clear ip bgp flap-statistics |
すべてのルートの BGP フラップ統計情報をクリアします。 |
Router# clear ip bgp flap-statistics regexp regexp |
正規表現に一致するすべてのパスの BGP フラップ統計情報をクリアします。 |
Router# clear ip bgp flap-statistics filter-list list |
フィルタを通過したすべてのパスの BGP フラップ統計情報をクリアします。 |
Router# clear ip bgp flap-statistics ip- address mask |
単一エントリの BGP フラップ統計情報をクリアします。 |
Router# clear ip bgp ip-address flap-statistics |
ネイバーからのすべてのパスの BGP フラップ統計情報をクリアします。 |
(注) BGP ピアがリセットされたときも、ルートのフラップ統計情報はクリアされます。リセットするとそのルートは取り消されますが、ルート フラップ ダンプニングがイネーブルの場合でも、このインスタンスにペナルティは課されません。
ルートがダンプニングされると、ダンプニングされたルートが抑制解除されるまでの時間を含む BGP ルート ダンプニング情報が表示されます。情報を表示するには、次のコマンドを使用します。
|
|
Router# show ip bgp dampened-paths |
抑制が解除されるまでの時間を含む、ダンプニングされたルートを表示します。 |
次のコマンドを使用して、BGP ダンプニング情報をクリアし、抑制されたルートを抑制解除することができます。
|
|
Router# clear ip bgp dampening [ip- address network- mask ] |
ルート ダンプニング情報をクリアし、抑制されたルートを抑制解除します。 |