DPVS(DPDK‑LVS)是爱奇艺开源的高性能四层(传输层)负载均衡器,源自 Linux Virtual Server(LVS)并基于 DPDK 实现内核旁路与用户态转发,核心优势是极致吞吐与低延迟,适合万兆级高并发场景。
一、核心定位与起源
- 本质:工作在传输层(TCP/UDP),基于 IP + 端口转发,不解析应用层内容。
- 起源:脱胎于阿里改进版 LVS,结合 DPDK 实现用户态高性能转发,名称即 "DPDK+LVS" 的缩写。
- 目标:解决传统 LVS 内核态转发的性能瓶颈,突破小包转发线速限制。
二、高性能核心技术(DPDK 驱动)
| 技术 | 作用 | 性能收益 |
|---|---|---|
| 内核旁路(用户态实现) | 绕过 Linux 内核协议栈,直接操作网卡 | 避免内核态 / 用户态拷贝与中断开销 |
| 轮询(Poll Mode) | 以轮询替代中断收发包 | 减少 CPU 上下文切换,提升小包转发效率 |
| 零拷贝(Zero Copy) | 网卡 DMA 直接读写用户态内存 | 消除数据包拷贝开销,提升吞吐量 |
| 批处理收发(RX/TX Burst) | 一次系统调用处理多个数据包 | 降低系统调用频率,提升转发效率 |
| 无锁设计(Per‑CPU 数据) | 核心间无锁通信,避免锁竞争 | 提升多核扩展性,减少等待开销 |
| RX 流绑定(RSS/Flow Director) | 同流固定到同一 CPU 核心 | 避免缓存失效,提升处理效率 |
三、核心架构与组件
DPVS 采用 "主从(Master‑Worker)" 架构,分离控制面与数据面,保障转发性能与配置灵活性。
- 控制面(Master 进程)
- 负责配置管理、状态监控、健康检查、会话同步等。
- 工具:兼容 ipvsadm 命令行,支持 keepalived 实现高可用。
- 数据面(Worker 进程)
- 核心转发逻辑,基于 DPDK 驱动网卡,实现用户态轻量级协议栈(IPv4/IPv6、ARP、ICMP、路由等)。
- 性能:单 Worker 达 2.3 Mpps,6 个 Worker 可跑满万兆网卡小包线速(约 12 Mpps)。
- 关键组件
- 轻量级协议栈:实现基础网络功能(ARP、路由、ICMP),满足转发需求。
- KNI(Kernel NIC Interface):提供用户态与内核态网络互通,支持管理流量与特殊协议(如 OSPF/VRRP)。
四、核心功能与工作模式
- 负载均衡模式
- Full‑NAT(FNAT):修改源 / 目的 IP + 端口,支持跨网段部署,后端无需配置网关指向负载均衡器。
- DR(Direct Routing):仅修改目的 MAC,转发效率最高,要求负载均衡器与后端服务器同网段。
- Tunnel:基于 IP 隧道转发,支持跨机房部署,后端需支持隧道解封装。
- DNAT/SNAT:支持端口映射与内网访问外网场景。
- 调度算法
- 基础:轮询(RR)、加权轮询(WRR)、加权最小连接(WLC)等。
- 高级:一致性哈希(Conhash)、Maglev Hash(MH),适配微服务与容器化场景。
- 增强特性
- 高可用:支持 VRRP 协议,配合 keepalived 实现主备切换。
- 安全:TCP SYN Proxy 防御 SYN 洪水、连接数限制、黑名单机制。
- 网络适配:支持 VLAN、Bonding、NAT64(IPv6 转 IPv4)。
- 健康检查:支持 TCP 端口探测、HTTP 状态码校验,保障后端服务可用性。
五、性能表现与适用场景
- 性能指标
- 小包转发:6 个 Worker 可达到万兆网卡线速(约 12 Mpps)。
- 并发连接:支持千万级并发,满足高并发场景需求。
- 适用场景
- 大规模分布式系统的入口流量分发(如视频平台、电商)。
- 高并发传输层服务(如数据库读写分离、Redis 集群)。
- 云原生环境下的容器网络负载均衡,需要极致转发性能。
- 替代传统 LVS,提升数据中心出口带宽利用率。
六、与传统 LVS / 四层负载均衡对比
| 维度 | DPVS | 传统 LVS(内核态) | Nginx Stream 模块 |
|---|---|---|---|
| 转发模式 | 用户态 DPDK 转发 | 内核态转发 | 用户态转发(非 DPDK) |
| 小包性能 | 万兆线速(12 Mpps) | 约 1--2 Mpps | 约 3--5 Mpps |
| 并发连接 | 千万级 | 百万级 | 百万级 |
| 配置复杂度 | 高(需 DPDK 驱动与大页) | 低 | 中 |
| 网络适配 | 支持 VLAN/Bonding/NAT64 | 基础网络功能 | 基础网络功能 |
| 高可用 | 支持 keepalived/VRRP | 支持 keepalived/VRRP | 支持 keepalived/VRRP |
七、部署要点与注意事项
- 硬件要求
- 网卡:支持 DPDK 的 Intel 82599、 Mellanox ConnectX‑4 等。
- CPU:多核处理器,支持大页内存(HugePages)与 CPU 亲和性配置。
- 内存:推荐 64 GB 以上,配置大页内存(如 1 GB 每页)。
- 软件依赖
- DPDK 环境:安装 DPDK 库,配置环境变量,绑定网卡到 DPDK 驱动。
- 系统配置:关闭防火墙、禁用 NUMA 平衡、配置 CPU 隔离,避免性能干扰。
- 运维与监控
- 命令行:兼容 ipvsadm,支持会话查看、权重调整等。
- 监控:通过 Prometheus 等工具采集转发速率、连接数、错误率等指标。