※本記事は2023年9月時点の内容になります。
はじめに
こんにちは。
今回は、Cisco 機器でBGP障害発生時の経路収束時間を短縮する方法についてご紹介します。
一般的にBGPのコンバージェンスを早めるには、BFDを利用するのが一般的かと思いますが、
今回はbgp update-delayによる方法をご紹介します。
当方もBGP実装機器で筐体障害が発生した際の収束時間短縮の際に、実装しております。
※特にstack構成のスイッチに実装しております
※このブログは中の人の個人的な見解に基づいて運営しております
投稿内容はあくまで参考情報として認識おきください
この記事はこんな方におすすめです!
- Cisco機器(IOS/IOS-XE)でBGP断発生時のコンバージェンスを早めたいと考えている方
- BFD以外の方法を検討されている方
- Cisco機器(IOS/IOS-XE)のBGPの仕様について知りたい方
仕様
IOS/IOS-XEにおけるBGPの仕様について
IOS及びIOS-XEでBGPを動作させている機器では2つのモードが存在しています。
RW(Read-Write) mode・・・ベストパスの選出を行い、経路アップデートを行うモード
RO(Read-Only) mode・・・経路学習は行うものの、ベストパスの選出は行わないモード
※つまりルーティングテーブルにベストパスがエントリーされない仕様となっています。
RO(Read-Only) modeに遷移するトリガーは以下の2つです。
- 機器が起動した際(再起動含む)
- clear ip bgp *を実行した場合
RO(Read-Only) modeには以下のタイマーがあります。
- BGPプロセスが起動してから300秒(clear ip bgp * コマンド投入時は 60秒)
- 初めてBGP peerから経路の学習を完了してから120 秒
- 初めてBGP peerがupしてから70 秒
RO(Read-Only) modeは、機器起動時(またはclear ip bgp *投入時)に、
複数のBGP peer から並行して経路を学習するような状況で、
何度もベストパスが変わることによるフラッピングや、処理プロセス増加に伴う機器への負荷を防ぐことを目的として実装されております。
よって、例えばBGPを実装している機器で筐体障害等で再起動が発生した場合、
該当機は一定時間の間RO(Read-Only) modeにて起動し、その際にBGP peerから一定の経路を学習してから
ベストパスを選出するというような動作を行います。
その際はベストパスへの選出されないため、このRO(Read-Only) modeの時は、
BGP peerから経路を学習する予定の宛先に対して、通信断時間が発生します。
bgp update-delayコマンドについて
bgp update-delayコマンドは、以下のRO(Read-Only) modeの2番目のタイマーを、チューニングできるコマンドです。 ※1番目3番目はチューニング不可
- BGPプロセスが起動してから300秒(clear ip bgp * コマンド投入時は 60秒)
- 初めてBGP peerから経路の学習を完了してから120 秒
- 初めてBGP peerがupしてから70 秒
実際のコマンドは以下になります。
R1(config-router)#bgp update-delay ?
<1-3600> Delay value (seconds)
複数のBGP peerの設定があり、起動時に一部のBGP peerのみが up するような状況では、
最初のBGP peer のupから70秒間 RO mode となります。
これをより短くしたい場合には、bgp update-delay コマンドを70より小さい値に設定することで対応が可能です。
なお、ルータがRO(Read-Only) modeからRW(Read-Write) modeに移行する条件は以下の2点です。
- 上記のタイマーがどれか一つでもexpireしたとき
- ルータに設定されているすべてのBGP peerがupし、経路学習が完了したとき
ルータ起動時に全ての peer が up しない状況では BGP のコンバージェンスまで予期しない時間がかかってしまうことがあります。
結論
bgp update-delay コマンドで、BGP peerから経路の学習を、早期に完了することができれば、経路収束の時間を早められることが可能です。
以下まとめになります
- RO(Read-Only) modeではベストパスの選択が行われない為、経路収束を早めたい場合は早期にRW(Read-Write) modeに移行させる必要がある
- RW(Read-Write) modeに遷移する条件は以下の2つ
- 以下のタイマーがどれか一つでもexpireしたとき
- BGPプロセスが起動してから300秒(clear ip bgp * コマンド投入時は 60秒)
- 初めてBGP peerから経路の学習を完了してから120 秒
- 初めてBGP peerがupしてから70 秒
- ルータに設定されているすべてのBGP peerがupし、経路学習が完了したとき
- 以下のタイマーがどれか一つでもexpireしたとき
- bgp update-delayコマンドにより、上記3つのタイマーで一番早い70秒より早い時間に設定することで、早期にRW(Read-Write) modeに遷移させることが可能