自宅ラック勉強会として、僕の自宅でやりました。
(OpenFlow系は2系らしいので、2.7になりましたw)
「Tremaの続きを、始めよう。」と題して、
#sdnstudy第2回のTremaハンズオン資料をもとに
できなかった部分をやろう、という企画でした。
そもそも僕はTremaのセットアップができなくて、実は全くハンズオンに参加できていなかったんです(泣
しかも勉強会前にTremaセットアップしておくつもりだったのに、何度やってもうまくいかず。。
仕方ないので、構築実績のある人に教えてもらいました^^;
まず、資料にはgemを使ってTremaをインストールする手順になっていますが
世間のブログ見ると、githubからとってくる人が大半のようで
そっちでやってみることにしたのですが、うまくいかない。
やっぱりbuld.rbでこける。
どうやらこれは何らかのライブラリが足りないことに起因しているらしいです。
で、Ubuntu10.04だとうまくいかないけれど、11.10だとうまくいってるよ?
ということで、11.10をインストールしてセットアップしてみたところ・・・
おお、ちゃんとビルドしとるwww
というわけで何とかTremaのセットアップができたわけでした。
ここでやっとスタート地点に立った感じですねw
教えていただいた@PANTOMAIMUさんのブログはこちら
http://ligayasystem.blog92.fc2.com/
以下、コマンドメモ
cd /var/tmp
sudo apt-get install git-core gcc make ruby ruby-dev irb libpcap-dev libsqlite3-dev
git clone git://github.com/trema/trema.git
./trema/build.rb
buildが完了したら、資料にあるmy_simu.confとmy_app.rbを作成して動かしてみる
./trema run -c my_simu.conf my_app.rb
をを、ちゃんと動いた。(この時点では命令を入れてないので、何の反応もありませんがw)
そして資料を進めていく。。(周囲に聞きながら)
途中詰まったところとして、こちらのブログに書いてあったので気づいたこと。
http://ping.hatenablog.com/entry/2012/04/29/191811
features_replyの引数は、datapath_idとmessageを両方渡さないと動かなかったです。
ハンズオンの資料にはdatapath_idの記載が無いのですが、これは
gemインストールのパッケージに何かが欠落してて、datapath_idが無くても動くらしいのです。
githubからbuildした場合はdatapath_idを引数に指定しないと動きません。
なので、githubからbuildした場合はこうなるのが正しい。
def features_reply datapath_id,message
資料で補足しないといけないところはそこらへんくらいで、あとはつつがなく進みました。
リピータハブができましたw
そして、自宅ラック勉強会界隈では某牛ルータをOpenFlowコントローラにするのが流行っておりまして
今回はそれをTremaに認識させて、リピータハブにするところまでできました。
ちなみにリピータハブ同士をつないで通信させようとしたんですが
それは「アップリンクポート作らないと駄目じゃね?」ということで
今回はできませんでした。
というわけで、充実した勉強会になりました。
参加者の皆様、ありがとうございました。
gemパッケージの罠には苦労しましたが、何とかHUBまでいきました。
Tremaの試験用ネットワークでの動作確認を行ったのは、今回が初めてだったのでいい勉強になりました :-)