***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
 
 

参考文档:
      

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

  1. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

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

    史上最详细Windows版本搭建安装React Native环境配置   2016/01/29 |  React Native技术文章 |  Sky丶清|  95条评论 |  33530 views ...

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

    Oracle 12cR1 RAC 在VMware Workstation上安装(上)-OS环境配置 1.1  整体规划部分 1.1.1  所需软件介绍 Oracle RAC不支持异构平台.在同一个集群 ...

  4. laravel5.8笔记一:安装与服务器环境配置

    laravel版本:5.8 环境要求: PHP >= 7.1.3 OpenSSL PHP 扩展 PDO PHP 扩展 Mbstring PHP 扩展 Tokenizer PHP 扩展 XML P ...

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

    Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视频录制软件RcordMyDesktop安 ...

  6. 第一站:CLion安装教程与环境配置

    原文来自:http://www.sunmey.cn/thread-129-1-1.html 本人:找了很久才找到的CLion安装教程与环境配置,这里分享给大家~ 这里要说明的一点是CLion是要钱的, ...

  7. python中在ubuntu中安装虚拟环境及环境配置

    python中在ubuntu中安装虚拟环境及环境配置 1.升级python包管理工具pip pip install --upgrade pip 备注:当你想升级一个包的时候 `pip install ...

  8. 视频+图文教程 | Java之安装JDK与环境配置

    演示所用软件JDK 8与Eclipse(Java开发工具)软件下载链接: 链接:https://pan.baidu.com/s/1Vg9ulrQH8WlGRAE89Y02UA提取码:swwl 视频介绍 ...

  9. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

随机推荐

  1. jQuery插件制作

    模板:(function($){ $.fn.plugins=function(options){ var defaults = { } var options = $.extend(defaults, ...

  2. angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法

    本文地址:http://www.cnblogs.com/jying/p/6733408.html   转载请注明出处: 写此文的背景:在工作学习使用angular的$http.post()提交数据时, ...

  3. python3和python2的区别部分

    字典没有iteritems(),只有items() py2items()返回的是列表,iteritems()返回的是迭代器 py3items()返回的是迭代器

  4. 以防忘记,建立stm32工程的过程

    然后会弹出manage run -time environment的运行环境界面,必须选择的有CMSIS下的core和device下的startup,至于其它的根据你需要的外设, 在stdperiph ...

  5. iOS·UIKit框架注解 & Foundation

  6. 如何给远程主机开启mysql远程登录权限

    # 如何给远程主机开启mysql远程登录权限 > 在千锋学习PHP的有些学员会在阿里或者腾讯云去购买自己的云服务器.在初级阶段的项目上线时会遇到一个问题,就是无法使用远程连接工具操作自己线上的m ...

  7. AOJ/初等排序习题集

    ALDS1_1_D-MaximumProfit. Codes: //#define LOCAL #include <cstdio> #include <algorithm> u ...

  8. 百度开源上传组件WebUploader的formData动态传值技巧

    基于Web页面的文件上传一直是互联网应用开发中避免不了的,从asp时代的AspUpload组件.到asp无组件上传,到.Net时代的FileUpload,再到HTML5时代的各种基于jQuery的上传 ...

  9. IO调度器原理介绍

    IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...

  10. linux 下 启动oracle

    [root@csyang ~]# su - oracle #首先su到oracle用户 [oracle@csyang ~]$ sqlplus sys/passwd as sysdba #使用sys用户 ...