首页> 中国专利> 一种基于拥塞队列长度的TCP拥塞控制方法

一种基于拥塞队列长度的TCP拥塞控制方法

摘要

本发明公开了一种数据中心SDN环境下基于拥塞队列长度的TCP拥塞控制方法。该发明通过队列管理模块监控交换机端口的队列长度,当队列长度超过某个阈值时,则认为当前网络处于拥塞状态,并且通过SDN/OpenFlow协议向控制器发送拥塞通告信息,控制器收到该信息后,向该交换机下发流表,修改反向流经该端口的ACK报文,使ACK报文携带网络拥塞点的队列长度信息,发送端收到该ACK报文后,根据ACK报文中的队列长度信息,降低发送端的发送速率,缓解网络拥塞。本发明的方法不仅通过利用网络拥塞点的直接反馈来表征拥塞的程度,可以有效的解决数据中心网络拥塞问题,提高网络吞吐量,同时该方法利用了SDN/OpenFlow技术,使得本发明更加灵活和高效。

著录项

  • 公开/公告号CN106027412A

    专利类型发明专利

  • 公开/公告日2016-10-12

    原文格式PDF

  • 申请/专利权人 南京理工大学;

    申请/专利号CN201610362996.X

  • 发明设计人 陆一飞;

    申请日2016-05-30

  • 分类号H04L12/825(20130101);H04L12/807(20130101);H04L12/801(20130101);

  • 代理机构32203 南京理工大学专利中心;

  • 代理人马鲁晋

  • 地址 210094 江苏省南京市玄武区孝陵卫200号

  • 入库时间 2023-06-19 00:41:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-17

    未缴年费专利权终止 IPC(主分类):H04L12/825 专利号:ZL201610362996X 申请日:20160530 授权公告日:20190712

    专利权的终止

  • 2019-07-12

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):H04L12/825 申请日:20160530

    实质审查的生效

  • 2016-10-12

    公开

    公开

说明书

技术领域

本发明属于TCP拥塞控制方法,特别是一种数据中心SDN架构环境下,基于拥塞队列长度的TCP拥塞控制方法。

背景技术

TCP协议是计算机网络传输层使用的两种协议之一,它提供面向连接的、可靠的数据传输服务,而其中TCP拥塞控制方法又是TCP协议的核心。但是,传统的TCP拥塞控制算法是面向互联网环境而设计产生的,在当前数据中心网络环境下,使用传统的TCP拥塞控制方法会使得网络性能急剧下降。因此,必须设计满足数据中心网络特点的TCP拥塞控制协议。

当前,针对数据中心网络环境的TCP拥塞控制方法有很多,从判断拥塞位置的角度来看,可以分为三类:

