networking - 基于带有 PF_RING 的端口对入站流量进行优先级排序并将其路由到虚拟接口
问题描述
我有一个连接到 SPAN 端口的系统,该端口可以输出近乎恒定的 10Gbps 原始网络流量。我的主要目标是以零损失观察所有 DHCP 流量,但我还需要能够观察(可接受的有损)非 DHCP 流量流。本机接口目前正在按原样丢弃大约 %0.25 的所有流量。
为了让这个工作,我设想以下内容:
- 入站 SPAN 流量来自单个接口,该接口优先考虑 DHCP
- 流量根据是否为 DHCP(端口 67/68)路由到两个虚拟接口
我用来处理/分析流量的代码可以并行运行,每个实例都可以观察不同的接口。对我来说最大的未知数是它使用 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 流量镜像到dummy0
未运行 PF_RING 的测试 VM 上的虚拟dummy0
接口(看起来我也缺少 DHCP 流量)。我也无法在输入接口上获得基于 DHCP 的优先级,我认为这只是我对tc PRIO
命令集缺乏了解。
解决方案
推荐阅读
- bash - crontab 看不到 shell 命令的 $1 参数
- android - 在 Google Play 上发布了带有调试密钥库的 APK
- android - 如何知道按钮状态是否已从启用更改为禁用 android?
- sql - 如果有记录不会使用该特定列,我应该将列设置为 NULL 吗?
- linux - Linux下只有中断向量能识别中断源吗?
- c# - System.UnauthorizedAccessException:似乎无法确定
- mailgun - 递送问题 - Hotmail 和 Yahoo
- php - JSPDF + HTML2CANVAS + Wordpress + 试图将 PDF 保存到服务器上的文件夹。
- c# - RadGrid 在编辑模式下使用 RadComboBox 按需加载
- c++ - 如何在 std::string 和 Aws::String 之间进行转换?