Ubuntu-12.04.3にopenvswitch-2.0.0をインストール
Posted on 2013/11/16(Sat) 01:51 in technical
概要
色々と新しくなっているので、 Ubuntu-12.04.4 + openvswitch-2.1.0のインストール手順 も合わせて見てくださいな。
それにほら、もうUbuntu-12.04.3のISOを手に入れるのも難しいでしょ?
とりあえず、僕も流行に流されてopenvswitchのインストール記事を書いてみようと思う。
あれ程Wordpress嫌だPelicanにしたいのー!って言ってた割にネタが出来ると先に記事を書くとか反省が足りない。
さて。
例によってUbuntu-12.04 server amd64にopenvswitch-2.0.0をインストールしてポート作って眺める程度。
前回、Ubuntu-13.10を持ってきて楽しようとしたらVXLANが動かなかった ので、そもそもまともにやれば動くんですか?ってところを確認する意図が大きい。
では、以下ログです。
カーネルモジュール以外のパッケージ作成とインストールはINSTALL.Debianに従います。
# uname -a Linux ubuntu 3.8.0-33-generic #48~precise1-Ubuntu SMP Thu Oct 24 16:28:06 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux # cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS" # wget http://openvswitch.org/releases/openvswitch-2.0.0.tar.gz # tar zxvf openvswitch-2.0.0.tar.gz # rm openvswitch-2.0.0.tar.gz # cd openvswitch-2.0.0/ # apt-get install build-essential fakeroot # dpkg-checkbuilddeps dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 8) autoconf (>= 2.64) automake (>= 1.10) | automake1.10 libssl-dev python-all (>= 2.6.6-3~) python-qt4 python-twisted-conch # apt-get install debhelper autoconf automake libssl-dev python-all python-qt4 python-twisted-conch # dpkg-checkbuilddeps # fakeroot debian/rules binary # cd .. # dpkg -i openvswitch-common_2.0.0-1_amd64.deb openvswitch-switch_2.0.0-1_amd64.deb
警告
もし、fakeroot debian/rules binaryの1回目に失敗したら、もう1回同じコマンド叩いてやれば通るかもしれない。
カーネルモジュール以外はここまででいいんだけど、 前回の結果を見る通り OVSが対応しててもカーネルモジュールが対応してないとエラー吐いてポート追加されません。
カーネルモジュールの作成とインストールはINSTALLに従います。
# cd openvswitch-2.0.0/ # ./boot.sh Can't exec "libtoolize": No such file or directory at /usr/bin/autoreconf line 196. Use of uninitialized value in pattern match (m//) at /usr/bin/autoreconf line 196. # apt-get install libtool autopoint # ./configure --with-linux=/lib/modules/`uname -r`/build # make # ls -la ./datapath/linux/openvswitch.ko -rw-r--r-- 1 root root 6362070 Nov 16 00:55 ./datapath/linux/openvswitch.ko
とりあえず最初から入ってるモジュールと比較してみる。
# modinfo openvswitch filename: /lib/modules/3.8.0-33-generic/kernel/net/openvswitch/openvswitch.ko license: GPL description: Open vSwitch switching datapath srcversion: 15C32AD9E04F379CAC3D68E depends: intree: Y vermagic: 3.8.0-33-generic SMP mod_unload modversions # modinfo ./datapath/linux/openvswitch.ko filename: ./datapath/linux/openvswitch.ko version: 2.0.0 license: GPL description: Open vSwitch switching datapath srcversion: BCA57909B6F92E9C5D40249 depends: libcrc32c,gre vermagic: 3.8.0-33-generic SMP mod_unload modversions
INSTALLに書いてあるとおりにインストールしようとする。
# make modules_install cd datapath/linux && make modules_install make[1]: Entering directory `/root/openvswitch-2.0.0/datapath/linux' make -C /lib/modules/3.8.0-33-generic/build M=/root/openvswitch-2.0.0/datapath/linux modules_install make[2]: Entering directory `/usr/src/linux-headers-3.8.0-33-generic' INSTALL /root/openvswitch-2.0.0/datapath/linux/openvswitch.ko Can't read private key DEPMOD 3.8.0-33-generic make[2]: Leaving directory `/usr/src/linux-headers-3.8.0-33-generic' depmod `sed -n 's/#define UTS_RELEASE "\([^"]*\)"/\1/p' /lib/modules/3.8.0-33-generic/build/include/generated/utsrelease.h` make[1]: Leaving directory `/root/openvswitch-2.0.0/datapath/linux'
http://www.mail-archive.com/discuss@openvswitch.org/msg08005.html によれば、既にあるからエラー吐いてるだけだよ、って話。
動くか確認。
# rmmod openvswitch # modprobe gre # modprobe libcrc32c # insmod ./datapath/linux/openvswitch.ko
読み込みまで問題ないので、任意で置き換えてしまう。
# mv /lib/modules/3.8.0-33-generic/kernel/net/openvswitch/openvswitch.ko /lib/modules/3.8.0-33-generic/kernel/net/openvswitch/openvswitch.ko.org # mv ./datapath/linux/openvswitch.ko /lib/modules/3.8.0-33-generic/kernel/net/openvswitch/openvswitch.ko # echo "gre" >> /etc/modules # echo "libcrc32c" >> /etc/modules # echo "openvswitch" >> /etc/modules
今回はVXLANのポートもちゃんと追加できるといいなぁ、と思ってたら割とすんなり動いたので一安心。
# ovs-vsctl add-br ovs-01 # ovs-vsctl add-port ovs-01 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.56.101 # ovs-vsctl add-port ovs-01 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=192.168.56.101 options:key=101 # ovs-ofctl show ovs-01 OFPT_FEATURES_REPLY (xid=0x2): dpid:0000163ad2c0374b n_tables:254, n_buffers:256 capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE 1(gre0): addr:2e:fd:1c:ef:51:cb config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max 2(vxlan0): addr:f2:99:dd:1f:80:1f config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max LOCAL(ovs-01): addr:f6:65:46:ab:07:df config: PORT_DOWN state: LINK_DOWN speed: 0 Mbps now, 0 Mbps max OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0 # ovs-vsctl show cf7b4728-6c31-4e90-af6d-6b7ac60b0844 Bridge "ovs-01" Port "gre0" Interface "gre0" type: gre options: {remote_ip="192.168.56.101"} Port "ovs-01" Interface "ovs-01" type: internal Port "vxlan0" Interface "vxlan0" type: vxlan options: {key="101", remote_ip="192.168.56.101"} ovs_version: "2.0.0" # ovs-dpctl show system@ovs-system: lookups: hit:2 missed:4 lost:0 flows: 0 port 0: ovs-system (internal) port 1: ovs-01 (internal) port 2: gre_system (gre: df_default=false, ttl=0) port 3: vxlan_sys_4789 (vxlan: df_default=false, ttl=0) # tail -3 /var/log/openvswitch/ovs-vswitchd.log 2013-11-15T16:21:40.143Z|00009|memory|INFO|facets:3 ports:1 rules:4 subfacets:3 2013-11-15T16:21:56.821Z|00010|bridge|INFO|bridge ovs-01: added interface gre0 on port 1 2013-11-15T16:22:00.924Z|00011|bridge|INFO|bridge ovs-01: added interface vxlan0 on port 2
とりあえずここまで。