一种多链路负载分担和选路的方法和路由器转让专利

申请号 : CN201010000794.3

文献号 : CN101729427A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘雄威

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种多链路负载分担和选路的方法:网关路由器上同时存在多条等价路由,网关路由器转发报文之前对报文进行复制,分别使用不同的路由进行转发,根据回复报文的到达延时情况记录最优转发路由,后续相应连接报文使用该最优转发路由进行转发。本发明中,网关路由器能够获知每条上行链路流量转发延时情况,可根据该延时情况动态调整流量转发,不需要预先设置上行链路带宽比例。

权利要求 :

1.一种多链路负载分担和选路的方法,应用于内部网络用户通过网关路由器访问外网服务器的系统中,所述网关路由器和服务器之间包括至少两条链路,其特征在于,所述方法包括以下步骤:所述网关路由器接收用户向所述外网服务器发送的报文;

所述网关路由器查找预先设置的转发记录表,如果所述转发记录表中有所述报文对应的记录表项且优选路由标识不为0,则按照所述记录表项向所述外网服务器转发所述报文;

如果所述转发记录表中没有所述报文对应的记录表项,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发,并将所述报文信息更新到所述转发记录表中;

如果所述转发记录表中有所述报文对应的记录表项,但优选路由标识为0,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;

所述网关路由器确定所述外网服务器最先回复的报文使用的链路为最优转发路由。

2.如权利要求1所述的方法,其特征在于,所述网关路由器查找预先设置的转发记录表,之前还包括:建立转发记录表,记录接收报文索引、流特征信息、出接口和优选路由标识。

3.如权利要求2所述的方法,其特征在于,所述流特征信息为源地址、源端口、目的地址、目的端口和协议号;所述出接口为实际出接口和备选出接口。

4.如权利要求2所述的方法,其特征在于,所述网关路由器确定所述外网服务器最先回复的报文使用的链路为最优转发路由,具体包括:所述网关路由器接收所述外网服务器的回复报文,读取所述报文的流特征信息;

将所述流特征信息进行HASH运算,得到所述回复报文的索引;

查找所述转发记录表中与所述索引对应的转发表项中的优选路由标识,如果为0,则将所述回复报文的入接口记录到所述转发表项,并设置所述优选路由标识为1,根据所述回复报文的报文内容进行HASH运算,得到HASH值并填入表项中的HASH字段,同时将所述回复报文转发给用户;

如果优选路由标识小于上行转发链路数但不为0,根据所述所述回复报文的报文内容进行HASH云端,得到HASH值,与表项中已存储的HASH值进行比较,如果相等,将对应的优选路由标识的值加1,并且将所述回复报文丢弃;如果不相等,将所述回复报文直接向用户转发;

如果优选路由标识的值等于上行转发链路数,直接向用户转发所述回复报文;

其中,如果在预设的时间范围内让没有接收到所有的回复报文,则将当前的优选路由标识设置为上行转发链路数。

5.如权利要求4所述的方法,其特征在于,所述网关路由器具有网络地址转换功能,向外网转发报文之前将用户目的地址和用户目的端口转换为公网的目的地址和公网的目的端口;

所述网关路由器接收所述外网服务器的回复报文之后、读取所述报文的流特征信息之前,还包括:经过网络地址转换,将公网目的地址和公网目的端口转换为用户的目的地址和目的端口。

6.如权利要求2所述的方法,其特征在于,所述建立转发记录表,之后还包括:为每个转发记录表项设置老化定时器,当所述老化定时器超时后,转发记录表项自动删除。

7.一种网关路由器,应用于内部网络用户通过网关路由器访问外网服务器的系统中,所述网关路由器和服务器之间包括至少两条链路,其特征在于,所述网关路由器包括:接收模块,用于接收用户向所述外网服务器发送的报文,接收所述外网服务器的回复报文;

查找模块,与所述接收模块连接,用于查找预先设置的转发记录表,如果所述转发记录表中有所述报文对应的记录表项且优选路由标识不为0,则按照所述记录表项向所述外网服务器转发所述报文;

如果所述转发记录表中没有所述报文对应的记录表项,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;

如果所述转发记录表中有所述报文对应的记录表项,但优选路由标识为0,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;

路由确定模块,与所述接收模块连接,用于确定所述外网服务器最先回复的报文使用的链路为最优转发路由。

