单进程传输文件速率的关键因素成因和改善方法10页word文档.docx

上传人:b****5 文档编号:29716302 上传时间:2023-07-26 格式:DOCX 页数:8 大小:20.47KB
下载 相关 举报
单进程传输文件速率的关键因素成因和改善方法10页word文档.docx_第1页
第1页 / 共8页
单进程传输文件速率的关键因素成因和改善方法10页word文档.docx_第2页
第2页 / 共8页
单进程传输文件速率的关键因素成因和改善方法10页word文档.docx_第3页
第3页 / 共8页
单进程传输文件速率的关键因素成因和改善方法10页word文档.docx_第4页
第4页 / 共8页
单进程传输文件速率的关键因素成因和改善方法10页word文档.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

单进程传输文件速率的关键因素成因和改善方法10页word文档.docx

《单进程传输文件速率的关键因素成因和改善方法10页word文档.docx》由会员分享,可在线阅读,更多相关《单进程传输文件速率的关键因素成因和改善方法10页word文档.docx(8页珍藏版)》请在冰豆网上搜索。

单进程传输文件速率的关键因素成因和改善方法10页word文档.docx

单进程传输文件速率的关键因素成因和改善方法10页word文档

单进程传输文件速率的关键因素、成因和改善方法

日常所进行的FTP传输文件、使用迅雷等下载工具下载文件时使用的传输层的协议是TCP协议,单进程传输文件速率也即是一个TCP连接的传输速率,其影响速率的关键因素也即是TCP连接的传输速率的关键因素。

本文将从TCP协议原理中分析其影响传输速率的关键因素并提供改善方法。

一、TCP协议原理

TCP(TransmissionControlProtocol传输控制协议)向应用提供了可靠、面向连接的服务。

但TCP利用的互联网络的网络层是无连接、尽力转发的服务,故TCP采取了以下措施保证其可靠、面向连接的服务的。

1、使用序列号对报文进行标记,以便TCP接收端在向目的应用程序传递数据之前修正错误的报文排序。

2、TCP使用确认、校验和、定时器系统提供可靠性。

TCP发出得每一个报文都需要接收方对每一个报文进行确认。

当TCP发出一个报文后,启动一个定时器,在定时器超时前未收到接收方得确认报文,发送方将会重传该报文。

校验和目的是检测数据在传输过程中得任何变化如果收到的报文校验和有差错,TCP将丢包该报文段和不确认收到的报文段。

3、TCP使用窗口机制调整报文的流量;窗口机制可以较少因接收方缓存区满而造成报文丢失的可能性

TCP报文封装于IP报文内,对应于IP报文的协议号为:

6,

(一)、TCP报文格式

TCP报文格式如下:

源端口号和目的端口号:

字段长度各为16bit,为封装的数据指定了源和目的应用程序,端口号+IP地址构成一个socket,在互联网上socket唯一地标示了每一应用程序。

序号:

字段长度为32bit,序号确定了发送方发送的数据流中被封装的数据所在的位置。

例如本段数据的序号为1343,且数据长度为512个字节,那么下一段数据的序列号应为:

1343+512+1=1856.

确认序号:

字段长度为32bit,确认号确定了源点下一次希望从目标接收的序列号,如果主机收到的确认号与它下一次打算发送的序号不符,那么主机将获悉报文不仅丢失,而且确切的知道丢失了哪一个报文。

首部长度:

字段长度为4bit,指定了TCP头部的长度,单位:

4个字节,由于可选字段的长度可变,所以这一字段标记出数据的起点很有必要的。

保留:

字段长度为6bit,通常设置为0

标记:

字段长度为6bit,它们用于数据流控和连接控制,它们分别是:

紧急(URG)、确认(ACK)、弹出(PSH)、复位(RST)、同步(SYN)和结束(FIN)

窗口大小:

字段长度为16bit,主要用于流控。

窗口大小指明了自确认号指定的字节开始,接收方在必须停止传输并等待确认之前发送方可以接受的数据的字节长度。

