OVS + dpdk 安装与实验环境配置

***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文件如下:

vm0.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


参考文档:

http://docs.openvswitch.org/en/latest/howto/userspace-tunneling/

http://docs.openvswitch.org/en/latest/topics/dpdk/vhost-user/

https://libvirt.org/formatdomain.html#elementVhostuser

http://www.sdnlab.com/16593.html

时间: 2024-12-09 06:55:45

OVS + dpdk 安装与实验环境配置的相关文章

Ubuntu 18.04 实验环境配置

Ubuntu 18.04 实验环境配置 系统:Ubuntu 18.04 64bit 显卡:Nvidia GeForce 1080Ti 下载 CUDA.cuDNN.NVIDIA间存在某种关系,建议先确定要安装的CUDA版本. 注意:后续要安装的一些包不支持CUDA9.1. CUDA下载地址:https://developer.nvidia.com/cuda-toolkit-archive cuDNN下载地址:https://developer.nvidia.com/rdp/cudnn-archiv

Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置

Oracle 12cR1 RAC 在VMware Workstation上安装(上)-OS环境配置 1.1  整体规划部分 1.1.1  所需软件介绍 Oracle RAC不支持异构平台.在同一个集群中,可以支持具有速度和规模不同的机器,但所有节点必须运行在相同的操作系统.Oracle RAC不支持具有不同的芯片架构的机器. 序号 类型 内容 1 数据库 p17694377_121020_Linux-x86-64_1of8.zip p17694377_121020_Linux-x86-64_2o

史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用

史上最详细Windows版本搭建安装React Native环境配置 2016/01/29 |  React Native技术文章 |  Sky丶清|  95条评论 |  33530 views 编辑推荐:稀土掘金 是一个高质量的技术社区,从 React Native 到 RxJava,性能优化到优秀开源库,让你不错过移动开发的每一个技术干货.各大应用市场搜索「掘金」,技术干货尽在掌握中. 说在前面的话: 感谢同事金晓冰倾情奉献本环境搭建教程 之前我们已经讲解了React Native的OS X

Ubuntu16.04安装后开发环境配置和常用软件安装

Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视频录制软件RcordMyDesktop安装.2.开发环境配置.JDK环境配置+Scala环境配置+nodejs环境配置+开发工具intellij IDEA安装+Python数据分析环境配置+Jupyter开发工具安装+Python多版同时支持. 1.Ubuntu16.04安装常用软件(搜狗输入法+编辑器Atom+浏览器Chome+视频播放

ubuntu 下安装eclipse &java环境配置

前面有一篇的博客写的是ubuntu下安装eclipse和java环境的配置,当时是安装网上的攻略进行的 ,当然也是可以成功的. 最近把那台电脑送人了 ,只好在自己的这台电脑上重新安装一次了 ,唯一欣慰的是eclipse和jdk  以及ubuntu版本都有所更新,这次也用了其他的方式进行的安装配置 第一步下载 这里要下载eclipse 和jdk 最新版本的jdk已经到了1.8.0_05 ,eclipse也升级到了luna   ubuntu用的是14.4 eclipse  :http://www.e

实验一:实验环境配置与使用

一.实验目标:   熟悉Linux上C程序的编译和调试工具,包括以下内容: 1. 了解Linux操作系统及其常用命令 2. 掌握编译工具gcc的基本用法 3. 掌握使用gdb进行程序调试   二.实验环境与工件 1.个人电脑 2. Fedora 13 Linux 操作系统 3. gcc 4. gdb   三.实验内容与步骤 1.根据实验一:实验环境配置与使用.ppt熟悉Linux基本操作(P.1 – P.28),然后根据以下过程创建用户:用户名为学生名称加学号,如赖丹辉,学号2013150040

传感器仿真平台——实验环境配置(四)

实验环境配置,最初的想法是这样: 要有一个类,专门管理各种各样的实验环境参数,如场地长.宽等,为了方便起见,可以在该类的构造函数中进行文件读取,将外部xml作为配置文件加载各类参数.这样的话,使用的时候就可以如下这么做: Config config = new Config();//这个是我说的环境配置管理类 var width = config.width; 但是对于框架来说,这个方法看似好用,实际上却很难做到,为什么?参数不确定呀,不同的实验有不同种类的参数,实验一的参数是长.宽.实验二的是

在CentOS上编译安装Nginx+实验环境搭建+测试

0.说明 Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件,很有必要搭建实验环境来对其进行学习. 1.实验环境 本次实验的测试环境使用的宿主机操作系统为Windows 7,在Vmware虚拟机安装CentOS 6.5,说明如下: 宿主机操作系统Windows 7 虚拟机安装的操作系统CentOS 6.5 虚拟机操作系统上网方式NAT 而当使用NAT的方式进行上网时虚拟机.宿主机之间的网络连接关系可如下所示: 关于为什么网络拓扑结构是这样的,这

CentOS 安装JDK和环境配置

1. CentOS默认情况下,会安装OpenOffice之类的软件,这些软件需要Java的支持,默认会安装JDK的环境,若需要特定的Java环境,最好将默认的JDK彻底删除: 2. 查看默认的JDK命令:java -version 3. 如果先删除默认再装新的JDK,则与之相关的软件也会随之删除,so,先装新的再卸默认. 4. 下载JDK,http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u4-downloads-15911