3、Cilium 网络模型:Overlay(VXLAN/Geneve)与 Direct Routing 模式、隧道端点与路由表

Cilium 的数据平面支持两种核心网络转发模式:Overlay(覆盖网络)与 Direct Routing(直接路由)。理解这两种模式的工作原理、隧道封装机制以及节点路由表的变化,是掌握 Cilium 集群排障与流量路径分析的基础。

3.1 两种网络模式的核心差异

下表从封装开销、基础设施依赖、性能特征与适用场景四个维度对比 Overlay 与 Direct Routing 模式:

对比维度 Overlay(VXLAN / Geneve) Direct Routing
封装方式 在原始数据包外添加 UDP 头部(VXLAN 固定 50 字节,Geneve 可变 50+ 字节) 不封装,直接使用节点主网卡路由转发
基础设施依赖 仅需节点间三层可达(IP 网络连通即可) 要求底层网络支持 Pod CIDR 路由(需配置 BGP 或静态路由)
性能特征 CPU 开销较高(封装/解封装),吞吐量略低 接近原生网络性能,无额外封装开销
适用场景 多云、混合云、网络设备不支持 Pod 路由的环境 同数据中心、网络团队可配合配置路由的场景

3.2 Overlay 模式:VXLAN 与 Geneve 隧道

在 Overlay 模式下,Cilium 在每个节点上创建一个隧道端点(Tunnel Endpoint,简称 VTEP),负责将 Pod 发出的数据包封装为 UDP 报文,通过节点主网卡发送到对端节点的 VTEP 解封装。

关键概念:隧道端点(TEP) —— 每个节点上的 Cilium Agent 会创建一个虚拟隧道接口(如 vxlan0 或 geneve0),该接口的 IP 地址通常为节点主 IP。所有跨节点 Pod 流量都经过此接口进行封装/解封装。

VXLAN 与 Geneve 的协议差异如下:

  • VXLAN:固定头部 8 字节 + UDP 8 字节 + 外层 IP 20 字节 + 外层 MAC 14 字节,总开销约 50 字节。VNI(VXLAN Network Identifier)为 24 位,支持 1600 万个网络标识。
  • Geneve:可变头部(基础 8 字节 + 可选 TLV),UDP 端口固定为 6081。支持更丰富的元数据传递(如安全策略标识、服务标识),更适合 SDN 场景。

以下 SVG 展示了 Overlay 模式下跨节点 Pod 通信的封装路径:

Overlay 模式跨节点流量封装路径 节点 A Pod-A (10.0.1.2) eth0: 192.168.1.10 vxlan0: 192.168.1.10 节点 B Pod-B (10.0.2.3) eth0: 192.168.2.20 vxlan0: 192.168.2.20 VXLAN 封装 原始: [Pod-A → Pod-B] 封装后: [UDP(VXLAN) + 外层IP(192.168.1.10→192.168.2.20)] VNI: 1 (集群默认) 隧道端点(TEP)行为 发送端 VTEP:查询 FDB 表,找到目标 Pod 所在节点的隧道 IP,执行 VXLAN 封装 接收端 VTEP:解封装后根据内层目标 IP 转发给本地 Pod 节点 A 路由表(Overlay 模式) 10.0.2.0/24 via 192.168.2.20 dev vxlan0 # 跨节点 Pod CIDR 走隧道接口 10.0.1.0/24 dev lxc+ scope link # 本地 Pod 直连
排障要点: 当跨节点 Pod 通信失败时,首先检查节点间的 UDP 端口是否可达(VXLAN 默认 8472,Geneve 默认 6081)。其次在源节点执行 ip route show 确认目标 Pod CIDR 是否指向隧道接口,以及 bridge fdb show 查看 FDB 表中是否有对端节点的 MAC 地址。

3.3 Direct Routing 模式:无封装直通路径

Direct Routing 模式下,Cilium 不创建隧道接口,而是直接通过节点的物理网卡(eth0 或 bond0)转发 Pod 流量。每个节点需要将其他节点的 Pod CIDR 路由写入主路由表,下一跳指向对端节点的物理 IP。

这种模式要求底层网络基础设施(物理交换机或路由器)能够识别并转发 Pod CIDR 的路由条目。常见的实现方式包括:

  • BGP 动态路由:Cilium 内置 BGP 控制器(Cilium BGP Control Plane),自动将 Pod CIDR 宣告给网络中的 BGP 对等体。
  • 静态路由:在物理路由器或云平台路由表中手动添加每个节点的 Pod CIDR 路由。
  • 云平台原生路由:在 AWS、GCP、Azure 等环境中,通过 Cilium 的云集成自动配置 VPC 路由表。

以下 SVG 展示了 Direct Routing 模式下跨节点 Pod 通信的路径:

