主要观点总结
本文介绍了字节跳动STE团队开发的下一代内核网络抓包工具netcap的对外开源,以及该工具的使用方法和实现原理。文章分为背景介绍、使用举例、设计与实现、其他用法及扩展、未来展望和关于STE团队等几个部分。
关键观点总结
关键观点1: netcap解决了传统网络抓包工具效率较低和深度网络问题定位能力有限的问题。
字节跳动STE团队基于eBPF技术开发了netcap,它能够帮助开发者提高内核网络丢包问题的定位效率。
关键观点2: netcap使用举例。
例如查看ip的icmp包是否到达内核预期的函数调用点,查看内核对于tcp端口的报文的丢包位置等。
关键观点3: netcap的设计原理。
netcap通过kprobe/tracepoint方式实现函数的hook,通过函数参数获取skb和sock关键结构体,拿到网络包的数据,通过bpf map和用户态进行数据传递。
关键观点4: netcap的扩展功能。
用户可以自定义过滤函数和输出函数,以更好地满足个性化需求。
关键观点5: 未来展望。
字节跳动STE团队在未来将优化netcap,包括支持DPDK、统一多内核版本的支持,以及解决在自定义输出时可能出现的打印错乱问题等。
文章预览
一、背景介绍 在 Linux 内核网络开发过程中,网络丢包问题是一个常见的挑战。传统的网络抓包工具(如 tcpdump)虽然能够帮助开发者定位问题,但其效率较低,且在深度网络问题定位方面能力有限。 随着 eBPF 技术的快速发展,出现了更高级的问题跟踪能力。字节跳动 STE 团队基于此技术开发了 下一代内核网络抓包工具 : netcap (net capture,内部原名:xcap ) ,并 正式对外开源 。 GitHub 地址: https://github.com/bytedance/netcap 与 tcpdump 工具只能作用于内核网络协议栈准备发包和收包的固定点相比,netcap 可以几乎跟踪整个内核网络协议栈(有skb作为参数的函数)。 字节跳动 STE 团队使用 tcpdump 语法作为过滤条件,以 skb(socket buffer)为上下文,可以轻松掌握整个报文在内核网络协议栈的完整踪迹,从而帮助开发者大大提高内核网络丢包问题的定位效率。 二
………………………………