1)发送端拥塞判断。这种方法是使用最普遍的拥塞控制机制,最典型的代表为传统TCP拥塞控制机制(TCP Tahoe,TCP Reno,TCP New Reno),该机制的拥塞判断标准为发送端收到三个重复ACK报文。另外还有通过发送数据的往返时间(Round-Trip Time,RTT)作为判断拥塞的标准,如TCP Vegas、DC-Vegas和TIMELY等。(1.Jacobson,V.,Congestion Avoidance and Control,ComputerCommunication Review,vol.18,no.4,pp.314-329,Aug.1988.2.Jacobson,V.,Modified TCP Congestion Avoidance Algorithm,end2end-interest mailing list,April30,1990.3.Sally Floyd and Tom Henderson.The NewReno modificatian to TCP’sfast recovery algorithm.RFC 2582,April 1999.4.Brakmo LS,O'Malley SW,Peterson LL.TCP Vegas:new techniques for congestion detection and avoidance.Proceedings of ACM SIGCOMM 2002,p.24–35,1994.5.Jingyuan Wang,JiangtaoWen,Chao Li,Zhang Xiong,Yuxing HanDC-Vegas:A delay-based TCP congestioncontrol algorithm for datacenter applications,Journal of Network and ComputerApplications,53,pp.103-114,2015.6.Radhika Mittal,Vinh The Lam,NanditaDukkipati,etc.TIMELY:RTT-based Congestion Control for the Datacenter,Proceeding of SIGCOMM’15,August 17-21,London,United Kingdom,pp.537-550,2015.)。这种方法的优势在于利用TCP协议中的已有属性,实现较为简单,但是发送端判断拥塞的方法准确性不高,或者需要对当前终端的TCP协议栈进行修改,使用代价较高。

2)网络侧判断拥塞。这种方法最典型的为DCTCP和D2TCP,这些机制在交换机队列长度超过阈值时,使用ECN的方法标记超过阈值的报文,发送端根据被标记数据报文的比例调整拥塞窗口大小,被标记的比例越大,降低的幅度越大。(7.Alizadeh,M.,Greenberg,A.,Greenberg,Maltz,D.,etc.Data>

3)接收端判断拥塞。这种方法的代表性成果为ICTCP,ICTCP根据接收端的TCP连接情况,判断拥塞程度,主动调整每一个TCP连接的接收窗口大小,从而避免网络拥塞的发生。(9.Wu,H.,Feng,Z.,Guo,C.and Zhang,Y.ICTCP:Incast Congestion Control for TCP in Data Center Networks.Proceedings ofCoNEXT 2010,Philadelphia,PA,30November-03December,pp.13.ACM,NewYork,NY,USA.)。这种方法能够有效解决网络拥塞问题,但是它的不足之处在于适用场景有限,只有拥塞发生在靠近接收端的交换机上时才能产生效果。

发明内容

本发明的目的是在数据中心网络SDN架构下,利用发生拥塞的交换机队列长度作为调整拥塞窗口的依据,并已此设计TCP拥塞控制方法,从而解决网络拥塞问题。

实现本发明目的的技术解决方案为:一种基于拥塞队列长度的TCP拥塞控制方法,该方法应用于符合SDN架构的数据中心网络中,该网络环境包含发送端、交换机、SDN控制器节点,上述发送端和SDN控制器节点均与交换机相连接,且它们之间进行数据传递,SDN控制器和交换机间使用OpenFlow协议;该方法具体包括以下步骤:

步骤1、对交换机队列进行管理,具体为:网络中的交换机实时监控交换机端口队列长度,当队列长度超过设定的阈值时,也即网络处于拥塞时,交换机向SDN控制器发送拥塞通告信息,该拥塞通告信息包括发生拥塞的交换机编号信息和拥塞端口编号信息;否则,按照正常的交换机队列管理机制进行处理;

步骤2、SDN控制器节点收到拥塞通告信息后,向发生拥塞的交换机发送流表,该流表的进入接口为发生拥塞的交换机端口号,流表的Actions项为修改ACK报文动作;

步骤3、对报文进行处理,当新的流表到达交换机后,交换机根据步骤2的流表,对符合该流表的ACK报文增加当前队列长度信息;

步骤4、发送端收到ACK报文后,重新计算拥塞窗口后调整发送端的发送速率,完成当前周期的TCP拥塞处理,之后返回步骤1进行下一个周期的拥塞处理。

本发明与现有技术相比,其显著优点为:(1)本发明的方法直接利用网络发生拥塞的交换机队列长度信息来表征拥塞的程度,因此判断拥塞的准确性更高;(2)当交换机队列长度超过设定的阈值时,利用SDN/OpenFlow技术向SDN控制器发送拥塞通告消息,随后下发流表,使得交换机自动向ACK报文添加队列长度信息,因此,本发明的灵活性更高,扩展性更高,可以根据具体的需求定义阈值信息;(3)本发明首次直接采用交换机队列长度的变化率来调整拥塞窗口,效率更高,效果更好。

下面结合附图对本发明作进一步详细描述。

附图说明

图1为本发明的应用场景。

