|
2.1.1 合适的窗口大小
无线链路上的TCP应当基于系统可用带宽时延积(BDP,Bandwidth Delay Product)设定合适的接收方窗口大小。接收方通知窗口应当至少同BDP一样大,否则接收方的TCP层将对最大可用带宽造成限制。
通知窗口应当尽可能地设大一些,使得所有的可用带宽都有可能使用;但如果通知窗口比BDP大太多,也可能因为缓存溢出和随后的TCP重传导致性能恶化。因而,通知窗口应当比BDP稍大,一方面充分使用容量,另一方面也不会损害到网络处理拥塞和丢报恢复的能力。
2.1.2 加大初始窗口
无线链路的高时延加大了慢启动阶段持续时间,主要体现在TCP连接建立时、发生重传超时(RTO,Retransmission Timeout)之后或较长空闲期后重新启动连接时。借助于大的初始窗口,慢启动将能更快地将吞吐量抬升至稳定状态。
2.1.3 受限制的传输
旨在拥塞窗口较小时改善快速重传和快速恢复的性能。如一旦发送方在等待重传时尚有未发送数据,那么在收到2个重复性ACK后就立即发送新的报文。这样以来,接收方可以产生第3个(激活快速重传/快速恢复所必须的重复性ACK个数)重复性确认来触发发送方的快速重传或快速恢复,这就避免了RTO及其后的慢启动阶段。但该选项依赖于软件实施情况。
2.1.4 TCP报文大小
通常,重复一定次数的慢启动过程之后才能达到充分发挥带宽资源;无线链路的高延迟使得最初几轮调整对终端用户的吞吐量至关重要。慢启动阶段,发送方字节数的增加是以报文大小为单位的,因而,如果增大最大报文段尺寸(MSS,Maximum Segment Size),慢启动阶段就可以更快地将吞吐量抬高到充满带宽,还能够提高各层所添加协议头的效率、降低往返传输的ACK数目。但某些时延要求高、又需要快速纠错的业务则适合使用较小的TCP报文段。
2.1.5 选择性确认
TCP连接期间,接收方将最后一个成功接收报文段的序号包含进ACK中,此即累积性确认。一般而言,选择性ACK(SACK,Selective Acknowledgement)则是可选项,它允许接收方向发送方通知所有数据段的传输状态。这样,发送方就可以有选择地重传,而不是仅仅重传第一个丢失分组并等待下一个ACK(一个RTT)来接收新的丢失信息。
在具有较大BDP通道时,SACK更能发挥作用,有研究结果表明它适合于具有中等丢失率(低于窗口大小的50%)的长延迟网络环境。这使得SACK比较适合于无线链路。但其不足在于它会稍微加大报头的尺寸(最多增添8byte),且其使用需要客户机、服务器两端的支持。
2.1.6 TCP时间戳选项
标准TCP是每个拥塞窗口才测量一次RTT,这可能给RTT的估计带来偏差,当拥塞窗口增长时尤其如此。无线链路特征则要求更准确地估计RTT以便尽可能地减少那些伪超时重传(spurious RTO)。
使用时间戳选项时,发送端可以每发一个报文段就计算一次RTT,即使是在发那些重传的。这一改进使得TCP RTO能够更快地应对时延变化,降低伪超时重传个数。然而,使用该选项时需要在TCP报头添加12byte,同样要求两端的支持。
2.2 缓存拥塞管理策略
2.2.1 随机早期监测
随机早期检测(RED,Random Early Detection)是目前研究得最多的主动队列管理技术,它采用概率判定机制有选择地主动丢弃某些分组,利用TCP对发送速率的自适应调节能力,让某些源端降低发送速率,及时阻止拥塞的恶化,并将平均排队时延控制在一定范围内。但RED也存在一些缺陷:性能对网络状况和参数敏感,很难给出优化的参数配置;稳定性和公平性也存在一些问题。
2.2.2 快速TCP
快速TCP算法是当下行缓存超出一定门限(接近拥塞)时试图降低下行分组量。通常,上下行业务量的不对称导致下行缓存要比上行缓存先可能拥塞。 |