8.如权利要求7所述的网关路由器,其特征在于,还包括:

转发记录表设置模块,与所述查找模块连接,用于建立转发记录表,记录接收报文索引、流特征信息、出接口及优选路由标识,并在所述查找模块没有查找到所述报文对应的记录表项时,将所述报文的信息更新到所述转发记录表中。

9.如权利要求8所述的网关路由器,其特征在于,还包括:

更新模块,与所述转发记录表设置模块连接,用于为每个转发记录表项设置老化定时器,当所述老化定时器超时后,转发记录表项自动删除。

10.如权利要求7所述的网关路由器,其特征在于,所述路由确定模块具体包括:读取子模块,用于读取所述接收模块所接收到的所述外网服务器的回复报文中的流特征信息;

计算子模块,与所述读取子模块连接,用于将所述读取子模块所读取的流特征信息进行HASH运算,得到所述回复报文的索引;

查找子模块,与所述计算子模块连接,用于查找所述转发记录表中与所述索引对应的转发表项中的优选路由标识,如果为0,则将所述回复报文的入接口记录到所述转发表项,并设置所述优选路由标识为1,根据所述回复报文的报文内容进行HASH运算,得到HASH值并填入表项中的HASH字段,同时将所述回复报文转发给用户;如果优选路由标识小于上行转发链路数但不为0,根据所述所述回复报文的报文内容进行HASH云端,得到HASH值,与表项中已存储的HASH值进行比较,如果相等,将优选路由标识的值加1,并且将所述回复报文丢弃;如果不相等,将所述回复报文直接向用户转发;如果优选路由标识的值等于上行转发链路数,直接向用户转发所述回复报文;其中,如果在预设的时间范围内让没有接收到所有的回复报文,则将当前的优选路由标识设置为上行转发链路数。

11.如权利要求10所述的网关路由器,其特征在于,所述网关路由器具有网路地址转换功能,向外网转发报文之前将用户目的地址和用户目的端口转换为公网的目的地址和公网的目的端口;

所述接收模块,还用于接收所述外网服务器的回复报文之后经过网络地址转换,将目的地址和目的端口转换为用户的地址和端口。

说明书 :

技术领域

本发明涉及通信技术领域,尤其涉及一种多链路负载分担和选路的方法和路由器。

背景技术

在中小企业组网中,出口网关路由器占有不可或缺的地位,对企业内部访问Internet的流量进行NAT(Network Address Translation,网络地址转换)、Firewall(防火墙)过滤等业务功能。同时由于企业网关路由器处于网络位置的末端,相对与核心路由器关注的功能特性也有所不同:企业网关路由器组网比较简单,一般为1条或者多条上行链路接入Internet,不需要运行OSPF(Open Shortest Path First,开放式最短路径优先)、ISIS(分级链接状态路由协议)、RIP(Routing information Protocol,路由信息协议)等动态路由协议与运营商接入路由器交换路由信息,一般配置静态路由或策略路由就可满足需求。对于单条上行链路的组网,一般在网关路由器配置静态默认路由即可满足应用;对于采用多条上行链路的组网中,并且每条上行链路的带宽并不相同的情况下,就需要涉及到流量负载分担的问题。
目前负载分担的技术一般为:基于接口带宽的负载分担、基于源地址的负载分担和基于目的地址的负载分。
其中,基于接口带宽的负载分担如图1所示,一般是对于每条上行链路配置一条静态默认路由或者策略路由,设置每条上行链路的带宽比例,对于内网访问Internet的流量,网关路由器按照设置的比例对每个报文或者每条数据流(通常用一个5元组来标识一条数据流:源IP地址、源端口号、目的IP地址、目的端口号、协议号)使用不同的上行链路进行转发,如图1组网中,WAN(Wide Area Network,广域网)1和WAN2的接口带宽比例为1∶2,网关路由器对于内网的转发流量会按照1∶2的比例使用不同WAN接口进行转发,如表1所示:
表1:
  数据流   源地址:源端口   目的地址:目的端口   出接口   Flow1   192.168.1.3:5000   200.1.1.1:80   WAN1   Flow2   192.168.1.2:5000   200.1.1.1:80   WAN2   Flow3   192.168.1.3:6000   200.1.1.1:2023   WAN2
