BGP(ボーダーゲートウェイプロトコル)は、インターネットなどの大規模なネットワークにおいて、異なる自律システム(AS: Autonomous System)間で経路情報を交換するための標準的なルーティングプロトコルです。BGPは、特にインターネットのバックボーンで使用され、ネットワーク間のルーティングを効率的かつ信頼性の高い方法で行います。この記事では、BGPの基本的な仕組みからその設定方法、運用の注意点、さらに進んだ概念に至るまで、BGPに関する重要な知識を網羅的に解説します。
BGPの基本的な概要
BGPは、インターネット上の異なる自律システム(AS)を結びつけ、経路情報を交換するためのプロトコルです。自律システムとは、単一の管理下にあるIPネットワークの集合を指し、一般的にはインターネットサービスプロバイダー(ISP)や大規模な企業が1つのASとして扱われます。
BGPは、経路選択の際に「パスベクトル型」と呼ばれる手法を採用しており、各ルーターは目的のネットワークへの最適な経路を決定するために、他のASから提供される経路情報を使用します。BGPは経路の選択基準として、距離やコストだけでなく、ASパス(経路を通過したASのリスト)やポリシーベースのルーティングをも重視します。
BGPの動作
BGPは、TCP/IPプロトコルを利用して、信頼性の高い経路交換を実現します。BGPが使用するポートは179番で、これはBGPセッションの確立および経路情報の交換に使用されます。
1. セッションの確立
BGPの通信は、TCP接続を介して行われます。BGPピア(BGPセッションを確立する2つのルーター)は、最初にTCP接続を確立し、その後、BGPネイバーとして認識されます。BGPは状態遷移を持ち、セッションの確立後に「Open」メッセージを交換し、セッションがアクティブになります。
2. 経路情報の交換
BGPピア間では、定期的に「Update」メッセージが交換され、これによってルーターは経路情報を受け取ります。Updateメッセージには、特定の宛先ネットワークへの経路情報が含まれており、その中にはASパスや最適経路を選択するためのメトリクスが含まれています。
3. 経路選択
BGPでは、最も最適な経路を選択するためのアルゴリズムを使用します。経路選択には、複数の基準が存在します。これには、ASパスの長さ、経路属性(例えば、Local PreferenceやMED: Multi-Exit Discriminator)が考慮されます。BGPは「最良経路」を選ぶ際、これらの基準を順番に評価し、最適な経路を選択します。
BGPの経路選択基準
BGPでは、経路選択に関していくつかの優先順位を設定しており、経路が競合した場合に使用するルールは次の通りです:
-
Local Preference(ローカル・プレファレンス)
ローカル・プレファレンスは、特定の経路を優先するための属性です。通常、ISP内で使われ、例えば、トラフィックの流れを制御するために用いられます。数値が大きいほど、その経路は優先されます。 -
ASパス長
ASパス長が短い経路が優先されます。ASパスは、その経路が通過した自律システムのリストです。ASパスが短ければ、経路が近いと判断されます。 -
Origin Type(オリジンタイプ)
Originタイプは、経路がどのように発見されたかを示します。BGPでは、次の3つのタイプがあり、通常「IGP」が最も優先されます:- IGP(内部ゲートウェイプロトコル)
- EGP(外部ゲートウェイプロトコル)
- Incomplete(不完全)
-
MED(Multi-Exit Discriminator)
MEDは、異なるエグジットポイントから出る経路の中で、最適なものを選択するために使用されます。値が小さいほど優先されます。 -
BGPルーターID
BGPセッションを介しての経路選択において、最終的に選ばれる経路は、各ルーターのBGPルーターIDを基にする場合もあります。
BGPのタイプ
BGPには、いくつかの異なる種類があります。これらは、利用シーンに応じて使い分けられます。
-
eBGP(External BGP)
eBGPは、異なるAS間で使用されるBGPです。インターネット上のISPや企業間で経路情報を交換する際に使われます。 -
iBGP(Internal BGP)
iBGPは、同一AS内で使用されるBGPです。複数のルーター間でBGPの経路情報を同期させるために使用されます。iBGPは、AS内のすべてのルーターが経路情報を共有するための仕組みを提供します。
BGPの設定
BGPの設定は、ルーターのインターフェースやAS番号などを指定することで行われます。基本的なBGP設定の手順は以下の通りです:
-
AS番号の設定
まず、ルーターに対してそのルーターが所属するAS番号を設定します。 -
BGPピアの設定
次に、BGPピア(接続先のルーター)のIPアドレスを指定して、BGPセッションを確立します。 -
ネットワークの広告
広告したいネットワーク(自分のネットワーク)をBGPで通知するために、networkコマンドを使用して設定します。 -
経路のフィルタリング
不要な経路情報の広告を防ぐために、経路フィルタリングを設定することができます。これにより、特定の経路を選択的に広告したり、受信したりできます。
BGPの運用
BGPの運用においては、以下の点に留意する必要があります:
-
経路の安定性
BGPは、経路の変更に敏感であり、経路の不安定性(頻繁な経路変更)を引き起こすことがあります。これにより、ネットワーク全体のパフォーマンスが低下する可能性があるため、経路の安定性を確保するための管理が必要です。 -
セキュリティ
BGPは、信頼性の高いプロトコルですが、BGPのセキュリティを強化するためには、BGPセッションの認証や、フィルタリングによる経路操作を適切に行うことが重要です。 -
BGPループ
BGPは、経路のループを防ぐためにASパスを使用します。しかし、誤った設定や意図しない経路の広告があると、BGPループが発生する可能性があります。このようなループを避けるために、ASパスの適切な設定が重要です。
まとめ
BGPは、インターネットや大規模なネットワーク間での経路選択において非常に重要なプロトコルです。経路選択のポリシーや、AS間の経路情報の交換を効率的に行うために、BGPの理解はネットワーク設計や運用において欠かせません。BGPの適切な設定と運用により、ネットワークのパフォーマンスと安定性を確保することが可能となります。

