TCP 的未来-减少 ACK 的数量

这篇具有很好参考价值的文章主要介绍了TCP 的未来-减少 ACK 的数量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上周跟同事聊到一个关于 TCP 未来还能搞啥的话题,我觉得有个事可以做做,想办法减少 TCP 的数量。

约 10 年前有统计数据表明 TCP ACK 数量过多,在整个 Internet 流量中占比很大,这又是一个诸如 “摩天大楼的电梯面积占比随高度增加而增加”,“MMU 页表物理内存占比随 CPU 寻址宽度增加而增加” 之类的问题。

TCP 从一开始就致力于减少 ACK 数量,直接措施是 delayed ack,此后 nagle,gro/lro 进一步减少 ACK 数量,但由于 TCP 过于依赖 ACK,ACK 数量的压缩终究有个极限。

delayed ack 之前,设 P = full_data_seg / ack = 1,之后 P = 2,开启 gro/lro 后,P = 40,由于乱序,pacing,gro/lro 未必总能理想,P 很大程度比 40 小得多。BIG TCP 进一步聚合 data,但看得出在挣扎了。

从主机角度看,在 100Mbps 时代,P = 2,到了 100Gbps 时代,2 < P < 40,姑且 P = 20,网速增加了 1000 倍,P 只增加了约 10 倍,从效能上看,单位 ACK 触发的数据量在总带宽中的比重越来越小。这解释了为什么可靠传输的吞吐不能随网络带宽线性增长,而表现出一条上凸曲线。 早期的 TCP 单流很容易打满带宽,现在想打满带宽所需要的 TCP 流越来越多。

摩天大楼,大楼承重是瓶颈(跟不上反重力电梯),64bit 系统,物理内存是瓶颈(跟不上虚拟内存),IPv6,物理存储是瓶颈(地址总要存在某个地方),TCP ACK,CPU 是瓶颈(网卡带宽比 CPU 发展快)。

换句话说,网卡力道大了,ACK 力道也大了,但还是虚一点。还是老话,不怕流量怕包量,流量大意味着可从批处理获益,但包量大只能平添系统开销。

随带宽继续比 CPU 更快发展,ACK 比重越来越大,CPU 极限将很快被触及,其中大部分能耗将花在 ACK 处理。TCP 不适合硬件卸载,因此近些年非 TCP 可靠传输协议发展甚快。

从网络角度看,过多 ACK 将给交换机/路由器系统带来更重负担,特别在无线领域,绝对数量愈多的 ACK 将消耗大量无线资源。

网络中可通过提高包长来加大批处理力度,但包长同样有极限,这是存储转发决定的。数据包在转发节点要完整接收才能被转发,这段时间与包长正比关系:t = L/c,越高速网络,这段时间比重越大,这又是一个权衡值。同时,过度聚合 ACK 也将损害 TCP 时延和端到端测量。

说到底还是要在协议层面而不是实现层面减少 ACK 数量,遗憾的是,可靠传输协议大多数继承了 TCP 一些古老的东西,只为异常事件及主机事件生成 ACK 的思想一直不被接受,比如 SACK/Reorder,NAK,Win Update…

ACK 太多,原因在于 ACK 仅作为 TCP 的时钟而忽略了带宽。作为数据发送的板机,ACK 时钟的能力应该与带宽正相关,即同样的一次 ACK,触发的数据发送应该与带宽成正比。这样就可以使 ACK 数量保持固定,不再随带宽而增长。
此前我一直有个想法,使用固定本地时钟触发传输,ACK 与时钟解耦,ACK 只提供信息。

聊到 TCP 的未来,我不认为现有的 TCP 可以在拥塞控制方面做得更好,就算做得好也不是 TCP 侧的事,而是交换机或者无限 AP 的事,因为 TCP 依赖的 ACK 带回的信息量有限,这在理论上决定了 TCP 的理想吞吐(满足公平性)有上限。信息量不足,又没人告诉你,只能不断试探,浅了,带宽浪费,深了,丢包重传,这是 capacity-seeking 协议固有的。业界对 TCP 性能优化基本都跑偏了,走闭环路线肯定是死路,再者 TCP 本就不适合跑吞吐。本文依然很短,说个与吞吐优化不相干的另外一个点。

浙江温州皮鞋湿,下雨进水不会胖。文章来源地址https://www.toymoban.com/news/detail-478853.html

