今日も秋田で IoT

旧 Trema 日記

Topology を動かしてみよう

前回紹介した topology モジュールを動かしてみましょう。

ビルドと実行

trema 本体と topology のビルドを行ってください。

$ (cd trema/; ./build.rb)
$ (cd apps/topology/; make)

ビルドができたら、以下のように実行してみてください。

$ (cd trema/; ./trema run -c ../apps/topology/topology_fullmesh.conf)

なにも表示されませんがこのままにしておいて、以降の操作は別の shell 上で行ってください。

トポロジー表示

上記の設定ファイル topology_fullmesh.conf 中には、vswitch 4 台、vhost 4 台、またフルメッシュになるようスイッチ間の link に関する記述が含まれています。これらの情報は、ネットワークエミュレーション機能により、仮想ネットワークの構成に用いられます。

コントローラである Trema アプリケーションから、これらのネットワークがどのように見えるかについて考えてみましょう。スイッチ側からはセキュアチャネルの接続が行われるので、ネットワーク中のスイッチの存在は知ることができます。さらに、今回の topology/topology_discovery モジュールを使うことで、スイッチ間のリンク情報も知ることができます。

実際に topology モジュールが、スイッチ間のリンクを把握できているかを確認してみましょう。以下のようなコマンドを実行してください。

$ (cd apps/topology/; TREMA_HOME=../../trema ./show_topology -D) 

topology モジュールが認識しているトポロジーが表示されます。topology_fullmesh.conf と比較すると、topology モジュールの守備範囲外である vhost やスイッチ-ホスト間のリンクなどの情報は含まれていません。topology モジュールは、あくまでスイッチ間のリンクのみ管理します。この表示中の vswitch はリンクの両端の情報から再現したものです。つまり、他のスイッチと接続するリンクを一つも持たないスイッチは、ここでは表示されないことに注意が必要です。