数据报文快速转发方法及装置转让专利

申请号 : CN201010533945.1

文献号 : CN102469006B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周海兵

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

摘要 :

本发明公开了数据报文快速转发方法及装置。方法包括:在路由设备上配置默认快速转发HASH算法和HASH算法切换条件;路由设备启动,将默认快速转发HASH算法作为当前快速转发HASH算法;路由设备接收数据报文,采用当前快速转发HASH算法对该报文进行转发处理;当路由设备发现当前满足HASH算法切换条件时,开始统计接收到的报文中的各个流特征分量的变化量;统计结束,路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法。本发明降低了快速转发过程中HASH冲突的发生,提高了转发性能。

权利要求 :

1.一种数据报文快速转发方法,其特征在于,在路由设备上配置默认快速转发HASH算法和HASH算法切换条件,该方法包括:路由设备启动,将默认快速转发HASH算法作为当前快速转发HASH算法;

路由设备接收数据报文,采用当前快速转发HASH算法对该报文进行快速转发处理;

当路由设备发现当前满足HASH算法切换条件时,开始统计接收到的报文中的各个流特征分量的变化量;

统计结束,路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法;

所述路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法包括:路由设备在配置的多个快速转发HASH算法中,选择满足各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法,将所选择的HASH算法作为切换后的快速转发HASH算法,其中,预先在路由设备上配置多个快速转发HASH算法,且将其中一个作为默认快速转发HASH算法,且,所述统计结束的同时,路由设备对发生变化的各流特征分量的变化量进行排序。

2.根据权利要求1所述的方法,其特征在于,当路由设备在配置的多个快速转发HASH算法中,选择到多个满足各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法时,路由设备在所选择的多个HASH算法中任选一个作为切换后的快速转发HASH算法;

或者,在所选择的多个HASH算法中,选择满足各流特征分量的权值与统计得到的对应流特征分量的变化量最接近的HASH算法作为切换后的快速转发HASH算法。

3.根据权利要求1所述的方法,其特征在于,当路由设备在配置的多个HASH算法中,未选择到任何满足各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法时,路由设备直接将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法;

或者,路由设备直接将通用HASH算法作为切换后的快速转发HASH算法,所述通用HASH算法为预先配置在路由设备上、用于在路由设备进行HASH算法切换时未选择到HASH算法时所采用的算法。

4.根据权利要求1所述的方法,其特征在于,所述HASH算法切换条件为:每隔预设HASH算法切换时长进行一次HASH算法切换;

或者,在每个预设HASH冲突检测周期内检测发生HASH冲突的次数,且若在一个周期内检测到的HASH冲突次数大于预设HASH冲突阈值时,则确定满足HASH算法切换条件;

或者,当接收到网管输入的HASH算法切换指令时,确定满足HASH算法切换条件。

5.据权利要求1所述的方法,其特征在于,所述路由设备根据得到的各个流特征的变化量,切换当前快速转发HASH算法进一步包括:路由设备根据得到的各个流特征的变化量,确定切换后的快速转发HASH算法,判断确定的HASH算法与当前快速转发HASH算法是否相同,若否,则以确定的HASH算法更新当前快速转发HASH算法,同时,根据更新后的当前快速转发HASH算法更新快速转发表项中各个表项的HASH索引。

6.根据权利要求1所述的方法,其特征在于,所述统计接收到的报文中的各个流特征的变化量包括:为每个流特征分量分别建立一张变化记录表;

在预设统计时长内,当接收到一个报文时,对于该报文的每一个流特征分量执行如下步骤:查询该分量的变化记录表,判断该表中是否已有报文中的该分量值,若是,不作记录;

否则,将报文中的该分量值记录到该分量的变化记录表中;

当预设统计时长到达时,针对每个流特征分量,统计该分量的变化记录表中的记录项数,若该记录项数大于1,则确定该分量发生变化,则计算该分量的记录项数与在该统计时长内接收到的报文总数的比值,该比值即为该分量的变化量;

或者包括:

为每个流特征分量建立一张变化记录表;

且,当接收到一个报文时,对于该报文的每个流特征分量执行如下步骤:

查询该分量的变化记录表,判断该表中是否已有报文中的该分量值,若是,不作处理;

否则,将该报文中的该分量值记录到该分量的变化记录表中;

同时,对接收到的报文进行计数;

