一种传输控制协议在网络拥塞时的处理方法和装置与流程

文档序号:18630293发布日期:2019-09-06 23:31阅读:164来源:国知局
一种传输控制协议在网络拥塞时的处理方法和装置与流程

本发明涉及网络通信协议技术领域,尤指一种传输控制协议(tcp,transmissioncontrolprotocol)在网络拥塞时的处理方法和装置。



背景技术:

近年来,互联网技术得到广泛推广和应用,用户浏览、下载网络数据等业务量急剧上升,如何对网络资源及通信协议自身的特点进行合理利用从而缓解由于业务量过大而引起的网络拥塞成了每个互联网商家乃至每个用户所关注和研究的焦点。

在获取网络数据时,为了确保数据的完整可靠,主要使用的是传输控制协议tcp,tcp主要特点是对发送的每个数据报文段都必须得到接收方的应答才认为这个报文段传输成功,在当前的处理流程中,服务器发送数据报文后等待用户的确认,在得到确认后,方认为该数据发送成功,即对每个数据报文都按部就班的走完每层协议的处理。

在互联网通信技术中,网络带宽是固定的,用户数不确定,当网络用户数较少时,浏览网页,下载数据均反应快,响应及时;但是当用户较多时,则会出现网络拥塞,网络响应不及时,甚至出断流现象。



技术实现要素:

(一)解决的技术问题

针对现有技术的不足,本发明提供了一种传输控制协议在网络拥塞时的处理方法和装置,解决了当用户较多时所出现的网络拥塞、网络响应不及时、甚至会出现断流现象的问题。

(二)技术方案

为实现以上目的,本发明通过以下技术方案予以实现:第一方面,本发明提供了一种传输控制协议在网络拥塞时的处理方法,该方法包括:在基站设备的应用层开辟独立的处理模块,即网络拥塞处理模块,用于在网络拥塞时临时存放从服务器下发tcp数据报文的副本;

当统计周期内所有类型报文的总速率大于预设的阙值st,且所述统计周期内下发的tcp报文的数据速率对所有类型报文的总速率的比率超过预设的占比阙值rt,认为存在网络拥塞风险,开启网络拥塞缓解功能,按照预设策略对所述tcp报文进行处理;

当网络拥塞缓解功能开启时对tcp数据缓存,具体包括:

对服务器所下发数据进行解析处理,将不同链接的数据报文根据序号进行由小到大排序进而将剥掉ip头的数据部分临时复制存储在处理模块,对于序号较小但迟来的报文,与已储存的报文序号依次比较,直到找到第一个比所述报文序号大的报文,并在所述较大序号报文之前存储;

收到并复制存储所述tcp数据报文后,在处理模块进行组包封装所述ack报文,由所述处理模块直接向服务器进行回复确认;

将存储后的所述tcp数据报文向用户通过统一接口原封不动转发出去,在数据包发送的同时开启定时器,所述定时器时长符合tcp协议超时重传时长;

当收到用户发送的ack,具体包括:

解析ack报文,获取确认报文所属链接及序号,删除所属链接中所述确认序号对应的当前数据及之前数据报文,并释放所述ack报文,不再向服务器发送;

当收到三次及以上同一序号ack报文,查找并重传所述序号数据报文,或将所述ack报文转发给服务器,要求服务器重传所述数据报文;

当超时发生,查找并重传所述确认报文携带序号对应的数据报文,或将所述确认报文转发给服务器,要求服务器重传所述数据报文,

对于不同链接的数据报文,链接是由ip地址+端口号来唯一确定:发送方的链接是由源ip地址+源主机端口号确定;接收方链接是由目的ip地址+目的主机端口号来确定。

在上述方案中,收到三次及以上同一序号确认报文,在处理模块查找并重传所述数据报文,具体包括:

收到ack报文,对所述ack报文解析获取所述报文序号并进行计数统计,当收到所述序号的ack报文的统计计数大于等于三时,在处理模块依次查找所述序号对应的数据报文:如找到所述数据报文,对所述数据报文进行封装打包后重新发往用户;如找不到所述数据报文,将所述ack报文向服务器连发三次,请求服务器重新发送所述数据报文,

