安装准备
- GNU make C 编译器,如:GCC 4.6或更高版本;Clang 3.4或更高版本;MSVC 2013。有关其他Windows构建说明,请参阅在Windows上打开vSwitch。
- libssl,来自OpenSSL,是可选的,但如果您打算将Open vSwitch连接到OpenFlow控制器,则建议使用它。libssl用于在从OpenvSwitch到OpenFlow控制器的连接中建立机密性和真实性。如果安装了libssl,那么Open vSwitch将自动构建并支持它。
- 由Steve Grubb编写的libcap-ng是可选的,但推荐使用。作为 具有被删除root权限
的非根用户运行OVS后台进程是必需的。如果安装了libcap-ng,那么Open vSwitch将自动构建并支持它。 - Python 2.7。您还必须拥有Python six库版本1.4.0或更高版本。
- Unbound库(来自http://www.unbound.net)是可选的,但如果您希望在指定OpenFlow和OVSDB远程时启用ovs-vswitchd和其他实用程序使用DNS名称,则建议使用。如果unbound库已经安装,那么Open
vSwitch将自动构建并支持它。环境变量OVS_RESOLV_CONF可用于指定DNS服务器配置文件(Linux上的默认文件是/etc/resol_conf)。 - 在Linux上,您可以选择编译OpenvSwitch发行版附带的内核模块,或者使用构建在Linux内核(3.3或更高版本)中的内核模块。请参阅OpenvSwitch FAQ问题“作为上游Linux内核的一部分而发布的OpenvSwitch内核数据路径中有哪些特性是不可用的?”以获取更多有关这种权衡的信息。您还可以使用仅用于用户空间的实现,但在特性和性能上要付出一些代价。
要在Linux上编译内核模块,还必须安装以下软件:
- 支持的Linux内核版本。对于ingress police的可选支持,您必须启用内核配置选项NET_CLS_BASIC、NET_SCH_INGRESS和NET_ACT_POLICE,这些选项可以是内置的,也可以是作为模块启用的。NET_CLS_POLICE已经过时,不需要了。
- 在3.11之前的内核中,对于IP上的GRE隧道(NET_IPGRE),不能加载或编译ip_gre模块。
- 要使用Open vSwitch配置HTB或HFSC服务质量,必须启用相应的配置选项。
- 要对TAP设备使用Open vSwitch支持,必须启用CONFIG_TUN。
- 要构建内核模块,您需要与构建内核所用的GCC版本相同。
- 与模块要运行的Linux内核映像对应的内核构建目录。例如,在Debian和Ubuntu下,每个包含内核二进制文件的linux-image包都有一个相应的linux-headers包,该包具有所需的构建基础结构。
如果您使用的是Git树或快照(而不是发行版tarball),或者修改Open vSwitch构建系统或数据库模式,您还需要以下软件:
- Autoconf 2.63或更高版本。
- Automake 1.10或更高版本。
- libtool 2.4或更高版本。(旧版本也可能可以。)
安装命令
apt-get install git
apt-get install autoconf automake libtool
apt-get install openssl
apt-get install libssl-dev
apt-get install make
apt-get install make-guile
apt-get install python-six 如果没有安装python,请先安装python 2.7 or 3
sudo apt-get install libcap-ng-dev 可选,非root用户使用root权限运行ovs后台程序时推荐安装
sudo apt install gcc uml-utilities libtool build-essential pkg-config linux-headers-`uname –r` libncurses5-dev libncursesw5-dev libssl-dev bc make python-six
获取源码
wget http://openvswitch.org/releases/openvswitch-2.10.1.tar.gz.
tar -xvf openvswitch-2.10.1.tar.gz
cd openvswitch-2.10.1
#或者
git clone https://github.com/openvswitch/ovs.git
cd ovs
编译安装
下面命令需使用sudo或进入root用户
./boot.sh
./configure --with-linux=/lib/modules/$(uname -r)/build #如需编译内核则需要使用 --with-linux参数
make
make install #安装用户态程序
make modules_install #安装内核模块
内核模块加载配置
下面的代码可以使ovs启动时加载自己编译的内核模块,而不是linux自带的openvswitch.ko
config_file="/etc/depmod.d/openvswitch.conf"
for module in datapath/linux/*.ko; do
modname="$(basename ${module})"
echo "override ${modname%.ko} * extra" >> "$config_file"
echo "override ${modname%.ko} * weak-updates" >> "$config_file"
done
depmod -a
加载内核模块
/sbin/modprobe openvswitch
modinfo openvswitch 可查看openvswitch依赖的模块
modprobe -D openvswitch 可查看加载的是linux自带的openvswitch.ko模块还是自己编译的
/sbin/lsmod | grep openvswitch 查看安装是否成功
启动ovs
方法1
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl start --system-id=random #启动vswitchd
方法2
#在启动ovsdb-server本身之前,配置一个它可以使用的数据库:
mkdir -p /usr/local/etc/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
vswitchd/vswitch.ovsschema
mkdir -p /usr/local/var/run/openvswitch
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 --log-file
#上面这一段有点问题,会提示.log文件不存在,可以参考下面一段
ovsdb-server /etc/openvswitch/conf.db \
-vconsole:emer -vsyslog:err -vfile:info \
--remote=punix:/usr/local/var/run/openvswitch/db.sock \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--no-chdir --detach --monitor \
--log-file=/usr/local/var/log/openvswitch/ovsdb-server.log \
--pidfile=/usr/local/var/run/openvswitch/ovsdb-server.pid
#使用vs-vsctl初始化数据库
ovs-vsctl --no-wait init
#启动主Open vSwitch后台进程,告诉它连接到同一个Unix域套接
ovs-vswitchd --pidfile --detach --log-file
#或
ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock \
-vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir \
--log-file=/usr/local/var/log/openvswitch/ovs-vswitchd.log \
--pidfile=/usr/local/var/run/openvswitch/ovs-vswitchd.pid \
--detach --monitor
卸载内核模块
ovs-ctl stop
ovs-dpctl show
ovs-dpctl del-dp ovs-system
rmmod openvswitch
更多内容可参考官网
http://docs.openvswitch.org/en/latest/intro/install/general/