恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

使用 cilium-dbg bpf srv6 sid 排查 Cilium SRv6 SID 映射表

  • 首页
  • 资讯中心
  • /
  • 使用 cilium-dbg bpf srv6 sid 排查 Cilium SRv6 SID 映射表

相关资讯

在 LlamaIndex 中使用 LlamaCloud MCP Servers Tools:将 LlamaCloud Indexes 与 LlamaExtract 接入任意 MCP 宿主 2026/9/12 9:14:37
智能车竞赛备赛全攻略:从规则解读到PID与图像处理实战 2026/9/12 9:14:37
第27章:Prometheus 与 Grafana构建RabbitMQ的可观测性 2026/9/12 9:09:37

最新资讯

Loki 项目中的 Go 指数退避库 cenkalti/backoff v5 全解析:从 5.0.0 变更到源码级重试原理
Warp框架深度解析:面向GPU仿真与物理建模的静态编译型Python前端
Dapr v1.17 Configuration API 性能基准实测:Get 吞吐与 Subscribe 延迟全景解读
足式机器人足底锁定机构设计:从动态松弛到楔形自锁
scrcpy导致Rockchip VPU DMA-BUF泄漏黑屏问题解析
Cloudflare DDoS 防护配置完全指南:Dashboard、Ruleset 覆盖与 Adaptive DDoS 实战(skills4/skills 精选参考)

今日推荐

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现
【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)
【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

本周热门

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

使用 cilium-dbg bpf srv6 sid 排查 Cilium SRv6 SID 映射表

