计算机网络中的拥塞控制 总结+详解(包括TCP在无线移动网络中的改进)

拥塞控制

为什么会发生拥塞?

网络中的拥塞来源于网络资源和网络流量分布的不平衡性,其根本原因是端系统提供给网络的负载大于网络资源容量和处理能力

网络拥塞导致的公平性问题

产生公平性的根本原因在于拥塞发生必然导致数据包丢失,而数据包丢失会导致各数据流之间为争抢有限的网络资源发生竞争,竞争能力强的数据流将到更多网络资源,从而损害了其他流的利益。

公平性问题表现在两方面:

  1. 拥塞响应的TCP流和非拥塞响应的UDP流之间资源享用不公平
  2. TCP流之间资源享用的不公平(不同的窗口尺寸,数据包大小,RTT)

有线网络中TCP拥塞控制

端到端的拥塞控制

TCP报文段的丢失(通过超时或3次冗余确认而得知)被认为是网络拥塞的一个迹象。也有将RTT增加看作是网络拥塞增加的指示

网络辅助的拥塞控制

使用AQM(主动队列管理)、ECN(显式拥塞指示),路由器直接发送阻塞分组给发送端。

TCP拥塞控制发展演进

  1. Tahoe 是 TCP 的早期版本,包括3 个最基本的拥塞控制算法:“慢启动” , “拥塞避免”和“快速重传”,“快速重传”根据 3 个重复的应答报文来判断报文的丢失,减少了超时重传的发生.
  2. Reno 在 Tahoe的基础上增加了“快速恢复”[25].“快速恢复”使用“管子”模型的“报文守恒”特性.发送方每收到一个重复的应答,就认为已经有一个报文离开网络,于是将发送方的拥塞窗口加一.
  3. NewReno 对 Reno中“快速恢复”算法进行了补充.它考虑了一个发送窗口内多个报文丢失的情况.在“快速恢复”算法中,发送方收到一个不重复的应答后就退出“快速恢复”状态.而在NewReno 中,只有当所有报文都被应答后才退出“快速恢复”状态.
  4. SACK 也关注一个窗口内多个报文的丢失,它使用“选择性重复”(selective repeat)策略.
  5. TCP Vegas通过观察TCP连接中RTT值改变感知网络是否发生拥塞,从而控制拥塞窗口大小

TCP拥塞控制改进研究点

  1. “慢启动”过程的改进
  2. 基于速率的控制策略
  3. 减少不必要的“超时重传”和“快速重传”
  4. ECN的使用

有线、无线、manet

有线网络对比无线网络及manet

网络拥塞判断

有线网络中链路可靠性高,主要是因为网络拥塞引起的丢包。

无线网络中,链路的高误码率以及节点移动都会导致丢包。多路径路由和节点切换等会导致乱序。当出现非拥塞因素丢包时,传统 TCP 将错误地触发拥塞控制。

同时无线网络环境中可以大概总结为三种丢包情况:

  1. 随机丢包:数据丢失是由信息衰落引起的;
  2. 突发丢包:主要发现移动节点切换移动引起的;
  3. 包重新排序:是主要由于切换引起的。

资源管理划分

在有线网络中,由于链路速率较高,网络瓶颈是缓冲区内存访问速度,因此资源管理大都在IP层实施

MANET中,瓶颈是速率低且冲突较多的无线链路,资源管理大都在链路层实施.路由故障除由 IP层路由协议直接发现以外,其他影响因素通常由链路层直接发现.

manet关键技术

  1. 自适应技术,自适应编码,自适应调制,自适应功率控制
  2. 信道接入技术(非一跳共享而是多跳共享)
  3. 路由协议
  4. 传输层技术(带宽小,质量差,需要节约有限的带宽)
  5. 节能技术

TCP在无线网络中的改进

端到端解决方案(提升TCP性能)

  1. SACK,减少ACK流量,提升带宽
  2. 当发现序号不连续时,立刻重发
  3. 显式丢失通告机制 (ELN)。ELN协议在 ACK中增加了显式丢失通告选项, 它
    能够通告发送方数据丢失的真正原因

链路层解决方案

  1. FEC技术进行差错纠正
  2. ARQ技术重传纠错
  3. Snoop代理还跟踪每个从接收方过来的ACK包,通过到达的重复ACK包或局部超时来检测包的丢失。当丢包发生时,若Snoop代理已经缓存了此包,则进行局部重传

