如何为网关配置 l3ACL dpdk 应用程序

How to configure l3ACL dpdk application for gateway

我正在尝试为网关配置 l3ACL 应用程序。l3fwd ACL Dpdk 应用程序在 Mellanox NIC.using dpdk (dpdk-stable-20.11) 中 运行 作为共享库。

编辑: 使用 Trex 流量生成器的 l3fwd acl 测试连接设置的早期场景 enter image description here

在这种情况下,数据包由 DPDK 的 L3fwd ACL 应用程序沿从 Trex 流量生成器的端口 1 到端口 0 的方向转发。这是通过在 --eth-dest 标志中包含 MAC 地址以及 Trex 在初始化时指示的 MAC 地址来实现的。在包含这个 MAC 地址时,数据包被流量生成器的 Rx 端检测到,即端口 0。

当前场景

此设置已修改为模拟网关级别部署以测试 L3fwd ACL,如下面的连接图所示。

附接线图 enter image description here

在此设置中,连接到流量生成器的端口被两台模拟外部网络和内部 LAN 网络的机器所取代,如图所示。我们尝试在没有 运行 DPDK 应用程序的情况下 ping 外部和内部网络。网络中的 ping 在未启用 DPDK 的情况下工作。随后使用下面给出的命令启动 L3fwd ACL 应用程序,其中机器的物理 MAC 地址被替换为先前连接到流量生成器的端口 0 侧。在流量生成器的情况下,端口 0 接收来自 L3fwd ACL 应用程序的流量。主要区别在于我们在网关场景中包含一个带有 --eth-dest 标志的物理 MAC 地址,而由流量生成器指示的模拟 MAC 与 --eth-dest 标志一起使用以环回方式使用流量生成器转发 L3fwd ACL 工作设置中的数据包。

在端口0 连接的外部网络机器Rx 端接口的物理MAC 地址没有接收到来自L3fwd ACL 应用程序的流量。 rule_ipv4.db 中配置的 Route 条目是 R0.0.0.0/0 0.0.0.0/0 0 : 65535 0 : 65535 0/0xff 0.

无法在具有 Mac 地址的接口上跟踪数据包 –eth_dest parameter.After 起始 l3fwd acl 目标主机无法访问。 用于 L3FWD ACL 的命令

./dpdk-l3fwd-acl –l 1-7 –n 4 -- -p 0x3

--config=”(0,0,1),(1,0,2),(0,1,3),(1,1,4),(0,2,5),(1,2,6),(0,3,7)” --rule_ipv4=”/root/rule_ipv4.db” –rule_ipv6=”/root/rule_ipv6.db” –eth-dest=0,next-hop-MAC-here

如何为网关配置 l3ACl dpdk 示例应用程序?

DPDK 示例代码 l3fwd-acl 仅适用于 IP 数据包。对于 non-ip,它被丢弃在函数 process_one_packet 中。使用外部数据包生成器(如 TREX)时,DPDK_PKTGEN、SCAPY、PACKETH、PCAP 重放 IP 数据包不会被丢弃,并且会执行 ACL 查找。符合条件的数据包通过 DPDK 端口转发,不匹配的数据包被丢弃。

在您当前的情况下,连接到实际网络的接口可能会导致

  1. 要生成的 ARP 或 RARP 数据包
  2. 要生成的 LDAP 数据包
  3. 如果通过托管交换机连接,则会生成 VLAN 数据包。

在上述所有情况下,这些都被视为 non-IP 导致丢弃的数据包。因此推荐的方式是通过在端机或交换机上添加静态ARP表项来使用。这将消除 ARP 和 RARP 数据包。

注意:如果外部设备没有配置promiscious模式,请使用--eth-macaddress帮助l3fwd-acl更新MAC地址。