一种协议分流方法、系统及路由器与流程

文档序号:11279190阅读:445来源:国知局
一种协议分流方法、系统及路由器与流程

本发明涉及网络数据传输领域,特别涉及一种应用层协议分流方法,还涉及一种路由器,还涉及一种协议分流系统。



背景技术:

目前,通过传输层中的tcp(transmissioncontrolprotocol)传输控制协议来建立端与端之间的连接,保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。协议分流指的是在多线环境下数据包可以根据指定协议在指定线路进行传输,其中,协议分流中的协议指的是应用层协议。

现有技术中,协议分流不准的原因就在于,tcp协议的前三个报文是不携带应用层数据,从而无法进行深度报文识别,也就无法判断应用层协议类型,无法根据应用层协议的类型进行准确分流,最终不同的数据包并没有按照所属的应用层协议类型进行网络线路分配,造成了用户带宽资源的浪费、网络线路分配不均衡以及网络速度慢的问题。

因此,如何及时又准确的进行协议分流是本领域技术人员急需要解决的技术问题。



技术实现要素:

有鉴于此,本发明提供了一种协议分流方法,及时并有效的提高了协议分流的准确性,进而解决了用户带宽资源的浪费、网络线路分配不均衡以及网络速度慢的问题。

为实现上述目的,本发明提供了一种协议分流方法,应用于路由器,包括:

建立与客户端的连接;

对所述客户端发送的数据包进行应用层协议类型的识别;

根据已识别的所述应用层协议类型给所述数据包分配网络线路。

可选的,在上述协议分流方法中,对所述数据包进行应用层协议识别包括:

通过dpi检测或dfi检测进行应用层协议识别。

可选的,在上述协议分流方法中,建立与客户端的连接之后,还包括:

当所述客户端超时发送或者未发送所述数据包时,动态调整所述路由器发送报文至服务器的报文发送时间。

可选的,在上述协议分流方法中,建立与客户端的连接包括:

在与所述客户端三次握手阶段,通告所述客户端不予支持无法转换的tcp,,并对所述无法转换的tcp选项进行过滤。

可选的,在上述协议分流方法中,根据已识别的所述应用层协议类型给所述数据包分配网络线路之后,还包括:

与所述服务器建立tcp连接时,将待用tcp选项转换为所述服务器支持的tcp选项。

可选的,在上述协议分流方法中,根据已识别的所述应用层协议类型给所述数据包分配网络线路之后,还包括:

若无法与服务器连接时,则保存所述服务器的ip地址,并将所述服务器的ip地址标识为无效地址。

本发明还提供一种路由器,包括:

连接模块,用于建立与客户端的连接;

协议识别模块,用于对所述客户端发送的数据包进行应用层协议类型的识别;

线路选择模块,用于根据已识别的所述应用层协议类型给所述数据包分配网络线路。

可选的,在上述路由器中,所述协议识别模块包括:

dpi检测单元,用于利用dpi检测方法检测所述数据包的所述应用层协议的类型;

和/或dfi检测单元,用于利用dfi检测方法检测所述数据包的所述应用层协议的类型。

可选的,在上述路由器中,还包括:

时间调整模块,用于当所述客户端超时发送或者未发送所述数据包时,动态调整所述路由器发送报文至服务器的报文发送时间。

可选的,在上述路由器中,还包括:

过滤模块,用于在与所述客户端三次握手阶段,通告所述客户端不予支持无法转换的tcp,并对所述无法转换的tcp选项进行过滤。

可选的,在上述路由器中,还包括:

转换模块,用于与所述服务器建立tcp连接时,将待用tcp选项转换为所述服务器支持的tcp选项。

可选的,在上述路由器中,还包括:

缓存模块,用于若无法与服务器连接时,则保存所述服务器的ip地址,并将所述服务器的ip地址标识为无效地址。

本发明还提供一种协议分流系统,包括如上述任一项所述的路由器。

