クイックダウンロード:
BGPリセットは決して些細な出来事ではなく、ルーティングテーブル全体の再交換を強制し、一時的なルーティングのブラックホールを引き起こす可能性があり、大規模ネットワークでは、収束の波及効果が直接の隣接ノードだけでなく、他のピアにも影響を及ぼす可能性があります。
-
ハードリセットではセッションの状態がすべて失われ、ルーティングテーブル全体の交換が必要になります。一方、ソフトリセット(グレースフルリスタートまたはルート更新を使用)では、セッションを切断することなくポリシーの更新が可能です。
-
BGPは設計上、収束が遅いため、リセットが発生すると、ネットワークの規模や構成によっては、数秒から数分間ルートが利用できなくなる可能性があります。
-
ホールドタイマーの期限切れ、ハードウェアの故障、ソフトウェアのバグなどによる予期せぬリセットは最も大きな障害となるため、早期警告の兆候を監視することで、これらがシステム停止に発展するのを防ぐことができます。
-
ポリシー変更の際は、可能な限りソフトリセット(ルートの更新または事前保存されたAdj-RIB)を使用し、ハードリセットは必ずロールバック計画を策定した上で変更期間中にスケジュールしてください。
現代生活に不可欠な多くの活動はインターネットに依存しており、インターネットはボーダーゲートウェイに依存しています。PrBGPは、インターネット上のトラフィックをルーティングするために特別に開発されたルーティングプロトコルです。内部ゲートウェイプロトコル(IGP)は、自律システム(AS)内のルーター間でトラフィックをルーティングします。各ASは、数十台または数百台のルーターの集合で構成されています。対照的に、BGPはパスベクタールーティングプロトコルであり、主にこれらの自律システム間でトラフィックをルーティングするために使用されます。BGPは非常にスケーラブルであり、これは世界規模のインターネット上でルーティングするために必要な特性です。しかしながら、このスケーラビリティには、 BGPの収束が非常に遅いIGPと比較した場合。
この収束速度が一般的に遅いため、予定外または制御不能なBGPリセットは、大規模ネットワーク上で重大な問題を引き起こす可能性があり、その影響は単一のISPの境界をはるかに超える可能性があります。
BGPリセットは、2台のルーター間で確立されたBGPピアリングが何らかの理由で中断された場合に発生します。この記事では、BGPリセット、その原因、潜在的な影響、およびその発生を軽減する方法について解説します。
イントロダクション
BGPリセットがどのように発生し、ネットワークにどのような悪影響を及ぼす可能性があるかを理解することは重要です。これにより、エンジニアはBGPを設計する際に、リセットの発生頻度を最小限に抑え、必要な場合でもネットワークへの影響を最小限に抑えることができます。そこで、以下の質問に簡潔かつ分かりやすい言葉で回答していきます。
- BGPリセットとは何ですか?
- BGPリセットの原因は何ですか?
- BGPリセットが意図せず発生した場合、どのような影響がありますか?
- それらはどのような場合に必要となるのか、また、どのように安全に実施すればよいのか?
BGPリセットへの対処に役立つベストプラクティスと設定例をいくつか見ていきます。
説明
BGPの収束
BGPプロトコルの大規模な拡張性を実現する設計と実装方法そのものが、BGPの収束/再収束速度を極めて遅くする原因となっている。これは多くの人が誤解しているようにBGPの欠点ではなく、設計上の意図によるものだ。再収束が速すぎると、経路のフラッピングや一時的なルーティングループが発生する可能性が高まる。こうした障害は世界規模で影響を及ぼし、数千万人の人々や数千もの企業に影響を与える可能性がある。
ほとんどのネットワークプロトコルと同様に、BGPにも適切な状況下で収束時間を最小限に抑えるための調整方法がありますが、一時的なルーティングの不具合さえも避けるために、これらの調整は細心の注意を払って行う必要があります。
再収束するBGPトポロジーによって引き起こされる混乱に対処する最善の方法は、再収束の原因となる事象を軽減することであると言えるでしょう。言い換えれば、あらゆる手段を講じて安定したBGPトポロジーを維持することです。
意図しないBGP再収束の最も一般的な原因の一つは、2つのルーター間で確立されたBGPピアリングが中断された際に発生するBGPリセットです。そのため、BGPリセットを完全に回避することが理想的です。しかし、BGPリセットが必要となる場合もあります。そのような場合は、ネットワーク全体への影響を最小限に抑えるように、制御された方法で実行する必要があります。
BGP隣接関係とは何ですか?
BGP ルーターは、プレフィックスとルーティング情報を交換する前に、他の BGP ルーターとのネイバー隣接関係またはピアリングを確立します。これらの隣接関係は、さまざまなネイバー隣接状態を経由する特定のプロセスを経て確立されます。このプロセスは、BGP ルーターがこの隣接関係を確立するために経由する状態を示すフロー図で視覚化できます。これは正式には有限状態機械 (FSM) と呼ばれます。詳細については、BGP 状態に関する記事をお読みください。e RPKI では、これらのテクノロジーにより、インターネット ルーティングに対するハイジャックや悪意のある攻撃を軽減するメカニズムが導入されます。

