EtherIP を使って OpenFlow ネットワークを作る

今回は EtherIP を使って、openvswitch 同士を接続してみたいと思います。ハードウェア OpenFlow スイッチを持っていなくても、トンネルを使うことで、オーバーレイで OpenFlow ネットワークを作ることが出来ます。今回は、以下のような構成を作ることが目標です。
f:id:kazuya_ax:20120415152029p:image:w360

etherip のインストール

EtherIP の Kernel module 実装である EtherIP for Linux を使用します。kernel module は kernel のバージョンが違うと build 出来ないことがあるので、最新版を利用しましょう。ここ から取ってきます。

$ git clone git://git.8bytes.org/scm/etherip.git
$ cd etherip
$ make 
$ make driver
$ sudo make install
$ sudo make driver-install

kernel module のロードと tunnel endpoint の設定

対向の IP アドレスを 192.168.1.2 としたトンネルインターフェス ethip0 を、以下のように作ります。

$ sudo insmod /lib/modules/`uname -r`/misc/etherip.ko
$ sudo /usr/sbin/ethiptunnel -a -d 192.168.1.2 -n ethip0
$ sudo ifconfig ethip0 up

192.168.1.2 側の PC も同様に設定を行ってください。こちら側からのトンネルの対向のアドレスは 192.168.1.1 になります。

openvswitch の設定

openvswitch のインストールと初期設定は、こちら を参考にしてください。

$ sudo ovs-vsctl add-br ofs0
$ sudo ovs-vsctl add-port ethip0 
$ sudo ovs-vsctl add-port vnet0
$ sudo ovs-vsctl set-controller ofs0 tcp:192.168.1.1:6633

二台とも同様な設定を行って下さい。

trema/routing_switch の起動

Trema は 192.168.1.1 側のマシンで動作させます。

$ cd trema/
$ ./trema run -c ../apps/routing_switch/routing_switch_null.conf -d
$ TREMA_HOME=. ../apps/show_description/show_description
Manufacturer description: Nicira Networks, Inc.
Hardware description: Open vSwitch
... 省略

show_description コマンドにより、openvswitch 二台分の情報が表示されるはずです。次にトポロジーが正しく認識できているかを次のコマンドで確認します。

$ TREMA_HOME=. ../apps/topology/show_topology

二台の openvswitch の datapath_id と、それらの間のリンクに関する情報が表示されるはずです。
ここまで出来ていれば、VM 間の通信が出来るはずです。一方の VM 上から対向の VM に対して、ping を打ってみましょう。

次回は、EtherIP の代わりに GRE を使う方法について紹介したと思います。