1. 低延迟网络概述

大家好,我是你们这门课的老朋友。今天咱们聊聊低延迟网络到底是个什么东西。

说实话,我入行那会儿,大家对网络延迟还没那么敏感。那时候跑个网页,等个两三秒,大家觉得挺正常。但现在不一样了。你想想看,自动驾驶的车子,一毫秒的延迟可能就是生与死的区别。高频交易里,谁的网络快谁就能赚钱,慢一毫秒可能就亏几百万。云游戏也是,你操作一下,画面半天才动,这游戏还怎么玩?

所以,低延迟网络,说白了就是让数据从A点到B点的时间尽可能短。嗯,就这么简单。但实现起来,可没那么容易。

1.1 什么是低延迟网络?

低延迟网络,不是指带宽有多大,而是指数据包从发送到接收的时间有多短。我见过不少刚入行的朋友,一上来就盯着带宽看,觉得带宽越大网络越快。其实这是个误区。

举个例子。你开车从北京到天津,高速公路很宽(带宽大),但路上堵车(延迟高),你照样到得慢。低延迟网络追求的是路况通畅,而不是路有多宽。

我个人习惯把低延迟网络比作快递服务。带宽是卡车的载货量,延迟是快递员从发货到收货的时间。你想想看,你寄个重要文件,是希望卡车装得多,还是希望快递员跑得快?

核心要点:低延迟网络关注的是数据包的单程传输时间,而不是单位时间内能传多少数据。这是很多初学者容易搞混的地方。

1.2 关键指标

衡量低延迟网络,主要看三个指标:RTT、抖动、吞吐量。这三个指标,我一个个说。

1.2.1 RTT(往返时间)

RTT,全称Round-Trip Time,就是数据包从发送端到接收端再返回发送端的总时间。这是最直观的延迟指标。

我在项目中遇到过一件事。有一次做金融交易系统优化,客户说他们的交易延迟太高。我一看,RTT是50毫秒。当时我就说,这不行,高频交易里RTT超过10微秒都算慢的。后来我们通过硬件加速,把RTT降到了5微秒以内。客户直接惊呆了。

RTT的组成包括:

  • 传播延迟:光在光纤里跑的时间,这个物理定律没法改
  • 处理延迟:路由器、交换机处理数据包的时间
  • 排队延迟:数据包在缓冲区排队的时间
  • 传输延迟:把数据包放到链路上的时间

避坑指南:我曾经以为RTT越低越好,后来发现不是这么回事。有些场景下,RTT稳定比RTT低更重要。比如自动驾驶,你宁愿延迟稳定在10毫秒,也不希望它有时候1毫秒有时候100毫秒。这一点,后面讲抖动的时候会细说。

1.2.2 抖动(Jitter)

抖动,就是延迟的变化量。说白了,就是RTT的方差。

为什么抖动重要?你想想看,你在玩云游戏,如果网络延迟一直稳定在20毫秒,你操作起来感觉还行。但如果延迟一会儿10毫秒,一会儿100毫秒,画面就会一卡一卡的,游戏体验极差。

我做过一个自动驾驶的项目,当时发现车辆的控制指令有时候会延迟到达。排查了半天,发现是网络抖动导致的。车辆的控制系统需要稳定的数据流,抖动一大,控制算法就乱了。后来我们用了专门的抖动消除技术,才把问题解决。

抖动的来源主要有:

  • 网络拥塞:数据包排队时间变化
  • 路由变化:数据包走的路径不一样
  • 硬件处理时间变化:不同数据包的处理时间不同

1.2.3 吞吐量

吞吐量,就是单位时间内能传输的数据量。这个指标大家比较熟悉,但我要提醒一点:在低延迟网络中,吞吐量和延迟往往是矛盾的。

为什么?因为要提高吞吐量,通常需要更大的缓冲区,让数据包排队。但排队就会增加延迟。所以,低延迟网络的设计,很多时候是在吞吐量和延迟之间做权衡。

