一种卫星网络中跨层拥塞控制方法

文档序号:7723552阅读:283来源:国知局
专利名称:一种卫星网络中跨层拥塞控制方法
技术领域
本发明是一种面向卫星网络中传输层协议的性能解决方案。主要用于提高TCP协议在卫星网络中的性能,属于卫星网络传输层拥塞控制的技术领域。
背景技术
随着hternet的普及,Internet上用户和应用的数量都在迅速增长,当多个用户对网络的需求总量大于网络实际传输能力时,必然会导致网络拥塞的发生。虽然拥塞源于资源短缺,但增加资源并不能避免拥塞的发生,有时甚至会加重拥塞程度。例如,增加网关缓存表面上看可以防止或缓解由于拥塞引起的分组丢弃,但随着缓存的增加,端到端的时延也相应增大。因为分组的持续时间是有限的,超时的分组同样需要重传。因此,过大的缓存空间有可能使总延迟超过端系统重传时钟的值从而导致分组重传。这些分组白白浪费了网络的可用带宽,反而加重了拥塞。目前互联网上使用的拥塞控制机制基本上都是TCP拥塞控制机制,它是一种基于端系统的控制机制。在^ternet发展初期,主要是通过TCP协议中端到端基于滑动窗口的流量控制完成的,TCP的流量算法中也逐步增加了慢启动、拥塞避免、快速重传与快速恢复等算法,以期对网络流量进行控制。随着应用需求的丰富和技术的发展,研究者开始认识到想完全依赖实现在终端系统上的策略与算法很难满足越来越多的复杂应用需求。于是,人们把注意力转向网络中的路由器等中间节点设备,期望通过增强它们的功能来实现主机终端无法达到的目标。就拥塞控制而言,网络中间节点有可能更及时,甚至提前准确了解网络的拥塞状态,并依此实施有效的资源管理策略,使网络能有效地避免拥塞,或尽早从严重的拥塞状态中恢复过来。目前在网络节点中使用的拥塞控制机制主要有两类队列管理和队列调度,其中队列管理又可分为被动队列管理(Passive Queue Management, PQM)和主动队列管理 (Active Queue Management,AQM)。传统的路由器采用被动队列算法中最为典型的“去尾 (Drop-Tail)”管理策略,当分组到达时,如果缓冲队列己满,路由器则丢弃该分组。“去尾” 策略虽然简单,但很容易产生持续的满队列状态,甚至导致业务流对缓存的死锁和业务流的全局同步。Floyd于1993年提出了著名的随机早期检测(Random Early Detection, RED) 算法,有效地改进了路由器上的“去尾”算法,同时也成为路由器设计的唯一候选算法。RED 算法的有效性虽然经过了一些实践的验证,但是依旧存在一些缺陷,如公平性和稳定性问题,而且其算法的性能敏感于参数的选择等。针对RED算法存在的这些问题,国内外的众多学者对其进行了大量的研究,并出现了许多比较优秀的派生算法,其中比较典型的有BLUE、 REM、Stabilized-RED, Active RED、以及GREEN等,尽管这些算法相比较RED算法有了一些改进,但是将他们直接应用在卫星网络中来进行拥塞控制,仍有很多不足。因此,针对卫星网络的动态性和高误码率、大传播时延、带宽不对称等特点,需要结合跨层资源优化的思想,设计一种灵活的拥塞控制机制使得TCP层能够根据网络实时状况准确地预测拥塞并能区分出误码与拥塞造成的丢包,从而采取相应的拥塞调整策略,保证网络资源的利用率,提高卫星网络中TCP的传输性能。