图2为本发明基于队列长度的TCP拥塞控制方法的流程图。

图3交换机状态变迁图。

图4交换机端数据处理流程图。

图5修改后的ACK报文。

具体实施方式

结合图1,本发明的一种基于拥塞队列长度的TCP拥塞控制方法,该方法应用于符合SDN架构的数据中心网络中,该网络环境包含发送端、交换机、SDN控制器节点,上述发送端和SDN控制器节点均与交换机相连接,且它们之间进行数据传递,SDN控制器和交换机间使用OpenFlow协议;该方法具体包括以下步骤:

步骤1、对交换机队列进行管理,具体为:网络中的交换机实时监控交换机端口队列长度,当队列长度超过设定的阈值时,也即网络处于拥塞时,交换机向SDN控制器发送拥塞通告信息,该拥塞通告信息包括发生拥塞的交换机编号信息和拥塞端口编号信息;否则,按照正常的交换机队列管理机制进行处理;对交换机队列进行管理具体为:

步骤1-1、实时监控交换机端口的队列长度,将当前队列长度记为Qcur

步骤1-2、判断当前队列长度是否超过阈值K,当Qcur<K时,表示交换机处于正常状态NOR,设置当前交换机状态State=NOR,按照正常的交换机队列管理机制进行处理;否则,进入步骤1-3;

步骤1-3、当K≤Qcur≤Qmax时,其中Qmax为队列的最大长度,表示交换机处于拥塞状态CNG,设置当前交换机状态State=CNG,并进入步骤1-4;否则进入步骤1-5;

步骤1-4、利用OpenFlow协议生成Packet_In报文,并将发生拥塞的端口号和交换机标识作为Packet_In报文的数据部分,将该报文发送给SDN控制器;

步骤1-5、当Qcur>Qmax,交换机丢弃进入该端口的数据报文。

步骤2、SDN控制器节点收到拥塞通告信息后,向发生拥塞的交换机发送流表,该流表的进入接口为发生拥塞的交换机端口号,流表的Actions项为修改ACK报文动作;

步骤3、对报文进行处理,当步骤2的流表到达交换机后,交换机根据该流表,对符合流表的ACK报文增加当前队列长度信息;对符合流表的ACK报文增加当前队列长度信息,具体步骤如下:

步骤3-1、当数据报文到达发生拥塞的交换机端口时,判断当前端口队列的状态,如果状态State为CNG,则进入步骤3-2,否则,进入步骤3-7;

步骤3-2、查看该报文是否为ACK报文,如果该报文不是ACK报文,则进入步骤3-7,否则,进入步骤3-3;

步骤3-3、从该ACK报文中提取拥塞标志字段并赋值为CN,同时提取ACK报文中的队列长度字段的值并赋值为Qack,进入步骤3-4;所述CN表示拥塞标志,Qack表示传输路径上拥塞队列长度的总和;

步骤3-4、判断拥塞标志是否为1,如果为1,则表示该数据流路径上有其它的拥塞点,进入步骤3-6,否则进入步骤3-5;

步骤3-5、设置ACK报文的网络拥塞字段CN=1,赋值Qack=0,进入步骤3-6;

步骤3-6、设置ACK报文中队列长度的值为Qcur+Qack,随后进入步骤3-7;

步骤3-7、报文正常处理和转发。

步骤4、发送端收到ACK报文后,重新计算拥塞窗口后调整发送端的发送速率,完成当前周期的TCP拥塞处理,之后返回步骤1进行下一个周期的拥塞处理。计算拥塞窗口后调整发送端的发送速率具体步骤如下:

步骤4-1、当接收到ACK报文时,提取该报文中的CN字段,如果CN字段为1,则进入步骤4-2,否则,进入步骤4-5;

步骤4-2、从ACK报文中提取队列长度字段,赋值为Qack,如果Qack<Qmin或者Qack>Qmax,则进入步骤4-3,否则,进入步骤4-4;上述Qmin和Qmax为算法运行过程中记录的最小和最大队列长度值;

