当前的TCP实现将TCP端节点之间的中间网络视为一个不透明的“黑盒”。TCP包进入和流出这个盒子。有些时候进入盒子的包被丢失了。因为今天的数字和光媒体上出现比特级错误的机会非常少,TCP的设计者们就假设包的丢失很大程度上是因为路由器的拥塞。

当时的TCP实现将TCP端节点之间的中心网络视为一个不透明的“黑盒”。TCP包进入和流出这个盒子。有些时分进入盒子的包被丢掉了。由于今日的数字和光媒体上呈现比特级过错的时机十分少,TCP的设计者们就假定包的丢掉很大程度上是由于路由器的拥塞,也便是路由器用来包容进入包的缓冲现已被填满了,这样路由器会静默地丢掉接下来进入的包。

虽然TCP能够检测到TCP包的丢掉而且进行重传,可是从TCP处理进程,重传进程和吞吐率下降这些方面看,这个重传进程将会耗费很大。

当一个发送的TCP端节点检测倒一个包丢掉时,能够进行快速重传或许包的重传计时器超时而重传。然后该TCP端节点减小发送窗口(在等候呼应之前能够发送的包数量),进行慢发动和拥塞避免算法(RFC 2001)。这会马上下降发送端的发送速率,以便路由器来减轻拥塞。发送端会逐步将发送窗口康复倒拥塞产生前的巨细。

虽然由于路由器拥塞而产生的包丢掉是偶尔产生的事情,它们并不会负面地影响块数据传输,只是会添加一些重传数据包和康复发送速率的时刻。慢发动和拥塞避免算法关于时刻灵敏的,成块数据流的操控作用十分好。可是,TCP处理丢包的办法关于交互式的,丢掉灵敏和时刻灵敏的流量来说作用不是很好。

别的一个关于路由器拥塞的问题是拥塞关于多个数据流的影响。当路由器开端丢掉进入的数据包时,它一般并不区别数据流的不同。当多个TCP数据流都产生包丢掉时,一切的数据流都要削减本身的发送速率。依据路由器拥塞减轻的程度,多个TCP数据流将会逐步康复本身的发送速率。这会下降路由器及相关链路的运用率,直到一切的TCP数据流康复到以拥塞之前的速率进行发送。路由器从拥塞状况又进入到了低运用状况。

这种拥塞后由于重传和低链路运用而带来的吞吐量问题,是只是经过发送端来办理拥塞的成果。为了避免由于路由器拥塞而带来的丢包而产生的一系列问题,TCP/IP的设计者们创建了一些用于主机和路由器的规范。这些规范描绘了在IP路由器上进行的自动行列办理算法(AQM)(RFC 2309),使得路由器能够监控转发行列的状况,以供给一个路由器向发送端陈述产生拥塞的机制,让发送端在路由器开端丢包前下降发送速率。这种路由器陈述和主机呼应机制被称为显式拥塞布告(ECN)(RFC 3168)。

当拥塞产生时,发送主机有必要仍然鄙人降它们的发送速率。可是,经过避免包的丢掉,发送主机无需进入重传进程,丢掉灵敏的数据包流也不会由于拥塞而遭到很大影响。

显式拥塞布告

IP和TCP运用包头中的未运用字段来支撑ECN。

在网络层(IP),一个发送主机有必要能够标明本身能够进行ECN,路由器在转发时有必要能够标明它正在阅历拥塞。

在传输层(TCP),TCP端有必要对对方标明本身是能够进行ECN操作的。接纳端有必要能够告诉发送端它收到了一个来自路由器的拥塞布告。发送端有必要能够告诉接纳端它遭到了来自接纳端的布告而且现已下降了发送速率。

TCP/IP网络中的显式拥塞布告(ECN)(tcp/ip协议拥塞控制)  TCP IP 路由器 第1张

图1

IP包头中的8位的服务类型域(TOS)原先在RFC791中被界说为标明包的发送优先级,时延,吞吐量,可靠性和耗费等特征。在RFC2474中被从头界说为包括一个6位的区别服务码点(DSCP)和两个未用的位。DSCP值标明一个在路由器上装备的和行列相关联的发送优先级。IP对ECN的支撑运用到了TOS域中剩余的这两位。如图1所示。

