当全球两亿多用户同时点击播放按钮时,Netflix 的 CDN 节点需要在毫秒级延迟内将加密视频片段推送到世界各地。Drew Gallatin 及其团队在 EuroBSDCon 2021 上披露的技术细节显示,他们已成功在单台服务器上实现 400Gb/s 的 TLS 加密视频流输出 —— 这个数字意味着每秒传输约 50GB 数据,相当于 100 部 4K 电影的并发推送。
与业界常见的 DPDK 内核旁路方案不同,Netflix 选择了一条更具针对性的优化路径:深度改造 FreeBSD 内核网络栈,而非完全绕过它。这一决策的核心在于视频流工作负载的特殊性 —— 静态文件、顺序读取、高吞吐、低计算复杂度。
架构核心:sendfile + kTLS 的零拷贝流水线
Netflix 的技术栈建立在 FreeBSD-current、NGINX 和异步 sendfile (2) 系统调用之上。传统的高吞吐服务架构通常采用 "读取 - 加密 - 发送" 的三段式流程:从磁盘读取数据到用户空间,在用户空间完成 TLS 加密,再写入 socket 发送。这个过程中,数据需要在用户空间与内核空间之间多次拷贝,内存带宽成为瓶颈。
Kernel TLS(kTLS)的引入彻底改变了这一格局。通过将 TLS 加密操作下沉到内核层,sendfile 可以直接将页面缓存中的明文数据送入内核 TLS 层完成加密,再经 TCP 栈发送至网卡。这一优化消除了用户空间与内核空间之间的数据拷贝,据 Gallatin 披露,仅此一项就节省了约 60% 的 CPU 占用。
硬件配置与 NUMA 优化策略
支撑 400Gb/s 吞吐的硬件平台采用 AMD EPYC Rome 处理器(32 核心,2.5GHz),配备 256GB DDR-3200 内存(8 通道,提供 150GB/s 内存带宽)和 128 条 PCIe Gen-4 通道(250GB/s IO 带宽)。网络侧配置两块 Mellanox ConnectX-6 网卡,每块提供两个 100GbE 端口,总计 400Gb/s 的线速能力。
关键的优化在于 NUMA(非统一内存访问)架构的利用。AMD EPYC Rome 在单插槽模式下可配置为 "扁平模式",将芯片内部的四个 die 暴露为四个独立的 NUMA 节点。Netflix 的策略是仅在两个 NUMA 节点上放置网卡,并在四个节点间差异化配置 NVMe 存储(总计 18 块 2TB WD NVMe 盘,聚合提供 50GB/s 读取带宽)。
这种不对称布局的精妙之处在于:通过软件层面的 "欺骗" 让系统认为网卡存在于所有 NUMA 域,实际运行中约 75% 的磁盘读取和 50% 的网卡发送会跨越 NUMA 边界,平均每次请求产生约 1.25 次 NUMA 跨越。这种设计将 NUMA fabric 上的数据流量控制在约 62.5GB/s,既充分利用了内存控制器的并行能力,又避免了跨 NUMA 访问的过度开销。
NIC 硬件卸载:从 CPU 到网卡的加密迁移
Mellanox ConnectX-6 Dx 网卡支持的硬件 kTLS 卸载是另一关键优化。当启用网卡 TLS 卸载时,加密操作从 CPU 转移到网卡硬件,进一步释放主机资源。然而,这一方案也引入了 PCIe 带宽的新瓶颈 —— 加密后的数据量与明文相同,但 PCIe 事务的开销需要精细调优。
Netflix 的测试覆盖 AMD Rome、Milan 以及 Ampere Altra ARM64 平台。值得注意的是,由于 FreeBSD 的优化主要集中在 AMD 平台,Intel Ice Lake 和 Ampere Altra 的支持相对滞后,这体现了操作系统与硬件协同优化的重要性。
可落地的工程参数清单
对于希望复现类似架构的工程团队,以下参数可作为起点:
系统调优:
- 启用
sendfile配合异步 IO - 配置 Kernel TLS(FreeBSD 13+ 原生支持)
- 调整 TCP 缓冲区至 4MB 以上以应对 BDP(带宽延迟积)
- 启用网卡硬件卸载(checksum、TSO、TLS offload)
NUMA 布局:
- 单插槽 AMD EPYC 配置为 NUMA 扁平模式
- 网卡绑定至特定 NUMA 节点,避免随机分布
- 存储与计算任务按 NUMA 域分区,控制跨域流量在总带宽的 40% 以内
监控指标:
- 内存带宽利用率(目标 < 80%)
- NUMA 跨域访问比例
- PCIe 带宽利用率
- kTLS 硬件卸载命中率
局限与适用边界
这一架构的成功高度依赖 FreeBSD 的特定实现。Linux 的 kTLS 生态虽有发展,但在 sendfile 与 kTLS 的集成深度、NUMA 优化策略等方面存在差异。此外,硬件 TLS 卸载需要特定网卡支持(如 Mellanox ConnectX-6 Dx、Intel E810 等),增加了硬件成本。
对于非视频流的通用工作负载,DPDK 或 eBPF/XDP 方案可能更具灵活性。Netflix 的选择证明:针对特定 workload 的深度内核优化,往往比通用的内核旁路方案更能挖掘硬件潜力。
参考来源:
- Drew Gallatin, "Serving Netflix Video at 400Gb/s on FreeBSD", EuroBSDCon 2021
- The Next Platform, "Netflix Boosts Streaming While Reducing Socket Counts", October 2021
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。