BGP(Border Gateway Protocol)
前回はRIP、OSPFとAS内のルーティングプロトコルであるIGPについて調べたので、今度はAS間のルーティングプロトコルであるEGPの一種のBGPについて調べて自分の理解を書いてみる。
BGPとは
BGP(Border Gateway Protocol)はAS(自律システム)の間のルーティングプロトコルであり、EGP(Exterior Gateway Protocol)の一種とされている。同様にEGPの中には(名前が紛らわしいが)BGPとEGPの2種類があるが、EGPは現在ではほぼ使われていないらしい。
BGPはパスベクタ型と言われるルーティングプロトコルで、目的のアドレスまでの経路の中で通るASの数が少なくなるように経路選択を行う。経路情報にはASパスと言われる情報が含まれており、宛先までで通るASの経路が書かれている。
上記の図ではAS 1, AS 2, AS 5と番号が記載されているが、各ASには固有の番号が振られておりICANNがその番号を管理している。番号は2バイト、4バイトがそれぞれあり、2バイトの場合は1~64511がグローバル、それ以外がプライベートAS番号となっている。4バイトの方は番号の枯渇から拡張された新しいもの。
BGPの特徴
ここでは以下のページのものをそのまま引用する。
BGPの動作
BGPでは以下の4つのメッセージを使って経路情報の交換を行う。
OPEN:BGPネイバーとのセッション開始
UPDATE:BGPテーブル作成時に送信される全てのルート情報、または変更情報
KEEPALIVE:BGPネイバーへの生存確認
NOTIFICATION:エラー検出時の通知
まず上記の1-3を使ってネイバーとの接続を確立させる。
ここでいうBGPテーブルというのはBGPネイバーから受け取った経路情報(AS-PATHなど)を保存するもので、そのテーブルとAS内部の経路情報などから最終的なルーティングテーブルを作成する。そのあと、KEEPALIVEメッセージを定期的に送り生存確認を続けるといったことをする。
また、BGPでは以下のような状態があるらしく、最終的にEstablishedまでいくとBGPネイバーが確立する。
参考文献
調べてみるとBGPはRIPに似ているなと思った。
RIPはAS内で隣接するルータから経路情報を受け取って、それに単純にホップ数を1足したものをもとにルーティングテーブルを作成していた。同様にBGPもネットワークのトポロジを把握しているわけではなく隣接するルータからホップ数のように通過するAS数をもとに経路を割り出しているようだった。
ただ疑問に思ったのは、ASの番号が2バイトで枯渇すると危惧されているほど存在しているのに、RIPのように単純な経路探索方法を用いているのはなぜなんだろうか?大規模なASではOSPFを用いることで効率的に経路を選択できるとされているが、AS間だともしかすると大きすぎてネットワークのトポロジを把握しきれないのかな…?