Trema アプリの起動方法 (基本編)

Trema 上で開発した OpenFlow アプリケーションの起動方法について、解説します。

基本的には、コマンドから直接オブジェクトを指定する方法と、コンフィグファイルに経由で起動する方法の二通りがあります。

コマンドから直接オブジェクトを指定する方法

まず、オブジェクトを直接指定する方法です。./trema run の後に実行オブジェクトを指定すれば OK です。例えば Trema にサンプルとして同梱されている Learning Switch であれば、以下のように起動します。

$ ./trema run ./objects/examples/learning_switch/learning_switch

Ruby で書いたアプリを起動する方法も同じです。実行オブジェクトの代わりに、Ruby スクリプトを指定します。

$ ./trema run ./src/examples/learning_switch/learning_switch.rb

コンフィグファイルに経由で起動する方法

次にコンフィグファイルから起動する方法です。例えば、以下の内容のコンフィグファイルを作成し、learing_switch.conf という名前で保存してあったとします。

run {
  path "../objects/examples/learning_switch/learning_switch"
}

このとき、以下のように -c オプションを利用することで、コンフィグファイル経由で起動を行うことができます。

$ ./trema run -c ./learning_switch.conf 

デーモンとしての起動

OpenFlow コントローラは TCP のサーバとして動作し、ポート 6633 を listen しています。今回紹介したいずれかの方法で起動したコントローラアプリケーションは、OpenFlow スイッチからの TCP コネクションの accept し、その動作を開始することとなります。

では、コントローラアプリケーションをデーモンとして動作させるためには、どうすればいいでしょうか?以下のように -d オプションを用いれば、デーモンモードでの起動が可能です。

$ ./trema run ./objects/examples/learning_switch/learning_switch -d

もちろんコンフィグファイルから起動する方法でも、同様です。

$ ./trema run -c ./learning_switch.conf -d

おわりに

今回は Trema で作成したアプリケーションの簡単な起動方法について紹介しました。次は、ネットワークエミュレーション機能について紹介する予定です。