背景技术
随着互联网产业的迅速发展,历经了ISP和ICP的多次考验之后,众多的网络运营商和互联网企业纷纷把数据中心看作是互联网产业的又一个经济增长点。
全球范围的经济危机已经波及到多个行业领域,然而互联网行业却出现逆势增长,据艾瑞最新资料显示去年互联网行业的增长超过50%,GDP的增长率超过10%。在经济危机的大环境下,互联网行业却能继续保持良好的增长态势,成为带领IDC走出低谷的主力军。
现在互联网迎来了空前的发展机遇,中国已经拥有近3亿的网民群体,这就给了互联网提供非常广泛的空间,加上现在网络基础服务商提供的服务越来越人性化,通过如功能性虚拟主机等一些列产品的推出,极大的降低了互联网行业的技术门槛,已经使互联网成为最容易实现创业梦想的平台。目前这个行业已经出现了网站、网络游戏、软件等多种创业模式,有越来越多的人,从传统实体进入到网络行业谋求新的发展机遇,这其中也不乏史玉柱巨人网络等成功的典范。
在互联网行业中,网络游戏(简称网游)是目前最火、最挣钱的业务。如图1所示,为网络游戏的运行网络的结构示意图。
网络游戏作为一种特殊的应用,在流量模型方面有其独特的要求。具体来说就是:
1、报文数量较多,小型报文占绝大多数,流量不大。
2、对网络的延迟非常敏感。
如图2所示,为网络游戏的流量模型示意图。
由于网络游戏的流量模型有其特殊性,所以从网络设计的层面上来说,如何保证网络游戏的报文传输质量就非常重要。
但在实际应用环境中,网络上充斥着大量的其他流量(例如:下载)。这些流量会抢占大量的带宽,妨碍网络游戏报文的快速转发,严重影响网络游戏的服务质量。
如图3所示,为下载流量占用带宽的示意图。
为了解决上述业务矛盾,现有的解决思路在于:既然网络游戏的绝大多数报文都是小型报文,而且这些小型报文对于时延要求非常高。那么,对于网络设备而言,尤其是对于带宽资源不足的路由器而言,就必须能够对网络游戏的小型报文优先调度、优先转发,才能保证网络游戏的服务质量。
根据上述解决思路,现有的技术方案主要是:基于IP地址和端口号的ACL识别技术。
ACL(Access Control List,访问控制列表)是用来实现流识别功能的。网络设备为了过滤报文,需要配置一系列的匹配规则,以识别出特定的报文,然后根据预先设定的策略允许或禁止该报文通过。
ACL通过一系列的匹配条件对报文进行分类,这些条件可以是报文的源地址、目的地址、端口号等。
由ACL定义的报文匹配规则,可以被其它需要对流量进行区分的场合引用,如QoS中流分类规则的定义,从而实现指定报文的优先调度。
在实现本发明的过程中,申请人发现现有技术至少存在以下问题:
通过ACL识别小型报文数据流并优先调度存在严重的不足:
只有数据中心和网吧的维护人员才有可能知道小型报文数据流IP地址和端口号的特征。如果数据中心和网吧的IP地址规划的好的话,可以在出口的路由器上通过ACL指定小型报文数据流。但是在ISP的网络中,这些小型报文数据流是不能识别的,也就说不上优先调度。这样小型报文数据流的传输质量就会严重受损。
通过ACL配置静态的IP/端口号识别特征,容易遭到攻击。固定的IP地址和端口号很容易伪造。配置了ACL的路由器收到伪造小型报文攻击时,很容易瘫痪或是被攻击流量占用了全部的带宽资源。
发明内容
本发明提供一种TCP数据流的调度方法和设备,基于小型报文数据流会话管理的技术来智能的识别小型报文数据流,并实现小型报文优先调度的要求,可以在全网的路由器上智能的识别小型报文数据流,同时避免受到攻击,进而也可以根据本发明的技术思路对任意特定的报文类型进行优先调度。
为达到上述目的,本发明一方面提供了一种传输控制协议TCP数据流的调度方法,应用于包括至少一个终端设备、一个路由器和至少一个服务器的网络系统中,所述路由器根据报文的大小,将所述终端设备与所述服务器之间传输的TCP数据流中的报文分为多个类型,第一类型的报文的大小小于等于预设的第一门限值,其他类型的报文的大小依次增大,所述路由器为所述终端设备与所述服务器之间传输的每条TCP数据流配置优先级参数,所述方法包括:
所述路由器识别所述终端设备与所述服务器之间传输的每条TCP数据流在两个方向上的报文的大小,并根据报文的大小确定其对应的报文类型;
所述路由器根据所述TCP数据流在两个方向上的报文类型,按照预设的优先级设定策略,实时地调整每条TCP数据流所对应的所述优先级参数;
所述路由器优先调度当前的优先级参数最大的至少一条TCP数据流。
优选的,所述TCP数据流中报文的类型的检测方式,具体包括:
对TCP数据流中的各个报文逐一进行报文类型检测;或,
对TCP数据流中的报文做抽样,对抽样所得的报文进行报文类型检测;或,
对TCP数据流中的报文进行分组,并检查报文组是否全部为第一类报文。
优选的,所述实时地调整每条TCP数据流所对应的所述优先级参数,具体包括:
当检测到第一类型的报文时,通过调整所述优先级参数增加所述TCP数据流的优先级;
当检测到其他类型的报文时,通过调整所述优先级参数降低所述TCP数据流的优先级。
优选的,所述路由器根据所述TCP数据流在两个方向上的报文类型,按照预设的优先级设定策略,实时地调整每条TCP数据流所对应的所述优先级参数,具体为:
当所述路由器识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为第一类型的报文时,所述路由器增大所述优先级参数;
当所述路由器识别一条TCP数据流在一个会话周期中的一个方向上所包含的报文为第一类型的报文,另一个方向上所包含的报文为其他类型的报文时,所述路由器减小所述优先级参数,其中,所述其他类型的报文与所述第一类型的报文的类型差距越大,所述路由器所减小的所述优先级参数的值越大;
当所述路由器识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为其他类型的报文时,所述路由器减小所述优先级参数,其中,所述路由器所减小的所述优先级参数的值大于或等于所述其他类型的报文对应的所述路由器所减小的所述优先级参数的值。
优选的,所述路由器优先调度当前的优先级参数最大的至少一条TCP数据流,具体为:
根据所述第一类型的报文的大小和所述路由器上为包含所述第一类型的报文的TCP数据流的资源数量,所述路由器所确定的能够保证的TCP数据流的最大数量。
优选的,所述路由器优先调度当前的优先级参数最大的至少一条TCP数据流,还包括:
当优先级参数不为零的所述TCP数据流数量小于所述路由器所确定的能够保证的TCP数据流的最大数量时,所述路由器优先调度当前的优先级参数不为零的所述TCP数据流;
当优先级参数不为零的所述TCP数据流数量大于所述路由器所确定的能够保证的TCP数据流的最大数量时,所述路由器优先调度当前的优先级参数最大的所述TCP数据流。
优选的,所述路由器为所述终端设备与所述服务器之间传输的每条TCP数据流配置优先级参数,具体为:
所述路由器为所述终端设备与所述服务器之间进行双向传输的每条TCP数据流配置会话管理信息,所述会话管理信息包括所述TCP数据流的优先级参数和所述TCP数据流的转发信息。
另一方面,本发明还提供了一种路由器,应用于包括至少一个终端设备、一个路由器和至少一个服务器的网络系统中,具体包括:
设置模块,用于根据报文的大小,将所述终端设备与所述服务器之间传输的TCP数据流中的报文分为多个类型,其中,第一类型的报文的大小小于等于预设的第一门限值,其他类型的报文的大小依次增大,并设置优先级设定策略;
识别模块,与所述设置模块相连接,用于根据所述设置模块所划分的报文类型,识别所述终端设备与所述服务器之间传输的每条TCP数据流在两个方向上的报文的大小,并根据报文的大小确定其对应的报文类型;
优先级管理模块,与所述设置模块和所述识别模块相连接,用于为所述终端设备与所述服务器之间传输的每条TCP数据流配置优先级参数,并根据所述识别模块所识别的所述TCP数据流在两个方向上的报文类型,按照所述设置模块所设置的优先级设定策略,实时地调整每条TCP数据流所对应的优先级参数;
调度模块,与所述优先级管理模块相连接,用于优先调度所述优先级管理模块所记录的当前的优先级参数最大的至少一条TCP数据流。
优选的,所述优先级管理模块根据所述识别模块的识别结果,按照所述设置模块所设置的优先级设定策略,实时的调整每条TCP数据流所对应的优先级参数,具体为:
当所述识别模块识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为第一类型的报文时,所述优先级管理模块增大所述优先级参数;
当所述识别模块识别一条TCP数据流在一个会话周期中的一个方向上所包含的报文为第一类型的报文,另一个方向上所包含的报文为其他类型的报文时,所述优先级管理模块减小所述优先级参数,其中,所述其他类型的报文与所述第一类型的报文的类型差距越大,所述优先级管理模块所减小的所述优先级参数的值越大;
当所述识别模块识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为其他类型的报文时,所述优先级管理模块减小所述优先级参数,其中,所述优先级管理模块所减小的所述优先级参数的值大于或等于所述其他类型的报文对应的所述优先级管理模块所减小的所述优先级参数的值。
优选的,优先调度所述优先级管理模块所记录的当前的优先级参数最大的TCP数据流的数量,具体为:
根据所述第一类型的报文的大小和所述路由器上为包含所述第一类型的报文的TCP数据流的资源数量,所述调度模块所确定的能够保证的TCP数据流的最大数量。
其中,当优先级参数不为零的所述TCP数据流数量小于所述路由器所确定的能够保证的TCP数据流的最大数量时,所述调度模块优先调度当前的优先级参数不为零的所述TCP数据流;
当优先级参数不为零的所述TCP数据流数量大于所述路由器所确定的能够保证的TCP数据流的最大数量时,所述调度模块优先调度当前的优先级参数最大的所述TCP数据流。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以在数据中心、网吧和ISP等场景下的路由器上启用指定TCP数据流的优先转发功能,可以智能的识别相应的TCP数据流,同时,还可以避免遭受伪造TCP数据流的攻击,也不会导致其他数据流得不到调度而出现异常。
具体实施方式
如背景技术所述,现有的ACL识别小型报文数据流存在的不足,主要是ISP路由器无法定义小型报文数据流IP和端口号特征以及容易遭到攻击的问题。
本法说明提出了一种基于小型报文数据流会话管理的技术来智能的识别小型报文数据流并实现小型报文优先调度的要求,可以在全网的路由器上智能的识别小型报文数据流,同时避免受到攻击。基于这样的技术思路,对于其他类型的制定TCP数据流,同样可以进行优先调度。
基于上述思想,本发明提供了一种TCP数据流的调度方法,应用于包括至少一个终端设备、一个路由器和至少一个服务器的网络系统中,路由器根据报文的大小,将终端设备与服务器之间传输的TCP数据流中的报文分为多个类型,其中,第一类型的报文为网络系统中需要优先传输的报文,其他类型的报文的大小与第一类型的报文的大小的差距依次增大,路由器为终端设备与服务器之间传输的每条TCP数据流配置优先级参数。
其中,路由器为终端设备与服务器之间传输的每条TCP数据流配置优先级参数,具体为路由器为终端设备与服务器之间进行双向传输的每条TCP数据流配置会话管理信息,会话管理信息包括TCP数据流的优先级参数和TCP数据流的转发信息。
进一步的,需要说明的是,上述对于报文类型的划分,可以根据需要进行调整,类型数量的变化并不会影响本发明的保护范围。
相对于现有技术中的缺陷,需要解决的是小包,也就是小型报文的数据流的优先调度,但是,本发明的保护范围不仅限于此,可以对上述类型划分之后的任意一种类型的报文的数据流进行优先调度,优先调度的数据流中所对应的报文类型的变化并不影响本发明的保护范围。
并且,报文类型的划分依据可以根据具体环境进行调整,各类型的报文之间的差别也可以根据实际需要进行调整,这样的变化同样属于本发明的保护范围。
如图4所示,本发明提供的一种TCP数据流的调度方法具体包括以下步骤:
步骤S401、路由器识别终端设备与服务器之间传输的每条TCP数据流在两个方向上的报文的大小,并根据报文的大小确定其对应的报文类型。
在实际的应用场景中,TCP数据流中报文的类型的具体检测方式包括以下几种方式:
对TCP数据流中的各个报文逐一进行报文类型检测;或,
对TCP数据流中的报文做抽样,对抽样所得的报文进行报文类型检测;或,
对TCP数据流中的报文进行分组,并检查报文组是否全部为第一类报文。
上述的方式仅是本发明的技术方案基于系统中具体的检测速度和检测精度的需求而做出的形式上的调整,具体采用上述那种检测方式并不影响本发明的保护范围。
步骤S402、路由器根据TCP数据流在两个方向上的报文类型,按照预设的优先级设定策略,实时的调整每条TCP数据流所对应的优先级参数。
在本步骤的调整过程中,具体包括以下两种调整策略:
策略一、当检测到第一类型的报文时,通过调整优先级参数增加相应TCP数据流的优先级;
当检测到其他类型的报文时,通过调整优先级参数降低相应TCP数据流的优先级。
策略二、当路由器识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为第一类型的报文时,路由器增大优先级参数;
当路由器识别一条TCP数据流在一个会话周期中的一个方向上所包含的报文为第一类型的报文,另一个方向上所包含的报文为其他类型的报文时,路由器减小优先级参数,其中,其他类型的报文与第一类型的报文的类型差距越大,路由器所减小的优先级参数的值越大;
当路由器识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为其他类型的报文时,路由器减小优先级参数,其中,路由器所减小的优先级参数的值大于或等于其他类型的报文对应的路由器所减小的优先级参数的值。
其中,需要指出的是,路由器减小优先级参数的最小值为零。
如果一条TCP数据流所对应的优先级参数为零,则该TCP数据流将不再参与优先调度。
需要指出的是,上述的两种策略均可以达到本发明的技术效果,只是根据具体系统设定而做出的调整,具体采用哪种策略,并不影响本发明的保护范围。
步骤S403、路由器优先调度当前的优先级参数最大的至少一条TCP数据流。
其中,路由器优先调度当前的优先级参数最大的TCP数据流的数量,具体为根据第一类型的报文的大小和路由器上为包含第一类型的报文的TCP数据流的资源数量,路由器所确定的能够保证的TCP数据流的最大数量。
需要指出的是,当优先级参数不为零的TCP数据流数量小于路由器所确定的能够保证的TCP数据流的最大数量时,路由器优先调度当前的优先级参数不为零的TCP数据流;
当优先级参数不为零的TCP数据流数量大于路由器所确定的能够保证的TCP数据流的最大数量时,路由器优先调度当前的优先级参数最大的TCP数据流。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以在数据中心、网吧和ISP等场景下的路由器上启用指定TCP数据流的优先转发功能,可以智能的识别相应的TCP数据流,同时,还可以避免遭受伪造TCP数据流的攻击,也不会导致其他数据流得不到调度而出现异常。
上述对本发明技术方案的描述,是针对任意类型的TCP数据流进行优先调度的流程,针对现有技术的缺陷,本发明的技术方案可以具体到对小型报文数据流的优先调度,那么,对于这种情况,本发明的技术思路在于:
首先,将报文按大小进行分级管理,例如,可以分为大中小三级。
然后,通过在路由器的会话管理中为正常转发的小型报文数据流配置优先级参数。优先级参数最高的N条数据流可以得到优先调度,优先转发。其他的流都按照正常流程进行转发。
需要说明的是:这里说的小型报文优先转发指的都是TCP的小型报文,对于UDP或是ICMP的小型报文没有优先转发的必要性。
相应的,结合具体的应用场景,如图5所示,对本发明的技术方案实现流程进行说明如下:
步骤S501、路由器将报文按照大小进行分级管理。
例如,划分为三种类型的报文,具体为确定小型报文(简称小包)的大小为64~100字节,确定中型报文(简称中包)的大小为100~1000字节,确定大型报文(简称大包)的大小为1000~1500字节。
需要指出的是,这里的报文大小的划分标准并不唯一,类型种类的数量,各类型中报文所对应的大小区间可以根据实际场景的需要进行灵活定制。
步骤S502、根据报文类型划分规则,确定路由器可优先调度的小型报文数据流的最大数量N。
为防御伪造小型报文攻击,同时也为了保证其他流量的正常调度,需要在路由器上为小型报文数据流定义最大占用带宽范围。
例如,确定路由器上可以用于优先调度小型报文数据流的带宽的大小为YMbps。
由于TCP数据流的最大响应时间是200ms,所以,TCP数据流的单向传输时间为100ms,那么,为了便于计算,如果对上述的小型报文按照100字节计算,那么,每条小型报文数据流的流量计算如下:
100*8/0.1/1024=7.8Kbps
因此,路由器可以保证的小型报文数据流的最大数量为:
N=Y*1024/7.8
步骤S503、路由器为各条TCP数据流配置优先级参数。
路由器在转发报文的过程中,会为正常转发的数据流(指包含一来一回的双向数据流)建立一条完整的会话管理信息,该会话管理信息中包括了这条数据流的五元组信息及其他转发相关的信息。
如果这条流是TCP数据流,则可以在会话管理中为这条流增加一个信息项,即优先级参数。
步骤S504、路由器识别TCP数据流的报文类型,并根据报文类型的识别结果进行优先级参数的调整。
对于一条已经建立起会话信息的TCP数据流而言,如果成功完成一次TCP数据的交互,则需要通过报文头的字长信息识别其双向的大小级别。
如果一条TCP数据流的两个传输方向都是小型报文,则对该TCP数据流的优先级参数加1;
如果一条TCP数据流的一个传输方向是小型报文,而另一个传输方向是中型报文,则对该TCP数据流的优先级参数减1;
如果一条TCP数据流的一个传输方向是小型报文,而另一个传输方向是大型报文,则对该TCP数据流的优先级参数减2;
在上述优先级参数的调整过程中,优先级参数的最小值是0,即如果优先级参数减小到0之后,即使按照上述规则仍需要对优先级参数进行减小时,也不会再继续减小,而是保持0不变。
步骤S505、路由器对当前的优先级参数最大的N条TCP数据流进行优先调度。
在具体的应用场景中,优先级参数是0的数据流不能参加优先调度。
路由器对所有TCP数据流所对应的优先级参数进行排序,对于其中优先级参数最大的N条TCP数据流进行优先调度。
其中的N值为前述步骤S502中所确定的路由器可优先调度的小型报文数据流的最大数量N。
通过这样的限定,可以防止由于优先调度的TCP数据流过多而占用系统资源过多的情况出现,从而,避免其他数据流或者业务没有足够的系统资源而被影响。
同时,也可以防止出现大量伪造的小型报文所对应的TCP数据流占用系统资源而形成的攻击,提高系统的安全性。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以在数据中心、网吧和ISP等场景下的路由器上启用指定TCP数据流的优先转发功能,可以智能的识别相应的TCP数据流,同时,还可以避免遭受伪造TCP数据流的攻击,也不会导致其他数据流得不到调度而出现异常。
为了实现上述的技术方案,本发明还提供了一种路由器,应用于包括至少一个终端设备、一个路由器和至少一个服务器的网络系统中。
如图6所示,为本发明所提供的一种路由器的结构示意图,该路由器具体包括:
设置模块61,用于根据报文的大小,将终端设备与服务器之间传输的TCP数据流中的报文分为多个类型,其中,第一类型的报文的大小小于等于预设的第一门限值,其他类型的报文的大小依次增大,并设置优先级设定策略;
识别模块62,与设置模块61相连接,用于根据设置模块61所划分的报文类型,识别终端设备与服务器之间传输的每条TCP数据流在两个方向上的报文的大小,并根据报文的大小确定其对应的报文类型;
优先级管理模块63,与设置模块61和识别模块62相连接,用于为终端设备与服务器之间传输的每条TCP数据流配置优先级参数,并根据识别模块62所识别的TCP数据流在两个方向上的报文类型,按照设置模块61所设置的优先级设定策略,实时的调整每条TCP数据流所对应的优先级参数;
调度模块64,与优先级管理模块63相连接,用于优先调度优先级管理模块63所记录的当前的优先级参数最大的至少一条TCP数据流。
在具体的应用场景中,优先级管理模块63根据识别模块62的识别结果,按照设置模块61所设置的优先级设定策略,实时的调整每条TCP数据流所对应的优先级参数,具体为:
当识别模块62识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为第一类型的报文时,优先级管理模块63增大优先级参数;
当识别模块62识别一条TCP数据流在一个会话周期中的一个方向上所包含的报文为第一类型的报文,另一个方向上所包含的报文为其他类型的报文时,优先级管理模块63减小优先级参数,其中,其他类型的报文与第一类型的报文的类型差距越大,优先级管理模块63所减小的优先级参数的值越大;
当识别模块62识别一条TCP数据流在一个会话周期中的两个方向上所包含的报文均为其他类型的报文时,优先级管理模块63减小优先级参数,其中,优先级管理模块63所减小的优先级参数的值大于或等于其他类型的报文对应的优先级管理模块63所减小的优先级参数的值。
其中,优先级管理模块63减小优先级参数的最小值为零。
需要指出的是,优先调度优先级管理模块63所记录的当前的优先级参数最大的TCP数据流的数量,具体为:
根据第一类型的报文的大小和路由器上为包含第一类型的报文的TCP数据流的资源数量,调度模块64所确定的能够保证的TCP数据流的最大数量。
其中,当优先级参数不为零的TCP数据流数量小于路由器所确定的能够保证的TCP数据流的最大数量时,调度模块64优先调度当前的优先级参数不为零的TCP数据流;
当优先级参数不为零的TCP数据流数量大于所述路由器所确定的能够保证的TCP数据流的最大数量时,调度模块64优先调度当前的优先级参数最大的所述TCP数据流。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以在数据中心、网吧和ISP等场景下的路由器上启用指定TCP数据流的优先转发功能,可以智能的识别相应的TCP数据流,同时,还可以避免遭受伪造TCP数据流的攻击,也不会导致其他数据流得不到调度而出现异常。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。