OpenWRT with OpenFlow を trema と接続する(その1)
srchack さんの patch により、OpenWRT を OpenFlow スイッチとして動作させることができるようになりました。OpenWRT の OpenFlow 化については こちら をご参照いただくとして、ここでは trema に繋いでみる方法について簡単に紹介します。
OpenWRT 側の変更
trema とつなぐためには、OpenWRT 側にも一部修正が必要です。
/lib/openflow/ofprotocol.sh を編集し、ofprotocol の引数に以下のパラメータを追加してください。
--inactivity-probe=90
編集済み ofprotocol.sh については、こちら に置いてあります。変更を行ったのは、28 行目と 30 行目です。
trema の準備と起動
Ubuntu マシン上で動かす trema の準備をしましょう。以下のようにします。
$ sudo apt-get install git gcc make ruby ruby-dev rubygems irb file libpcap-dev libsqlite3-dev $ git clone https://github.com/trema/trema.git $ (cd trema/; ./build.rb) $ (cd trema/; ./trema run ./src/examples/learning_switch/learning-switch.rb -d)
ここでは sample としてついてくる learning_switch というアプリケーションを trema 上で起動しています。この learning_switch は OpenFlow スイッチを一般の L2SW として動作させるアプリケーションです。
接続の確認
スイッチの Description を表示してみましょう。そのためのアプリケーションは、別のリポジトリにあるので、以下のようにしてください。
$ git clone https://github.com/trema/apps.git $ (cd apps/show_description/; make) $ TREMA_HOME=trema/ apps/show_description/show_desctiption Manufacturer description: Stanford University Hardware description: Reference Userspace Switch Software description: 1.0.0 Serial number: None Human readable description of datapath: OpenWrt pid=1909 Datapath ID: 0x2320477671 Port no: 1(0x1)(Port up) Hardware address: 10:6f:3f:07:d3:6f Port name: eth0.1 Port no: 2(0x2)(Port up) Hardware address: 10:6f:3f:07:d3:6f Port name: eth0.2 Port no: 3(0x3)(Port up) Hardware address: 10:6f:3f:07:d3:6f Port name: eth0.3 Port no: 4(0x4)(Port up) Hardware address: 10:6f:3f:07:d3:6f Port name: eth0.4 Port no: 65534(0xfffe:Local)(Port up) Hardware address: 00:23:20:47:76:71 Port name: tap0
このコマンドは、前記 learning_switch を動作させた上で、実行してください。上記のように表示できたでしょうか?