项目背景
传统网络数据分析会在交换机上配置网络数据镜像, 将 Packet 复制后发送到目标机器,实现网络流量镜像的功能。而在云平台上,目前网络数据采集还没有统一的方案。
针对私有云平台,目前有流表数据包复制采集,在 hypervisor 上监听采集、vmware 平台分布式虚交换机配置采集、libpcap 抓包采集等方案。对于 vmware 平台分布式虚交换机配置采集的方案,性能较好,不占用客户机资源,但其属于商业产品,且只适用于购买 vmware 私有云用户;而在 hypervisor 上监听采集,目前有产品开发,性能较好,但只适用于 OpenStack 私有云;采用 OVS 流表方案,优势是免费,不占用客户机资源,但是配置复杂,且只能用于 OpenStack 私有云。
因此,开发基于libpcap + GRE封装转发的应用,或许是云平台目前最优的网络流量镜像方案。其使用简单、开源、适用于各类公有云和私有云。
Packet-Agent 简介
Netis Packet Agent 基于libpcap技术,从业务网卡抓包,进行 GRE 封装后将采集到的数据包发送到另一台远端机器,供分析使用。
该项目提供一套低开销但是高性能的抓包工具:
- pktminerg 是第一个发布的工具。该工具可以轻松地在网卡上抓数据包,用GRE头进行封装并发送到远端的设备,来进行数据包监控和分析
- pcapcompare 用于比较两个 pcap 文件
- gredump 根据特定的过滤规则抓取GRE数据包,并存储为 pcap 文件
- gredemo 是一个 demo 应用程序,可以从 pcap 文件读取数据包,然后把它们发送到远端网卡。这个程序只能通过源代码编译生成
Docker Kubernetes 支持
Packet-Agent 对 Kubernetes 也提供了支持方案。简单来说,Packet-Agent封装成容器后,与需要监控的业务容器放在同一个 K8S Pod 中,与其共享网络层并抓包镜像网络流量。具体方案见项目文档。
参与 Packet-Agent 项目
欢迎大家参与此项目,包括 star, fork, 提交 pull-request, 报告 bug, 提出任何意见或建议,或者将该项目介绍给相关的朋友。衷心感谢。