1-1 BGPの概要
BGPは主に
インターネット上に存在する
AS間で経路制御を行うことを目的とした標準プロトコル
として使用されている。ASとは
統一された管理ポリシーに
よって運営されるネットワーク群のこと。一般的には,
一つのプロバイダのネットワークや,企
業
ネットワークがそれに該当する。 ASには,グローバルIPアドレスと同じように,管理された一意の番号が割り振られる。これを
「AS番号」
と呼ぶ。
AS番号は16ビットで,1〜65535の値をとる。ただし,64512〜65534はプライベートAS番号として使
われ,さらに0と65535は予約された番号のため使えない。
AS番号は,IPアドレス同様ICANNという組織が管理している。 ASを相互に接続した世界規模のネットワークが、インターネッ
ト
の姿。各ASは、主に「IX」という接続ポ
イン
トを解して接続されている。 IXとは、各ISPやキャリアなどが直接的に相互接続して、互いのAS間の通信を効率よく
行うための接続ポイントのこと。 ■ パスベクトル方式のプロトコル BGPは、パスベクトル方式のプロトコルと呼ばれている。BGPで伝播される経路情報には、この経路情報が経由してきた一連のAS番号の情報が付加されており、この数がより少ないパスを最適な経路と判断して優先的に採用する。
ディスタンスベクタ型の
RIPでは、宛先に到達するため
に経由するルータの数が少ない経路を最適な経路として判断するが、BGPでは、このルータをASに置き換えるとほぼ同じように考えることが出来る。
1-2 スタブAS(シング
ルホームAS)とマルチホー
ムAS スタブAS(シングルホーム
AS)とは、ただ1つの経路によって他のASに接続されているASをさす。
上位ASに対して複数のパスで接続されて
いる形態がマルチホー
ムAS。 IPアドレスについても、通
常は自AS固有のIPアドレスを取得して運用される。
外部ASから受信している経
路情報を、自ASを経由させてその他の外部ASにアナウンスしているAS
は、トランジットASと呼
ばれる。
トランジットAS内には、
外部AS間で交換されるトラフィックが通過する事になる。 外部ASに対しては、自ASのローカル経路のみアナウンスするASを非トランジット
ASと呼ぶ。非トランジットASでは、
自ASと外部AS間でだけトラフィックが交換される。 2-1 BGPパケットフォーマット BGPで交換されるメッセージには、以下のものがある。
2-2 BGPの基本動作 BGPでは、最初に明示的にルーティング情報を交換する相手と、どのルータとルーティング情報を交換するかということを指定する。 BGPを有効にしているルータはBGPスピーカーと呼ばれ、このBGPスピーカー同士でルート情報を交換するためにネイバー(隣接関係)を形成する。これをBGPピア(BGPネイバー)という。 BGPでは、まずルータどうしが
1対1のTCPコネクションをポート179番で確立
する。それから
互いのルータがサポートしているBGPの基本情報を交換して、問題がなければBGPセッションが確立
される。 BGPレベルでの接続が完了したら、その直後にお互いのルータが学習している全ての経路情報を交換する。
その後は、経路の差分情報が発生した場合には差分情報のみを交換し、また特に経路情報のアップデートがない場合は、定期的にKEEPALIVEパケットを交換して、お互いのルータ
や接続パス上に問題がないかを確認する。 ■【BGPピアの確立フロー】
@TCPコネクションの確立
まずルー
タ同士が1対1のTCPコネクションを確立する。あて先ポート番号は179。ど
ちらのルータから始めてもかまわない。 A基本情報の交換
TCPコネクションが確立されると、ルータは互いにBGPの基本情報(自AS番号、ルータID、BGPVersionなど)を交換する。
この交換にはBGPのOPENメッセー
ジを使う。問題がなければ、BGPレベルでの接続が確立する。
基本情報の内容が正しくなかった場合はTCPセッションは切
断される。
B経路情報の交換(BGPセッション確立直後)
BGPセッションが確立されると、ルータは自分が知っている全てのBGP経路情報を交換する。互いのルータが学習している全てのBGP経路情報をUPDATAメッセージで交換
する。
C生存確認
その後は互いにKeepalive
メッセージを送り、相手ルータの生存確認を行う。ここで一定時間(Holdtime)内に相手ルータからのKeepaliveメッセージを受
信出来なかった場合は、BGPセッションを切断する。
D経路情報の交換(経路情報の更新時)
その後は経路情報が追加
または削除された場合、その追加情報、削除情報のみを相手ルータにUpdateメッセージで交換する。
★【BGPピアのステータス】
BGPピアのステータスは、まずIdle状態から始まり、最終的にEstablished状態になったところで、接続が完了する。
(1)Idle状態
BGPの最初の状態はIdle状態。このときにBGP関連の情報が流入してきてもすべて拒否される。 (2)Connect状態
BGPがネイバーアドレスへのルートを発見し、TCPのコネクション確立完了を待っている状態。
BGPはピア間でコネクションを張るが、その過程での状態。
確立が成功すると、コネクトリトライタイマをクリアし、OPENメッセージをピアに送る。
その後、OpenSent状態に遷移する。
TCPコネクションの確立に失敗した場合は、コネクトリトライタイマをリスタートし、相手のBGPピアから開始されるコネクション確立要求を開始する。
それ以外の場合は、リソースを開放してIdle状態に戻る。 (3)Active状態
BGPがTCPコネクション確立開始でピアを見つけようとする状態。
コネクション確立が成功すると、コネクトリトライタイマをクリアし、OPENメッセージをピアに送り、その後、
OpenSent状態へ移行する。
コネクトリトライタイマがタイムアウトすると、コネクトリトライタイマをリスタートし、Connect状態へ遷移する。
それ以外の場合は、リソースを開放してIdle状態に戻る。
(4)OpenSent状態
この状態では、BGPは相手のピアからのOPENメッセージを待っている状態。
相手からのOPENメッセージを受信すると、メッセージ内の全フィールドについて、正しいかチェックし、エラーやコネクション衝突が起きた場合、NOTIFICATIONメッセージを相手に送り、
Idle状態に遷移する。
OPENメッセージが正常な場合、BGPはKEEPALIVEメッセージを送り、
キープアライブタイマをセットし、その後、OpenConfirm状態に遷移する。
(5)OpenConfirm状態
この状態は、BGPはKEEPALIVEメッセージやNOTIFICATIONメッセージを待っている状態。
自身がKEEPALIVEを受信したら、ホールドタイマーをリスタートしてEstablished状態へ遷移する。
KEEPALIVEを受信する前にホールドタイマがタイムアウトした場合、NOTIFICATIONメッセージを相手に送り、Idle状態へ遷移する。
自身がNOTIFICATIONメッセージを受信した場合、Idle状態へ遷移する。
その他、エラーが発生した場合等も、NOTIFICATIONメッセージを送信してIdle状態に戻る。
(6) Established状態
この状態では、BGPはUPDATEメッセージかKEEPALIVEメッセージをやりとりする。
自身がUPDATEメッセージかKEEPALIVEメッセージを受信すると、ホールドタイマを再開させる。
NOTIFICATIONメッセージを受信すると、Idle状態へ遷移する。
受信したUPDATEメッセージ内にエラーがある場合や、ホールドタイマがタイムアウトした(つまり相手から
メッセージが来なくなった)場合、相手にNOTIFICATIONメッセージを送り、Idle状態に遷移する。
IXでは、主に互
いのASおよびその直接顧客の経路のみを交換し、フルルートやデフォルトルートの交換は行われない
。(IXでは、あくまでも相互接続したAS間の通信のみを行い、IXを介したインターネットへの
接続などは行われない)。
シングルホームや、同一のASに対するマルチ
ホームという接続形態を
とるASでは、主にプライベートAS番号が利用されることが多い。
一方、異なるASに対する
マルチホームという接続形態を取るASでは、主に固有のAS番号を取得することが多い。
1-3 トランジットASと非トランジットAS
StartイベントによってBGPリソース割り当て、コネクトリトライタイマの開始、相手のBGPピアとのTCPコネクション確立開始を行い、Connect状態に遷移する。
もし、エラー等が発生した場合は、最初のIdle状態に戻る。