一种交互式网络流量智能控制系统及其实现方法
技术领域
本发明涉及一种网络流量控制系统,具体是说,是涉及一种能根据实际使用情况自动调整网络带宽的交互式网络流量智能控制系统及其实现方法。
背景技术
目前,人们在上网时大多都会通过网络流量控制器来限制不同主机上网时的流量,以达到优化网络的目的。比较先进的技术是通过在路由器的网络层上设置智能流控模块,并由该智能流控模块对PC机产生的数据流进行应用类型识别,再根据不同类型的数据流占用的网络带宽来调整与分配相应PC机的实际带宽。这类技术有效地克服了常规的固定流控规则方式带来的控制不灵活、带宽分配不合理的问题,在很大程度上提高了网络带宽的利用率。但是,该技术仍然存在以下问题:
一.该技术中的应用识别模块设置于路由器上,当各个PC机的数据流传输至路由器上后,该应用识别模块对所有的数据流进行应用类型识别。由于路由器上同时将存在很多数据流,应用识别模块在对数据流进行应用类型识别之后,难以准确地分辨数据流对应的PC机,进而造成PC机带宽分配不合理的问题。
二.应用识别模块设置于路由器上,因此,当内网对带宽需求较大时,应用类型的识别将会加重路由器的负荷,路由器的负荷过大,必然导致其运转效率降低,进而可能引起网络卡、掉线或系统死机等现象。
无论是PC机带宽分配不合理,还是路由器负荷过大,都会影响网络数据的传输,严重者甚至可能引起网络中断,因此,现有的这种智能流控技术还有待进一步改进。
发明内容
本发明的目的在于克服路由器不能准确识别数据流对应的PC机,以及路由器可能出现负荷过大的问题,提供一种不仅能准确识别数据流对应的PC机,而且有效避免路由器负荷过大导致网络卡、掉线、系统死机等现象的交互式网络流量智能控制系统。
本发明的另一目的是提供该交互式网络流量智能控制系统的实现方法。
为了实现上述目的,本发明采用的技术方案如下:
一种交互式网络流量智能控制系统,包括客户端,通过网络与客户端连接的路由器,以及安装于该路由器上的智能流控模块,所述客户端上还设置有用于对客户端自身的数据流进行应用类型识别的应用识别模块。
为了更好地实现本发明,所述路由器上还设置有用于接收各个客户端的数据流并对其进行分类存储的分类模块。
进一步地说,所述智能流控模块包括根据优先原则将数据流进行转发的数据调度模块、计算各个数据流带宽使用量的带宽使用计算模块、以及对当前带宽进行调整的带宽使用监控模块。
以上述硬件系统为基础,本发明还提供了该交互式网络流量智能控制系统的实现方法,包括以下步骤:
(a)由应用识别模块对其所在的客户端自身产生的数据流进行识别,对不同应用程序的数据流分别打上其相应的应用程序识别码,再将之传输至路由器;
(b)路由器上的分类模块接收到来自各个客户端的数据流之后,将已经打上应用程序识别码的数据流进行分类存储;
(c)数据调度模块对分类后的数据流进行打包、排队,并按照自行设定的优先原则发送相应数据包,同时由带宽使用计算模块对发送的各个数据包的带宽使用量进行计算,得出各个数据包的带宽使用量;
(d)带宽使用监控模块按照预先设定的时间值对特定服务器使用PING检测当前带宽的使用情况,并对当前带宽进行调整。
详细地说,上述交互式网络流量智能控制系统的实现方法中,步骤(c)具体包括以下步骤:(c1)数据调度模块首先给每台主机分配一个队列;(c2)再将已经分类并具有不同应用程序识别码的数据流分配到相应的队列中;(c3)当主机的网卡能发送数据时,该数据调度模块依次从每台主机的队列中找出一个优先级最高的数据包交给网卡发送,并根据该发送的数据包长度消耗该队列的TOKEN,同时计算出每台主机队列每次的TOKEN差值;(c4)判断该TOKEN差值是否小于零?是,则数据调度模块将该主机队列置为不可发送队列;否,则数据调度模块将该主机队列置为可发送队列,进行下一次数据发送;(c5)数据调度模块每隔Δt秒便对不可发送队列的TOKEN差值进行重新计算,并判定该TOKEN差值是否小于零?是,则将该不可发送队列置为可发送队列;否,则重复该步骤。
其中,步骤(c4)和步骤(c5)中所述的TOKEN差值是指该队列上一次发送数据包所需时间与当前发送数据包所需时间的差值,且步骤(c5)中所述的Δt取值为2~10秒。
更详细地说,步骤(d)中所述的预先设定的时间值为2秒,所述的对当前带宽进行调整又具体包括以下步骤:(d1)在系统初始化时,带宽使用计算模块为所连接的每台主机分配100KB/S的带宽;(d2)判断当前带宽使用是否紧张?是,则由带宽使用监控模块将每一台主机的分配带宽压缩为原来的2/3;否,则将每一台主机的分配带宽增长1/4。
步骤(d2)中所述的判断当前带宽使用是否紧张是指带宽使用监控模块根据对特定服务器采用PING检测的结果进行判断,如果该特定服务器的响应时间t≥0.1秒,则判定该当前带宽使用紧张;反之,则判定该当前带宽使用空闲。
所述的特定服务器则是指用户根据环境自主设置的网站、网管或DNS(Domain Name Server,域名服务器)。
与现有技术相比,本发明具有以下优点及有益效果:
(1)本发明将应用识别模块设置于客户端上,对数据流的识别工作完全由各个客户端独立完成,而每个客户端产生的数据流相对较少,因此能够大大提高应用识别模块的识别准确率,并且利用应用程序识别码将数据流与客户端完全对应,有效地避免了识别精度低的问题。通过实验测试,现有的智能流控技术,其路由器对PC机的识别准确率约70%,而采用本发明所述的技术方案,其对PC机的识别准确率将提高至99.9%,由此可见,本发明具有显著的技术进步。
(2)在提高应用识别模块的识别准确率的前提下,路由器能够准确地判断所有客户端的实际带宽需求,从而合理地为每个客户端分配相应的带宽,提高了带宽的有效利用率,进而保证了客户端对带宽的正常需求。
(3)应用识别模块在客户端上完成数据流的识别工作,大大减轻了路由器的工作量,有效地避免了因应用识别模块带来的路由器负荷过大的问题,从而解决了因路由器超负荷而引起的网络卡、掉线、系统死机等问题。经实验测试,随着要求识别的应用对象的增多,在现有的智能流控技术中,路由器的CPU使用率将达到70%80%,而采用本发明所述的技术方案,同等数量、类型的应用识别要求,路由器的CPU使用率并无明显增加。由此也进一步证明,本发明具有显著的技术进步。
(4)应用识别模块安装简单,安装之后即可自动运行,无专业技术要求,易于推广应用。
(5)本发明的应用有效地保证了网络数据流的传输系统的正常运行,降低了故障发生率,从而减少了网络维护人员的维护工作量,降低了维护成本。
附图说明
图1为本发明的系统框图。
图2为本发明的整体流程示意图。
图3为本发明根据优先原则发送数据包的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步地详细说明,但本发明的实施方式并不限于此。
实施例
如图1所示,本发明所述的交互式网络流量智能控制系统,主要包括一个路由器和多个客户端(即PC机),所有的PC机分别通过互联网或局域网与路由器连通。由于本发明的目的在于提高识别数据流对应客户端的准确率,以便对所有PC机带宽按照实际需求进行合理分配,同时避免路由器负荷过大引起网络卡、掉线、系统死机等问题,因此,在所有的PC机上分别设置了应用识别模块,用于对各自PC机产生的数据流进行应用类型的识别;以此为前提,在路由器上设置分类模块和智能流控模块,分类模块主要用于对汇聚到路由器的所有数据流按照应用类型标识进行分类,而智能流控模块则按照预先设定的智能流控策略对数据流进行处理,获取各个的数据流分别占用的带宽,并对相应的PC机进行带宽分配。
为了保证智能流控模块顺利实现其对应的功能,在所述的智能流控模块内集成有能够根据优先原则将数据包进行转发的数据调度模块,用于计算各个数据流带宽使用量的带宽使用计算模块,以及用于对当前带宽进行调整的带宽使用监控模块共同构成。而所述的智能流控策略则是指数据转发的优先原则,以及实现带宽自动检测、调整功能的策略。该智能流控策略由用户根据其实际情况进行自行设定。
如图2所示,本发明实现自动调节PC机带宽的总体步骤如下:
(a)首先由应用识别模块对其所在的PC机产生的数据流进行识别,对不同应用程序的数据流分别打上其相应的应用程序识别码。本发明的应用识别模块能对主流的游戏、关键应用(如WEB访问、POP3、SMTP、QQ等)、P2P视频在线观看及P2P下载等应用类别进行识别,因此,只要当PC机产生的数据流经过该应用识别模块时,该应用识别模块便会自动对各种应用的协议、端口、特征字、流量特征、包大小等特征进行分析和处理,从而获取每一个数据包所属的应用类别,并分别对这些应用类别打上不同标识的应用程序识别码。例如,对游戏类应用程序打上游戏类应用程序识别码,对关键应用类程序打上关键应用类程序识别码等等,而不同应用程序识别码种类和数量的选取则是由用户根据自身环境和需要来进行确定的。在应用识别模块对PC机所产生的数据流打上应用程序识别码之后,将通过网络把带应用程序识别码的数据流传输至路由器。
(b)分类模块接收到来自各个PC机传输过来的数据流之后,将已经打上应用程序识别码的数据流按照类型进行分类存储。即,该分类模块将诸如带游戏类应用程序识别码的应用程序、带关键应用类应用程序识别码的应用程序、带P2P视频在线观看类应用程序识别码的应用程序及带P2P下载应用类应用程序识别码的应用程序分别进行分类,从而将原本杂乱无序的数据流按照要求分类排序出来,形成一个有序的数据队列。同时,该分类模块还将根据数据流的来源或目的地的不同打上不同的标记。
(c)数据调度模块对分类后的数据流进行打包、排队,并根据优先原则将优先级别最高的数据包发送出去,同时由带宽使用计算模块对所发送的各个数据包的带宽使用量进行计算,得出各个数据包的带宽使用量。
(d)带宽使用监控模块按照预先设定的时间值对特定服务器使用PING检测当前带宽的使用情况,并按照数据包的带宽使用量对该数据包对应PC机的当前带宽进行调整,达到合理分配网络带宽、提高带宽利用率的目的。
对于上述步骤(c),其具体流程如图3所示,即包括以下过程:
第一,由数据调度模块给每台主机分配一个队列。即由数据调度模块控制路由器给连接在该路由器上的每台主机预先分配一个用于数据存储的队列。
第二,数据调度模块将已经分类并具有不同应用程序识别码的数据流分配到相应的主机队列中。由于数据调度模块在给连接的每台主机分配队列时,就随机预先确定了相应队列用于存储数据的类型,如预先设定了其中一台主机的队列专用于储存带游戏类应用程序识别码的数据流,一台主机的队列专用于储存带关键应用类应用程序识别码的数据流等等。因此,该数据调度模块便会将带游戏类应用程序识别码的数据流、带关键应用类应用程序识别码的数据流、带P2P视频在线观看类应用程序识别码的数据流及带P2P下载应用类应用程序识别码的数据流分别分配到相应的主机队列中。
第三,当主机的网卡能发送数据时,该数据调度模块则依次从每台主机队列中找出一个优先级最高的数据包交给网卡发送,并根据该发送的数据包长度消耗该队列的TOKEN,同时由带宽使用计算模块计算出TOKEN差值。
队列中数据的优先级别是由用户根据具体使用环境来定义的。所述的优先级别主要是用于判定在网卡能发送数据时,哪些数据需要进行优先转发,哪些数据可以稍后转发。比如在中小企业里,用户使用POP3/SMTP来进行收发邮件的数据即可以标记需要最优先发送的数据,而HTTP协议的数据则次之等等。
所述TOKEN差值是指该主机队列上一次发送数据包所需时间与当前发送数据包所需时间的差值。
第四,数据调度模块判断所得到的TOKEN差值是否小于零?是,则数据调度模块将该主机队列置为不可发送队列;否,则数据调度模块将该主机队列置为可发送队列,进行下一次数据发送。
第五,数据调度模块每隔Δt秒便对不可发送队列的TOKEN差值进行重新计算,并判定该TOKEN差值是否小于零,是,则将该不可发送队列置为可发送队列;否,则重复该步骤,直到所有的数据包发送完毕。在该步骤中,由于TOKEN在接近零时,数据调度模块仍会发送数据,并且会根据发送的数据长度将TOKEN减小到零,此时才会停止发送,因此此时的TOKEN基数小于零,在以后重新发送数据的过程中,则该TOKEN差值便会小于零,以确保该不可发送队列会列置成可发送队列。
由于Δt时间的长短对数据传输有着较大的影响,因此该Δt的时间范围一般在2~10秒之间,如数据调度模块每隔2秒、5秒或10秒便对不可发送队列的TOKEN差值重新进行一个判定。
对于实现本发明的总体步骤(d),其具体的实现过程如下:首先在系统初始化时,带宽使用计算模块为所连接的每台主机分配100KB/S的带宽;然后再由带宽使用监控模块判断当前带宽使用是否紧张?是,则由带宽使用监控模块将每一台主机当前分配的带宽压缩为原来的2/3;否,则将每一台主机当前分配的带宽增长1/4。
在运行中,如果带宽使用监控模块频繁的对特定服务器(诸如典型的网站www.edu.cn、网关、DNS等)使用PING检测,那么势必会浪费系统资源,占用一定带宽,进而影响整个带宽的使用。因此,本发明的带宽使用监控模块在按照预先设定的时间值对特定服务器使用PING检测时,其时间间隔优先为2秒钟,即宽带使用监控模块所按照预先设定的时间值为2秒。
其中,由带宽使用监控模块判断当前带宽使用是否紧张是指带宽使用监控模块对特定服务器采用PING检测的结果进行判断,如果该特定服务器的响应时间t≥0.1秒,则判定该当前带宽使用紧张;否则,便判定该当前带宽使用空闲。
相应的,所述的特定服务器可以由用户根据实际环境来指定,如指定上述的典型网站www.edu.cn、网关、DNS等,也可以指定其余用户需要指定的硬件。
通过以上步骤,本发明便能根据带宽的实际使用情况来自动调整网络带宽的使用,从而确保各种应用程序能很好的完成。
如上所述,便可以很好的实现本发明。