Direct Routing 模式跨节点流量路径 节点 A Pod-A (10.0.1.2) eth0: 192.168.1.10 路由: 10.0.2.0/24 → 192.168.2.20 节点 B Pod-B (10.0.2.3) eth0: 192.168.2.20 路由: 10.0.1.0/24 → 192.168.1.10 底层物理网络 交换机/路由器已配置 Pod CIDR 路由 数据包:源 IP 10.0.1.2 → 目标 IP 10.0.2.3 无封装,直接通过物理网卡转发 节点 A 路由表(Direct Routing 模式) 10.0.2.0/24 via 192.168.2.20 dev eth0 # 跨节点 Pod CIDR 走物理网卡 10.0.1.0/24 dev lxc+ scope link # 本地 Pod 直连 关键区别 Overlay 模式下一跳指向隧道接口(vxlan0),Direct Routing 模式下一跳指向物理网卡(eth0)
注意事项: Direct Routing 模式要求底层网络设备支持 Pod CIDR 路由。如果物理交换机启用了源/目标 IP 验证(如 AWS 的 Source/Dest Check),必须关闭该功能,否则跨节点 Pod 流量会被丢弃。在云环境中,通常需要配合 Cilium 的 aws-node 或 azure-ipam 组件自动管理路由表。

3.4 隧道端点与路由表深度解析

无论使用哪种模式,Cilium 都会在节点上维护一套精细的路由规则。理解这些规则是进行网络排障的前提。

3.4.1 Overlay 模式下的路由与 FDB

在 Overlay 模式下,Cilium 使用 策略路由(Policy Routing) 将 Pod 流量导入隧道接口。关键路由条目包括:

# 节点 A 上的路由表(简化)
10.0.2.0/24 via 192.168.2.20 dev vxlan0  # 跨节点 Pod CIDR → 隧道接口
10.0.1.0/24 dev lxc+ scope link          # 本地 Pod → 直接交付
169.254.0.0/16 dev vxlan0 scope link     # 隧道元数据通信

# FDB 表(转发数据库)
# 记录对端节点 MAC 与隧道 IP 的映射关系
00:11:22:33:44:55 dev vxlan0 dst 192.168.2.20 self permanent

当 Pod-A 向 Pod-B 发送数据包时,内核查找路由表发现目标属于 10.0.2.0/24 网段,下一跳为 192.168.2.20,出接口为 vxlan0。VXLAN 驱动查询 FDB 表,找到 192.168.2.20 对应的 MAC 地址,然后执行 VXLAN 封装。

3.4.2 Direct Routing 模式下的路由与 ARP

Direct Routing 模式的路由表更简洁,但依赖底层网络对 Pod CIDR 的认知:

# 节点 A 上的路由表(Direct Routing)
10.0.2.0/24 via 192.168.2.20 dev eth0    # 跨节点 Pod CIDR → 物理网卡
10.0.1.0/24 dev lxc+ scope link          # 本地 Pod → 直接交付
default via 192.168.1.1 dev eth0         # 默认路由

此时,数据包直接通过 eth0 发出,目标 MAC 地址为下一跳 192.168.2.20 的 MAC(通过 ARP 获取)。物理交换机根据目标 IP(10.0.2.3)查找路由表,将数据包转发到节点 B。

3.5 模式选择决策树

在实际生产环境中,选择 Overlay 还是 Direct Routing 通常遵循以下决策逻辑:

  1. 底层网络是否支持 Pod CIDR 路由?
    • 是 → 考虑 Direct Routing(性能优先)
    • 否 → 必须使用 Overlay(兼容性优先)
  2. 是否需要跨集群或跨云通信?
    • 是 → Overlay 更易实现(隧道封装天然隔离)
    • 否 → 根据网络团队能力选择
  3. 性能敏感度如何?
    • 高(如实时音视频、高频交易)→ Direct Routing
    • 中低 → Overlay 可接受
  4. 运维团队是否熟悉 BGP?
    • 是 → Direct Routing + Cilium BGP Control Plane
    • 否 → Overlay 减少网络配置复杂度
最佳实践: 在无法确定底层网络能力时,优先使用 Overlay 模式。Cilium 的 VXLAN 实现经过大规模生产验证,性能损失通常在 5%-10% 以内,且能避免大量网络配置排障工作。当性能成为瓶颈且网络团队有能力配合时,再迁移至 Direct Routing。

3.6 排障命令速查表

排查目标 命令 预期输出
查看当前网络模式 cilium status | grep "Tunnel" Tunnel: VXLAN 或 Tunnel: Disabled
查看隧道接口 ip link show vxlan0 接口状态为 UP,MTU 通常为 1450
查看 FDB 表 bridge fdb show dev vxlan0 列出对端节点 IP 与 MAC 映射
查看路由表 ip route show 确认 Pod CIDR 路由指向正确接口
查看策略路由 ip rule show 确认 Cilium 添加的 100 优先级规则
测试隧道连通性 cilium connectivity test 所有测试用例通过