Open vSwitch Raspberry Pi Raspbian

Raspberry Pi 3 Model B, Raspbian で Open vSwitch (自前ビルド)

投稿日:

基本的には GitHub https://github.com/openvswitch/ovs/blob/master/INSTALL.md に記載されている手順通りにすればよいです.

注意点としては,現時点で最新の Raspbian のカーネルは 4.4 です.一方,現時点での Open vSwitch のリリースバージョンである 2.5.0 はカーネル 4.3 までをサポートし,4.4 をサポートしていません.そのままビルドしてもエラーになります.GitHub の Open vSwitch の最新のコードではカーネル 4.4 もサポートしているため,そちらを clone してビルドします.

Raspberry Pi

Raspberry Pi 3 Model B (Element14)

SD カード

Transcend microSDHC カード 32GB Class10 TS32GUSDHC10E (FFP)

OS

RASPBIAN JESSIE
Full desktop image based on Debian Jessie
Version:May 2016
Release date:2016-05-27
Kernel version:4.4

USB - LAN アダプタ

割と売れ筋と思われるギガビット対応の USB - LAN アダプタを 4 つ接続してみました.元々付いているイーサネットポートと合わせて 5 つになります.eth0 から eth4 まで存在することになります.

BUFFALO LUA4-U3-AGT
Planex USB-LAN1000R
Logitec LAN-GTJU3
ANKER A7611

手順

Linux を使用して Raspbian を SD カードに書き込みます.SD カードのデバイス名には細心の注意を払います.

unzip 2016-05-27-raspbian-jessie.zip
sudo dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/sdXXX
sudo sync

だいたい 5 分程度で書き込みます.

958+1 records in
958+1 records out
4019191808 bytes (4.0 GB) copied, 325.691 s, 12.3 MB/s

Raspberry Pi に SD カードを挿入して電源を入れます.

カーネルは下記の通り.

uname -a
Linux raspberrypi 4.4.11-v7+ #888 SMP Mon May 23 20:10:33 BST 2016 armv7l GNU/Linux

OS 情報は下記の通り.

cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

ディスクの情報は下記の通り.

最近は 4GB 以上の SD カードを使用している場合,初回起動時に SD カードのサイズに合わせて自動でサイズ拡張してくれるようになったようです.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  3.3G   25G  12% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M   13M  451M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   21M   43M  33% /boot
tmpfs            93M     0   93M   0% /run/user/1000

パッケージの最新化.

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo reboot

再起動後,

uname -a
Linux raspberrypi 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux

cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  3.4G   25G  13% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.4M  457M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   21M   43M  33% /boot
tmpfs            93M     0   93M   0% /run/user/1000

ビルドに必要なパッケージと kernel-headers をインストールしておきます.

sudo apt-get -y install libssl-dev libcap-ng-dev autoconf libtool
sudo apt-get -y install raspberrypi-kernel-headers

GitHub からソースを clone してビルドしてインストールします.ビルドは 15 分程度かかりました.

cd ~/Downloads
git clone https://github.com/openvswitch/ovs
cd ovs
./boot.sh
./configure --with-linux=/lib/modules/`uname -r`/build
make
sudo make modules_install
sudo modprobe openvswitch
sudo make install

設定のデータベースを初期化します.

sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema

Open vSwitch を起動する前に,データベース用のサーバーを機動しておきます.

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

ovs-vsctl でデータベースを初期化します.これは,ovsdb-tool でデータベースを作成した後, 1回だけ実行します.

sudo ovs-vsctl --no-wait init

Open vSwitch を開始させます.

sudo ovs-vswitchd --pidfile --detach

実行後,下記のようなメッセージが表示されます.

2016-07-27T23:57:31Z|00001|ovs_numa|INFO|Discovered 4 CPU cores on NUMA node 0
2016-07-27T23:57:31Z|00002|ovs_numa|INFO|Discovered 1 NUMA nodes and 4 CPU cores
2016-07-27T23:57:31Z|00003|reconnect|INFO|unix:/usr/local/var/run/openvswitch/db.sock: connecting...
2016-07-27T23:57:31Z|00004|reconnect|INFO|unix:/usr/local/var/run/openvswitch/db.sock: connected

