bgpsimでBGPリフレクションを検証してみよう

日本語|English|中国语
| 3 min read
Author: shohei-yamashita shohei-yamashitaの画像

はじめに

#

ビジネスソリューション事業部の山下です。
前回は、ネットワークの経路探索に使われるプロトコルであるBGPと、BGPをブラウザ上で検証できるbgpsimについて書かせていただきました。
今回は続きとして、BGPピアの確立を一層シンプルにできるパターンである”ルートリフレクタ”をbgpsim上で実装し、検証してみようと思います。

BGPとbgpsimのおさらい

#

ここで、簡単にBGPとbgpsimについておさらいしておきます。より細かい概要については前の記事を参考にしてください。

BGPは機器同士が通信する経路の探索に利用されるプロトコルです。Autonomous System外への経路を探索できます。
bgpsimはブラウザ上でBGPを検証できるシミュレータであり、前の記事で軽く紹介させていただいています。

d8f5874aba4a508a0c680db142a4f0c3.png

ルートリフレクションとは

#

フルメッシュiBGPによるオーバーヘッド

#

通常、AS内のBGPスピーカー(ルータ)でBGPによる探索を適用したい場合、全ルータのペアに対してiBGPセッションを確立させるフルメッシュ構造をとる必要があります。

以下は5つのBGPスピーカーの各ペアに対して、iBGPセッションを確立してフルメッシュなセッションを確立している様子です。

cbded36f6ff9c93939e18937cf94bc9d.png

仮に10個のBGPスピーカーがあれば、10×9÷2(=45)10 \times 9 \div 2(=45)ものBGPセッションを用意する必要があります。
このままでは、BGPスピーカーを追加していった場合に、既存のルータ全てに対してBGPピアを確立しなければなりません。
このような問題を解決するために策定されたのがルートリフレクションと呼ばれる規格です。

ルートリフレクション

#

前述の通り、フルメッシュなiBGPセッションを構築しなくても済むために定義された規格が、ルートリフレクション(Route Reflection)と呼ばれる規格です[1]

ルートリフレクションを文字通りに解釈すると、Route(経路)を Reflect(反映)するという表現になります。
適切に言葉を補うと、「特定のルータが学習した経路を別のルータに伝搬する」仕組みをルートリフレクションと言います。

ルートリフレクションの理解にあたって、必要最低限の理解に必要な用語は以下の2つです。

  • ルートリフレクタ:他のルータが学習した経路を反映するルータ
  • クライアント:ルートリフレクタから経路情報を受け取るルータ

それでは、bgpsimを用いて検証していきましょう。

bgpsimにおける実装

#

BGPのスピーカおよびeBGPの定義

#

まずは以下のように4つのInternal Routerと単一のExternal Routerを配置していきます。

f6985d98748ef2cda169fbbb903bfcac.png

次に物理的な接続を確立していきます。一例として以下のような接続を定義していきます。
なお、すべてのルータが何かしらの形で繋がっていれば、任意の形状で問題ありません。

306def86745c12b4dfd98ec25f138da2.png

あとはExternal RouterからeBGPセッションを用意してあげれば、ひとまず準備完了です。
以下のようにPrefixとAS Pathを設定します[2]

8c4650bc88f7411cc30eb4022166f96c.png

Data Planeビューを確認して、External Routerに隣接するルータからのみ探索が有効になっていればひとまず完了です。

613caa3dbd5d91792d5fdcdb429597e6.png

フルメッシュiBGPの作成

#

まずはBGPリフレクションを使わずに、すべてのルータから経路を探索することを目標にしてみます。
eBGP Sessionの構築と同様に、任意のルータを右クリックしてAdd iBGP Sessionを選びます。

8afcf861026ded2ed91d75cbf9790dbe.png

4つのルータのペアに対して計6つのiBGPセッションを確立すれば、すべてのルータからのBGPを利用した経路探索が利用できます。
ビューをBGP Configに切り替えてフルメッシュなBGPセッションが確立されていることを確認します。

756aeff6bb507679f40023a94075f65a.png

ここで、Date Planeにビューを切り替えると、任意のルータからAS外への最適な経路が探索できていることが確認できます。

a82eef188242a5b2bb5d22049200bff7.png

BGPルートリフレクションの利用

#

今度はBGPルートリフレクションを利用して、同様な状況を作っていきます。
一旦、フルメッシュのiBGPセッションを確立する手前の状態に戻ります。

af2028f2ca44cbc6091757c9a313e408.png

まずはInternal Routerのうち、特定の1つをルートリフレクタとします。
今回の例では、以下の図で青くマーキングされているBGPスピーカーをルートリフレクタに選定します。

606fc4b130ee27326fb2cb891aa23b31.png

現在ルートリフレクタとして選択しているルータの上で右クリックして、Add iBGP Clientを選択します。

4bdc0ee705d939bcca5caa0ac8a057bb.png

そのうえで別のルータをクリックすると、ルートリフレクタとクライアントのペアを1つ作成できます。ルートリフレクタからクライアントに矢印が伸びる形で表現されます。

cc6f85540884c9494dfd8ff88b4fc7fd.png

同様に他のルータをルートリフレクタのクライアントとして定義していきます。ビューをBGP Configに切り替えて、以下のような形になっていれば問題ありません。

eac2be9245e8de47596fbe8fddf30f8b.png

ビューをData Planeに切り替えると、フルメッシュiBGPで設定したときと同様に、BGPの経路探索が可能であることを確認できます。

8708335987ed99e4a8427e5049d524fd.png

シミュレータ上の話ではありますが、ルートリフレクションを駆使することで、一層シンプルな設定でBGPを利用できることを確認できました。
ちなみに別のルータをルートリフレクタに設定しても同様の結果が得られます。

21675da4f690a04a9e74c507def03473.png

まとめ

#

本記事では前回の続きとして、BGPピアをより効率的に確立できるBGPリフレクションについて説明させていただきました。
私自身どちらかと言えば、アプリケーションに携わってきた身なので、BGPというプロトコルはかなり敷居が高いものでした。
ただ、今回紹介したシミュレータを通して、BGPについてある程度イメージを深めることができました。興味のある方は気軽に試してもらえればと思います。


  1. 細則はRFC 4456で定義されています。 ↩︎

  2. 前回の記事のようなパラメータ制御は行わないので、AS Pathに関しては特に深く考えずに値を入れてください。 ↩︎

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。