BGPはインターネット全体の経路情報を交換できるように設計された、OSPFよりもさらに大規模ネットワーク向けのルーティングプロトコルだ。現在一般的なのはBGP-4で、RFC1771で規格化されている。BGPでは、AS間のつながりを示すざっくりとした経路情報しか交換しない。これは、大量の経路情報を滞りなくやり取りするためだ。

 ルーター同士は、TCPセッションを確立した後でいくつかのメッセージをやり取りし、隣接関係を確立する(「BGPピアを張る」ともいう、図1の(1))。

図1●BGPで経路情報をやり取りする手順
図1●BGPで経路情報をやり取りする手順
BGPでは、BGPピアを構成した相手と情報をやり取りする。「どのネットワークが自分の配下にいるか」と「そのパス属性」を伝える。OSPFのようにリンクの状況を細かく伝えることはしない。大づかみな経路情報をやり取りすることで、大量のルーターが構成する大規模ネットワークでも問題なく稼働するようになっている。
[画像のクリックで拡大表示]

 次に、経路情報の交換を始める。経路情報に含まれる情報はAS内のネットワークのIPアドレス(プレフィックス)を示す「NLRI」という情報と、そのNLRIに対して様々な属性を付け加える「パス属性」である(図1の(2))。BGPでは、ルーターは受け取った経路情報のNLRIとパス属性に対して、自ネットワークの管理者が設定したポリシーや経路フィルターなどを反映したものを蓄積する。そして、これらの情報を基にルーティングテーブルを作成するのだ。

 最適経路を決める際に、重要な要素となるのがパス属性だ。わかりやすい例としてASパス属性を見てみよう。

 ASパス属性とは、あるASが送り出した経路情報が、別のASにたどり着くまでに経由したASのリスト。初期状態では、ASパス属性のAS数が少ないほうの経路情報を「近い」と見なし、最適経路として利用する(図1の下部)。