我正在尝试运行密件抄送中提供的本教程 XDP 代码。
我使用的代码是这个脚本:密件抄送/示例/网络/xdp/xdp_drop_count.py https://github.com/iovisor/bcc/blob/master/examples/networking/xdp/xdp_drop_count.py.
据我了解,XDP 标志的工作原理如下(来自那个问题 https://stackoverflow.com/questions/57171394/with-attach-xdp-does-flags-control-the-mode):
#define XDP_FLAGS_SKB_MODE (1U << 1)
#define XDP_FLAGS_DRV_MODE (1U << 2)
#define XDP_FLAGS_HW_MODE (1U << 3)
那么,这是否意味着如果我将标志位更改为
flags |= 1 << 3
我应该能够在硬件加速模式(卸载)下运行此代码?
我有一张支持 XDP 硬件加速模式的网卡,当我只需附加一个仅包含一行代码的简单程序时,它就可以正常工作:
return XDP_PASS;
并通过使用将其附加到卸载模式ip link set dev interface xdpoffload
etc.
所以我已经确认我的 NIC 能够加载卸载的 XDP 程序,但是当我尝试上述操作时,它给了我一个错误:
bpf: Attaching prog to enp4s0np1: Invalid argumentTraceback (most recent call last) :
File "xdp_drop_count.py", line 132, in <module>
b. attach_xdp(device, fn, flags)
File "usr/lib/python2.7/dist-packages/bcc/__init__.py", line 723, in attach_xdp % (dev, errstr))
Exception : Failed to attach BPF to device enp4s0np1: No such file or directory
另外,当我将标志设置为:
flags |= 1 << 2
我不确定这是否实际上是在驱动程序模式下运行 XDP 程序。
我错过了什么吗?
先感谢您。