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) |
| 适用场景 | 小型私有云 | 大规模容器/虚拟化 |
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的隔离流程
- 身份分配: Pod 创建时,Cilium Agent 根据其 Kubernetes Label(如
app=frontend, tenant=acme)计算 Identity。 - eBPF Map 同步: Identity 与对应的网络策略(允许/拒绝规则)被写入全局 eBPF Map。
- 数据包到达: 当 Pod-A 发送数据包到 Pod-B 时,XDP/TC 钩子中的 eBPF 程序提取源/目的 Identity。
- 策略匹配: eBPF 程序在
cilium_policyMap 中查找 (src_id, dst_id, port) 元组,若命中允许规则则放行,否则丢弃。 - 审计日志: 所有匹配结果(通过/丢弃)通过 perf_event 或 Hubble 导出,供观测系统消费。
性能优势: 相比 iptables(O(n) 规则遍历),Cilium 的 eBPF 策略查找是 O(1) 的 Map 查询。在 1000+ 租户、10万+ 策略的场景下,延迟降低 10-20 倍,CPU 开销减少 60% 以上。
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 服务)和实时审计的金融、电商平台。