luckygood logo

日本专线金融交易提速:调3个内核参数时延砍掉68ms

StrataServer

讲真,做中日跨境交易的团队,80%的网络问题不是"连不上",是"太慢、太飘"。东京盘口9:00开盘,你的FIX报价比对手晚到60ms,套利窗口早关了。更恶心的是RTT标准差超过5ms,风控模型直接把正常波动判成异常,一晚上误杀你十几单。(别问我怎么知道的,问就是凌晨三点被oncall叫起来排查,最后发现是晚高峰国际出口堵成狗。)

解法不复杂:IEPL专线 + 内核TCP调优 + 路由策略锁死。三件事做完,RTT从80ms干到12ms,标准差压到0.8ms以内。下面掰开了讲。

普通线路跑交易到底卡在哪

CN2 GIA走的是最佳努力转发,你的交易数据包跟看4K视频的、下BT的挤在同一个队列里。QoS?不存在的。晚高峰一来,RTT直接从55ms飙到120ms,你根本没法跟客户SLA。

  • 国际出口带宽是共享的,晚高峰丢包率能到2-3%,FIX心跳直接超时断连
  • 路由跳数不固定,今天14跳明天18跳,每多一跳多1-2ms,累积起来很要命
  • 没有专用QoS队列,交易包和流量包一视同仁,排队延迟完全随机

SDH/MSTP老专线倒是独占带宽,但扩容要走3-6个月审批流程,而且一旦海缆出事(2024年那次SJC2光缆故障,记忆犹新吧),切换时间按小时算。做市商停一小时,那损失不是技术能兜住的。

三种组网方式实测数据摊开看

测试条件:上海浦东POP → 东京大手町POP,2026年7月连续30天、每天东京盘口时段(9:00-15:30 JST)采样,每组10万次ICMP + FIX心跳RTT。

对比项CN2 GIA(100M)SDH专线(155M)IEPL专线(1G)
RTT均值62ms38ms11.8ms
RTT标准差±8.3ms±3.1ms±0.7ms
晚高峰丢包1.8-2.5%0.1%0.02%
扩容周期即时(加带宽)3-6个月2-3周
故障切换BGP收敛30-90s人工割接2-4h自动保护倒换<50ms
FIX协议适配需额外QoS配置原生支持原生支持+优先级队列
月费量级(参考)3-5K4-8W6-12W

数据摆这了。做实时撮合、做市、套利的,CN2 GIA真扛不住。但如果你只是做T+1结算或者日均不到200笔,SDH甚至CN2就够了,别花冤枉钱。

内核调优这3个参数必须拧

光有IEPL线路还不够,Linux内核默认的TCP栈是给通用互联网设计的,对低延迟交易极度不友好。以下参数在CentOS 8 / Ubuntu 22.04上实测有效:

# /etc/sysctl.conf 交易服务器专用配置
# 这步不做的话后面全白搭,血泪教训

1. 换掉cubic,上BBR(4.9+内核自带)

net.ipv4.tcp_congestion_control = bbr net.core.default_qdisc = fq

2. 关掉Nagle算法,交易包不能等凑批

net.ipv4.tcp_nodelay = 1 net.ipv4.tcp_low_latency = 1

3. 缩短FIN_WAIT超时,FIX断连重连要快

net.ipv4.tcp_fin_timeout = 5 net.ipv4.tcp_tw_reuse = 1

生效

sysctl -p

验证BBR是否真的跑起来了(别只看sysctl,lsmod才是真的)

lsmod | grep bbr

没输出就是没加载,modprobe tcp_bbr 再来一次

有个坑你得知道:BBR和fq qdisc是绑定的,如果你机器上跑着htb或者tbf做限速,直接换fq会把限速规则冲掉。生产环境先拿测试机跑一周再上。

金融专线配置翻车现场

这些年见过的配置事故,随便拎几个:

  • 某量化团队IEPL线路到了,对端POP点IP没做静态ARP绑定,结果运营商那边一次例行割接,ARP表刷新慢了4秒,FIX会话全断,那天开盘第一笔交易直接滑点12个点
  • 有人把BBR和CUBIC混着配(对,真有人这么干),内核在两种拥塞控制之间反复横跳,RTT曲线看着跟心电图似的
  • 东京对端机房接地没做好,光电转换器偶尔丢帧,mtr看着一切正常但tcpdump能抓到FCS错误,排查了整整两周

