BGPネイバーを確立して、ルート情報を交換することができるようになるまで次の6つの状態を遷移します。
・Idle
BGPプロセスの初期状態、ネイバーとのTCP接続のプロセスを開始してConnect状態へ移行する
・Connect
ネイバーとのTCP接続が完了するのを待っている状態。
TCP接続を正常に確立できれば、
BGP OPENメッセージを送信してOpenSent状態に移行する。
もし、TCP接続を確立できなければActive状態に移行する
・Active
ネイバーとのTCPプロセスを開始している状態。
TCP接続が正常に確立されればOPENメッセージを送信してOpenSent状態に移行する。
TCP接続が確立できなければ再びConnect状態に戻る。
ネイバーから予期しないIPアドレスでTCP接続が行われるとActiveの状態のままとなる。
※Active状態にとどまってしまう場合は、設定ミスがほとんどなのでネイバーの設定を確認する。
・OpenSent
OPENメッセージをネイバーに送信しネイバーからのOPENメッセージを待っている状態。
OPENメッセージを受け取ると中身をチェックする。
エラーがあればNOTIFICATIONメッセージを送信しIdle状態に移行する。
エラーがなければKEEPALIVEメッセージを送信してホールドタイムをネゴシエーションする。
また、ネイバーのAS番号からIBGPネイバーかEBGPネイバーを決定し、OpenConfirm状態に移行する。
・OpenConfirm
KEEPALIVEもしくはNOTIFICATIONを待っている状態。
KEEPALIVEメッセージを受け取ればEstablished状態に移行する。
NOTIFICATIONメッセージを受け取ればIdle 状態に移行する。
・Established
BGPネイバーが完全に確立している状態。
Established状態でUPDATEメッセージを交換することができます。
KEEPALIVEもしくはUPDATEを受信するごとにホールドタイムをリセット。
NOTIFICATIONメッセージを受信するとIdle状態に移行。
おおまかな流れを図に描いてみました ↓↓↓