現時点では各状態の意味は重要ではありませんが、この図から、FSMプロセスが非常に複雑で時間のかかるものになり得ることがお分かりいただけるでしょう。プロセスが「確立済み」状態に達すると、BGPピアは隣接しているとみなされ、プレフィックスとルーティング情報の交換を開始します。
BGPリセットとは何ですか?
BGPリセットは、2つのルーター間で確立されたBGPピアリングが何らかの理由で中断された場合に発生します。このような中断が発生した場合:
- 2つのピア間のBGPセッションが切断され、FSMの状態は「アイドル」状態に戻ります。
- BGPネイバーから学習したすべてのプレフィックスは、BGPテーブルとルーティングテーブルから直ちに削除されます。
- 関係するBGPルーターは、新しいBGPセッションを開始しようと試みる。
- 新しいセッションが確立されると、プレフィックスが再度交換され、BGPテーブルとルーティングテーブルにインストールされます。
リセットが発生した後、隣接関係が再確立されるまでの間、これらの隣接ネットワークとの間の接続が途絶え、リモートネットワークは代替経路が利用可能であれば、パケットを別の経路で宛先に再ルーティングする必要があります。ただし、BGPはASとのルーティングのためにIGPにも経路を再配布するため、リセットが発生するとAS内のルーティングパターンにさらに混乱が生じることに注意してください。
BGPリセットの全プロセスには時間がかかり、影響を受けるインターネット領域が広いほど、BGPとIGPルーティングプロトコルの両方が再収束するまでに時間がかかります。しかし、これはプロセスの半分に過ぎません。リセットには、BGPピアリングの再確立も含まれます。
隣接関係が再確立されると、プロセス全体が再び実行され、プレフィックスの交換が開始され、BGPテーブルとルーティングテーブルに登録されます。下流にあるBGPまたはIGPピアも、ルーティングテーブルを再度変更する必要があります。
リセットはルーティングの中断を引き起こし、その影響は安定した正確なルーティング情報に依存するすべてのルーターとネットワークに波及します。これは時間がかかるプロセスであり、多数のデバイスでネットワーク、CPU、メモリのリソースを消費し、影響を受けるネットワーク領域内のトラフィックを中断させます。
BGPリセットの原因は何ですか?
BGPリセットは、以下のいずれかの事象によって発生する可能性があります。
- BGPピア間の接続が失われる
- ピアの1つでBGPパラメータの設定変更を行う
- 管理者によるBGPセッションの手動クリア
接続の喪失
この事象は、BGPピア間の接続を阻害するあらゆるネットワーク障害の結果として発生する可能性があります。例えば、以下のような場合です。
- ケーブルの断線またはリンク障害による接続の完全な喪失
- BGPで使用されるTCPポート179のブロック
- IGPまたは2つのピア間の接続を確立するスタティックルーティングの設定ミス。BGPピアリングの前提条件の1つは、BGPピアがIGPまたはスタティックルーティングを介して相互に到達できることです。
- BGPルーターのハードウェア障害
構成の変更
BGPルーターのベンダーによっては、BGPルーティングポリシー、ルーターID、または特定のインターフェースのIPアドレスを変更すると、即座にリセットが発生する場合があります。
手動BGPリセット
管理者は、新たに設定または変更されたルーティングポリシーを有効にするために、BGPリセットを手動で実行する必要がある場合があります。これは、BGPルーターのCLIで適切なコマンドを発行することで実行できます。後述するように、手動BGPリセットの方法によって、この操作によって発生するネットワーク障害の種類が大きく左右されます。
手動BGPリセットの種類
BGPリセットを適用する必要がある場合は、慎重に行う必要があります。最新のBGPルーターには、リセットの目的を達成しつつ、システムへの影響を最小限に抑えるための機能がいくつか備わっています。リセットが必要な場合、実行できるリセットには3つの種類があります。
ハードリセット
ハードリセットを実行すると、確立済みのTCP接続を含むピアリングセッションが切断され、そのセッションで学習されたすべてのルートがローカルBGPテーブルとルーティングテーブルから削除されます。処理が完了すると、FSMの手順に従って通信が再開され、最終的にピア間のルート交換が再開されます。これは、発生する可能性のある手動リセットの中で最も影響が大きく、時間のかかるものです。
本稿で既に述べたように、ハードリセットはシステム障害を引き起こす可能性があるため、本番ネットワークでは避けるべきです。
ソフトリセット
ソフトリセット(ソフト再構成とも呼ばれる)は、保存されているプレフィックス情報を使用してポリシーと設定の変更を適用し、既存のピアリングセッションを切断することなくBGPを再アクティブ化します。この目的のために保存されている更新情報が使用されるため、この方法はより多くのメモリを使用しますが、ネットワークを中断することなく新しいBGPポリシーを適用できます。
ソフトリセットは、BGPセッションがリセットされたものの、ピアリングのTCPセッションが維持されている場合に有効です。BGPプロセスが失敗し、TCPセッションが終了した場合、保存されていた更新情報が削除され、転送テーブルがクリアされるため、ソフトリセットではメリットがありません。この問題を解決するために、グレースフルリセットを使用します。
グレースフルリセット
グレースフルリセット機能は、ソフトリセット機能よりもさらに一歩進んだ機能です。有効にすると、BGPスピーカーはBGP再起動中に転送状態を保持する能力を表明します。両方のBGPスピーカーがこれをサポートしている場合、TCPセッションが切断されても、再確立されるまで両方のルーターはBGPテーブルを一時的にメモリに保持します。グレースフルリセットについては、以下でさらに詳しく説明します。 RFC 4724.
ダイナミックソフトリセット
ルートリフレッシュとも呼ばれるこの方法は、最も推奨される方法です。ポリシー変更後、ルートリフレッシュが適用されると、ローカルルータはBGPネイバーにすべてのプレフィックスの再送信を要求するメッセージを送信するだけで、一切の中断は発生しません。さらに、ソフトリセットオプションとは異なり、BGPデバイスのメモリを消費することもありません。BGP-4のルートリフレッシュについては、以下で説明します。 RFC2978.
不要なリセットの軽減
制御不能な接続障害(例えば、工事による光ファイバーケーブルの切断など)による予期せぬリセットは、避けられない事態です。このような場合、BGP設定の残りの部分が、可能な限り中断を最小限に抑えつつ迅速に再収束するのに十分であることを確認する必要があります。つまり、十分な代替パスを事前に確保し、堅牢なネットワーク冗長化の原則を採用する必要があるということです。
BGPルーター自体の設定ミス、あるいはBGPルーター間のネットワークインフラストラクチャの設定ミスなど、人為的なミスによる意図しないリセットも、適切なネットワーク変更手順に従えば回避可能です。これらの手順には、メンテナンス期間の遵守、ロールバックポリシーの設定、最悪のシナリオに備えた事前準備された緊急時対応計画の策定などが含まれます。
手動BGPリセットの実行方法
トラフィックを中断することなくBGPルータでBGPリセットを実行する方法の実践的な例を見てみましょう。これらの例では、Cisco IOSルータを使用します。次のネットワークトポロジをご覧ください。