其中,基于源地址的负载分担,与基于接口带宽负载分担类似,也需要设置每条上行链路的带宽比例,不同之处是基于报文的源地址进行负载分担,对于同样源地址的IP报文使用同一条上行链路转发,不同源地址的IP报文或数据流按接口带宽的比例从不同链路上进行转发,这种分担方式也称为基于用户的负载分担;
基于源地址的负载分担,同样需要为每条上行链路配置一条静态路由或者策略路由,定义每条上行链路的带宽比例,对于同一源地址的流量使用同一上行链路转发,不同源地址的流量按照带宽比例使用不同的上行链路转发,如图2组网中,WAN1和WAN2的接口带宽比例为1∶2,网关对外的转发流量会按照1∶2的比例使用不同WAN接口进行转发,如表2所示:
表2:
  数据流   源地址   目的地址:目的端口   出接口   Flow1   192.168.1.3   200.1.1.1:80   WAN1   Flow2   192.168.1.4   200.1.1.1:80   WAN2   Flow3   192.168.1.5   200.1.1.1:2023   WAN2
其中,基于目的地址的负载分担,需要在网关路由器上配置特定目的地址的静态路由或策略路由,使访问这些特定地址的流量从指定的链路转发。基于目的地址的负载分担,需要根据业务需求,在路由器上定义多条到不同目的地址的静态路由或者策略路由,使访问这些地址的流量从指定的链路转发,如表3所示:
表3:
  数据流   源地址   目的地址:目的端口   出接口   Flow1   192.168.1.3   200.1.1.1:80   WAN1   Flow2   192.168.1.4   200.1.1.1:80   WAN1   Flow3   192.168.1.5   200.1.1.1:2023   WAN2
上述三种负载分担技术都是在网关路由器上根据上行链路带宽的情况,预先定义好分担方式,报文或者数据流根据预先的定义,按比例使用不同的上行链路转发。无法感知上行链路带宽实际占用情况,且带宽比例设置固定,无法根据上行链路的实际带宽利用情况进行动态调整。

发明内容

