以前 userspace で動作する openvswitch について紹介しましたが、今回は kernel-mode で転送動作を行う openvswitch を OpenFlow スイッチとして動作させる方法をまとめてみました。
ソースは ここ にあるものを利用し、INSTALL.Linux を参考にインストールしてみます。
openvswitch の build とインストール
$ ./configure --with-linux=/lib/modules/`uname -r`/build $ make $ make install
Kernel モジュールのロード
Kernel モジュールを、以下のコマンドでロードします。
$ insmod datapath/linux/openvswitch_mod.ko
lsmod コマンドを使い、ロードが成功しているかを確認してください。kernel を upgrade した場合、このカーネルモジュールも作り直す必要があります。ご注意ください。
ovsdb-server の起動と初期化
$ mkdir -p /usr/local/etc/openvswitch $ ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema $ ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vSwitch,manager_options \ --pidfile --detach $ ovs-vsctl --no-wait init
ovs-vswitchd の起動と各種設定
$ ovs-vswitchd --pidfile --detach $ ovs-vsctl add-br ofs0 $ ovs-vsctl add-port ofs0 trema0-0 $ ovs-vsctl add-port ofs0 trema1-0 $ ovs-vsctl set-controller ofs0 tcp:127.0.0.1:6633 $ ovs-vsctl set bridge ofs0 other-config:datapath-id=0000000000000001
今回 OpenFlow スイッチとして動作させるインターフェイスに trema0-0, trema1-0 を指定しています。set-controller でコントローラ側の IP アドレス、ポート番号として、127.0.0.1:6633 を指定しています。このあたりはご自身の環境に合わせて変更してください。
設定の確認
以下のコマンドでそれぞれの設定が確認できます。
$ ovs-vsctl list-br ofs0 $ ovs-vsctl list-ports ofs0 trema0-0 trema1-0 $ ovs-vsctl get-controller ofs0 tcp:127.0.0.1:6633 $ ovs-vsctl get bridge ofs0 other-config {datapath-id="0000000000000001"}
以上の設定を行えば、コントローラとして動作させた Trema と接続できるはずです。以前に紹介した show_description コマンドなどで確認してみて下さい。