3、网络与硬件基础:低延迟网络架构、时间同步(NTP/PTP)、硬件选型(FPGA、网卡、服务器)

做高频交易的人都知道一句话:“你的对手不是市场,是物理定律”

我入行那会儿,带我的老工程师跟我说过一句让我记到现在的话——「行情数据从交易所网口到你策略进程的每一纳秒,都是真金白银」。嗯,这话一点不夸张。今天这一章,我们就来聊聊底层那些“硬核”的东西:网络怎么搭、时间怎么对、硬件怎么选。

3.1 低延迟网络架构:别让数据在路上堵车

先问一个问题:你从上海到北京,坐高铁快还是开车快?

答案显而易见。但很多人做网络架构时,偏偏选了“开车”的方案。

核心原则就一条:减少跳数,减少转发。

我个人习惯把网络架构分成三层来看:

  • 接入层:直接连交易所的机房。这里尽量用万兆甚至25G/100G的光纤直连,别过交换机。我在项目中遇到过,有人为了省光纤钱,硬是串了一台千兆交换机,结果延迟直接多了几十微秒——这在高频里简直是灾难。
  • 汇聚层:如果你必须用交换机,选低延迟交换机(比如思科Nexus 3000系列、Mellanox SN系列)。注意,别开那些花里胡哨的功能(比如ACL、QoS复杂队列),每多一个功能,延迟就多一截。
  • 核心层:你的策略服务器。这里要绑核、隔离中断,别让操作系统调度给你添乱。
避坑指南:我曾经见过一个团队,为了“高可用”做了双链路冗余,结果数据包来回绕路,延迟反而翻倍。记住:高频场景下,可用性靠硬件冗余,不靠网络协议冗余。老老实实做主备,别搞负载均衡。

下面这张图是我自己总结的典型低延迟网络架构,你一看就明白:

交易所行情源 接入层:光纤直连 25G/100G 低延迟网卡 汇聚层:低延迟交换机 关闭ACL/QoS,直通转发 核心层:策略服务器 绑核、中断隔离、DPDK 时间同步:PTP硬件时间戳 精度 < 100ns 图例说明: 数据源 接入层 汇聚层 核心层 时间同步

3.2 时间同步:NTP vs PTP,差的不只是字母

时间不同步,行情数据就是一堆废纸。你想想看,如果你记录的A交易所时间是10:00:00.001,B交易所是10:00:00.002,你怎么判断谁先发生?

NTP(网络时间协议):精度在毫秒级,适合普通交易系统。但高频场景下,毫秒误差足以让你做出完全相反的判断。

PTP(精确时间协议):这才是高频的标配。配合硬件时间戳,精度可以做到亚微秒甚至纳秒级

我的经验:别指望纯软件PTP。我曾经在一个项目里试过,软件PTP在CPU负载波动时,误差能飙到几十微秒。后来换了支持硬件时间戳的网卡(比如Intel X710、Mellanox ConnectX-5),配合PTP Grandmaster时钟,精度稳定在50ns以内。

具体怎么搭?我建议你这样做:

  1. 选一台PTP Grandmaster:最好是GPS/北斗驯服的铷钟,精度最高。
  2. 交换机必须支持PTP Transparent Clock:普通交换机转发PTP包时会引入抖动,Transparent Clock能自动修正这个误差。
  3. 服务器网卡开启硬件时间戳:在Linux下用ptp4lphc2sys配置。

下面是一个典型的PTP配置示例:

# ptp4l 配置文件 (ptp4l.conf)
[global]
network_transport      L2
delay_mechanism        P2P
time_stamping          hardware
ptp_dst_mac            01:1B:19:00:00:00
logAnnounceInterval    1
logSyncInterval        0
logMinDelayReqInterval 0
注意:PTP的时钟层级(Stratum)不要超过3层。每多一层,误差就多一级。我曾经见过有人把PTP级联了5层交换机,结果精度还不如NTP——白花钱。

3.3 硬件选型:FPGA、网卡、服务器

硬件选型这事儿,说白了就是“用钱换时间”。但钱要花在刀刃上。

3.3.1 网卡:你的数据入口

网卡是行情数据进入服务器的第一道关卡。选错了,后面再优化也白搭。

特性 普通网卡 低延迟网卡
延迟 10-50μs < 1μs
硬件时间戳 不支持 支持(PTP)
DPDK支持 有限 原生支持
推荐型号 Intel I350 Mellanox ConnectX-5/6, Solarflare X2522

我个人习惯用Mellanox的卡,尤其是ConnectX-5系列。它内置了硬件卸载引擎,能把TCP/IP协议栈的处理从CPU手里抢过来,延迟直接砍半。

3.3.2 FPGA:硬核加速器

FPGA这东西,说白了就是“用电路写逻辑”。行情数据进来,不用经过CPU,直接在FPGA里完成解析、清洗、组播转发。

我参与过一个项目,用Xilinx Kintex-7 FPGA做行情解析。原来用CPU解析需要5微秒,FPGA只用了200纳秒——快了25倍。

什么时候该上FPGA?
  • 你的策略延迟要求 < 1微秒
  • 你需要同时处理多个交易所的行情(比如沪深+中金所)
  • 你不想让CPU被行情解析占满
如果以上三条中了两条,FPGA就是你的菜。

常见的FPGA开发板:

  • Xilinx Alveo U200/U250:数据中心级,PCIe接口,适合做行情加速卡
  • Intel Arria 10:功耗低,适合放在交易所机房
  • 国产复旦微FPGA:信创需求时考虑,性能稍弱但够用

3.3.3 服务器:别让CPU成为瓶颈

服务器选型,我总结了三句话:

  • CPU要高频:别迷信核心数,高频交易吃的是单核性能。我推荐Intel Xeon W系列或AMD EPYC 7F系列,主频4.0GHz以上。
  • 内存要低延迟:用DDR4-3200或DDR5-4800,时序越低越好。别用ECC内存?不,必须用ECC,数据完整性比那点延迟重要。
  • PCIe通道要够:网卡、FPGA卡、NVMe硬盘都要抢PCIe通道。至少要有40条PCIe 4.0通道。
一个小技巧:在BIOS里关闭CPU的节能模式(C-States、SpeedStep)、关闭超线程(Hyper-Threading)。这些功能在普通服务器上能省电,但在高频场景下,它们会让延迟变得不可预测。我见过有人忘了关C-States,结果行情高峰时CPU从休眠状态唤醒,白白多了几十微秒的延迟。

3.4 总结:一张表看清你的选择

场景 网络架构 时间同步 网卡 加速方案
入门级(延迟 > 10μs) 千兆交换机 NTP Intel I350 CPU解析
进阶级(延迟 1-10μs) 万兆直连+低延迟交换机 PTP(软件) Mellanox ConnectX-4 DPDK
顶级(延迟 < 1μs) 25G/100G直连+PTP交换机 PTP(硬件) Mellanox ConnectX-6 FPGA

嗯,这一章的内容就到这里。硬件和网络是高频交易的地基,地基不稳,上面盖多高的楼都没用。下一章我们会聊到行情数据的传输协议——UDP组播和TCP的取舍,那又是另一番天地了。


公众号:蓝海资料掘金营,微信deep3321