校验和:

字段长度为16bit,它包括包头和被封装的数据,校验和允许错误检测。

紧急指针:

字段长度为16bit,该字段仅URG被置位时才使用,这个16位的数据加在序号上面标示紧急数据的结束。

可选项:

字段用于TCP发送进程要求得选项,常用的可选项是最大段长度,最大长度通知接收者和发送者愿意接收的最大段长度,为了保证包头长度为32bit的整数倍,使用0填充该字段的剩余部分。

数据:

TCP携带的有效载荷。

(二)、TCP协议涉及的几个概念

1、最大报文段长度(MSS)

最大报文段长度表示TCP传往另一端的最大数据块长度,当一个连接建立时,连接的双方都要通告各自的MSS,一般,没有分段发生,MSS还是越大越好。

报文段越大,允许一个报文传送的数据就越多,相对于IP头部和TCP头部有更高的网络利用率。

当TCP发送一个SYN报文时,它能将MSS设置为外出接口的MTU长度减去IP头部和TCP头部长度。

对于以太网,MSS的值可达1460字节(1500-20-20)

如果目的地非本地,MSS值通常默认为536字节,是否为本地可通过网络号区分。

MSS让主机限制另一端发送数据报的长度,加上主机也能控制它发送数据报的长度,这将使以较小MTU连接到一个网络上得主机避免分段

2、往返时间测量(RTT)

TCP超时和重传的最重要的就是对一个给定连接的往返时间(RTT)的测量,由于路由器和网络流量均会变化,因此TCP跟踪这些变化并相应的改变超时时间。

首先TCP必须测量在发送一个带有特别序列号的字节和接受到包含该字节的确认之间的RTT

3、重传定时器(RTO)

TCP每发送一个报文,会启动该重传定时器,在定时器超时后,未收到对方的确认报文,TCP将重传该报文。

4、拥塞控制算法

滑动窗口(swnd):

滑动窗口机制是TCP控制发送数据报速率的,发送方每次只能发送滑动窗口内部的数据包。

拥塞窗口(cwnd):

拥塞窗口机制是为了不造成拥塞,是网络对发送方发送包数量的限制。

通告窗口(awnd):

接受方TCP缓存当前大小,它阻止由于发包数量过度,超出接收方缓存容量。

TCP的拥塞控制主要原理依赖于一个拥塞窗口(cwnd)来控制,窗口值的大小就代表能够发送出去的但还没有收到ACK的最大数据报文段,显然窗口越大那么数据发送的速度也就越快,但是也有越可能使得网络出现拥塞,如果窗口值为1,那么就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。

TCP的拥塞控制算法就是要在这两者之间权衡,选取最好的cwnd值,从而使得网络吞吐量最大化且不产生拥塞。

由于需要考虑拥塞控制和流量控制两个方面的内容,因此TCP的真正的滑动窗口swnd=min(awnd,cwnd)。

但是awnd是由对端确定的,网络环境对其没有影响,所以在考虑拥塞的时候我们一般不考虑awnd的值,我们暂时只讨论如何确定cwnd值的大小。

关于cwnd的单位,在TCP中是以字节来做单位的,我们假设TCP每次传输都是按照MSS大小来发送数据的,因此cwnd可以按照数据包个数来做单位,所以cwnd增加1也就是相当于字节数增加1个MSS大小。

慢启动:

当新建连接时,cwnd初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1个MSS大小。

这样cwnd的值就随着网络往返时间(RoundTripTime,RTT)呈指数级增长,事实上,慢启动的速度一点也不慢,只是它的起点比较低一点而已。

我们可以简单计算下:

开始--->cwnd=1

经过1个RTT后--->cwnd=2*1=2

经过2个RTT后--->cwnd=2*2=4

经过3个RTT后--->cwnd=4*2=8

如果带宽为W,那么经过RTT*log2W时间就可以占满带宽。

拥塞避免:

从慢启动可以看到,cwnd可以很快的增长上来,从而最大程度利用网络带宽资源,但是cwnd不能一直这样无限增长下去,一定需要某个限制。

TCP使用了一个叫慢启动门限(ssthresh)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段。

对于大多数TCP实现来说,ssthresh的值是65536字节。

拥塞避免的主要思想是加法增大,也就是cwnd的值不再指数级往上升,开始加法增加。

此时当窗口中所有的报文段都被确认时,cwnd的大小加1,cwnd的值就随着RTT开始线性增加,这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。

上面讨论的两个机制都是没有检测到拥塞的情况下的行为,那么当发现拥塞了cwnd又该怎样去调整呢?

首先来看TCP是如何确定网络进入了拥塞状态的,TCP认为网络拥塞的主要依据是它重传了一个报文段。

TCP对每一个报文段都有一个定时器,称为重传定时器(RTO),当RTO超时且还没有得到数据确认,那么TCP就会对该报文段进行重传,当发生超时时,那么出现拥塞的可能性就很大,某个报文段可能在网络中某处丢失,并且后续的报文段也没有了消息,在这种情况下,TCP反应比较“强烈”:

1.把ssthresh降低为cwnd值的一半

2.把cwnd重新设置为1

3.重新进入慢启动过程。

从整体上来讲,TCP拥塞控制窗口变化的原则是AIMD原则,即加法增大、乘法减小。

可以看出TCP的该原则可以较好地保证流之间的公平性,因为一旦出现丢包,那么立即减半退避,可以给其他新建的流留有足够的空间,从而保证整个的公平性。

其实TCP还有一种情况会进行重传:

那就是收到3个相同的ACK。

TCP在收到乱序到达包时就会立即发送ACK,TCP利用3个相同的ACK来判定数据包的丢失,此时进行快速重传,快速重传做的事情有:

1.把ssthresh设置为cwnd的一半

2.把cwnd再设置为ssthresh的值(具体实现有些为ssthresh+3)

3.重新进入拥塞避免阶段。

后来的“快速恢复”算法是在上述的“快速重传”算法后添加的,当收到3个重复ACK时,TCP最后进入的不是拥塞避免阶段,而是快速恢复阶段。

快速重传和快速恢复算法一般同时使用。

快速恢复的思想是“数据包守恒”原则,即同一个时刻在网络中的数据包数量是恒定的,只有当“老”数据包离开了网络后,才能向网络中发送一个“新”的数据包,如果发送方收到一个重复的ACK,那么根据TCP的ACK机制就表明有一个数据包离开了网络,于是cwnd加1。

如果能够严格按照该原则那么网络中很少会发生拥塞,事实上拥塞控制的目的也就在修正违反该原则的地方。

具体来说快速恢复的主要步骤是:

1.当收到3个重复ACK时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加3,然后重传丢失的报文段,加3的原因是因为收到3个重复的ACK,表明有3个“老”的数据包离开了网络。

2.再收到重复的ACK时,拥塞窗口增加1。

3.当收到新的数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。

原因是因为该ACK确认了新的数据,说明从重复ACK时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。

二、影响TCP传输速率的关键因素

通过以上TCP协议原理的分析,我们能够得出如下公式:

TCP连接的平均速率=平均滑动窗口大小/平均RTT,可见TCP的连接速率与平均滑动窗口成正比,与RTT成反比。

而某一刻滑动窗口与RTT之间也存在以下2种情况:

1、TCP连接2端的带宽充足的情况,RTT不会随滑动窗口的变化而变化,而此时滑动窗口等于拥塞窗口(cwnd)、发送端缓存(sbuf)和接收端窗口(awnd)中得最小者,而拥塞窗口(cwnd)在网络出现丢包时会进行重置,所以网络丢包率对拥塞窗口的影响巨大。

2、当TCP连接的2端带宽瓶颈时,此时滑动窗口越大,RTT也会越大。

