实战录|基于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)查看网桥端口流量情况
云端卫士《实战录》栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益。本期分享人为云端卫士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)查看网桥端口流量情况
相关文章推荐
- 基于zookeeper搭建dubbo可用环境--实战篇
- DPDK+OVS+QEMU搭建vhost-user实验环境
- 基于Flask框架的Python web程序的开发实战 <一> 环境搭建
- Ubuntu及RHEL linux环境下多端口捆绑实战验证(基于模式4和1)
- Aooms_基于SpringCloud的微服务基础开发平台实战_003_配置文件与简单的web环境搭建
- DPDK Pktgen+Docker搭建VNF环境及验证
- 嵌入式Linux实战篇--交叉编译环境的建立(基于ubuntu 8.10)
- 基于Carbide.c++的Symbian开发环境搭建
- 基于VS.NET 2003S60开发环境的搭建
- 基于VS.NET 2003S60开发环境的搭建
- Windows下基于Apache服务器的PHP环境搭建
- 基于虚拟机VmWare搭建破解环境的探讨-Brygid - 新浪BLOG
- 搭建基于Linux的Informix数据库开发环境
- 搭建基于ASP.NET 2.0的DNN 4.X模块开发环境及模块实例(1)
- Windows下基于Apache服务器的PHP环境搭建
- 基于Armv4I WINCE 5.0 应用程序开发环境搭建(C# VS2005或者VS2008)
- 基于Carbide.c++搭建Symbian开发环境
- Eclipse3.2中 Java Web 开发环境的搭建之LOMBOZ+TOMCAT 安装及验证
- 搭建 Windows 下基于 Eclipse 的 PHP 开发环境
- 搭建Windows下基于Eclipse 的 PHP 开发环境