发明内容
技术问题本发明的目的是提供一种卫星网络中结合跨层设计的拥塞控制方法, 解决卫星网络中TCP不能准确地预测拥塞和判断网络拥塞和误码造成的数据包丢失,从而提高卫星网络中TCP协议的性能。技术方案本方法是一种策略性的方法,基于卫星网络的环境,通过跨层设计的方法和策略,结合链路层协议,改进TCP的拥塞控制算法,使其减少因链路传输出错丢包而导致TCP发送窗口缩减、吞吐量降低。目前的协议栈机制是某一层协议通过下面层所提供的服务,转而向更高层提供服务,但这种方式存在很多的缺点。在TCP层,无线信道中的信息拥塞所产生的错误将导致IP 包的丢失,致使比特率降低。在丢失事件发生后将花费很长的时间去修复,尤其是大量信息丢失后可能导致TCP的中断。此时系统将耗费几个往返时间(RTT)才能恢复到中断事件发生前的水平。为了解决这些问题,提出了一种TCP层跨层设计的方法,使其与链路层之间传递特定的信息,从而与卫星通信环境相适应,从而使系统能够满足各种业务的需求。本方法实现的是链路层与TCP层的跨层设计,链路层中使用报文速率和RED相结合的队列管理方法,将实时的队列状态传递给TCP层,TCP层通过接收的信息调整拥塞控制策略。卫星网络中跨层拥塞控制设计方法实现传输层TCP与链路层的跨层设计,使TCP 能够预测拥塞并能正确判断出误码和拥塞产生的丢包以及时地调整发送窗口,其中TCP层设计步骤如下
步骤1.当传输层收到一个新包时,对确认报文ack类型进行判断,如果不是ack包则退出,
步骤2.判断收到的新包是否是上次连接的尸体包,如果是尸体分组,释放该分组内存并退出,
步骤3.收到的如果是ack包,将ack包数加1,并记录对端发此ack包时的时间, 步骤4.如果本ack包的序号大于上次记录的ack序号,表示是新的ack,将拥塞窗口加1,然后开始下一次传输,拥塞窗口随着传输次数按指数规律增长;当拥塞窗口增长到慢开始门限值时,就改为执行拥塞避免算法,拥塞窗口按线性规律增长,
步骤5.如果收到一个或两个重复的ack,只采用重传策略,即当计时器设置的重传时间到时还没有收到确认,就重传这一报文段,
步骤6.当收到三个或以上重复的ack时,如果链路层传来的拥塞标志显示为链路拥塞,即拥塞标志位为1时,调用快速重传策略,即源端不必等待RTO超时,立即重传丢失的数据包,同时将慢启动阈值设置为当前拥塞窗口大小的一半,并且将拥塞窗口减为原来的一半,否则只采用重传策略,
链路层中实现跨层设计的步骤如下
步骤7.在收到数据包的时候,判断平均队列长度Qavg的值,当小于随机早期检测算法RED预先设定的门限Qmin的时候,继续判断总的报文到达速率A,若总的报文速率A小于输出链路的带宽C,将分组放入队列,并将拥塞标志设置为非拥塞;否则,以概率P=1_C/A丢弃数据包和设置拥塞标志为拥塞,
步骤8. 当Qavg的值大于等于Qmin,并小于Qmax时,若总的报文速率A小于输出链路的带宽C,调用函数计算概率P,以概率
^(g^g-grxm)丢弃分组,并将拥塞标志设置为非拥塞;否则,P取i和 K/
y max-y IXiuti
A+ f4QaVg:Qmm)中较小值,然后以概率P丢弃数据包和设置拥塞标志位, Q max — Q mm
步骤9.当Qavg的值大于等于RED预先设定的门限Qmax的时候,若总的报文速率A小
^ ^ v (Oav^ — Dmax) ^
于输出链路的带宽C,调用函数计算概率P,以概率P=丢弃
Qma — Qmdx
分组和设置拥塞标志位;否则,直接丢弃到达的数据包,并将拥塞标志设置为拥塞。有益效果本方法基于跨层设计,将链路层的队列状态信息传递给TCP层,使得 TCP层在收到重复ack的时候能够根据链路层的队列状态信息判断出链路的拥塞状况,使得TCP能够及时地预测拥塞并能正确判断出网络拥塞和误码造成的数据包丢失,提高了通信链路的吞吐率和带宽利用率。


