您的位置:首页 > 其它

实战录|基于DPDK的OVS环境搭建及验证

2016-12-12 11:06 363 查看
《实战录》导语

云端卫士《实战录》栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益。本期分享人为云端卫士SDN工程师宋飞虎,宋工出品,质量保证,欢迎火速围观。

简介

OVS是一个高质量的,多层虚拟交换机(网络分层的层),其目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议。Dpdk是X86平台报文快速处理的库和驱动的集合,不是网络协议栈,不提供二层,三层转发功能,不具备防火墙ACL功能,但通过DPDK可以轻松的开发出上述功能。Dpdk的优势是可以将用户态的数据,不经过内核直接转发到网卡,实现加速目的。本文向大家展示了DPDK和OVS环境搭建的过程,同时针对功能进行了测试。

实验环境

1、ONOS环境

环境依赖

DPDK环境:Kernel version >= 2.6.34

glibc >= 2.7

memory >= 1024

vcpu = 2

检查环境的网卡是否被DPDK支持,可以从下面的官网查询:http://www.dpdk.org/doc/nics

OVS环境:OVS各版本支持的Linux内核如下,可以根据下表选择适合的Linux系统安装。



本文实验环境

DPDK版本: dpdk-stable-16.07.1

Ovs版本: Open vSwitch 2.6.1

Linux版本: 3.10.0-123.el7.x86_64

Red Hat版本: 4.8.2-16

2、DPDK和OVS编译安装

如果安装环境有OVS,需要卸载重新编译,因为安装OVS+DPDK,OVS编译时需要使用DPDK的库。

安装DPDK

打开安装目录: cd /home/sdn/

下载安装包: wget http://dpdk.org/browse/dpdk/snapshot/dpdk-16.07.zip
解压安装包: unzip dpdk-16.07.zip

设置全局变量:

export DPDK_DIR=/usr/src/dpdk-16.07

export DPDK_TARGET=x86_64-native-linuxapp-gcc

export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET

安装DPDK:make install T=$DPDK_TARGET DESTDIR=install

安装OVS

打开安装目录:cd /home/sdn

下载安装包: wget http:// openvswitch.org/ releases/ openvswitch-2.6.1.tar.gz

解压安装包:tar -zxvf openvswitch-2.6.1.tar.gz

设置全局变量: export OVS_DIR=/home/sdn/openvswitch-2.6.1

安装OVS: cd $OVS_DIR

./boot.sh

./configure --with-dpdk=$DPDK_BUILD

make install

配置hugepage

1)修改hugepage的页数为2048

echo 'vm.nr_hugepages=2048' > /etc/sysctl.d/hugepages.conf

2)查看设置的hugepage配置

grep HugePages_ /proc/meminfo

3)挂载hugepage

mount -t hugetlbfs none /dev/hugepages

使用DPDK绑定网卡

1)设置驱动为VFIO

modprobe vfio-pci

2)绑定物理网卡

$DPDK_DIR/tools/dpdk-devbind.py --bind=vfio-pci 06:00.1

3)查看网卡绑定状态

$DPDK_DIR/tools/dpdk-devbind.py –status



启动OVS和DPDK

1)创建数据库

mkdir -p /usr/local/etc/openvswitch

mkdir -p /usr/local/var/run/openvswitch

rm /usr/local/etc/openvswitch/conf.db

ovsdb-tool create /usr/local/etc/openvswitch/conf.db \

/usr/local/share/openvswitch/vswitch.ovsschema

2)启动ovsdb-server

ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \

--remote=db:Open_vSwitch,Open_vSwitch,manager_options \

--pidfile --detach

3)首次运行时要创建初始化数据库

ovs-vsctl --no-wait init

4)启动ovs和dpdk

export DB_SOCK=/usr/local/var/run/openvswitch/db.sock

ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true

ovs-vswitchd unix:$DB_SOCK --pidfile –detach

添加OVS网桥和端口

配置流程

1)增加网桥

ovs-vsctl add-br br4 -- set bridge br4 datapath_type=netdev

2)创建两个DPDK类型的端口(这两个端口与之前添加的DPDK网口顺序一致,是一一对应的)

ovs-vsctl add-port br4 dpdk0 -- set Interface dpdk0 type=dpdk

ovs-vsctl add-port br4 dpdk1 -- set Interface dpdk1 type=dpdk

3)创建完DPDK端口之后,就会创建一个轮询线程,循环监测DPDK端口,因此ovs-vswitchd进程的CPU利用率会一直保持100%,通过top命令可以查看



4)创建完可以使用ovs-vsctl show查看



注意事项

添加网桥之前最好使用ifconfig命令查看一下主机已有的网桥,OVS创建的网桥不能和已有的重复,不然网桥的逻辑端口状态一直在up/down之间跳转。要创建”netdev” 类型的网桥,否则创建完网桥会报错:could not open network device br0 (Invalid argument)。

环境测试

环境搭建

1)使用OVS连接controller

ovs-vsctl set-controller br4 tcp:192.168.6.253:6653

2)创建host,下发group和flow表项

Topo图:



Group表:



Flow表:



3)查看网桥端口流量情况





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  DPDK SDN