步骤4-3、如果Qack<Qmin,则Qmin=Qack,否则如果Qack>Qmax,则Qmax=Qack,之后进入步骤4-4;

步骤4-4、比较Qack和Qlast,其中Qlast表示上次收到ACK报文中的队列长度,如果Qack≤Qlast,则拥塞窗口cwnd不变,否则按如下公式调整,

cwndnew=(1-α/2)*cwndold

其中,α=(1-g)*α+g*R,Δ=Qmax-Qmin,g为[0,1]的一个因子,cwndold表示上个周期的拥塞窗口,随后设置Qlast=Qack,进入步骤4-6;

步骤4-5、按照原有TCP协议计算cwndnew;进入步骤4-6;

步骤4-6、按照cwndnew发送数据,随后设置cwndold=cwndnew

本发明的方法不仅通过利用网络拥塞点的直接反馈来表征拥塞的程度,可以有效的解决数据中心网络拥塞问题,提高网络吞吐量,同时该方法利用了SDN/OpenFlow技术,使得本发明更加灵活和高效。

下面结合实施例对本发明做进一步详细的描述。

实施例

结合图1和图2,本发明基于拥塞队列长度的TCP拥塞控制方法,步骤如下:

第一步、如图3所示,交换机采用尾丢弃的队列管理算法进行处理,交换机实时监控端口队列长度,当交换机端口号为1的队列长度为70KB,超过阈值K(本例中,我们取K为队列长度的一半,64KB),交换机处于拥塞状态,交换机向SDN控制器发送拥塞通告信息,该拥塞通告信息包括发生拥塞的交换机标识和端口号1。

第二步、SDN控制器收到拥塞通告信息后,向发生拥塞的交换机发送新的流表,该流表的进入接口端口号1,流表的Actions指向修改ACK报文动作;

第三步、如图4所示,当数据报文到达交换机1号端口时,此时交换机端口处于拥塞状态,具体步骤如下:

(a)查看数据报文类型,如果不是ACK报文,则按正常流程处理,否则从ACK中提出拥塞标志字段的值,同时提取ACK报文中的队列长度字段的值,ACK报文格式如图5所示,在该例子中,拥塞标志CN字段为0,队列长度也为0,表示此前的路径上没有其它拥塞发生;

(b)设置ACK报文拥塞字段为1,设置ACK报文的队列长度字段为当前队列长度的值70KB。

(c)报文正常处理和转发。

第四步、当发送端接收到该ACK报文后,提取报文中的拥塞字段为1和队列长度Qack=70KB,具体步骤如下:

(a)当前发送端记录的Qmin=65KB,Qmax=95KB,因此不需要更新相应的Qmin,或Qmax

(b)判断Qack与Qlast的大小,当前发送端的Qlast=67KB,因此按如下公式调整,

cwndnew=(1-α/2)*cwndold

其中,α=(1-g)*α+g*R,Δ=Qmax-Qmin,g取值为0.5,已有的α为0.4,cwndold=8

根据已知条件可计算出Δ=30KB,α=0.5*0.4+0.5*0.1=0.25,最终得出cwndnew=(1-0.125)*8=7

(c)按照cwndnew=7发送数据,随后设置cwndold=cwndnew=7。

由上可知,本方法可以直接根据交换机拥塞队列的长度调整发送端的拥塞窗口,本例子中,拥塞不严重时(队列长度超过阈值5KB大小),拥塞窗口轻微下降(从原来的8将为7),因此在传输速率轻微下降的同时,又能够缓解交换机队列长度。当拥塞严重时,发送端拥塞窗口下降较大,交换机队列长度下降的也较多,避免拥塞恶化。因此,本方法具有较高的判断拥塞准确性,使得发送端能够更加高效的调整发送速率,在保证自身合理发送速率条件下,能够有效缓解交换机队列拥塞的发生,最终提高网络吞吐量。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号