交易链路的延迟瓶颈往往不在应用代码,而在于数据从网卡到应用的路径低延迟网卡和内核旁路技术,就是要在这条路径上做减法,我们直接给出结论:落地低延迟交易系统,核心是“网卡硬件卸载”与“用户态协议栈”的协同,而非单纯更换某一块硬件。
低延迟网卡与内核旁路的原理联动
低延迟网卡到底解决了什么问题
普通网卡接收数据后,需要经过内核协议栈、中断处理、Socket缓冲等多层拷贝,才能到达交易应用程序,业内专家指出,这一路径在极端情况下可能消耗数十微秒,而行情行情数据在极速交易场景下,每一微秒都关乎排队顺序。
低延迟网卡(如基于Solarflare和Mellanox芯片的方案)通过硬件时间戳、TCP卸载引擎和可编程流水线,将原本由CPU承担的协议处理任务下沉到网卡内部,更关键的是,这类网卡支持内核旁路(Kernel Bypass),允许应用程序绕过操作系统内核,直接与网卡硬件交换数据。
内核旁路的三种主流路径
当前交易链路中,主流的旁路技术路径有三条:
- DPDK(数据平面开发套件):Intel主导的开源方案,通过轮询模式驱动替代中断,并在用户态实现完整的报文收发循环,它最灵活,但需要业务代码深度适配。
- OpenOnload:Solarflare网卡专属的用户态协议栈,对现有TCP应用几乎零改造,通过LD_PRELOAD方式将内核Socket调用重定向到用户态处理。
- RDMA(远程直接内存访问):主要用于节点间低延迟传输,配合RoCE或InfiniBand网卡,在极速交易中常用于行情分发总线。
行业共识认为,DPDK适合自研交易系统的核心链路,OpenOnload适合快速改造存量应用。
极速交易场景中DPDK与内核旁路如何选型
TCP方案与UDP方案的差异化选型
在极速交易实践中,选型的第一依据是

业务是走TCP还是UDP。
| 场景 | 推荐技术路径 | 原因 |
|---|---|---|
| 订单报盘(TCP) | 低延迟网卡 + OpenOnload或DPDK用户态TCP栈 | 保持TCP可靠性,同时砍掉内核拷贝 |
| 行情接收(UDP多播) | DPDK直接接管网卡,自定义组播过滤逻辑 | 多播报文量极大,需要零拷贝批量处理 |
| 内部极速总线(节点间) | RDMA(RoCE) | 端到端延迟可控制在1-2微秒 |
以订单报盘为例,国内期货市场的CTP柜台通常走TCP通道,如果团队短期无法重构网络模块,用Solarflare网卡 + OpenOnload 是性价比极高的改造路径,只需在启动脚本中加一行环境变量,应用代码几乎不用动,而若从零自建极速柜台,直接基于DPDK + 用户态TCP协议栈(如F-Stack或Seastar)能获得更彻底的延迟控制。
选型时的性能验证清单
不要只信厂商白皮书,落到测试环境里跑这三步:
- 延迟基准测试:用硬件的硬件时间戳统计从网卡收包到应用收到数据的时延,分别测P50、P99和P999。
- 多核扩展性测试:重点观察多队列(RSS)是否均匀分布到不同CPU核,避免所有中断或轮询扎堆在同一物理核。
- 退避与恢复测试:模拟行情峰值流量下的丢包率,以及CPU忙等待时的稳定性。
交易链路软硬件一体化的落地实操步骤
硬件层调优(BIOS、NUMA、PCIe)
很多团队买了昂贵的低延迟网卡,却忽略了主板和CPU层面的噪音干扰。
- 在BIOS中关闭C-States和P-States动态调频,将CPU锁定在高频档位,避免延迟抖动。
- 把网卡插在直连CPU的PCIe插槽(看主板说明书确认),避免经过PCIe Switch增加跳数。
- 通过
numactl --hardware查看网卡所在NUMA节点,将业务线程绑定到同一节点的物理核心。

