***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 这些库 ...
随机推荐
- JS中的函数、Bom、DOM及JS事件
本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...
- 基于opencv的车牌识别系统
前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述 OpenCV的全称是:Open Source Computer Vision ...
- SecureCRT中vim乱码问题
Options->Session Options,接着在Terminal->Appearance页签中设定Character encoding为Unicode (UTF-8).
- DirectFB的架构介绍
**************************************************************************************************** ...
- web.xml 中配置了error-page但不起作用问题
问题: 在web.xml 中配置了 error-page,但是好像不起作用,就是跳转不到指定的页面. 配置信息如下: <!-- 400错误 --> <error-page> & ...
- 【Atom】在一个中/大型项目中,那些好用而强大的atom功能
作为一个学生党,一开始使用atom时候并没有意识到atom一些小功能的巨大作用,直到自己实习参与了项目,才知道这些功能在一个项目中是能极大提高工作效率的开发利器 下面是一位不愿意透露其姓名的彭 ...
- Linux学习之要点必备
在本节课中我将会带领大家秒懂linux命令 要点一:常见基本命令格式 命令名称+选项+参数 例如:#mkdir -r /var/ruofeng/001/ 我们通过逐级创建目录方式解释这个例子,mkdi ...
- Android开发之旅:环境搭建及HelloWorld(转)
本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始Andr ...
- openlayers应用“三”:百度地图纠偏
前两篇文章介绍了openlayers3加载百度在线和离线瓦片地图,页面上能够正常显示.地图加载后在地图上显示一条GPS轨迹,发现离实际位置相差太远,如下图所示: 轨迹形状和实际形状相同,但是位移太远, ...
- 针对iPhone的pt、Android的dp、HTML的css像素与dpr、设计尺寸和物理像素的浅分析
最近被一朋友问到:css中设置一DOM的height:65px,请问显示的高度是否和Android的65dp的元素等高?脑子里瞬间闪现了一堆的概念,如dpr,ppi,dp,pt等,然而想了一阵,浆糊了 ...