本发明采用上述技术方案,具有如下优点:本方案中,路由器首先建立与客户端的连接,之后对客户端发送的数据包进行应用层协议类型的识别之后,再根据已识别的应用层协议类型选择相应的网络线路,之后将数据包按照已识别的应用层协议类型均衡分配至接入的网络线路,将所述数据包转发至服务器,实现了不同应用层协议类型的数据包按照不同的线路传输,解决了使用网络线路不均衡以及网络速度慢的问题,避免了用户带宽资源的浪费。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1为本发明实施例提供的一种协议分流方法流程示意图;

图2为本发明实施例提供的一种路由器结构示意图;

图3为本发明实施例提供的一种协议分流系统的示意图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

基于synproxy的数据传输是指先在客户端与路由器之间进行预连接,然后路由器与服务器进行实际连接,双向连接建立好之后,由路由器转发来自客户端或者服务器的数据包。在传输数据包之前,客户端与路由器之间,以及路由器与服务器之间建立tcp连接,具体通过三次握手实现,具体的,客户端发送syn(seq=x)报文给路由器,进入syn_send状态;路由器端收到syn报文,回应一个syn(seq=y)ack(ack=x+1)报文,进入syn_recv状态;客户端收到路由器的syn报文,回应一个ack(ack=y+1)报文,进入确定状态,三次握手完成,客户端和路由器成功建立预连接,之后客户端将数据包发送至路由器中,再由路由器转发至对应的服务器即可。

现有技术中,客户端与路由器之间建立tcp连接时进行的三次握手阶段中,以上的三个报文syn(seq=x)syn、(seq=y)ack(ack=x+1)、ack(ack=y+1)中并没有携带任何应用层数据,导致路由器无法对客户端发送的数据包进行应用层协议类型的识别,也就无法根据应用层协议的类型进行准确分流,最终导致不同的数据包并没有按照所属的应用层协议类型进行网络线路分配,造成了用户带宽资源的浪费、网络线路分配不均衡以及网络速度慢的问题。

为了实现分别对不同数据包进行应用层协议类型的识别的目的,本发明基于synproxy的数据传输,提供了一种协议分流方法,应用于路由器001,如图1所示,图1为本发明实施例提供的一种协议分流方法流程示意图,该方法包括:

步骤s100:建立与客户端002的连接。

具体的,路由器001建立与客户端002之间的tcp连接,具体通过三次握手实现,客户端002发送syn(seq=x)报文给路由器001,进入syn_send状态;路由器001收到syn报文,回应一个syn(seq=y)ack(ack=x+1)报文,进入syn_recv状态;客户端002收到路由器001的syn报文,回应一个ack(ack=y+1)报文,进入确认连接状态,三次握手完成,tcp客户端002和路由器001成功建立连接。

步骤s200:对所述客户端002发送的数据包进行应用层协议类型的识别。

其中,客户端002和路由器001成功建立连接之后,客户端002发送数据包至路由器001,路由器001对数据包进行应用层协议类型的识别,识别的应用层协议的类型包括电子邮件类协议、视频类协议、p2p协议、流媒体协议以及网络游戏协议等,均在本发明的考虑范围内。

根据不同的应用层协议特征选择合适的一种协议识别方法或者几种协议识别方法的组合,例如,可根据目的端口的端口号来识别应用层协议,或者根据负载内容识别应用层协议,或者通过识别控制流,根据控制流的协议通过特定的应用层网关进行的关联分析来识别应用层协议,或者dfi深度流检测识别技术或者dpi深度数据包检测技术进行应用层协议识别等,凡是涉及应用层协议识别的各种方法均在保护范围内。

此外,具体的协议识别过程,请参考现有技术,在此不再赘述。

步骤s300:根据已识别的所述应用层协议类型给所述数据包分配网络线路。

