libpcap - 我可以将 DPDK 用作网络监控应用程序的数据包捕获模块吗?
问题描述
我的被动network monitoring
应用程序需要从网络接口捕获数据包(以更高的数据包速率)。数据包捕获模块应该能够在捕获每个数据包时调用监控函数(并将数据包写入pcap
文件)。
我想在我的监控应用程序中DPDK
用作数据包捕获模块(分别使用pcap_loop
和和),但我不确定这是否是 的用例之一,还是打算像这样使用?pfring_loop
libpcap
pfring
DPDK
DPDK
所以我的问题是.. 我可以DPDK
用来满足我的要求吗?,如果是,如何开始?
操作系统:Linux。
Karnal 版本:4
. DPDK 版本:最新稳定版。
在物理设备上捕获。
捕获应用程序具有 root 权限,将由网络管理员使用(作为被动资产发现的一部分)。
我想使用 DPDK,因为它支持高达 10 Gbps 的线速捕获
谢谢你。
解决方案
根据评论中的更新和澄清,请求是Can one replace an existing application which PF_RING API calls with DPDK API which is written in C?
。简单的回答是可以的。
这是一个应该如何开始
- 识别平台(最好是 Linux/BSD,windows 21.02 仍在进行中)
- 识别支持的 CPU 的处理器列表
- 从DPDK NIC 的 LIST 中识别要使用的 NIC
- 使用 Linux 环境设置Linux 环境
- 探索basicfwd 用法的基本示例/骨架
- 使用 DPDK API 获取数据包的以太网标头的开头
rte_pktmbuf_mtod
。DPDK/examples 文件夹中有许多示例,它们的作用相同。 - 调用example/skeleton的rx_burst和tx_burst之间的包处理函数逻辑。
推荐阅读
- laravel - Laravel 8 - 类在测试中不使用类的模拟版本
- vba - 如何为从第 3 行开始的一系列列着色
- python - 有没有办法防止打开 2 个相同的 tkinter 屏幕?
- amazon-web-services - 我已经安装了 SSL 并且还修复了不安全的内容,但我仍然得到您与该站点的连接并不完全安全
- scala - spark中的isNullOrEmpty函数检查数据框中的列是否为空或空字符串
- c# - 有没有办法从动态生成的字段(字段名称、字段类型)创建 SQL 表
- python - 如何在 Visual Studio Code 中调试诗歌应用程序
- excel - 通过使用标准表(矩阵方案)查看下面的单元格来匹配值
- ruby-on-rails - 出现错误 - PG::UndefinedColumn(错误:使用 postgres 版本 13.3 的 heroku 上不存在列 d.adsrc
- pandas - pandas:如何从深度嵌套的列表中删除重复项