所述ack报文计数未达到三次,报文重传定时器超时,对超时数据报文进行封装重传。

在上述方案中,将所述ack报文向服务器连发三次,具体包括:

当要求重传时,在缓存区查找所述序号数据报文而未能找到时,即缓存区没有缓存服务器发送的所述序号报文,这时要将所述ack报文转发给服务器,服务器在收到三次该ack报文后,会重传所述序号数据报文;

当超时定时器超时时,需要重传,具体包括:

在规定时间内,未收到所述数据报文的确认报文,在缓存区查找对应数据报文,封装并重发至用户,

当在服务器与基站设备之间发生丢包现象时,也由该处理模块直接激发超时重传或快速重传,要求服务器向所述处理模块重传所述数据报文。

在上述方案中,快速重传,具体包括:

当对端收到连续数据报文后,会回复一个包含期望下一次所收到数据报文序号的ack报文;如收到的数据报文序号并非期望报文时,会重复回复期望序号的ack报文,本端收到ack报文进行统计计数,收到三次以上同一序号ack报文时,触发快速重传;

第二方面,本发明提供了一种缓解网络拥塞的装置,所述装置包括:判定单元、缓存单元、转发单元、ack处理单元,其中:

所述判定单元,用于判定统计周期内相关报文数是否达到门限值,并且在满足条件时开启网络拥塞缓解功能,按照所述预设策略对所述tcp报文进行处理;

所述缓存单元,用于复制缓存服务器下发数据报文剥掉ip头的部分;

所述转发单元,用于将服务器下发数据缓存之后向用户转发出去;

所述ack处理单元,是指在收到用户发送的ack报文时,删除所述ack序号对应的数据报文并释放所述ack;当收到重传指示时,查找所述数据报文并封装后发往用户。

在上述方案中,所述判定单元,具体用于:当统计周期内所有类型报文的总速率大于预设的阙值st,且所述统计周期内下发的tcp报文的数据速率对所有类型报文的总速率的比率超过预设的占比阙值rt,认为存在网络拥塞风险,开启网络拥塞缓解功能,按照所述预设策略对所述tcp报文进行处理。

在上述方案中,所述缓存单元,具体用于将服务器所下发数据进行解析处理,根据数据报文序号进行由小到大排序进而临时复制存储;

所述缓存单元还包括排序单元,用于将所述缓存数据按从小到大的序号进行排序,对于序号较小但迟来的报文,与已储存的报文序号依次比较,直到找到第一个比所述报文序号大的报文,并在所述较大序号报文之前存储;

所述缓存单元还包括确认单元,用于在缓存数据后,主动向服务器回复所述序号数据报文的ack报文。

在上述方案中,所述转发单元,用于将所述已缓存的tcp数据报文通过统一的发送接口原封不动向用户转发出去,同时开启该数据报文超时定时器。

在上述方案中,所述ack处理单元,具体用于在收到用户ack报文时,解析ack报文,获取所属链接及确认序号,删除所属链接中所述确认序号对应的当前数据及之前数据报文,并释放所述ack报文,不再向服务器发送,同时对同一序号的ack报文进行计数统计;

当ack报文统计计数大于等于3时,在缓存单元查找所述序号数据报文并进行封装重传给用户;

若在缓存区找不到所述数据报文,将所述ack报文向服务器连发三次,请求服务器重新发送所述数据报文。

在上述方案中,当所述超时定时器超时,所述缓存模块主动在缓存区查找并封装重传超时数据报文;

在所述缓存区未找到所述数据报文,构造所述序号ack报文向服务器连发三次,要求服务器重传所述数据报文。

(三)有益效果

本发明提供了一种传输控制协议在网络拥塞时的处理方法和装置。具备以下有益效果:

(1)、该传输控制协议在网络发生拥塞时的处理方法及装置,通过采用在基站设备应用层开辟独立处理模块,用于缓存tcp数据,提前向服务器回复ack以及在需要的时候主动向用户重传数据报文,由此来节省时间,加速数据传输速率,缓解网络拥塞,防止断流。

