缓冲膨胀

✍ dations ◷ 2025-11-08 03:16:44 #电脑内存,电脑安全,计算机编程

缓冲膨胀是一种因数据包过度缓冲而引起的数据包交换网络高延迟原因。缓冲膨胀还可能导致数据包延迟变化(也称为抖动),并降低整体网络吞吐量。当路由器或交换机配置了过大的缓冲区时,对于许多交互式应用程序,例如IP语音(VoIP),在线游戏,甚至普通的网页浏览,即使是非常高速的网络也几乎无法使用。

一些通信设备制造商在他们的某些网络产品中不必要地设计了过大的缓冲区。在这种设备中,当网络链路拥塞时,就会发生缓冲膨胀,从而导致数据包在这些超大缓冲区中长时间排队。在先进先出队列系统中,过大的缓冲区会导致更长的队列和更高的延迟,并且不会提高网络吞吐量。

早在1985年就已经有人发现并描述了这种缓冲膨胀现象。从2009年开始,它受到了越来越广泛的关注。

网络设备制造商的既定经验是提供足够大的缓冲区,足够通过设备的流量缓冲起码250ms的数据。例如,路由器的千兆以太网接口将需要相对较大的32 MB缓冲区。 缓冲区的这种大小可能导致TCP拥塞控制算法失效。然后,在重置拥塞控制和TCP连接回升到速度并再次填充缓冲区之前,需要花费一些时间来耗尽缓冲区。 因此,缓冲膨胀会导致诸如高延迟和可变延迟之类的问题,并且在缓冲区充满了一个TCP流的数据包,然后丢弃其他数据包时,阻塞了所有其他流的网络瓶颈。

缓冲膨胀仅在该缓冲区重度使用时才出现严重影响。换句话说,过大的缓冲区成为他们缓冲的连接的瓶颈时才具有破坏作用。可以使用大多数操作系统提供的ping实用工具来衡量服务瓶颈的缓冲区大小。首先,对其他主机执行ping操作;然后,开始几秒钟长的下载,并停止几次。通过设计,TCP拥塞避免算法将迅速填充路由上的瓶颈。如果下载(分别为上载)与ping报告的往返时间的直接且重要的增加相关,则表明在下载方向上,当前缓冲区已成为瓶颈,发生了缓冲膨胀现象。由于往返时间的增加是由瓶颈上的缓冲区引起的,因此最大的增加可以粗略估计其大小(以毫秒为单位)。

在前面的示例中,使用高级traceroute工具而不是简单的ping(例如MTR)不仅会演示瓶颈上是否存在缓冲膨胀,还会查明其在网络中的位置。Traceroute通过显示路由(路径)并测量数据包在网络中的传输延迟来实现此目的。路由的历史记录为从路由(路径)中的每个连续主机(远程节点)接收到的数据包的RTT。

大多数TCP拥塞控制算法都依靠测量丢包的发生来确定连接两端之间的可用带宽。该算法会加快数据传输速度,直到数据包开始丢失,然后降低传输速率。理想情况下,他们会不断调整传输速率,直到达到链路的平衡速度为止。为了使算法能够选择合适的传输速度,必须及时收到有关丢包的反馈。使用已满的大缓冲区时,数据包虽然最后会到达目的地,但延迟较高。因为数据包没有丢失,所以即使上行链路饱和,TCP也不会减慢速度,从而进一步导致缓冲区饱和。仅在缓冲区完全饱和时才丢弃新到达的数据包。一旦发生这种情况,TCP可能认为连接的路径已更改而决定更激进地搜索寻找新的工作点。

数据包在传输之前先在网络缓冲区中排队;在有问题的情况下,仅当缓冲区已满时才丢弃数据包。在较旧的路由器上,缓冲区很小,因此缓冲区很快就装满了,因此,在链路饱和后不久,数据包就开始丢失,因此TCP协议可以进行调整,问题不会变得明显。在较新的路由器上,缓冲区已变得足够大,可以容纳几秒钟的缓冲数据。对于TCP,当缓冲区填满时,拥塞的链接似乎可以正常运行。TCP算法不知道链接已阻塞,并且直到缓冲区最终溢出并丢弃数据包后才开始采取纠正措施。

只要缓冲区的实现是简单的队列,所有通过缓冲区的包都会出现这样的延迟。因此,所有经过已满缓冲区的连接,延迟都会受到影响。可用的通道带宽也可能最终未被使用,因为某些缓冲区可能被数据阻塞,等待数据传送到较慢的目的地,因此可能无法迅速到达某些较快的目的地。这些影响削弱了使用其他网络协议的应用程序的交互性,其中包括对延迟敏感的应用程序(如VoIP和在线游戏)中使用的UDP。

