Axiomtek社製 NA-812A に Open vSwitch 1.4 をセットアップする。
http://openvswitch.org/releases/openvswitch-1.4.0.tar.gz
から採ってくる。
但しこのバージョンは autoconf および automake を要求する。
automake は yum install automake するだけで良いが、
autoconf は CentOS 6.2 の標準的なものでは古い。
RPM を探すのが面倒だったので http://ftp.gnu.org/gnu/autoconf/ から autoconf 2.68 をとってきて ./configure ; make ; make install して手でインストールした。
# ./configure --with-linux=/lib/modules/`uname -r`/build # make # make install
カーネルモジュールのインストール。
# uname -r 2.6.32-220.7.1.el6.x86_64 ここに入れるように注意 # cp -p datapath/linux/openvswitch_mod.ko /lib/modules/2.6.32-220.7.1.el6.x86_64/kernel/drivers/misc/ # depmod # modprobe openvswitch_mod openvswitch_mod: Open vSwitch switching datapath 1.4.0, built Mar 21 2012 18:50:01 # lsmod | grep open openvswitch_mod 82933 0 ロードを確認 #
INSTALL.Linux ドキュメントに従い、以下を実行。
# mkdir -p /usr/local/etc/openvswitch (次のコマンドは openvswitch のソース展開ディレクトリのトップでやること(引数のスキーマが必要なので)) # ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema を実行して、以下のメッセージを確認。動作したらしい。 ovsdb-tool: 00001|lockfile|INFO|/usr/local/etc/openvswitch/.conf.db.~lock~: lock file does not exist, creating
DB サーバを起動する。
# ovsdb-server /usr/local/etc/openvswitch/conf.db \ --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vSwitch,manager_options \ --pidfile --detach # # ovs-vsctl --no-wait init で初期化。
スイッチデーモンを起動する。
# ovs-vswitchd --pidfile --detach Mar 21 19:01:35|00001|reconnect|INFO|unix:/usr/local/var/run/openvswitch/db.sock: connecting... Mar 21 19:01:35|00002|reconnect|INFO|unix:/usr/local/var/run/openvswitch/db.sock: connected #
試験運転用のコントローラを起動する。(ovs-controller は一般的な L2 learning switch として機能する)
# ovs-controller -v --detach ptcp: #
スイッチ情報をデータベースに登録する
ovs-vsctl add-bridge br0 スイッチを登録 ovs-vsctl add-port br0 eth1 ポートを登録 ovs-vsctl add-port br0 eth2 ovs-vsctl add-port br0 eth3 ovs-vsctl add-port br0 eth4 ovs-vsctl add-port br0 eth5 ovs-vsctl set-controller br0 tcp:127.0.0.1 接続するコントローラを指定
必要であれば(大抵必要だと思うが)datapath id を以下のようにして設定できる。
# ovs-vsctl set bridge br0 other-config:datapath-id=0000000000000012 DPID を 12 に設定 # ovs-vsctl get bridge br0 datapath-id DPID を確認 "0000000000000012" #
特に set 時に指定する datapath-id が 16 進数 16 桁であることが絶対である点に注意。 一桁でも不足があればコマンドは何ごともなく動作する(エラーメッセージがどこにも出ない)が、実際には反映されない。
以下のように状態が確認できる。
# ovs-vsctl show 44469118-c2e7-4956-b985-7bcb0a23b20b Bridge "br0" Controller "tcp:127.0.0.1" is_connected: true Port "eth2" Interface "eth2" Port "br0" Interface "br0" type: internal Port "eth4" Interface "eth4" Port "eth1" Interface "eth1" 順不同に出ている Port "eth5" Interface "eth5" Port "eth3" Interface "eth3" #
上記はethポートの情報などを端折っている。 他にも以下のようなコマンドで状態が確認できる。
ovs-dpctl show br0 スイッチ・ポートの情報(ovs-vsctl show と類似) ovs-ofctl show br0 OpenFlow スイッチとしての情報(DPID含む) ovs-ofctl dump-flows br0 フローテーブルの内容確認
実際の稼働時には対象インタフェイスがすべて ifconfig up してあることに注意。
down であってもただ動作しないだけで何もエラーは出ない。
modprobe openvswitch_mod する必要がある点も注意。
自動ロードには /etc/modprobe.d/ 以下に bridge.conf でも作ればいいが、どのみち実験用で自動起動で困る場合もあるので手作業のままとする。
以上で Open vSwitch 1.4 をインストールし、テストする準備ができた。