本发明提供了一种多链路负载分担和选路的方法和路由器,以实现动态调整流量转发。
本发明提供了一种多链路负载分担和选路的方法,应用于内部网络用户通过网关路由器访问外网服务器的系统中,所述网关路由器和服务器之间包括至少两条链路,所述方法包括以下步骤:
所述网关路由器接收用户向所述外网服务器发送的报文;
所述网关路由器查找预先设置的转发记录表,如果所述转发记录表中有所述报文对应的记录表项且优选路由标识不为0,则按照所述记录表项向所述外网服务器转发所述报文;
如果所述转发记录表中没有所述报文对应的记录表项,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发,并将所述报文信息更新到所述转发记录表中;
如果所述转发记录表中有所述报文对应的记录表项,但优选路由标识为0,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;
所述网关路由器确定所述外网服务器最先回复的报文使用的链路为最优转发路由。
优选地,所述网关路由器查找预先设置的转发记录表,之前还包括:
建立转发记录表,记录接收报文索引、流特征信息、出接口和优选路由标识。
优选地,所述流特征信息为源地址、源端口、目的地址、目的端口和协议号;所述出接口为实际出接口和备选出接口。
优选地,所述网关路由器确定所述外网服务器最先回复的报文使用的链路为最优转发路由,具体包括:
所述网关路由器接收所述外网服务器的回复报文,读取所述报文的流特征信息;
将所述流特征信息进行HASH运算,得到所述回复报文的索引;
查找所述转发记录表中与所述索引对应的转发表项中的优选路由标识,如果为0,则将所述回复报文的入接口记录到所述转发表项,并设置所述优选路由标识为1,根据所述回复报文的报文内容进行HASH运算,得到HASH值并填入表项中的HASH字段,同时将所述回复报文转发给用户;
如果优选路由标识小于上行转发链路数但不为0,根据所述所述回复报文的报文内容进行HASH云端,得到HASH值,与表项中已存储的HASH值进行比较,如果相等,将优选路由标识的值加1,并且将所述回复报文丢弃;如果不相等,将所述回复报文直接向用户转发;
如果优选路由标识的值等于上行转发链路数,直接向用户转发所述回复报文;
其中,如果在预设的时间范围内让没有接收到所有的回复报文,则将当前的优选路由标识设置为上行转发链路数。
优选地,所述网关路由器具有网络地址转换功能,向外网转发报文之前将用户目的地址和用户目的端口转换为公网的目的地址和公网的目的端口;
所述网关路由器接收所述外网服务器的回复报文之后、读取所述报文的流特征信息之前,还包括:
经过网络地址转换,将公网目的地址和公网目的端口转换为用户的目的地址和目的端口。
优选地,还包括:
为每个转发记录表项设置老化定时器,当所述老化定时器超时后,转发记录表项自动删除。
本发明提供了一种网关路由器,应用于内部网络用户通过网关路由器访问外网服务器的系统中,所述网关路由器和服务器之间包括至少两条链路,所述网关路由器包括:
接收模块,用于接收用户向所述外网服务器发送的报文,接收所述外网服务器的回复报文;
查找模块,与所述接收模块连接,用于查找预先设置的转发记录表,如果所述转发记录表中有所述报文对应的记录表项且优选路由标识不为0,则按照所述记录表项向所述外网服务器转发所述报文;
如果所述转发记录表中没有所述报文对应的记录表项,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;
如果所述转发记录表中有所述报文对应的记录表项,但优选路由标识为0,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;
路由确定模块,与所述接收模块连接,用于确定所述外网服务器最先回复的报文使用的链路为最优转发路由。
优选地,还包括:
转发记录表设置模块,与所述查找模块连接,用于建立转发记录表,记录接收报文索引、流特征信息、出接口和优选路由标识,并在所述查找模块没有查找到所述报文对应的记录表项时,将所述报文的信息更新到所述转发记录表中。
优选地,所述网关路由器,还包括:
更新模块,与所述转发记录表设置模块连接,用于为每个转发记录表项设置老化定时器,当所述老化定时器超时后,转发记录表项自动删除。
优选地,所述接收模块还用于接收所述外网服务器的回复报文,所述路由确定模块具体包括:
读取子模块,用于读取所述接收模块所接收到的所述外网服务器的回复报文中的流特征信息;
计算子模块,与所述读取子模块连接,用于将所述读取子模块所读取的流特征信息进行HASH运算,得到所述回复报文的索引;
查找子模块,与所述计算子模块连接,用于查找所述转发记录表中与所述索引对应的转发表项中的优选路由标识,如果为0,则将所述回复报文的入接口记录到所述转发表项,并设置所述优选路由标识为1,根据所述回复报文的报文内容进行HASH运算,得到HASH值并填入表项中的HASH字段,同时将所述回复报文转发给用户;如果优选路由标识小于上行转发链路数但不为0,根据所述所述回复报文的报文内容进行HASH云端,得到HASH值,与表项中已存储的HASH值进行比较,如果相等,将优选路由标识的值加1,并且将所述回复报文丢弃;如果不相等,将所述回复报文直接向用户转发;如果优选路由标识的值等于上行转发链路数,直接向用户转发所述回复报文;其中,如果在预设的时间范围内让没有接收到所有的回复报文,则将当前的优选路由标识设置为上行转发链路数。
优选地,所述网关路由器具有网路地址转换功能,向外网转发报文之前将用户目的地址和用户目的端口转换为公网的目的地址和公网的目的端口;
所述读取子模块,还用于接收所述外网服务器的回复报文之后经过网络地址转换,将目的地址和目的端口转换为用户的地址和端口。
优选地,还包括:
更新模块,与所述转发记录表设置模块连接,用于为每个转发记录表项设置老化定时器,当所述老化定时器超时后,转发记录表项自动删除。
与现有技术相比,本发明具有以下优点:
本发明中,网关路由器能够获知每条上行链路流量转发延时情况,可根据该延时情况动态调整流量转发,不需要预先设置上行链路带宽比例。

附图说明

图1是现有技术中基于接口带宽的负载分担示意图;
图2是现有技术中基于源地址的负载分担示意图;
图3是本发明中一种多链路负载分担和选路的方法流程图;
图4是本发明中两条上行链路的网关路由器网络示意图;
图5是本发明中上行方向报文转发流程图;
图6是本发明中下行方向报文转发流程图;
图7是本发明中一种网关路由器结构图。

具体实施方式

