TremaでOpenFlow
rbenv
を使ってRuby2以上を入れる。
普通に入れるとビルドで2時間くらいかかるので、バイナリだけコピーしてくる。
$ sudo apt-get install openssl libssl-dev libreadline-dev
rbenv
とruby-build
を入れて、パスを通す。
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
インストール確認。
$ rbenv -v
rbenv 0.4.0-129-g7e0e85b
rbenvのディレクトリ構造はこんな感じ。
ホーム直下に.rbenv
ディレクトリを作って、その中に全ファイルが入る。
$ tree -L 2 -d
.
├── bin
├── completions
├── libexec
├── plugins
│ └── ruby-build
├── rbenv.d
│ └── exec
├── shims
├── src
├── test
│ └── libexec
└── versions
└── 2.1.5
versions
下にRuby2.1.5のファイルを置く。
ホストからscp
でコピーし、.rbenv/versions/
配下に展開。
host$ scp 2.1.5.tar.gz pi@192.168.2.2:.rbenv/versions/
raspi$ cd ~/.rbenv/versions/
raspi$ tar xzvf 2.1.5.tar.gz
raspi$ rm 2.1.5.tar.gz
確認。
$ rbenv versions
* system (set by /home/pi/.rbenv/version)
2.1.5
パケットキャプチャ系のライブラリ等を入れる。
$ sudo apt-get install gcc make libpcap-dev libssl-dev
$ cd ~
$ git clone https://github.com/trema/trema-edge
$ cd trema-edge
$ rbenv local 2.1.5
$ rbenv exec gem install bundler
$ rbenv exec bundle install
そのままだと途中でコケるので、gcc
のオプションを一部外す。
$ vi ./Rakefile
CFLAGSのうち42行目のWcast-align
をコメントアウトする。
'-Wcast-align',
頭に#
をつけた行はコメント。
# '-Wcast-align',
$ rake
動作確認。
$ bin/trema -v
Trema-EdgeにはオリジナルのOpenFlowSwitchも入っています。
$ rake trema_switch
実行ファイルは変なところにできる。(開発中だから?)
$ sudo TREMA_HOME=/tmp/trema ./objects/switch/switch/switch --server_ip=192.168.2.1 --server_port=6653 --datapath_id=1 -i 0x1 -t stdout