流表刷新的方法及装置与流程

文档序号:11972034阅读:238来源:国知局
流表刷新的方法及装置与流程
本发明涉及信息技术领域,尤其涉及一种流表刷新的方法及装置。

背景技术:
当一组报文具有相同的五元组信息是,可以认为这一组报文有相同的转发行为,即需要使用相同的转发路径,并接受相同的业务处理。通常将具有相同五元组信息的一组报文,称为流,也称为数据流或报文流。为了提升转发性能,通常会将报文流所需要的转发路径和业务处理以五元组信息和业务信息的形式存储于转发设备中流表的一个流节点中;其中,流表可包括多个流节点,每个流节点只存储一个报文流的五元组信息和业务信息;然后根据流表中对应的流节点信息对报文进行流转发,提高转发速度。当报文从一个转发接口进入时,诸如路由器、交换机等转发设备通过解析获取该报文的五元组信息,并根据五元组信息查询流表。若确定此时该报文在流表中没有对应的流节点,则可认定该报文为对应的流的首包,需要进行基本转发。基本转发的流程包括:解析报文驱动信息,获取报文入端口;解析报文链路层信息,该链路层信息包括链路类型、报文源和目的媒体访问控制(mediaaccesscontrol,简称MAC)信息等;解析报文网际协议(InternetProtocol,简称IP)层信息,该IP层报文信息包括报文的源和目的IP地址,是否是分片报文,差分服务代码点(differentiatedservicescodepoint,简称DSCP)优先级,协议类型等;查询路由表,决定下行接口;IP报文生存时间(timetolive,简称TTL)递减与报文分片;报文链路层封装,封装报文的源和目的MAC信息、链路类型;报文驱动信息封装;将报文从下行接口发送出去。在此基本转发流程中,在对报文的解析和封装的过程中,各个转发接口需要对该报文进行统计、传输限速、根据防火墙设置对报文进行过滤等操作,这些操作被认为是转发接口对该报文的业务处理操作;操作的具体内容作为业务信息进行保存。在完成该报文的基本转发时,转发设备根据该报文的五元组信息在流表中创建流节点,并将该报文的五元组信息和业务信息作为流节点信息保存在该流节点中。后续具有相同五元组信息的报文可以根据该流节点信息,直接转发;这种根据流节点信息转发报文的过程,通常称为流转发。然而,当业务处理操作状态发生变化或者接口状态发生变化时,例如某个接口开启或关闭,某个新的业务处理操作被启动或某个业务处理操作被暂停使用等,为保证流表中的流节点信息的正确性,需要将发生状态变化的业务处理操作或接口相关联的所有流节点信息全部刷新。而在流表刷新的过程中,发明人发现现有技术中至少存在如下问题:每次的流表刷新过程中,都需要删除原有的流节点,然后再重新建立流节点来存储新的流节点信息。当流表中有大量流节点信息要刷新时,就需要删除大量的流节点,并重新创建大量的流节点,使得流表刷新过程占用转发设备的处理器的大量系统资源,造成处理器不能及时处理报文转发,从而降低了处理器转发报文的效率。

