一、建立运行环境:
参考 odp-dpdk/README.DPDK说明,建立一个setup_env.sh脚本,内容如下:
RTE_DPDK=/root/OpenFastPath/dpdk
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
#echo 1024 > /sys/devices/system/node/node*/hugepages/hugepages-2048kB/nr_hugepages
mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
modprobe uio
ulimit -Sn 2048
insmod $RTE_DPDK/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
rmmod ixgbe
dpdk-devbind --bind=igb_uio 06:00.0
dpdk-devbind --bind=igb_uio 06:00.1
建立一个unset_env.sh脚本,内容如下:
IXGBE_PATH=/lib/modules/4.15.0-42-generic/kernel/drivers/net/ethernet/intel/ixgbe
rmmod igb_uio
insmod $IXGBE_PATH/ixgbe.ko
dpdk-devbind --bind=ixgbe 06:00.0
dpdk-devbind --bind=ixgbe 06:00.1
二、测试
执行setup_env.sh后,测试udpecho,在目录下建立运行脚本startup.sh,如下:
./udpecho -i enp6s0f1 -f ofp.cli
执行报错: odp_crypto.c:556:odp_crypto_capability():No crypto devices available
启用openssl PMD密码设备,命令修改如下:
export ODP_PLATFORM_PARAMS="--vdev crypto_openssl"
./udpecho -i enp6s0f1 -f ofp.cli
执行报错:
E 0 4:2251010240 ofp_init.c:203] (null)(0): file I/O error
I 425144326 1:2856702144 ofp_ipsec.c:186] IPsec not supported with SP. Disabling IPsec.
I 425185656 1:2856702144 ofp_init.c:434] Slow path threads on core 0
../linux-generic/odp_packet_io.c:233:setup_pktio_entry():Unable to init any I/O type.
E 425310286 1:2856702144 ofp_ifnet.c:23] odp_pktio_open failed
E 425316220 1:2856702144 app_main.c:125] Error: OFP global init failed.
怀疑并为使用我们的万兆网卡。
疑问: udpecho 需要通过-i指定网口,但是dpdk uio绑定网口后,网口是消失的。并且,其他例子大都需要指定一个网口。
三、解决问题
查看odp的说明文档:https://github.com/OpenFastPath/ofp/blob/master/docs/ofp-user-guide.adoc#using-ofp-with-odp-dpdk
中有说明:当dpdk绑定网卡后,ofp用0、1等数字来指定网卡:
修改启动脚本如下:
export ODP_PLATFORM_PARAMS="--vdev crypto_openssl"
./udpecho -i 0 -f ofp.cli
顺利启动成功,见下图: