TCP是Transmission Control PRotocol的缩写,即传输控制协议,它对应于OSI七层模型中的传输层,建立于网络层之上。TCP旨在给互联网提供一种可靠的端到端的字节传输流。
自从1988年问世以来,TCP在研究者的努力下先后得到了许多新的发展,目前主要的模型包括四个,即TCP TAHOE,TCP RENO,TCP NEWRENO和TCP SACK。TCP TAHOE模型是最早的TCP协议之一,它由Jacobson提出。Jacobson观察到,TCP报文段(TCP Segment)丢失有两种原因,其一是报文段损坏,其二是网络阻塞,而当时的网络主要是有线网络,不易出现报文段损坏的情况,网络阻塞为报文段丢失的主要原因。针对这种情况,TCP TAHOE对原有协议进行了性能优化,其特点是,在正常情况下,通过重传计时器是否超时和是否收到重复确认信息(dupack)这两种丢包监测机制来判定是否发生丢包,以启动拥塞控制策略;在拥塞控制的情况下,采用慢速启动(Slow Start)算法和快速重传(Fast Retransmit)算法来控制传输速率。
在试验中,我们以TCP TAHOE模型为例,对TCP的拥塞控制原理进行分析,包括两种丢包监测机制和拥塞控制中的慢速启动算法和快速重传算法。
1. TCP拥塞控制相关技术简介
1.1 慢速启动算法
在TCP TAHOE模型中,拥塞控制主要是通过调整发送端的发送速率,而这又主要是通过三个变量实现的:拥塞窗口(Congestion Window),接收端窗口(Receivers’s Window),慢速启动阈值(Slow Start Threshold,SSTHRESH)。发送端一旦监测到数据包丢失(其原因可能是重传计时器超时,亦可能是收到重复的ACK信令),它就会开始调整发送速率。这包括,ssthresh调整为当前拥塞窗口的一半,同时拥塞窗口将降低到1个报文段。然后,随着通信过程的恢复,拥塞窗口持续增长。在拥塞窗口大小未达到ssthresh之前,它以指数速度增长;到达之后则开始线性增长。有趣的是,虽然这种算法称为慢速启动算法,但实际上一点儿也不慢,它是指数增长的。
1.2 快速重传算法
当发送端连续收到3个对应于同一个序列号的ACK信令时,就触发了其快速重传算法,即发送端不等重传计时器超时,立即向接收端发送指定的报文段。
1.3 丢包检测机制有如下两种
(1). 重复ACK信令
重复ACK有两个作用,其一,发送端可以确信该ACK序列号之前的TCP报文段都已经被接收端成功接收;其二,发送端可以据此判定出接收端接收到的TCP报文段发生了乱序的情况和接收端当前期待的TCP报文段序列号,从而触发其拥塞控制策略。
(2). 超时重传
发送端发出报文段后,在规定的时间内没有能够收到接收端返回的ACK信令,从而使得发送端认为该报文段丢失,触发其拥塞控制策略。在这里面主要涉及到重传计时器(retransmission timer),它是TCP协议中最重要的计时器。根据《Computer Networks, Fourth Edition》,当报文段发出后,重传计时器立即启动,假如发送端在计时器超时之前得到ACK,则计时器停止;假如计时器超时后仍然没有收到ACK,那么报文段就重传,并且计时器重新启动。计算超时的主要公式有:
Timeout = RTT + 4×D
D = α D + (1-α) RTT - M
RTT = α RTT + (1-α) M
其中M 、RTT、D均为可变值,M是当次的RTT值。
2. 试验网络拓扑图与参数
该试验基于NS-2网络模拟器,并在我们之前搭建好的无线环境中进行,试验目的是分析TCP拥塞控制原理。
由于网络层协议是移动ipv6,因此有名称为通信节点(Corresponding Node,CN)、家乡代理(Home Agent,HA)、接入路由器(access Router,AR)、移动节点(Mobile Node,MN)的网络实体,其中CN为数据发送端,MN为数据接收端,AR是接入路由器,HA则对于我们这次的试验没有影响,因此不予介绍。NodeX为普通网络节点。网络链路的典型参数,即带宽和延迟,标于每条链路之上。
图1试验网络拓扑图
一般情况下,由于Internet上传送的数据量大,相应的延迟比较大,因此Internet的延迟设为了50ms;无线网络的带宽比较小,因此我们设为了1M。整个试验过程持续80秒。CN为FTP型的数据源,TCP报文段大小为256bytes,拥塞控制窗口(Congestion Window)为32。CN从第6秒开始向MN1发送TCP报文段,一直到整个试验结束。该TCP协议采用NS-2中的Tahoe模型。两个接入路由器(Access Router,AR)分别接入两个局域网,它们的位置分别为(85.0,135.0),(155.0,135.0),相隔70米,AR的有效覆盖范围是以AR自身为中心,半径40米的圆,又因为PAR和NAR在纵坐标相同,因此在他们两者的中心连线上,有10米重复的覆盖范围。
MN从第5秒开始接收CN发送过来的FTP数据,经过5秒钟的稳定时间后,于第10秒以1m/s的恒定速度由位置(85.0,135.1)走到(155.0,135.1)处,相当于沿着PAR与NAR的中心连线,由PAR走向NAR处。试验进行到第80秒的时候,MN刚好走到目的地。
对于网络节点而言,没有配置好网络层就不能够正常的进行传输层通信。在该试验中,MN在移动过程中会发生切换,其间由于MN需要进行网络层的配置将不能够进行正常的传输层通信,因此CN会监测到报文段丢失的情况,并且会启动其拥塞控制策略,这就是我们观察的重点。
3. 试验与分析
我们的测试分为两部分。第一部分试验以重复ACK信令作为TCP拥塞控制策略的触发事件,第二部分试验以超时重传作为TCP拥塞控制策略的触发事件。每部分都做10次模拟试验以求试验数据的客观性。
当试验结束后,我们用XGRAPH制图,有两种类型。第一种为TCP序列号图,它们基于通信节点(发送报文段的节点)和移动节点(接收报文段的节点)的发送和接收缓存中的TCP序列号制成,能反映TCP报文段的传输情况,这类图的横坐标为时间,纵坐标为TCP序列号。第二类图为拥塞窗口变化图,能反映数据包的传输速率,这类图的横坐标为时间,纵坐标为拥塞窗口大小。
首先我们根据图2至图7来分析通过重复ACK信令触发CN(发送节点)启用TCP拥塞控制策略的情况。
图4 通信节点和移动节点发送端TCP序列号详图
图5 通信节点和移动节点接收端TCP序列号详图
图6 通信节点拥塞控制窗口变化
图7 通信节点拥塞控制窗口变化详图
其中,图2至图5是试验期间CN(通信节点,在试验中又是发送节点)和MN(移动节点,在试验中又是接收节点)的接收缓存和发送缓存中的TCP序列号图。图6和图7则是试验期间CN的拥塞窗口变化图。图4、图5分别为为图2、图3红色矩形区域的放大图;图7为图6蓝色矩形区域的放大图。