本发明的核心思想为:网关路由器上同时存在多条等价路由,网关路由器首次转发报文之前对报文进行复制,分别使用不同的路由进行转发,根据回复报文的到达延时情况记录最优转发路由,网关路由器转发后续相应报文时使用该最优转发路由。
本发明提供了一种多链路负载分担和选路的方法,应用于内部网络用户通过网关路由器访问外网服务器的系统中,所述网关路由器和服务器之间包括至少两条链路,网关路由器预先建立转发记录表,记录接收报文索引、源地址、源端口、目的地址、目的端口、协议号、实际出接口、备选出接口及优选路由标识。所述方法如图3所示,包括以下步骤:
步骤301,所述网关路由器接收用户向所述外网服务器发送的报文;
步骤302,所述网关路由器查找预先设置的转发记录表,如果所述转发记录表中有所述报文对应的记录表项且优选路由标识不为0,则转步骤303;如果所述转发记录表中没有所述报文对应的记录表项,则转步骤304;如果所述转发记录表中有所述报文对应的记录表项,但优选路由标识为0,则转步骤305;
步骤303,按照所述记录表项向所述外网服务器转发所述报文;
步骤304,根据默认路由匹配结果,将所述报文复制为与链路数对应的份数。具体为:根据所述报文的目的IP地址在路由表中进行匹配查找,获得匹配的默认路由,如果匹配的默认路由有多条,则将所述报文复制为与所述默认路由对应的链路数对应的份数。然后分别使用所述不同默认路由对应的链路向所述外网服务器转发,并将所述报文信息更新到所述转发记录表中;转步骤306;
步骤305,根据默认路由匹配结果,将所述报文复制为与链路数对应的份数。具体为:根据所述报文的目的IP地址在路由表中进行匹配查找,获得匹配的默认路由,如果匹配的默认路由有多条,则将所述报文复制为与所述默认路由对应的链路数对应的份数,分别使用所述不同默认路由对应的链路向所述外网服务器转发;转步骤306;
步骤306,所述网关路由器确定所述外网服务器最先回复的报文使用的链路为最优转发路由。具体包括:所述网关路由器接收所述外网服务器的回复报文,读取所述报文的流特征信息;将所述流特征信息进行HASH运算,得到所述回复报文的索引;查找所述转发记录表中与所述索引对应的转发表项中的优选路由标识,如果为0,则将所述回复报文的入接口记录到所述转发表项,并设置所述优选路由标识为1,,根据该回复报文的报文内容进行HASH运算,得到HASH值并填入表项中的HASH字段,同时将所述回复报文转发给用户;如果优选路由标识小于上行转发链路数但不为0,根据所述所述回复报文的报文内容进行HASH云端,得到HASH值,与表项中已存储的HASH值进行比较,如果相等,将优选路由标识的值加1,并且将所述回复报文丢弃;如果不相等,将所述回复报文直接向用户转发;如果优选路由标识的值等于上行转发链路数,直接向用户转发所述回复报文;其中,如果在预设的时间范围内让没有接收到所有的回复报文,则将当前的优选路由标识设置为上行转发链路数。
进一步,所述网关路由器如果具有网络地址转换功能,还可以对回复报文进行网络地址转换,将公网目的地址和公网目的端口转换为用户的目的地址和目的端口,然后再进行流特征信息的HASH运算及后续操作。
本发明中,为了适应网络流量的动态变化,避免出现一旦表项建立后无法再次更新的情况,本发明中还可以为每个转发记录表项创建一个老化定时器,当该定时器超时后,转发记录表项自动删除,后续报文重新使用上述流程转发。
结合上述原理,以连接两条上行链路的网关路由器为例进行说明,结构如图4所示。每条上行链路通常对应一条默认路由,该条默认路由的下一跳为外网网关地址,该外网网关可以将报文分发到具体的外网服务器。网关路由器上预先定义如下转发记录表,记录流量相关的转发信息如表4所示:
表4:
 Index   SIP   SPort   DIP   DPort   Protocol   OutInter   S-OutInter1   S-OutInter2   Flag   HASH
