2013年8月27日火曜日

Tremaを試す ~hello trema その1~

こんにちは、鯵王です。

今回はTremaで作ったOpenFlowコントローラを動かしてみます。

Tremaのパッケージにはいくつかのサンプルプログラムがついていますので、今回はその中の一つ、hello_tremaを使ってみます。

私はgemでTremaをインストールしたため、インストールに使用したパッケージがどこにあるかわかりませんでした。
findで検索したところ、パッケージは以下の場所に展開されてました。

/var/lib/gems/1.8/gems/trema-0.3.##
※##にはバージョンが入る

サンプルプログラムは上記ディレクトリ配下の以下のディレクトリにあります。

./src/examples/examples

examplesの中のhello_tremaというディレクトリにhello_trema.rbという名前のファイルがありますので、catなどで中身を見てください。
プログラム部分だけ抜粋すると以下のような内容になっています。

(hello-trema.rb)
class HelloTrema < Controller
  def switch_ready datapath_id
    info "Hello %#x!" % datapath_id
  end
end

TremaのプログラムはHTMLファイルのようにテキストファイルに書けばよく、コンパイルなどは不要です。
このプログラムをログインユーザのホームディレクトリ等に用意してください。

プログラムを実行するにはコマンドラインで以下のように打ちます。

trema run ./hello-trema

以下のように、画面にはなにも表示されないと思います。

$ trema run ./hello-trema


フォアグラウンドで実行されているので、Ctl-Cで終了します。

実はこのhello_tremaのサンプルプログラムはOpenFlowスイッチと接続すると画面にメッセージが表示されるようになっています。

ではOpenFlowスイッチが無いと確認できないのかと言うとそうではありません。

Tremaというフレームワークはこの辺りも便利にできていて、OpenFlowスイッチを用意しなくても作ったプログラムを動かせるネットワークエミュレータ ツールを持っています。

このネットワークエミュレータツールは仮想OpenFlowスイッチの他に仮想ホストも設定できるので、Tremaで作ったプログラムはこの仮想環境で動作を確認する事ができるのです。

先ほど見たhello_tremaディレクトリの中には、hello_trema.rbの他にsample.confというファイルがあります。
このconfファイルはネットワークエミュレータツールの環境を定義するファイルです。

中身はテキストで以下のように書いてあります。

(sample.conf)
vswitch { datapath_id "0xabc" }

この内容で構成される仮想環境は、OpenFlowスイッチが一つあるだけという状況です。
このsample.confも先ほどのhello_trema.rbと同じディレクトリに用意してください。

仮想環境でプログラムを動かすにはコマンドラインに以下のように打ち込みます。

trema run ./hello-trema.rb -c ./sample.conf

画面には以下のように表示されたでしょうか。

$ trema run ./hello-trema.rb -c ./sample.conf
Hello 0xabc!
※Ctl-Cで終了します。

今回は以下の2点を試しました。
・tremaのプログラムを実行する
・ネットワークエミュレータツールを使う

次回はもう少しプログラムの内容を掘り下げたいと思います。

0 件のコメント:

コメントを投稿