专利名称:一种流表查找方法和装置的制作方法
技术领域:
本发明涉及网络技术领域,尤其涉及一种流表查找方法和装置。
技术背景
随着网络的发展,网络带宽日益增大,使用通用中央处理器CPU (Central ProcessingUnit)无法满足网络带宽的需求,因此需要专门的处理报文器件的协助处理转 发,其中包括网络处理器(NP,Network Processer)、专用集成电路(ASIC,Application Specific IntegratedCircuit)、现场可编程门阵列(FPGA,Field Programmable Gate Array)等,在数据转发中通用并且需求稳定的部分给专用处理器件处理,复杂和需求易变部分 交给通用CPU来处理。
现在的网络设备业务转发模型大致可以分为两种,一种是基于报文进行转发, 一种是基于流进行转发。
基于报文转发主要使用在路由器和交换机上,需要对每一个报文独立进行查表 (路由主要包括路由表,ARP (Address Resolution ^Otocol,地址解析协议)表以及其他一 些端口控制和QoS (Quality of Service,服务质量)表项,交换主要包括Vlan (Virtual Local AreaNetwork,虚拟局域网)表,MAC (Media Access Control,媒体访问控制)表和其他一些端口控制和QoS表项,这里不详细描述),然后根据查表结果独立进行转发。这种处 理方式每个报文需要查找多次表项,所以对设备的查表性能要求很高。
基于流转发主要使用在网关设备和防火墙上,现在也有部分路由器和交换机使 用基于流处理,路由器和交换机是按照上面的表项查找,基于流转发是在流的第一个报 文来的时候建立流表,然后把表项的结果放入到流表的结果中,后续报文只需要查找流 表即可以转发,可以减少查表次数,对设备的查表性能要求减低,网关设备和防火墙需 要按照规则建立流的动作,由于大部分网关和防火墙的规则在流前几个报文中,如果一 个报文不能判断动作的话,需要更多的报文进行动作判断,后面该流的报文查流表基于 流转发,一般来说,流动作判断在通用CPU中完成,流转发在专用转发器件中完成,但 也不排除都在其中一个内完成。
按照五元组(源IP地址,目的IP地址,IP协议类型,源端口号,目的端口号) 加上可能存在的二层转发时的VLAN ID或三层转发时VPN(Virtual Private Network,虚拟专用网络)ID作为关键字来确定一个流,客户端访问一个服务器的一个应用时候,客户 端给服务器的请求是一个方向的流,服务器放回客户端的响应是另一个方向的流,这两 个流组成一个会话。
现有技术按照设备的容量和位置,需要支持的流表数量不同,一个用户需要有 十几到几十个流,一个IOG的设备就需要IOM以上的流,流表需要占用很大的内存空 间。
流老化分为两种情况,主动老化和超时老化,主动老化是接受到应用层结束的 报文或是 TCP (Transmission Control Protocol,传输控制协议)的 FIN (FIN 为 TCP 报头的码位字段,该位置为1的含义为发送方字节流结束,用于关闭连接)/RST (Reset the connection,连接复位)报文时候老化流,超时老化是一个流超过一定时间没有流量的时 候老化流。当前很多处理是双向流表不关联,在单向流量的时候,会老化一个方向的流 表,这样导致这个方向的流不通。现有技术一无会话表,双向流表不关联,基于单个报 文查找,如果没有流表,则建立流表,流表之间不关联,流表老化基于单向流,路由器 和交换机大部分基于这种机制。流表一般使用Hash(散列,也音译为“哈希”)表完成 查表,根据进来的报文,提取五元组进行Hash,得到的索引取出对应索引的关键字的内 容,对照是否有效且一致,如果有效且一致,则查流表命中,可以得到索引读出表项内 容。流表无关联,删除一个方向的流表另一个方向的流表不感知,只能删除单向流表。 现有技术二存在会话表,在建立正向流表的时候同时建立反向流表,同时建立会话表, 双向流表需要有会话表的索引,会话表中保存双向流表的索引,会话表需要两个流表, 关联困难,老化只会删除一个方向的流表,如果需要删除两个方向的流表处理复杂,需 要从流表在流表中取出会话表索引然后取出另一个方向的流表索引,才能删除另一个方 向的流表。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题需要建立 正反向两个流表,而用一个会话表把两个表项关联起来,会话表中需要保留两个流表的 信息,用于删除正反向流表,由于流表数量都非常巨大,正反向流表保留了很多冗余信 息,消耗了大量内存空间。发明内容
本发明实施例提供一种流表查找方法和装置,以节省内容空间,提高查找内存 的使用率。
一方面,本发明实施例提供了一种流表查找方法,所述方法包括获取接收的 报文的五元组,所述五元组包括源IP地址,目的IP地址,IP协议类型,源端口号, 目的端口号;根据所述源IP地址和目的IP地址的大小对所述报文的五元组进行顺序排列 后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一 表项是否命中;如果所述流表中的某一表项命中,根据所述报文的源IP地址和目的IP地 址的大小确定的报文的传输方向,进行会话表内容的查找。
另一方面,本发明实施例提供了一种流表查找装置,所述装置包括获取单 元,用于获取接收的报文的五元组,所述五元组包括源IP地址,目的IP地址,IP协议 类型,源端口号,目的端口号;第一查找单元,用于根据所述源IP地址和目的IP地址的 大小对所述报文的五元组进行顺序排列后,将重新排列的所述报文的五元组序列作为关 键字查找流表,判断所述流表中的某一表项是否命中;第二查找单元,用于如果所述流 表中的某一表项命中,根据所述报文的源IP地址和目的IP地址的大小确定的报文的传输 方向,进行会话表内容的查找。
上述技术方案具有如下有益效果因为采用获取接收的报文的五元组,所述 五元组包括源IP地址,目的IP地址,IP协议类型,源端口号,目的端口号;根据所 述源IP地址和目的IP地址的大小对所述报文的五元组进行顺序排列后,将重新排列的所 述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项是否命中;如果所述流表中的某一表项命中,根据所述报文的源IP地址和目的IP地址的大小确定的报文 的传输方向,进行会话表内容的查找的技术手段,所以使正反向流表使用同一个关键字 进行查表,而使正反向流表用一个流表表项保存,达到了节省内容空间,提高查找内存 的使用率的技术效果。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或 现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅 是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提 下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种流表查找方法流程图2为本发明实施例流表示意图3为本发明实施例一种流表查找装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、 完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施 例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得 的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例一种流表查找方法流程图,所述方法包括
101、获取接收的报文的五元组,所述五元组包括源IP地址,目的IP地址, IP协议类型,源端口号,目的端口号。
可选的,可以通过网络报文转发装置获取接收的报文的五元组。所述网络报文 转发装置可以为路由器、交换机、网关设备、防火墙中的一种。也可以获取上述接收的 报文的多元组,其中至少包含上述五元组的多元组,例如实现中可以使用六元组,即上 述五元组再加上VPN ID或VLAN ID。也包含把该五元组或多元组分为多个部分元组来 实现,例如把五元组查表首先判断IP协议类型后查找按协议类型的多个四元组(源IP地 址,目的IP地址,源端口号,目的端口号)表,本发明实施例并不以此为限。
如图2所示,为本发明实施例流表示意图。正反向流都位于同一条表项。
102、根据所述源IP地址和目的IP地址的大小对所述报文的五元组进行顺序排 列后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某 一表项是否命中。
可选的,所述102可以包括如果所述源IP地址大于目的IP地址,确定所述 报文的传输方向为正方向,则将所述报文的五元组按照源IP地址,目的IP地址,源端口 号,目的端口号,IP协议类型进行顺序排序后,将重新排列的所述报文的五元组序列作 为关键字查找流表,判断所述流表中的某一表项是否命中;或者如果所述源IP地址小于 目的IP地址,确定所述报文的传输方向为反方向,则将所述报文的五元组按照目的IP地 址,源IP地址,目的端口号,源端口号,IP协议类型进行顺序排序后,将重新排列的所 述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项是否命中。6
或者,相反的,可选的,所述102可以包括如果所述源IP地址小于目的IP地 址,确定所述报文的传输方向为正方向,则将所述报文的五元组按照源IP地址,目的IP 地址,源端口号,目的端口号,IP协议类型进行顺序排序后,将重新排列的所述报文的 五元组序列作为关键字查找流表,判断所述流表中的某一表项是否命中;或者如果所述 源IP地址大于目的IP地址,确定所述报文的传输方向为反方向,则将所述报文的五元组 按照目的IP地址,源IP地址,目的端口号,源端口号,IP协议类型进行顺序排序后,将 重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项是 否命中。
103、如果所述流表中的某一表项命中,根据所述报文的源IP地址和目的IP地 址的大小确定的报文的传输方向,进行会话表内容的查找。
可选的,所述103可以包括如果所述流表中的某一表项命中,则利用命中的 所述表项的索引,根据所述报文的源IP地址和目的IP地址的大小确定的报文的传输方 向,进行会话表内容的查找。
如果所述流表没有命中,则用查表的五元组顺序按照图2所示建立流表表项, 同时建立会话表和流表结果表项。这里只描述流表查找部分,流表老化部分按这个方法 处理的话,没有比原先的方案任何额外的处理。
本发明实施例提供一种流表查找方法,使正反向流表使用同一个关键字进行查 表,而使正反向流表用一个流表表项保存,可以节省一半的流表资源,提高查找内存的 使用率,支持更大的流表规格,且由于正反向流都命中一条表项,老化处理也不需要额 外的管理,只需要对这个流表进行老化处理即可。由于按照源IP地址和目的IP地址的大 小,使正反向流表使用同一个关键字进行查表,而使正反向流表用一个流表表项保存, 可以应用在NP,CPU, FPGA, ASIC等网络报文转发装置或设备中。
对应于上述方法实施例,如图3所示,为本发明实施例一种流表查找装置结构 示意图,所述装置包括
获取单元31,用于用于获取接收的报文的五元组,所述五元组包括源IP地 址,目的IP地址,IP协议类型,源端口号,目的端口号;
第一查找单元32,用于根据所述源IP地址和目的IP地址的大小对所述报文的五 元组进行顺序排列后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断 所述流表中的某一表项是否命中;
第二查找单元33,用于如果所述流表中的某一表项命中,根据所述报文的源IP 地址和目的IP地址的大小确定的报文的传输方向,进行会话表内容的查找。
可选的,获取单元31可以通过网络报文转发装置获取接收的报文的五元组。所 述网络报文转发装置可以为路由器、交换机、网关设备、防火墙中的一种。也可以为获 取上述接收的报文的多元组,其中至少包含上述五元组的多元组,例如实现中可以使用 六元组,即上述五元组再加上VPN ID或VLAN ID。也包含把该五元组或多元组分为多 个部分元组来实现,例如把五元组查表首先判断IP协议类型后查找按协议类型的多个四 元组(源IP地址,目的IP地址,源端口号,目的端口号)表,本发明实施例并不以此为 限。
可选的,所述第一查找单元32,进一步用于如果所述源IP地址大于目的IP地址,确定所述报文的传输方向为正方向,则将所述报文的五元组按照源IP地址,目的IP 地址,源端口号,目的端口号,IP协议类型进行顺序排序后,将重新排列的所述报文的 五元组序列作为关键字查找流表,判断所述流表中的某一表项是否命中;或者进一步用 于如果所述源IP地址小于目的IP地址,确定所述报文的传输方向为反方向,则将所述报 文的五元组按照目的IP地址,源IP地址,目的端口号,源端口号,IP协议类型进行顺序 排序后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的 某一表项是否命中。
或者,相反的,可选的,所述第一查找单元32,进一步用于如果所述源IP地址 小于目的IP地址,确定所述报文的传输方向为正方向,则将所述报文的五元组按照源IP 地址,目的IP地址,源端口号,目的端口号,IP协议类型进行顺序排序后,将重新排列 的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项是否命中; 或者进一步用于如果所述源IP地址大于目的IP地址,确定所述报文的传输方向为反方 向,则将所述报文的五元组按照目的IP地址,源IP地址,目的端口号,源端口号,IP协 议类型进行顺序排序后,将重新排列的所述报文的五元组序列作为关键字查找流表,判 断所述流表中的某一表项是否命中。
可选的,所述第二查找单元33,进一步用于如果所述流表中的某一表项命中, 则利用命中的所述表项的索引,根据所述报文的源IP地址和目的IP地址的大小确定的报 文的传输方向,进行会话表内容的查找。
如果所述流表没有命中,则用查表的五元组顺序按照图2所示建立流表表项, 同时建立会话表和流表结果表项。这里只描述流表查找部分,流表老化部分按这个方法 处理的话,没有比原先的方案任何额外的处理。
本发明实施例提供一种流表查找装置,使正反向流表使用同一个关键字进行查 表,而使正反向流表用一个流表表项保存,可以节省一半的流表资源,提高查找内存的 使用率,支持更大的流表规格,且由于正反向流都命中一条表项,老化处理也不需要额 外的管理,只需要对这个流表进行老化处理即可。由于按照源IP地址和目的IP地址的大 小,使正反向流表使用同一个关键字进行查表,而使正反向流表用一个流表表项保存, 可以应用在NP,CPU, FPGA, ASIC等网络报文转发装置或设备中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关硬件来完成,所述的程序可以存储于一计算机可读取存储介质中, 该程序在执行时,包括上述全部或部分步骤,所述的存储介质,如ROM/RAM、磁盘 光盘等。
以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行了进一 步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已,并不用于限定 本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进 等,均应包含在本发明的保护范围之内。
权利要求
1.一种流表查找方法,其特征在于,所述方法包括获取接收的报文的五元组,所述五元组包括源IP地址,目的IP地址,IP协议类 型,源端口号,目的端口号;根据所述源IP地址和目的IP地址的大小对所述报文的五元组进行顺序排列后,将重 新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项是否 命中;如果所述流表中的某一表项命中,根据所述报文的源IP地址和目的IP地址的大小确 定的报文的传输方向,进行会话表内容的查找。
2.如权利要求1所述方法,其特征在于,所述根据所述源IP地址和目的IP地址的大 小对所述报文的五元组进行顺序排列后,将重新排列的所述报文的五元组序列作为关键 字查找流表,判断所述流表中的某一表项是否命中,包括如果所述源IP地址大于目的IP地址,确定所述报文的传输方向为正方向,则将所述 报文的五元组按照源IP地址,目的IP地址,源端口号,目的端口号,IP协议类型进行顺 序排序后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中 的某一表项是否命中;或者如果所述源IP地址小于目的IP地址,确定所述报文的传输方向为反方向,则将所述 报文的五元组按照目的IP地址,源IP地址,目的端口号,源端口号,IP协议类型进行顺 序排序后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中 的某一表项是否命中。
3.如权利要求1所述方法,其特征在于,所述根据所述源IP地址和目的IP地址的大 小对所述报文的五元组进行顺序排列后,将重新排列的所述报文的五元组序列作为关键 字查找流表,判断所述流表中的某一表项是否命中,包括如果所述源IP地址小于目的IP地址,确定所述报文的传输方向为正方向,则将所述 报文的五元组按照源IP地址,目的IP地址,源端口号,目的端口号,IP协议类型进行顺 序排序后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中 的某一表项是否命中;或者如果所述源IP地址大于目的IP地址,确定所述报文的传输方向为反方向,则将所述 报文的五元组按照目的IP地址,源IP地址,目的端口号,源端口号,IP协议类型进行顺 序排序后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中 的某一表项是否命中。
4.如权利要求1所述方法,其特征在于,所述如果所述流表中的某一表项命中,根据 所述报文的源IP地址和目的IP地址的大小确定的报文的传输方向,进行会话表内容的查 找,包括如果所述流表中的某一表项命中,则利用命中的所述表项的索引,根据所述报文的 源IP地址和目的IP地址的大小确定的报文的传输方向,进行会话表内容的查找。
5.如权利要求1所述方法,其特征在于,所述获取接收的报文的五元组,包括通过网络报文转发装置获取接收的报文的五元组。
6.如权利要求5所述方法,其特征在于,所述网络报文转发装置为路由器、交换机、 网关设备、防火墙中的一种。
7.—种流表查找装置,其特征在于,所述装置包括获取单元,用于获取接收的报文的五元组,所述五元组包括源IP地址,目的IP地 址,IP协议类型,源端口号,目的端口号;第一查找单元,用于根据所述源IP地址和目的IP地址的大小对所述报文的五元组进 行顺序排列后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流 表中的某一表项是否命中;第二查找单元,用于如果所述流表中的某一表项命中,根据所述报文的源IP地址和 目的IP地址的大小确定的报文的传输方向,进行会话表内容的查找。
8.如权利要求7所述装置,其特征在于,所述第一查找单元,进一步用于如果所述 源IP地址大于目的IP地址,确定所述报文的传输方向为正方向,则将所述报文的五元组 按照源IP地址,目的IP地址,源端口号,目的端口号,IP协议类型进行顺序排序后, 将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项 是否命中;或者进一步用于如果所述源IP地址小于目的IP地址,确定所述报文的传输方 向为反方向,则将所述报文的五元组按照目的IP地址,源IP地址,目的端口号,源端口 号,IP协议类型进行顺序排序后,将重新排列的所述报文的五元组序列作为关键字查找 流表,判断所述流表中的某一表项是否命中。
9.如权利要求7所述装置,其特征在于,所述第一查找单元,进一步用于如果所述 源IP地址小于目的IP地址,确定所述报文的传输方向为正方向,则将所述报文的五元组 按照源IP地址,目的IP地址,源端口号,目的端口号,IP协议类型进行顺序排序后, 将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项 是否命中;或者进一步用于如果所述源IP地址大于目的IP地址,确定所述报文的传输方 向为反方向,则将所述报文的五元组按照目的IP地址,源IP地址,目的端口号,源端口 号,IP协议类型进行顺序排序后,将重新排列的所述报文的五元组序列作为关键字查找 流表,判断所述流表中的某一表项是否命中。
10.如权利要求7所述装置,其特征在于,所述第二查找单元,进一步用于如果所述 流表中的某一表项命中,则利用命中的所述表项的索引,根据所述报文的源IP地址和目 的IP地址的大小确定的报文的传输方向,进行会话表内容的查找。
11.如权利要求7所述装置,其特征在于,所述获取单元,进一步用于通过网络报文 转发装置获取接收的报文的五元组。
12.如权利要求11所述装置,其特征在于,所述网络报文转发装置为路由器、交换 机、网关设备、防火墙中的一种。
全文摘要
本发明实施例提供一种流表查找方法和装置,所述方法包括获取接收的报文的五元组,所述五元组包括源IP地址,目的IP地址,IP协议类型,源端口号,目的端口号;根据所述源IP地址和目的IP地址的大小对所述报文的五元组进行顺序排列后,将重新排列的所述报文的五元组序列作为关键字查找流表,判断所述流表中的某一表项是否命中;如果所述流表中的某一表项命中,根据所述报文的源IP地址和目的IP地址的大小确定的报文的传输方向,进行会话表内容的查找。本发明实施例使正反向流表使用同一个关键字进行查表,而使正反向流表用一个流表表项保存,可以节省内容空间,提高查找内存的使用率,可以使用在NP,CPU,FPGA,ASIC中。
文档编号H04L29/12GK102025643SQ20101061522
公开日2011年4月20日 申请日期2010年12月30日 优先权日2010年12月30日
发明者戴崇经 申请人:华为技术有限公司