核心逻辑在 ReadTCPRequestIntoSpan(pkg/ebpf/common/tcp_detect_transform.go),采用三级瀑布式匹配:
- 内核已标注(最快):内核常量直接给出 MySQL=1、Postgres=2、Kafka=4 等。
- 确定性通用匹配:依次尝试 SQL → FastCGI → Mongo → Couchbase → Memcached,SQL 会先试请求缓冲再试响应缓冲。
- 启发式兜底(最易误判放最后):Redis → Memcached → HTTP/2 → NATS → AMQP → MQTT → Kafka,顺序本身就是 bug 经验的沉淀,例如 HTTP/2 必须排在 MQTT 前面以避免误命中 preface。
每个协议还有精细的防误判检查,例如 SQL 用可打印 ASCII 前缀过滤 + 关键字搜索 + SQLParseOperationAndTable 提取操作和表。




