最近一直想能够获取mininet下openvswitch的源码,但查看各种目录均没找到openvswitch源码的存放位置,最后只好通过升级openvswitch版本来解决问题,由于内核不兼容,之前尝试了很多次都没有成功,今天终于成功了,因此记录一下能成功的相关步骤,以便在后续需要重新配置时帮助回顾。
之前用Ubuntu14.04TLS与Ubuntu16.04都尝试过,都没有成功,最后只好选择Ubuntu12.04。
环境:
虚拟机:Ubuntu12.04.5 3.13.0-32-generic(通过uname -r查看)
mininet:2.3.0d1
openvswitch:2.3.0
关于Linux内核版本与OVS对应关系,可查看网址:http://www.sdnlab.com/3166.html,一定要将升级后的版本与Linux内核版本匹配,不然容易出问题。
一、安装mininet(我是源码安装的),最好是没有装过mininet,不然需要卸载,相关网址:http://www.sdnlab.com/15138.html
可能还需要手动删除
apt-get update
apt-get upgrade
git clone git://github.com/mininet/mininet
cd mininet
./util/install.sh -a
mn --test pingall
mn --version
ovs-vsctl --version
二、升级openvswitch版本
cd /home/XXX 进入需要下载目录
mkdir openvswitch
cd openvswitch
wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz
tar -xzf openvswitch-2.3.0.tar.gz
cd openvswitch-2.3.0
apt-get install build-essential fakeroot 安装openvswitch所需依赖
apt-get install debhelper autoconf automake libssl-dev pkg-config bzip2 openssl python-all procps python-qt4 python-zope.interface python-twisted-conch
apt-get install -y build-essential
dpkg-checkbuilddeps 这一步可能提示还有相关依赖文件没安装,直接用apt-get install XXX安装即可(或者试试apt-get -f install)
fakeroot debian/rules binary
cd ..
dpkg -i *.deb
/etc/init.d/openvswitch-controller stop 禁止Open VSwitch Controller开机自启动
update-rc.d openvswitch-controller disable
/etc/init.d/openvswitch-switch restart 重启openvswitch
三、验证安装
ovs-vsctl --version
mn --version
四、openvswitch自动化编译:主要是编写简单的shell脚本来实现,在运行时需要先修改权限,假设脚本名为testshell
chmod 777 testshell
./testshell
自动化编译脚本:
#! /bin/sh
kill `cd /usr/local/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid`
aptitude remove openvswitch-common openvswitch-datapath-dkms openvswitch-controller openvswitch-pki openvswitch-switch -y
rmmod openvswitch
cd openvswitch/openvswitch-2.3.0
#make clean
./configure --with-linux=/lib/modules/`uname -r`/build
make
make install
modprobe gre
insmod datapath/linux/openvswitch.ko
make modules_install
modprobe openvswitch
#disable openvswitch controller
/etc/init.d/openvswitch-controller stop
update-rc.d openvswitch-controller disable
#start the new ovs
/etc/init.d/openvswitch-switch start
ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach --log-file
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach
特别注意,进入openvswitch的目录需要与自己安装openvswitch-2.3.0的目录保持一致,将该shell脚本放在与openvswitch同一目录下。
另外,只有利用该脚本对已经升级过的openvswitch源码进行测试,在成功运行的情况下才能基本保证openvswitch源码升级成功。
以上是自己这几天配置环境的一点经验,可能有不对的地方,还望大家多多指正,共勉。