openvswitch升级到2.8.1
在实验中有使用meter表的需求,ovs2.8之前的版本是不支持meter的。所以我们要把ovs升级到2.8以上。
查看当前ovs的版本可以用ovs-vsctl show
或者ovs-vsctl --version
我现在的ovs版本是2.3.0,系统是ubuntu17.04,mininet版本2.3.0。ryu版本4.15。
注意:我们现在说的是升级,这表明我们已经安装了相关依赖,并且ovs能够正常使用。以上是基础。
我们一般安装的OVS都是内核版本的,并且系统中还装有ovs的服务,这意味着我们要先删除原有的ovs。
我们先把ovs的服务停掉,我的系统里只有这一个ovs的服务,如果有多个,都停掉:
/etc/init.d/openvswitch-switch stop
删除OVS相关包:
apt-get remove openvswitch-common openvswitch-datapath-dkms openvswitch-controller openvswitch-pki openvswitch-switch
Note:openvswitch-controller在OVS2.1之后不再默认安装,所以如果系统里没有这个包也不要慌,上面这条命令只是确保删除所有的包,读者可以自行查看并删除自己已经安装的包。
首先到OVS的官网上下载openvswitch2.8.1的源码,
用wget下载压缩包,然后tar解压缩到到当前目录:
wget http://openvswitch.org/releases/openvswitch-2.8.1.tar.gz
tar -zxvf openvswitch-2.8.1.tar.gz
然后进入源码的主目录:
cd openvswitch-2.8.1
构建Linux内核模块,以便可以运行基于内核的交换机,传递内核构建目录的位置--with-linux。例如,要构建一个正在运行的Linux实例:
./configure --prefix=/usr --with-linux=/lib/modules/`uname -r`/build
然后构建OVS(这个步骤比较花时间):
make
然后安装ovs到系统中:
make install
如果刚刚我们构建了内核模块,这时候需要把模块安装到系统里:
make modules_install
查看是否有ovs的模块,成功的话应该有多个ovs的模块。
lsmod | grep openvswitch
如果没有相关模块,就加载openvswitch模块。
modprobe openvswitch
设置环境变量(仅限本次登陆),启动ovs-ctl。
export PATH=$PATH:/usr/share/openvswitch/scripts
ovs-ctl start
Note:这一步是很重要的,关键在于后面这个目录到底是哪一个,如果目录出现问题,可以用locate命令查看ovs-ctl所在的目录,把目录改为显示的目录:
locate ovs-ctl
启动完ovs,我们可以查看进程:
ps -el |grep ovs
现在应该有两个守护进程ovsdb-server和ovs-vswitchd。
同时,ovs-ctl允许使用特定选项单独启动/停止守护进程。要启动ovsdb-vswitchd:
ovs-ctl --no-ovs-vswitchd start
同样,要启动ovs-server:
ovs-ctl --no-ovsdb-server start
下面需要配置ovs需要使用的数据库,如果构建OVS时没有支持SSL,可以省略--private-key,--certificate和--bootstrap-ca-cert,--log-file表示启动日志,--detach表示后台方式运行:
mkdir -p /usr/var/run/openvswitch
ovsdb-server --remote=punix:/usr/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
构建完成需要初始化数据库,这个命令只需要使用一次:
ovs-vsctl --no-wait init
然后启动主要的ovs的守护进程vswitchd:
ovs-vswitchd --pidfile --detach --log-file
至此,安装过程就结束了。
如果我们想停止OVS,可以使用如下命令:
kill `cd /usr/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid`
查看ovs的版本,已经变成了2.8.1。
下面创建一个拓扑进行meter测试:
meter表是of1.3之后才支持的,所以在使用的时候需要加上-O OpenFlow.
使用meter需要注意的是datapath类型要指定为netdev,band type暂时只支持drop,还不支持DSCP REMARK。
ovs-vsctl set bridge s1 datapath_type=netdev
ovs-ofctl -O OpenFlow13 add-meter s1 meter=1,kbps,band=type=drop,rate=20
限速类型以kbps(kilobits per second)计算,超过20kb/s则丢弃
有关meter表的使用可以参考ovs命令手册也可以看看这个博客
有关安装和升级的详细过程可以参考github上OVS给出的教程和github上mininet给出的更新教程
61234
請問 作者我的版本也是ovs2.8.1
ovs-ofctl add-meter s1 meter=1,kbps,bands=type=drop,rate=3000,type=drop,rate=6000 -O OpenFlow13
我確定meter表有一個band兩個type 然後rate分別是3000和6000
但是我用iperf測試不管打到多少的bandwidth 他都是鎖3M左右 沒辦法到6M(我打8m也一樣 請問大大是2.8.1還不支援多個type嗎