到了这里,关于TCP 的未来-减少 ACK 的数量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux: network: tcp: sack 实例 TCP Dup ACK; D-SACK; duplicate

    https://osqa-ask.wireshark.org/questions/60530/question-regarding-tcp-traffic-capture-and-tcp-reno/ 今天看一个pcap文件里面有一个duplicate ACK 的”专家分析包“,如图; 146帧里有ack是2206552529的数字,在149这个帧里没有任何数据只是一个ACK。而且这两个包中间没有数据发过来。所以只是从这个简单信

    2024年02月16日
    浏览(28)
  • I2C协议关于ack和nack的思考

    clock时钟是由master端产生的,而不管master还是slave都可以发送ack/ack。ack/nack由receiver产生。 当master是发送器,slave是接收器时,ack/nack由slave接收器产生。如,在地址传输周期内,和master进行写操作的周期内,ack/nack是由slave接收器产生。 当master是接收器,slave是发送器时,ack/

    2024年02月09日
    浏览(47)
  • 多人开发共用一个nacos,怎样配置可以保证各自的请求不会请求到同事的电脑里,实现请求隔离

    1.在每个服务的配置文件里,给服务加上自己的后缀 2.配置gateway里,指向对应的带后缀服务名,如果是gateway是自动配置 可忽略此项

    2024年02月14日
    浏览(54)
  • Linux 的 TCP 连接数量最大不能超过 65535?

    在使用 TCP/IP 协议时,会遇到一个经典的问题:TCP 连接数量最大不能超过 65535。这是因为 TCP 协议头中的端口号是 16 位的,因此最大只能表示 65535 个端口号。那么,服务器又是如何应对百万千万的并发连接的呢? Linux TCP 连接数量最大不能超过 65535 在理解如何处理大量并发连

    2024年02月09日
    浏览(38)
  • 【服务器】关于lspci指令查看网卡数量的小坑

    准备用 lspci 指令查看服务器上有多少个网卡,但是由于对 lspci 的输出结果不了解,导致得到了错误的结果,折腾了好几周 T_T 一、什么是 lspci 指令?如何使用? 1、 lspci 指令用来查看当前系统连接的所有 PCI/PCIe 设备 2、使用 lspci 命令最简单的方式就是直接输入 lspci ,然后按

    2024年01月25日
    浏览(48)
  • 11 | 如何修改TCP缓冲区才能兼顾并发数量与传输速度?

    我们在[第 8 课] 中讲了如何从 C10K 进一步到 C10M,不过,这也意味着 TCP 占用的内存翻了一千倍,服务器的内存资源会非常紧张。 如果你在 Linux 系统中用 free 命令查看内存占用情况,会发现一栏叫做 buff/cache,它是系统内存,似乎与应用进程无关。但每当进程新建一个 TCP 连接

    2024年01月22日
    浏览(41)
  • 3DMAX同一个文件,同事电脑渲染的是正常的,我渲染的曝光高为什么?3dmax渲染曝光怎么办呐?

    同一个文件,但是不同版本,不同渲染器可能导致渲染的效果不一样也是属于一种现象。 首先根据问题解决,渲染曝光有以下几种可能: 1.对比度过高 在3dmax中按数字【8】,打开环境与效果,点击亮度和对比度 ​查看参数设置,是否对比度给的过高导致曝光,如果参数过高

    2024年02月05日
    浏览(79)
  • 关于岛屿的三道leetcode原题:岛屿周长、岛屿数量、统计子岛屿

    题1: 岛屿周长 给定一个 row x col 的二维网格地图 grid ,其中:gridi = 1 表示陆地, gridi = 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。 岛屿

    2024年02月10日
    浏览(51)
  • Meta提出全新参数高效微调方案,仅需一个RNN,Transformer模型GPU使用量减少84%!

    近来,随着 ChatGPT和GPT-4模型 的不断发展,国内外互联网大厂纷纷推出了自家的大语言模型,例如谷歌的PaLM系列,MetaAI的LLaMA系列,还有国内公司和高校推出的一些大模型,例如百度的文心一言,清华的ChatGLM等模型。几乎隔几天就会有一个全新的大模型发布,但是对于研究者

    2024年02月16日
    浏览(43)
  • 网络协议--TCP的未来和性能

    TCP已经在从1200 b/s的拨号SLIP链路到以太数据链路上运行了许多年。在80年代和90年代初期,以太网是运行TCP/IP最主要的数据链路方式。虽然TCP在比以太网速率高的环境(如T2电话线、FDDI及千兆比网络)中也能够正确运行,但在这些高速率环境下,TCP的某些限制就会暴露出来。

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包