(2)、该传输控制协议在网络发生拥塞时的处理方法及装置,通过对tcp数据在处理模块进行提前向服务器回复确认来提升流量,缓存数据用于在收到对端多次ack或超时定时器超时后提前主动进行重传来加速重传进程,从而使得基站设备处理能力和处理速度得以提高,节省时间,缓解网络拥塞。

(3)、该传输控制协议在网络发生拥塞时的处理方法及装置,通过在服务器与用户之间开辟处理模块,用于处理用户应答和服务器重传等功能,具有很好的适用性,可应用于任何一种支持tcp协议的基站设备及相关设备。

(4)、该传输控制协议在网络发生拥塞时的处理方法及装置,通过使用判定单元、缓存单元、转发单元和ack处理单元能较好的配合软件处理大量的数据,使得该方法能在实体的结构中运行,使得对数据的处理平台更加简单,节约了成本,提高了网络基础建设效益,使得数据传输的速率大幅度提升。

(5)、该传输控制协议在网络发生拥塞时的处理方法及装置,通过采用在基站设备应用层开辟独立处理模块,用于缓存tcp数据,提前向服务器回复ack以及在需要的时候主动向用户重传数据报文,改善了网路数据传输的环境,有利于网路工程的建设,利国利民,使得广大网民能更舒适的享受网上冲浪,由于解决网络数据加载拥挤和堵塞的问题,还能带动互联网经济快速发展,促进社会的发展,增加了社会效益。

附图说明

图1为本发明实施例提供的一种传输控制协议在网络拥塞时处理方法的整体规划图。

图2为本发明实施例提供的一种传输控制协议在网络拥塞时的拥塞处理模块整体示意图。

图3为本发明实施例提供的一种传输控制协议在网络拥塞时处理方法开启示意图。

图4为本发明实施例提供的一种传输控制协议在网络拥塞时处理下行数据的具体流程示意图。

图5为本发明实施例提供的一种传输控制协议在网络拥塞时处理上行ack的具体流程示意图。

图6为本发明实施例提供的一种传输控制协议在网络拥塞时的处理装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1-6,本发明实施例提供一种技术方案:一种传输控制协议在网络拥塞时的处理方法和装置,考虑到造成网络拥塞主要原因是业务量大、且可靠的传输控制协议tcp需要必须得到接收方的应答才认为这个报文段传输成功,因此,本发明实施例的基本思想是:在服务器与用户之间开辟处理模块,用于处理用户应答和服务器重传等功能,达到缩短应答时间,加快重传速度的目的,从而节省时间,加速数据传输速率,缓解网络拥塞,防止断流,基于本发明实施例的基本思想,参见图1和图2,展示了本发明实施例提供的一种传输控制协议在网络拥塞时的处理方法,该方法可应用于任何一种支持tcp协议的基站设备及相关设备,该方法可以包括:

s101:进入处理模块;

s102:复制缓存tcp数据报文,构造ack报文向服务器确认同时将已缓存数据报文由统一接口分发;

s103:当收到所述tcp数据报文的ack报文后,删除该确认序号对应的当前tcp数据及之前数据报文,并释放所述ack报文;

s104:收到三次及以上同一序号ack报文,查找并重传所述序号ack报文对应数据报文,若查找不到对应数据报文,将该ack报文转给服务器,要求服务器重传所述tcp数据报文。

示例性地,对于步骤s101来说,是否开启网络拥塞缓解功能进入处理模块流程可以如图3所示;

对报文速率进行统计,s1011:对所有类型报文进行周期统计;s1012:对tcp报文速率进行周期统计;

s1013:判断所有类型报文速率是否大于阙值st;如果大于阙值st,转至s1014;若果不大于阙值,则转至s1016。

s1014:判断周期内下发的tcp报文的数据速率对所有类型报文的总速率的比率超过预设的占比阙值rt;若果大于阙值rt,转至s1015;若果不大于阙值rt,则转至s1016;

s1015:进入缓解网络拥塞处理模块;

s1016:按原流程直接分发数据报文;

可以理解地,当统计周期内所有类型报文的速率不大于阙值st或tcp报文的数据速率对所有类型报文的总速率的比率不超过预设的占比阙值rt,则无需进入网络拥塞缓解处理模块,按原流程进行处理。