我记得有一次做数据中心网络优化,客户要求同时满足高吞吐和低延迟。这其实很难。我们最后采用了专门的硬件加速方案,用FPGA做数据包处理,才勉强达到要求。

指标 定义 典型值 优化方向
RTT 数据包往返时间 1-100毫秒(互联网)
1-10微秒(数据中心)
减少传播距离、优化处理流程
抖动 延迟的变化量 小于RTT的10% 减少排队、固定路由路径
吞吐量 单位时间传输的数据量 1-100 Gbps(数据中心) 增加带宽、优化协议

1.3 应用场景

低延迟网络不是万能的,但在某些场景下,它就是命根子。我挑三个典型的说说。

1.3.1 高频交易

高频交易,说白了就是比谁快。谁的网络延迟低,谁就能先拿到市场数据,先下单,先赚钱。

我有个朋友在华尔街做高频交易。他们公司为了把延迟降低1微秒,愿意花几百万美元。你想想看,1微秒是什么概念?就是百万分之一秒。他们甚至把服务器放在交易所的机房里,用光纤直连,就是为了省那几米的距离。

高频交易对网络的要求:

  • RTT:小于10微秒
  • 抖动:小于1微秒
  • 吞吐量:不需要特别高,但数据包要小、要快

注意:高频交易对时间同步要求极高。我曾经见过一个案例,因为时间不同步,导致交易数据顺序错乱,直接亏了几百万。所以,PTP(精确时间协议)在高频交易中是标配。

1.3.2 自动驾驶

自动驾驶的车子,需要实时感知周围环境,做出决策,然后控制车辆。这整个过程,延迟必须控制在毫秒级。

我记得有一次测试自动驾驶系统,发现车辆在高速行驶时,刹车指令延迟了50毫秒。结果车子多跑了1米多,差点撞上前车。从那以后,我对自动驾驶的网络延迟要求就特别严格。

自动驾驶对网络的要求:

  • RTT:小于10毫秒
  • 抖动:小于2毫秒
  • 可靠性:99.999%以上

1.3.3 云游戏

云游戏,就是把游戏渲染放在云端,玩家通过网络操作。这要求网络延迟足够低,否则玩家操作起来会有明显的卡顿感。

我做过一个云游戏的项目,当时发现玩家在玩射击游戏时,开火到画面显示命中,中间有100多毫秒的延迟。玩家反馈说,感觉枪不听使唤。后来我们优化了网络,把延迟降到了30毫秒以内,玩家体验才好了很多。

云游戏对网络的要求:

  • RTT:小于30毫秒
  • 抖动:小于5毫秒
  • 吞吐量:根据画质不同,10-50 Mbps

1.4 知识体系总览

说了这么多,我画个图帮你理一理思路。这张图展示了低延迟网络的核心知识体系。

低延迟网络 RTT(往返时间) 抖动(Jitter) 吞吐量 传播延迟 处理延迟 排队延迟 传输延迟 网络拥塞 路由变化 硬件处理时间变化 带宽 协议效率 高频交易 自动驾驶 云游戏 关键指标 应用场景

这张图把低延迟网络的核心内容串起来了。中心是低延迟网络,三个关键指标是RTT、抖动、吞吐量,每个指标下面又有具体的子项。最下面是三个典型的应用场景。你把这个图记在脑子里,后面学起来就轻松多了。

我的建议:刚开始学低延迟网络,不要急着看具体技术。先把这三个指标搞明白,知道它们是什么、怎么测、怎么优化。后面讲硬件加速的时候,你会发现很多技术都是在优化这三个指标。

好了,这一章就到这里。低延迟网络的概念、指标、应用场景,我都讲清楚了。下一章,我们会深入聊聊网络延迟的测量方法,包括怎么用软件和硬件来精确测量RTT和抖动。到时候我会分享一些我在项目中踩过的坑,保证让你少走弯路。


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