3. 低延迟网络基础:网络延迟的构成与优化

各位同学,今天我们来聊聊低延迟网络的基础。说实话,这个领域我摸爬滚打了快十年,踩过的坑比走过的路还多。你想想看,在暗池交易里,一微秒的延迟可能就是几百万的盈亏。所以,理解网络延迟到底从哪来,怎么优化,是咱们这行的基本功。

3.1 网络延迟的三大构成

网络延迟不是单一的东西。我个人习惯把它拆成三块:传输延迟处理延迟排队延迟。这三兄弟,哪个都不能小看。

3.1.1 传输延迟

说白了,就是信号在物理介质上跑的时间。光在光纤里跑,速度大约是真空光速的2/3,也就是每公里大约5微秒。微波在空气中快一些,接近光速,但受天气影响大。

核心公式:

传输延迟 = 距离 / 信号传播速度

举个例子:纽约到芝加哥约1200公里,光纤延迟 ≈ 1200km × 5μs/km = 6000μs = 6ms

我在项目中遇到过一件事:有个团队把服务器从纽约搬到新泽西,距离只近了50公里,但延迟降了250微秒。嗯,别小看这250微秒,在高频交易里,这就是胜负手。

3.1.2 处理延迟

处理延迟是设备处理数据包花的时间。包括网卡收包、CPU中断、协议栈解析、应用逻辑处理等等。这部分延迟,说白了就是「脑子转得慢」。

我曾经优化过一个系统,发现处理延迟占了总延迟的60%。为什么?因为网卡每来一个包,CPU就中断一次,上下文切换开销巨大。后来换成DPDK,直接绕开内核,处理延迟从几十微秒降到了几微秒。

避坑指南:

我曾经以为CPU主频越高处理越快,结果发现瓶颈在缓存命中率。L1 miss一次,几十个周期就没了。所以,代码和数据要尽量塞进L1缓存。

3.1.3 排队延迟

排队延迟是最容易被忽视的。数据包到了交换机或路由器,如果出口带宽不够,就得排队。排队时间取决于队列长度和调度算法。

你想想看,一个万兆网口,如果瞬间涌入100个包,每个包1500字节,那排队时间就是:

排队延迟 = (100 × 1500 × 8) / 10Gbps = 120μs

120微秒!这已经比传输延迟还大了。所以,我建议在关键路径上,尽量用无阻塞交换架构,或者用优先级队列把交易流量单独隔离开。

3.2 物理层优化:光纤 vs 微波

物理层优化,说白了就是选路和选介质。我见过不少团队在这上面花了大价钱,但效果不一定好。

3.2.1 光纤优化

光纤的优势是带宽大、稳定、抗干扰。但它的延迟是硬伤——光在玻璃里跑得慢。怎么优化?

  • 选最短路径:别绕路。我见过有人用Google Maps找最短光纤路径,结果发现绕了30%的冤枉路。
  • 用低折射率光纤:有些特种光纤折射率更低,光速能快个5%-10%。
  • 减少中继器:每个中继器引入约1-2微秒延迟。能直连就别中继。

注意:

光纤不是越粗越好。单模光纤比多模光纤延迟低,因为多模光纤的模式色散会引入额外延迟。我踩过这个坑,当时用了多模光纤,结果延迟比预期多了15%。

3.2.2 微波优化

微波的优势是速度快——接近真空光速。但缺点也明显:带宽小、受天气影响大、需要视距传输。

我记得有个项目,需要在芝加哥和纽约之间建一条微波链路。距离1200公里,中间需要5-6个中继站。每个中继站引入约1微秒处理延迟,加上传输延迟,总延迟大约4.2ms,比光纤快了近2ms。

但问题来了:下雨天,微波信号衰减严重,误码率飙升。所以,我建议微波只用于「晴天交易」,或者做双链路冗余——晴天走微波,雨天走光纤。

3.3 数据链路层优化:RDMA 与 InfiniBand

数据链路层优化,核心就是减少数据拷贝和协议开销。传统TCP/IP协议栈,数据从网卡到应用,要经过内核、socket缓冲区、用户态缓冲区,拷贝好几次。每次拷贝都是几十微秒的延迟。

3.3.1 RDMA(远程直接内存访问)

RDMA说白了,就是让网卡直接把数据写到应用的内存里,绕过CPU和内核。延迟能降到1-2微秒。

我做过一个测试:用传统TCP传输4KB数据,延迟约50微秒;用RDMA,延迟只有3微秒。差距接近20倍。

RDMA 工作流程:

  1. 应用注册内存区域,告诉网卡「这是我的内存地址」
  2. 网卡直接读写对端内存,不需要CPU参与
  3. 完成通知通过硬件中断或轮询方式获取

但要注意,RDMA对网络质量要求很高。丢包会导致性能断崖式下跌。我曾经在生产环境遇到过,因为交换机缓存不足,丢了一个包,结果RDMA重传导致延迟从3微秒飙升到300微秒。

3.3.2 InfiniBand

InfiniBand是另一种低延迟网络技术。它和RDMA是「黄金搭档」。InfiniBand本身支持RDMA,而且有专门的硬件流控和拥塞控制机制。

我建议在暗池交易系统中,核心交易节点之间用InfiniBand互联。延迟能控制在1微秒以内。但InfiniBand的缺点是贵,而且和以太网不兼容。所以,边缘节点还是用RoCE(RDMA over Converged Ethernet)更划算。

特性 InfiniBand RoCE 传统TCP
延迟(4KB) 0.5-1μs 1-3μs 30-50μs
带宽 200-400Gbps 100-200Gbps 10-100Gbps
丢包影响 低(硬件流控) 高(需PFC) 中(TCP重传)
成本

我的经验:

如果预算充足,核心网络用InfiniBand。如果预算有限,用RoCE + 支持PFC的交换机。但千万别在普通以太网上跑RDMA,丢包会让你怀疑人生。

3.4 本章知识体系图

下面我用一张SVG图,把本章的核心逻辑串起来。你一看就明白:延迟从哪来,怎么优化,每一步该用什么技术。

低延迟网络优化知识体系 网络延迟构成 传输延迟 处理延迟 排队延迟 物理层优化 光纤:低折射率、短路径 微波:视距、中继站 数据链路层优化 RDMA:绕过内核 InfiniBand:硬件流控 核心思路 1. 先分析延迟构成,找到瓶颈在哪 2. 物理层:选最短路径、最快介质 3. 数据链路层:用RDMA/InfiniBand减少拷贝 4. 别忘了排队延迟,用优先级隔离

好了,这一章的内容就到这里。记住,低延迟优化不是一锤子买卖,而是一个持续迭代的过程。你每次改动,都要用硬件时间戳去测量,别信软件时间戳——那玩意儿本身就有几十微秒的误差。

一句话总结:

网络延迟 = 传输 + 处理 + 排队。物理层选光纤或微波,数据链路层用RDMA或InfiniBand。每一步优化,都要用数据说话。

专注资料整理