基于网络拥塞问题的三大拥塞避免技术探究

2017-03-09 18:02庞双龙
网络安全技术与应用 2017年1期
关键词:重传队列吞吐量

◆庞双龙

(广东创新科技职业学院信息工程学院 广东 523960)

基于网络拥塞问题的三大拥塞避免技术探究

◆庞双龙

(广东创新科技职业学院信息工程学院 广东 523960)

随着科学技术的的进步,越来越多的用户加入互联网去获取资源,一定程度造成网络拥塞的状态,网络的吞吐量也会迅速下降,所以如何解决网络拥塞问题对计算机网络的发展至关重要。本文介绍了三种拥塞避免的方法,并对其特点进行了比较分析,仅供广大读者参考。

计算机网络; 吞吐量; 拥塞避免

0 前言

随着计算机网络的发展,人们对网络资源的竞争也在加剧。这种竞争会影响网络的性能。虽然在负载很轻的时候所有的网络都能够正常的工作,但是大规模网络时有一些问题也会随之暴露出来。在网络面临的所有问题中,最常见的也是最值得注意的就是数据的丢失问题,虽然在一个网络中造成数据丢失的原因有很多,但网络拥塞是最常见的原因。简单来讲,当用户对资源的索取越来越多,当对资源的需求超出了网络的容量时,网络中大量排队的数据导致报文丢失时便会产生拥塞。在拥塞期间,网络的吞吐量可能会降至零,而路径延迟会变得非常高。拥塞避免技术能够让网络在一个延迟低、吞吐量很高的状态下运行并能够预防网络进入拥塞的状态。

1 DECbit

DECbit是早期的拥塞避免方法之一。该方法要求网络交换机与流量源共同协作。在DECbit方法中,当网络交换机的平均队列长度大于或者等于1时即被视为拥塞。处于拥塞状态的网络交换机会在数据包的网络层头部设置拥塞指示位。非拥塞交换机则不会对拥塞指示位字段进行任何操作。这就需要在数据包的头部添加一个拥塞位。如果在数据包到达时,路由器的平均队列长度大于或者等于1,那么路由器就将这个数据包中的拥塞位设置为1。在目的端拥塞的值将被复制到确认消息的传输层首部中。该确认消息稍后会被发送至源端。每次经历两个往返时间,源就会更新下自己的窗口。如果检测到在这段时间内至少有50%的确认消息将拥塞位设置为1,那么窗口大小将从当前的congestionW减小至β* congestionW。否则拥塞窗口的数值将会增加至congestionW+α,其中β=0.875,α=1。该方案占用了最小的网络反馈量,即只利用网络层首部中的一个比特位来指出拥塞,能够适应网络中发生的短暂性变化,并且使网络收敛到高效的运行状态。

2 随机早期检测

随机早期检测(Random Early Detection,RED)方法由Sally Floyd 与 VanJacobson在20世纪90年代早期提出来的,RED与DECbit技术类似。他们通过程序设定每台路由器对自身的队列长度进行监测,当监测到拥塞即将发生时,就会通知源端调整窗口大小。它们的主要区别有两方面,首先RED不像DECbit一样,不会通过向源端发送一个拥塞通知的方法来很明确的告知拥塞即将发生。通常RED会通过丢弃自身的一个数据包来向源端进行暗示,因此源端能够通过随后的超时事件以及冗余确认消息有效的了解到拥塞的发生。其次两者的第二个区别在于RED确定在什么时候丢弃数据包以及丢弃哪一个数据包的细节问题,举一个简单的例子:在先进先出(FIFO)中与其等到队列全满后才不得不丢弃随后到达的每一个数据包,我们不如在队列长度超过某一个丢弃值时以一定的概率来决定是否丢弃每一个到达的数据包。这一思想被称作早期随机丢弃(RED)。RED算法定义了如何监控队列长度以及何时丢弃数据包的具体方法。RED被设计用于和TCP一起工作。TCP是通过超时、冗余确认消息等来检测当前的拥塞。RED字母缩写中的“early”表示希望路由器在不得不丢弃数据包之前就开始丢弃数据包,这样能快速地通知源端减小拥塞窗口,从而获得比正常状况更快的速率。也就是说路由器在其缓冲区空间完全耗尽之前就丢弃了一些数据包,从而迫使源端降低发送速率避免此后丢弃大量的数据包。值得我们注意的是,如果将被丢弃的数据包用标记的方法来代替,那么就可以简单的将显式的反馈机制与RED方法结合在一起协同工作,至于RED方法是如何决定丢弃数据包的时间以及怎样去选择丢弃的数据包,我们可以通过一个简单的先进先出队列来举例说明。RED在队列的长度超过某一丢弃水平时,就会以一定的概率来决定是否丢弃每个到达的数据包,而不是一直等到队列全满后才不得不丢弃随后到达的每个数据包。