ここでは、R1とR2の間でBGPが設定され、両ルーターがBGPネイバーとなり、R2が両方のループバックネットワークをR1にアドバタイズします。これを実現するために、ルーター1で以下のコマンドを入力します。
R1(config)#router bgp 1
R1(config-router)#neighbor 10.10.10.2 remote-as 2そして、ルーター2には以下のように入力されます。
R2(config)#router bgp 2
R2(config-router)#neighbor 10.10.10.1 remote-as 1
R2(config-router)#network 1.1.1.1 mask 255.255.255.255
R2(config-router)#network 2.2.2.2 mask 255.255.255.255ソフト リセットの実行
Ciscoルータでは、デフォルトではソフトBGPリセット機能は無効になっており、BGPネイバーごとに有効化されます。トポロジー内のR1でこの機能を有効にするには、以下のコマンドを実行します。
R1(config)#router bgp 1
R1(config-router)#neighbor 10.10.10.2 soft-reconfiguration inboundこのコマンドは、soft-reconfiguration inbound キーワードとともに、R1 に対して、R2 から受信したルーティング情報(受信側)を、変更されていない状態(BGP メッセージ受信時に BGP パラメータを調整する可能性のあるルート マップやその他のメカニズムが適用されていない状態)で保存するように指示します。この情報は、隣接ルーティング情報ベース入力テーブル(Adj-RIB-In テーブル)と呼ばれる専用のメモリ構造に保存されます。これは、リセットが発生した際に、情報が失われて再学習する必要がないようにするためです。
この時点で、R1上で必要なBGPルーティングポリシーの変更を行うことができます。
これらの処理が完了したら、ソフトリセットを実行して変更を有効化します。
R1#clear ip bgp 10.10.10.2 soft in今後は、適用されるポリシー変更は、BGPセッションのダウンやルーティングの中断を伴わずに有効になります。
このオプションの欠点は、メモリ使用量が増えることであり、BGPテーブルはかなり大きくなる可能性があるため、メモリ使用量は無視できない。
動的ソフトリセットの実行
ソフトリセットよりも優れた代替手段として動的ソフトリセットがありますが、これは両方のBGPルーターが対応している場合にのみ使用できます。このルート更新機能は、最新のCisco IOSルーターはもちろん、他のほとんどのベンダーのルーターでもデフォルトで有効になっています。
まず、前の例からソフトリセットの設定を削除しましょう。
R1(config)#router bgp 1
R1(config-router)#no neighbor 10.10.10.2 soft-reconfiguration inboundさて、この時点で必要なポリシー変更を行うことができます。変更が完了したら、コンテキストヘルプを使用して、BGPセッションを正しくリセットするために使用すべきコマンドを確認してみましょう。
R1#clear ip bgp 10.10.10.2 ?
all All address families
flap-statistics Clear flap statistic
in Soft reconfig inbound updates
ipv4 Address family
ipv6 Address family
l2vpn Address family
nsap Address family
out Soft reconfig outbound updates
rtfilter Address family
slow Forcefully clear slow-peer status and move it to original
update group
soft Soft reconfig inbound and outbound updates
topology Routing topology instance
vpnv4 Address family
vpnv6 Address family
<cr>赤色でマークされた3つのオプション(in、out、soft)には、ソフト再構成オプションが含まれています。これら3つのオプションはすべて、受信、送信、またはその両方のタイプの更新に焦点を当てて、BGPセッションをソフト再構成するために使用できます。これを受信更新に適用してみましょう。
R1#clear ip bgp 10.10.10.2 inR1には以下のメッセージが表示されます。
R1#
BGP: 10.10.10.2 sending REFRESH_REQ(5) for afi/safi: 1/1このSyslogメッセージは、ソフト再構成を実行するために特別に設計された更新要求がBGPネイバーに送信されたことを示しています。R2にも次のようなSyslogメッセージが表示されます。
R2#
BGP: 10.10.10.1 rcvd REFRESH_REQ for afi/safi: 1/1その結果、トラフィックのルーティングに支障をきたすことなく、新しいポリシーが適用されたプレフィックスの交換が刷新される。
ハードリセットの実行
clear ip bgp コマンドを使用して BGP のハードリセットを実行することはできません。ただし、ピアリングが確立されているインターフェースをシャットダウンしたり、ピアの一方のルーター ID を変更したり、ピアリングの送信元として使用されている IP アドレスを変更したりすることで、間接的にハードリセットを実行できます。これらの操作はいずれも BGP ピアリングを中断させ、結果としてハードリセットを引き起こします。このような BGP リセット操作は、本番環境のネットワークでは絶対に避けるべきです。
結論
BGPリセットは、ネットワーク管理において必要な場合もあれば、ネットワーク障害の結果として発生する場合もあり、そのような場合は何としても回避しなければなりません。BGPは大規模ネットワーク、ISPネットワーク、そしてグローバルネットワークにおいて極めて重要な役割を担っているため、BGPリセットを回避するためのあらゆる予防措置を講じることが不可欠です。リセットが必要な場合は、ネットワークへの影響を最小限に抑えるために、適切な方法で実行してください。
BGPセッションの不安定性を、障害が発生する前に検知する。
LogicMonitorは、BGPセッションの状態、リセットイベント、およびコンバージェンスの健全性を監視し、ネットワークチームに不安定性の早期警告を提供するとともに、リセットがより広範なルーティング障害に発展する前に対応できるようにします。
よくあるご質問
BGPリセットとは何ですか?
BGPリセットとは、BGPピアリングセッションを切断して再確立することです。セッションがリセットされると、そのセッションで交換されたすべてのルーティング情報は破棄され、完全なルーティングテーブル交換によって最初から再学習する必要があります。リセットは、意図的なもの(オペレーターがポリシー変更を適用するためにトリガーするもの)と、意図的でないもの(ハードウェア障害、ソフトウェアバグ、ホールドタイマーの期限切れ、ネットワーク障害など)があります。
ハードリセットとソフトリセットの違いは何ですか?
ハードリセットは、BGP TCPセッションを完全に切断し、すべてのルーティング状態を破棄します。両方のピアはセッションを再確立し、完全なルーティングテーブルを再交換する必要があります。ソフトリセットは、セッションを切断せずにポリシー変更を適用します。受信側のソフトリセットは、BGPルートリフレッシュ機能(RFC 2918)を使用してピアに再アドバタイズを要求します。送信側のソフトリセットは、ローカルに保存されているAdj-RIB-Outデータを使用して、新しいポリシーに基づいてルートを再評価し、再アドバタイズします。
予期せぬBGPセッションのリセットが発生する原因は何ですか?
一般的な原因としては、ホールドタイマーの期限切れ(ネゴシエートされたホールド時間内にKEEPALIVEが受信されない場合。これはCPU使用率の高さ、ネットワークの混雑、ルーティングデーモンの問題などが原因で発生することが多い)、通知メッセージのエラー(機能の不一致、認証の失敗、または不正な更新)、TCPセッションの障害(リンクダウン、MTUの問題、またはネットワークパスの変更)、ルーターまたはラインカードのハードウェア障害、ルーティングデーモンのソフトウェアバグなどが挙げられます。それぞれの原因によって、セッションのエラーカウンターとログに異なる痕跡が残ります。
グレースフルリスタートは、BGPリセットの影響をどのように軽減するのでしょうか?
BGPグレースフルリスタート(RFC 4724)は、再起動中のルータがBGPセッションの再確立中に転送状態を維持できるようにする機能です。隣接ルータは、再起動中のルータから学習したルートを保持し、トラフィックの転送を継続します。これにより、ルートを即座に削除してルーティングブラックホールが発生するのを防ぎます。この機能は、計画的なメンテナンスやソフトウェアの再起動によるトラフィックへの影響を大幅に軽減しますが、予期せぬ障害には対応できません。




