百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
X

xdpcap

> 编程语言
开源

类似于 tcpdump 的 XDP 数据包捕获

776 stars0 点赞1 次浏览
访问官网GitHub

工具介绍

类似于 tcpdump 的 XDP 数据包捕获

xdpcap

xdpcap 是一个类似于 tcpdump 的工具,用于 eXpress Data Path (XDP)。 它可以捕获来自 XDP 程序的数据包和操作/返回码, 使用标准的 tcpdump / libpcap 过滤表达式。

仪器

XDP 程序需要至少暴露一个钩子点:

c
struct bpf_map_def xdpcap_hook = {
	.type = BPF_MAP_TYPE_PROG_ARRAY,
	.key_size = sizeof(int),
	.value_size = sizeof(int),
	.max_entries = 4, // The max value of XDP_* constants
};

此地图必须被 固定在 bpffs 中。 hook.h 提供了一个方便的宏,用于声明此类映射:

#include "hook.h"

struct bpf_map_def xdpcap_hook = XDPCAP_HOOK();

应修改 return XDP_* 语句,以"喂"一个钩子:

c
#include "hook.h"

struct bpf_map_def xdpcap_hook = XDPCAP_HOOK();

int xdp_main(struct xdp_md *ctx) {
	return xdpcap_exit(ctx, &xdpcap_hook, XDP_PASS);
}

如需完整示例,请参阅 testdata/xdp_hook.c。

根据所需的粒度,一个程序可以暴露多个钩子点,或者通过使用相同的底层映射,一个钩子可以在多个程序中重复使用。xdpcap 包提供了一个封装程序,用于使用 newtools/ebpf 加载器创建和锚定钩子映射。xdpcap 支持连接到带有 BPF_F_XDP_HAS_FRAGS 标志(标注为 xdp.frags)的 XDP 程序。它将尝试像往常一样连接到 XDP 程序,如果失败,则会重试带有 BPF_F_XDP_HAS_FRAGS 标志。

  • 显示捕获的数据包: sudo xdpcap /path/to/pinned/map - "tcp and port 80" | sudo tcpdump -r -

Issues· 16 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Go

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言