3 基于源的拥塞避免

RED与DECbit这两种拥塞避免技术都依赖于路由器和交换机。它们有时又被称之为基于路由器的拥塞避免技术,在此类方法中,源端通过对往返时延RTT数值变化的监控来检测拥塞的到来,这类技术的基本思想是通过观测网络中的若干信号,从而得知某台路由器的队列正在增长,如果不对这种情况采取相应措施就会产生拥塞。而基于源的拥塞避免描述了一种从终端终端主机检测拥塞初级阶段(发生在丢包之前)的策略。TCP Vegas是Brakmo提出的一种新的TCP实现。Vegas将测量到的吞吐量与期望值,或者说是与理想的吞吐量做比较。Vegas使用了一种新的重传机制。这是在快速重传的基础上做出的一种改进方案。在原始的快速重传机制中,三个冗余的确认消息表明丢包,这样一个数据包就能在超时之前被重新传输。Vegas为每个发送出去的数据包都设置了一个时间戳,从而在接收到每一个确认消息时都计算出往返时间。当收到一个冗余的确认消息时,Vegas都会检查数据包的时间戳与当前时间的差值是否大于超时时间。如果大于,那么Vegas就会重传该数据包,从而不再等待第三个冗余确认消息的到来。该方法是对Reno算法的一种改进。在TCP Reno中窗口在很多情况下可能会比较小,因此源端可能不会接收到三个冗余的确认消息,或者确认消息可能会丢在网络中。根据接收到的非冗余确认消息,若该消息是重传之后收到的第一个或第二个确认消息,Reno会检查从数据包发出之后经过的时间是否大于超时时间,如果大于就会重传数据包,如果有任何数据包在重传之后丢失,那么这些数据包就会被直接重传而不必等待冗余确认消息。为了避免拥塞,Vegas将实际的吞吐量与期望的吞吐量进行比较。期望的吞吐量被定义为此前检测到的所有吞吐量的最小值。实际吞吐量则是指从发出一个数据包到接收到对应确认消息所经历的时间内传输出的字节数与该数据包往返时间的比值。然后Vegas将实际吞吐量和期望吞吐率的差值与阈值α和β进行比较。当差值小于α时,窗口大小将线性地增长; 当差值大于β时,窗口大小将线性地减小。Reno的慢启动机制会导致许多数据包的丢失。因为窗口大小在每个往返时间内是成倍增加的,一旦突破瓶颈而最终超载,那么期望的损失将是当前窗口大小的一半。由于网络带宽的增加,那么慢启动所造成丢失数据包的数量也会随之增加。Brakmo提出了一种改进的慢启动机制,其中每隔两个往返时间窗口大小才翻一倍,因此在每两个往返时间内窗口的大小都不会改变,这使得期望吞吐率与实际吞吐率的比较更加准确。它不同之处在于需要设定一个新的阈值,算法会在新的阈值点前切换线性的增长和减小。

4 结语

综上所述,随着社会的不断进步,计算机网络技术迅猛发展,并不断涌现出新的技术。在今后的发展过程中应该加大对网络拥塞避免方面的研发力度,使其技术水平得到大幅度的提高,从而提升计算机网络技术的发展水平。

[1][印]Narasimha Karumanchi A.DamodaramM.Sreen ivasa Rao.许昱伟等译.计算机网络基础教程[M].北京:机械工业出版社,2016.

[2][美]L.LarryL.Peterson S.BruceS.Davie.王勇,张飞龙.等译.计算机网络系统方法[M].北京:机械工业出版社,2015.

[3][美]W.Richard Stevens.范建华,胥光辉等译.TCP/IP详解卷1协议[M].北京:机械工业出版社,2014.

[4][美]Andrew S.Tanenbaum DavidJ.Wetherall.严伟,潘爱民.译.计算机网络[M].北京:清华大学出版社,2012.

[5]吴功宜.计算机网络[M].北京:清华大学出版社,2007.

猜你喜欢
重传队列吞吐量
适应于WSN 的具有差错重传的轮询服务性能研究
基于TDMA的wireless HART网络多路径重传算法
队列里的小秘密
基于多队列切换的SDN拥塞控制*
无线网络中基于网络编码与Hash查找的广播重传研究
在队列里
面向异构网络的多路径数据重传研究∗
丰田加速驶入自动驾驶队列
2017年3月长三角地区主要港口吞吐量
2016年10月长三角地区主要港口吞吐量