增大滑动窗口无助于速度的提高,因为瓶颈时,多增加的数据包进入路由器缓存,导致数据包排队延迟增大。

通过以上分析:

影响TCP连接的关键因素有:

发送接收端缓存大小、网络丢包率、TCP连接RTT延迟、TCP连接2端的带宽大小。

如下是一仿真实验(实验数据来自网上)

3台主机,A,B,C加一台路由器R,通过配置R模拟不通的网络带宽,通过配置主机B上的某个模块来模拟网络延迟和丢包率,实验是在A->C之间进行10s的TCP文件传输。

Slimit,Rlimit,Climit3个参数,分别表示发送窗口受发送缓存、接收窗口和拥塞窗口限制的时长占整个连接时长的百分比.

网络丢包

配置B使得在A->C之间产生0.1、0.01、0.001的随机丢包,并通过改变C的接收端窗口来观察接收端窗口对速率的影响得到如下表1:

从表1可以看出,当接收窗口为200kB时,连接主要受拥塞窗口的限制,其主要原因是网络丢包.对于接收窗口为20kB的情况,当丢包率为0.1时,连接仍然主要受拥塞窗口的限制;当丢包率为0.01时,连接主要受拥塞窗口和接收窗口的共同限制;当丢包率为0.001时,连接90%的时间都受接收窗口的限制.在后两种丢包率下,20kB拥塞窗口限制了连接速率,当丢包率为0.001时,连接速率甚至不到此前的50%.

RTT延迟

配置主机B使其在C->A之间产生100ms延迟,连接的RTT在100ms以上.根据公式T=wnd/RTT,此时需要很大的窗口才能达到高速.通过修改A和C主机操作系统发送接收缓存的系统设置,我们控制接收窗口在100~500kB之间取值.如表2所示,当窗口小于等300kB时,连接没有丢包,连接90%以上的时间数据发送都受接收端窗口的限制.由于RTT基本不变,连接速率随接收端窗口的增加而线性增长.当窗口大于等于400kB时,连接有大约0.2%的数据丢包.有超过95%的时间数据发送受到拥塞窗口的限制,而它们的速率甚至小于300kB时的传输速率。

 链路瓶颈带宽

配置路由器在A->C之间设置瓶颈带宽为100Mbit/s.从表3可以看出,有超过95%的时间数据发送分别受接收端窗口或者发送端缓存的限制,但只有当窗口为10kB时,连接速率才远小于瓶颈带宽.当窗口为50kB和100kB的情况,连接速率基本等于瓶颈带宽.此时增大发送端缓存或接收端窗口的同时数据包RTT也在等比增加,因此传输速率没有提高.所以,虽然发送缓存或接收窗口限制了发送窗口,但此时的发送窗口已经足够塞满链路,真正限制连接速率的是瓶颈带宽.

三、改善方法

经过以上的分析,当通过传输MSTP进行开通跨省的专线时,由于TCP连接的2方之间的RTT延时的增大,根据以上分析的公式:

TCP连接的平均速率=平均滑动窗口大小/平均RTT,滑动窗口等于拥塞窗口(cwnd)、发送端缓存(sbuf)和接收端窗口(awnd)中得最小者。

故即使同样带宽的MSTP专线,在RTT=1ms和RTT=40ms,其他情况相同的情况下,肯定RTT=1ms的TCP连接速率会高于RTT=40ms的MSTP专线。

改善方法:

根据上面仿真实验(RTT延迟)、对于此种情况的改善方法可适当增大发送和接收方的缓存大小,以使其获得更高的传输速率,但是前提是增大的缓存大小不要产生网络丢包和RTT的增大,否则会适得其反。

希望以上资料对你有所帮助,附励志名言3条:

1、生气,就是拿别人的过错来惩罚自己。

原谅别人,就是善待自己。

2、未必钱多乐便多,财多累己招烦恼。

清贫乐道真自在,无牵无挂乐逍遥。

3、处事不必求功,无过便是功。

为人不必感德,无怨便是德。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1