CN103248582A - 用于在网络装置中执行包流查找的流缓存器机制 - Google Patents

用于在网络装置中执行包流查找的流缓存器机制 Download PDF

Info

Publication number
CN103248582A
CN103248582A CN2012105872939A CN201210587293A CN103248582A CN 103248582 A CN103248582 A CN 103248582A CN 2012105872939 A CN2012105872939 A CN 2012105872939A CN 201210587293 A CN201210587293 A CN 201210587293A CN 103248582 A CN103248582 A CN 103248582A
Authority
CN
China
Prior art keywords
prefix
search key
stream buffer
search
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012105872939A
Other languages
English (en)
Other versions
CN103248582B (zh
Inventor
迪帕克·格尔
约翰·基恩
文卡塔苏布拉马尼亚恩·斯瓦米纳坦
Original Assignee
Jungle Network
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jungle Network filed Critical Jungle Network
Publication of CN103248582A publication Critical patent/CN103248582A/zh
Application granted granted Critical
Publication of CN103248582B publication Critical patent/CN103248582B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/748Address table lookup; Address filtering using longest matching prefix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种用于在网络装置中执行包流查找的流缓存器机制。一种实例网络装置,包括:网络接口,被配置为接收包流的包,其中,该包流是由网络装置处理的多个包流中的一个;流缓存器,被配置为接收与包流相关的查找关键字;以及布隆过滤器,被配置为处理查找关键字。流缓存器被进一步配置为,储存与由网络装置处理的多个包流中的一部分相关的信息,并至少通过对由布隆过滤器对查找关键字进行的处理应用选择标准,来确定是否储存与包流相关的信息。流缓存器被配置为,确定查找关键字是否储存在流缓存器中,并且,当查找关键字储存在流缓存器中时,检索与查找关键字相关的储存结果并输出储存结果。

Description

用于在网络装置中执行包流查找的流缓存器机制
技术领域
本公开涉及一种计算机网络,更具体地,涉及一种计算机网络内的流量(traffic)转发。
背景技术
计算机网络是互相连接的可交换数据并共享资源的计算机装置的集合。在基于包的网络中,计算机装置通过将数据分成叫做包的小块来交换数据,将这些小块单独在网络上从源装置发送至目的装置。目的装置从包中提取数据,并将该数据组装成其原始形式。将数据分成包使得源装置能够仅重新发送那些在传输过程中可能丢失的单独的包。
用中间网络装置(例如,网关、防火墙、交换机和路由器)在源装置和目的装置之间发送包。当网络接收进入的包或发送离开的包时,网络装置可能对包应用一个或多个过滤器,以在某些条件下在包上执行定义的操作。为了识别过滤器的条件以应用于给定的包,网络装置可从包中提取信息,例如,源或目的互联网协议(IP)地址、源或目的端口、以及协议。然后,网络装置对安装于网络装置内的过滤器条件执行搜索,以确定所提取的信息是否满足由任何过滤器条件指定的标准。
一种传统的识别应用于包的匹配的过滤器条件的方法包括,对所提取的信息(即,关键字)的至少一部分应用哈希函数,以在哈希表中对所提取的信息确定可能的位置。关键字相当于具有预定义长度的提取信息的一部分(例如,源或目的IP地址的前缀)。即,将一个或多个关键字输入至哈希函数中,以在哈希表中产生一个或多个可能的位置。然后,网络装置查找哈希表中的每个可能的位置,以确定是否在任何可能的位置中找到该关键字。当对可能的位置定义了一个或多个过滤器条件时,在哈希表中找到关键字。根据最长前缀匹配算法,路由器应用与最长前缀相关的过滤器条件,对于该最长前缀,对哈希表中相应的关键字找到匹配的对象。在哈希表中连续地对每个关键字执行查找,使得一次在哈希表中的一个位置查找所提取的信息的每个可能的位置。
为了提高网络装置识别应用于包的过滤器条件的速度,可将网络装置配置为,将哈希表中的查找数量减到最小。在一些情况中,网络装置可利用布隆过滤器作为该关键字是否肯定不在哈希表内或者可选地该关键字可能被储存在哈希表中的初始评估。以此方式,当关键字肯定不在哈希表内时,布隆过滤器可提供用于避免哈希表的在计算上昂贵的搜索的有效机制。传统地,将布隆过滤器实现为在数组的每个条目储存一个1位值的位数组,其中,每个1位条目可对应于相应哈希表的不同“桶(buckle)”,并表示对于该特定“桶”在哈希表中存在至少一个条目。当在硬件中实现布隆过滤器时(例如,当在多个存储体中储存位数组时),网络装置可并行地在布隆过滤器中对多个关键字执行查找,减少查找全部对所提取的信息产生的关键字所需的时钟周期的总数。然而,当大量搜索关键字都需要从相同的存储体读取时,存储体的队列会变满,并迫使路由器的调度部件停止,使得调度器不会对布隆过滤器的任何存储体发送查找请求,直到队列不再满为止。因此,具有满的队列的存储体会是限制布隆过滤器查找的总吞吐量和网络装置的操作的瓶颈。
发明内容
总的来说,描述了一种用于识别包流的技术,其限制网络装置的总吞吐量,并将与有问题的包流相关的信息选择性地储存在网络装置的缓存单元中。描述了一种网络装置,其中,网络装置可被编程地配置为,基于可配置参数识别适合于储存在缓存器内的包流,并选择性地储存与适合的包流相关的信息。例如,根据本公开的技术,流缓存器可被编程地配置为,至少部分地基于服务属于流的请求所需的哈希表查找量和/或所需的时间的量(例如,时钟周期的数量),来识别适合于储存在缓存器中的包流。然后,流缓存器可被编程地配置为,确定被识别为适合于储存在流缓存器中的包流信息是否储存在流缓存器中,并确定该信息储存在流缓存器中的哪个地方。
在一个实例中,一种方法,包括,用网络装置的流缓存器接收与包流相关的查找关键字,其中,该包流是由网络装置处理的多个包流中的一个,其中,流缓存器储存与由网络装置处理的多个包流中的一部分相关的信息,并且,其中,流缓存器至少通过对由网络装置的布隆过滤器(Bloomfilter)对查找关键字进行的处理应用选择标准,来确定是否储存与包流相关的信息。该方法进一步包括,用流缓存器确定查找关键字是否储存在流缓存器中,并且,当查找关键字储存在流缓存器中时,用流缓存器检索与查找关键字相关的储存结果并输出储存结果。
在另一实例中,一种网络装置,包括:网络接口,被配置为接收包流的包,其中,该包流是由网络装置处理的多个包流中的一个;流缓存器,被配置为接收与包流相关的查找关键字;以及布隆过滤器,被配置为处理查找关键字。流缓存器进一步被配置为,储存与由网络装置处理的多个包流中的一部分相关的信息,并至少通过对由布隆过滤器对查找关键字进行的处理应用选择标准,来确定是否储存与包流相关的信息。流缓存器被配置为,确定查找关键字是否储存在流缓存器中,并且,当查找关键字储存在流缓存器中时,检索与查找关键字相关的储存结果并输出储存结果。
在另一实例中,用指令对计算机可读的储存介质进行编码,该指令使计算装置的一个或多个可编程处理器接收与包流相关的查找关键字,其中,包流是由计算装置处理的多个包流中的一个,其中,计算装置的流缓存器储存与由网络装置处理的多个包流中的一部分相关的信息,并且,其中,流缓存器至少部分地基于对由网络装置的布隆过滤器对查找关键字进行的处理应用选择标准,来确定是否储存与包流相关的信息。该指令进一步使一个或多个可编程处理器确定查找关键字是否储存在流缓存器中,并且,当将查找关键字储存在流缓存器中时,检索与查找关键字相关的储存结果并输出储存结果。
本公开的技术可提供多个优点。例如,该技术以这样的方式对控制器和流缓存器提供程序控制:允许软件来配置在特定装置上执行缓存机制的方式。这可允许缓存机制适应其中配置有网络装置的特定环境。与用布隆过滤器和关键字哈希表处理包流的传统方法相比,至少部分地基于所需哈希表查找的量和/或所需时间的量(例如,时钟周期的数量)选择性地储存与包流相关的信息可增加网络装置的吞吐量和性能。当大量包流共享相同的目的网络地址或几个不同的目的网络地址时,实施本公开的技术而获得的吞吐量的增加可以最大。此外,本公开的技术可使得网络装置能够识别并缓存与最可能影响网络装置的性能的包流相关的信息。限制最可能影响性能的包流信息的缓存可减小提高性能所需的缓存器的大小,降低硬件成本。
在以下附图和说明书中阐述了一个或多个实例的细节。从说明书和附图中,从权利要求书中,其他特征、目的和优点将是显而易见的。
附图说明
图1是示出包括多种网络装置的实例系统的框图,这些网络装置中的任何一个都可执行本公开的技术。
图2是示出包括根据本公开的一个或多个技术配置的过滤器查找块的实例路由器的框图。
图3是更详细地示出路由器的实例过滤器查找块的框图。
图4是更详细地示出路由器的实例布隆过滤器的框图。
图5是更详细地示出路由器的实例流缓存器的框图。
图6A和图6B是示出根据本公开的一个或多个技术执行查找的实例方法的流程图。
具体实施方式
图1是示出包括多种网络装置的实例系统2的框图,这些网络装置中的任何一个都可执行本公开的技术。如图1所示,系统2包括网络10、客户端装置14和服务器装置16。网络10包括路由器12A-12E(统称为“路由器12”),其便于访问与网络10连接的各种网络装置之间的内容,包括客户端装置14和服务器装置16。虽然示出为包括路由器12,但是,在其他实例中,系统2可包括另外的或替代的网络装置,例如网关、交换机、集线器、防火墙、入侵检测/预防(IDP)装置,和/或任何其他类型的便于在各种网络装置之间传输数据的网络设备或装置。虽然关于路由器或其他网络装置进行了描述,但是,任何包括哈希表和一个或多个布隆过滤器的装置可实施这里描述的技术,并且,该技术不应限于路由器或其他网络装置。
网络10使得能够用一个或多个基于包的协议在网络装置之间传输内容,例如,传输控制协议/互联网协议(TCP/IP)。在这方面,网络10可经由离散数据单元(通常叫做“包”)支持数据的传输。结果,网络10可叫做“基于包的”或“包交换的”网络。虽然在本公开中描述为传输、传送或以其他方式支持的包,但网络10可根据任何其他由任何其他协议定义的离散数据单元传输数据,例如,由异步传输模式(ATM)协议定义的单元,或由用户数据报协议(UDP)定义的数据报。
在本实例中,客户端装置14代表对服务器装置16提交服务请求的装置。同样地,服务器装置16代表响应于请求对客户端装置14提供服务的装置的一个实例。客户端装置14和服务器装置16还可参与双向通信会话,在该会话中,服务器装置16从客户端装置14请求服务,并且客户端装置14对服务器装置16提供所请求的服务。以此方式,客户端装置14和服务器装置16可分别都用作服务器和客户端。客户端装置14可代表终点装置,例如移动装置(例如,膝上型计算机、台式计算机、或便携式电话)、个人电脑、计算终端、用于提供基于互联网的电视服务的支持互联网的电视或装置、或其他这种装置。服务器装置16可代表网络服务器、文件服务器、对等装置(例如,另一用户的计算装置)、数据库服务器、打印服务器、或其他客户端装置向其请求服务的装置。
客户端装置14经由网络10对服务器装置16提交请求。在图1所示的实例中,客户端装置14与路由器12A通信地耦合。在其他实例中,可经由另外的网络装置将客户端装置14与路由器12A通信地耦合,例如接入线路,无线基础设施和回运(backhaul)网络,等等。网络10的路由器12被配置为确定通过网络10到达各种目的地的路线,例如服务器装置16。路由器12执行路由选择协议,以确定通过网络10的路线,并与其他路由器12共享所确定的路线。在图1的实例中,路由器12A确定有两条到达服务器装置16的路线。从路由器12A开始到达服务器装置16的第一条路线包括路由器12D、路由器12E和服务器装置16。从路由器12A开始到达服务器装置16的第二条路线包括路由器12B、路由器12C、路由器12E和服务器装置16。通常,路由器12A包括控制平面,该控制平面执行路由协议以学习网络10的拓扑并选择这些路线中的一条而不是其他条。一旦从以服务器装置16为目标的客户端装置14接收到数据,路由器12A的数据平面对包内的关键字信息执行查找功能,并沿着所选择的路线转发数据。
在转发包之前,路由器12可对包应用一个或多个过滤器。在一些实例中,过滤器规定一个或多个条件和一组将在匹配该条件的包上执行的动作。在各种实例中,该条件规定一个或多个源互联网协议(IP)地址、目的IP地址、源端口、目的端口、协议,和/或包的其他字段。执行的动作可包括以下动作中的一个或多个:对包添加标签(进行多协议标签交换(MPLS)以隧道传输包),去除或交换包上的标签,对包检查病毒,在包上执行深度包检查,在包上执行服务质量处理(例如,相对于其他包而优先化该包),阻止或丢弃包(例如,当已将与包相关的源或目的确定为是恶意的时),或其他服务。
在一些实例中,当转发单独的包以识别一个或多个应用于包的过滤器时,数据平面执行最长前缀匹配算法。例如,可将过滤器储存在过滤器表中,并且,过滤器规定与包匹配的标准,例如网络前缀。共同地,由过滤器规定的标准控制将由数据平面对包应用哪个过滤器。作为一个实例,路由器12A可无需用各服务器装置16的特定的源或目的网络地址(例如,10.1.1.8)来配置,而是可被配置为使得对于具有与某一前缀相匹配的源或目的地址(例如,与网络前缀10.1/16相应的地址的范围)的包,由路由器12A将某过滤器应用于这些包。通常,路由器12A的数据平面用最长前缀匹配算法来识别与匹配所接收的包的关键字信息的最长前缀相对应的过滤器表中的条目。路由器12A应用被识别为储存由所接收的包的关键字信息满足的最长匹配前缀的过滤器表的条目中规定的一组过滤器。
在一些实例中,路由器12用哈希单元来识别与特定包匹配的过滤器。在一个实例中,哈希单元支持从/0到/128的前缀长度(其用作哈希单元中的关键字值)。在一些实例中,具有从/0到/64的长度的前缀占用哈希单元的桶(bucket)的单个单位,同时,具有从/65到/128的前缀长度的前缀在哈希单元中占用两个连续单位,称作双单位。在一些实例中,哈希单元的哈希表物理地支持64K的单个单位,每个桶具有两个单位。在一些实例中,如果所有前缀具有单个单位,那么每个哈希表可支持大约80%至90%(例如,51000至57600个条目)的负载。在一些实例中,如果所有前缀具有双单位,那么哈希单元的每个哈希表可支持大约40%至45%(例如,28800个条目)的负载。哈希单元的物理哈希表可称作关键字哈希表。在一些实例中,每个关键字哈希表具有大约16K单位和相关结果的容量。2011年9月22日由Keen等人提交的名为“动态调节哈希表容量”的美国专利申请第13/239,774号描述了哈希单元和相应哈希表的一个实例实现方式,其全部内容结合于此以供参考。
当向关键字哈希表添加值时,哈希单元将关键字值和相关的值储存在关键字值所映射的桶的单位之一中。例如,相对于路由器12A的过滤器,源或目的网络地址的不同长度前缀用作关键字值,而每个相关的值代表与特定关键字值匹配的过滤器的特定条件(term)。因此,路由器12A将目的地址和相关的值储存在桶的单位中,哈希函数将目的地址映射至该桶。相关的值可规定网络接口或与目的地址匹配的过滤器的特定条件。通过将前缀储存在单位中,如果两个或更多个前缀映射至相同的桶,那么路由器12A可确定哪个单位储存与特定长度前缀相关的值。
在一些实例中,路由器12A包括多个哈希单元,以实施布隆过滤器。布隆过滤器通常是用于储存是否已经储存(或之前已经处理)特定值的指示的数据结构。在一个实例中,布隆过滤器是在数组的每个条目储存一个1位值的位数组。布隆过滤器数据结构通常被设计为使得错误否定被避免,同时错误肯定的可能性悬而未决(尽管较小)。即,良好设计的布隆过滤器可提供是否尚未储存特定值的指示,但是,在一些情况下,可能提供错误的已经储存值(实际上,当尚未储存值时)的指示。
当路由器12A在例如关键字哈希表中储存关键字值时,路由器12A向布隆过滤器添加关键字值。通常,当用特定值询问布隆过滤器时,布隆过滤器提供是否该值被储存在布隆过滤器中的指示。在一个实例中,如果特定值被储存在布隆过滤器中,那么查找返回值1,如果特定值未储存在布隆过滤器中,那么返回值0。虽然当使用布隆过滤器时错误肯定是可能的,但是,由于布隆过滤器的设计的原因,错误否定通常是不可能的。因此,一旦接收到包括用于包的源或目的地址的前缀的关键字值,路由器12A首先确定该关键字值是否储存在布隆过滤器中,如果是的话,确定该关键字值是否实际上储存在关键字哈希表中。
在一些实例中,可在硬件中(例如,当位数组储存在多个存储体中时)或在软件中实现布隆过滤器。当在硬件中实现时,路由器12A可并行地对多个关键字执行查找,这可减小查找关键字所需的时钟周期的总数。然而,当大量搜索关键字都需要从相同的存储体读取时(例如,当存在大量指向相同目的网络地址的包流时),存储体的队列可能变满,防止了对布隆过滤器的任何存储体发布额外的查找请求,直到队列不再满为止。因此,具有满队列的存储体会变成限制布隆过滤器查找和路由器的总吞吐量的瓶颈。在本公开中,具有满队列的存储体可叫做“热存储体”。虽然关于布隆过滤器进行描述,但是,本公开的技术可应用于任何存储结构,例如,硬件实施的哈希表。可从任何存储结构的相同存储体请求大量读取。因此,任何存储结构可能遭遇“热存储”,其可能限制存储结构的总吞吐量。
根据本公开的技术,路由器12A可识别这样的包流:其要求多于可配置阈值数量的时钟周期来进行处理或要求关键字哈希表中的多于可配置阈值数量的查找。路由器12A配置有管理对布隆过滤器的查找请求的调度元件。当布隆过滤器的队列满了时,调度元件可不将额外的关键字引导至队列,从而增加处理关键字所需的时钟周期的数量。一旦关键字被处理并从关键字哈希表检索到结果,路由器12A的控制器确定在当过滤器查找单元首先接收到包信息时和当从关键字哈希表检索到结果时之间过去的时钟周期的数量。如果时钟周期的数量超过可配置阈值,那么控制器将包流信息标记为适合于储存在路由器12A的流缓存器中。控制器还可确定在关键字哈希表中确定未发现匹配或发现匹配并检索结果所需的查找的数量。当查找的数量超过查找的可配置阈值数量时,控制器将包流信息标记为适合于储存在流缓存器中。
在一些实例中,处理包流信息所需的时钟周期的数量和关键字哈希表中的查找的数量可能均超过各自的可配置阈值。然而,当超过任一阈值时,控制器可将包流信息标记为适合于储存在流缓存器中。在各种情况中,路由器12A可被配置为,在控制器将包流信息标记为适合于储存在流缓存器中之前,要求两个阈值均被超过。典型地,路由器12A将目的网络地址和从关键字哈希表检索的结果储存在流缓存器中。然而,路由器12A可被配置为,储存关键字和结果信息的任何组合。例如,路由器12A可用源网络地址和目的网络地址的组合作为流缓存器中的关键字。在另一实例中,路由器12A可用目的网络地址和端口号的组合作为流缓存器中的关键字。
当路由器12A接收后续的具有与之前处理的包相同的关键字信息(例如,相同的目的网络地址)的包或包流时,路由器12A可首先查找流缓存器中的目的网络地址或其他关键字。如果在流缓存器中找到该关键字,那么控制器可使用与储存在流缓存器中的关键字相关的结果,并绕过布隆过滤器或关键字哈希表中的查找的执行。以此方式,本公开的技术可减少在布隆过滤器和关键字哈希表中执行的查找的数量,从而减少热存储的出现并提高网络装置的吞吐量。
虽然主要关于路由器12A进行描述,应理解,可用路由器12、客户端装置14、服务器装置16中的任何一个,或任何其他将执行哈希功能的计算装置来实现本公开的技术。此外,可将本公开的技术应用于其他背景和用于其他用途。例如,当执行包查找和转发时,路由器12A也可应用本公开的技术。当转发单独的包时,路由器12A的数据平面可执行最长前缀匹配算法,以识别最匹配包的目的地址的数据平面的转发信息库(FIB)的条目。在各种情况中,路由器12A将FIB储存在具有多个哈希表的哈希单元中,并与哈希表一起执行一个或多个布隆过滤器。从而,路由器12A可应用本公开的技术,以编程地配置FIB的哈希单元,从而动态地绕过一个或多个布隆过滤器。
图2是示出包括根据本公开的一个或多个技术配置的过滤器查找块40的实例路由器20的框图。为了说明的目的,下面可在图1的实例所示的系统2的背景下描述路由器20,并且,路由器20可代表任何一个路由器12。在本实例实施方式中,路由器20包括控制单元22、接口卡(IFC)24A-24N(统称为“IFC24”)和服务卡30。
路由器20典型地包括机架(为了易于图示的目的而未在图2的实例中示出),其具有用于容纳一组卡的多个槽,包括IFC24和服务卡30。可将每个卡插入机架的相应的槽,以经由总线、背板或其他电通信机制使卡与控制单元22通信地耦合。IFC24经由入站网络链路26A-26N(统称为“入站链路26”)和出站网络链路28A-28N(统称为“出站链路28”),发送和接收包流或网络流量。在一些实例中,用于共同IFC的入站链路26和出站链路28对于在全双工模式中操作的IFC形成共同的物理通信介质。即,在一些实例中,每个IFC24与可基本上同时发送和接收数据的各通信介质耦合。在其他实例中,入站链路26和出站链路28对各自的IFC24形成单独的物理介质。
控制单元22可包括执行软件指令的一个或多个处理器(未在图2中示出),例如,那些用来定义软件或计算机程序的,储存于计算机可读存储介质(同样,未在图2中示出)上,例如,存储装置(例如,磁盘驱动器,或光驱)、或存储器(例如,闪存、随机存取存储器或RAM)、或储存使可编程处理器执行这里描述的技术的指令的任何其他类型的易失性或非易失性存储器。或者,控制单元22可包括专用硬件,例如,一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用特殊处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或用于执行这里描述的技术的一个或多个前述专用硬件实例的任何组合。
还可将控制单元22分成逻辑或物理“平面”,以包括第一控制或路由平面32和第二数据或转发平面34。在一些实例中,可将控制单元22进一步分成第三逻辑或物理“平面”,服务平面。即,控制单元22可执行三个不同的功能,例如,路由、转发和服务功能,这可以以逻辑方式,例如,作为在同一组硬件元件上执行的不同的软件实例,或物理方式,例如,作为在硬件中静态地执行功能或动态地执行软件或计算机程序以执行功能的不同的物理专用硬件元件,或逻辑和物理实现方式的一些组合。
控制单元22的控制平面32可提供路由器20的路由功能。在这方面,控制平面32可代表执行路由协议36的控制单元22的硬件或硬件和软件的组合。例如,路由协议36可包括中间系统到中间系统(IS-IS)、开放最短路径优先(OSPF)、路由信息协议(RIP)、边界网关协议(BGP)或其他路由协议。通过执行路由协议36,控制平面32识别通过网络的现有路线,并确定新的通过网络的路线。控制平面32将路由信息储存在路由信息库(RIB)38内。路由信息可包括定义网络的拓扑的信息,例如,图1的网络10。控制平面32可解析由路由信息定义的拓扑,以选择或确定一个或多个通过网络10的路线。
然后,控制平面32可根据这些路线更新数据平面34,以用储存在转发信息库(FIB)46内的转发信息对数据平面34编程。转发信息将关键字信息(例如,IP地址或IP前缀或标签)与下一跳(例如,相邻路由器)相关联,并最终与和出站链路28耦合的路由器20的输出接口相关联。当转发包时,数据平面34处理从包的报头提取的关键字,以遍历储存于FIB46中的转发信息并选择将包转发至其的下一跳。基于所选择的下一跳,数据平面34识别与该下一跳耦合的一组一个或多个出站链路28。
在经由一个或多个出站链路28转发包之前,数据平面34可对包应用一个或多个过滤器。如图2所示,数据平面34包括过滤器查找块40、过滤器42、和最长前缀匹配算法模块(LPM模块)44。过滤器42包括为一个或多个不同的网络地址前缀定义的一个或多个过滤器。在一些实例中,过滤器规定一个或多个条件和将在与网络地址前缀相匹配的包上执行的一组动作。该动作可包括以下动作中的一个或多个:对包添加标签,去除或交换包上的标签,对包检查病毒,在包上执行深度包检查,在包上执行服务质量处理,阻止或丢弃包,或其他服务。
通常,最长前缀匹配算法模块44执行最长前缀匹配算法,并被过滤器查找块40用来识别对于网络地址的最长定义前缀来说匹配于网络地址的过滤器42的条件。根据最长前缀匹配算法,从网络地址中产生一定数量的前缀。从网络地址产生的前缀的数量可由管理员配置,或者,例如,可基于用于该算法的网络地址的类型而改变。在一个实例中,基于网络地址产生16个或更少的前缀,每个具有不同长度。最长前缀匹配算法的一个目的是,找到具有匹配的最长前缀。按照此目的,执行最长前缀匹配算法的硬件或软件首先执行对最长前缀(即,最具体的前缀)的搜索。如果未发现匹配,那么对下一个最长前缀执行搜索。此过程是一个迭代过程,其继续直到发现匹配为止,或直到已对所有可能的前缀执行搜索为止。
过滤器查找块40储存为其定义了至少一个过滤器的前缀。在一些实例中,可将储存于过滤器查找块40中的前缀与前缀长度连接(例如,可将前缀10.1与前缀长度/16连接,用于过滤器查找块40中的条目“10.1/16”)。过滤器查找块40还对由路由器20接收的每个包产生一组前缀,并用最长前缀匹配算法对每个包搜索相关的值。即,过滤器查找块40对每个所产生的前缀执行搜索,从最长前缀开始并移动至最短前缀,直到找到匹配为止。在一个实例中,可用过滤器查找块40对源地址(例如,源介质访问控制地址、源IP地址、或源标识符)或目的地址(例如,目的介质访问控制地址、目的IP地址、或目的标识符)执行最长前缀匹配。
路由器20的管理员可配置策略37,控制平面32可用该策略37编程地配置过滤器查找块40执行过滤器查找的方式。例如,控制平面32可从数据平面34接收系统性能信息,其反映过滤器查找块40的性能。基于策略37和系统性能信息,控制平面32以在各种情况下可提高过滤器查找块40的性能的方式配置过滤器查找块40。即,控制平面32可选择一种策略37以配置过滤器查找块40。可由控制平面32配置的过滤器查找块40的一个方面包括由过滤器查找块40用来确定包何时适合于储存在过滤器查找块40的流缓存器中的阈值以及过滤器查找块40如何管理储存于流缓存器中的信息。参考图3至图6描述过滤器查找块40的其他细节。
图3是更详细地示出路由器20的一个实例过滤器查找块40的框图。为了图示的目的,下面可在图2的实例中示出的路由器20的背景下描述过滤器查找块40。在此实例实施方式中,过滤器查找块40包括关键字管理器50、前缀查找模块52、布隆过滤器54A和54B(统称为“布隆过滤器54”)、哈希控制器56、关键字哈希表58和流缓存器60。可基于从与路由器20相互作用的管理员接收的输入来配置前缀查找模块52、布隆过滤器54、关键字哈希表58和流缓存器60的条目。例如,如果管理员在路由器20上配置新的过滤器,那么过滤器查找块40将与该过滤器相关的一个或多个前缀储存在关键字哈希表58内,并在每个布隆过滤器54中添加条目,以表示在关键字哈希表58中存在对于该前缀相应的匹配条目。
通常,当路由器20接收包时,包括在包中的信息的至少一部分被发送至过滤器查找块40。在一个实例中,包括在包中的源或目的网络地址被发送至过滤器查找块40。关键字管理器50接收信息,并基于该信息生成查找关键字。在一些实例中,查找关键字包括包括在包中的目的网络地址。在其他实例中,查找关键字可包括包括在包的报头信息中的源网络地址、目的网络地址和端口号的任何组合。关键字管理器50向流缓存器60发送命令和查找关键字,以使流缓存器60对查找关键字执行查找。在一些实例中,关键字管理器50以与将查找关键字发送至流缓存器60并行地向前缀查找模块52发送查找关键字。
如果流缓存器60在流缓存器60的哈希表中找到查找关键字的匹配,那么流缓存器60检索与查找关键字相关的储存结果信息,并将结果信息发送至前缀查找模块52。如果流缓存器60未找到关键字的匹配,那么流缓存器60向前缀查找模块52发送表示未找到匹配的消息。
前缀查找模块52至少部分地基于从流缓存器60接收的结果处理查找关键字。例如,当流缓存器60找到匹配并将储存结果信息作为结果发送至前缀查找模块52时,前缀查找模块52不产生一组基于查找关键字的前缀。相反,前缀查找模块52将从流缓存器60接收的结果信息发送至哈希控制器56。
当流缓存器60未找到匹配时,前缀查找模块52向哈希控制器56发送消息,该消息指示哈希控制器56至少将查找关键字的时钟周期计数器初始化至0,并用查找关键字生成一组前缀。在前缀查找模块52中规定了从查找关键字产生的前缀的数量和长度。对于在当时钟周期计数器开始时和当在关键字哈希表58中找到匹配或者确定了在关键字哈希表58中没有查找关键字的匹配(例如,因为在关键字哈希表58中没有找到从查找关键字产生的前缀)时之间过去的每个时钟周期,时钟周期计数器递增。在一些实例中,当前缀查找模块52向布隆过滤器54发送所生成的一组前缀时,时钟周期计数器开始。
在生成前缀查找模块52中所规定的一组前缀之后,过滤块40在每个布隆过滤器54中对所生成的一个或多个前缀执行查找。即,在布隆过滤器54A和布隆过滤器54B中查找整组所生成的前缀。对于在每个布隆过滤器54中查找的每个前缀,返回表示是否在各布隆过滤器54中找到前缀的值。在一个实例中,值1表示找到前缀,值0表示未找到前缀。虽然在图3中示出为包括两个布隆过滤器54A和54B,但是,过滤器查找块40的其他实例可包括一个布隆过滤器或多于两个布隆过滤器。
哈希控制器56确定是否在关键字哈希表58中对每个前缀执行查找。哈希控制器56检查从对每个前缀的布隆过滤器查找返回的值,并识别可能包括在关键字哈希表58中的最长前缀。如果从在布隆过滤器54A和54B中执行的查找返回的两个值均表示该前缀可能包括在关键字哈希表58中,那么哈希控制器56确定该前缀可能包括在关键字哈希表58中。如果从在布隆过滤器54A和54B中执行的查找返回的任一值表示该前缀不包括在关键字哈希表58中,那么哈希控制器确定该前缀不包括在关键字哈希表58中。从两个布隆过滤器中对单个前缀得到错误肯定结果的可能性比如果仅使用一个布隆过滤器时低。因为,仅当来自两个布隆过滤器54的返回值均表示前缀可能在该组中时,哈希控制器56考虑在关键字哈希表58中对前缀执行查找,所以,与当使用一个布隆过滤器时相比,当使用两个布隆过滤器时,可减少在关键字哈希表58上执行的不需要的或不成功的查找的数量。
当哈希控制器56识别出可能包括在关键字哈希表58中的至少一个前缀时,哈希控制器56初始化计数器,该计数器对在关键字哈希表58中执行的查找的数量进行计数,直到已经确定结果为止。哈希控制器56识别可能在关键字哈希表58中的最长前缀,用所识别的前缀在关键字哈希表58中执行查找,并递增关键字哈希表查找计数器。当哈希控制器56执行查找时,哈希控制器56对前缀应用哈希函数,以识别如果前缀被储存在关键字哈希表58中那么前缀应位于关键字哈希表58中的位置。如果未在关键字哈希表58中找到前缀(例如,由于从布隆过滤器接收的错误肯定指示),那么,哈希控制器56识别可能在关键字哈希表58中的下一个最长前缀,用该下一个最长前缀在关键字哈希表58中执行查找,并递增关键字哈希表查找计数器。此过程继续,直到在关键字哈希表58中找到前缀或在关键字哈希表58中未找到更多前缀为止。
当找到匹配或在关键字哈希表58中未找到更多前缀时,哈希控制器56使时钟周期计数器停止。哈希控制器56将时钟周期计数器的值、关键字哈希表查找计数器的值、查找关键字、以及与查找关键字相关的结果发送至流缓存器60。与查找关键字相关的结果包括当找到匹配时从关键字哈希表58中的查找返回的信息,或当未找到匹配时在关键字哈希表58中未找到查找关键字的指示。
流缓存器60确定时钟周期计数器的值是否大于可配置阈值,或者关键字哈希表查找计数器的值是否大于另一可配置阈值。在时钟周期计数器的值大于可配置阈值或关键字哈希表查找计数器的值大于另一可配置阈值的实例中,流缓存器60识别出该查找关键字适合于储存在流缓存器60中。
对于适合于储存在流缓存器60中的包流,流缓存器60至少通过对查找关键字应用哈希函数,来确定在哪里储存查找关键字和结果。哈希结果与流缓存器60的哈希表内的位置(例如桶)相对应。在一个实例中,流缓存器60被实现为具有512个桶的哈希表,每个桶具有2个单位。查找关键字和相关结果的组合占用一个单位。因此,在此实例中,每个桶可储存与两个包流相关的信息,且流缓存器60可储存与1024个包流相关的信息。
在一些情况中,查找关键字和相关结果可能已被储存在与由哈希结果识别的桶相对应的一个或两个单位中。流缓存器60可被编程地配置为,用任意数量的不同算法(包括随机收回和最近最少使用)来选择哪个单位来储存查找关键字和相关结果。在流缓存器60被编程为使用随机收回的实例中,流缓存器60可包括产生随机数(例如0或1)的移位寄存器,该随机数与哈希桶的两个单位中的一个相对应。流缓存器60将查找关键字和相关结果储存在与所产生的随机数相对应的单位中。在流缓存器60被编程为用最近最少使用算法来选择单位以储存查找关键字和相关结果的实例中,流缓存器60保持访问信息,并基于何时最近一次访问单位来标记适合于被替换的单位。流缓存器60识别包括最近最少被访问的或由流缓存器60使用的信息的桶的单位,并将新的查找关键字和相关结果储存在识别出的单位中。
图4是更详细地示出路由器20的实例布隆过滤器54A的框图。为了图示的目的,下面可在图3的实例中示出的过滤器查找块40和图2的实例中示出的路由器20的背景下描述布隆过滤器54A。布隆过滤器54A是路由器20的布隆过滤器的一个实例。在其他实例中,路由器20可包括具有不同结构的布隆过滤器。布隆过滤器54A包括队列70A-70N(统称为“队列70”)、哈希函数72A-72N(统称为“哈希函数72”)、控制器74A-74N(统称为“控制器74”)和存储体(memory bank)76A-76N(统称为“存储体76”)。
每个存储体76是独立的硬件存储体,可与其他的存储体76一起被并行地访问。布隆过滤器54A的数据结构被储存在存储体76中,从而基于对每个与过滤器相关的前缀应用哈希函数的结果,将表示前缀是否可能储存在关键字哈希表58中或肯定不储存在关键字哈希表58中的值跨多个存储体76储存。在一个实例中,存储体76的数量与队列70的数量相同。在另一实例中,存储体76的数量比队列70的数量大(例如,当具有16个队列时具有32个存储体)。通过具有比队列70多的存储体76,可跨更多存储体散布值,从而减小两个不同前缀将需要从同一存储体76中查找的可能性。减少需要从同一存储体76查找的前缀的数量可增加查找操作的并行性,并可减小前缀在一个或多个队列70中的堆积。
布隆过滤器54A从前缀查找模块52接收一组前缀,并将前缀暂时储存在队列70中。每个队列70被配置为储存一定长度的前缀。在一个实例中,队列70包括16个队列,其中,每个队列被配置为储存包括在从前缀查找模块52接收的一组前缀中的16个不同长度前缀中的一个。例如,队列70A可被配置为储存一组16个前缀长度中的最长前缀长度(例如,长度/32的前缀),队列70B可被配置为储存这组16个前缀长度中的第二最长前缀长度(例如,长度/24的前缀),并且,队列70N可被配置为储存这组16个前缀长度中的最短前缀长度(例如,长度/2的前缀)。虽然示出每个队列70具有5个用于储存前缀的“块”,但是,队列70可被配置有能够具有任意数量的用于储存前缀(例如,4个、8个或12个块)的任意量的存储(例如,任意数量的字节)。在各种情况中,块的数量等于前缀查找模块52的相应信用计数器的初始值。
当布隆过滤器54A执行查找时,布隆过滤器54A从队列70去除一组前缀。在一个实例中,队列70被配置为先进先出队列,从而当布隆过滤器54A从一个队列70去除前缀时,布隆过滤器54A去除先被添加至该队列的前缀(即,在队列中达最长时间的前缀)。一旦从各队列70去除一前缀,布隆过滤器54A对该前缀应用相应的一个哈希函数72,以在在其中查找前缀的存储体76内生成一个位置(例如,存储地址)。可在硬件中执行哈希函数72,使得哈希函数72包括相同哈希函数的N种不同的硬件实现方式。在一些实例中,用硬件执行的哈希函数的数量等于队列70的数量。
每个哈希函数72在一个布隆过滤器内是相同的哈希函数,但在布隆过滤器之间可以是不同的。例如,在布隆过滤器54A中执行的哈希函数可与在布隆过滤器54B中执行的哈希函数不同。通过在不同的布隆过滤器中执行不同的哈希函数,与在多个布隆过滤器中执行一个哈希函数相比,减小了所有布隆过滤器将返回错误肯定的可能性。通过为每个队列70在硬件中执行一个哈希函数72,哈希函数72可并行地杂凑(hash)这组前缀中的每个。
通过杂凑前缀来产生的值是布隆过滤器的索引(index)。将该索引传递至相应的一个控制器74。该索引用作存储地址。控制器74基于该索引从存储体76执行读取。在一个实例中,控制器74检查索引的前五位,以确定哪一个存储体76用于查找。控制器74也可在硬件中实施,并且,控制器74的数量可与队列70的数量相同。通过在硬件中实施控制器74并实施与队列70的数量相同的数量的控制器74,控制器74可确定多个存储体76中的适当的一个,在这些存储体76中,对这组前缀中的每个的索引值并行地从存储体76执行读取。
在一些情况下,一组前缀中的两个或更多个前缀可能需要在同一个存储体76中查找。在这些情况下,典型地,在一个时钟周期中,在一个存储体76上执行一次查找,并在下一个时钟周期中,在该一个存储体76上执行第二查找。例如,如果从队列70A检索第一前缀并从队列70B检索第二前缀,且两个前缀都需要在存储体76B中查找。在此实例中,控制器74A可在第一时钟周期中在存储体76B中查找第一前缀,控制器74B可在第二时钟周期中在存储体76B中查找第二前缀。
在第二时钟周期期间,布隆过滤器54A可从队列70A检索另一前缀,因为查找在之前检索的前缀上执行。以此方式,每个队列70的长度可以是不同的。在第二时钟周期期间,前缀查找模块52可向布隆过滤器54A发送额外的一组前缀,然后将其储存在队列70中。如果几个前缀需要从同一存储体76中查找,那么一个或多个队列70可能填满(即,热存储)。
在由每个控制器74执行查找之后,控制器74将查找结果发送至过滤器查找块40的哈希控制器56。例如,当控制器74A对从队列70A检索的前缀完成查找时,控制器74A将查找结果发送至哈希控制器56。查找结果表示前缀是否可能储存在关键字哈希表58中或肯定不储存在关键字哈希表58中。
图5是更详细地示出路由器20的实例流缓存器60的框图。为了图示的目的,下面可在图3的实例中示出的过滤器查找块40和图2的实例中示出的路由器20的背景下描述流缓存器60。流缓存器60是路由器20的流缓存器的一个实例。流缓存器60包括缓存器控制器80和流信息82。缓存器控制器80进一步包括策略84和哈希函数86。
流缓存器60是可编程的(例如,由路由器20的控制平面32),以配置策略84,缓存器控制器80对查找关键字应用策略84,以确定与查找关键字相关的包流是否适合于储存在流缓存器60内。策略84包括用来确定查找关键字是否适合于储存在流缓存器60内的阈值,还可包括识别当将查找关键字及其相关结果储存在流信息82中时使用的置换算法的配置信息。在一些实例中,过滤器查找块40将统计信息(例如,吞吐量、缓存命中、等等)输出至控制平面32。控制平面32可至少部分地基于从流缓存器60接收的统计信息,自动地调节储存于策略84中的阈值。
一旦从哈希控制器56接收到查找关键字和相关结果,缓存器控制器80确定查找关键字和相关结果是否适合于储存在流信息82内。如上所述,哈希控制器56保持时钟周期计数器和关键字哈希表查找计数器,并将每个计数器的值发送至流缓存器60。缓存器控制器80从策略84检索每个计数器的阈值,并确定任一计数器的值是否超过各自的阈值。当计数器的值都不超过各自阈值时,缓存器控制器80丢弃查找关键字和相关结果,不将查找关键字和相关结果储存在流信息82中。
当任一计数器的值超过各自阈值时,缓存器控制器80将查找关键字和相关结果标记为适合于储存在流信息82中。缓存器控制器80对查找关键字应用哈希函数86,以在流信息82内产生储存查找关键字和相关结果的位置。流信息82可被实现为包括512个桶的硬件哈希表,每个桶具有两个单位。每个单位储存一个包流的查找关键字和相关结果。在一个实例中,查找关键字是包流的目的网络地址,其包括在包流的每个包的报头信息中。通过对查找关键字应用哈希函数86来产生的位置对应于包括在流信息82中的一个桶的位置。缓存器控制器80将查找关键字和相关结果储存在识别出的桶的两个单位中的一个中。
如果桶的两个单位均包括之前储存的信息,那么缓存器控制器80可选择将用查找关键字和相关结果重写哪个单位。在一个实例中,缓存器控制器80至少通过以下方式使用随机收回算法:产生随机数,并将查找关键字和相关结果储存在与所产生的随机数相对应的单位中(例如,0对应于第一单位,1对应于第二单位)。在另一实例中,缓存器控制器80至少通过以下方式使用最近最少使用算法:保持与每个单位相关的状态信息,并将查找关键字和相关结果储存在包括最近最少使用的信息的单位中。虽然在具有两个单位的桶的背景下进行描述,但是,上述技术也可应用于具有任意数量的单位(例如,4个、10个或50个)的桶。
流缓存器60还从关键字管理器50接收查找关键字。当路由器20接收需要由过滤器查找块40处理的包时,关键字管理器50接收包括在包中的网络地址信息,并将网络地址信息的至少一部分传递至流缓存器60。在一些实例中,传递至流缓存器60的网络地址信息是包的目的网络地址。通常,由关键字管理器50发送至流缓存器60的网络地址信息对应于储存在流信息82中的查找关键字。
缓存器控制器80对所接收的网络地址信息应用哈希函数86,以识别流信息82内的位置并在该位置执行查找。如果在与该位置相关的桶的任一单位处未找到与所接收的网络地址的匹配,则缓存器控制器80确定包流的信息未储存在流缓存器60内,并向前缀查找模块52发送表示未找到匹配的消息。如果对所接收的地址找到匹配,则缓存器控制器80从流信息82检索查找关键字和相关结果,并将查找关键字和相关结果输出至前缀查找模块52。
缓存器控制器80可被配置为刷新储存于流信息82中的信息。例如,如果控制平面32改变与包流相关的路线,则控制平面32可向流缓存器60发送使缓存器控制器80刷新储存于流信息82中的信息的命令。通过刷新储存于流信息82中的信息,流缓存器60自动地开始重新学习与被识别为适合于储存在流缓存器60中的包流相关的信息。
图6A和图6B是示出根据本公开的一个或多个技术执行查找的实例方法的流程图。为了清楚的目的,将关于图1的系统2、图2的路由器20、图3的过滤器查找块40和图5的流缓存器60来描述图6A和图6B所示的方法。路由器20经由一个IFC24和入站链路26从装置(例如,图1的客户端装置14)接收包(90)。数据平面34从包提取信息(92),并将关键字信息发送至过滤器查找块40。在一些实例中,从包的报头提取信息,并且,该信息可包括源或目的网络地址、源或目的端口、或协议。
路由器20的过滤器查找块40的关键字管理器50接收该信息,基于该信息产生查找关键字,并将查找关键字发送至流缓存器60,以确定查找关键字是否位于流缓存器60中(94)。流缓存器60在流信息82内执行查找,以确定与通过查找关键字识别的包流相关的信息是否储存在流缓存器60内。如果在流信息82中找到查找关键字的匹配(94的“是”分支),则流缓存器60将查找关键字和相关结果输出至前缀查找模块52,且前缀查找模块52将该信息输出至哈希控制器56,以输出至控制平面32或数据平面34(96)。即,当找到匹配时,过滤器查找块40将缓存的结果信息返回至路由器20的适当的硬件或软件元件。
如果在流信息82中未找到查找关键字的匹配(94的“否”分支),则前缀查找模块52至少部分地基于由关键字管理器50产生的查找关键字产生一组前缀(98)。前缀查找模块52中规定了从查找关键字产生的前缀的数量和长度。在一个实例中,储存在前缀查找模块52中的前缀信息表示,对于32位IP地址应产生16个前缀,并且前缀长度应是/2、/4、/6、/8、/10、一直到/32。当从关键字信息产生前缀时,前缀查找模块52基于前缀长度屏蔽关键字信息的较低部分的一些位。例如,如果前缀长度是/8且关键字信息是32位IP地址192.168.1.43,那么前缀是192/8,因为用0屏蔽IP地址的低24位。如果前缀长度是/24,那么前缀是192.168.1/24。
前缀查找模块52向哈希控制器56发送消息,以初始化查找关键字的时钟周期计数器(100),并将所产生的这组前缀发送至每个布隆过滤器54以进行查找(102)。对于在当时钟周期计数器被初始化时和当获得关键字哈希表查找结果时之间过去的每个时钟周期递增时钟周期计数器。布隆过滤器54将每个前缀储存在相应队列中,当执行查找时,从每个队列去除前缀,并对前缀应用一个哈希函数72,以对布隆过滤器54的数据结构生成索引(102)。在一个实例中,该索引是布隆过滤器的存储体中的位置的存储地址。每个布隆过滤器54实施不同的哈希函数,其与在其他布隆过滤器54中实施的哈希函数无关。使用不同的哈希函数可减小在两个布隆过滤器54中与相同前缀长度相对应的队列满了的可能性。在在存储体76中查找前缀之后,布隆过滤器54A将查找结果发送至哈希控制器56。
一旦哈希控制器56接收到根据关键字信息生成的每个前缀的以及每个布隆过滤器54的查找结果,哈希控制器56便确定前缀中的被指示为在两个布隆过滤器54中被找到的最长前缀。如果前缀的任一布隆过滤器查找结果指示在布隆过滤器中未找到前缀,那么前缀不在关键字哈希表58中且哈希控制器56丢弃该前缀而不考虑。然后,哈希控制器56在关键字哈希表58中对最长前缀执行查找(104),并确定在关键字哈希表58中是否找到最长前缀(106)。哈希控制器56保持关键字哈希表查找计数器,其对在获得结果之前对特定查找关键字执行的在关键字哈希表58中的查找的数量进行计数。如果在关键字哈希表58中未找到最长前缀(106的“否”分支),那么哈希控制器56递增关键字哈希表查找计数器,并确定在关键字哈希表58中是否查找任何其他前缀(108)。如果存在要查找的其他前缀(108的“是”分支),则哈希控制器56确定被指示为在两个布隆过滤器54中被找到的下一个最长前缀(110),并用该下一个最长前缀在关键字哈希表58中执行查找(104),以确定是否在关键字哈希表58中找到该下一个最长前缀(106)。控制器56继续确定该下一个最长前缀(110),递增关键字哈希表查找计数器,并在关键字哈希表58中执行查找(104),直到在关键字哈希表58中找到前缀为止(106的“是”分支),或直到在关键字哈希表58中查找了所有可能的前缀为止(108的“否”分支)。
控制器56从时钟周期计数器和关键字哈希表查找计数器检索值,以确定自从前缀查找模块52开始处理关键字信息开始已经过去多少个时钟周期(112),并确定在关键字哈希表58中执行了多少次查找(114)。控制器56将查找关键字、从关键字哈希表58获得的相关结果、时钟周期计数器的值和关键字哈希表计数器的值发送至流缓存器60。
流缓存器60的缓存器控制器80对时钟周期计数器的值和关键字哈希表查找计数器的值应用策略84,以确定包流是否适合于储存在流缓存器60内(116)。策略84包括时钟周期计数器的可配置阈值和关键字哈希表查找计数器的可配置阈值。如果时钟周期计数器的值大于相应阈值或者如果关键字哈希表查找计数器的值大于相应阈值,则缓存器控制器80将包流识别为适合于储存在流信息82中(116的“是”分支),并将查找关键字和相关结果储存在流信息82中(118)。如果时钟周期计数器的值不大于相应阈值并且如果关键字哈希表查找计数器的值不大于相应阈值,则缓存器控制器80将包流识别为不适合于储存在流缓存器60中(116的“否”分支)。在任一种情况下,哈希控制器56将关键字哈希表查找结果输出至数据平面34(120)。
以此方式,网络装置的一个实例包括被配置为接收包流的包的一个或多个网络接口,其中,该包流是由网络装置处理的多个包流中的一个。网络装置进一步包括被配置为接收与包流相关的查找关键字的流缓存器和被配置为处理查找关键字的布隆过滤器。流缓存器可被进一步配置为储存与由网络装置处理的多个包流中的一部分相关的信息,至少通过用布隆过滤器对查找关键字的处理应用选择标准来确定是否储存与包流相关的信息,确定查找关键字是否储存在流缓存器中,并且,当查找关键字储存在流缓存器中时,检索与查找关键字相关的储存结果并输出储存结果。
网络装置可进一步包括:前缀查找模块,被配置为接收查找关键字,并基于查找关键字产生一组前缀;以及哈希表,被配置为储存与包流相关的信息;以及控制器。布隆过滤器可被配置为,处理这组前缀中的每个前缀,以识别这组前缀中的一部分,以用于搜索哈希表。控制器可被配置为,用这组前缀的一个或多个识别出的部分搜索哈希表,并从哈希表接收搜索结果。流缓存器可被配置为,至少通过对由布隆过滤器进行的每个前缀的处理和由控制器进行的哈希表的搜索中的一个或多个应用选择标准来确定是否储存查找关键字和结果。前缀查找模块可被配置为,向布隆过滤器发送这组前缀,以由布隆过滤器处理,并向控制器发送消息,以使控制器启动时钟周期计数器。控制器可被配置为,接收该消息并将时钟周期计数器初始化为一个值,对于逝去的每个时钟周期,递增时钟周期计数器的值,直到控制器接收到搜索结果为止,并且,一旦接收到结果,将查找关键字、结果和时钟周期计数器的值发送至流缓存器。流缓存器可被配置为,确定时钟周期计数器的值是否超过阈值,并且,当时钟周期计数器的值超过阈值时,储存查找关键字和结果。流缓存器可包括具有多个桶的流缓存器哈希表,每个桶具有多个单位,其中,多个单位中的每个被配置为储存相应的查找关键字和结果对。流缓存器被配置为,对查找关键字应用哈希函数,以识别流缓存器哈希表的多个桶中的一个,确定识别出的桶的所有多个单位目前是否储存之前的查找关键字和结果对,当所有多个单位目前储存之前的查找关键字和结果对时,选择多个单位中的一个来储存查找关键字和结果,并用查找关键字和结果重写多个单位中的所选择的一个。流缓存器可被配置为,至少通过被配置为产生随机数并基于所产生的随机数选择多个单位中的一个,来选择多个单位中的一个以储存查找关键字和结果。流缓存器可被配置为,至少通过被配置为检索多个单位中的每个的会话(session)信息、基于多个单位的每个相应单位的会话信息确定最近最少使用多个单位中的哪个单位、并基于最近最少使用哪个单位来选择多个单位中的一个,来选择多个单位中的一个以储存查找关键字和结果。控制器可被配置为,将查找计数器初始化为一个值,选择这组前缀的所识别的部分的第一前缀,基于第一前缀搜索哈希表,接收搜索的第一结果,并且,当第一结果表示在哈希表中找到匹配时,将查找关键字、第一结果和查找计数器的值发送至流缓存器。流缓存器可被配置为,将查找计数器的值与阈值进行比较,当查找计数器的值大于阈值时,储存查找关键字和第一结果,并且,当查找计数器的值不大于阈值时,确定不将查找关键字和第一结果储存在流缓存器中。当第一结果表示未在哈希表中找到匹配时,控制器可被配置为,递增查找计数器的值,选择这组前缀的所识别的部分的第二前缀,其中,第二前缀与第一前缀不同,基于第二前缀搜索哈希表,接收搜索的第二结果,并且,当第二结果表示在哈希表中找到匹配时,将查找关键字、第二结果和查找计数器的值发送至流缓存器。
可至少部分地在硬件、软件、固件或其任何组合中实施本公开中描述的技术。例如,可在一个或多个处理器内实施所述技术的各种方面,该一个或多个处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其他等效集成或离散逻辑电路,以及这种元件的任何组合。术语“处理器”或“处理电路”通常可指代任何上述逻辑电路,单独或与其他逻辑电路组合,或任何其他等效电路。包括硬件的控制单元也可执行本公开的一个或多个技术。
可在相同的装置内或在分离的装置内实现这种硬件、软件和固件,以支持在本公开中描述的各种操作和功能。另外,可将任何所述单元、模块或部件一起实施或分开地实施为离散的但是可共同操作的逻辑装置。不同特征作为模块或单元的描述旨在突出不同的功能方面,并且不表示必须用分离的硬件或软件部件来实现这样的模块或单元。相反,可用分离的硬件或软件部件来执行与一个或多个模块或单元相关的功能,或可将所述功能集成在公共的或分离的硬件或软件部件内。
本公开中描述的技术可被包含或编码在包含指令的计算机可读介质中,例如,当执行该指令时,计算机可读存储介质。嵌在或编码在计算机可读介质中的指令可使可编程处理器或其他处理器执行该方法。计算机可读存储介质可包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质,或其他计算机可读存储介质。应理解,术语“计算机可读存储介质”指代物理存储介质,(例如非瞬态介质)而不是信号、载波或其他瞬态介质。
已经描述了本发明的各种实施方式。这些和其他实施方式在所附权利要求书的范围内。

Claims (12)

1.一种方法,包括:
利用网络装置的流缓存器接收与包流相关联的查找关键字,其中,所述包流是由所述网络装置处理的多个包流中的一个,其中,所述流缓存器储存与由所述网络装置处理的所述多个包流中的一部分相关的信息,并且其中,所述流缓存器至少通过对由所述网络装置的布隆过滤器对所述查找关键字进行的处理应用选择标准,来确定是否储存与包流相关的信息;
利用所述流缓存器确定所述查找关键字是否储存在所述流缓存器中;以及
当所述查找关键字储存在所述流缓存器中时,利用所述流缓存器检索与所述查找关键字相关联的储存结果并输出所述储存结果。
2.根据权利要求1所述的方法,进一步包括,当所述查找关键字未储存在所述流缓存器中时:
利用所述网络装置的前缀查找模块接收所述查找关键字;
利用所述前缀查找模块基于所述查找关键字来生成一组前缀;
利用所述布隆过滤器处理该组前缀中的每个前缀,以识别该组前缀中的一部分以用于搜索所述网络装置的哈希表;
利用所述网络装置的控制器,使用该组前缀中的一个或多个识别出的部分搜索所述哈希表;
利用所述控制器从所述哈希表接收搜索的结果;以及
利用所述网络装置的流缓存器,至少通过对每个前缀的处理和所述哈希表的搜索中的一个或多个应用选择标准,来确定是否将所述查找关键字和所述结果储存在所述流缓存器中。
3.根据权利要求1至2中任一项所述的方法,进一步包括:
将该组前缀从所述前缀查找模块发送至所述布隆过滤器,以利用所述布隆过滤器进行处理;
利用所述控制器将时钟周期计数器初始化为一个值;
对于直到所述控制器接收到搜索结果为止逝去的每个时钟周期,利用所述控制器递增所述时钟周期计数器的值;
利用所述流缓存器确定所述时钟周期计数器的值是否超过阈值;以及
当所述时钟周期计数器的值超过所述阈值时,利用所述流缓存器储存所述查找关键字和所述结果。
4.根据权利要求1至3中任一项所述的方法,其中,储存所述查找关键字和所述结果包括:
对所述查找关键字应用哈希函数,以识别所述流缓存器内的位置,其中,所述位置包括多个单位,并且其中,所述多个单位中的每个被配置为储存各自的查找关键字和结果对;
确定所述位置的所有多个单位是否当前储存有之前的查找关键字和结果对;
当所有多个单位当前储存有之前的查找关键字和结果对时,选择所述多个单位中的一个来储存所述查找关键字和所述结果;以及
用所述查找关键字和所述结果重写所述多个单位中的所选择的一个。
5.根据权利要求1至4中任一项所述的方法,其中,选择所述多个单位中的一个来储存所述查找关键字和所述结果包括:
生成随机数;以及
基于所生成的随机数来选择所述多个单位中的一个。
6.根据权利要求1至4中任一项所述的方法,其中,选择所述多个单位中的一个来储存所述查找关键字和所述结果包括:
检索所述多个单位中的每个的会话信息;
基于所述多个单位中的每个相应单位的会话信息,确定所述多个单位中的哪个单位最近最少被使用;以及
基于哪个单位最近最少被使用,选择所述多个单位中的一个。
7.根据权利要求2至3中任一项所述的方法,其中,搜索所述哈希表进一步包括:
利用所述控制器将查找计数器初始化为一个值;
利用所述控制器选择该组前缀的识别出的部分中的第一前缀;
利用所述控制器基于所述第一前缀搜索所述哈希表;
接收对所述第一前缀的搜索的第一结果;以及
当所述第一结果表示在所述哈希表中找到匹配时,将所述查找关键字、所述第一结果和所述查找计数器的值从所述控制器发送至所述流缓存器。
8.根据权利要求7所述的方法,进一步包括:
利用所述流缓存器将所述查找计数器的值与阈值进行比较;
当所述查找计数器的值大于所述阈值时,利用所述流缓存器储存所述查找关键字和所述第一结果;以及
当所述查找计数器的值不大于所述阈值时,利用所述流缓存器确定不将所述查找关键字和所述第一结果储存在所述流缓存器中。
9.根据权利要求7至8中任一项所述的方法,进一步包括,当所述第一结果表示在所述哈希表中未找到匹配时:
递增所述查找计数器的值;
选择该组前缀的识别出的部分中的第二前缀,其中,所述第二前缀与所述第一前缀不同;
利用所述控制器基于所述第二前缀搜索所述哈希表;
接收对所述第二前缀的搜索的第二结果;以及
当所述第二结果表示在所述哈希表中找到匹配时,将所述查找关键字、所述第二结果和所述查找计数器的值从所述控制器发送至所述流缓存器。
10.根据权利要求1至9中任一项所述的方法,其中,确定所述查找关键字是否储存在所述流缓存器中包括:
利用所述流缓存器对所述查找关键字应用哈希函数,以生成哈希结果;
基于所述哈希结果识别所述流缓存器的哈希表内的位置;以及
检索储存在识别出的位置处的值,
其中,当储存在识别出的位置处的值与所述查找关键字的值相匹配时,所述流缓存器确定所述查找关键字储存在所述流缓存器中,并且
其中,当储存在识别出的位置处的值与所述查找关键字的值不匹配时,所述流缓存器确定所述查找关键字未储存在所述流缓存器中。
11.一种网络装置,包括:
一个或多个网络接口,被配置为接收包流的包,其中,所述包流是由所述网络装置处理的多个包流中的一个;
流缓存器,被配置为接收与包流相关联的查找关键字;以及
布隆过滤器,被配置为处理所述查找关键字,
其中,所述流缓存器被进一步配置为,储存与由所述网络装置处理的多个包流中的一部分相关的信息,至少通过对由所述布隆过滤器对所述查找关键字进行的处理应用选择标准,来确定是否储存与包流相关的信息,确定所述查找关键字是否储存在所述流缓存器中,并且,当所述查找关键字储存在所述流缓存器中时,检索与所述查找关键字相关联的储存结果并输出所述储存结果。
12.根据权利要求11所述的网络装置,进一步包括用于执行权利要求1至10中任一项所述的方法的装置。
CN201210587293.9A 2012-02-13 2012-12-28 用于在网络装置中执行包流查找的流缓存器机制 Active CN103248582B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/372,014 US8886827B2 (en) 2012-02-13 2012-02-13 Flow cache mechanism for performing packet flow lookups in a network device
US13/372,014 2012-02-13

Publications (2)

Publication Number Publication Date
CN103248582A true CN103248582A (zh) 2013-08-14
CN103248582B CN103248582B (zh) 2016-08-24

Family

ID=47632742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210587293.9A Active CN103248582B (zh) 2012-02-13 2012-12-28 用于在网络装置中执行包流查找的流缓存器机制

Country Status (3)

Country Link
US (1) US8886827B2 (zh)
EP (1) EP2627047B1 (zh)
CN (1) CN103248582B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844359A (zh) * 2016-09-20 2018-03-27 杭州华为数字技术有限公司 一种仿真方法及装置
CN109815263A (zh) * 2019-01-04 2019-05-28 烽火通信科技股份有限公司 一种模糊查找的数据流识别方法及系统

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9491069B2 (en) * 2012-07-29 2016-11-08 Verint Systems Ltd. System and method of high volume rule engine
US8868841B2 (en) * 2012-09-04 2014-10-21 Facebook, Inc. Statistical cache promotion
US9130885B1 (en) * 2012-09-11 2015-09-08 Mellanox Technologies Ltd. End-to-end cache for network elements
US20140226531A1 (en) * 2013-02-14 2014-08-14 Telefonaktiebolaget L M Ericsson (Publ) Multicast support for EVPN-SPBM based on the mLDP signaling protocol
WO2014150567A1 (en) 2013-03-15 2014-09-25 Asguard Networks, Inc. Industrial network security
WO2014167419A2 (en) 2013-04-11 2014-10-16 Marvell Israel (M.I.S.L) Ltd. Exact match lookup with variable key sizes
US9253171B2 (en) * 2013-06-20 2016-02-02 Raytheon Cyber Products, Llc Distributed network encryption key generation
CN108173763B (zh) * 2013-08-28 2021-06-01 华为技术有限公司 报文处理方法、设备及系统
US10091105B2 (en) * 2013-10-25 2018-10-02 Yaoqing Liu Efficient forwarding information base caching system and method
CN104156380B (zh) * 2014-03-04 2019-03-26 深圳信息职业技术学院 一种分布式存储器哈希索引方法及系统
US9325641B2 (en) 2014-03-13 2016-04-26 Mellanox Technologies Ltd. Buffering schemes for communication over long haul links
US9769290B2 (en) * 2014-05-23 2017-09-19 Intel Corporation Packet flow classification
US10338972B1 (en) * 2014-05-28 2019-07-02 Amazon Technologies, Inc. Prefix based partitioned data storage
US9584429B2 (en) 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
WO2016019183A1 (en) 2014-07-30 2016-02-04 Tempered Networks, Inc. Performing actions via devices that establish a secure, private network
US10284470B2 (en) * 2014-12-23 2019-05-07 Intel Corporation Technologies for network device flow lookup management
US9979650B1 (en) * 2015-03-30 2018-05-22 Juniper Networks, Inc. Forwarding packets using a probabilistic filter and a grouping technique
KR20170006742A (ko) * 2015-07-09 2017-01-18 한국전자통신연구원 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법
US9842132B2 (en) * 2015-10-23 2017-12-12 International Business Machines Corporation Bloom filter index for device discovery
US9979648B1 (en) 2015-12-28 2018-05-22 Amazon Technologies, Inc. Increasing entropy across routing table segments
US10033613B1 (en) 2015-12-29 2018-07-24 Amazon Technologies, Inc. Historically large flows in network visibility monitoring
US9979624B1 (en) 2015-12-29 2018-05-22 Amazon Technologies, Inc. Large flow detection for network visibility monitoring
US10003515B1 (en) 2015-12-29 2018-06-19 Amazon Technologies, Inc. Network visibility monitoring
US10097464B1 (en) * 2015-12-29 2018-10-09 Amazon Technologies, Inc. Sampling based on large flow detection for network visibility monitoring
KR102433764B1 (ko) * 2016-04-19 2022-08-19 삼성에스디에스 주식회사 서비스 모니터링 시스템 및 방법
US9729581B1 (en) 2016-07-01 2017-08-08 Tempered Networks, Inc. Horizontal switch scalability via load balancing
US10042875B2 (en) 2016-09-26 2018-08-07 International Business Machines Corporation Bloom filter index for device discovery
US10530711B2 (en) * 2017-11-09 2020-01-07 Nicira, Inc. Extensible virtual switch datapath
US11606284B2 (en) * 2018-03-06 2023-03-14 Clarkson University System and method for FIB aggregation
US10069726B1 (en) 2018-03-16 2018-09-04 Tempered Networks, Inc. Overlay network identity-based relay
US10116539B1 (en) 2018-05-23 2018-10-30 Tempered Networks, Inc. Multi-link network gateway with monitoring and dynamic failover
US10158545B1 (en) 2018-05-31 2018-12-18 Tempered Networks, Inc. Monitoring overlay networks
US11132400B2 (en) * 2018-07-23 2021-09-28 Microsoft Technology Licensing, Llc Data classification using probabilistic data structures
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
US10959131B2 (en) * 2019-03-11 2021-03-23 Cisco Technology, Inc. Dynamic prioritization of roam events based on latency
US11831670B1 (en) 2019-11-18 2023-11-28 Tanium Inc. System and method for prioritizing distributed system risk remediations
CN111555974B (zh) * 2020-03-19 2023-05-02 视联动力信息技术股份有限公司 一种数据包的处理方法、装置、终端设备和存储介质
CN111629378B (zh) * 2020-06-05 2021-01-19 上海创蓝文化传播有限公司 一种基于布隆过滤器拦截风险短信的方法及装置
US10911418B1 (en) 2020-06-26 2021-02-02 Tempered Networks, Inc. Port level policy isolation in overlay networks
US11563764B1 (en) 2020-08-24 2023-01-24 Tanium Inc. Risk scoring based on compliance verification test results in a local network
CN112052190B (zh) * 2020-09-03 2022-08-30 杭州电子科技大学 一种基于布隆过滤器和二级lru表的固态硬盘热数据识别方法
US11070594B1 (en) 2020-10-16 2021-07-20 Tempered Networks, Inc. Applying overlay network policy based on users
US10999154B1 (en) 2020-10-23 2021-05-04 Tempered Networks, Inc. Relay node management for overlay networks
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US20230224250A1 (en) * 2022-01-12 2023-07-13 Vmware, Inc. Probabilistic filters for use in network forwarding and services
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device
CN116582507B (zh) * 2023-07-12 2023-10-03 华中科技大学 基于可编程交换机的网络微突发流检测方法及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1842042A (zh) * 2005-04-01 2006-10-04 国际商业机器公司 用于搜索网络连接的方法和装置
US20100040066A1 (en) * 2008-08-13 2010-02-18 Lucent Technologies Inc. Network address lookup based on bloom filters
US20100118885A1 (en) * 2008-11-07 2010-05-13 Congdon Paul T Predictive packet forwarding for a network switch

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3199051B2 (ja) 1999-02-10 2001-08-13 日本電気株式会社 キャッシュを有するルータの方路決定装置及びプログラムを記録した機械読み取り可能な記録媒体
JP3591420B2 (ja) 2000-04-07 2004-11-17 日本電気株式会社 ルータにおけるキャッシュテーブル管理装置およびプログラム記録媒体
GB2368228B (en) * 2000-10-18 2003-07-23 3Com Corp Network unit with address cache for frequently occuring network conversations
US7536455B2 (en) * 2001-03-18 2009-05-19 At&T Corp. Optimal combination of sampled measurements
DE60202136T2 (de) 2001-03-19 2005-12-01 International Business Machines Corp. Cache-eintrag-auswahlverfahren und -vorrichtung
US7269663B2 (en) * 2001-09-28 2007-09-11 Intel Corporation Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US8112578B2 (en) 2001-11-01 2012-02-07 Micron Technology, Inc. Low power, hash-content addressable memory architecture
SE525800C2 (sv) * 2002-10-30 2005-04-26 Packetfront Sweden Ab Anordning och router i ett bredbandsnät som arbetar genom överföring av paketflöden, med ett av en central processorenhet omkopplat mjukvaruflöde och ett hårdvaruomkopplat accelerarat flöde
US7200675B2 (en) * 2003-03-13 2007-04-03 Microsoft Corporation Summary-based routing for content-based event distribution networks
US7602785B2 (en) 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
US20050219929A1 (en) * 2004-03-30 2005-10-06 Navas Julio C Method and apparatus achieving memory and transmission overhead reductions in a content routing network
US7730207B2 (en) * 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
US8059551B2 (en) * 2005-02-15 2011-11-15 Raytheon Bbn Technologies Corp. Method for source-spoofed IP packet traceback
US7653670B2 (en) * 2005-11-28 2010-01-26 Nec Laboratories America, Inc. Storage-efficient and collision-free hash-based packet processing architecture and method
JP4732972B2 (ja) * 2006-06-30 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ アドホックネットワーク、ノード、経路制御方法、及び経路制御プログラム
US7801130B2 (en) * 2007-01-31 2010-09-21 At&T Intellectual Property I, L.P. Methods, systems and computer program products for integrating network traffic
EP2160867B1 (en) * 2007-06-29 2011-08-10 Telefonaktiebolaget LM Ericsson (publ) Method of processing event notifications and event subscriptions
CN101398820B (zh) * 2007-09-24 2010-11-17 北京启明星辰信息技术股份有限公司 一种大规模关键词匹配方法
CN100531102C (zh) * 2007-11-02 2009-08-19 华为技术有限公司 路由表调整方法、路由查询方法和装置及路由表存储装置
US8849838B2 (en) 2008-01-15 2014-09-30 Google Inc. Bloom filter for storing file access history
US8005868B2 (en) 2008-03-07 2011-08-23 International Business Machines Corporation System and method for multiple distinct aggregate queries
KR101028470B1 (ko) 2009-05-07 2011-04-14 이화여자대학교 산학협력단 Ip주소 검색을 위한 장치 및 방법
US7990976B2 (en) * 2009-05-13 2011-08-02 Telefonaktiebolaget L M Ericsson (Publ) Negotiated secure fast table lookups for protocols with bidirectional identifiers
US8134934B2 (en) * 2009-09-21 2012-03-13 Alcatel Lucent Tracking network-data flows
US8578049B2 (en) * 2010-10-04 2013-11-05 Futurewei Technologies, Inc. Content router forwarding plane architecture
US20120136846A1 (en) * 2010-11-30 2012-05-31 Haoyu Song Methods of hashing for networks and systems thereof
US9032089B2 (en) * 2011-03-09 2015-05-12 Juniper Networks, Inc. Methods and apparatus for path selection within a network based on flow duration
US8676951B2 (en) 2011-07-27 2014-03-18 Hitachi, Ltd. Traffic reduction method for distributed key-value store

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1842042A (zh) * 2005-04-01 2006-10-04 国际商业机器公司 用于搜索网络连接的方法和装置
US20100040066A1 (en) * 2008-08-13 2010-02-18 Lucent Technologies Inc. Network address lookup based on bloom filters
US20100118885A1 (en) * 2008-11-07 2010-05-13 Congdon Paul T Predictive packet forwarding for a network switch

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844359A (zh) * 2016-09-20 2018-03-27 杭州华为数字技术有限公司 一种仿真方法及装置
CN109815263A (zh) * 2019-01-04 2019-05-28 烽火通信科技股份有限公司 一种模糊查找的数据流识别方法及系统

Also Published As

Publication number Publication date
US20130212296A1 (en) 2013-08-15
EP2627047A1 (en) 2013-08-14
CN103248582B (zh) 2016-08-24
US8886827B2 (en) 2014-11-11
EP2627047B1 (en) 2015-12-23

Similar Documents

Publication Publication Date Title
CN103248582A (zh) 用于在网络装置中执行包流查找的流缓存器机制
US8799507B2 (en) Longest prefix match searches with variable numbers of prefixes
US8630294B1 (en) Dynamic bypass mechanism to alleviate bloom filter bank contention
EP2926513B1 (en) Packet prioritization in a software-defined network implementing openflow
US9825860B2 (en) Flow-driven forwarding architecture for information centric networks
EP2826213B1 (en) Method and system for fast and large-scale longest prefix matching
EP1371187B1 (en) Cache entry selection method and apparatus
US6298381B1 (en) System and method for information retrieval regarding services
US10277481B2 (en) Stateless forwarding in information centric networks with bloom filters
US20190116063A1 (en) Transforming a service packet from a first domain to a second domain
US8555374B2 (en) High performance packet processing using a general purpose processor
US7624226B1 (en) Network search engine (NSE) and method for performing interval location using prefix matching
Zhang et al. Bidirectional multi-constrained routing algorithms
US20150254249A1 (en) System and method for ranking content popularity in a content-centric network
Nallusamy et al. Decision Tree‐Based Entries Reduction scheme using multi‐match attributes to prevent flow table overflow in SDN environment
US10069736B2 (en) Optimized in-network retransmission for information-centric networking protocols
US20050262294A1 (en) Method for policy matching using a hybrid TCAM and memory-based scheme
Lo et al. Flow entry conflict detection scheme for software-defined network
WO2020160007A1 (en) Semantics and deviation aware content request and multi-factored in-network content caching
CN109981460A (zh) 一种面向服务的融合网络、计算、存储一体化方法及装置
US20130235873A1 (en) Traceback packet transport protocol
EP2688242A1 (en) An improved method for computing a constrained path in a network
CN117880182A (zh) 基于mpls-vpn网络的负载均衡方法、装置及计算机设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Juniper Networks, Inc.

Address before: California, USA

Patentee before: Jungle network