【初心者わかりやすく】BGPをスッキリ理解する第1歩

スポンサーリンク

BGPとは

 Border Gateway Protocolの略。RFC4271で定義された拡張性、柔軟性、安定性を提供するルーティングプロトコルです。 BGPは主にインターネット上のネットワーク交換で使用され、80万経路を超えるルート情報を保持しています。 BGPには、次のような特徴があります。

信頼性

 BGPルータ間の経路情報交換の接続には、TCPが使用され、確認応答、再送、シーケンス処理が実行されます。 また、接続認証もできます。交換されるルーティング情報にはAS-PATH(ルートが通過した自律システムをリストアップするBGP属性)が付与され、 自身のASが含まれるルートを受信拒否することで、ルーティングループを防止します。

安定性

 インターフェースやルートのアップ/ダウンイベントがネットワークに与える影響を抑制するため、 ルートのフラッピングがないか追跡します。 フラッピングにより不安定なルートはペナルティを受け、抑制することができます。

拡張性

 IGPと違い、BGPでは、10万以上のルートを保持することができます。 インターネットで交換されるルート数は、年々増加傾向にあり、2020年時点で、80万ルートを超えるルート数が存在します。 インターネット上の現在のルート数は、CIDRレポート を見ることで確認できます。

柔軟性

 BGPで交換されるルートにはパス属性(アトリビュート)と呼ばれるパラメータが付属されており、この属性を元にルーティングポリシーを定義できます。 異なる組織間では、異なるルーティングポリシーを必要とすることが多く、IGPでは実現できないポリシー制御が可能です。

スポンサーリンク

AS番号

 Autonomous Systemの略。自律システムとも呼ばれます。ASは単一管理ドメイン(組織)下のネットワークの集まりです。インターネット上で経路交換をする組織に対して、ユニークな番号が割り当てられ、インターネットレジストリであるIANA(Internet Assigned Numbers Authority)により、管理されています。AS内のルーティングプロトコルは、OSPFなどのIGPが実行され、AS間のルーティングプロトコルでBGPが使用されます。

 AS番号は16ビットで表され、範囲は1〜65535の番号です。IPアドレスと同様にパブリックおよびプライベートAS番号の範囲があります。

  • グローバルAS番号:1〜64511
  • プライベートAS番号:64512〜65535
  • ASのイメージ

     ASの概念がざっくりとイメージできるよう、以下の例えを考えます。

     大阪(通天閣)から東京(スカイツリー)に出かけることとします。図の通り、移動手段は、新幹線と飛行機とし、都道府県を一つのAS(自律システム)として考えます。新幹線、飛行機を選ぶ基準として、通過するASが少ない(つまり、通過する都道府県数が少ない)経路をベストな経路として選択するものとします。

  • 新幹線:大阪→名古屋→東京
  • 飛行機:大阪→東京
  •  この条件の場合、「通天閣」はスカイツリーへのベストパスを飛行機の経路とし、ネクストホップを「関西空港」と認識します。BGPはこのように他AS経路への最適な出口ルータをネクストホップとして学習します。

     では、実際に、通天閣から関西空港までは、どのようにして移動するのでしょうか。これは、大阪の中で認識している経路(IGP)で決定します。実際は、通天閣最寄りの動物園前駅から南海本線を経由して、関西空港に到達することができます。もし、南海本線が不通の場合は、JRを使用して迂回することができます。

     東京の中の経路について考えます。例えば、羽田空港から半蔵門線を経由してスカイツリーに到達することができます。もし、半蔵門線が不通の場合は、例えば、京急本線を使用して迂回することができます。大阪から見て、このような東京の中の経路情報は、全く意識しません。通天閣(大阪)はスカイツリーに行くには、関西空港をめざすだけです。

     次に通天閣から名古屋のテレビ塔に行く経路を考えます。この場合は、新幹線がベストなパスとなり、新大阪がネクストホップとなります。

  • 新幹線:大阪→名古屋
  • 飛行機:大阪→東京→名古屋
  •  ここで、大阪〜名古屋間が不通になったとします。 この場合は、飛行機を使用し、大阪→東京→名古屋 を迂回経路として選定したいと思います。

     この場合は、名古屋のテレビ塔への経路を名古屋→東京→羽田空港→関西空港という順番に広報し、図のような東京経由で、到達する必要があります。

     このような接続を東京をトランジットするといいます。トランジットする場合は、東京の中(今回は、東京〜羽田空港間)でも経路交換が必要なため、BGPが必要です。

     ASが異なる(例えば、大阪〜東京間など)ルータ間のBGP接続を外部BGP、同一AS内(例えば、東京〜羽田空港間など)ルータ間のBGP接続を内部BGP と呼びます。

    パスベクター型プロトコル

     では、上記のイメージ図を実際のルータに置き換えます。

     R2の2.2.2.2/32をR1がどう学習するのかを考えます。 R1から見ると、2.2.2.2/32の経路は、AS2、およびAS3から学習します。

  • R5経由;AS 1 → AS 3 → AS 2
  • R3経由;AS 1 → AS 2
  • R1#show ip bgp
    BGP table version is 1, local router ID is 3.3.3.3
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
                  x best-external, a additional-path, c RIB-compressed, 
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight Path
     * i 2.2.2.2/32       192.168.15.5             0    100      0  3 2 i
    *>i                        192.168.13.3             0    100      0  2 i
    

     R1上では、BGP経路(2.2.2.2/32)には、通過するパス情報が格納されています。 このように、通過するASの数を計算して、経路を決定する性質から、BGPはパスベクター型プロトコルと呼ばれます。

    その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

     最後までお読み頂きありがとうございました。

    コメント