RaspberryPiでOpenvSwitchを動かしてみる


結論から先に、
OPENDAYLIGHT Helium + Open vSwitch v2.4.0 では、OpenFlow13は不可で、10で動きました。

Open vSwitch 2.4.0のインストールについては以下リンクを参考にしました(というよりほぼそのまんま)。
http://qiita.com/d4tt/items/45cb002413789b57c8fc#open-vswitchのセットアップソースから

・インストール
>pi@raspberrypi:~/openvswitch-2.4.0 $ dpkg -l | grep openvswitch
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo apt-get purge openvswitch-switch
パッケージ 'openvswitch-switch' はインストールされていないため、削除もされません
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo apt-get purge openvswitch-common
パッケージ 'openvswitch-common' はインストールされていないため、削除もされません
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo apt-get install dkms
以下の追加パッケージがインストールされます:
  cpp-4.6 firmware-linux-free gcc-4.6 libuuid-perl linux-base
  linux-headers-3.6-trunk-common linux-headers-3.6-trunk-rpi
  linux-image-3.6-trunk-rpi linux-kbuild-3.6
提案パッケージ:
  gcc-4.6-locales libmudflap0-4.6-dev gcc-4.6-doc libgcc1-dbg libgomp1-dbg
  libquadmath-dbg libmudflap0-dbg libcloog-ppl1 libcloog-ppl0 libppl-c4
  libppl12 libppl9 linux-doc-3.6 debian-kernel-handbook fdutils
推奨パッケージ:
  linux-headers-686-pae linux-headers-amd64 linux-headers-generic
  linux-headers linux-image
以下のパッケージが新たにインストールされます:
  cpp-4.6 dkms firmware-linux-free gcc-4.6 libuuid-perl linux-base
  linux-headers-3.6-trunk-common linux-headers-3.6-trunk-rpi
  linux-image-3.6-trunk-rpi linux-kbuild-3.6
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 0 個。
23.4 MB のアーカイブを取得する必要があります。
この操作後に追加で 87.7 MB のディスク容量が消費されます。

で、dkmsが終わってようなので実行してみたところNG
>pi@raspberrypi:~/openvswitch-2.4.0 $ sudo dpkg -i openvswitch-datapath-dkms_2.4.0-1_all.deb
dpkg: アーカイブ openvswitch-datapath-dkms_2.4.0-1_all.deb の処理中にエラーが発生しました (--install):
 アーカイブにアクセスできません: そのようなファイルやディレクトリはありません
処理中にエラーが発生しました:
 openvswitch-datapath-dkms_2.4.0-1_all.deb
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo dpkg -i openvswitch-common_2.4.0-1_armhf.deb
dpkg: アーカイブ openvswitch-common_2.4.0-1_armhf.deb の処理中にエラーが発生しました (--install):
 アーカイブにアクセスできません: そのようなファイルやディレクトリはありません
処理中にエラーが発生しました:
 openvswitch-common_2.4.0-1_armhf.deb
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo service openvswitch-switch start
Failed to start openvswitch-switch.service: Unit openvswitch-switch.service failed to load: No such file or directory.
pi@raspberrypi:~/openvswitch-2.4.0 $ 

これは一回リブートで解決


>pi@raspberrypi:~ $ sudo dpkg -i openvswitch-datapath-dkms_2.4.0-1_all.deb
以前に未選択のパッケージ openvswitch-datapath-dkms を選択しています。
(データベースを読み込んでいます ... 現在 141173 個のファイルとディレクトリがインストールされています。)
openvswitch-datapath-dkms_2.4.0-1_all.deb を展開する準備をしています ...
openvswitch-datapath-dkms (2.4.0-1) を展開しています...
openvswitch-datapath-dkms (2.4.0-1) を設定しています ...

>Creating symlink /var/lib/dkms/openvswitch/2.4.0/source ->
                 /usr/src/openvswitch-2.4.0

>DKMS: add completed.
Error! echo
Your kernel headers for kernel 4.1.17-v7+ cannot be found at
/lib/modules/4.1.17-v7+/build or /lib/modules/4.1.17-v7+/source.
pi@raspberrypi:~ $ sudo dpkg -i openvswitch-common_2.4.0-1_armhf.deb
以前に未選択のパッケージ openvswitch-common を選択しています。
(データベースを読み込んでいます ... 現在 142332 個のファイルとディレクトリがインストールされています。)
openvswitch-common_2.4.0-1_armhf.deb を展開する準備をしています ...
openvswitch-common (2.4.0-1) を展開しています...
openvswitch-common (2.4.0-1) を設定しています ...
man-db (2.7.0.2-5) のトリガを処理しています ...

openvswitch-switchでuuid−runtimeがないと言わます。

