DPDK 示例应用程序 ipsec-secgw 因 virtio NIC 而失败
DPDK sample app ipsec-secgw failing with virtio NIC
我尝试运行使用以下版本
连接 DPDK ipsec-secgw 示例应用程序
- DPDK版本dpdk-stable-19.11.5
- OS CentOS Linux 7.7.1908 版(核心版)
- 内核 3.10.0-1062.el7.x86_64
网卡类型和驱动程序
- 0000:00:04.0 'Virtio network device 1000' drv=igb_uio 未使用=virtio_pci,uio_pci_generic
用于运行 应用程序的命令和 cmd 行参数
./build/ipsec-secgw -l 6 -w 00:04.0 -w 00:05.0 --vdev "crypto_null" --log-level 8 \
--socket-mem 1024 -- -p 0xf -P -u 0x2 \
--config="(0,0,6),(1,0,6)" -f /root/config_file
输出:
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: Probing VFIO support...
EAL: PCI device 0000:00:04.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 1af4:1000 net_virtio
EAL: PCI device 0000:00:05.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 1af4:1000 net_virtio
CRYPTODEV: Creating cryptodev crypto_null
CRYPTODEV: Initialisation parameters - name: crypto_null,socket id: 0, max queue pairs: 8
Promiscuous mode selected
librte_ipsec usage: disabled
replay window size: 0
ESN: disabled
SA flags: 0
Frag TTL: 10000000000 ns
Allocated mbuf pool on socket 0
CRYPTODEV: elt_size 64 is expanded to 176
Allocated session pool on socket 0
Allocated session priv pool on socket 0
Configuring device port 0:
Address: 52:54:00:A5:82:2D
Creating queues: nb_rx_queue=1 nb_tx_queue=1...
EAL: Error - exiting with code: 1
Cause: Error: port 0 required RX offloads: 0xe, avaialbe RX offloads: 0xa1d
配置文件内容:
#SP IPv4 rules
sp ipv4 out esp protect 1005 pri 1 dst 192.168.105.0/24 sport 0:65535 dport 0:65535
#SA rules
sa out 1005 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef \
mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 \
port_id 1 \
type inline-crypto-offload \
sa in 5 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef \
mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 \
port_id 1 \
type inline-crypto-offload \
#Routing rules
rt ipv4 dst 172.16.2.5/32 port 1
rt ipv4 dst 192.168.105.10/32 port 0
它说缺少某些卸载功能。
我从 Niantic NIC 的 DPDK 测试计划中获得了配置文件的详细信息和命令行参数。该应用程序是否只适用于 Niantic PFs/VFs。有没有办法让它与 virtio 半虚拟化 NIC 一起工作?
说明 link 遵循:
Instructions
DPDK 示例 ipsec-gw
利用 RX 卸载 .offloads = DEV_RX_OFFLOAD_CHECKSUM
。对于 DPDK 19.11.5 LTS,以下是支持相同的设备列表
axgbe
dpaa2
e1000
enic
hinic
ixgbe
mlx4
mlx5
mvneta
mvpp2
netvsc
octeontx
octeontx2
sfc
tap
thunderx
thunderx
vmxnet3
DPDK RX 校验和卸载定义为 #define DEV_RX_OFFLOAD_CHECKSUM (DEV_RX_OFFLOAD_IPV4_CKSUM | DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM)
。根据错误日志 Cause: Error: port 0 required RX offloads: 0xe, available RX offloads: 0xa1d
,PMD 中似乎没有 DEV_RX_OFFLOAD_IPV4_CKSUM
。
对于问题ipsec-gw only works for Niantic NIC假设没有错。因为 IPSEC-GW 应用程序可以 运行 任何具有可用的 RX 卸载校验和的 NIC。列表在上面分享。
对于这个问题有没有办法让它与 virtio 半虚拟化网卡一起工作?可以始终禁用 RX_CHECKSUM 和在软件中做IPv4的校验和。但是您需要编辑应用程序并使用 .
我尝试运行使用以下版本
连接 DPDK ipsec-secgw 示例应用程序- DPDK版本dpdk-stable-19.11.5
- OS CentOS Linux 7.7.1908 版(核心版)
- 内核 3.10.0-1062.el7.x86_64
网卡类型和驱动程序
- 0000:00:04.0 'Virtio network device 1000' drv=igb_uio 未使用=virtio_pci,uio_pci_generic
用于运行 应用程序的命令和 cmd 行参数
./build/ipsec-secgw -l 6 -w 00:04.0 -w 00:05.0 --vdev "crypto_null" --log-level 8 \
--socket-mem 1024 -- -p 0xf -P -u 0x2 \
--config="(0,0,6),(1,0,6)" -f /root/config_file
输出:
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: Probing VFIO support...
EAL: PCI device 0000:00:04.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 1af4:1000 net_virtio
EAL: PCI device 0000:00:05.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 1af4:1000 net_virtio
CRYPTODEV: Creating cryptodev crypto_null
CRYPTODEV: Initialisation parameters - name: crypto_null,socket id: 0, max queue pairs: 8
Promiscuous mode selected
librte_ipsec usage: disabled
replay window size: 0
ESN: disabled
SA flags: 0
Frag TTL: 10000000000 ns
Allocated mbuf pool on socket 0
CRYPTODEV: elt_size 64 is expanded to 176
Allocated session pool on socket 0
Allocated session priv pool on socket 0
Configuring device port 0:
Address: 52:54:00:A5:82:2D
Creating queues: nb_rx_queue=1 nb_tx_queue=1...
EAL: Error - exiting with code: 1
Cause: Error: port 0 required RX offloads: 0xe, avaialbe RX offloads: 0xa1d
配置文件内容:
#SP IPv4 rules
sp ipv4 out esp protect 1005 pri 1 dst 192.168.105.0/24 sport 0:65535 dport 0:65535
#SA rules
sa out 1005 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef \
mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 \
port_id 1 \
type inline-crypto-offload \
sa in 5 aead_algo aes-128-gcm aead_key 2b:7e:15:16:28:ae:d2:a6:ab:f7:15:88:09:cf:4f:3d:de:ad:be:ef \
mode ipv4-tunnel src 172.16.1.5 dst 172.16.2.5 \
port_id 1 \
type inline-crypto-offload \
#Routing rules
rt ipv4 dst 172.16.2.5/32 port 1
rt ipv4 dst 192.168.105.10/32 port 0
它说缺少某些卸载功能。
我从 Niantic NIC 的 DPDK 测试计划中获得了配置文件的详细信息和命令行参数。该应用程序是否只适用于 Niantic PFs/VFs。有没有办法让它与 virtio 半虚拟化 NIC 一起工作?
说明 link 遵循: Instructions
DPDK 示例 ipsec-gw
利用 RX 卸载 .offloads = DEV_RX_OFFLOAD_CHECKSUM
。对于 DPDK 19.11.5 LTS,以下是支持相同的设备列表
axgbe
dpaa2
e1000
enic
hinic
ixgbe
mlx4
mlx5
mvneta
mvpp2
netvsc
octeontx
octeontx2
sfc
tap
thunderx
thunderx
vmxnet3
DPDK RX 校验和卸载定义为 #define DEV_RX_OFFLOAD_CHECKSUM (DEV_RX_OFFLOAD_IPV4_CKSUM | DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM)
。根据错误日志 Cause: Error: port 0 required RX offloads: 0xe, available RX offloads: 0xa1d
,PMD 中似乎没有 DEV_RX_OFFLOAD_IPV4_CKSUM
。
对于问题ipsec-gw only works for Niantic NIC假设没有错。因为 IPSEC-GW 应用程序可以 运行 任何具有可用的 RX 卸载校验和的 NIC。列表在上面分享。
对于这个问题有没有办法让它与 virtio 半虚拟化网卡一起工作?可以始终禁用 RX_CHECKSUM 和在软件中做IPv4的校验和。但是您需要编辑应用程序并使用