分段链接方案

分段的 TCP连接方案的基本思想是将两个完全不同类别的子网 ( 有线网络和
无线网络 )在两个子网相遇的地方 ( 例如在基站 )将 TCP连接分为两个独立的连接段。一段是远端固定主机与基站的连接,另一段是基站与移动终端之间的连接。
前段采用传统的 TCP连接,后段即基站同移动终端间的无线链路采用改进的协
议,以适应于无线链路本身的特性。

缺点是由于基站必须保存两段连接的控制信息和缓存的数据包, 在移动终端较多和切换频繁的情况下,不仅基站间信息的传送会带来较大时延,引起丢包,而且某一基站的失效都会带来灾难性的后果。

MANET中TCP改进

TCP影响因素

  1. 网络拥塞(manet中资源有限,传统tcp拥塞控制有些激进)
  2. 比特误码(高误码率导致进入慢启动)
  3. 节点移动(造成路由中断)
  4. 乱序问题
  5. ACK累积问题(MANET 中存在着多种原因的不对称因素,包括速率分配的不对称性[5]、多路径路由引发的不对称性以及 与位置有关的 TCP 不公平性等,造成发送端的数据流突发,增加网络的拥塞 和不稳定的可能性.)
  6. MAC层不公平问题(发送成功的节点处于竞争优先地位,在 WLAN 中,由于所有 节点的冲突空间相同,所以不会出现TCP不公平性.但是在MANET中,由于节点所处位置的不同,)

改进原则

  1. 让发送端清楚网络真实状况
  2. 采用跨层设计的思想,让 IP 层、逻辑链路层和MAC层都恰当地参与问题发现和问题解决过程,缩短控制周期

问题发现

tcp信令传递,带内。IP层和数据链路层,带内+带外。

TCP层(乱序,路由中断和拥塞识别,校验和的误码丢包)

TCP 层发现问题的主要目的是区分拥塞、误码丢包和路由中断丢包.TCP 层问题发现方法不需要下层协议的显式反馈,这也是 ISO 协议分层的初衷.

  1. 只有在T1之后仍然收到DupACK包才 认为是拥塞造成的
  2. 当发送端RTO 连续出现超时时,就认为出现了路由故障,而不是网络拥塞.
