4. 租户隔离模型:多租户网络隔离需求、基于VLAN/VXLAN的隔离、基于Cilium的eBPF隔离方案

4.1 多租户网络隔离的核心需求

在云计算与容器化环境中,多租户(Multi-Tenancy)意味着多个用户或业务单元共享同一套物理基础设施。网络隔离是保障租户安全与性能的基石,其核心需求可归纳为以下四点:

需求维度 描述 关键指标
安全隔离 租户A的流量不得被租户B嗅探或篡改,防止横向移动攻击。 零信任模型、加密隧道
性能隔离 一个租户的突发流量不应抢占其他租户的带宽或CPU资源。 带宽QoS、CPU pinning
地址空间隔离 不同租户可使用重叠的IP/MAC地址(如私有RFC1918地址)。 VNI/VXLAN ID、VRF
策略自治 租户可独立管理自己的网络策略(防火墙、路由、ACL),互不干扰。 NetworkPolicy CRD
关键认知: 传统网络隔离依赖物理边界(防火墙、ACL),而云原生隔离要求逻辑边界——即在同一台宿主机或同一个Overlay网络中,通过软件定义的方式实现租户间的“空气墙”。

4.2 基于VLAN/VXLAN的传统隔离方案

在eBPF普及之前,网络隔离主要依赖VLAN(802.1Q)和VXLAN(RFC 7348)两种Overlay技术。它们通过封装机制在共享物理网络上构建逻辑隔离网络。

4.2.1 VLAN隔离模型

  • 原理: 在以太网帧头插入4字节VLAN Tag(12位VID),将物理LAN划分为多个逻辑广播域。
  • 隔离粒度: 最多4096个VLAN(VID 0-4095),适用于小型数据中心。
  • 局限: 二层网络规模受限(STP收敛慢)、无法跨三层网络、租户数量超过4094时失效。

4.2.2 VXLAN隔离模型

  • 原理: 将二层以太帧封装在UDP包中(VTEP),通过24位VNI标识租户,支持1600万+逻辑网络。
  • 优势: 跨三层Underlay网络、利用ECMP负载均衡、支持大规模多租户。
  • 代价: 封装/解封装消耗CPU(需硬件Offload)、MTU膨胀(50字节开销)、隧道管理复杂。
VLAN vs VXLAN 对比表:
特性 VLAN (802.1Q) VXLAN (RFC 7348)
隔离标识 12-bit VID 24-bit VNI
最大租户数 4094 16,777,216
封装层 L2 (以太帧) L3 (UDP/IP)
跨子网 不支持 支持
性能开销 低(硬件交换) 中(需CPU/Offload)
适用场景 小型私有云 大规模容器/虚拟化
VLAN vs VXLAN 隔离架构对比 VLAN 隔离域 租户A (VID 10) 租户B (VID 20) VM-A1 VM-B1 VM-A2 VM-B2 vs VXLAN 隔离域 租户A (VNI 10001) 租户B (VNI 10002) Pod-A1 Pod-B1 Pod-A2 Pod-B2 VLAN 依赖物理交换机 Tag 隔离;VXLAN 通过 VTEP 在 IP 网络建立隧道,支持跨主机租户通信

4.3 基于Cilium的eBPF隔离方案

Cilium 是首个将 eBPF 作为核心数据平面的 CNI 插件。它摒弃了传统 iptables 和 Overlay 封装的性能瓶颈,直接在 Linux 内核中通过 eBPF 程序实现租户隔离。其隔离模型基于 Identity(安全身份) 而非 IP 地址。

4.3.1 Cilium 隔离架构核心组件

  • Identity (安全身份): 每个 Pod/容器在启动时被分配一个 24-bit 的 Security Identity,存储在 eBPF Map 中。身份基于标签(Label)派生,而非 IP。
  • eBPF Policy Engine: 在 XDP 和 TC 钩子点加载 eBPF 程序,直接对每个数据包执行身份查找与策略匹配,无需经过 iptables 规则链。
  • Encapsulation Bypass: 默认使用原生路由(Native Routing)或直接路由(Direct Routing),仅在跨节点且网络不可达时使用 VXLAN/Geneve 封装。
  • Hubble: 基于 eBPF 的观测层,实时捕获被允许/拒绝的流量,提供租户级别的网络审计。

4.3.2 基于Identity的隔离流程

  1. 身份分配: Pod 创建时,Cilium Agent 根据其 Kubernetes Label(如 app=frontend, tenant=acme)计算 Identity。
  2. eBPF Map 同步: Identity 与对应的网络策略(允许/拒绝规则)被写入全局 eBPF Map。
  3. 数据包到达: 当 Pod-A 发送数据包到 Pod-B 时,XDP/TC 钩子中的 eBPF 程序提取源/目的 Identity。
  4. 策略匹配: eBPF 程序在 cilium_policy Map 中查找 (src_id, dst_id, port) 元组,若命中允许规则则放行,否则丢弃。
  5. 审计日志: 所有匹配结果(通过/丢弃)通过 perf_event 或 Hubble 导出,供观测系统消费。
性能优势: 相比 iptables(O(n) 规则遍历),Cilium 的 eBPF 策略查找是 O(1) 的 Map 查询。在 1000+ 租户、10万+ 策略的场景下,延迟降低 10-20 倍,CPU 开销减少 60% 以上。
Cilium eBPF 租户隔离数据流 Pod A Identity: 1001 XDP / TC 钩子 eBPF 程序执行 eBPF Policy Map (src_id, dst_id, port) 允许 转发 拒绝 丢弃 Hubble 观测层 Cilium 隔离关键特性 • 身份与IP解耦:租户迁移或IP变化不影响策略,Identity 保持不变 • 原生性能:eBPF 在内核态完成策略匹配,无上下文切换,延迟 < 5μs • 可观测性:Hubble 自动捕获所有隔离决策,支持租户级流量审计

4.4 三种隔离方案综合对比

维度 VLAN VXLAN Cilium eBPF
隔离粒度 物理端口 / VLAN VNI (逻辑网络) Identity (标签级)
最大租户数 4094 16M 16M+ (无硬限制)
数据平面 硬件交换芯片 内核隧道 (VTEP) eBPF (内核原生)
策略执行点 物理交换机 ACL VTEP / 虚拟交换机 XDP / TC (每节点)
性能损耗 接近线速 中 (封装开销) 极低 (无封装)
可观测性 SNMP / NetFlow 隧道端点统计 Hubble (L3/L4/L7)
云原生适配 差 (静态) 中 (需控制器) 优 (K8s 原生)
选型建议: 对于传统虚拟化环境,VXLAN 配合硬件 Offload 仍是成熟选择;但在 Kubernetes 原生多租户场景下,Cilium eBPF 方案在性能、灵活性和可观测性上具有压倒性优势,尤其适合需要细粒度策略(如基于 HTTP 方法、gRPC 服务)和实时审计的金融、电商平台。