示例性地,对于步骤s102来说,当接收到下行数据报文,复制缓存tcp数据报文;构造ack报文向服务器确认;将缓存数据报文由统一接口分发;如图4所示:

s201:解析下行数据报文是否为tcp数据报文;对于tcp数据报文,转至s203;对于非tcp数据报文,则转至s202;

s202:按原流程直接分发数据报文;

s203:解析tcp数据报文,将tcp数据报文剥掉ip头的部分按不同链接复制缓存至处理模块对应的缓存区,缓存时需根据数据报文携带序号进行由小到大的顺序缓存;

进一步地,在缓存数据报文之前,需要首先对该报文进行解析处理,获取该报文属哪个链接的数据流,链接是由ip地址+端口号唯一确定;

可以理解地,处理模块的缓存区是专门用于存储tcp数据部分的空间,需要在处理模块开辟时提前预留的一块较大的内存,因为在收到对端确认后即可删除,因此一般情况下该条件可以满足;另外,如果由于资源紧张问题,也可优先考虑对vip用户满足该发明功能。

s204:判断缓存数据序号是否连续,以构造携带不同序号的ack报文向服务器确认;如果序号不连续,转至s205;如果序号连续,则转至s206;

s205:序号有间断,构造期望序号的ack报文;

s206:序号连续,则构造下一个序号的ack报文;

s207:无论是期望序号的ack,还是下一个序号的ack,在构造之后都要发往服务器;

可以理解地,期望序号的ack以便服务器在收到一定次数该序号ack报文后,重传该序号报文;下一个序号的ack发往服务器向服务器确认前期报文均已收到,要求服务器发送新的数据包。

s208:将缓存数据报文由统一发送接口分发;

进一步地,在按序缓存数据时,可以通过字节偏移来获取报文序号进而进行依次比较,直到找到第一个比需要缓存数据报文序号大的报文,在大序号之前将需缓存的数据报文缓存;

步骤s208是将已经缓存且向服务器确认的数据报文由统一发送接口向下分发,统一发送接口用原流程的发送接口即可。具体地讲,处理模块与原流程在缓存单元下行处理的差异在于:在原流程向下分发数据之前将数据剥掉ip头的部分复制缓存,并主动向服务器回复ack确认。

示例性地,对于步骤s103来说,当收到用户发送的ack报文后,删除对应的当前tcp数据及之前数据报文并释放所述ack报文,可以包括:

当接收到用户发送的报文后,s201:首先进行解析处理,判断是否为tcpack报文;对于tcpack报文,转至s303;对于非tcpack报文,转至s302;

s302:按原流程将报文向上投递;

s303:解析tcpack报文获取所属链接及确认序号;

s304:判断本次ack确认序号与上次收到ack确认序号是否相等;如果相等转至s308;如果不相等,则转至s305;

具体地,定义两个变量用来记录属于同一链接当前次ack确认序号和上次ack确认序号;将两个变量的初始值均设为无效值;收到第一个ack后,将该ack确认序号赋值当前次变量并与上次确认无效值的序号进行比较,不相等,将该当前次序号赋值上次确认序号变量,当前次序号变量重置为无效值;收到第二个ack时,将新收到ack确认序号赋值当前次ack确认序号变量,与上次ack确认序号变量进行比较,如果相等,不进行赋值;不相等,将当前次确认序号赋值上次确认序号变量;以此类推;

s305:将上次ack确认序号重新赋值为当前ack确认序号,并将ack统计计数值置为1;

s306:在缓存区查找对应序号的数据报文,将序号小于该序号的缓存数据报文全部删除;

s307:释放该tcpack报文,不再向服务器转发。

示例性地,对于步骤s104来说,是对收到用户发送的同一确认序号的ack后所做的处理,具体包括:

s308:当前次ack确认序号与上次确认序号相同,将ack统计计数变量值++;

s309:判断ack统计计数变量值是否大于等于三次;如果不大于三次,转至s306,进行查询删除操作;如果大于等于三次,转至s310;

s310:判断在缓存区查是否找到对应序号的数据报文;如果找到对应序号数据报文,转至s311;如果找不到对应序号数据报文,转至s312;

