端到端通信一来一回的时间延迟(End To End Round Trip Time)。
司机老王拉一车煤炭从山西大同运到北京大兴,卸掉货,再捎带一车北京烤鸭运回大同,整个过程所经历的时间,是不是更好懂一些?
RTT
一个影响通信性能的很重要的指标,凡是看过电视台主持人实时连线美国前方记者这样的画面,一定会对通话延迟有一个深刻的印象,通常对话是这个样子的:
主持人:老王,我是xx,请你更新一下美国大选的最新进展!
…(通常2-3秒的静音)
记者:主持人好,最终特朗普以微弱选举人票优势胜出,希大妈好像不服,还想上诉…
主持人:你幸福吗?
…(又是2-3秒的静音)
记者:我不姓富,我姓王…
以上的2-3秒静音就是两人之间的RTT时间,这个RTT由以下部分组成:
RTT = 去向的传播延迟 + 对方反应时间 + 返程的传播延迟
假定对方反应时间大体恒定,那么决定RTT的就是去向/返程的延迟,而这两者计算方法都是一样的,那就来分析其中的单程延迟:
单程延迟= 线路的传输延迟 + 路由器的处理延迟+ 路由器的缓冲队列延迟
其中线路的传输延迟,取决于光速,基本上恒定的。
处理延迟,通常每一跳在几毫秒以内。
缓冲队列的延迟取决于队列的深度,排队的IP包长度越长,延迟越大,相反,没有IP包排队,延迟为0。
所以影响RTT的最终因素是路由器的出口队列的排队长度,网络空闲就为0,网络拥塞时几毫米、几十毫秒、几百毫米不等。
以上讨论的是RTT队语音通话的影响,下面来谈谈RTT对基于TCP应用的影响。
RTT是影响TCP性能一个重要指标
看完上文的介绍,同学们是否可以得出一个结论,当动态测量的RTT时间越来越大,说明路径中肯定有一些路由器缓冲队列排队时间越来越长,这个时候如果继续加大发送速率,将很可能将缓冲队列占满并溢出(丢包),这将触发接收方发送多个duplicated ACK来提醒发送方发送速率减半,同时快速重传被丢的包,这是一种事后诸葛亮的修补措施。