当计数值等于预设统计报文数时,针对每个流特征分量,统计该分量的变化记录表中的记录项数,若该记录项数大于1,则确定该分量发生变化,则计算该分量的记录项数与预设报文统计数的比值,该比值即为该分量的变化量。

7.根据权利要求1至6任一所述的方法,其特征在于,所述流特征为五元组。

8.一种数据报文快速转发装置,其特征在于,该装置包括:

快速转发处理模块:启动时,将默认快速转发HASH算法作为当前快速转发HASH算法,采用当前快速转发HASH算法对接收到的数据报文进行快速转发处理;当接收到HASH算法切换模块发来的切换后的快速转发HASH算法时,以该切换后的快速转发HASH算法更新当前快速转发HASH算法;

HASH算法切换模块:当发现当前满足HASH算法切换条件时,开始统计接收到的报文中的各个流特征分量的变化量;统计结束,根据得到的各个流特征分量的变化量,确定切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块;

所述HASH算法切换模块包括:切换触发模块、流特征变化统计模块和切换算法选择模块,其中:切换触发模块:当发现当前满足HASH算法切换条件时,向流特征变化统计模块发送切换指令;

流特征变化统计模块:接收到切换指令,开始统计接收到的报文中的各个流特征分量的变化量,统计结束,将各个流特征分量的变化量发送给切换算法选择模块;

切换算法选择模块:接收各个流特征分量的变化量,对发生变化的各个流特征分量的变化量进行排序,在预先配置的多个HASH算法中,选择满足各流特征分量的权值的排序与发生变化的各个流特征分量的变化量的排序一致的HASH算法,将所选择的HASH算法作为切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块。

9.根据权利要求8所述的装置,其特征在于,所述切换算法选择模块进一步用于,当在预先配置的多个HASH算法中,未选择到任何满足各流特征分量的权值的排序与发生变化的各流特征分量的变化量的排序一致的HASH算法时,直接将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法;或者,直接将通用HASH算法作为切换后的快速转发HASH算法,所述通用HASH算法为预先配置的、用于在进行HASH算法切换时未选择到HASH算法时所采用的算法。

10.根据权利要求8所述的装置,其特征在于,所述快速转发处理模块接收到HASH算法切换模块发来的切换后的快速转发HASH算法时,进一步用于,判断该切换后的快速转发HASH算法与当前快速转发HASH算法是否相同,若是,不作处理;否则,以该切换后的快速转发HASH算法更新当前快速转发HASH算法,同时,根据更新后的当前快速转发HASH算法更新快速转发表项中各个表项的HASH索引。

说明书 :

数据报文快速转发方法及装置

技术领域

[0001] 本发明涉及路由设备转发技术领域,具体涉及数据报文快速转发方法及装置。

背景技术

[0002] 路由器转发性能是衡量路由器性价比的一项关键指标。按照常规转发流程,路由器接收到一个报文后,会根据报文的目的地址在路由表中寻找与之匹配的路由,确定一条最佳路径,然后进行报文转发。因为每个报文都要查路由表,这个过程很耗时,严重影响了路由器转发性能,而实际上因特网上的数据大部分都是基于数据流的,如果能够记录下某条数据流的特征,后续转发通过查找该特征而不是查路由表,则转发效率一定能够大大提升。
[0003] 近年来,数据通信领域提出了快速转发的概念,也就是将数据流特征记录到快速转发表中。快速转发表是一块连续的地址空间,表中的每一条表项对应一条转发数据流。表项的建立是通过数据流第一次通过常规转发流程而建立,一般用一个五元组信息来标识一条数据流,五元组信息是指:源IP地址、源端口号、目的IP地址、目的端口号、协议号。利用报文的五元组信息通过某种哈希(HASH)算法得到一个HASH索引,把出端口信息和五元组信息记录到该HASH索引对应的表项中。当接收到一个报文时,先将报文的五元组信息作为输入,利用与建立快速转发表相同的HASH算法,输出得到一个HASH索引值,用该HASH索引值去查快速转发表,如果查到表项,则根据快速转发表项中记录的出端口直接转发;否则,报文进入常规的转发流程,即根据路由表查到出端口,得到出端口后,根据出端口的链路层协议类型,进行封装转发,完成转发流程。通过使用快速转发表,缩减IP报文的排队流程,缩短报文的平均转发时间,提升路由器的转发性能。
[0004] 快速转发表中不存在待查找的表项的原因有两种:第一、数据流是第一次在路由器上通过,需要新建快速转发表项,此为后续快速转发的基础。第二、待查找的转发表项曾经存在过,但是由于HASH冲突,被新的转发表项覆盖了。HASH冲突是指两个不同的五元组信息计算得到相同的HASH索引值,在同一应用场景下使用不同的HASH算法出现HASH冲突的概率是不同的。
[0005] 现有快速转发技术的缺点为:HASH算法固定,即HASH算法的运算规则、运算参数及各参数的权值一旦确定,不再变化。这会导致:当前使用的HASH算法可能并不是当前流量类型的最优算法。
[0006] 衡量一种HASH算法优劣的重要因素是HASH索引值是否均匀分散到索引表中,如果五元组信息中的某个元素如:源IP地址发生连续变化,则计算得到的HASH索引值也能够较大范围地分散到索引表中,则该HASH算法较好,否则,算法较劣。
[0007] 路由器在实际使用中,所处的使用场景不同,流量类型是不同的,例如:连接到web服务器的路由器的用户侧接口的流量类型是:源IP地址变化很多(对应不同的客户的IP地址),目的IP地址固定(web服务器的IP地址),源端口号和目的端口号都是80,协议号都是HTTP。而网吧出口路由器上行接口的流量类型是:源IP地址固定(为运营商分配的IP地址),目的IP地址变化很多(因为会访问不同的网络服务器),源端口号和目的端口号变化都较大,协议号变化也很大。即,在不同的应用场景五元组信息变化量是不同的,而五元组信息是快速转发机制的依据。当前的快速转发HASH算法是固定的,为了兼顾到五元组信息的综合变化效果,在选择HASH算法时,往往是将所有成员的变化量综合起来考虑,从这一点上来看,当前HASH算法不是针对特定应用场景的最佳算法,那么就不能更好地优化路由器的转发性能。