其中,Index为表项的索引,可以根据报文五元组进行串连,然后进行HASH计算获得,计算公式如下:HASH(SIP:Sport:DIP:Dport:Protocol);SIP,为报文的源地址;Sport为报文的源端口;DIP为报文的目的地址;Dport为报文的目的端口;Protocol为报文的协议号;OutInter为报文转发的实际出接口;S-OutInterl为报文转发的备选出接口1;S-OutInter2为报文转发的备选出接口2(备选出接口表项数可根据实际组网中的应用进行扩展);HASH为使用连接回复的第一个报文进行计算的HASH值;Flag为转发记录表中的优选路由标识,默认为0。
在上行方向,报文转发流程如图5所示,包括以下步骤:
步骤501,初始条件下,该转发记录表为空,企业内部网络用户进行访问外网服务器的操作,网关路由器接收到用户向外网服务器发送的建立连接的TCP SYN报文,报文特征如下:SIP=192.168.1.2,Sport=2000,DIP=202.30.1.20,Port=80,Protocol=6;
步骤502,网关路由器根据报文的目的地址判断该报文是否可以使用默认路由进行转发,如果是,转步骤503;
步骤503,获取报文中的五元组信息,并进行如下HASH运算:
HASH(DIP:Dport:SIP:Sport:Protocol),得到该报文在转发记录表中的Index;
步骤504,查找转发记录表,判断是否存在与所述索引匹配的记录表项,如果未找到该报文对应的记录表项,转步骤505;如果找到该报文对应的记录表项,则转步骤507;
步骤505,根据所述报文的目的IP地址在路由表中进行匹配查找,例如,将报文的目的地址和路由表进行匹配查找,获得匹配的默认路由,并在转发记录表中增加该报文对应的记录表项;如表5所示:
表5:
 Index   SIP   SPort   DIP   DPort   Protocol   OutInter   S-OutInt  er1   S-OutInter2   Flag   HASH   423   192.1  68.1.2   2000   202.30.  1.20   80   6   WAN1   WAN2   0   0
步骤506,匹配的默认路由有多条(例如两条),在记录表项中存在两个出接口,则对报文进行复制分别通过不同的默认路由对应的上行链路进行转发,既将复制后的报文分别通过不同上行链路对应的出接口转发;复制后的报文经过出接口NAT处理(如果不存在公私网地址转换的情况,不需要进行NAT处理),分别经过两条上行链路向外网服务器转发;
步骤507,判断转发记录表是否已存在Flag并且Flag不为0,如果是,则转步骤508,否则,转步骤506;
步骤508,直接将该报文按照转发记录表中OutInter表项记录的WAN接口信息进行转发。
在下行方向,报文转发流程如图6所示,包括以下步骤:
步骤601,网关路由器接收从外网服务器返回的回复报文;如果WAN1连接的上行链路带宽利用率低,网络转发延时小,则从WAN1发送报文会先于从WAN2发送的报文到达外网服务器,并且从外网服务器返回的回复报文会先到达WAN1(由于两个WAN接口均启用NAT,因此外网服务器会认为两个复制的报文是两个不同的连接,然后分别进行回复)。如果网关路由器不经过NAT时,则外网服务器会认为该两个复制的报文是两个相同的连接,根据外网服务器的设置,可以向网关路由器回复一个报文,也可以向网关路由器回复两个报文。
步骤602,网关路由器收到此报文后先经过NAT转换地址处理,将目的地址和端口转换为用户的原始地址和端口,然后读取报文的五元组信息,如:
SIP=202.30.1.20,Sport=80,DIP=192.168.1.2,DPort=2000,Protocol=6
将五元组信息进行如下HASH运算:由于发送报文和接收报文的目的地址和源地址相反,这里需要进行顺序调整,保持各元素的计算顺序一致。
HASH(DIP:Dport:SIP:Sport:Protocol),得到该报文在转发记录表中的Index;
步骤603,查找该表项对应的Flag的值,如果为0,则转步骤607;如果Flag的值小于上行转发链路数但不为0,则转步骤604;如果Flag等于上行转发链路数,则转步骤608;
其中,如果经过一段时间后仍然没有收到所有回复报文,则直接将Flag置为上行链路数;
这里的时间设置可以根据需要进行调整,具体时间长度的变化并不会影响本发明的保护范围;
步骤604,说明已经收到回复报文,此时计算收到报文整个报文的HASH值与表项中的HASH值进行比较,如果相等,转步骤605,如果不相等,则转步骤606;
步骤605,说明报文重复,则将Flag值加1,并且将该报文丢弃;
步骤606,将报文直接向用户转发;
步骤607,将报文的进入的WAN接口填入转发记录表中的OutInter项,并设置Flag为1,计算整个报文的HASH值并填入表项中的HASH字段同时将报文转发给用户,此时一条转发记录表项完成建立;
步骤608,说明所有的重复报文已收到,直接向用户转发报文。
网关路由器收到从WAN1回复的报文后更新转发记录表如表6:
表6
  Index   SIP   SPort   DIP   DPort   Protocol   OutInter   S-OutInter1   S-OutInter2   Flag   HASH   423   192.168.1.2   2000   202.30.1.20   80   6   WAN1   WAN1   WAN2   1