无论带宽要求如何,要求持续低延迟或无抖动传输的任何类型的服务都可能受到缓冲膨胀的影响。示例包括语音呼叫,在线游戏,视频聊天以及其他交互式应用程序,例如即时消息传递和远程登录。

当出现缓冲膨胀现象并且网络处于负载状态时,即使是正常的网页加载也可能需要花费几秒钟来完成,或者简单的DNS查询由于超时而失败。

DSL Reports Speedtest 是一种易于使用的测试,其中包括关于缓冲膨胀的评分。ICSI Netalyzr 是另一个在线工具,可用于检查网络是否存在缓冲膨胀,以及检查许多其他常见配置问题。该服务已于2019年3月关闭。有些网站列出了一些工具和过程,用于确定连接是否有过多的缓冲会减慢连接速度。

存在几种技术解决方案,可以大致分为两类:针对网络的解决方案和针对端点的解决方案。 两种解决方案通常是互补的。网络解决方案通常采用队列管理算法的形式。 这类解决方案一直是IETF AQM工作组的重点。 著名的例子包括:

针对端点的解决方案的著名示例包括:

对于大多数最终用户而言,修改家用路由器可以带来最大的改进。 大多数技术修复程序都包含在Linux操作系统的最新版本和LEDE / OpenWrt售后路由器固件中。 也可以通过减少OS 和网络硬件上的缓冲区大小来缓解该问题。但是,这通常是不可配置的。

相关

  • 李约瑟中国科学技术史《中国科学技术史》(英语:Science and Civilisation in China)乃李约瑟研究所李约瑟博士和国际学者们所编著的一套关于中国的科学技术历史的著作。李约瑟在书中列出中国人的发
  • 库兹涅佐夫号航空母舰库兹涅佐夫号航空母舰是俄罗斯现役最新型的航空母舰,在苏联时期建造,苏俄计划号码为1143.5号计划重型航空巡洋舰,于1983年开工建造。该舰建造时期原名苏联号、克里姆林宫号、布
  • 邵 峰邵峰(1973年-)是一位中国免疫学家。1973年生于江苏淮安,1996年毕业于北京大学技术物理系,1999年获中科院生物物理研究所分子生物学硕士,2003年获密歇根大学医学院生物化学博士。其
  • 3-甲基-2-戊醇3-甲基-2-戊醇(英语:3-Methyl-2-pentanol,IUPAC名:3-methylpentan-2-ol)是一种六碳醇,有两个手性碳原子,因而存在四种立体异构体(2R3R、2R3S、2S3R、2S3S)。3-甲基-2-戊醇是蛇麻花(英
  • 克马德克板块克马德克板块(Kermadec Plate)是太平洋南部克马德克海沟以西的狭长形板块,包括新西兰北岛和克马德克群岛,与澳大利亚板块被分离板块边缘分隔,这个地区经常发生地震。
  • 不可逆性在热力学领域中,不可逆过程(Irreversible process)是相对可逆过程而言的,指的是在时间反演变换下只能单向进行的热力学过程,这种热力学过程所具有的性质被称作不可逆性。从热力学
  • 巴巴罗萨行动前线军力(初始)前线军力(初始)总军事损失:80万以上(德国陆军医疗报告)总军事损失:400万以上(苏联档案)波罗的海 – 黑海 – 北极 – (跳马 – PQ-17船团 – 仙境)1941年巴巴罗萨 – (
  • 乌奴耳河乌奴耳河位于中华人民共和国内蒙古自治区牙克石市南部,是免渡河左岸支流,发源于乌奴耳镇西南大兴安岭山脉牛房山东南麓,蜿蜒向东北流至乌奴耳镇西南汇入免渡河。河长104.9千米,
  • 仙人掌旅馆《仙人掌旅馆》(韩语:모텔 선인장,英语:)是一部1997年上映的韩国电影。当人的内心受伤时,就像生长在沙漠的仙人掌,为了适应干涸的环境,绿叶变成锐刺,讲述一家旅馆的房间用仙人掌灯具
  • 郑光祖郑光祖(约1260年-约1320年),字德辉,平阳襄陵(今山西襄汾县)人。元代著名的杂剧家和散曲家,与关汉卿、马致远、白朴齐名,后人并称“元曲四大家”。生平记载极少,只知他“为人方直,不忘与