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の経路が書かれている。

https://www.infraexpert.com/study/bgpz01.html

上記の図ではAS 1, AS 2, AS 5と番号が記載されているが、各ASには固有の番号が振られておりICANNがその番号を管理している。番号は2バイト、4バイトがそれぞれあり、2バイトの場合は1~64511がグローバル、それ以外がプライベートAS番号となっている。4バイトの方は番号の枯渇から拡張された新しいもの。

BGPの特徴

ここでは以下のページのものをそのまま引用する。

1. 転送プロトコルにTCPを利用:TCPポート179を利用し経路情報の交換
2. 差分アップデート:変更発生時のみ差分アップデートを実行
3. パスアトリビュート:詳細なポリシーを定義してルーティング
4. ループフリー:AS-PATHリストでループフリー構成
5. クラスレスルーティングプロトコル:CIDRによるクラスレスルーティング

https://www.infraexpert.com/study/bgpz01.html(一部要約)

BGPの動作

BGPでは以下の4つのメッセージを使って経路情報の交換を行う。

  1. OPEN:BGPネイバーとのセッション開始

  2. UPDATE:BGPテーブル作成時に送信される全てのルート情報、または変更情報

  3. KEEPALIVE:BGPネイバーへの生存確認

  4. NOTIFICATION:エラー検出時の通知

まず上記の1-3を使ってネイバーとの接続を確立させる。

https://www.infraexpert.com/study/bgpz02.html

ここでいうBGPテーブルというのはBGPネイバーから受け取った経路情報(AS-PATHなど)を保存するもので、そのテーブルとAS内部の経路情報などから最終的なルーティングテーブルを作成する。そのあと、KEEPALIVEメッセージを定期的に送り生存確認を続けるといったことをする。

また、BGPでは以下のような状態があるらしく、最終的にEstablishedまでいくとBGPネイバーが確立する。

https://www.infraexpert.com/study/bgpz02.html

参考文献

  1. BGP(Border Gateway Protocol)とは

  2. BGP - 4つのメッセージ、6つのステータスと状態遷移


調べてみるとBGPはRIPに似ているなと思った。
RIPはAS内で隣接するルータから経路情報を受け取って、それに単純にホップ数を1足したものをもとにルーティングテーブルを作成していた。同様にBGPもネットワークのトポロジを把握しているわけではなく隣接するルータからホップ数のように通過するAS数をもとに経路を割り出しているようだった。

ただ疑問に思ったのは、ASの番号が2バイトで枯渇すると危惧されているほど存在しているのに、RIPのように単純な経路探索方法を用いているのはなぜなんだろうか?大規模なASではOSPFを用いることで効率的に経路を選択できるとされているが、AS間だともしかすると大きすぎてネットワークのトポロジを把握しきれないのかな…?

いいなと思ったら応援しよう!