インターネットでの管理組織でもっとも大きい単位がAS(Autonomous System:自律システム)です。インターネットでは,ASを単位にルーティングが実行されており,そこで使われるルーティングプロトコルが「BGP」です。今回から数回に渡って,BGPを学びましょう。

ASをつなぐルーティングプロトコル

 ASは統一された管理ポリシーによって運営されるネットワーク群のことです。一般的には,一つのプロバイダのネットワークや,企業ネットワークがそれに該当します。

 AS内のルーティングプロトコルには,EIGRP,OSPFのようなIGPs(Interior Gateway Protocols)を使います。一方,AS間のルーティングを担うのが,BGP(Border Gateway Protocol)やEGP(Exterior Gateway Protocol)といったEGPs(Exterior Gateway Protocols)です。固有のプロトコルであるEGPと,「AS間ルーティングプロトコル」を意味するEGPsは同じ言葉なので,注意が必要です。EGPは古いプロトコルで,現在はあまり使われていません。現在は,EGPsとして,BGP4(BGPversion4)がデファクトスタンダートとして使われています。また,IPv6対応のBGP4+(MP-BGP)も規定されています(図1)。

 図1 EGPsとIGP

 IGPの場合,AS内の経路情報のみをアドバタイズし,AS外のネットワークにはデフォルトルートや集約ルートを通知するのが一般的です。これに対して,インターネットの基幹に存在するルータは,インターネットのすべてのネットワークの情報(インターネットフルルート)を保持しています。そのためEGPsは,IGPよりも大量の経路情報をやりとりすることになります。

 ASには,グローバルIPアドレスと同じように,管理された一意の番号が割り振られます。これを「AS番号」と呼びます。AS番号は16ビットで,1~65535の値をとります。ただし,64512~65534はプライベートAS番号として使われ,さらに0と65535は予約された番号のため使えません。AS番号は,IPアドレス同様,ICANN(The Internet Corporation for Assigned Names and Numbers)という組織が管理しています。

 ASは他のASとの接続形態によって,次のように分類できます(図2)。

  • シングルホームAS ・・・ 他の1つのASとだけ接続しているAS。「スタブAS」とも言う
  • トランジットマルチホームAS ・・・ 複数のASと接続し,AS間のトラフィックが通過するAS
  • 非トランジットマルチホームAS ・・・複数のASと接続し,AS間のトラフィックが通過しないAS

 図2 ASの分類
ASの分類

BGPの特徴

 BGPの特徴は,次の点が挙げられます。

  • CIDR,VLSM,ルート集約に対応したクラスレスルーティングプロトコル
  • ディスタンスベクタ型に似たパスベクタ型ルーティング
  • パス属性(アトリビュート)によるポリシーベースルーティング
  • TCPを使った信頼性のあるアドバタイズ
  • 変更があった場合のみの差分アドバタイズ
  • 認証機能を持つ

 これらの特徴についてのいくつかは,先の回で説明します。ここでは,いくつかを簡単に紹介します。

 まず,BGPはクラスレスルーティングプロトコルです。IPアドレスを柔軟に活用し,適切な境界で集約が可能です。

 また,BGPはTCPを使います。BGPはEGPsですので,膨大なネットワークの情報をやりとりします。インターネットフルルートになると十数万以上あると言われています。そのため,経路情報の再送が発生しないように,BGPでは信頼性の高いTCPを使ってアドバタイズを送信します。ポート番号はTCPの175番を使います。また,経路情報の「差分」をアドバタイズすることにより,帯域の消費を減らしています。

 BGPはIPルーティングテーブルとは別に,BGPテーブルと呼ばれるテーブルを保持します。BGPテーブルは,隣接ルーター(ピア)のリストや,ネットワーク情報などを含みます。BGPテーブルに記録された経路情報が管理者の定めた条件に合致すれば,その経路情報がIPルーティングテーブルに記載される格好になります。

 BGPはパスベクタ型ルーティングプロトコルと呼ばれます。ディスタンスベクタ型は距離と方向を含む情報をアドバタイズました。一方,BGPのパスベクタ型は,その経路情報がどのASを通ってきたかという「パス」のリスト情報をアドバタイズするのが特徴です。(図3)。

 図3 パスベクタ型ルーティングプロトコル

 BGPはこのように,ループフリーなルーティングプロトコルというわけです。

BGPピアが経路情報をやりとり

 BGPを実行しているルータは「BGPスピーカ」と呼ばれます。BGPスピーカは他のBGPスピーカとネットワーク情報を交換するために,OSPF,EIGRP,IS-ISと同様に隣接関係を結びます。BGPで隣接関係を結ぶためには,TCPスリーウェイハンドシェイクによりTCPコネクションを確立した後に,BGPメッセージを交換します。隣接関係を結んだBGPスピーカは,「BGPピア」と呼ばれます。またはOSPFなどと同様に「BGPネイバー」とも呼ばれます (この講座では「BGPピア」の呼び方を使います)。

 BGPピア間で交換されるBGPメッセージは次の4つになります。

  • OPEN ・・・ BGPピアでセッションを開始するために使う
  • UPDATE ・・・ ルーティング情報を通知
  • NOTIFICATION ・・・ エラー通知
  • KEEPALIVE ・・・ 生存確認

 BGPピア間で隣接関係を結ぶためには,OPENメッセージを送ってKEEPALIVEメッセージを受ける,というやりとりを双方で実行します。その後,UPDATEメッセージを使って現在のネットワーク情報を交換します(図4)。

 図4 BGPピアの確立
BGPピアの確立

 BGPでは,OSPFやEIGRPと異なり,ピアとなるBGPスピーカを明示的に指定して設定します。この際,同一のAS内のピアとは直接接続していなくても問題ありません。また,直接的にピアと接続していない場合,間に入るルータがBGPを動作していなくてもかまいません。ただし,ピアを張るBGPスピーカ同士で接続性が確保されている必要があります(図5)。

 図5 BGPピア

 異なるAS間のBGPスピーカ間で隣接関係を結ぶ場合は,ピア同士が直接接続している必要があります。ただし「EBGPマルチホップ」と呼ばれる機能を使えば,直接接続していない別ASのスピーカ間でも隣接関係を結べます。

 ピア確立後は,OSPF,EIGRPがHelloを定期的に送るように,BGPでは相互に60秒に1回KEEPALIVEメッセージを送ります。180秒間(ホールドタイム)KEEPALIVEメッセージが届かない場合,隣接関係は解除されます。