s311:封装并重传对应序号数据报文;

s312:将该tcpack向服务器连续转发三次。

进一步地,处理模块收到同一序号的ack报文未达到三次,但超时定时超时时,处理模块主动重传超时的数据报文。

可以理解地,本端在收到三次以上同一序号的ack报文,即认为用户没有收到该序号对应的数据报文,需要本端对该序号的数据报文进行重传。在这种情况下,首先在缓存区中所属链接中查找该序号的数据报文,如果找到,将该数据报文提出并封装ip头部后进行重传;如果在缓存区中找不到,需要服务器进行重传。服务器进行重传分为两种情况:一、收到三次以上同一序号的ack;二、超时重传。考虑有效性,一般进行快速重传,即收到三次以上同一序号的ack后立刻进行重传。因此,在本方案中,将该序号的tcpack向服务器连续转发三次,触发服务器快速重传。

基于签署实施例相同的技术构思,参考图6,其示出了本发明实施例提供的一种传输控制协议在网络拥塞时的处理装置,所述装置包括:判定单元101、缓存单元102、转发单元103、ack处理单元104,其中:

判定单元101,用于判定统计周期内相关报文数是否达到门限值,并且在满足条件时开启所述拥塞缓解功能,按照预设策略对所述tcp报文进行处理,进入缓存单元102;

缓存单元102,用于复制缓存服务器下发数据报文剥掉ip头的部分,并构造ack向服务器确认,之后实施转发单元103;

转发单元103,用于将服务器下发数据缓存之后向用户转发出去;

ack处理单元104,在收到用户发送的ack报文时,删除所述ack序号对应的数据报文及之前的数据报文并释放所述ack;当收到重传指示时,查找所述数据报文并封装后发往用户。

进一步地,判定单元101,用于判定网络是否拥塞,在所有报文类型统计值大于阙值st且tcp统计值与所有报文类型统计值比值大于阙值rt时,开启网络拥塞缓解功能,按照预设策略对所述tcp报文进行处理,进入处理模块。

进一步地,缓存单元102,具体用于:

根据tcp数据所属链路,将数据剥掉ip头的部分复制缓存至处理模块的缓存区;

向服务器主动回复ack确认;

将所述已缓存的tcp数据报文通过统一的发送接口原封不动向用户转发出去,同时开启该数据报文超时定时器;

可以理解地,tcp数据在缓存区是按链路来分别缓存的;需要进行缓存的是tcp数据剥掉ip头的部分;缓存需按序缓存,方便后续重传时查找对应序号数据报文。缓存单元带来的优势是提前向服务器确认,提升数据流量;缓存数据,可在需要重传时节省时间。

进一步地,转发单元103,是对原流程的延续,用原流程接口在数据复制缓存后将数据报文原样转发给用户。

进一步地,ack处理单元104,是对上行ack的处理单元,具体用于:

判定上行报文是否为tcpack,如果是进入ack处理单元;

解析ack报文,获取所属链接及序号;以及,

判断当前ack序号与上一次ack确认序号是否相等:

当前ack序号与上一次序号不相等,查找小于该序号的缓存数据并删除,释放该ack;或者

当前ack序号与上次序号相等,判断该序号统计值是否大于等于三次,如果大于等于三次,进行重传;小于三次,查找小于该序号的缓存数据并删除,释放该ack。

进一步地,ack处理单元104,具体用于:

当收到三次及以上同一序号ack时,需要重传,重传包括:

在链路所属缓存区进行查找对应序号的数据报文,如果找到对应序号数据报文,对该数据报文封装ip头后进行重传;或者

在所属链路对应缓存区中找不到对应序号的数据报文,需要请求服务器进行重传,这就要满足服务器重传条件,即向服务器连续发送三次请求序号的ack,触发服务器快速重传;

进一步地,处理模块收到同一序号的ack报文未达到三次,但超时定时超时时,处理模块主动重传超时的数据报文。

可以理解地,从节省时间角度,优先考虑触发服务器快速重传,不提倡超时重传;

在定时器规定的时间内没有触发服务器的快速重传,那么将由超时定时器来触发超时重传,重传数据进入各处理单元进行与首次下发数据同样的处理。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1