***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. c++:自己动手实现线程安全的c++单例类

    前段时间使用c++做项目开发,需要根据根据配置文件路径加载全局配置文件,并对外提供唯一访问点.面对这样一个需求,自然的就想到了使用单例模式来创建一个单例配置对象,供外部调用.一开始想使用boost中自 ...

  2. yii2 advance安装

    转载自:http://www.genshuixue.com/i-cxy/p/7986531 1. 前提条件,php版本得> 5.4D:\phpStudy>php -v PHP 5.5.17 ...

  3. 树状数组 && 线段树

    树状数组 支持单点修改 #include <cstdio> using namespace std; int n, m; ], c[]; int lowbit(int x) { retur ...

  4. jquery控制图片切换

    这种js现在用的很多.同时网上的js代码页很多.我直接从网上当了一个来用:代码如下: html <div class="bannerbox">              ...

  5. Entity Framework查询注意

    首先我们看下where的方法,直接查看定义(定义如下),其实一种是对IEnumerable的扩展,一种是对IQueryable的扩展,直接看最常用的,其实区别就在IEnumerable的扩展的参数是系 ...

  6. OpenGL 的空间变换(上):矩阵在空间几何中的应用

    在使用 OpenGL 的应用程序中,当我们指定了模型的顶点后,顶点依次会变换到不同的 OpenGL 空间中,最后才会被显示到屏幕上.在变换的过程中,通过使用矩阵,我们更高效地来完成这些变换工作. 本篇 ...

  7. 深入tornado中的Configurable

    Configurable十分重要! 位于tornado.util文件中,它是一个工厂类. 我们暂且称这个类为 配置类 . 我们暂且约定:该类的子类称之为 直属配置子类 , 该类的孙类.重孙类……称之为 ...

  8. Struts2拦截器登录验证

    Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...

  9. hadoop单机环境搭建

    [在此处输入文章标题] Hadoop单机搭建 1. 工具准备 1) Hadoop Linux安装包 2) VMware虚拟机 3) Java Linux安装包 4) Window 电脑一台 2. 开始 ...

  10. InputStream类详解

    InputStream这个抽象类是所有基于字节的输入流的超类,抽象了Java的字节输入模型.在这个类中定义了一些基本的方法.看一下类的定义: public abstract class InputSt ...