发布时间:2026/9/12 9:14:37
使用 cilium-dbg bpf srv6 sid 排查 Cilium SRv6 SID 映射表 使用 cilium-dbg bpf srv6 sid 排查 Cilium SRv6 SID 映射表【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/ciliumcilium-dbg bpf srv6 sid是 Cilium 数据面排障工具cilium-dbg中用于直接查看内核 BPF 哈希表cilium_srv6_sid的命令该表记录着 SRv6Segment Routing over IPv6SIDSegment Identifier到 VRF ID 的映射关系。本文以 Documentation/cmdref/cilium-dbg_bpf_srv6_sid.md 为骨架结合仓库内命令实现cilium-dbg/cmd/bpf_srv6_sid.go、BPF map 定义pkg/maps/srv6map/sid.go、bpf/lib/srv6_maps.h及数据面查询逻辑bpf/lib/srv6.h完整讲解该命令的语法、输出格式、底层数据结构与数据面消费路径帮助你快速定位 SRv6 路由不生效的根因。命令定位SRv6 子命令家族中的一员cilium-dbg bpf srv6 sid是cilium-dbg bpf srv6命令族的三个叶子命令之一父命令srv6的职责是 Manage the SRv6 routing rules见 Documentation/cmdref/cilium-dbg_bpf_srv6.md其完整子命令树为cilium-dbg bpf srv6 policy— List SRv6 policy entries查看 SRv6 出向策略映射cilium-dbg bpf srv6 sid— List SRv6 SID entries查看本文主题SID→VRF ID 映射cilium-dbg bpf srv6 vrf— List SRv6 VRF mappings查看源地址/目的 CIDR 到 VRF ID 的映射在命令实现中srv6子命令由 cilium-dbg/cmd/bpf_srv6.go 中的BPFSRv6Cmd定义并挂载到BPFCmd即cilium-dbg bpf之下三个叶子命令分别对应三张不同的 BPF map。命令语法与全部选项根据官方 cmdref 文档命令用法如下cilium-dbg bpf srv6 sid [flags]专属选项选项说明-h, --help显示sid子命令的帮助信息-o, --output string指定输出格式取值范围为json、yaml、jsonpath{}--output选项由command.AddOutputOption(bpfSRv6SIDListCmd)注册见 cilium-dbg/cmd/bpf_srv6_sid.go执行时会走command.PrintOutput(bpfSIDList)路径将切片结构序列化为指定格式。继承自父命令的选项这些选项由cilium-dbg的根命令统一提供sid子命令同样适用选项说明--config string配置文件路径默认$HOME/.cilium.yaml-D, --debug启用调试消息输出-H, --host string服务端 API 的 URI--log-driver strings日志端点示例syslog--log-opt map日志驱动选项示例formatjson默认输出表格化的 SID 与 VRF ID 列表不带-o参数执行时命令将遍历 SID map 的全部条目并以 tabwriter 对齐的表格打印。表头固定为SID与VRF ID见 cilium-dbg/cmd/bpf_srv6_sid.go每个条目一行SID 以 IPv6 地址字符串形式展示VRF ID 以十进制无符号整数展示。示例输出SID VRF ID fd00::1 1 fd00::2 2当 map 中没有任何条目时命令向 stderr 输出No entries found.当 map 文件本身不存在例如节点未启用 SRv6时输出Cannot find SRv6 SID map并提前返回见 cilium-dbg/cmd/bpf_srv6_sid.go。机器可读输出JSON / YAML / jsonpath通过-o参数可以将结果导出为结构化格式便于与jq、yq或脚本管道配合做自动化巡检cilium-dbg bpf srv6 sid -o json cilium-dbg bpf srv6 sid -o yaml cilium-dbg bpf srv6 sid -o jsonpath{.items[*].SID}命令内部构造的条目结构体为见 cilium-dbg/cmd/bpf_srv6_sid.gotype srv6SID struct { SID string VRFID uint32 }因此 JSON 输出的每一条目形如{SID: fd00::1, VRFID: 1}。底层原理cilium_srv6_sidBPF 哈希表sid子命令读取的内核 map 名为cilium_srv6_sid其完整定义在 Go 侧 pkg/maps/srv6map/sid.go 与 BPF C 侧 bpf/lib/srv6_maps.h 中保持一致属性值说明map 名称cilium_srv6_sid按名称 pin 在 bpffs 上LIBBPF_PIN_BY_NAMEmap 类型BPF_MAP_TYPE_HASH普通哈希表keyunion v6addr128 位 IPv6 地址即 SID 本身value__u32对应的 VRF ID最大条目数SRV6_SID_MAP_SIZE 16384常量在 pkg/maps/srv6map/sid.go 与 bpf/node_config.h 中定义map flagsBPF_F_NO_PREALLOC \| BPF_F_RDONLY_PROG_COND不预分配内存条件性对 BPF 程序只读Go 侧的 key/value 类型分别为SIDKey{SID types.IPv6}与SIDValue{VRFID uint32}见 pkg/maps/srv6map/sid.goGo map 打开方式为OpenSIDMap(logger)同文件 pkg/maps/srv6map/sid.go该 map 仅在节点启用 SRv6DaemonConfig.EnableSRv6时创建并通过 Hive 生命周期钩子在OnStart时OpenOrCreate、OnStop时关闭见 pkg/maps/srv6map/sid.go。数据面如何消费这张表SID map 在数据面中的角色是解封装判定当内核收到一个内层协议为 IPIP/IPv6 或携带 SRH 的 IPv6 报文时数据面会以报文目的地址SID为 key 查询cilium_srv6_sid命中则说明本节点是该 SID 的终点应执行 SRv6 解封装并将流量送入对应 VRF。核心查询函数为 bpf/lib/srv6.h 中的srv6_lookup_sid()static __always_inline __u32 srv6_lookup_sid(const struct in6_addr *sid) { const __u32 *vrf_id; vrf_id map_lookup_elem(cilium_srv6_sid, sid); if (vrf_id) return *vrf_id; return 0; }可以看到map 的 valueVRF ID正是解封装后报文所属 VRF 的标识未命中时返回 0意味着该报文不会被当作 SRv6 终止处理。因此当你发现 SRv6 解封装没有按预期生效时第一步就是用cilium-dbg bpf srv6 sid确认目标 SID 是否已写入表中、其绑定的 VRF ID 是否符合预期。一张表三类子命令配合排障SRv6 数据面依赖三张 map 协作cilium_srv6_vrf_v4/v6LPM Trie源 IP目的 CIDR → VRF ID、cilium_srv6_policy_v4/v6LPM TrieVRF ID目的 CIDR → SID以及本文的cilium_srv6_sid哈希SID → VRF ID。完整的排查链路是用cilium-dbg bpf srv6 vrf确认入站报文能否映射到正确的 VRF用cilium-dbg bpf srv6 policy确认出向流量应封装的 SID再用cilium-dbg bpf srv6 sid确认该 SID 在对端节点是否已注册。三者定义分别见 pkg/maps/srv6map/vrf.go 与 pkg/maps/srv6map/policy.go。权限与运行环境要求命令在Run函数入口调用了common.RequireRootPrivilege(cilium bpf srv6 sid)见 cilium-dbg/cmd/bpf_srv6_sid.go因此必须以 root 权限或在支持非 root 读取 BPF map 的环境下具备相应能力执行。它读取的是本节点 bpffs 上 pin 的 map 文件属于对本地数据面的直接访问无需经由 API server。源码级验证测试用例仓库中的单元测试 pkg/maps/srv6map/sid_test.goTestPrivilegedSIDMapsHive验证了该 map 从创建到迭代的完整流程通过 Hive 注入newSIDMap断言SRV6_SID_MAP_SIZE宏被导出、map 文件存在于 bpffs、插入SIDfd00::1, VRFID1后能通过IterateWithCallback读回。数据面侧的集成测试 bpf/tests/tc_srv6_decap.c 则直接调用map_update_elem(cilium_srv6_sid, sid, vrf_id, 0)预置 SID 条目后验证解封装路径——这正对应了本命令所列举的条目类型。进一步阅读父命令参考cilium-dbg bpf srv6兄弟命令cilium-dbg bpf srv6 policy、cilium-dbg bpf srv6 vrf命令实现cilium-dbg/cmd/bpf_srv6_sid.goBPF map 定义bpf/lib/srv6_maps.h、pkg/maps/srv6map/sid.go数据面查询逻辑bpf/lib/srv6.h【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号