我有一个连接到SPAN端口的系统,该端口可以抽出几乎恒定的10Gbps原始网络流量。我的主要目标是观察所有DHCP流量的零丢失,但是我还需要能够观察非DHCP流量的(可接受的有损)流。本机接口当前下降了所有流量的%0.25左右。
要实现此目的,我设想以下内容:
我用来处理/分析流量的代码可以并行运行,并且每个实例可以监视不同的接口。对我来说最大的未知数是它使用PF_RING。我对PF_RING不太熟悉,也无法确定它是否阻止了基于tc
的过滤功能的正常工作。
我试图通过tc
来使它工作,但是正在努力使其按预期工作。我使用了以下命令序列,其中br0
是原始输入接口:
ip link add dummy0 type dummy
ip link set dummy0 up
# Create the ingress queue discipline
tc qdisc add dev br0 handle ffff: ingress
# Setup the filters to mirror UDP traffic to dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip dport 67 0x00ff action mirred egress redirect dev dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip dport 68 0x00ff action mirred egress redirect dev dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip sport 67 0x00ff action mirred egress redirect dev dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip sport 68 0x00ff action mirred egress redirect dev dummy0
这似乎将DHCP流量镜像到未运行PF_RING的测试VM上的虚拟接口(dummy0
),但是当我在完整系统上尝试相同操作时,它会产生不稳定的结果(我得到非dummy0
接口上的DHCP内容,似乎我也丢失了DHCP流量)。我也无法在输入接口上使基于DHCP的优先级工作,我认为这只是我对tc PRIO
命令集缺乏了解。