以降,ovs-vsctl add-br なり add-port なり,いろいろ実行できるようになります.

その他

今回使用した 4 種類のギガビット対応 USB - LAN アダプタですが,Raspberry Pi + Raspbian に接続すると,下記のようになります.

違うメーカーでも同じチップを使用してるようです.

BUFFALO LUA4-U3-AGT
ID 0b95:1790 ASIX Electronics Corp.

[ 365.902988] usb 1-1.3: new high-speed USB device number 4 using dwc_otg
[ 366.008971] usb 1-1.3: New USB device found, idVendor=0b95, idProduct=1790
[ 366.008994] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 366.009006] usb 1-1.3: Product: AX88179
[ 366.009019] usb 1-1.3: Manufacturer: ASIX Elec. Corp.
[ 366.009031] usb 1-1.3: SerialNumber: 000000000010D8
[ 367.411417] ax88179_178a 1-1.3:1.0 eth1: register 'ax88179_178a' at usb-3f980000.usb-1.3, ASIX AX88179 USB 3.0 Gigabit Ethernet, cc:e1:d5:0d:c3:d4
[ 367.411579] usbcore: registered new interface driver ax88179_178a
[ 367.870593] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready

Logitec LAN-GTJU3
ID 0b95:1790 ASIX Electronics Corp.

[ 503.653977] usb 1-1.5: new high-speed USB device number 6 using dwc_otg
[ 503.759997] usb 1-1.5: New USB device found, idVendor=0b95, idProduct=1790
[ 503.760019] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 503.760032] usb 1-1.5: Product: AX88179
[ 503.760045] usb 1-1.5: Manufacturer: ASIX Elec. Corp.
[ 503.760057] usb 1-1.5: SerialNumber: 003495DB2BD919
[ 504.102027] ax88179_178a 1-1.5:1.0 eth3: register 'ax88179_178a' at usb-3f980000.usb-1.5, ASIX AX88179 USB 3.0 Gigabit Ethernet, 34:95:db:2b:d9:19
[ 505.611695] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready

Planex USB-LAN1000R
ID 0bda:8153 Realtek Semiconductor Corp.

[ 435.803483] usb 1-1.2: new high-speed USB device number 5 using dwc_otg
[ 435.905185] usb 1-1.2: New USB device found, idVendor=0bda, idProduct=8153
[ 435.905208] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[ 435.905220] usb 1-1.2: Product: USB 10/100/1000 LAN
[ 435.905233] usb 1-1.2: Manufacturer: Realtek
[ 435.905245] usb 1-1.2: SerialNumber: 000001000000
[ 435.935736] usbcore: registered new interface driver r8152
[ 435.939115] usbcore: registered new interface driver cdc_ether
[ 436.013485] usb 1-1.2: reset high-speed USB device number 5 using dwc_otg
[ 436.151433] r8152 1-1.2:1.0 eth2: v1.08.2
[ 437.163768] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready

ANKER A7611
ID 0bda:8153 Realtek Semiconductor Corp.

[ 718.975527] usb 1-1.4: new high-speed USB device number 8 using dwc_otg
[ 719.077212] usb 1-1.4: New USB device found, idVendor=0bda, idProduct=8153
[ 719.077233] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[ 719.077246] usb 1-1.4: Product: USB 10/100/1000 LAN
[ 719.077259] usb 1-1.4: Manufacturer: Realtek
[ 719.077271] usb 1-1.4: SerialNumber: 000002000000
[ 719.155528] usb 1-1.4: reset high-speed USB device number 8 using dwc_otg
[ 719.293609] r8152 1-1.4:1.0 eth4: v1.08.2
[ 720.525855] IPv6: ADDRCONF(NETDEV_UP): eth4: link is not ready

-Open vSwitch, Raspberry Pi, Raspbian

Copyright© hirooka.pro , 2013-2018 All Rights Reserved.