はじめに
インターネットでは、1つの組織だけでなく、異なる管理主体のネットワーク同士をつないで通信します。このとき、それぞれが独自に管理しているネットワークの境界を越えて「どの宛先へ、どの経路で到達できるか」を共有する必要があります。
BGP(Border Gateway Protocol)は、こうした自律システム(AS)間で到達可能性情報を交換するためのルーティングプロトコルです。この記事では、ASとBGPの関係、BGPピアによる経路交換、AS_PATH、経路選択、EBGPとIBGPの違いまでを、BGPの基本がつかめる範囲に絞って解説します。
この記事で分かること
- BGPがどのような場面で使われるルーティングプロトコルか
- AS、BGPスピーカー、BGPピアの基本的な関係
- AS_PATHが経路情報の中でどのような役割を持つか
- BGPが単純な最短経路だけで経路を決めるわけではない理由
- EBGPとIBGPの違い
BGPとは
BGPは、異なる自律システム(AS)の間でネットワークの到達可能性情報を交換するためのルーティングプロトコルです。インターネットでは、多数のASが互いに接続し、それぞれが到達可能な宛先ネットワーク(IPプレフィックス)と経路に関する情報をBGPで交換しています。
ルーティングプロトコルを役割で分けると、AS内部で使うOSPFなどはIGP(Interior Gateway Protocol)、AS間のルーティングを担当するBGPは外部側に位置します。学習上、この外部側の分類をEGP(Exterior Gateway Protocol)と呼ぶことがあります。ここでいうEGPは役割上の分類で、BGPとは別に「EGP」という名称の旧プロトコルも存在します。
BGPは、RIPのホップ数やOSPFのリンクコストのように、1つの数値だけを基準に最短経路を求めることが中心のプロトコルではありません。ASごとの運用方針を反映しながら、どの経路を利用し、どの経路を他のASへ知らせるかを制御できる点が大きな特徴です。ルーティングプロトコル全体の位置付けは、静的ルーティングと動的ルーティングの違いとは?経路設定の仕組みを解説も参照してください。
AS(自律システム)とは
AS(Autonomous System:自律システム)は、外部から見たときに一貫したルーティング方針を持つネットワークの管理単位です。ISPや大規模な組織ネットワークなどが、他のASと独立した方針で経路情報を交換するためにASを利用します。
各ASはAS番号によって識別されます。古いBGPの基本仕様ではAS番号を2オクテット(16ビット)で表していましたが、現在は4オクテット(32ビット)のAS番号を扱えるよう拡張されています。そのため、「AS番号は16ビット」とだけ覚えるのは現在のBGPを説明するには不十分です。
AS内部の経路制御ではOSPFなどのIGPを利用できます。一方、ASの境界を越えて到達可能性を交換する役割をBGPが担当します。
BGPはどのように経路情報を交換するのか
BGPを実装して経路情報を交換するルーターをBGPスピーカーと呼びます。経路を交換する相手として設定されたBGPスピーカー同士はBGPピアとなり、TCP接続を確立して情報をやり取りします。BGPはTCPの179番ポートを使用します。
BGPピアは、到達可能な宛先ネットワーク(IPプレフィックス)と、AS_PATHなど経路の特徴を表す属性を交換します。経路情報を相手へ知らせることを「広告」と呼びます。接続時には相手へ広告できる経路情報を送り、その後は到達可能性や経路属性に変化が生じたときに更新情報を交換します。
例えば3つのASが順に接続されている場合、最初のASが持つネットワークへの経路を隣のASへ広告し、さらに次のASへ伝えることで、離れたASもそのネットワークへの到達経路を学習できます。このとき、単に宛先だけでなく、どのASを通ってきた経路なのかという情報も引き継がれます。
AS_PATHで通過したASを記録する
BGPの代表的な経路属性がAS_PATHです。AS_PATHには、その経路情報が通過してきたAS番号が並びます。外部のASへ経路を広告するときは、自分のAS番号が経路へ追加されていくため、受信側はその経路がどのASを経由してきたかを確認できます。
AS_PATHには、経路ループを防ぐ重要な役割があります。受信したAS_PATHの中に自分自身のAS番号が含まれていれば、その経路は自分のASを通過した後に戻ってきたと判断できます。このような経路を利用対象から外すことで、AS間で経路情報が循環することを防ぎます。
AS_PATHの長さは経路選択でも利用されますが、「通過AS数が最も少ない経路を必ず選ぶ」という理解は正確ではありません。BGPでは他の情報やローカルポリシーも含めて利用する経路を決定します。
BGPはポリシーを反映して経路を選ぶ
BGPでは、受信した複数の経路候補に対して、各ASであらかじめ設定した運用方針(ローカルポリシー)を適用し、利用する経路や他のピアへ広告する経路を決めます。どの経路を優先するかは、単純な距離だけではなく、ネットワーク運用者が設定したポリシーの影響を受けます。
そのため、AS_PATHが短い経路が候補にあっても、ポリシーによって別の経路を優先することがあります。BGPの詳細な経路選択では複数の属性を扱いますが、基礎段階では「BGPはAS間の到達可能性と経路属性を交換し、ポリシーを反映して経路を選ぶ」と押さえると理解しやすくなります。
EBGPとIBGPの違い
同じBGPでも、ピアが所属するASによってEBGPとIBGPに分かれます。
| 種類 | ピアの関係 | 主な役割 |
|---|---|---|
| EBGP | 異なるASに属するピア | AS間で到達可能性情報を交換する |
| IBGP | 同じASに属するピア | BGPで扱う経路情報をAS内部のBGPスピーカー間で共有する |
OSPFのようなIGPはAS内部でパケットを転送するための経路を計算する役割を持ち、IBGPはBGPで扱う経路情報をAS内部のBGPスピーカーへ伝える役割を持ちます。両者は同じ「AS内で使われる」仕組みでも、担当する役割が異なります。OSPFの仕組みは、OSPFとは?リンク状態型ルーティングの仕組みとエリア設計を分かりやすく解説で解説しています。
まとめ
BGPは、異なる自律システム(AS)の間で到達可能性情報を交換するためのルーティングプロトコルです。
- ASは、外部から見て一貫したルーティング方針を持つネットワークの管理単位
- BGPスピーカーは、設定されたBGPピアとTCP接続を確立して経路情報を交換する
- AS_PATHは通過したASを表し、AS間のループ検出にも利用される
- BGPはAS_PATHの長さだけでなく、ローカルポリシーなどを反映して経路を選ぶ
- 異なるAS間の接続をEBGP、同じAS内の接続をIBGPと呼ぶ
BGPを理解すると、OSPFなどで扱う「AS内部のルーティング」と、インターネット規模で必要になる「AS間のルーティング」を分けて考えられるようになります。