***DPDK datapath的OVS的安装与实验环境配置
首先肯定是DPDK的安装
0:安装必要的工具
make
gcc
libssl
libcap-ng0
libtool
autoconf
python 2.7
python module six(可用PIP安装)
1:设置hugepages,host最好有4G以上的内存可用,
共搞1024个hugepage,每个page 2M,所以光hugepages就占用2G内存
$ grep Huge /proc/meminfo
$ echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
$ mkdir /mnt/huge
$ mount -t hugetlbfs nodev /mnt/huge
2:编译DPDK,在DPDK源代码目录中
设置环境变量
DPDK_DIR = "DPDK源代码目录"
$ export DPDK_TARGET=x86_64-native-linuxapp-gcc
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
编译
$ make install T=$DPDK_TARGET DESTDIR=install
3:安装OVS,在OVS源代码目录中
3.1:配置configure
$ ./boot.sh
$ ./configure --with-dpdk=$DPDK_BUILD
3.2:编译OVS
$ make
3.3:安装OVS
$ make install
3.4:创建OVSDB schema
$ mkdir -p /usr/local/etc/openvswitch
$ ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
3.5:启动OVSDB
$ 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=/root/log/ovsdb-server.log
4:挂载兼容的UIO驱动模块
$ modprobe uio_pci_generic
或
$ modprobe vfio-pci
$ chmod a+x /dev/vfio
$ chmod 0666 /dev/vfio/*
5:把网卡绑定到兼容的UIO驱动上
6:启动vswitchd
$ 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 --log-file=/root/log/ovs-vswitchd.log
7:创建datapath为netdev类型的bridge
$ ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
8:测试:添加dpdk类型的port,
$ ovs-vsctl add-port br0 dpdk0 \
-- set Interface dpdk0 type=dpdk options:dpdk-devargs=00:09.0
接下来就是实验环境了
------------------------------[host 1]---------------------------------------
| |
| (br-int datapath_type=netdev) |
| [vm0]---------[port:vm0 type=dpdkvhostuser] |
| [port:vxlan0 type=vxlan remote_ip=10.0.0.2] |
| |
| |
| (br-phy datapath_type=netdev other_config:hwaddr=aa:aa:aa:aa:aa:aa) |
| [port:dpdk0 type=dpdk options:dpdk-devargs= NIC] |
| |
| |
------------------------- [ NIC binding to DPDK]-----------------------------
|
|
|
|
[physical switch]
|
|
|
|
------------------------- [ NIC binding to DPDK]------------------------------
| |
| |
| [port:dpdk1 type=dpdk options:dpdk-devargs= NIC] |
| (br-phy datapath_type=netdev other_config:hwaddr=bb:bb:bb:bb:bb:bb) |
| |
| |
| [port:vxlan1 type=vxlan remote_ip=10.0.0.1] |
| [port:vm1 type=dpdkvhostuser]------------- [vm1] |
| (br-int datapath_type=netdev) |
| |
------------------------------[host 2]----------------------------------------
在host1与host2上安装好OVS+DPDK,然后执行如下的动作,两个host上执行的动作相同,以host1为例
1:创建br-int
$ ovs-vsctl --may-exist add-br br-int \
-- set Bridge br-int datapath_type=netdev \
-- br-set-external-id br-int bridge-id br-int \
-- set bridge br-int fail-mode=standalone
2:向br-int中添加dpdkvhostuser型port vm0/vm1
对于host1,如下:
$ ovs-vsctl add-port br-int vm0 \
-- set Interface vm0 type=dpdkvhostuser
对于host2,如下:
$ ovs-vsctl add-port br-int vm1 \
-- set Interface vm1 type=dpdkvhostuser
3:创建虚拟机,以virsh配合XML配置文件的形式创建虚拟机,XML文件如下:
4:在虚拟机内,配置IP
对于host1上的vm0
$ ip addr add 192.168.1.1/24
对于host2上的vm1
$ ip addr add 192.168.1.2/24
5:向br-int中添加vxlan tunnel
对于host1,如下:
$ ovs-vsctl add-port br-int vxlan0 \
-- set interface vxlan0 type=vxlan options:remote_ip=10.0.0.2
对于host2,如下:
$ ovs-vsctl add-port br-int vxlan0 \
-- set interface vxlan0 type=vxlan options:remote_ip=10.0.0.1
6:创建br-phy
对于host1,如下:
$ ovs-vsctl --may-exist add-br br-phy \
-- set Bridge br-phy datapath_type=netdev \
-- br-set-external-id br-phy bridge-id br-phy \
-- set bridge br-phy fail-mode=standalone \
other_config:hwaddr=aa:aa:aa:aa:aa:aa
对于host2,如下:
$ ovs-vsctl --may-exist add-br br-phy \
-- set Bridge br-phy datapath_type=netdev \
-- br-set-external-id br-phy bridge-id br-phy \
-- set bridge br-phy fail-mode=standalone \
other_config:hwaddr=bb:bb:bb:bb:bb:bb
7:将物理网卡绑到DPDK兼容的UIO驱动上
略
8:将物理网卡捅到br-phy上
对于host1,如下:
$ ovs-vsctl add-port br-phy dpdk0 \
-- set Interface dpdk0 type=dpdk options:dpdk-devargs=???????
对于host2,如下:
$ ovs-vsctl add-port br-phy dpdk1 \
-- set Interface dpdk0 type=dpdk options:dpdk-devargs=???????
9:配置br-phy
对于host1,如下:
$ ip addr add 10.0.0.1/24 dev br-phy
$ ip link set br-phy up
$ iptables -F
对于host2,如下:
$ ip addr add 10.0.0.2/24 dev br-phy
$ ip link set br-phy up
$ iptables -F
参考文档:
- 史上最全Windows版本搭建安装React Native环境配置
史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...
- 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用
史上最详细Windows版本搭建安装React Native环境配置 2016/01/29 | React Native技术文章 | Sky丶清| 95条评论 | 33530 views ...
- Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
Oracle 12cR1 RAC 在VMware Workstation上安装(上)-OS环境配置 1.1 整体规划部分 1.1.1 所需软件介绍 Oracle RAC不支持异构平台.在同一个集群 ...
- laravel5.8笔记一:安装与服务器环境配置
laravel版本:5.8 环境要求: PHP >= 7.1.3 OpenSSL PHP 扩展 PDO PHP 扩展 Mbstring PHP 扩展 Tokenizer PHP 扩展 XML P ...
- Ubuntu16.04安装后开发环境配置和常用软件安装
Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视频录制软件RcordMyDesktop安 ...
- 第一站:CLion安装教程与环境配置
原文来自:http://www.sunmey.cn/thread-129-1-1.html 本人:找了很久才找到的CLion安装教程与环境配置,这里分享给大家~ 这里要说明的一点是CLion是要钱的, ...
- python中在ubuntu中安装虚拟环境及环境配置
python中在ubuntu中安装虚拟环境及环境配置 1.升级python包管理工具pip pip install --upgrade pip 备注:当你想升级一个包的时候 `pip install ...
- 视频+图文教程 | Java之安装JDK与环境配置
演示所用软件JDK 8与Eclipse(Java开发工具)软件下载链接: 链接:https://pan.baidu.com/s/1Vg9ulrQH8WlGRAE89Y02UA提取码:swwl 视频介绍 ...
- Fedora和Ubuntu下安装OpenGL开发环境配置
Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...
随机推荐
- 学习MVC之租房网站(四)-实现Service层并进行单元测试
在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且 ...
- nginx学习笔记——http module分析
源码:nginx 1.12.0 nginx由于其高性能.扩充性好等特点在迅速走红,越来越多的公司采用nginx作web服务器.负载均衡.waf等 工作,一些基于nginx ...
- win8.1启用ahci后蓝屏
先简单介绍一下,本应该win7开始,系统安装的时候默认就启用了ahci硬盘模式.但是博主犯了傻,装了win8.1后安装win XP形成双系统.xp并不支持ahci模式,所以将硬盘模式改成了IDE模式, ...
- Jenkins: 使用groovy + job-dsl 创建并触发job
Jenkins: 使用groovy + job-dsl 创建并触发job 背景: 我们的 Automation 测试脚本需要在10个不同语言的机器上跑,本地化测试产品. 我们用Jenkins启动测试执 ...
- lua 数据类型
lua 数据类型 8 种数据类型 类型 说明 nil 空类型 boolean 布尔类型 number 数值型, 浮点型 string 字符串 function 函数 userdata 用户自定义结构 ...
- Machine Learning——Supervised Learning(机器学习之监督学习)
监督学习是指:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程. 我们来看一个例子:预测房价(注:本文例子取自业界大牛吴恩达老师的机器学习课程) 如下图所示:横轴表示房子的面积,单位是 ...
- 蓝桥杯-分小组-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-等额本金-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- Centos7 ftp环境搭建
没玩过linux,折腾了半天的ftp,好不容易亲测通过了.不容易啊. 操作环境:vm虚拟机 centos7 首先:搞定网络问题:默认情况下使用ifconfig可以看到虚拟机下是无网络的.(注:虚拟机网 ...
- 常用oralce_sql
1.解锁账户: 默认的scott用户是被锁定的,先解锁就能登陆上了. 使用下面的语句解锁scott: alter user scott account unlock; 解锁之后可能会要求你该密码: a ...