CPU 和带宽之间的时空权衡_dog250的博客-CSDN博客

从一道面试题看 TCP 的吞吐极限 一文的开始,我提到在环形域上两个数字比较大小的前提是在同一个半圆内,进而得到滑动窗口最大值被限定在一个环形域的一半。

现在来看更为基本的问题。如果序列号只有 2bit,甚至仅有 1bit,保序传输的吞吐极限是多少?

由于时间戳是一个天然的单调递增标识,假设时间戳可达任意精度,只要为报文打时间戳即可,甚至连 1bit 的序列号都不需要,时间戳本身就是序列号。这种情况下,极限吞吐没有上限。

但由于处理器指令存在最小粒度,且调度周期存在最小时间,时间戳精度毕竟有限,可称之为时间戳量子,在一个时间戳量子内发出去的报文就需要序列号来标识顺序,于是序列号空间越大,一个时间戳量子内能发出去的数据量越大,支持的吞吐越大。

总吞吐极限正比于时间戳量子大小和序列号空间的乘积。

这里存在一个时空权衡。时间戳量子越小,处理器开销越大,所需的序列号空间越小,时间换空间,反之,时间戳量子越大,处理器开销越小,但所需序列号空间越大,越消耗有效带宽(报头变长了),空间换时间。

问题是,时间戳量子真的需要和时间关联吗?它只是一个单调递增的序号,只需要保证协议序列号越过一个半圆时让它加 1 即可。但如果它果真不与时间关联,这个序号就只是扩展了序列号空间而已,sender 也就无法精确控制吞吐,因此,时间量子的大小本身就是吞吐的因子。除了时空权衡,但凡量子性质,都有测不准的量,不管怎么说,你越想获取精确的 pacing 快照,对测量吞吐的干扰越大。

序列号 + 时间戳(或任何二级序号,whatever)分级的序号编码方式简化了 receiver 重排序,平坦的序列号一股脑发送,receiver 需要在一个平坦的空间重排序,O(NlgN) 中的 N 数值较大,但分级序列号只需多趟归并,N 减小很多,减轻了排序负担,由于同一链路传输过程大概率保序,分级序号将排序过程平滑在传输过程中。

分级序号非常便于多路径传输,比如 MPTCP,MPQUIC,SRD。

浙江温州皮鞋湿,下雨进水不会胖。

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/405191

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月25日 下午6:45
下一篇 2023年4月25日 下午6:46

相关推荐