BGPについてわかりやすく解説

ネットワーク

現在の世の中にはISPで通信を行う際にEGPを使って通信が行われます。

そのEGPの中でもよく使われているのがBGPです。

今回はBGPの通信方法について説明していきます。

BGPとは

BGPは、異なるネットワーク(AS)間をつなぐためのルーティングプロトコルで、パスベクトル型のプロトコルです。

BGPはTCPを使ってルート情報を交換し、最初にTCPセッションを確立すればそれ以降は他のルートに経路情報知らせる(アドバタイズ)ことはありません。

ここで使うASはインターネットに接続している組織を識別するためにIANAという組織が各地域の管理組織のRIRに分配します。日本ではRIRのまた下にJPNICという組織が日本の各組織にAS番号を割り当てています。

BGPの動作

BGPでは最初にデータを伝送するために3wayハンドシェイクでTCPセッションを確立します。

これで隣接するBGPルータ同士のがコネクション確立します。

TCPセッションが確立すると送信側でAS番号、BGPバージョン、認証などの情報を含んだOPENメッセージが送信されます。

このOPENメッセージがもう一方のBGPルータで受信されることで受信側のBGPルータがセッションが確立したと判断し、応答メッセージを返します。

この後に、最適経路を見つけるために以下のような動作をします。

BGPルータ同士は物理的に隣接しているのではなくその間には他のルータがあります。

そのため、このBGPルータから他のBGPルータに通信するには複数ある経路から最適経路を一つ選択する必要があります。

BGPではパスアトリビュートを用いて最適経路を導き出しています。

パスアトリビュートについていくつか紹介すると

AS-PATH

AH-PATHでは複数の経路が同じ目的地に到達する場合、その経路の中で最もASを通過したのが少ない経路が経路選択に優先されます。

NEXT-HOP

NEXT-HOPでは最適経路上のルータで伝送が行えないルータがある場合、次に最適経路となる経路を選択し、ルーティング情報を更新します。

ORIGIN

ORIGINではIGPやEGPと一緒に動作することが多く、どのプロトコルを使っているか認識し、それにより経路選択を行います。

この三つはすべてのBGPルートに対して必ず付与される必須の属性です。

それ以外のMEDなどは必要に応じて付加されます。

これらの経路情報から最適経路が選択されます。

最適経路が選択されるとこの経路を使ってデータが伝送されます。

そして、隣接関係が生存していることを確認するためにKEEPALIVEメッセージが定期的に送信されます。

これ以降で経路が変わるのは経路間のルータが定期的に出している広告でルーティング情報を更新し、より最適な経路を導き出したとき、ルータが故障した時などに経路が変更されます。

このようにBGPではルーティングを行いますが、BGPには二つのモードがあります。

それは異なるAS間で通信を行うeBGPと、同AS間で通信を行うiBGPがあります。

eBGPとiBGPの違い

eBGPでは異なるAS間で通信を行いルーティングしていますが、iBGPでは同AS間でルーティングを行います。

具体的に説明するとISP AとISP Bがあるとすると下のように接続されているとします。

まず、ISP Aを見るとAS内のルータでルーティング情報を交換しています。

このISP AにあるBGPルータすべてがISP BのBGPルータに接続しようとすると異なるASなので接続するためのポリシーなどの設定が複雑になり管理が難しくなります。

そこで、eBGPとiBGPに役割を分けてルーティングを行っています。

eBGPの特徴

eBGPでは異なるAS間との通信を行うためセキュリティや負荷を考えなければなりません。

また、eBGPの経路は多くなく、シングル接続している場合もあります。そのため、経路情報の交換は信頼度が高く、確実な情報交換が必要となります。

これを実現するために、基本的にeBGPルータはルータ同士を直接接続します。

iBGPの特徴

iBGPではeBGPルータから受け取った情報をAS内でルーティングを行うため、そこまでセキュリティを考えなくてよくなります。

iBGPでは他のルータから受け取ったルーティング情報を再び再広告しません。そのため、ルータはすべてフルメッシュで接続しておく必要があります。

フルメッシュにすることでコストがかかるという面もありますが、経路情報をすべてのBGPルータに通知し、短時間でルーティング情報を保持することができ最新の情報を常に得ることができます。

また、フルメッシュ接続にすることでトラブルシューティングなど管理がしやすくなります。

このようにeBGPとiBGPの二つに役割を分け効率よく安全に信頼度が高いルーティング情報の交換を行うことができます。

コメント

タイトルとURLをコピーしました