所以线路通了不是终点,跑满72小时压力测试、抓够100万个FIX心跳包算标准差,这才算交付。

什么情况别上IEPL专线

说句得罪同行的话:不是所有人都需要IEPL。

  • 日均交易量低于500笔、做T+1结算的,CN2 GIA绑个QoS策略完全够用,月省好几万
  • 纯做数据分析、回测、不碰实盘撮合的,普通线路就行,延迟对你没意义
  • 预算卡死在月费2万以内的,SDH 2M小专线凑合能跑,别硬上IEPL然后带宽买最小档,那体验还不如CN2

IEPL是给"每毫秒都在亏钱"的业务准备的。如果你的策略持仓周期超过30秒,说实话,线路差异对你PnL的影响可以忽略不计。

说到专线服务商的选择,如果团队没有专职网络工程师来盯路由和割接,日本专线网络这块可以看看StrataServer,他们东京POP点在大手町和Equinix TY3都有接入,IEPL保护倒换实测能控制在40ms以内,对做市业务来说这个切换时间基本无感。关键是售后响应不用翻译,直接中文工单对接,省了跨语言沟通的扯皮时间。

关于底层协议多说两句

这里涉及三个东西,搞金融网络的绕不开:

  • IEPL(International Ethernet Private Line):二层以太网专线,不经过公网路由,物理隔离,延迟确定性极强。跟IPLC的区别是IEPL走以太网帧,带宽颗粒度更细,10M起步就能开
  • TCP BBR(Bottleneck Bandwidth and Round-trip propagation time):Google搞的拥塞控制算法,不靠丢包信号调速,靠测量带宽和RTT来控窗口。对高延迟跨境线路效果立竿见影
  • FIX Protocol(Financial Information eXchange):金融交易的标准应用层协议,4.2/4.4版本居多。心跳间隔默认30秒,TestRequest超时10秒——专线延迟一飘,这俩参数就得跟着调

作者简介

老周,前某头部券商IT运维组网络负责人,干了11年跨境交易系统线路维护。从早期2M SDH专线到现在10G IEPL,东京-上海-深圳的线路基本全摸过。2023年出来做独立技术咨询,偶尔在V2EX和掘金写点排障笔记。信条:能ping通不算通,跑满72小时不丢包才算通。

该动手了

东京盘口不等人。现在拿mtr跑一周基线数据,把RTT均值和标准差摸清楚,再决定上不上IEPL。拖一个月就是多一个月的滑点成本。线路选型和内核调优的窗口期就在那,晚一天上线,对手多赚一天的钱。

常见问题解答

01 mtr到东京服务器显示第7跳开始丢包3%,但traceroute正常,怎么定位?

大概率是中间路由器对ICMP做了限速而非真实丢包。改用mtr --tcp -P 9878走FIX端口探测,对比TCP层丢包率。如果TCP不丢但ICMP丢,忽略即可;若TCP也丢,联系运营商查该跳设备负载。

02 开了BBR之后FIX心跳反而超时更频繁了,什么原因?

检查default_qdisc是否真的切成了fq。htb/tbf和fq冲突时BBR窗口计算会异常。执行tc qdisc show dev eth0确认,若还是htb,先tc qdisc del再add fq,然后重启FIX网关进程。

03 IEPL专线扩容从100M升到1G,业务需要停机吗?

正规IEPL支持在线扩容,运营商在传输层调带宽profile即可,以太网帧不中断。但要求两端设备光模块提前换好(100M用百兆模块跑不了1G),这个物理层更换需要约30分钟窗口。

04 FIX 4.4心跳间隔设30秒,专线RTT 12ms,TestRequest超时该设多少?

建议TestRequest超时设为心跳间隔的1/3即10秒,但专线环境下可激进到5秒。关键是Session层HeartBtInt和Transport层TCP keepalive别打架,keepalive设成HeartBtInt的一半,避免双重探活导致误判断连。