1.dpdk的安装

step1 准备软件

本文使用的是dpdk21.11。在官网下载dpdk21.11

step2 安装dpdk

tar -xf <dpdk-21.11.tar.gz>
meson build
ninja -C build
ninja -C build install 

编译过程中会出现的问题:提示找不到rxp-xompiler.h头文件
出现这个问题的原因: librxp_compiler.so库存在系统中,dpdk找到了这个库,默认在编译过程中支持这个库。但是社区办并不支持,导致报错。
解决办法: 删除librxp_compiler.so

// 备份这个文件
cp librxp_compiler.so /<dir>
// 删除这个文件
rm -rf librxp_compiler.so

2.编译ovs

step1 准备

openvswitch-2.17.5版本
修改dpdk动态库连接export PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-gnu

step2 编译

cd openvswitch
// 这一步可以选择安装位置,如果没有--prefix=/usr/local/ovs-2.17.5/ 会自动编译到/usr/local中
./configure --prefix=/usr/local/ovs-2.17.5/ --with-dpdk=yes
make -j 7
make install

step3 删除原来的ovs-dpdk

这里只删除/usr/bin下的ovs-*文件。并将/usr/local/ovs-2.17.5/bin软连接到/usr/bin下:
ln -s -f <要软连接的文件> <目的目录>
/usr/local/ovs-2.17.5/share/openvswitch/scrip/ovs-ctl和ovs-bin软连接到/usr/bin下:
step4 启动ovs
ovs-ctl start
注意:ovs-serverdb和ovs-vswitch都要启动成功 否则为启动失败。

3.配置ovs-dpdk

step1 检查ovs-dpdk是否安装成功

ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
ovs-vsctl --no-wait set Open_vSwitch . other_config:hw-offload=true
ovs-vsctl list open_vswitch:
root@localhost:/usr/local/ovs-2.17.5/bin# ovs-vsctl list open_vswitch
_uuid               : 02479fd2-e240-4dc1-a8e3-ac6021fe94a9
bridges             : [1510d24a-9337-4fd6-a5e3-abe55538163d, 5fcdeb5d-a96e-434d-87c6-eebc0acd1009]
cur_cfg             : 28
datapath_types      : [netdev, system]
datapaths           : {}
db_version          : "8.3.0"
dpdk_initialized    : true
dpdk_version        : "DPDK 21.11.0"
external_ids        : {hostname=localhost.localdomain, rundir="/usr/local/ovs-2.17.5/var/run/openvswitch", system-id=""}
iface_types         : [bareudp, dpdk, dpdkvhostuser, dpdkvhostuserclient, erspan, geneve, gre, gtpu, internal, ip6erspan, ip6gre, lisp, patch, stt, system, tap, vxlan]
manager_options     : []
next_cfg            : 28
other_config        : {dpdk-extra="-a 0000:01:00.0,representor=[0,65535],dv_flow_en=1,dv_esw_en=1,dv_xmeta_en=1 -a 0000:01:00.0,representor=[0,65535],dv_flow_en=1,dv_esw_en=1,dv_xmeta_en=1", dpdk-init="true", hw-offload="true"}
ovs_version         : "2.17.5"
ssl                 : []
statistics          : {}
system_type         : Ubuntu
system_version      : "20.04-focal"
出现上述表示ovs-dpdk安装成功

step2 配置dpdk网桥

ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-extra="-a 0000:01:00.0,representor=[0,65535],dv_flow_en=1,dv_esw_en=1,dv_xmeta_en=1 -a 0000:01:00.0,representor=[0,65535],dv_flow_en=1,dv_esw_en=1,dv_xmeta_en=1"
// 配置第一网桥
ovs-vsctl --no-wait add-br ovs_dpdk_br0 -- set bridge ovs_dpdk_br1 datapath_type=netdev
ovs-vsctl --no-wait add-port ovs_dpdk_br0 dpdk1 -- set Interface dpdk1 type=dpdk -- set Interface dpdk1 options:dpdk-devargs=0000:03:00.0
ovs-vsctl --no-wait add-port ovs_dpdk_br0 dpdk2-- set Interface dpdk2 type=dpdk -- set Interface dpdk2 options:dpdk-devargs=0000:03:00.0,representor=[0,65535]

// 配置第二个网桥
ovs-vsctl --no-wait add-br ovs_dpdk_br1 -- set bridge ovs_dpdk_br1 datapath_type=netdev
ovs-vsctl --no-wait add-port ovs_dpdk_br1 dpdk2 -- set Interface dpdk2 type=dpdk -- set Interface dpdk2 options:dpdk-devargs=0000:03:00.1
ovs-vsctl --no-wait add-port ovs_dpdk_br1 dpdk3 -- set Interface dpdk3 type=dpdk -- set Interface dpdk3 options:dpdk-devargs=0000:03:00.1,representor=[0,65535]

// 配置成功的网桥如下
root@localhost:/usr/local/ovs-2.17.5/bin# ovs-vsctl show
02479fd2-e240-4dc1-a8e3-ac6021fe94a9
    Bridge ovs_dpdk_br0
        datapath_type: netdev
        Port pf
            Interface pf
                type: dpdk
                options: {dpdk-devargs="0000:03:00.0"}
        Port dpdk1
            Interface dpdk1
                type: dpdk
                options: {dpdk-devargs="0000:03:00.0,representor=[0,65535]"}
        Port ovs_dpdk_br0
            Interface ovs_dpdk_br0
                type: internal
    Bridge ovs_dpdk_br1
        datapath_type: netdev
        Port dpdk3
            Interface dpdk3
                type: dpdk
                options: {dpdk-devargs="0000:03:00.1,representor=[0,65535]"}
        Port ovs_dpdk_br1
            Interface ovs_dpdk_br1
                type: internal
        Port dpdk2
            Interface dpdk2
                type: dpdk
                options: {dpdk-devargs="0000:03:00.1"}
    ovs_version: "2.17.5"

step3 在主机将两个BF2网卡直通到两个namespace/vm中

配置网卡ip,可以相互ping通即可。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