技术实现要素:
有鉴于此,本发明提供了一种流表刷新的方法及装置,能够节约转发设备的系统资源,提高处理器对于转发报文的处理效率。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,本发明提供了一种流表刷新的方法,包括:获取待转发报文的五元组信息;根据所述待转发报文的五元组信息,查找流表;若所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同,则获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号;若按照匹配规则确定所述已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不一致,则根据所述待转发报文的业务信息更新所述已有流节点信息,并按照所述匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致;其中,所述流表根据预先的配置规则,分为若干个流表块,每个流表块包括若干个流节点,每个流表块均设置有对应的一个可调整的版本号,每个已有流节点也均设置有对应的一个可调整的版本号。在第一方面的第一种可能实现方式中,所述流表刷新的方法还包括:若所述流表中任意一个流节点的五元组信息与所述待转发报文的五元组信息均不相同,则为所述五元组信息创建一个新的流节点,并确定所述新的流节点所在的流表块;获取所述待转发报文的业务信息以及所述新的流节点所在的流表块的当前版本号;将所述待转发报文的业务信息和五元组信息存储在所述新的流节点中;根据所述待转发报文的业务信息,确定对应的转发接口;获取所述转发接口的映射表,并更新所述转发接口的映射表中所述新的流节点所在的流表块对应的标识;按照所述匹配规则将所述新的流节点的当前版本号设置为与所述新的流节点所在的流表块的当前版本号一致。根据第一方面或第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,所述流表刷新的方法还包括:若按照所述匹配规则确定所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号一致,保持所述已有流节点的信息不变。根据第一方面或第一方面的第一种或第二种可能实现方式,在第三种可能实现方式中,所述流表刷新的方法还包括:当检测到至少一个转发接口的状态发生变化时,确定待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块;根据预设的调整规则,调整所述待调整流表块的当前版本号。根据第一方面或第一方面的第一种至第三种任一种可能实现方式,在第四种可能实现方式中,所述流表刷新的方法还包括:当检测到至少一个业务处理操作的状态发生变化时,确定处理所述状态发生变化的至少一个业务处理操作的待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块;根据预设的调整规则,调整所述待调整流表块的当前版本号。根据第一方面或第一方面的第一种至第四种任一种可能实现方式,在第五种可能实现方式中,在所述获取待转发报文的五元组信息之前还包括:初始化流表和转发接口的映射表。根据第一方面的第五种可能实现方式,在第六种可能实现方式中,所述初始化流表和转发接口的映射表包括:获取当前所有业务和转发接口之间的对应关系,并存储所述当前所有业务和转发接口之间的对应关系;获取当前流表;根据预先的配置规则,将所述流表分为若干个流表块;其中,每个流表块包括若干个流节点;为每个流表块设置版本号,并为每个流表块的版本号设置初始值;为每个转发接口分别建立一个映射表,所述映射表用于存储转发接口与流表块之间的对应关系。第二方面,本发明提供了一种流表刷新的装置,包括:第一获取单元,用于获取待转发报文的五元组信息;查找单元,用于根据所述第一获取单元获取到的待转发报文的五元组信息,查找流表;第二获取单元,用于在确定所述查找单元确定所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同时,获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号,将所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号传输至更新单元;更新单元,用于在按照匹配规则确定所述第二获取单元获取到的已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不一致时,根据所述待转发报文的业务信息更新所述已有流节点信息,并按照所述匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致;其中,所述流表根据预先的配置规则,分为若干个流表块,每个流表块包括若干个流节点,每个流表块均设置有对应的一个可调整的版本号,每个已有流节点也均设置有对应的一个可调整的版本号。在第二方面的第一种可能实现方式中,所述流表刷新的装置还包括:创建单元,用于在确定所述第二获取单元获取到的所述流表中任意一个流节点的五元组信息与所述待转发报文的五元组信息均不相同时,为所述五元组信息创建一个新的流节点,并确定所述新的流节点所在的流表块;第三获取单元,用于获取所述待转发报文的业务信息以及所述新的流节点所在的流表块的当前版本号;存储单元,用于将所述待转发报文的业务信息和五元组信息存储在所述创建单元创建的新的流节点中;第一确定单元,用于根据所述第三获取单元获取到的所述待转发报文的业务信息,确定对应的转发接口;第三获取单元,用于获取所述第一确定单元确定的所述转发接口的映射表;所述更新单元,用于更新所述第三获取单元获取到的转发接口的映射表中所述新的流节点所在的流表块对应的标识;按照所述匹配规则将所述新的流节点的当前版本号设置为与所述新的流节点所在的流表块的当前版本号一致。根据第二方面或第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述流表刷新装置还包括:所述更新单元还用于在按照所述匹配规则确定所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号一致时,保持所述已有流节点的信息不变。根据第二方面或第二方面的第一种或第二种可能实现方式,在第三种可能实现方式中,所述流表刷新的装置还包括:第二确定单元,用于在检测到至少一个转发接口的状态发生变化时,确定待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块;第一调整单元,用于根据预设的调整规则,调整所述第二确定以单元确定的所述待调整流表块的当前版本号。根据第二方面或第二方面的第一种至第三种任一种可能实现方式,在第四种可能实现方式中,所述流表刷新的装置还包括:第三确定单元,用于在检测到至少一个业务处理操作的状态发生变化时,确定处理所述状态发生变化的至少一个业务处理操作的待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块;第二调整单元,用于根据预设的调整规则,调整所述第三确定单元确定的所述待调整流表块的当前版本号。结合第二方面或第二方面的第一种至第四种任一种可能实现方式,在第五种可能实现方式中,所述流表刷新的装置还包括:初始化单元,用于初始化流表和转发接口的映射表。结合第二方面的第五种可能实现方式,在第六种可能实现方式中,所述初始化单元包括:第一获取子单元,用于获取当前所有业务和转发接口之间的对应关系,并存储所述当前所有业务和转发接口之间的对应关系;第二获取子单元,用于获取当前流表;划分子单元,用于根据预先的配置规则,将所述第二获取子单元获取到的流表分为若干个流表块;其中,每个流表块包括若干个流节点;设置子单元,用于为所述划分子单元得到的每个流表块设置版本号,并为每个流表块的版本号设置初始值;建立子单元,用于为每个转发接口分别建立一个映射表,所述映射表用于存储转发接口与流表块之间的对应关系。本发明实施例提供了一种流表刷新的方法及装置,通过将转发设备的流表分成若干个流表块,为每个流表块设置一个可调整的版本号,每个流表块包括若干个流节点,为每个流节点设置一个可调整的版本号;在创建流节点时将流节点的版本号设置为与所在流表块的版本号一致;当业务处理操作状态或者接口状态发生变化时只更新相关的流表块的版本号,而到处理待转发报文时,再通过判断流节点的版本号和流节点所在的流表块的版本号是否一致,来识别是否需要更新流节点的信息。采用本发明提供的技术方案,在流表刷新的过程中,不需要先删除原有流节点,再重新学习生成新的流节点,而是保留原有流节点并只更新其存储的内容,这样就不需要反复要求处理器释放和重新分配系统资源,从而减少了系统资源浪费,极大地提高了处理器对于转发报文的处理效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种流表刷新的方法流程图;图2为本发明实施例提供的另一种流表刷新的方法流程图;图3为本发明实施例提供的另一种流表刷新的方法流程图;图4为本发明实施例提供的另一种流表刷新的方法流程图;图5为本发明实施例提供的另一种流表刷新的方法流程图;图6为本发明实施例提供的另一种流表刷新的方法流程图;图6A为本发明实施例提供的一种流表的逻辑结构图;图6B为本发明实施例提供的另一种流表的逻辑结构图;图6C为本发明实施例提供的另一种流表的逻辑结构图;图6D为本发明实施例提供的另一种流表的逻辑结构图;图6E为本发明实施例提供的另一种流表的逻辑结构图;图7为本发明实施例提供的一种流表刷新的装置的组成框图;图8为本发明实施例提供的另一种流表刷新的装置的组成框图;图9为本发明实施例提供的另一种流表刷新的装置的组成框图;图10为本发明实施例提供的另一种流表刷新的装置的组成框图;图11为本发明实施例提供的另一种流表刷新的装置的组成框图;图12为本发明实施例提供的另一种流表刷新的装置的组成框图;图13为本发明实施例提供的另一种流表刷新的装置的组成框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明提供的技术方案,通过将转发设备的流表分成若干个流表块,为每个流表块分别设置一个可调整的版本号;每个流表块包括若干个流节点,为每个流节点设置一个可调整的版本号;在创建流节点时将流节点的版本号设置为与所在流表块的版本号一致。当业务处理操作状态发生变化或者接口状态发生变化时,不是直接刷新流表中的流节点,而是通过更新相关的流表块的版本号,当处理待转发报文时,判断流节点的版本号和流节点所在的流表块的版本号是否一致,来识别是否需要更新流节点的信息。本发明实施例中,流表块内的各个流节点的版本号需要在该流表块的版本号的基础上进行创建或调整。需要说明的是,版本号的具体形式不限,例如为整数,初始时刻可以为0。可以理解的是,流表分为多少个流表块,每个流表块包括多少个流节点可以预先配置。本发明实施例提供的流表刷新的方法和装置,应用于报文转发的过程中,尤其适用于转发设备的流表刷新过程。参见图1,为本发明实施例提供的一种流表刷新的方法,如图1所示,所述方法包括:101、获取待转发报文的五元组信息。其中,所述待转发报文的五元组信息包括该待转发报文的源IP地址、目的IP地址、源端口号、目的端口号、协议号。102、根据所述待转发报文的五元组信息,查找流表。其中,所述流表中存储有流节点,每个流节点都有唯一的五元组信息;根据所述待转发报文的五元组信息查找流表,就可以判断所述流表中是否有对应所述待转发报文的流节点。103、若所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同,则获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号。若所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同,表示有对应所述待转发报文的流节点;通过获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号,就可以根据所述已有流节点的当前版本号,和所述已有流节点所在流表块的当前版本号,判断所述已有流节点中的信息是否需要更新。104、若按照匹配规则,确定所述已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不一致,则根据所述待转发报文的业务信息更新所述已有流节点的信息,并按照所述匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致。以所述匹配规则为流节点的版本号与流节点所在流表块的版本号是否相同为例,若流表中存在所述待转发报文对应的流节点,即所述已有流节点,且确定所述已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不同,可能是业务处理操作状态发生了变化或者接口状态发生了变化,此时只需根据待转发报文的业务信息更新所述已有流节点的信息,具体的,更新所述已有流节点中的业务信息,而不用删除所述已有流节点再重新建立新的流节点,从而避免了转发设备的处理器释放和重新分配系统资源,减少了系统资源浪费,提高了处理器转发报文的效率。采用本发明实施例提供的一种流表刷新的方法,通过将整个流表分为若干个流表块,为每个流表块设置版本号,并为每个流节点设置对应的版本号,当收到待转发报文时,通过判断该待转发报文对应的流节点的版本号与所在流表块的版本号是否一致,使得在流表刷新的过程中,不需要先删除原有流节点,再重新学习生成新的流节点,而是保留原有流节点并只更新其存储的内容,这样就不需要反复要求处理器释放和重新分配系统资源,从而减少了系统资源浪费,极大地提高了处理器对于转发报文的处理效率。需要说明的是,以下为方便叙述,均以流节点的版本号与流节点所在流表块的版本号是否相同作为所述匹配规则来介绍本发明技术方案。本发明实施例中,以最简单的实现方式,即将流节点的版本号与所在流表块的版本号是否相同,不同则设置为所在流表块的版本号为例进行说明,但并不能作为对本发明的限定。可以理解的是,也可以设置匹配规则,例如流节点的版本号与所在的流表块的版本号是倍数关系,来判断流节点的版本号和所在的流表块的版本号是否一致,并根据匹配规则更新版本号。举例来说,流节点的版本号与所在的流表块的版本号成2倍关系,第一时刻,流节点的版本号为2,所在流表块的版本号都为1,则流节点的版本号和所在的流表块的版本号一致,无需更新流节点,待转发报文根据流节点的信息进行转发;第二时刻,由于业务或者接口状态发生变化,流表块的版本号更新为2,而流节点的版本号为2,此时流节点的版本号和所在的流表块的版本号不一致,需要根据待转发报文的业务信息更新流节点的信息,并将流节点的版本号调整为4。参见图2,为本发明实施例提供的另一种流表刷新的方法,如图2所示,所述方法包括:201、初始化流表和转发接口的映射表。具体的,所述初始化流表和转发接口的映射表包括:2011、获取当前所有业务处理操作和转发接口之间的对应关系,并存储所述当前所有业务处理操作和转发接口之间的对应关系。其中,需要说明的是,不同的转发接口可以执行相同的业务处理操作,也可以执行不同的业务处理操作,每个转发接口可以执行哪些业务处理操作是预先设置好的。在本实施例中,将当前所有业务处理操作和转发接口之间的对应关系进行存储,即将每个转发接口可执行的业务处理操作进行存储,以方便后续当业务处理操作状态变化和转发接口状态发生变化时的处理。在本实施例中,所述当前所有业务处理操作和转发接口之间的对应关系并不是固定不变的,当有新的业务处理操作被启用或者某个业务处理操作被停止使用时,又或者当某个转发接口开启或者关闭时,需要及时更新当前所有业务处理操作和转发接口之间的对应关系。2012、获取当前流表。其中,单独一个转发设备一般只设置一个流表。2013、根据预先的配置规则,将所述流表分为若干个流表块;其中,每个流表块包括若干个流节点。其中,在步骤2013中,所述预设的配置规则用于指示将流表分为多少个流表块,每个流表块包括多少个流节点。例如,流表包括最多24个流节点,可将该流表分为3个流表块,每个流表块包括8个流节点。在本实施例中,所述将所述流表分为若干个流表块具体的实现方法可以包括获取流表占用的全部内存空间,将所述全部内存空间划分为若干个内存区域,每个内存区域作为一个流表块,并为每个流表块分别分配一个索引号,每个流表块根据自身的内存大小以及每个流节点所占用的内存大小,即可确定每个流表块可包括多少个流节点。2014、为每个流表块设置版本号,并将每个流表块的版本号设置为初始值。在本实施例中,版本号可以设置为整数,例如1,2等;也可以设置为浮点数,例如0.1,1.2等。其中,初始值可为0或其他固定值。在创建新的流节点时,可以将新的流节点的版本号设置为该新的流节点所在的流表块当前的版本号。2015、为每个转发接口分别建立一个映射表,所述映射表用于存储转发接口与流表块之间的对应关系。其中,所述映射表为本发明实施例中设置的用于存储转发接口与流表块之间的对应关系,每个转发接口的映射表中对应每个流表块存储一个标识,用于表示转发接口与流表块是否有对应关系;所述映射表可以但不局限于使用位域映射表bitmap形式来实现,bitmap中一个比特位标识流表中的一个流表块,比特位为“1”表示转发接口与流表块具有对应关系,而比特位为“0”则表示转发接口与流表块不具有对应关系。举例来说,接口1的bitmap为“11100011”,表示接口1与所述流表中的第1、2、3、7、8流表块有对应关系。其中,所述转发接口与流表块之间的对应关系表示该转发接口可完成与该转发接口对应的流表块中的流节点的业务信息对应的业务处理操作。202、获取待转发报文的五元组信息。其中,所述待转发报文的五元组信息包括该待转发报文的源IP地址、报文目的IP地址、源端口号、目的端口号、协议号。具体可参考101,在此不再赘述。203、根据所述待转发报文的五元组信息,查找流表。具体可参考102,在此不再赘述。204、若所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同,则获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号。具体可参考103,在此不再赘述。205、若按照匹配规则确定所述已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不一致,则根据所述待转发报文的业务信息更新所述已有流节点的信息,并按照匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致。具体可参考104,在此不再赘述。参见图3,为本发明实施例提供的又一种流表刷新的方法,如图3所示,所述方法包括:301、初始化流表和转发接口的映射表。具体可参考201,在此不再赘述。302、获取待转发报文的五元组信息。其中,所述待转发报文对应的五元组信息包括该待转发报文的源IP地址、目的IP地址、源端口号、目的端口号、协议号。303、根据所述待转发报文的五元组信息,查找所述流表。若在所述流表中查找到一个已有流节点的五元组信息与所述待转发报文的五元组信息相同时,则执行304-307;若所述流表中任意一个流节点的五元组信息与所述五元组信息均不相同时,执行步骤308-313。其中,每个流节点中包括五元组信息和业务信息。304、当所述流表中存在一个已有流节点的五元组信息与所述五元组信息相同时,获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号。305、判断所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号是否相同。306、若按照匹配规则确定所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号不一致,根据所述待转发报文的业务信息更新所述已有流节点的信息,并按照匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致。其中,需要说明的是,若在步骤304执行之后需执行步骤305,则意味着所述待转发报文不能进行流转发,那么此时应该使用基本转发流程对所述待转发报文进行转发。在此基本转发流程中,即可获取到所述待转发报文的业务信息。具体的,根据所述待转发报文的业务信息更新所述已有流节点的信息包括:用所述待转发报文的业务信息更新所述已有流节点中的业务信息;具体来说,可依照所述待转发报文通过基本转发流程中获取到的所述待转发报文的业务信息,替换所述已有流节点的业务信息。307、若按照匹配规则确定所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号一致,保持所述已有流节点的信息不变。其中,需要说明的是,若在步骤304执行之后需执行步骤306,则意味着报文可以根据流表中所述已有流节点的信息进行流转发。例如匹配规则为流节点的当前版本号与所述流节点所在流表块的当前版本号是否相同。308、当所述流表中任意一个流节点的五元组信息与所述五元组信息均不相同时,为所述待转发报文的五元组信息创建一个新的流节点,并确定所述新的流节点所在的流表块。其中,所述确定所述新的流节点所在的流表块的方法包括:根据所述待转发报文的五元组信息结合哈希hash算法,计算出流节点的索引号;将该流节点的索引号除以当前流表块数量得到的商值,即为该流节点所在流表块的索引号。根据所述流表块的索引号,即可确定该流节点所在流表块。例如,根据所述待转发报文的五元组信息结合hash算法,计算出流节点的索引号为55,当前共有10个流表块,索引号分别为0-9,每个流表块包括10个流节点,则55除以10得到的商值为5,则索引号为55的流节点在索引号为5的流表块中。另外,需要说明的是,若在执行步骤302之后,需要执行步骤307,则意味着所述待转发报文不能进行流转发,那么此时所述待转发报文进行基本转发流程。309、获取所述待转发报文的业务信息以及所述新的流节点所在的流表块的当前版本号。其中,所述待转发报文的业务信息可以在该报文的基本转发流程中获取。310、将所述待转发报文的业务信息和五元组信息存储在所述新的流节点中。311、根据所述业务信息,确定与所述业务信息对应的转发接口。具体的,可通过步骤201中存储的当前所有业务处理操作和转发接口之间的对应关系进行查询后确定。312、获取所述转发接口的映射表,并更新所述转发接口的映射表中所述新的流节点所在的流表块对应的标识。其中,所述转发接口的映射表即为步骤202中建立的映射表。本实施例在此提供一种置位方法,包括:在所述转发接口的映射表中,与该转发接口有对应关系的流表块,其对应位置设置为1;而与该转发接口没有对应关系的流表块,其对应位置设置为0。例如,流表中共有8个流表块,第1、3、4、5个流表块与同一个转发接口有对应关系,则在该转发接口的映射表中应设置为10111000。313、按照所述匹配规则将所述新的流节点的当前版本号设置为与所述新的流节点所在的流表块的当前版本号一致。例如,匹配规则为流节点的当前版本号与所述流节点所在流表块的当前版本号是否相同。则可以将所述新的流节点的当前版本号设置为所述新的流节点所在的流表块的当前版本号。需要说明的是,313也可以在311之前执行。在本实施例中,值得说明的是,当业务处理操作状态发生变化或者转发接口状态发生变化时,例如某个转发接口开启或关闭,某个业务处理操作被启动或某个业务处理操作被暂停使用等,都会触发流表更新。在本发明图1、图2或图3所示的流表刷新的方法基础上,本发明实施例还提供了业务处理操作状态发生变化和转发接口状态发生变化时,流表刷新的方法的预处理流程。如图4所示,为基于业务处理操作状态发生变化时,流表刷新的方法的预处理流程,包括:401、当检测到至少一个业务处理操作的状态发生变化时,确定处理所述状态发生变化的至少一个业务处理操作的待调整转发接口。在步骤401中,确定所述状态发生变化的至少一个业务处理操作的待调整转发接口的实现方法可参照步骤2011中已获取到的转发接口与业务处理操作之间的对应关系进行查找。402、根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块。在步骤402中,待调整转发接口与流表块之间的对应关系可参照步骤205中的映射表。403、根据预设的调整规则,调整待调整流表块的当前版本号。其中,所述预设的调整规则可以根据具体实现方式预设设置,例如若版本号设置为整数,则可以将所述当前版本号加1或减1。若版本号设置为浮点数,则可以将所述当前版本号加0.1或减0.1。当然,此处的描述只是本实施例中提供的一种实施方案,本发明实施例对此并不限制。值得说明的是,上述步骤401至403的执行过程中,如果所述状态发生变化的业务处理操作对应的转发接口多于一个,则版本号的调整需要根据所述状态发生变化的业务处理操作对应的转发接口的数量多次调整。例如,当前状态发生变化的业务处理操作对应的转发接口有两个,则先调整与其中一个转发接口有对应关系的流表块的版本号,然后在此调整结果上,再调整与另一个转发接口有对应关系的流表块的版本号。如图5所示,为基于转发接口状态发生变化时,流表刷新的方法的预处理流程,包括:501、当检测到至少一个转发接口状态发生变化时,确定待调整转发接口;并根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块。502、根据预设的调整规则,调整所述待调整流表块的当前版本号。具体的,可以参见403,在此不再赘述。值得说明的是,上述步骤501至502的执行过程中,如果所述状态发生变化的转发接口多于一个,则版本号的调整需要根据所述状态发生变化的转发接口的数量多次调整。例如,当前状态发生变化转发接口有两个,则先调整与其中一个转发接口有对应关系的流表块的版本号,然后在此调整结果上,再调整与另一个转发接口有对应关系的流表块的版本号。另外,值得说明的是,若存在若干个业务处理操作和若干个转发接口同时出现状态变化时,则可先结合步骤401-403,根据出现状态变化的业务处理操作对流表进行调整,再结合步骤501-502,根据出现状态变化的转发接口对流表进行调整。或者,先结合步骤501-502,根据出现状态变化的转发接口对流表进行调整,再结合步骤401-403,根据出现状态变化的业务处理操作对流表进行调整。可以理解的是,图4和图5所示的流表刷新的方法的预处理流程将导致流表中流节点的版本号与流表块的版本号不一致,从而触发流表刷新。具体的,在此结合如图6A所示的流表,具体描述本发明实施例提供的一种流表刷新的过程,参见图6。图6A所示的流表分为2个流表块,每个流表块包括8个流节点,流表块的索引号分别为0、1,每个流表块的版本号为v0;在该流表中已设置有8个流节点,索引号分别为0-15,每个流节点的版本号为v0。如图6所示,所述流表刷新的过程包括:601、当与流表块1具有对应关系的转发接口状态发生变化时,则将流表块1的当前版本号v0调整为v1,调整结果参照图6B。602、当与流表块0和流表块1均具有对应关系的转发接口状态发生变化时,则将流表块0的当前版本号v1调整为v2,同时将流表块1的当前版本号v0调整为v1,调整结果参照图6C。603、获取待转发报文1的五元组信息。604、根据所述待转发报文1的五元组信息,查找所述流表。605、当确定所述流表中流节点2的五元组信息与所述待转发报文1的五元组信息相同时,获取流节点2的当前版本号v0以及流节点2所在流表块0的当前版本号v1。606、确定所述流节点2的当前版本号与流节点2所在流表块0的当前版本号不同,则将所述待转发报文1进行基本转发。本实施例中,匹配规则为流节点的当前版本号与所述流节点所在流表块的当前版本号是否相同。607、根据所述待转发报文1的业务信息更新所述流节点2的信息,并将所述流节点2的当前版本号v0设置为所述流节点2所在流表块0的当前版本号v1,调整结果参照图6D所示。608、获取待转发报文2的五元组信息。609、当确定所述流表中流节点8的五元组信息与所述待转发报文2的五元组信息相同时,获取流节点8的当前版本号v0以及流节点8所在流表块1的当前版本号v2。610、确定所述流节点8的当前版本号与流节点8所在流表块1的当前版本号不同,则将所述待转发报文2进行基本转发。611、根据所述待转发报文2对应的业务信息更新所述流节点8的信息,并将所述流节点8的当前版本号v0设置为所述流节点8所在流表块1的当前版本号v2,调整结果参照图6E。本发明实施例提供了一种流表刷新的方法,通过将整个流表分为若干个流表块,每个流表块包括若干个流节点,为每个流表块设置对应的版本号,并为流表块中的流节点设置对应的版本号,使得在流表刷新的过程中,不需要先删除原有流节点,再重新学习生成新的流节点,而是保留原有流节点并只更新其存储的内容,这样就不需要反复要求处理器释放和重新分配系统资源,从而减少了系统资源浪费,极大地提高了处理器对于转发报文的处理效率。本发明实施例提供了一种流表刷新的装置,用于实现本发明图1-图6所示的流表刷新的方法。如图7所示,所述装置包括:第一获取单元71、查找单元72、第二获取单元73、更新单元74。第一获取单元71,用于获取待转发报文的五元组信息。其中,所述待转发报文的五元组信息包括该待转发报文的源IP地址、目的IP地址、源端口号、目的端口号、协议号。查找单元72,用于根据所述第一获取单元71获取到的待转发报文的五元组信息,查找流表。其中,所述流表中存储有流节点,每个流节点都有唯一的五元组信息;根据所述待转发报文的五元组信息查找流表,就可以判断所述流表中是否有对应所述待转发报文的流节点。第二获取单元73,用于在确定所述查找单元72确定所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同时,获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号,将所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号传输至更新单元。更新单元74,用于在按照匹配规则确定所述第二获取单元73获取到的已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不一致时,根据所述待转发报文的业务信息更新所述已有流节点信息,并按照匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致。其中,所述流表根据预先的配置规则,分为若干个流表块,每个流表块包括若干个流节点,每个流表块均设置有一个可调整的版本号,每个已有流节点也均设置有一个可调整的版本号,并且一个流表块内的各个流节点的版本号需要在该流表块的版本号的基础上进行创建或调整。可选的是,如图8所示,该装置还包括:创建单元75、第三获取单元76、存储单元77、第一确定单元78、第三获取单元79。创建单元75,用于在确定所述第二获取单元73获取到的所述流表中任意一个流节点的五元组信息与所述待转发报文的五元组信息均不相同时,为所述五元组信息创建一个新的流节点,并确定所述新的流节点所在的流表块。其中,所述确定所述新的流节点所在的流表块的方法包括:根据所述待转发报文的五元组信息结合哈希hash算法,计算出流节点的索引号;将该流节点的索引号除以当前流表块数量得到的商值,即为该流节点所在流表块的索引号。根据所述流表块的索引号,即可确定该流节点所在流表块。第三获取单元76,用于获取所述待转发报文的业务信息以及所述新的流节点所在的流表块的当前版本号。存储单元77,用于将所述待转发报文的业务信息和五元组信息存储在所述创建单元75创建的新的流节点中。第一确定单元78,用于根据所述第三获取单元76获取到的所述待转发报文的业务信息,确定对应的转发接口。第三获取单元79,用于获取所述第一确定单元78确定的所述转发接口的映射表。所述更新单元74,用于更新所述第三获取单元79获取到的转发接口的映射表中所述新的流节点所在的流表块对应的标识;按照所述匹配规则将所述新的流节点的当前版本号设置为与所述新的流节点所在的流表块的当前版本号一致。其中,所述更新单元74更新所述第三获取单元79获取到的转发接口的映射表中所述新的流节点所在的流表块对应的标识可以遵循如下置位步骤,包括在所述转发接口的映射表中,与该转发接口有对应关系的流表块,其对应位置设置为1;而与该转发接口没有对应关系的流表块,其对应位置设置为0。例如,流表中共有8个流表块,第1、3、4、5个流表块与同一个转发接口有对应关系,则在该转发接口的映射表中应设置为10111000。可选的是,所述更新单元74,还用于在按照所述匹配规则确定所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号一致时,保持所述已有流节点的信息不变。可选的是,如图9所示,该装置还包括:第二确定单元710、第一调整单元711。第二确定单元710,用于在检测到至少一个转发接口的状态发生变化时,确定待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块。第一调整单元711,用于根据预设的调整规则,调整所述第二确定710单元确定的所述待调整流表块的当前版本号。其中,其中,所述预设的调整规则可以根据具体实现方式预设设置,例如若版本号设置为整数,则可以将所述当前版本号加1或减1。若版本号设置为浮点数,则可以将所述当前版本号加0.1或减0.1。当然,此处的描述只是本实施例中提供的一种实施方案,本发明实施例对此并不限制。可选的是,如图10所示,该装置还包括:第三确定单元712、第二调整单元713。第三确定单元712,用于在检测到至少一个业务处理操作的状态发生变化时,确定处理所述状态发生变化的至少一个业务处理操作的待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块。第二调整单元713,用于根据预设的调整规则,调整所述第三确定单元712确定的所述待调整流表块的当前版本号。其中,所述预设的调整规则可以根据具体实现方式预设设置,例如若版本号设置为整数,则可以将所述当前版本号加1或减1。若版本号设置为浮点数,则可以将所述当前版本号加0.1或减0.1。当然,此处的描述只是本实施例中提供的一种实施方案,本发明实施例对此并不限制。可选的是,如图11所示,该装置还包括:初始化单元714。初始化单元714,用于初始化流表和转发接口的映射表。可选的是,如图12所示,所述初始化单元714包括:第一获取子单元7141、第二获取子单元7142、划分子单元7143、设置子单元7144、建立子单元7145。第一获取子单元7141,用于获取当前所有业务和转发接口之间的对应关系,并存储所述当前所有业务和转发接口之间的对应关系。第二获取子单元7142,用于获取当前流表。划分子单元7143,用于根据预先的配置规则,将所述第二获取子单元7142获取到的流表分为若干个流表块;其中,每个流表块包括若干个流节点。设置子单元7144,用于为所述划分子单元7143得到的每个流表块设置版本号,并为每个流表块的版本号设置初始值。建立子单元7145,用于为每个转发接口分别建立一个映射表,所述映射表用于存储转发接口与流表块之间的对应关系。本发明实施例提供了一种流表刷新的装置,通过将整个流表中的流节点按块进行划分,并为每个流节点设置对应的版本号,为每个流表块设置对应的版本号,使得在流表刷新的过程中,不需要先删除原有流节点,再重新学习生成新的流节点,而是保留原有流节点并只更新其存储的内容,这样就不需要反复要求处理器释放和重新分配系统资源,从而减少了系统资源浪费,极大地提高了处理器对于转发报文的处理效率。本发明实施例提供了一种流表刷新的装置,如图13所示,包括:处理器1301和存储器1302,处理器1301和存储器1302可通过总线或其它方式连接,所述存储器1302内存储有程序代码,所述程序代码包括计算机操作指令。所述处理器1301执行所述程序代码,用于:获取待转发报文的五元组信息;根据所述待转发报文的五元组信息,查找流表;若所述流表中存在一个已有流节点的五元组信息与所述待转发报文的五元组信息相同,则获取所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号;若按照匹配规则确定所述已有流节点的当前版本号与所述已有流节点所在流表块的当前版本号不一致,则根据所述待转发报文的业务信息更新所述已有流节点信息,并按照匹配规则将所述已有流节点的当前版本号设置为与所述已有流节点所在流表块的当前版本号一致;其中,所述流表根据预先的配置规则,分为若干个流表块,每个流表块包括若干个流节点,每个流表块均设置有一个可调整的版本号,每个已有流节点也均设置有一个可调整的版本号,并且一个流表块内的各个流节点的版本号需要在该流表块的版本号的基础上进行创建或调整。所述存储器1302,用于存储所述流表。可选的是,所述处理器1301还用于当所述流表中任意一个流节点的五元组信息与所述待转发报文的五元组信息均不相同时,为所述五元组信息创建一个新的流节点,并确定所述新的流节点所在的流表块;获取所述待转发报文的业务信息以及所述新的流节点所在的流表块的当前版本号;将所述待转发报文的业务信息和五元组信息存储在所述新的流节点中;根据所述待转发报文的业务信息,确定对应的转发接口;获取所述转发接口的映射表,并更新所述转发接口的映射表中所述新的流节点所在的流表块对应的标识;按照所述匹配规则将所述新的流节点的当前版本号设置为与所述新的流节点所在的流表块的当前版本号一致。所述存储器1302,还用于存储所述映射表。可选的是,所述处理器1301还用于在按照所述匹配规则确定所述已有流节点的当前版本号以及所述已有流节点所在流表块的当前版本号一致,保持所述已有流节点的信息不变。所述处理器1301,还用于当检测到至少一个转发接口的状态发生变化时,确定待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块;根据预设的调整规则,调整所述待调整流表块的当前版本号。可选的是,所述处理器1301,还用于当检测到至少一个业务处理操作的状态发生变化时,确定处理所述状态发生变化的至少一个业务处理操作的待调整转发接口;根据所述待调整转发接口与流表块之间的对应关系,确定待调整流表块;根据预设的调整规则,调整所述待调整流表块的当前版本号。可选的是,所述处理器1301还用于初始化流表和转发接口的映射表。可选的是,所述处理器1301执行所述程序代码实现所述初始化流表和转发接口的映射表的具体方式为:获取当前所有业务和转发接口之间的对应关系,并存储所述当前所有业务和转发接口之间的对应关系;获取当前流表;根据预先的配置规则,将所述流表分为若干个流表块;其中,每个流表块包括若干个流节点;为每个流表块设置版本号,并为每个流表块的版本号设置初始值;为每个转发接口分别建立一个映射表,所述映射表用于存储转发接口与流表块之间的对应关系。本发明实施例提供了一种流表刷新的装置,通过处理器执行存储器中的操作指令,将整个流表中的流节点按块进行划分,并为每个流节点设置对应的版本号,为每个流表块设置对应的版本号,使得在流表刷新的过程中,不需要先删除原有流节点,再重新学习生成新的流节点,而是保留原有流节点并只更新其存储的内容,这样就不需要反复要求处理器释放和重新分配系统资源,从而减少了系统资源浪费,极大地提高了处理器对于转发报文的处理效率。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1