BGP は機器の起動時、及び clear ip bgp * 実施時に一時的に RO(Read-Only) mode となり、この間は peer からの経路学習は行うものの best path の選出は行いません。これは、起動時に複数の BGP peer から並行して経路を学習するような状況で、何度も best path が変わり、そのための処理により負荷が増加するのを防ぐことを目的として実装されております。
これにより、ある程度経路を学習してから best path を選出するというような動作となります。RO mode の間は best path が選出されないため、BGP peer へ経路の update は行いません。
※このドキュメントでは IOS での動作について紹介しています。
Read-Only mode に関する timer には次のものがあります。
- BGP プロセスが起動してから 300 秒(clear ip bgp * 実施時は 60 秒)
- 最初の BGP peer から経路の学習を完了してから 120 秒
- 最初の BGP peer が up してから 70 秒
これらの timer のうち、設定可能なものが2番目のもので、これに対応するのが bgp update-delay コマンドになります。(残りの 2 つは固定で変更ができません)
これらの timer のうち、いずれか一番早いものが expire するか、設定されている全ての BGP peer が up し経路の学習を完了する(=つまり end-of-RIB marker を受信する)と、RW(Read-Write) mode へと移行し、best path の選出及び経路の update を行うようになります。
例えば、複数の BGP peer の設定があり、起動時に一部の BGP peer のみが up するような状況では、最初の BGP peer の up から 70 秒間 RO mode となります。これをより短くしたい場合には、bgp update-delay コマンドを 70 より小さい値に設定することで対応が可能です。
不要な peer の設定が残っているなど、起動時に全ての peer が up しない状況では BGP のコンバージェンスまで予期しない時間がかかってしまうことがございますのでご注意ください。