发明内容
本发明要解决的是现有技术中对目的端口号无规律变化的应用无法进行有效的流量控制的问题。
本发明所述基于应用的流量控制方法包括以下步骤:
查找具有第一应用特征序列的报文;
从具有第一应用特征序列的报文中提取出传输特征序列;
对具有所述传输特征序列的报文进行限流。
优选地,所述方法还包括:
查找具有第二应用特征序列的报文;
将具有第二应用特征序列的报文丢弃。
优选地,所述方法还包括:
查找具有第三应用特征序列的报文;
将具有第三应用特征序列的报文正常转发。
优选地,所述对具有传输特征序列的报文进行流量控制具体为:
根据提取的传输特征序列生成访问控制列表ACL规则,控制具有传输特征序列的报文流量;
下发所述生成的ACL规则。
优选地,所述方法还包括:当所述生成的ACL规则超过设定老化时间未被访问时,释放所述生成的ACL规则。
优选地,在下发所述生成的ACL规则之前还包括:为所述生成的ACL规则按照设定命名方式命名,以使其不被写入配置文件中。
优选地,所述应用特征序列至少包括应用特征码,以及源端口号、目的端口号、源互联网协议IP地址和/或目的IP地址;所述应用特征码包括在报文应用层数据中该应用的标识字段;
所述传输特征序列至少包括目的IP地址和/或目的端口号,以及源端口号、源IP地址和/或协议类型号。
本发明提供的另一种基于应用的流量控制方法包括以下步骤:
查找具有第二应用特征序列的报文;
将所述具有第二应用特征序列的报文丢弃。
优选地,所述方法还包括:
查找具有第三应用特征序列的报文;
将所述具有第三应用特征序列的报文正常转发。
本发明提供的一种进行应用流量控制的网络设备,包括流量控制模块、第一应用识别模块和规则生成模块,其中:
流量控制模块根据其存储的流量控制规则对报文流量进行控制;
第一应用识别模块在流量控制模块的输出中识别出具有第一应用特征序列的报文,并正常转发该报文;
规则生成模块根据具有第一应用特征序列的报文中的传输特征序列,生成流量控制规则并写入流量控制模块。
优选地,所述网络设备还包括串接的第二应用识别模块和/或第三应用识别模块,其中:
第二应用识别模块用来识别并丢弃具有第二应用特征序列的报文;
第三应用识别模块用来识别并正常转发具有第三应用特征序列的报文。
优选地,所述网络设备还包括定时模块,与流量控制模块连接,用来对根据传输特征序列生成的流量控制规则的未被使用时间进行计时,计时到时流量控制模块删除对应的流量控制规则。
本发明中通过应用特征序列识别出要进行限流的应用报文,并根据应用报文中的传输特征序列对后续该应用的报文进行限流,从而能够自动适应应用端口号的变化以实现流量控制,保证了网络的带宽;
同时,本发明通过配置用于阻断和用于通行的应用特征序列,能够组合不同程度的流量控制措施,实现灵活的流量管理。
具体实施方式
位于两个网络节点上的应用之间进行通信时,发送方的应用层数据须得通过传输层、网络层、链路层和物理层的封装后才能传送到接收方,而接收方则需要通过物理层、链路层、网络层和传输层的解封装后才能得到应用层数据。
由于同一个节点上的多个应用可能同时接收数据,因而必须有某种方式使得传输层可以将解封装后的应用层数据传递给正确的应用。这种方式通常是将某个应用与某个端口号相关联,传输层根据源端口号来识别应用层数据来源于哪个应用,根据目的端口号来决定将应用层数据传递给哪个应用。因而很多应用层协议都使用固定的端口号,称之为知名端口号,这也是现有技术中根据端口号来进行流量控制的基础。
对于端口号可以随意修改的应用,由发送方应用和接收方应用在进行握手的过程中商定所使用的端口号。在握手过程中,由于端口号还未确定,必须提供另外的机制来对应用进行识别。因传输协议的分层结构使得各层之间具有明确的功能划分,考虑到与下层协议的兼容性,这一机制通常在应用层实现。也就是说,在握手过程中,在应用层数据,即传输层载荷中会有确定的字段来标识这些数据属于哪一个应用,或者根据某个确定的字段及其他信息就可以识别出这些数据属于哪一个应用,这个确定的字段或该字段与其他信息的组合称之为应用特征码,在本发明中即以其作为对应用进行流量控制的基础。
在发送方应用和接收方应用通过传递握手报文完成握手后,双方即采用在握手过程中商定的端口号进行数据报文的交换。因而通常在数据报文的应用层数据中不再包括该应用的应用特征码。但数据报文会采用握手报文中商定的端口号,另外数据报文的目的地址也会和握手报文中相同,此时可以将目的端口号和/或目的地址与其他字段组成传输特征序列,以传输特征序列来识别该应用的数据报文,并对其进行流量控制。
基于应用的流量控制措施有阻断、通行和限流三种。阻断可以通过以应用特征码识别出握手报文并将其丢弃来实现,由于发送方和接收方完不成握手过程,自然不可能进行其后的数据报文传输。通行只要不对握手报文和其后的数据报文进行限制即可。限流允许部分应用的报文传输,在本发明中通过以应用特征码识别出握手报文,再根据握手报文中包括端口号和/或目的地址的传输特征序列来进行流量控制。
如果将应用特征码和报文中的其他特征字段相结合,构成应用特征序列,则可以区别不同情况对应用进行流量控制。例如,将具有某个设定IP地址的包括应用特征码的报文丢弃,可以阻断具有该IP地址的某类应用的流量;将某个目的IP地址、协议类型号和应用特征码配置为限流,则对具有该IP地址和协议类型号的某类应用进行限流。
并且,以上三种流量控制措施可以结合使用。因而,通过结合应用特征码和其他特征字段,以正确的顺序结合不同的阻断、通行和限流措施,本发明可以实现非常灵活的流量控制。
图1所示为本发明所述流量控制方法实施例一的流程。在步骤S010,提取输入报文的传输特征序列。传输特征序列为步骤S070中在要进行限流的应用的握手报文中提取出来,用以识别要进行限流的应用的数据报文,该数据报文中通常不包括应用特征码。
在步骤S020,比较提取出来的传输特征序列与已设置的进行限流的传输特征序列,如果二者匹配,则该报文属于要限流的应用的数据报文,对该报文进行流量限制;如果不匹配,转步骤S030。
在步骤S030,从报文中提取报文的应用特征序列。应用特征序列中应当有应用特征码,还可以包括源端口号、目的端口号、源IP(Internet Protocol,互联网协议)地址和目的IP地址等字段中的一个或多个。在本实施例中,提取的应用特征序列应当包括下面步骤中要进行比较的第一、第二、第三应用特征序列中的所有字段。
在步骤S040,判断提取的应用特征序列是否与第二应用特征序列相匹配,第二应用特征序列中包括预先设置的要进行阻断的应用特征码。如果匹配,该报文为要进行阻断的应用的握手报文,则丢弃该报文;如果不匹配,执行步骤S050。
在步骤S050,判断提取的应用特征序列是否与第三应用特征序列相匹配,第三应用特征序列中包括预先设置的要予以通行的应用特征码。如果匹配,该报文为予以通行的应用的握手报文,则转步骤S080,正常转发该报文;如果不匹配,执行步骤S060。
在步骤S060,判断提取的应用特征序列是否与第一应用特征序列相匹配,第一应用特征序列中包括预先设置的要进行限流的应用特征码。如果匹配,该报文为要进行限流的应用的握手报文,则执行步骤S070;如果不匹配,则转步骤S080,正常转发该报文。
在步骤S070,将该握手报文中的传输特征序列提取出来,增加到进行限流的传输特征序列中。这样,以后该应用的数据报文可以在步骤S020中被识别出来,并被施以限流措施。
传输特征序列中应当包括目的端口号和/或目的地址,此外还可以包括源端口号、源IP地址和协议类型号等字段中的一个或多个。
在步骤S080,正常转发报文。
不难看出,在本实施例中,步骤S010和S020可以转到步骤S070和S080之间,也能够实现同样的效果。但由于通常要限流应用的数据报文比进行流量控制的握手报文在数量上更多,先识别出数据报文并对其进行限流处理后则不再需要判断该报文是否是流量控制应用的握手报文,可以节约处理时间。
同样,在识别握手报文时,先进行对应于哪种控制措施的识别应当根据具体设置的流量控制条件来决定,而并不局限于本实施例以上步骤和图1中的顺序。例如,当流量控制条件为对某一个IP地址开放所有的应用,对某一个应用进行限流,而对其他应用均予以阻断时,则步骤S040至S070的正确顺序为:S050→S060→S070→S040,才能实现以上流量控制条件。并且,在不实施阻断和/或通行的控制措施时,步骤S040和/或S050也可以省略。
在具体实施中,步骤S040至S060中判断报文的应用特征序列是否与设定的应用特征序列相匹配可以通过在网络设备上下发ACL规则来实现。步骤S070可以配置为步骤S060的ACL规则对应的动作,通过对报文进行分析提取出其传输特征序列,再由该传输特征序列自动或手动生成ACL规则。这些生成的ACL对应的动作是对具有传输特征序列的报文进行限流,将这些生成的ACL规则下发后即可实现限流的目的。
为了提高资源的利用效率,可以为这些生成的ACL规则设定老化时间,当某个生成的ACL规则超过该设定老化时间没有被使用时,即删除该生成的ACL规则。
现有的网络设备中通常会将所有下发的ACL规则写入配置文件,这样当该网络设备重新上电时所有的ACL规则仍能自动恢复。在本发明中,通过分析要进行限流的握手报文而生成的ACL规则只在一定时间内起作用,因而不需要将其写入配置文件。可以在下发该生成的ACL规则之前,以有别于其他配置的ACL规则的设定命名方式为其命名,使得系统可以区分出生成的ACL规则,不将其写入配置文件。
本发明中可以采用各种限流模式,以对要限流应用所占用的带宽进行限制。例如流模式、端口模式和端口组模式,流模式即为每条ACL规则对应的应用报文分配一定的带宽;端口模式即此端口下所有的应用报文共享一定的带宽;端口组模式即为指定的一组端口下所有的应用报文共享一定的带宽。
在本发明的实施例一中可以对具有第一应用特征序列的应用进行限流,其实施相对复杂。而在一些简单的网络环境中,可能只需要对某类应用进行粗线条的管理就可以了,此时可以采用本发明实施例二的方法,其步骤如下:
A1.提取报文的应用特征序列;
A2.判断提取的应用特征序列是否与第三应用特征序列相匹配,第三应用特征序列中包括预先设置的要予以通行的应用特征码。如果匹配,该报文为予以通行的应用的握手报文,则转步骤A4;如果不匹配,执行步骤A3;
A3.判断提取的应用特征序列是否与第二应用特征序列相匹配,第二应用特征序列中包括预先设置的要进行阻断的应用特征码。如果匹配,该报文为要进行阻断的应用的握手报文,则丢弃该报文;如果不匹配,执行步骤A4;
A4.正常转发该报文。
与实施例一中相同,步骤A2、A3的顺序可以因具体的流量控制策略的不同而不同,并且,步骤A2是可选的。同时,本实施例中应用特征序列可以包括的内容也与实施例一中相同。
使用本实施例中的方法后,可以阻断和/或通行具有相应应用特征序列的应用,但不能对其进行限流。
图2所示为本发明提供的一种具有流量控制功能的网络设备的结构。该网络设备包括串接的流量控制模块210、第二应用识别模块220、第三应用识别模块230和第一应用识别模块240,规则生成模块250与流量控制模块210和第一应用识别模块240相连接,定时模块260连接到流量控制模块210。
流量控制模块210中存储着流量控制规则,并根据这些流量控制规则对输入的报文进行流量控制。对符合这些流量控制规则的报文或者丢弃,或者予以转发,而将不符合流量控制规则的报文输出至第二应用识别模块220。
第二应用识别模块220中存储着用于阻断的第二应用特征序列,以识别并丢弃具有第二应用特征序列的报文,同时将不具有第二应用特征序列的报文输出至第三应用识别模块230。
第三应用识别模块230中存储着予以通行的第三应用特征序列,以识别出具有第三应用特征序列的报文后将其正常转发,同时将不具有第三应用特征序列的报文输出至第一应用识别模块240。
第一应用识别模块240中存储着进行限流的第一应用特征序列,以识别出具有第一应用特征序列的报文,由规则生成模块250从具有第一应用特征序列的报文中提取出传输特征序列后,第一应用识别模块240正常转发该报文。
规则生成模块250由第一应用识别模块240识别出的具有第一应用特征序列的报文中提取出传输特征序列,根据传输特征序列生成流量控制规则并写入到流量控制模块210中。
需要说明的是,图2中流量控制模块210、第二应用识别模块220、第三应用识别模块230和第一应用识别模块240的串接顺序只反映了一种可能的连接方式,流量控制模块210可以串接在上述三个应用识别模块后面,而上述三个应用识别模块的串接顺序可以根据具体的流量控制策略而变化。
另外,定时模块260用来对流量控制模块210中存储的由规则生成模块250生成的流量控制规则的未经使用时间进行计时,当计时到时流量控制模块210删除对应的流量控制规则。
本发明非常适用于对具有变化端口号的应用进行流量控制,只要通过该应用报文的应用层数据可以识别出应用特征码即可。
以P2P应用中的BT为例,BT握手报文的应用层数据最前面必定是一个数值为十六进制的0x13,也即十进制19的字节,用来表示BT协议名称的长度;这一字节之后是BT协议的名称“BitTorrent protocol”,其长度恰好就是前一个字节的值19。这就是BT握手报文区别于其它所有报文的一个应用层特征信息,即BT业务的应用特征码。
再以P2P应用中电驴为例,其握手报文应用层数据的第一个字节为0xe3,用来标识该应用,在本发明中可以将其作为电驴的应用特征码。为了避免可能出现的非电驴应用报文的第一个字节碰巧也为0xe3的情况,可以进一步采用在0xe3之后四个字节的值来确定该报文是否是电驴的握手报文。电驴的握手报文中该四个字节的值为应用层数据长度,即该报文的IP层报头中的长度字段减去传输层报头长度的值。此时,第一个字节为0xe3并且其后四个字节的值等于IP层报头中的长度字段减去传输层报头长度,即是电驴的应用特征码。
可见,本发明中以应用特征码来识别应用握手报文,通过其中的传输特征序列来进行流量控制,能够随着应用的端口号变化而相应变化流量控制规则,保证了网络的带宽。即使应用的应用特征码发生变化,只要该应用还具有应用特征码,就能够实现对其的流量控制。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。