杨 乐
【摘 要】时延测量对于网络的管理、协议开发与技术发展具有重要意义。本文对近年来TCP往返时延被动测量方法进行归纳、分析和比较,着重讨论了各种方法的优缺点,以及适用场合。最后简单提出了下一步研究应该注意的问题和研究方向。
【关键词】往返时延;被动测量;網络测量
中图分类号:TP18文献标识码:A 文章编号:1009-8283(2010)07-0312-01
1 简介
时延、带宽、丢包率是Internet度量指标中最基本的三大指标。时延测量对于网络的运营管理、协议开发与技术发展具有重要意义。当前网络通信中的流量仍然以TCP为主,TCP业务性能测量研究的意义重大,而往返时延(Round-trip time,RTT)是研究TCP连接行为的重要测度,它是指从TCP发端发出报文到接收到通信对端立即返回的确认报文所经历的时长。对RTT进行测量的意义在于:(1)估计连接的拥塞窗口大小、超时重传时间以及路径可用带宽;(2)帮助寻找限制流速和导致拥塞的因素;(3)帮助提高队列管理性能以及缓冲预留;(4)在P2P网络中改善节点分布。
目前RTT测量主要在端点使用主动式测量方法进行,容易对网络流量产生干扰,并且不便于部署在监测设备中。RTT被动测量是指在网络链路上设置测量点,通过分析流量数据的方式来估计通过测量点的TCP连接的RTT。
RTT被动测量存在的困难在于:(1)通信双方双向传输路径可能不对称;(2)丢包和乱序会给RTT测量带来不利影响;(3)端系统的响应延迟;(4)存在多种不同的TCP拥塞控制机制。
2 TCP往返时延的被动测量方法
2.1 SYN-ACK方法
SYN-ACK方法,通过监测TCP三次握手建立连接的过程来估计RTT。用监测到的最后一个SYN和第一个ACK之间的时间间隔来计算RTT。使用此方法的前提:SYNACK和ACK的传输没有被延迟;SYNACK在传输中没有丢包,ACK在到达监测点前没有丢包;SYN和ACK在传输的过程中时间抖动不大。SYN-ACK方法的不足之处在于:丢包可能导致RTT估计过长,超过3秒的RTT被认为是不准确的。有些操作系统会使用DelayACK方式工作,导致RTT估计错误。为了减少错误,SYN-ACK方法使用HTTP请求和应答之间的时延作为RTT估计的上界。
2.2 SLOW-START方法
SLOW-START方法基本思想是TCP连接在慢启动阶段随着拥塞窗口(cwnd)的增长,可以在传输中观测到明显的发送轮次。观测点可以通过测量发送各发送轮次中分组的到达时间间隔来估计RTT。此方法要求在单向流上至少监测到连续的5个段,其中前面的四个段是最大报文段(MSS),因此不能用于TCP流只传输少量数据的情况。
2.3 PRE方法
在TCP拥塞控制机制的作用下,TCP发送方会连续发送多个报文直到到达发送窗口限制,之后必须收到接收方的确认报文后才能继续发送。TCP发送行为呈现出多个轮次,在高速链路中报文发送间隙远小于轮次间隙,可以将监测到的较大的报文到达间隙认定为轮次间隙。将轮次间隙加上本轮前面的报文到达间隔即为RTT。此方法的主要问题在于当观测的TCP流传输中出现停顿时,监测点难以将其与轮次间隔时间区分开来。
2.4 TIMESTAMP方法
TIMESTAMP方法利用TCP报文中的时间戳标记来寻找各报文段之间的触发关系,使用测量点收到相关报文的时刻测量RTT。此方法存在的问题主要有:(1)时间戳精度依赖于具体的端系统实现。发送方在发送一系列突发的段时,这些段可能被打上相同的时间戳。接收方可能会在不同时刻应答这些段,但是这些应答的时间戳都是一样的。因此可能导致监测点产生误判,从而影响RTT测量的准确性。(2)丢包导致后续应答的时间戳均为之前收到的正确段的时间戳,因此高估RTT。(3)不对称路由会导致发送和接收数据通过不同的路径,导致测量失败。 2.5 SELF-CLOCKING方法
SELF-CLOCKING方法基本思想是使用自相关(autocorrelation)方法进行RTT估计,使用一个周期内的报文数量计算离散自相关函数,其中的最大值就是估计出来的RTT。存在的问题主要在于:(1)根据奈奎斯特间隔(Nyquist period)的限制,只能测量出不小于时间戳精度2倍的RTT。(2)每个RTT都出现的突发间隙模式可能会比真正的RTT有更高的相关强度。(3)测量区间长度设置不合理的话可能会导致无法正确地计算自相关强度。(4)延迟变化会导致出现多个相关峰值(5)背景流量或其他因素造成的拥塞可能会扰乱流量的自相似性。这导致在很小的偏移上出现很强的相关。
2.6 RUNNING方法
RUNNING方法基本思想是维持一个有限状态机来模仿发送方的拥塞窗口变化状况,通过判定数据包与ACK包之间的触发关系来估计RTT。此方法计算通过测量点的数据分组和对应的ACK之间的时间差,然后计算ACK和被触发的数据包之间的时间差,从而得到RTT。也就是说分别计算两个方向的半路径RTT,相加得到全路径RTT。此方法的主要问题在于当窗口估计错误或者发送方没有足够数据时,可能会出现错误的估计。
2.7 SPECTRAL ANALYSIS方法
SPECTRAL ANALYSIS方法基本思想是:(1)使用前256个分组的到达间隔生成RTT初始估计值。(2)使用滑动窗口估计来设置RTT估计的上界。(3)使用序列号/应答号之间的关系来寻找DATA-ACK-DATA关联,设置RTT估计的下界。(4)使用自相关函数和Lomb-Scargle周期图来估计RTT。
3 总结
在上述方法中,SYN-ACK方法只能测量到TCP连接建立时的RTT,不能提供持续的数据;SLOW-START方法只适用于成块数据传输,不能对交互式数据流进行测量;PRE方法不能很好地测量交互式数据流;TIMESTAMP方法依赖TCP的时间戳选项,不具备普遍性;SELF-CLOCKING方法同样依赖TCP的时间戳选项;RUNNING方法分析了不同TCP实现版本的差异,采用拥塞窗口跟踪方法来判定往来包的触发关系,但是在丢包、乱序的情况下容易对cwnd估计错误;SPECTRAL ANALYSIS方法不考虑TCP各实现版本的区别,不用观察连接慢启动阶段,但是计算代价较大。
总的来说,RTT被动测量还需要解决的问题主要有:(1)消除时延抖动的影响;(2)不同端系统实现的延迟应答机制给RTT测量带来了不确定因素。(3)交互式会话的RTT较难测量。
时延测量对于网络的运营管理、协议开发与技术发展具有重要意义。在本文中,归纳和总结了TCP往返时延被动测量的相关研究,着重讨论了各种方法的优缺点,以及适用场合。并对一些可能的研究发展方向进行了简要的概述,期望借此能推动国内对TCP往返时延的关注和研究。
げ慰嘉南:
[1]Hao Jiang, Constantinos Dovrolis. Passive estimation of TCP round-trip times. SIGCOMM, 2002.
[2]张轶博,雷振明. 一种被动式RTT测量算法. 北京邮电大学学报, 2004,27(5).