在RFC2474中TOS域未运用的两位在RFC3168中被界说为ECN域,包括如下值:

00:发送主机不支撑ECN   

01或许10:发送主机支撑ECN   

11:路由器正在阅历拥塞  

一个支撑ECN的主机发送数据包时将ECN设置为01或许10。关于支撑ECN的主机发送的包,假如途径上的路由器支撑ECN而且阅历拥塞,它将ECN域设置为11。假如该数值现已被设置为11,那么下流途径上的路由器不会修正该值。#p#

TCP对ECN的支撑

当一个IP包的ECN域被路由器设置为11时,接纳端而非发送端被告诉途径上产生了拥塞。ECN运用TCP头部来奉告发送端网络正在阅历拥塞,而且奉告接纳端发送段现已遭到了接纳端发来的拥塞布告,现已下降了发送速率。

TCP/IP网络中的显式拥塞布告(ECN)(tcp/ip协议拥塞控制)  TCP IP 路由器 第2张

图2

TCP对ECN的支撑运用TCP中预先界说的保存位。ECN界说两个新的标志,如图2所示:

ECE:ECN呼应标志被用来在TCP3次握手时标明一个TCP端是具有ECN功用的,而且标明接纳到的TCP包的IP头部的ECN被设置为11。更多信息请参阅RFC793。   

CWR:拥塞窗口削减标志被发送主机设置,用来标明它接纳到了设置ECE标志的TCP包。拥塞窗口是被TCP保护的一个内部变量,用来办理发送窗口巨细。  

当两个支撑ECN的TCP端进行TCP衔接时,它们交流SYN,SYN-ACK和ACK包。关于支撑ECN的TCP端来说,SYN包的ECE和CWR标志都被设置了。SYN-ACK只设置ECE标志。

一个支撑ECN的TCP主机在支撑ECN的TCP衔接上发送设置了IP头部为10或许01的TCP包。支撑ECN的路由器在阅历拥塞时设置IP头部的ECN域为11。当一个TCP接纳端发送针对收到的一个设置ECN位为11的TCP包的呼应时,它设置TCP包头中的ECE,而且在接下来的ACK中也做相同设置。

当发送主机接纳到设置了ECE标志的ACK时,它就像感知到包丢掉相同,开端削减发送窗口,运转慢发动进程和拥塞避免算法。鄙人一个数据包中,发送者设置CWR标志。在接纳到新的设置CWR标志的包时,接受者中止在接下来的ACK中设置ECE标志。

ECN比如

TCP/IP网络中的显式拥塞布告(ECN)(tcp/ip协议拥塞控制)  TCP IP 路由器 第3张

图3

图3展现了一个在支撑ECN的TCP端节点之间的一个TCP衔接的比如,它们之间的一个支撑ECN的路由器正在阅历拥塞。

在这个比如中,TCP端A发送数据给TCP端B。TCP端A一次性发送5个包。包2经过一个拥塞的支撑ECN的路由器转发,将IP包头的ECN位设置为11。当TCP端B接纳到这个包,它发送设置了ECE标志的ACK。当TCP端A接纳到***个设置了ECE的ACK今后,它下降发送速率,而且在发送下一个包(6)时设置其CWR标志。经过接纳包6,TCP端将不对接下来的ACK包设置ECE标志。详情请参阅RFC 3168。

Windows对ECN的支撑

Windows Vista支撑ECN可是缺省是封闭的。你能够经过netsh interface TCP set global ecncapability=enabled来翻开支撑。由于ECN运用到了IP和TCP包头中曾经未运用或许保存的位,中心的网络设备如路由器和防火墙将会静默地丢掉ECN域设置为非0值的包。为了避免呈现这种状况,请对你的网络设备进行恰当的装备和晋级以支撑ECN。

【修改引荐】

  1. 单网卡工作站可作TCP/IP网络路由器
  2. TCP/IP协议详解卷系列笔记之IP路由
转载请说明出处
知优网 » TCP/IP网络中的显式拥塞布告(ECN)(tcp/ip协议拥塞控制)

发表评论

您需要后才能发表评论