3. 网络观测核心概念:网络延迟、吞吐量、丢包率、连接跟踪、流表

在构建 eBPF 网络观测体系时,必须精确理解五个核心度量与状态管理概念。它们是诊断发布窗口查询延迟回归的基石。下面逐一拆解其定义、度量方式及在 eBPF 观测中的映射关系。

3.1 网络延迟 (Latency)

网络延迟指数据包从源端发出到目标端接收所经过的总时间。在 eBPF 观测中,我们通常关注 往返时间 (RTT) 和 服务端处理时间 两个维度。

延迟类型 定义 eBPF 观测点 回归影响
网络 RTT 数据包从发送到收到 ACK 的时间 tc/egress + tracepoint/tcp/destroy_sock 查询响应时间基线偏移
内核处理延迟 数据包在协议栈内的排队与处理耗时 kprobe/tcp_v4_do_rcv CPU 软中断升高导致抖动
应用延迟 从 socket 读取到业务逻辑返回的时间 uprobe/uretprobe 挂载查询函数 制品库查询接口变慢
观测要点: 在发布窗口内,应重点监控 P99 延迟的突变。eBPF 可以通过 BPF_MAP_TYPE_HASH 按五元组聚合,实时输出延迟直方图,避免传统 tcpdump 全量抓包带来的性能开销。
网络延迟分解与 eBPF 观测点 客户端 网络链路 内核协议栈 应用服务 RTT 延迟 内核排队延迟 应用处理延迟 tc/egress kprobe/tcp_v4_do_rcv uprobe/uretprobe 延迟回归判定: 当 P99 延迟超过基线 20% 或值 > 200ms 时,触发回归告警。eBPF 可提供微秒级精度。

3.2 吞吐量 (Throughput)

吞吐量衡量单位时间内成功传输的数据量。在制品库发布场景中,吞吐量下降直接导致查询延迟上升。

  • bps (bits per second):链路层吞吐,eBPF 通过 BPF_MAP_TYPE_PERCPU_ARRAY 在 XDP/tc 层累加字节数。
  • pps (packets per second):包转发率,小包场景下的关键指标,eBPF 可在驱动层直接计数。
  • ops (operations per second):应用层吞吐,如每秒查询次数 (QPS),通过 uprobe 挂载查询处理函数统计。
回归关联: 吞吐量骤降通常伴随延迟飙升。eBPF 可以同时采集吞吐与延迟,在 BPF_MAP_TYPE_HASH 中建立关联映射,快速定位是网络瓶颈还是应用瓶颈。

3.3 丢包率 (Packet Loss)

丢包率是导致查询延迟回归的常见根因。eBPF 提供了比传统 netstat -s 更细粒度的丢包观测能力。

丢包阶段 典型原因 eBPF 探测方法
驱动层 环形缓冲区满 XDP 程序返回 XDP_DROP 时计数
TC 层 qdisc 队列溢出 tracepoint/net:net_dev_queue
IP 层 路由查找失败 kprobe/ip_rcv_finish 返回值检查
TCP 层 接收窗口满、重传超时 tracepoint/tcp:tcp_retransmit_skb
Socket 层 接收缓冲区满 kprobe/sock_rcvmsg 丢弃计数
回归检查重点: 发布窗口内若观察到 TCP 重传率 > 2% 或任意层丢包率 > 0.1%,应立即关联延迟指标。eBPF 可以按连接维度输出丢包计数器,避免全局统计掩盖单连接问题。

3.4 连接跟踪 (Connection Tracking)

连接跟踪是网络状态管理的核心机制,记录所有活跃连接的五元组及状态。在 eBPF 观测中,连接跟踪数据直接决定流表聚合的准确性。

连接跟踪状态机与 eBPF 观测 NEW ESTABLISHED RELATED CLOSE eBPF 观测点:tracepoint/net/netfilter/nf_conntrack_new / nf_conntrack_destroy 回归影响:连接跟踪表溢出会导致新连接被丢弃,直接表现为查询超时。 eBPF 可实时监控 conntrack 表使用率,在达到 90% 容量前发出预警。

3.5 流表 (Flow Table)

流表是网络观测中用于聚合和存储流记录的数据结构。eBPF 程序通常使用 BPF_MAP_TYPE_HASH 或 BPF_MAP_TYPE_LRU_HASH 实现流表,按五元组聚合统计信息。

流表属性 说明 eBPF 实现方式
Key 五元组 (src_ip, dst_ip, src_port, dst_port, proto) struct flow_key { __u32 saddr; __u32 daddr; __u16 sport; __u16 dport; __u8 proto; }
Value 统计计数器 (包数、字节数、时间戳、延迟直方图) struct flow_metrics { __u64 packets; __u64 bytes; __u64 ts_first; __u64 ts_last; __u64 latency_hist[10]; }
老化策略 超时自动删除,防止内存泄漏 BPF_MAP_TYPE_LRU_HASH 自动驱逐最久未使用条目
用户态读取 周期性 dump 或事件推送 perf_event_array 或 ring_buffer 输出流记录
回归检查实践: 在制品库发布窗口,流表条目数会急剧增长。eBPF 流表应设置合理的最大容量(如 65536 条),并监控 map_oom_count 指标。若流表溢出,将导致新流无法创建,查询请求被静默丢弃,延迟直接飙升到超时阈值。

3.6 五维指标关联分析

单一指标无法完整描述网络健康状态。在回归检查中,必须建立五维指标的关联分析模型:

  1. 延迟升高 + 吞吐下降 + 丢包增加 → 网络链路拥塞或硬件故障
  2. 延迟升高 + 吞吐不变 + 丢包正常 → 应用层处理变慢(如数据库查询变慢)
  3. 延迟升高 + 连接跟踪表满 + 流表溢出 → 并发连接数超过系统容量
  4. 延迟抖动 + 重传率升高 + 吞吐波动 → 网络路径不稳定或中间设备引入抖动
eBPF 优势: 传统工具(netstat、ss、tcpdump)只能提供全局或单点视图。eBPF 可以在内核中同时采集延迟、吞吐、丢包、连接状态和流表数据,通过 BPF_MAP_TYPE_HASH 按连接维度关联,输出结构化的观测事件,直接用于回归检测引擎。