EN
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

编译和安装

获取源码

  1. 创建目录。
    1
    2
    3
    mkdir -p /home/source_code
    mkdir -p /home/patch_code/ovs_patch
    mkdir -p /home/rpm_packet
    
  2. 获取DPDK源码。
    1. 下载源码。
    2. 复制至服务器“/home/source_code”目录。
  3. 获取OVS源码。
    1. 下载源码。
    2. 复制至服务器“/home/source_code”目录。
  4. 获取patch代码。
    1. 下载代码。

      下载地址:https://github.com/kunpengcompute/ovs/releases/download/v2.12.0/xpf.patch

    2. 复制至服务器“/home/patch_code/ovs_patch”目录。
  5. 获取OVS流表归一化软件包。
    1. 下载二进制RPM包、开发包(编译头文件)和数字签名文件。
    2. 获取软件校验工具。
    3. 使用5.b中下载的《OpenPGP签名验证指南进行软件包完整性检查
    4. 复制至服务器“/home/rpm_packet”目录。
    5. 解压文件。
      1
      tar -xzf /home/rpm_packet/OVSOE_ALL.tar.gz -C /home/rpm_packet && rm -rf /home/rpm_packet/OVSOE_ALL.tar.gz
      

      至此,目录结构如下示:

安装XPF二进制库

  1. 进入相应“/home/source_code”目录。
    1
    cd /home/source_code
    
  2. 解压DPDK源码包。
    1
    tar -xf dpdk-19.11.tar.xz && rm -f dpdk-19.11.tar.xz
    
  3. 解压OVS源码包。
    1
    tar -xzf openvswitch-2.12.0.tar.gz && rm -f openvswitch-2.12.0.tar.gz
    
  4. 把对应的patch合入相应的源码。
    1
    patch -d openvswitch-2.12.0 -p1 < ../patch_code/ovs_patch/xpf.patch
    

    如果下载的代码为ovx_xpf_v2.12.0分支源码,则需跳过此步骤。

  5. 强制安装OVS流表归一化软件包。
    1
    rpm -ivh --nodeps /home/rpm_packet/xpf-1.0.0-1.aarch64.rpm /home/rpm_packet/xpf-devel-1.0.0-1.aarch64.rpm
    

    “/home/rpm_packet/”路径需要根据实际环境替换。

编译安装DPDK

  1. 进入“/home/source_code/dpdk-19.11”目录。
    1
    cd /home/source_code/dpdk-19.11
    
  2. 编译安装DPDK。
    1
    2
    3
    4
    5
    make O=arm64-armv8a-linuxapp-gcc T=arm64-armv8a-linuxapp-gcc config
    sed -ri 's,(RTE_APP_TEST=).*,\1n,' arm64-armv8a-linuxapp-gcc/.config
    sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1y,' arm64-armv8a-linuxapp-gcc/.config
    make O=arm64-armv8a-linuxapp-gcc -j 96
    make install O=arm64-armv8a-linuxapp-gcc prefix=/usr libdir=/lib64
    

    “/usr/lib64”目录下有“librtexxx_xxx.so”的动态库文件说明DPDK编译安装完成。

编译安装OVS

  1. 进入源码根目录。
    • 如果下载的是鲲鹏社区的ovs_xpf_v1.2.10分支源码:
      1
      cd /home/source_code/ovs-ovs_xpf_v2.12.0
      
    • 如果是通过Open vSwitch官方下载的代码:
      1
      cd /home/source_code/openvswitch-2.12.0
      
  2. 编译安装OVS。
    1
    2
    3
    ./boot.sh
    ./configure CFLAGS="-g -O2 -march=armv8-a+crc" --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/lib64 --enable-ssl --enable-shared --with-dpdk=yes --enable-Werror
    make -j 96 && make install
    
  3. 复制头文件。
    1
    2
    3
    cp config.h /usr/include/openvswitch
    mkdir /usr/include/openvswitch/lib
    cp lib/*.h /usr/include/openvswitch/lib/
    
  4. 二次编译安装OVS。
    1
    2
    3
    make clean
    ./configure CFLAGS="-g -O2 -march=armv8-a+crc -ftree-vectorize -I/usr/include/xpf-1.0.0/xpf_include" --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/lib64 --enable-ssl --enable-shared --with-dpdk=yes --enable-Werror --enable-xpf
    make -j 96 && make install
    
  5. (可选)配置OVS以service服务化方式启动。

    手动启动、停止和重启OVS服务的操作较为复杂,需执行多条命令,以service服务化运行OVS可大幅度简化相关操作。

    1. 切换到OVS源码目录下的“rhel”目录,拷贝文件etc_init.d_openvswitch到“/etc/init.d”目录下,并重命名为openvswitch,同时修改文件执行权限为755。
      1
      2
      3
      cd rhel/
      cp etc_init_.d_openvswitch /etc/init.d/openvswitch
      chmod 755 /etc/init.d/openvswitch
      

    2. 使用service方式运行OVS。

      待OVS启动配置项完成后(参见运行和验证)可以通过service启动、停止、重启OVS服务。

      • 启动OVS服务。
        1
        service openvswitch start
        

      • 停止OVS服务。
        1
        service openvswitch stop
        

      • 重启OVS服务。
        1
        service openvswitch restart
        

  • OVS流表归一化软件包依赖开源的OVS,二次开发的OVS依赖XPF库,所以这里要编译两次OVS。第一次是编译开源的OVS,并复制一些必要的头文件,第二次是编译二次开发的OVS。
  • boot.sh脚本的作用是用libtool生成修改后的configure文件,增加相应的宏定义,使能XPF的代码。