cilium 支持 hubble 观察到 VNI

24 阅读1分钟

该 PR 总结

应该在 1.18.6 发布

github.com/zbb88888/ci…

核心目的

为 Hubble 流量(flow)中的 tunnel 字段补充 VNI(虚拟网络标识符)信息,助力调试来自意外 VNI 的流量问题——Cilium 中 VNI 通常与源标识相等,新增该字段可明确流量对应的 VNI 归属,提升问题排查效率。

关键改动

1. 字段定义与文档更新

  • api/v1/flow/flow.proto:在 Tunnel 消息体中新增 uint32 vni = 4 字段,正式定义 VNI 数据类型与字段序号。
  • api/v1/flow/README.md:同步更新文档,补充 vni 字段的说明(类型为 uint32),保持文档与协议定义一致。

2. 解析逻辑适配

  • pkg/hubble/parser/threefour/parser.go:优化 VXLAN/Geneve overlay 流量的解析逻辑,在构造 Tunnel 结构体时,分别从 d.overlay.VXLAN.VNId.overlay.Geneve.VNI 提取对应 VNI 值,赋值给 Tunnel.Vni 字段(原逻辑仅赋值协议、IP、L4 信息,未包含 VNI)。

3. 测试用例补充

  • pkg/hubble/parser/threefour/parser_test.go:为 VXLAN 和 Geneve 两种 overlay 场景新增测试断言,验证解析后 Tunnel.Vni 字段是否正确设置为预期值(uint32(2)),确保功能稳定性。

4. 自动生成文件更新

  • api/v1/flow/flow.pb.go:因 flow.proto 字段变更,自动生成对应的 Go 代码(11 行新增、2 行修改),适配 VNI 字段的序列化/反序列化逻辑。

改动规模

  • 涉及 5 个文件,累计新增 17 行代码、删除 4 行代码,改动聚焦字段补充与逻辑适配,无破坏性变更。
  • 关联主仓库 issue:cilium/cilium#43398,提交者为 Fabian Fischer(fabian.fischer@isovalent.com)。