其中,路由器001根据已识别的应用层协议类型为对应的数据包寻找一条最佳网络线路,网络线路可为多线环境,例如,多个wan(广域网)口线路组合环境,如联通和电信的双线组合、光纤和adsl拨号线路组合、adsl拨号线路组合等,均在保护范围内。例如,如果用户在使用对上行网速有要求的应用(例im、工作应用等)时,可分配光纤渠道,如果用户在使用对上行网速要求不高的应用(如迅雷、音乐等),可分配adsl渠道。

本发明以上实施例提出了一种协议分流方法,客户端002与服务器003之间并没有按照默认线路传输数据包,而是路由器001首先建立与客户端002的连接,对客户端002发送的数据包进行应用层协议类型识别之后,再根据已识别的应用层协议类型选择相应的网络线路,之后将数据包按照已识别的应用层协议类型均衡分配至接入的网络线路,将所述数据包转发至服务器003,实现了不同应用层协议类型的数据包按照不同的线路传输,解决了使用网络线路不均衡以及网络速度慢的问题,避免了用户带宽资源的浪费。

进一步的,在上述协议分流方法的基础上,对所述数据包进行应用层协议识别包括:

通过dpi检测或dfi检测进行应用层协议识别。

其中,dpi检测或dfi检测针对不同的网络应用层载荷进行深度检测,提识别的准确率,例如,可通过识别精确的特征字符串可以达到较准确的识别效果。

在上述实施例的基础上,建立与客户端002的连接之后,还包括:

当所述客户端002超时发送或者未发送所述数据包时,动态调整所述路由器001发送报文至服务器003的报文发送时间。

其中,当客户端002和路由器001建立连接后,路由器001需要等待客户端002发送携带7层数据的报文,但某些协议来说,可能是服务器003先发报文,因此使用定时器记录路由器001的等待时间,一旦超时,即使客户端002没有发送数据,路由器001也要将缓存在客户端002的报文转发出至服务器003。为了更好的控制所述路由器001发送报文至服务器003的报文发送时间,本发明对报文发送时间根据不同的场景进行了动态调整,避免报文发送时间过长或者过短,提升了用户体验,优化了协议分流效果。

在上述实施例的基础上,建立与客户端002的连接包括:

在与所述客户端002三次握手阶段,通告所述客户端002不予支持无法转换的tcp,并对所述无法转换的tcp选项进行过滤。

其中,建立tcp连接时,路由器001会协商选用哪一个tcp选项,如果客户端002以及服务器003都支持的tcp选项,则可以使用,如至少一方不支持,则不能使用。

无法转换的tcp选项是指至少有一方不支持,而且也无法转换成双方均支持的tcp选项。在与所述客户端002三次握手阶段,由路由器001对于无法转换的tcp选项,直接通告客户端002不予支持,并且对无法转换的tcp选项进行过滤,目的是为了避免路由器001与服务器003连接失败。对于剩下的可以转换的tcp选项,均可以通过转换操作将其转换为双方均支持的tcp选项,提高路由器001的转发效率。

在上述实施例的基础上,根据已识别的所述应用层协议类型给所述数据包分配网络线路之后,还包括:

与所述服务器建立tcp连接时,将待用tcp选项转换为所述服务器支持的tcp选项。

在本实施方式中,待用tcp选项为客户端002与服务器003至少有一方不支持,但是可以进行转换的tcp选项。为了与服务器003连接,路由器001对待用tcp选项进行转换,如windowsscale选项。当客户端002连接路由器001时,路由器001总是通知客户端002支持ws,当路由器001连接服务器003时,如果服务器003通告不支持,则路由器001会将双向的窗口自动按照ws转换。

在本实施例中,路由器001过滤无法转换的选项,剩余可转换的选项,以便于尽快筛选出能够转换的选项,建立路由器001与服务器003的有效连接,提高数据传输效率。

在上述实施例的基础上,根据已识别的所述应用层协议类型给所述数据包分配网络线路之后,还包括:

若无法与服务器003连接时,则保存所述服务器003的ip地址,并将所述服务器003的ip地址标识为无效地址。

其中,路由器001根据已识别的所述应用层协议类型给所述数据包分配网络线路之后,建立与服务器003的连接,然后将数据传输至服务器003。然而,某些客户端002如游戏客户端002,其对应的服务器003不止一个,可能有很多。当路由器001与第一个服务器003连接失败后,则会尝试与下一个服务器003连接。在本发明中,基于synproxy的连接,客户端002和路由器001总是能创建成功,但路由器001连接服务器003却不能保证每一次的连接都是成功的,为了通知客户端002这个连接有问题,路由器001会主动发送rst给客户端002中断连接,导致建立连接的效率低。

为了简化流程,提高建立连接的效率,提升数据传输速度,在本实施例中,若无法与服务器003连接时,则保存所述服务器003的ip地址,并将所述服务器003的ip地址标识为无效地址。下一次路由器001与服务器003建立连接时,对于无效地址的服务器003,取消启用synproxy连接,而是将客户端002与服务器003直接连接,同时去掉缓存的无效地址。对路由器001和服务器003之间的连接进行监控,如果出现大量无效地址的服务器003,说明用户网络出现问题,动态临时关闭synproxy连接,直到网络恢复。

此外,针对某些客户端002只是尝试连接服务端,连通后并不真正发送数据,直接关闭的情况。基于synproxy连接的协议分流,可以实现一个简单tcp状态机,可以处理tcp连接到关闭的状态变迁。

基于上述协议分流方法,本发明实施例还提供了一种路由器001,如图2所示,图2为本发明实施例提供的一种路由器001结构示意图,所述路由器001,包括:

连接模块11,用于建立与客户端002的连接;

协议识别模块12,用于对所述客户端002发送的数据包进行应用层协议识别;

路线选择模块13,用于根据已识别的所述应用层协议类型给所述数据包分配网络线路。

进一步的,在上述路由器001的基础上,所述协议识别模块12包括:

dpi检测单元,用于利用dpi检测方法检测所述数据包的所述应用层协议的类型;

和/或dfi检测单元,用于利用dfi检测方法检测所述数据包的所述应用层协议的类型。

其中,把dpi检测技术或者dfi检测技术直接置于路由器001内,相对现有技术,无需在普通路由器001在连接dpi检测装置或者dfi检测装置,降低了投入成本。

进一步的,在上述路由器001中,还包括:

时间调整模块,用于当所述客户端002超时发送或者未发送所述数据包时,动态调整所述路由器001发送报文至服务器003的报文发送时间。

进一步的,在上述路由器001中,还包括:

过滤模块,用于在与所述客户端002三次握手阶段,通告所述客户端002不予支持无法转换的tcp,并对所述无法转换的tcp选项进行过滤。

进一步的,在上述路由器001中,还包括:

转换模块,用于与所述服务器003建立tcp连接时,将待用tcp选项转换为所述服务器003支持的tcp选项。

进一步的,在上述路由器001中,还包括:

缓存模块,用于若无法与服务器003连接时,则保存所述服务器003的ip地址,并将所述服务器003的ip地址标识为无效地址。

基于上述协议分流方法,本发明实施例还提供了一种协议分流系统,如图3所示,图3为本发明实施例提供的一种协议分流系统结构示意图。

协议分流系统包括客户端002、服务器003以及上述任一实施例提供的路由器001。

其中,协议分流系统中的客户端002用于建立与所述路由器001的连接,并向所述路由器001发送数据包;路由器001用于建立与客户端002的连接,对所述客户端002发送的数据包进行应用层协议类型的识别,根据已识别的应用层协议类型选择所述数据包的网络线路,最后,按照所述网络线路传输所述数据包至服务器003,以及上述实施例中包括的其它功能和作用;服务器003用于接收路由器001发送的数据包。

需要指出的是,服务器003可以为云端服务器或者本地服务器,均在保护范围内。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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