发明内容

[0008] 本发明提供数据报文快速转发方法及装置,以降低快速转发中HASH冲突的发生,提高转发性能。
[0009] 本发明的技术方案是这样实现的:
[0010] 一种数据报文快速转发方法,在路由设备上配置默认快速转发HASH算法和HASH算法切换条件,该方法包括:
[0011] 路由设备启动,将默认快速转发HASH算法作为当前快速转发HASH算法;
[0012] 路由设备接收数据报文,采用当前快速转发HASH算法对该报文进行快速转发处理;
[0013] 当路由设备发现当前满足HASH算法切换条件时,开始统计接收到的报文中的各个流特征分量的变化量;
[0014] 统计结束,路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法。
[0015] 预先在路由设备上配置多个快速转发HASH算法,且将其中一个作为默认快速转发HASH算法;
[0016] 所述统计结束的同时,路由设备对发生变化的各流特征分量的变化量进行排序;
[0017] 所述路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法包括:
[0018] 路由设备在配置的多个快速转发HASH算法中,选择满足:算法中各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法,将所选择的HASH算法作为切换后的快速转发HASH算法。
[0019] 当路由设备在配置的多个快速转发HASH算法中,选择到多个满足:算法中各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法时,
[0020] 路由设备在所选择的多个HASH算法中任选一个作为切换后的快速转发HASH算法;
[0021] 或者,在所选择的多个HASH算法中,选择满足:算法中各流特征分量的权值与统计得到的对应流特征分量的变化量最接近的HASH算法作为切换后的快速转发HASH算法。
[0022] 当路由设备在配置的多个HASH算法中,未选择到任何满足:算法中各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法时,
[0023] 路由设备直接将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法;
[0024] 或者,路由设备直接将通用HASH算法作为切换后的快速转发HASH算法,所述通用HASH算法为预先配置在路由设备上、用于在路由设备进行HASH算法切换时未选择到HASH算法时所采用的算法。
[0025] 所述路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法包括:
[0026] 路由设备将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法。
[0027] 所述HASH算法切换条件为:
[0028] 每隔预设HASH算法切换时长进行一次HASH算法切换;
[0029] 或者,在每个预设HASH冲突检测周期内检测发生HASH冲突的次数,且若在一个周期内检测到的HASH冲突次数大于预设HASH冲突阈值时,则确定满足HASH算法切换条件;
[0030] 或者,当接收到网管输入的HASH算法切换指令时,确定满足HASH算法切换条件。
[0031] 所述路由设备根据得到的各个流特征的变化量,切换当前快速转发HASH算法包括:
[0032] 路由设备根据得到的各个流特征的变化量,确定切换后的快速转发HASH算法,判断确定的HASH算法与当前快速转发HASH算法是否相同,若否,则以确定的HASH算法更新当前快速转发HASH算法,同时,根据更新后的当前快速转发HASH算法更新快速转发表项中各个表项的HASH索引。
[0033] 所述统计接收到的报文中的各个流特征的变化量包括:
[0034] 为每个流特征分量分别建立一张变化记录表;
[0035] 在预设统计时长内,当接收到一个报文时,对于该报文的每一个流特征分量执行如下步骤:
[0036] 查询该分量的变化记录表,判断该表中是否已有报文中的该分量值,若是,不作记录;否则,将报文中的该分量值记录到该分量的变化记录表中;
[0037] 当预设统计时长到达时,针对每个流特征分量,统计该分量的变化记录表中的记录项数,若该记录项数大于1,则确定该分量发生变化,则计算该分量的记录项数与在该统计时长内接收到的报文总数的比值,该比值即为该分量的变化量;
[0038] 或者包括:
[0039] 为每个流特征分量建立一张变化记录表;
[0040] 且,当接收到一个报文时,对于该报文的每个流特征分量执行如下步骤:
[0041] 查询该分量的变化记录表,判断该表中是否已有报文中的该分量值,若是,不作处理;否则,将该报文中的该分量值记录到该分量的变化记录表中;
[0042] 同时,对接收到的报文进行计数;
[0043] 当计数值等于预设统计报文数时,针对每个流特征分量,统计该分量的变化记录表中的记录项数,若该记录项数大于1,则确定该分量发生变化,则计算该分量的记录项数与预设报文统计数的比值,该比值即为该分量的变化量。
[0044] 所述流特征为五元组。
[0045] 一种数据报文快速转发装置,该装置包括:
[0046] 快速转发处理模块:启动时,将默认快速转发HASH算法作为当前快速转发HASH算法,采用当前快速转发HASH算法对接收到的数据报文进行快速转发处理;当接收到HASH算法切换模块发来的切换后的快速转发HASH算法时,以该切换后的快速转发HASH算法更新当前快速转发HASH算法;
[0047] HASH算法切换模块:当发现当前满足HASH算法切换条件时,开始统计接收到的报文中的各个流特征分量的变化量;统计结束,根据得到的各个流特征分量的变化量,确定切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块。
[0048] 所述HASH算法切换模块包括:切换触发模块、流特征变化统计模块和切换算法选择模块,其中:
[0049] 切换触发模块:当发现当前满足HASH算法切换条件时,向流特征变化统计模块发送切换指令;
[0050] 流特征变化统计模块:接收到切换指令,开始统计接收到的报文中的各个流特征分量的变化量,统计结束,将各个流特征分量的变化量发送给切换算法选择模块;
[0051] 切换算法选择模块:接收各个流特征分量的变化量,对发生变化的各个流特征分量的变化量进行排序,在预先配置的多个HASH算法中,选择满足:算法中各流特征分量的权值的排序与发生变化的各个流特征分量的变化量的排序一致的HASH算法,将所选择的HASH算法作为切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块。
[0052] 所述切换算法选择模块进一步用于,当在预先配置的多个HASH算法中,未选择到任何满足:算法中各流特征分量的权值的排序与发生变化的各流特征分量的变化量的排序一致的HASH算法时,直接将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法;或者,直接将通用HASH算法作为切换后的快速转发HASH算法,所述通用HASH算法为预先配置的、用于在进行HASH算法切换时未选择到HASH算法时所采用的算法。
[0053] 所述HASH算法切换模块包括:切换触发模块、流特征变化统计模块和切换算法确定模块,其中:
[0054] 切换触发模块:当发现当前满足HASH算法切换条件时,向流特征变化统计模块发送切换指令;
[0055] 流特征变化统计模块:当接收到切换指令时,开始统计接收到的报文中的各个流特征分量的变化量,统计结束,将各个流特征分量的变化量发送给切换算法选择模块;
[0056] 切换算法确定模块:接收各个流特征分量的变化量,将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块。
[0057] 所述HASH算法切换模块包括:切换触发模块和切换处理模块,其中:
[0058] 切换触发模块:每隔预设HASH算法切换时长向切换处理模块发送一次切换指令;或者,在每个预设HASH冲突检测周期内检测发生HASH冲突的次数,且若在一个周期内检测到的HASH冲突次数大于预设HASH冲突阈值,则向切换处理模块发送切换指令;或者,当接收到网管输入的HASH算法切换指令时,向切换处理模块发送切换指令;
[0059] 切换处理模块:当接收到切换指令时,开始统计接收到的报文中的各个流特征分量的变化量;统计结束,根据得到的各个流特征分量的变化量,确定切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块。
[0060] 所述快速转发处理模块接收到HASH算法切换模块发来的切换后的快速转发HASH算法时,进一步用于,判断该切换后的快速转发HASH算法与当前快速转发HASH算法是否相同,若是,不作处理;否则,以该切换后的快速转发HASH算法更新当前快速转发HASH算法,同时,根据更新后的当前快速转发HASH算法更新快速转发表项中各个表项的HASH索引。
[0061] 与现有技术相比,本发明中,当路由设备启动时,采用默认快速转发HASH算法进行快速转发;当路由设备发现当前满足HASH算法切换条件时,则开始统计接收到的报文中的各个流特征分量的变化量;统计结束,路由设备根据得到的各个流特征分量的变化量,切换当前快速转发HASH算法。本发明可根据当前网络流量类型,选择合适的HASH算法,降低了HASH冲突的发生,从而缩短了报文平均转发时间,提升了路由设备的转发性能。且,本发明无需改变路由设备的硬件,节约了维护成本,提高了易用性,尤其适用于中低端路由设备。