>pi@raspberrypi:~ $ sudo dpkg -i openvswitch-switch_2.4.0-1_armhf.deb
以前に未選択のパッケージ openvswitch-switch を選択しています。
(データベースを読み込んでいます ... 現在 142383 個のファイルとディレクトリがインストールされています。)
openvswitch-switch_2.4.0-1_armhf.deb を展開する準備をしています ...
openvswitch-switch (2.4.0-1) を展開しています...
dpkg: 依存関係の問題により openvswitch-switch の設定ができません:
 openvswitch-switch は以下に依存 (depends) します: uuid-runtime ...しかし:
  パッケージ uuid-runtime はまだインストールされていません。
dpkg: パッケージ openvswitch-switch の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u3) のトリガを処理しています ...
処理中にエラーが発生しました:
 openvswitch-switch

足します
>
pi@raspberrypi:~ $ sudo apt-get install uuid-runtime
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  uuid-runtime
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
73.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 115 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main uuid-runtime armhf 2.25.2-6 [73.6 kB]
73.6 kB を 1秒 で取得しました (62.2 kB/s)
以前に未選択のパッケージ uuid-runtime を選択しています。
(データベースを読み込んでいます ... 現在 142420 個のファイルとディレクトリがインストールされています。)
.../uuid-runtime_2.25.2-6_armhf.deb を展開する準備をしています ...
uuid-runtime (2.25.2-6) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u3) のトリガを処理しています ...
uuid-runtime (2.25.2-6) を設定しています ...
グループ `uuidd' (グループ ID 115) を追加しています...
完了。
警告: 指定されたホームディレクトリ /run/uuidd にアクセスできません: そのようなファイルやディレクトリはありません
システムユーザ `uuidd' (UID 110) を追加しています...
新しいユーザ `uuidd' (UID 110) をグループ `uuidd' に追加しています...
ホームディレクトリ `/run/uuidd' は作成しません。
openvswitch-switch (2.4.0-1) を設定しています ...
systemd (215-17+deb8u3) のトリガを処理しています ...

openvswitch-switchリベンジ。
>pi@raspberrypi:~ $ sudo dpkg -i openvswitch-switch_2.4.0-1_armhf.deb
(データベースを読み込んでいます ... 現在 142433 個のファイルとディレクトリがインストールされています。)
openvswitch-switch_2.4.0-1_armhf.deb を展開する準備をしています ...
openvswitch-switch (2.4.0-1) で (2.4.0-1 に) 上書き展開しています ...
openvswitch-switch (2.4.0-1) を設定しています ...
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u3) のトリガを処理しています ...

一見うまく行ったように見えましたが、まだあります。
いちおうサービスを確認。
>pi@raspberrypi:~ $ sudo service --status-all
> [ + ]  openvswitch-switch

今度はこちらを参考にして
【SDNチャレンジ】 第5回 Raspberry Pi2にOpen vSwitchをインストール:(http://www.adoc.co.jp/blog/e000190.html)

OpenvSwitchデーモン起動。
>pi@raspberrypi:~ $ sudo mkdir /usr/local/etc/openvswitch
pi@raspberrypi:~ $ sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
ovsdb-tool: failed to read schema: "vswitchd/vswitch.ovsschema" could not be read as JSON (error opening "vswitchd/vswitch.ovsschema": No such file or directory)
>pi@raspberrypi:~/openvswitch-2.4.0 $ sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
>pi@raspberrypi:~/openvswitch-2.4.0 $ sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach
ovsdb-server: /var/run/openvswitch/ovsdb-server.pid: already running as pid 709, aborting
pi@raspberrypi:~/openvswitch-2.4.0 $ 
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo ovs-vsctl --no-wait init
pi@raspberrypi:~/openvswitch-2.4.0 $ sudo ovs-vswitchd --pidfile --detach
ovs-vswitchd: /var/run/openvswitch/ovs-vswitchd.pid: already running as pid 733, aborting

ブリッジ作ってみる。
>pi@raspberrypi:~/openvswitch-2.4.0 $ sudo ovs-vsctl add-br br1

>pi@raspberrypi:~/openvswitch-2.4.0 $ ifconfig
br1       Link encap:イーサネット  ハードウェアアドレス 9a:9e:8a:fc:a9:44 
          inet6アドレス: fe80::ff25:e175:2ea6:3e32/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:91:35:c2 
          inetアドレス:192.168.0.14 ブロードキャスト:192.168.0.255  マスク:255.255.255.0
          inet6アドレス: 240d:0:1226:9d00:579e:d594:44dc:9471/64 範囲:グローバル
          inet6アドレス: fe80::3227:958e:b751:7f06/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
lo        Link encap:ローカルループバック  
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
ovs-system Link encap:イーサネット  ハードウェアアドレス aa:b7:c1:f3:32:79 
          inetアドレス:169.254.65.236 ブロードキャスト:169.254.255.255  マスク:255.255.0.0
          inet6アドレス: fe80::7141:ce2e:7931:670c/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1