图1是链路层收到数据包后的流程示意图。图2是TCP层收到数据包后的流程示意图。
具体实施例方式方法流程
1.链路层的跨层设计方案
传统的队列管理采用尾丢弃算法,容易造成全局同步和缓冲区易被填满等问题。RED拥塞控制机制的基本思想是通过监控路由器输出端口队列的平均长度来探测拥塞,一旦发现拥塞逼近,就随机地选择连接来通知拥塞,使他们在队列溢出导致丢包之前减小拥塞窗口, 降低发送数据速度,从而缓解网络拥塞。由于RED是基于FIFO队列调度策略的,并且只是丢弃正进入路由器的数据包,因此其实施起来也较为简单。RED算法主要包括两个部分计算平均队列长度和计算丢弃包的概率。(1)平均队列长度的计算
= (1 — Wi ) χ Qavgt + x qmr
其中Swgi表示ι时刻的平均队列长度,qmr表示当前队列长度,Wf表示平均队列长度
的权重值、的大小决定了 RED对输入数据流变化的敏感程度,O ^% Sl。(2)丢包概率的计算
当分组到达队列时,如果平均队列长度小于最小门限值gram ,分组安全进入队列;当伪vg大于最大门限值gmax ,丢弃所有到达报文;如果平均队列长度位于β·和之间,则按如下公式计算分组丢弃概率
权利要求
1. 一种卫星网络中跨层拥塞控制设计方法,其特征在于实现传输层TCP与链路层的跨层设计,使TCP能够预测拥塞并能正确判断出误码和拥塞产生的丢包以及时地调整发送窗口,其中TCP层设计步骤如下步骤1.当传输层收到一个新包时,对确认报文ack类型进行判断,如果不是ack包则退出,步骤2.判断收到的新包是否是上次连接的尸体包,如果是尸体分组,释放该分组内存并退出,步骤3.收到的如果是ack包,将ack包数加1,并记录对端发此ack包时的时间, 步骤4.如果本ack包的序号大于上次记录的ack序号,表示是新的ack,将拥塞窗口加1,然后开始下一次传输,拥塞窗口随着传输次数按指数规律增长;当拥塞窗口增长到慢开始门限值时,就改为执行拥塞避免算法,拥塞窗口按线性规律增长,步骤5.如果收到一个或两个重复的ack,只采用重传策略,即当计时器设置的重传时间到时还没有收到确认,就重传这一报文段,步骤6.当收到三个或以上重复的ack时,如果链路层传来的拥塞标志显示为链路拥塞,即拥塞标志位为1时,调用快速重传策略,即源端不必等待RTO超时,立即重传丢失的数据包,同时将慢启动阈值设置为当前拥塞窗口大小的一半,并且将拥塞窗口减为原来的一半,否则只采用重传策略,链路层中实现跨层设计的步骤如下步骤7.在收到数据包的时候,判断平均队列长度Qavg的值,当小于随机早期检测算法RED预先设定的门限Qmin的时候,继续判断总的报文到达速率A,若总的报文速率A小于输出链路的带宽C,将分组放入队列,并将拥塞标志设置为非拥塞;否则,以概率P=1_C/A丢弃数据包和设置拥塞标志为拥塞,步骤8. 当Qavg的值大于等于Qmin,并小于Qmax时,若总的报文速率A小于输出链路的带宽C,调用函数计算概率P,以概率丢弃分组,并将拥塞标志设置为非拥塞;否则,P取i和 K/β max-β 腿a+ f^qavs-q^)中较小值,然后以概率ρ丢弃数据包和设置拥塞标志位, ymax-ymm步骤9.当Qavg的值大于等于RED预先设定的门限Qmax的时候,若总的报文速率A小于输出链路的带宽C,调用函数计算概率P,以概率P=丢弃Qimi — qm^k分组和设置拥塞标志位;否则,直接丢弃到达的数据包,并将拥塞标志设置为拥塞。
全文摘要
卫星网络中跨层拥塞控制的设计方法是一种卫星网络中使用跨层设计增强TCP性能的解决方案。主要用于解决因卫星网络的高误码环境对TCP的影响,使得TCP能够及时地预测拥塞并能正确判断网络拥塞和误码造成的数据包丢失,属于卫星网络的拥塞控制领域。它应具有如下特征本发明是使TCP层与链路层实现跨层交互,使得链路层中的队列状态能够传递给TCP层,使得TCP层能够根据队列的状态来判断链路的拥塞状况,从而采取相应的策略,最终达到提高TCP性能的效果。
文档编号H04L12/56GK102291389SQ201110197030
公开日2011年12月21日 申请日期2011年7月14日 优先权日2011年7月14日
发明者刘林峰, 叶晓国, 吕康蒙, 孙力娟, 李鹏, 王汝传, 肖甫, 邹志强 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1