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