附图说明

[0062] 图1为本发明实施例一提供的快速转发方法流程图;
[0063] 图2为本发明实施例二提供的快速转发方法流程图;
[0064] 图3为本发明实施例提供的快速转发装置的组成图;
[0065] 图4为本发明实施例一提供的HASH算法切换模块的组成图;
[0066] 图5为本发明实施例二提供的HASH算法切换模块的组成图;
[0067] 图6为本发明实施例三提供的HASH算法切换模块的组成图。

具体实施方式

[0068] 下面结合附图及具体实施例对本发明再作进一步详细的说明。
[0069] 图1为本发明实施例一提供的快速转发方法流程图,如图1所示,其具体步骤如下:
[0070] 步骤101:对于每个路由器,预先在该路由器上配置多个快速转发HASH算法;并将其中一个设置为默认快速转发HASH算法,预先在该路由器上配置HASH算法切换条件。
[0071] 这里,在路由器上配置的快速转发HASH算法是根据以往经验得到的各种流量类型下的较佳HASH算法。为了方便后续步骤110的选择操作,可以按照如下规则对HASH算法进行分类:
[0072] 将五元组分量的权值的排列顺序相同的HASH算法归为一类,例如:满足:算法中的源IP地址的权值>目的IP地址的权值>协议号的权值>源端口号的权值>目的端口号的权值的所有算法归为一类。
[0073] 这里,HASH算法切换条件可以如下:
[0074] 一、预设一个HASH算法切换时长,每隔一个HASH算法切换时长进行一次HASH算法切换。
[0075] 二、预设一个HASH冲突检测周期和一个HASH冲突阈值,在每个HASH冲突检测周期内检测发生HASH冲突的次数,且若在某个周期内检测到的HASH冲突次数大于HASH冲突阈值,则认为满足HASH算法切换条件。
[0076] 三、接收到网管输入的HASH算法切换指令。网管可以根据当前网络流量作出切换HASH算法的决定。
[0077] 步骤102:路由器上电启动,将默认快速转发HASH算法作为当前快速转发HASH算法。
[0078] 步骤103:路由器接收一个数据报文,采用当前快速转发HASH算法对报文中的五元组信息进行计算,得到HASH索引值,用该HASH索引值去查快速转发表。
[0079] 步骤104:路由器判断是否查找到对应表项,若是,执行步骤105;否则,执行步骤108。
[0080] 步骤105:路由器判断查找到的表项中的五元组信息与接收到的报文中的五元组信息是否一致,若是,执行步骤106;否则,执行步骤107。
[0081] 步骤106:路由器按照表项中的出端口,将报文转发出去,转至步骤109。
[0082] 步骤107:路由器确定发生HASH冲突,在路由表中查找报文的出端口,查找到后,以该出端口和报文的五元组信息更新HASH索引对应的快速转发表项,转至步骤109。
[0083] 步骤108:路由器在路由表中查找报文的出端口,查找到后,从该出端口将报文转发出去,并将该出端口和报文的五元组信息记录到HASH索引对应的快速转发表项,转至步骤109。
[0084] 步骤109:路由器发现当前满足HASH算法切换条件时,则开始统计接收到的报文的各个五元组分量的变化量,统计完毕,对发生变化的五元组分量的变化量从大到小进行排序。
[0085] 本步骤中,路由器统计接收到的报文的各个五元组分量的变化量可以通过以下两种方式完成:
[0086] 方式一、该方式需要在路由器上预先配置一个统计时长如:10分钟。
[0087] 当路由器发现当前满足HASH算法切换条件时,为五元组的每个分量建立一张变化记录表,即分别建立:源IP地址变化记录表、目的IP地址变化记录表、源端口号变化记录表、目的端口号变化记录表、协议号变化记录表;
[0088] 路由器在预设统计时长内,当接收到一个报文时,对于该报文的五元组的每一个分量执行如下步骤:
[0089] 查询该分量的变化记录表,判断该表中是否已有报文中的该分量值,若是,不作记录;否则,将报文中的该分量值记录到该分量的变化记录表中;
[0090] 当预设统计时长到达时,针对五元组的每个分量,路由器统计该分量的变化记录表中的记录项数,若该记录项数大于1,则确定该分量发生变化,则计算该分量的记录项数与在该统计时长内接收到的报文总数的比值,该比值即为该分量的变化量。
[0091] 方式二、该方式需要在路由器上预先配置一个统计报文数如:10000个。
[0092] 当路由器发现当前满足HASH算法切换条件时,为五元组的每个分量建立一张变化记录表,即分别建立:源IP地址变化记录表、目的IP地址变化记录表、源端口号变化记录表、目的端口号变化记录表、协议号变化记录表;
[0093] 且,当路由器接收到一个报文时,对于该报文的五元组的每一个分量执行如下步骤:
[0094] 查询该分量的变化记录表,判断该表中是否有报文中的该分量值,若是,不作处理;否则,将该报文中的该分量值记录到该分量的变化记录表中;
[0095] 同时,路由器对接收到的报文进行计数;
[0096] 当计数值等于预设统计报文数时,针对五元组的每个分量,路由器统计该分量的变化记录表中的记录项数,若该记录项数大于1,则确定该分量发生变化,则计算该分量的记录项数与预设报文统计数的比值,该比值即为该分量的变化量。
[0097] 这里,若某个五元组分量在统计过程中未发生变化即,统计结束时,该分量的变化记录表中只有一条记录,则说明该分量未发生变化,该分量不参与排序。
[0098] 需要说明的是,当向一个分量的变化记录表中添加记录时,应当按照数值的从小到大顺序进行添加,这样,当此后接收到一个报文、在该记录表中查找该报文中的该分量值时,可以通过二分法进行快速查找,提高查找效率。由于五元组的每个分量值都可以转换为数值(IP地址中间的小数点忽略),所以该方法可行。
[0099] 另外,若有两个或者多个分量的变化量相同,则可按照预先确定的分量优先级顺序对该两个或者多个分量进行排序。
[0100] 步骤110:路由器根据发生变化的五元组分量的变化量的排序,在自身配置的多个HASH算法中,选择满足:算法中各五元组分量的权值排序与发生变化的五元组分量的变化量排序相同的HASH算法,将该算法作为切换后的快速转发HASH算法。
[0101] 本步骤中,路由器在自身配置的HASH算法中,选择满足:算法中各五元组分量的权值排序与发生变化的五元组分量的变化量排序相同的HASH算法指的是:
[0102] 若步骤109中得到的发生变化的五分组分量的变化量排序是:源端口号变化量>目的端口号变化量>源IP地址变化量>目的IP地址变化量(协议号未发生变化),则本步骤110中,在选择HASH算法时,要选择满足:算法中的源端口号的权值>目的端口号的权值>源IP地址的权值>目的IP地址的权值的HASH算法。
[0103] 这里,需要说明的是,若选择到的HASH算法有多个,则可以在其中任选一个,也可以按照预设选择规则进一步进行筛选,例如:预设选择规则可以是:算法中各个五元组分量的权值与步骤109中得到的该分量的变化量最接近的。
[0104] 另外,本步骤110中可能会出现未选择到任何HASH算法的情形,此时,则采用如下两种解决方案:
[0105] 方案一:直接将发生变化的各个五元组分量的变化量作为HASH算法中对应分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法。
[0106] 例如:若发生变化的五元组分量为源端口号、目的端口号、源IP地址和目的IP地址,且它们的变化量分别为a%、b%、c%、d%,则直接将a%、b%、c%、d%分别作为源端口号、目的端口号、源IP地址和目的IP地址的权值来构造一个新的HASH算法。
[0107] 方案二、预先在路由器上配置一个通用HASH算法,该算法根据经验确定,能够兼顾到各种网络流量类型下的五元组分量的综合变化效果。当在步骤110中未选择到任何HASH算法时,直接将该通用HASH算法作为切换后的快速转发HASH算法。
[0108] 步骤111:路由器判断切换后的快速转发HASH算法是否与当前快速转发HASH算法相同,若是,不作处理,返回步骤103;否则,执行步骤112。
[0109] 步骤112:路由器以切换后的快速转发HASH算法更新当前快速转发HASH算法,同时,路由器根据更新后的当前快速转发HASH算法更新快速转发表中各个表项的HASH索引,返回步骤103。
[0110] 需要指出的是,图1所示流程中,步骤103~108与步骤109~112并无严格的先后顺序,只要路由器接收到报文,就会执行步骤103~108;只要路由器发现满足HASH算法切换条件,就会执行步骤109~112。
[0111] 图2为本发明实施例二提供的快速转发方法流程图,如图2所示,其具体步骤如下:
[0112] 步骤201:对于每个路由器,预先在该路由器上配置一个默认快速转发HASH算法,预先在该路由器上配置HASH算法切换条件。
[0113] 这里,HASH算法切换条件与步骤101相同。
[0114] 步骤202:路由器上电启动,将默认快速转发HASH算法作为当前快速转发HASH算法。
[0115] 步骤203:路由器接收一个数据报文,采用当前快速转发HASH算法对报文中的五元组信息进行计算,得到HASH索引值,用该HASH索引值去查快速转发表。
[0116] 步骤204:路由器判断是否查找到对应表项,若是,执行步骤205;否则,执行步骤208。
[0117] 步骤205:路由器判断查找到的表项中的五元组信息与接收到的报文中的五元组信息是否一致,若是,执行步骤206;否则,执行步骤207。
[0118] 步骤206:路由器按照表项中的出端口,将报文转发出去,转至步骤209。
[0119] 步骤207:路由器确定发生HASH冲突,在路由表中查找报文的出端口,查找到后,以该出端口和报文的五元组信息更新HASH索引对应的快速转发表项,转至步骤209。
[0120] 步骤208:路由器在路由表中查找报文的出端口,查找到后,从该出端口将报文转发出去,并将该出端口和报文的五元组信息记录到HASH索引对应的快速转发表项,转至步骤209。
[0121] 步骤209:路由器发现当前满足HASH算法切换条件时,则开始统计接收到的报文的各个五元组分量的变化量。
[0122] 本步骤中,路由器统计接收到的报文的各个五元组分量的变化量可采用与步骤109相同的方式。
[0123] 步骤210:统计结束,路由器根据发生变化的各五元组分量的变化量,将发生变化的各五元组分量的变化量作为HASH算法中对应分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法。
[0124] 未发生变化的五分组分量不参与HASH算法的构造。
[0125] 步骤211:路由器判断切换后的快速转发HASH算法是否与当前快速转发HASH算法相同,若是,不作处理,返回步骤203;否则,执行步骤212。
[0126] 步骤212:路由器以切换后的快速转发HASH算法更新当前快速转发HASH算法,同时,路由器根据更新后的当前快速转发HASH算法更新快速转发表中各个表项的HASH索引,返回步骤203。
[0127] 需要指出的是,图1、2所示实施例中是以流特征为五元组为例进行说明的,在实际应用中,流特征并不局限于五元组,此时,直接将对应的流特征名称替换到图1、2所示实施例中的“五元组”上即可。
[0128] 图3为本发明实施例提供的快速转发装置的组成图,如图3所示,其主要包括:快速转发处理模块31和HASH算法切换模块32,其中:
[0129] 快速转发处理模块31:启动时,将默认快速转发HASH算法作为当前快速转发HASH算法,采用当前快速转发HASH算法对接收到的数据报文进行快速转发处理;当接收到HASH算法切换模块32发来的切换后的快速转发HASH算法时,以该切换后的快速转发HASH算法更新当前快速转发HASH算法。
[0130] 在实际应用中,快速转发处理模块31在接收到HASH算法切换模块32发来的切换后的快速转发HASH算法时,可进一步用于,判断该切换后的快速转发HASH算法与当前快速转发HASH算法是否相同,若是,不作处理;否则,以该切换后的快速转发HASH算法更新当前快速转发HASH算法,同时,根据更新后的当前快速转发HASH算法更新快速转发表项中各个表项的HASH索引。
[0131] HASH算法切换模块32:当发现当前满足HASH算法切换条件时,开始统计接收到的报文中的各个流特征分量的变化量;统计结束,根据得到的各个流特征分量的变化量,确定切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块31。
[0132] 图4为本发明实施例一提供的HASH算法切换模块32的组成图,如图4所示,HASH算法切换模块32包括:切换触发模块321、流特征变化统计模块322和切换算法选择模块323,其中:
[0133] 切换触发模块321:当发现当前满足HASH算法切换条件时,向流特征变化统计模块322发送切换指令。
[0134] 流特征变化统计模块322:当接收到切换触发模块321发来的切换指令时,开始统计接收到的报文中的各个流特征分量的变化量,统计结束,将各个流特征分量的变化量发送给切换算法选择模块323。
[0135] 切换算法选择模块323:接收流特征变化统计模块322发来的各个流特征分量的变化量,对发生变化的各个流特征分量的变化量进行排序,在预先配置的多个HASH算法中,选择满足:算法中各流特征分量的权值的排序与发生变化的各个流特征分量的变化量的排序一致的HASH算法,将所选择的HASH算法作为切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块31。
[0136] 切换算法选择模块323可进一步用于,在确定了切换后的快速转发HASH算法时,判断该切换后的快速转发HASH算法与当前快速转发HASH算法是否相同,若是,则不作后续处理;否则,执行将该切换后的快速转发HASH算法发送给快速转发处理模块31的功能。
[0137] 切换算法选择模块323可进一步用于,当在预先配置的多个HASH算法中,选择到多个满足:算法中各流特征分量的权值的排序与统计得到的发生变化的各流特征分量的变化量的排序一致的HASH算法时,在所选择的多个HASH算法中任选一个作为切换后的快速转发HASH算法;或者,在所选择的多个HASH算法中,选择满足:算法中各流特征分量的权值与统计得到的对应流特征分量的变化量最接近的HASH算法作为切换后的快速转发HASH算法。
[0138] 切换算法选择模块323可进一步用于,当在预先配置的多个HASH算法中,未选择到任何满足:算法中各流特征分量的权值的排序与发生变化的各流特征分量的变化量的排序一致的HASH算法时,直接将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法;或者,直接将通用HASH算法作为切换后的快速转发HASH算法,所述通用HASH算法为预先配置的、用于在进行HASH算法切换时未选择到HASH算法时所采用的算法。
[0139] 图5为本发明实施例二提供的HASH算法切换模块32的组成图,如图5所示,HASH算法切换模块32包括:切换触发模块421、流特征变化统计模块422和切换算法确定模块423,其中:
[0140] 切换触发模块421:当发现当前满足HASH算法切换条件时,向流特征变化统计模块发送切换指令422。
[0141] 流特征变化统计模块422:当接收到切换触发模块421发来的切换指令时,开始统计接收到的报文中的各个流特征分量的变化量,统计结束,将各个流特征分量的变化量发送给切换算法选择模块423。
[0142] 切换算法确定模块423:接收流特征变化统计模块422发来的各个流特征分量的变化量,将发生变化的各流特征分量的变化量作为HASH算法中对应流特征分量的权值来构造一个新的HASH算法,将该算法作为切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块31。
[0143] 图6为本发明实施例三提供的HASH算法切换模块的组成图,如图6所示,HASH算法切换模块32包括:切换触发模块521和切换处理模块522,其中:
[0144] 切换触发模块521:每隔预设HASH算法切换时长向切换处理模块522发送一次切换指令;或者,在每个预设HASH冲突检测周期内检测发生HASH冲突的次数,且若在一个周期内检测到的HASH冲突次数大于预设HASH冲突阈值,则向切换处理模块522发送切换指令;或者,当接收到网管输入的HASH算法切换指令时,向切换处理模块522发送切换指令。
[0145] 切换处理模块522:当接收到切换触发模块521发来的切换指令时,开始统计接收到的报文中的各个流特征分量的变化量;统计结束,根据得到的各个流特征分量的变化量,确定切换后的快速转发HASH算法,将该切换后的快速转发HASH算法发送给快速转发处理模块31。
[0146] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。