***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 这些库 ...
随机推荐
- PLSQL创建定时任务
在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法: 1.创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 cr ...
- Centos下装eclipse测试Hadoop
(一),安装eclipse 1,下载eclipse,点这里 2,将文件上传到Centos7,可以用WinSCP 3,解压并安装eclipse [root@Master opt]# tar zxvf ' ...
- CSAcademy Beta Round #5 Long Journey
题目链接:https://csacademy.com/contest/arhiva/#task/long_journey/ 大意是有一张无向不带权的图,两个人同时从s点出发,分别前往a点和b点,且每个 ...
- 【算法】RMQ LCA 讲课杂记
4月4日,应学弟要求去了次学校给小同学们讲了一堂课,其实讲的挺内容挺杂的,但是目的是引出LCA算法. 现在整理一下当天讲课的主要内容: 开始并没有直接引出LCA问题,而是讲了RMQ(Range Min ...
- 跟着刚哥梳理java知识点——反射和代理(十七)
反射机制是什么?反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有的属性和方法:对于任意一个对象,都能够调用他的一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...
- LeetCode 376. Wiggle Subsequence 摆动子序列
原题 A sequence of numbers is called a wiggle sequence if the differences between successive numbers s ...
- Docker 组件如何协作?- 每天5分钟玩转容器技术(8)
还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的. 容器启动过程如下: Docker 客户端执行 docker run 命令. Docker daemon 发现本 ...
- win7下安装memcached出现failed to install service or service already installed解决办法
安装memcached时总是提示“failed to install service or service already installed”,开始以为是版本问题,就下了好几个不同版本,可还是老问题 ...
- JavaScript 中有关Array操作的一些函数
JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 0.222, 'Hi', null, ...
- Android开源项目库汇总
最近做了一个Android开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. 抽 ...