• OpenvSwitch + DPDK 实现


    本文主要介绍如何使用 DPDK datapath 编译并安装 Open vSwitch,以及在 OVS-DPDK 基础上,进行 6wind 包转发性能测试实验。

    使用了 DPDK 库的 OVS 运行在用户空间,可以直接将用户态的数据,不经过内核直接转发到网卡,从而实现加速目的。

    一、OVS + DPDK 编译部署

    在部署过程中,各个组件版本之间有一些依赖,版本不对很有可能会出现安装失败或者虚拟机无法开机,推荐使用以下版本组合。

    1. [root@pod23-clu02-h005 ~]# ovs-vswitchd --version
    2. ovs-vswitchd (Open vSwitch) 2.9.0
    3. DPDK 17.11.3
    4. [root@pod23-clu02-h005 ~]# libvirtd --version
    5. libvirtd (libvirt) 4.0.0
    1. 下载 DPDK
    # wget http://fast.dpdk.org/rel/dpdk-17.11.3.tar.xz

    2. 添加相关环境变量并安装依赖组件

    1. # cat /root/.bashrc
    2. ...
    3. export DPDK_DIR=<DPDK_DIR> # dpdk-17.11.3安装目录
    4. export DPDK_TARGET=x86_64-native-linuxapp-gcc
    5. export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
    6. export LD_LIBRARY_PATH=$DPDK_DIR/x86_64-native-linuxapp-gcc/lib
    7. export PATH=$PATH:/usr/local/ovs/share/openvswitch/scripts
    8. export DB_SOCK=/usr/local/ovs/var/run/openvswitch/db.sock
    9. ...
    10. # yum install autoconf automake libtool numactl numactl-devel -y

    3. 编译 DPDK

    1. # cd dpdk-17.11.3
    2. # make install T=$DPDK_TARGET DESTDIR=install

    4. 下载 ovs,我使用的版本是2.9.0

    1. # git clone https://github.com/openvswitch/ovs.git
    2. # git checkout -b v2.9.0 v2.9.0

    5. 编译 ovs-dpdk

    1. # cd ovs
    2. # ./boot.sh
    3. # ./configure --prefix=/usr/local/ovs --with-dpdk=$DPDK_BUILD
    4. # make && make install

    6. 配置 hugepages

    1. # cat /etc/sysctl.d/hugepages.conf
    2. # vm.nr_hugepages=8192
    3. # sysctl -p /etc/sysctl.d/hugepages.conf
    4. # mount -t hugetlbfs none /dev/hugepages

    9. 加载驱动模块,配置 dpdk 网卡

    1. # modprobe vfio-pci
    2. # lsmod | grep vfio
    3. # /usr/bin/chmod a+x /dev/vfio
    4. # /usr/bin/chmod 0666 /dev/vfio/*
    5. # dpdk-devbind.py -b vfio-pci ens10f1

    10. 启动 ovsdb-server

    1. # mkdir -p /usr/local/ovs/var/run/openvswitch
    2. # /usr/local/ovs/bin/ovsdb-tool create /usr/local/ovs/etc/openvswitch/conf.db /usr/local/ovs/share/openvswitch/vswitch.ovsschema
    3. # /usr/local/ovs/sbin/ovsdb-server --remote=punix:/usr/local/ovs/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach --monitor
    4. # 增加 dpdk 相关配置参数
    5. # ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
    6. # ovs-vsctl --no-wait set Open_vSwitch . other_config:vhost-iommu-support=true
    7. # ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem="1024,1024"

    11. ovs 进程核绑定,提升性能

    1. 查看cpu_layout:
    2. [root@pod23-clu02-h005 ~]# ./dpdk-stable-17.11.3/usertools/cpu_layout.py
    3. ======================&#
  • 相关阅读:
    vscode 自定义(修改已有)主题教程
    低代码平台与无代码平台的区别
    GZ035 5G组网与运维赛题第4套
    c 摄像头利用v4l2直接生成avi视频(不利用ffmpeg)
    vue3 使用simplebar【滚动条】
    【LeetCode】169. 多数元素
    总结sql用法及基础语法 第一章 三范式
    数据库工具DataGrip V2022.2正式发布——支持导入多个 CSV 文件的选项
    从物理转AI、战数据库,95后程序员的职业选择
    微软 AutoML 框架之 FLAML | 论文解读
  • 原文地址:https://blog.csdn.net/lingshengxiyou/article/details/127791660