IP层(能干的不多,因为网络瓶颈不同

以通过路由重试次数超过指定阈值来直接发现路由故障

链路层
  1. 发现网络拥塞,链路层有许多指标可以表征网络拥塞,监控数据链路层的包重发次数
  2. 发现随机误码和路由中断,根据发送不成功次数来
  3. 发现 TCP 的不公平性,每个节点测量它自己的队列长度,并向它的邻接节点广播其队列长度。或者以时间间隔 T 为单位测量链路层队列的输出速率
  4. 发现乱序和 ACK 累积 ,在链路层发现这两类问题非常困难

问题解决

TCP层

拥塞,减少ACK流量。路由中断,冻结数据发送。乱序,不发dupack要的包,先发新包。随机误码,降速。

IP层

首先发现路由故障的节点向 TCP 发送端发送一个路由错误信息,沿途的所有节点在收到该 消息后就缓冲并“冻结”所有“途经”该路由故障节点的 IP 层数据包;当路由故障节点发现路由恢复后就发送路由修复好消息给发送端,沿途节点在收到这个消息之后,“激活”刚才“冻结”的数据包.该方法是提高Ad Hoc网络 性能的一个重要方面,尤其是对于 Ad Hoc 网络中的节能问题.
增强IP层功能,缓存包,局部重传

链路层

拥塞,调整发送速度。随机误码,重传。移动造成路由故障,增加发送能量不让包丢掉,还有提前预报可能的路由中断。ACK累计,使用ACK过滤,在MAC层ACK帧中捎带TCP层ACK包。不公平性,丢包,调整退避时间。

总结

传统 TCP 认为,所有分组丢失都由网络拥塞造成,一旦发送分组丢失,即进入拥塞控制;但是在 MANET 中, 路由故障、较高的误码率也会造成分组丢失,多路路由或节点移动导致的分组乱序会“误判”分组丢失.由于传统 TCP 不能区分分组丢失原因,触发不必要的拥塞控制,从而导致传统 TCP 在 MANET 中性能低下.

  1. 较低的协议层次能够更为迅速地发现问题,这是因为层次 化的协议结构使得层与层之间互相透明,这使得下层协议可以更为直接地发现影响因素,而上层协议只能间接 地发现影响因素
  2. MANET 网络中 TCP 改进需要多个节点和多个层面的配合

路由协议及QoS

互联网QoS路由算法

QoS是应用业务对网络传输服务所提出的的一组可度量的要求。

性能指标

  1. 吞吐量、带宽
  2. 端到端延迟
  3. 分组丢失率
  4. 成功投递率
  5. 花费

QoSR的主要作用是

  1. 满足QoS业务需求
  2. 最大限度提高网络利用率

QoSR算法:

  1. 分片式算法
  2. 启发式算法
  3. 多播路由算法

QoSR主要动作:(其实同主要作用)

  1. 对每一个接纳的QoS业务连接请求,找到满足其QoS要求的可行路径(组播树)
  2. 优化全局资源利用率,平衡网络负载,从而最大化网络接受其他QoS请求的能力

manet中的路由协议

先应式路由(DSDV)

每个节点都维护一个路由表,主要通过节点周期性的交换路由信息来获得所要到达节点的路径。

优点:这种路由协议时延较小(一旦要发送报文,可立即获得到达目的节点的路由)

缺点:开销大,路由有效性把握有难度。及时维护路由信息准确性开销大,并且路由信息变化大,很难对有效性进行保证。

总结:适用于实时性需求较高的业务。并且网络规模不是很大,网络拓扑变化相对不是很频繁的网络环境。

反应时路由(DSR)

在需要发送数据的时候才查找路由。

优点:开销小,能快速适应网络拓扑变化

缺点:时延大。

总结:适用于网络拓扑变化快的,但是网络负载大的情况下,性能较差

混合式路由(AODV)

在局部范围内使用先验式路由协议,维护路由信息,当节点较远时,通过查找路由。
AODV只保持需要的路由
AODV为了维护路由,还周期性的发送hello分组

被动式队列管理缺点

死锁(lock-out)问题(被某几个流霸占):在某些情况下,"去尾"算法会让某个流或者少数几个流独占队列空间,阻止其他流的包进入队列。这种"死锁"现象通常是由于同步(synchronization)或其他定时作用的结果。

满队列(full queues)问题(队列太长,排队时延长)
由于"去尾"算法只有在队列满时才会发出拥塞信号,因此会使得队列在相当长时间内处于充满(或几乎充满)的状态。而队列管理最重要的目标之一就是降低稳定状态下队列的长度,因为端到端的延迟主要就是由于在队列中排队等待造成的。

全局同步(global synchronization)问题(无法解决突发本质):由于Internet上数据的突发本质,到达路由器的包也往往是突发的。如果队列是满的或者几乎是满的,就会导致在短时间内连续大量地丢包。而TCP流具有自适应特性,源端发现包丢失就急剧地减小发送窗口,包到达速率就迅速下降,于是网络拥塞得以解除,但源端得知网络不再拥塞后又开始增加发送速度,最终又造成网络拥塞,而且这种现象常常会周而复始地进行下去,从而在一段时间内网络处于链路利用率很低的用状态,降低了整体吞吐量,这就是所谓地"TCP全局同步"现象。

新的互联网拥塞控制机制XCP(eXplicit Control Protocol)。

XCP源端维持有拥塞窗口cwnd和回路响应时间RTT并且通过数据包中的拥塞头(congestion header)将这两个值与路由器进行通信。当XCP连接刚刚建立时,与TCP一样,初始cwnd较小,XCP将其理想的发送速率填入到拥塞头中,如果链路带宽允许,则在一个RTT后就以次速率发送数据;如果链路带宽不足,则网络会给出一个发送速率,在一个RTT后源端就以此速率发送数据。

在随后的数据包传输过程中,根据数据流入速率和链路带宽之间的关系,路由器通知每个流是要增加还是减少拥塞窗口并将有关信息填入到拥塞头中。如果在后面的传输过程中,有路由器拥塞更加严重,则该路由器将拥塞头中的有关信息改写。最终该数据包将获得传输过程中的瓶颈链路信息,并将传送给接收端。接收端再将次信息写入到确认包中传送给源端,源端依此信息对拥塞窗口进行调整。通过将拥塞状态信息放入数据包中,XCP无需路由器维持每流状态信息,扩展性较好。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值