MIN_RTO 对话

Posted dog250

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MIN_RTO 对话相关的知识,希望对你有一定的参考价值。

经理:为啥 minrto 要 200 ms 那么大?

​工人:你说的是 Linux 吧?

​经理:不管什么系统,anyway,whatever,为啥 minrto 那么大,比如 200 ms,100 ms ?

​工人:因为要照顾 Delayed ACK,避免不必要超时重传。规范说 Delayed ACK 的 delay 时长大概是 minrto 这个量级,比如 50 ms,100 ms,200 ms。

经理:原来如此,那为啥 minrto 不能每连接配置呢 ?

​工人:因为 Delayed ACK 时间不能每连接配置,且 delay 时间对端不知道。

​经理:我若确保我的连接在 IDC 内呢,RTT 不可能超过 1 ms 。

​工人:Delayed ACK 该 delay 多久还是多久,且接收端不知道发送端在 IDC 内部。

​经理:那我强行改 minrto 为 200us 呢 ?

​工人:rto 精度为 ms,达不到 us。

​经理:我若改了实现,精度达到 us 呢 ?

​工人:经理有这个能力吗?

​经理:你有就行,现在就改,不然开除你。

​工人:我已改好,但仍然不允许你配置每连接 minrto,这个必须全局定死,且必须与 Delayed ACK 量级一致。

​经理:这 TMD 为什么?

​工人:如果完全照 RTT 算 rto,全世界遵守 Delayed ACK 规范情况下将造成频繁不必要超时重传,造成互联网拥塞!不必要超时重传造成互联网拥塞使所有拥塞控制机制付之东流。

​经理:我保证只在 IDC 使用,不堵公网。

​工人:有配置就肯定有人用,你兜不住的,人们必然会错误配置,就会堵互联网。不能开这个口子!

​经理:还有别的办法吗?

​工人:你想咋搞,偷摸的,别声张。

​工人:Google 有两个方案,支持 us 时间戳,但不解决根本问题。

​经理:那我找工人偷摸搞吧。

​工人:经理好运!

附:

draft-wang-tcpm-low-latency-opt-00
draft-yang-tcpm-ets-00

很多 “不能开口子” 的配置,比如 Timewait 时间。全局考虑是必要的,若要保证这个全局,“什么配置是可以随意改的” 就需要严格控制。

拥塞控制要保证一个数据包有且只有一个副本在网络上,因此 “避免不必要重传” 就是要严格制止的,虽然你有权力任意修改 TCP 实现,但原则上你是违规的。因此,标准能带头违规吗?显然不行。

很多私有实现中,MIN_RTO 已经可配置,但这确实不好公开。

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

以上是关于MIN_RTO 对话的主要内容,如果未能解决你的问题,请参考以下文章

一个 TCP 双边方案的对话

nginx入口子路径重定向

如何在其中自动高度视口子面板?

如何从父组件调用路由器出口子组件方法

两口子相处之道

结构不是 protobuf-net 中有效的接口子类型