之后WAN2收到服务器的回复报文,经过同样的HASH运算找到该报文在转发记录表中的表项,因为该表项Flag已不为0,计算该报文的整个报文的HASH值,因为与表项中的HASH值相同,因此此报文被丢弃,并将Flag值加1,为2,后续从上行链路收到的报文判断Flag为2,等于上行转发链路数,则直接转发。
如果转发记录表项建立后,并且没有从任何一条WAN连接收到回复报文,网关路由器又收到用户发送的重复建立连接报文,则该报文首先经过HASH运算查找转发记录表,找到该表项中的Flag位为0,则报文仍然经过复制,分别通过不同的WAN连接进行转发。
另外,对于只有单向流量的报文,如监控流量等特殊单向UDP(UserDatagram Protocol,用户数据包协议)流量,因为没有回复报文,无法完成转发记录表的建立,因此可以加过滤条件,将此类报文过滤不进行上述负载分担的处理,在此技术中不做深入讨论。
本发明提供了一种网关路由器,应用于内部网络用户通过网关路由器访问外网服务器的系统中,所述网关路由器和服务器之间包括至少两条链路,所述网关路由器如图7所示,包括:
接收模块710,用于接收用户向所述外网服务器发送的报文,还用于接收所述外网服务器的回复报文。
查找模块720,与接收模块710连接,用于查找预先设置的转发记录表,如果所述转发记录表中有所述报文对应的记录表项且优选路由标识不为0,则按照所述记录表项向所述外网服务器转发所述报文;
如果所述转发记录表中没有所述报文对应的记录表项,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;
如果所述转发记录表中有所述报文对应的记录表项,但优选路由标识为0,则根据默认路由匹配结果,将所述报文复制为与链路数对应的份数,分别使用所述不同的链路向所述外网服务器转发;
路由确定模块730,与接收模块710连接,用于确定所述外网服务器最先回复的报文使用的链路为最优转发路由。
路由确定模块730具体包括:
读取子模块731,用于读取所述接收模块710所接收到的所述外网服务器的回复报文,读取所述报文的流特征信息;
计算子模块732,与读取子模块731连接,用于将所述流特征信息进行HASH运算,得到所述回复报文的索引;
查找子模块733,与计算子模块732连接,用于查找所述转发记录表中与所述索引对应的转发表项中的优选路由标识,如果为0,则将所述回复报文的入接口记录到所述转发表项,并设置所述优选路由标识为1,根据所述回复报文的报文内容进行HASH运算,得到HASH值并填入表项中的HASH字段,同时将所述回复报文转发给用户;如果优选路由标识小于上行转发链路数但不为0,根据所述所述回复报文的报文内容进行HASH云端,得到HASH值,与表项中已存储的HASH值进行比较,如果相等,将优选路由标识的值加1,并且将所述回复报文丢弃;如果不相等,将所述回复报文直接向用户转发;如果优选路由标识的值等于上行转发链路数,直接向用户转发所述回复报文;其中,如果在预设的时间范围内让没有接收到所有的回复报文,则将当前的优选路由标识设置为上行转发链路数。
转发记录表设置模块740,与查找模块720连接,用于建立转发记录表,记录接收报文索引、流特征信息、出接口和优选路由标识。其中,流特征信息为源地址、源端口、目的地址、目的端口和协议号;所述出接口为实际出接口和备选出接口,并在所述查找模块没有查找到记录表项时,将所述查找模块所转发的报文信息更新到所述转发记录表中。
更新模块750,与转发记录表设置模块740连接,用于为每个转发记录表项设置老化定时器,当所述老化定时器超时后,转发记录表项自动删除。
在具体的应用场景中,所述网关路由器具有网路地址转换功能时,所述网关路由器具有网路地址转换功能,向外网转发报文之前将用户目的地址和用户目的端口转换为公网的目的地址和公网的目的端口;
接收模块710,还用于接收所述外网服务器的回复报文之后经过网络地址转换,将目的地址和目的端口转换为用户的地址和端口。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。