隣接ルータとのBGPピアの確立は、最終的に確立が終了するまでにいくつかの段階を経て行われます。
下図がBGPの状態遷移を表した図です。
最終的な確立状態をEstablishedといいます。
BGP接続のための最初の段階。
この状態ではBGP接続開始のタイミングを待っています。管理者がBGPの接続の開始を行うとルータはTCP接続を開始した後、 Connect状態へ移行します。もしこのときにエラーが発生するとIdleに戻ります。
TCP接続の完了を待っている状態です。TCP接続が完了すると接続リトライタイマをクリアしOPENメッセージを送信して、OpenSent状態へ移行します。
もし、TCP接続に失敗すると接続リトライタイマをセットしてActive状態へ移行します。
接続リトライタイマのタイムアウトが発生すると接続リトライタイマを再スタートさせて、再度TCP接続を開始します。
その他のイベントが起きるとIdle状態に戻ります。
TCP接続を開始して、ピアを張ろうとします。TCP接続が完了すると接続リトライタイマをクリアしOPENメッセージを送信して、OpenSent状態へ移行します。
また、この状態では相手のピアからのTCP接続が開始するのを待っています。
通常状態がConnectやActiveの状態のままである場合はTCP接続に問題がある場合が多いようです。
相手からのOPENメッセージを待っている状態です。OPENメッセージを受信すると全てのフィールドの正常性を確認します。
そこでエラーが見つかった場合はNOTIFICATIONメッセージを送信し、Idle状態に戻ってしまいます。
エラーが無ければKEEPALIVEメッセージを送信し、KEEPALIVEタイマをリセットします。ここで互いのHOLDタイマを確認し、小さい方の値にセットされます。
もし、HOLDタイマが"0"にセットされていれば、KEEPALIVEタイマ、HOLDタイマ共に開始されません。
また相手のAS番号のフィールドを確認して自AS番号と同じであれば内部BGP、異なるAS番号であれば外部BGPと認識します。
もし、TCP接続が切断されたらActive状態に戻ります。
その他HOLDタイマの時間切れが起きたら、HOLDタイマの時間切れのエラーコードとともにNOTIFICATIONメッセージを送信し、Idle状態に戻ってしまいます。
相手からのKEEPALIVEメッセージあるいはNOTIFICATIONメッセージを待っている状態です。
相手からKEEPALIVEメッセージを受信したらEstablished状態に移行します。
もしKEEPALIVEメッセージを受信する前にHOLDタイマの時間切れが起きたら、HOLDタイマの時間切れのエラーコードとともにNOTIFICATIONメッセージを送信し、Idle状態に戻ってしまいます。
NOTIFICATIONメッセージを受信した場合も、Idle状態に戻ります。
その他何らかのエラーが発生した場合も同様に、エラーコードとともにNOTIFICATIONメッセージを送信し、Idle状態に戻ってしまいます。
BGPの接続が確立されている状態です。
この状態になって始めて、相手とUPDATE、KEEPALIVE、NOTIFICATIONメッセージを交換することが出来ます。
もしKEEPALIVEメッセージを受信する前にHOLDタイマの時間切れが起きたら、HOLDタイマの時間切れのエラーコードとともにNOTIFICATIONメッセージを送信し、Idle状態に戻ってしまいます。
NOTIFICATIONメッセージを受信した場合も、Idle状態に戻ります。
その他何らかのエラーが発生した場合も同様に、エラーコードとともにNOTIFICATIONメッセージを送信し、Idle状態に戻ってしまいます。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