网卡层配置
以最常见的Solarflare或Mellanox网卡为例,安装驱动后按以下路径操作:
- 开启硬件时间戳(
ethtool -T eth0确认支持),用于精确测量报盘延迟。 - 关闭中断合并(coalescing),网卡收到报文后立刻触发处理,不攒批,命令参考:
ethtool -C eth0 rx-usecs 0 tx-usecs 0。 - 调整Ring Buffer大小,在行情洪峰时防止丢包,命令参考:
ethtool -G eth0 rx 4096。
软件层部署(DPDK绑定与队列映射)
以DPDK为例,部署流程遵循以下步骤:
- 绑定网卡到用户态驱动:用
dpdk-devbind.py将网卡从内核驱动解绑,绑定到igb_uio或vfio-pci。 - 预留大页内存:在
/etc/sysctl.conf中配置vm.nr_hugepages=1024,并在DPDK初始化时指定--huge-dir。 - 多队列与核绑定:为每个网卡队列分配一个专用CPU核,通过
--lcores参数固定线程与核的映射。
完成后,用pktgen-dpdk灌入真实行情流,观察延迟抖动曲线,如果P99比P50高出较多,优先检查是否存在NUMA跨节点访问或CPU核被系统进程抢占。
低延迟网卡报价与整体改造成本如何权衡
硬件侧成本
低延迟网卡的价格差异巨大,入门级支持内核旁路的网卡报价在数千元区间,而旗舰款带精确硬件时间戳和可编程逻辑的型号,价格可达数万元甚至更高,但这笔投入通常是一次性的。
软件侧隐藏成本
比网卡报价更值得关注的是人力成本,DPDK改造成本最高,因为需要吃透报文收发全流程;OpenOnload相对温和,但对网卡品牌有绑定;RDMA则需要网络架构的配合,国内部分IDC机房对RoCE支持尚不完善,这一点在选址时就要确认。

不同规模团队的方案选择
- 小型私募/自营团队:优先选择低延迟网卡 + OpenOnload,改造周期以周计,对现有系统侵入小。
- 中型券商/期货公司技术部:自研DPDK证券交易网关,核心链路口径采用内核旁路,周边系统保留传统TCP。
- 交易所/核心撮合机构:RDMA或专用硬件加速,追求极致的确定性延迟,此时网卡成本不再是首要因素,稳定性与可运维性权重更高。
低延迟网卡与内核旁路常见问题解答
为什么低延迟网卡价格差距如此之大?
因为不同型号的硬件时间戳精度、可编程报文解析能力、队列数量和驱动成熟度差异悬殊,入门级产品仅提供基础的旁路通道,而高端产品支持纳秒级时间同步和自定义匹配规则,这些特性在跨机房撮合和精确行情重放中不可或缺。
内核旁路改造需要团队成员具备什么能力?
需要熟悉Linux网络协议栈原理,掌握DPDK的Mbuf和Ring Buffer设计,具备C语言和性能分析工具(perf、bpftrace)的使用经验,团队不一定要有内核开发经验,但必须具备定位缓存未命中、中断调度抖动等底层性能瓶颈的能力。
内核旁路会牺牲TCP的可靠传输优势吗?
以OpenOnload为例,它只是将TCP协议栈从内核搬到了用户态,TCP的序列号、重传和拥塞控制逻辑完全保留,因此可靠性并未减弱,而基于DPDK自研协议栈的方案,则需要团队自行实现或引入成熟库来处理重传逻辑,这往往需要经过大量故障注入测试才能达到生产可用标准。
交易链路的每一微秒优化,背后都是软硬件栈的深度联动,低延迟网卡提供了旁路的基础,内核旁路则决定了你是否能真正用好这种能力,两者缺一不可,从稳妥的OpenOnload改造起步,逐步深入自研DPDK路径,是当下多数团队兼顾成本与性能的稳妥路径。