CN113542210A - 网络设备和联网方法 - Google Patents
网络设备和联网方法 Download PDFInfo
- Publication number
- CN113542210A CN113542210A CN202110399946.XA CN202110399946A CN113542210A CN 113542210 A CN113542210 A CN 113542210A CN 202110399946 A CN202110399946 A CN 202110399946A CN 113542210 A CN113542210 A CN 113542210A
- Authority
- CN
- China
- Prior art keywords
- match
- action
- header portion
- accumulated
- header
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
在一个实施方式中,网络设备包括接口,该接口被配置为接收包括报头部分的数据分组,至少一个解析器以解析报头部分的数据以产生第一报头部分和第二报头部分,分组处理引擎以获取第一匹配和动作表,响应于第一报头部分,匹配具有第一匹配和动作表中的相应第一转向动作条目的第一索引,响应于第一转向动作条目基于第一报头部分和第二报头部分计算累积查找值,响应于第一转向动作条目获取第二匹配和动作表,响应于累积查找值匹配具有第二匹配和动作表中的相应第二转向动作条目的第二索引,并响应于第二转向动作条目转向分组。
Description
技术领域
本发明涉及计算机网络,具体但非排他地涉及网络设备中的转向。
背景技术
网络接口控制器(NIC)(在某些网络中称为主机总线适配器 (HBA)或主机通道适配器(HCA))是管理计算机(例如服务器) 与网络(诸如局域网或交换结构)之间的通信的单元。NIC将分组从网络定向到计算机中的目的地,例如,通过将分组放置在计算机的存储器单元中的目的地应用的缓冲器中,并定向传出分组,例如将其发送到网络或环回端口。将分组定向到它们的目的地通常被称为转向,其包括确定分组的所需目的地并将分组转发到其目的地。
可以在接收侧缩放(RSS)中使用转向,这是一种网络驱动器技术,其可以在多处理器系统中的多个中央处理单元(CPU)之间有效分配网络接收处理。为了有效地处理接收到的数据,微型端口驱动器的接收中断服务功能安排了延迟过程调用(DPC)。在没有RSS的情况下,典型的DPC会指示DPC呼叫中的所有已接收数据。因此,与该中断相关联的所有接收处理都在发生接收中断的CPU上运行。借助RSS,NIC和微型端口驱动器提供了在其他处理器上调度接收DPC 的能力。而且,RSS设计确保与给定连接关联的处理保持在分配的 CPU上。NIC可以使用5元组报头信息作为输入来实现哈希功能,并且所得到的哈希值提供了选择CPU的方法。
Levy等人的美国专利申请2017/0286292描述了一种具有决策装置的网络元件,该决策装置具有多个具有单个尺寸和两倍尺寸的关联条目的多路哈希表。逻辑管道从一系列接收到的数据项中的每一个中获取搜索关键字。哈希电路将第一哈希函数和第二哈希函数应用于搜索关键字以生成第一索引和第二索引。查找电路读取哈希表中分别由第一索引和第二索引指示的关联条目,并以所有方式将搜索关键字与关联条目进行匹配。当在指示的关联条目中找到搜索关键字和条目关键字之间的匹配时,处理器使用所指示的关联条目的值,根据单一大小和两倍大小的布谷鸟插入过程,将来自关联条目存储的关联条目插入到哈希表中。
Arad等人的美国专利10015090描述了一种用于转向分组的方法,该方法包括在一个或多个初始转向阶段中,基于一个或多个分组特定的属性,接收分组并确定在将分组转向特定目的地中要使用的参数。该方法还包括:在一个或多个后续转向阶段中,确定由在一个或多个初始阶段中确定的参数和一个或多个分组特定属性管理的分组的特定目的地的身份;以及将分组转发到所确定的特定目的地。
美国专利'090描述了通过网络接口控制器(NIC)进行分组转向。转向可选地包括基于分组的报头确定分组被转发到的目的地。目的地可以例如通过虚拟单元身份(例如虚拟HCA-ID)以及流接口(例如,无限宽带队列对(QP)或以太网接收环)来识别。在一些实施方式中,分组转向单元在确定分组的单个目的地时执行多级转向过程。多级转向过程包括多个级,其中基于分组特定信息(例如,分组中的地址信息)执行表查找。分组特定信息可以包括分组中的信息和/或分组中不包括的关于分组的信息,例如通过其接收分组的端口。注意,除了单个目的地之外,多级转向过程还可以将分组转发到其他目的地。此外,可以使用单个阶段来将分组转向到多个附加目的地。
使用多个阶段将分组转发到其目的地,允许将转向过程适应要处理的特定分组。在每个阶段中,可选地选择下一个查找阶段的参数,以便在每个阶段中仅查询相关参数。因此,转向表更小,分组转向单元的硬件更简单,并且转向配置更灵活。在一些实施方式中,不同的分组在不同数量的阶段中被转向到它们的目的地。对不同的分组使用不同数量的阶段可实现更有效的转向,将更多的阶段应用于需要复杂转向的分组,并允许低延迟转发一些分组。通过允许在多个不同阶段中查询分组信息以进行转向,针对某些分组所查询的分组信息的量可以大于针对其他分组所查询的分组信息的量,从而允许在转向过程中具有更大的灵活性。另外,转向可以涉及用于不同分组的不同分组字段。例如,在通过转向单元执行负载平衡时,针对需要在CPU内核之间进行负载平衡的特定流的分组转向可以考虑一个或多个字段,例如源和目的地IP地址字段和/或UDP或TCP端口字段。对于不需要负载平衡的其他流,转向单元根本不检查这些字段,从而可以更快地实现这些其他流的转向。
发明内容
根据本公开的实施方式,提供了一种网络设备,包括:接口,其被配置为接收包括报头部分的数据分组;至少一个解析器,其被耦合为接收所述分组的报头部分的数据,并被配置为解析所述报头部分的数据,以产生第一报头部分和第二报头部分;存储器,其被配置为存储多个匹配和动作表,每个匹配和动作表包括相应的索引和与所述相应的索引中的每个索引相对应的相应的转向动作条目,以及分组处理引擎,其被耦合为接收所述第一报头部分和所述第二报头部分,并且被配置为从所述存储器中获取所述多个匹配和动作表中的第一匹配和动作表,响应于所述第一报头部分,匹配具有在所述第一匹配和动作表中相应的第一转向动作条目的第一索引,响应于所述第一转向动作条目,基于所述第一报头部分和所述第二报头部分计算累积查找值,响应于所述第一转向动作条目,从所述存储器中获取所述多个匹配和动作表中的第二匹配和动作表,响应于所述累积查找值,匹配具有在所述第二匹配和动作表中相应的第二转向动作条目的第二索引,并且响应于所述第二转向动作条目转向所述分组。
进一步根据本公开的实施方式,所述第一转向动作条目指示应基于所述第二报头部分来计算所述累积查找值。
仍进一步根据本公开的实施方式,当在所述第二匹配和动作表中执行匹配时,所述第一转向动作条目指示所述分组处理引擎使用所述累积查找值。
另外,根据本公开的实施方式,转向动作条目指示所述分组处理引擎重置所述累积查找值;以及所述分组处理引擎被配置为重置所述累计查找值。
此外,根据本公开的实施方式,当在所述匹配和动作表之一中执行匹配时,转向动作条目指示所述分组处理引擎不使用所述累积查找值。
进一步根据本公开的实施方式,所述至少一个解析器还被配置为解析所述报头部分的数据,以产生第三报头部分,并且所述分组处理引擎被配置为获取所述多个匹配和动作表中的第三匹配和动作表,并且响应于所述第三报头部分,匹配具有所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
仍进一步根据本公开的实施方式,所述分组处理引擎被配置为基于所述第一报头部分,所述第二报头部分和所述第三报头部分来计算所述累积查找值。
另外,根据本公开的实施方式,所述分组处理引擎被配置为响应于所述第一报头部分,计算第一哈希值,响应于所述第一哈希值,匹配所述第一匹配和动作表中的第一索引,响应于所述第二报头部分,计算第二哈希值,并且响应于所述第一转向动作条目,基于所述第一哈希值和所述第二哈希值计算所述累积查找值。
此外,根据本公开的实施方式,所述第一转向动作条目指示应基于所述第二哈希值来计算所述累积查找值。
进一步根据本公开的实施方式,当在所述第二匹配和动作表中执行匹配时,所述第一转向动作条目指示所述分组处理引擎使用所述累积查找值。
仍进一步根据本公开的实施方式,转向动作条目指示所述分组处理引擎重置所述累积查找值,以及所述分组处理引擎被配置为重置所述累计查找值。
另外,根据本公开的实施方式,当在所述匹配和动作表之一中执行匹配时,转向动作条目指示所述分组处理引擎不使用所述累积查找值。
此外,根据本公开的实施方式,所述至少一个解析器还被配置为解析所述报头部分的数据,以产生第三报头部分,并且所述分组处理引擎被配置为响应于所述第三报头部分,计算第三哈希值,从所述存储器中获取所述多个匹配和动作表中的第三匹配和动作表,并且响应于所述第三哈希值,匹配具有在所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
进一步根据本公开的实施方式,所述分组处理引擎被配置为基于所述第一哈希值,所述第二哈希值和所述第三哈希值来计算所述累积查找值。
仍进一步根据本公开的实施方式,所述第一转向动作条目包括以下中的任意一个或多个:转发要由至少一个选择的中央处理单元处理的分组;以及将所述分组转发到至少一个选择的目的地;丢弃所述分组;将所述分组转发到指示的目的地;使用另一个匹配和动作表继续进行处理;将当前哈希值添加到所述累积查找值;将报头部分的数据添加到所述累积查找值;当执行匹配时使用所述累积查找值;当执行匹配时不使用所述累积查找值;使用所述报头部分的特定部分;或当计算哈希时使用所述报头部分的特定部分。
根据本公开的另一实施方式,还提供一种联网方法,包括:接收包括报头部分的数据分组;解析所述报头部分的数据,以产生第一报头部分和第二报头部分;存储多个匹配和动作表,每个匹配和动作表包括相应的索引和与所述相应的索引中的每个索引相对应的相应的转向动作条目;获取所述多个匹配和动作表中的第一匹配和动作表;响应于所述第一报头部分,匹配具有在所述第一匹配和动作表中相应的第一转向动作条目的第一索引,响应于所述第一转向动作条目,基于所述第一报头部分和所述第二报头部分计算累积查找值,响应于所述第一转向动作条目,获取所述多个匹配和动作表中的第二匹配和动作表,响应于所述累积查找值,匹配具有在所述第二匹配和动作表中相应的第二转向动作条目的第二索引,并且响应于所述第二转向动作条目转向所述分组。
另外,根据本公开的实施方式,该方法包括:解析所述报头部分的数据,以产生第三报头部分;获取所述多个匹配和动作表中的第三匹配和动作表;以及响应于所述第三报头部分,匹配具有所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
此外,根据本公开的实施方式,该方法包括:响应于所述第一报头部分,计算第一哈希值;响应于所述第一哈希值,匹配所述第一匹配和动作表中的第一索引;响应于所述第二报头部分,计算第二哈希值;以及响应于所述第一转向动作条目,基于所述第一哈希值和所述第二哈希值计算所述累积查找值。
进一步根据本公开的实施方式,该方法包括:解析所述报头部分的数据,以产生第三报头部分;响应于所述第三报头部分,计算第三哈希值;获取所述多个匹配和动作表中的第三匹配和动作表;以及响应于所述第三哈希值,匹配具有在所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
仍进一步根据本公开的实施方式,所述第一转向动作条目包括以下中的任意一个或多个:转发要由至少一个选择的中央处理单元处理的分组;以及将所述分组转发到至少一个选择的目的地;丢弃所述分组;将所述分组转发到指示的目的地;使用另一个匹配和动作表继续进行处理;将当前哈希值添加到所述累积查找值;将报头部分的数据添加到所述累积查找值;当执行匹配时使用所述累积查找值;当执行匹配时不使用所述累积查找值;使用所述报头部分的特定部分;或当计算哈希时使用所述报头部分的特定部分。
附图说明
通过以下结合附图的详细描述,将会理解本发明,其中:
图1是根据本发明实施方式构造和操作的网络设备的框图。
图2是根据本发明的实施方式操作的图1的设备中的硬件解析器的框图。
图3是根据本发明的实施方式的从解析配置数据集中访问数据的硬件解析器的框图。
图4是示出根据本发明的实施方式的图3的解析配置数据集中的字段的框图。
图5-图9是示出图1的网络设备上的多级转向过程的框图;和
图10A和图10B是包括图1的网络设备的操作方法中的步骤的流程图的两个部分。
具体实施方式
概述
如前所述,接收侧缩放(RSS)确保与给定连接关联的处理停留在分配的CPU上。网络接口控制器(NIC)通常使用5元组报头信息 (例如,源IP地址/端口号,目的地IP地址/端口号和所使用的协议) 作为输入来实现哈希函数,并且所得到的哈希值提供了选择CPU的方法。
在某些情况下,对5元组报头信息做出的转向决策可能会太过局限。例如,在网络功能虚拟化(NFV)的情况下,分组可能具有多个虚拟化和隧道协议,例如通用分组无线电服务(GPRS)隧道协议 (GTP),虚拟局域网(LAN)(VLAN),多协议标签交换(MPLS) 和虚拟可扩展LAN(VXLAN),转向决策可能需要考虑一种或多种虚拟化或隧道协议的报头。
在发送侧,例如,转向决策可以用于执行不同物理端口之间或不同目的地(例如,提供相同服务的不同服务器)之间的负载平衡。为了执行传输侧转向决策,可以使用来自一个或多个报头的报头信息。
无论是在接收侧还是在发送侧,转向决策都可能是非标准的,因此仅对这些转向决策使用5元组报头信息是不够的。提供非标准转向决策的一种解决方案是使用多阶段转向过程,在该过程中,将获取多个表,并在每个表中查找单个报头条目(例如,在哈希表中可以查找 MAC报头的哈希,以及可以在IP表中查找IP报头的哈希等)。该解决方案可能效率低下,并且需要大表。
本发明的实施方式通过提供一种网络设备来解决上述问题,在该网络设备中,使用任何合适的用户可选报头字段的任何合适的组合,基于多级转向过程来做出转向决策,从而导致更有效的多级转向过程。用户可以从分组报头中选择任何字段集,以用作哈希函数的输入。哈希结果根据表的配置用于在匹配和动作表中查找。每个匹配和动作表包括多个转向条目,其中每个条目包括索引和相应的转向动作条目。转向动作条目可以指示CPU处理分组,将分组排入队列的队列,分组被发送到的目的地端口和/或节点,对分组报头的更改和/或下一个匹配和动作表,其用作转向过程的一部分。转向动作条目可以指示应该使用哪个报头数据以及应该如何处理报头数据以在下一个匹配和动作表中进行查找。以这种方式,处理可以从一个匹配和动作表传递到另一个。可以与一个或多个将来计算的哈希值一起累积用于在先前表中查找的哈希,从而在一个或多个表中的查找可以基于累积的哈希值。转向动作条目可以指示是否应该累积哈希值。例如,一个表的查找可以基于MAC报头的哈希,另一个表中的查找可以基于使用任何合适的方法组合的MAC报头的哈希和IP报头的哈希(例如,使用级联和/或对组合的MAC报头哈希和IP报头哈希执行哈希),并且在另一个表中的查找可以基于MAC报头的哈希,IP报头的哈希和隧道报头的哈希。
该网络设备可以被实现为任何合适的网络设备,例如,NIC或交换机。
在一些实施方式中,网络设备包括:接口,其接收包括报头部分的数据分组;以及至少一个解析器,其接收分组的报头部分的数据,并且对报头部分的数据进行解析以产生第一报头部分;第二报头部分,以及可选的第三报头部分等。网络设备的存储器存储了匹配和动作表。每个匹配和动作表包括相应的索引和与每个相应的索引相对应的相应的转向动作条目。网络设备的分组处理引擎接收第一报头部分,第二报头部分等等,并从存储器中获取第一匹配和动作表,并响应于第一报头部分匹配具有在第一匹配和动作表中相应的第一转向动作条目的第一索引。在一些实施方式中,分组处理引擎响应于第一报头部分来计算第一哈希值,并且响应于第一哈希值,并匹配在第一匹配和动作表中的第一索引,从而产生第一转向动作条目。
分组处理引擎还响应于第一转向动作条目,基于第一报头部分和第二报头部分来计算累积查找值。在一些实施方式中,第一转向动作条目指示应基于第二报头部分来计算累积查找值,该第二报头部分与寄存器中的第一报头部分组合。
在一些实施方式中,分组处理引擎响应于第二报头部分来计算第二哈希值。第一转向动作条目指示应基于第二哈希值(和先前保存的第一哈希值)来计算累积查找值。因此,分组处理引擎响应于第一转向动作条目,基于第一哈希值和第二哈希值来计算累积查找值。以此方式,第二匹配和动作表中的查找可以基于第一哈希值和第二哈希值的组合,即以累积方式。
在一些实施方式中,转向动作条目指示分组处理引擎重置累积查找值。然后,分组处理引擎会重置累积查找值。这可以在将当前报头部分或计算的哈希值写入寄存器之前执行。
分组处理引擎响应于第一转向动作条目从存储器中获取第二匹配和动作表(即,第一转向动作条目指示接下来应检索第二匹配和动作表以查找计算的哈希值或第二报头部分)。
在一些实施方式中,当在第二匹配和动作表中执行匹配时,第一转向动作条目指示分组处理引擎使用累积查找值。分组处理引擎被配置为响应于累积查找值来匹配第二索引,该第二索引具有第二匹配和动作表中相应的第二转向动作条目。
在一些实施方式中,当在匹配和动作表之一中执行匹配时转向动作条目可以向分组处理引擎指示不使用累积查找值(即使累积查找值仍被保持以供将来用于在其他匹配和动作表中匹配)。
分组处理引擎响应于在多阶段转向过程中遍历的表的转向动作条目之一来转向分组。
取决于表的配置和转向阶段,累积查找值可以由报头部分的两个,三个或更多个哈希值组成。例如,分组处理引擎响应于第三报头部分或累积查找值,获取第三匹配和动作表,并匹配具有在第三匹配和动作表中相应的第三转向动作条目的第三索引。在一些实施方式中,分组处理引擎基于第一报头部分,第二报头部分和第三报头部分来计算累积查找值。
在一些实施方式中,分组处理引擎响应于第三报头部分来计算第三哈希值,并且响应于第三哈希值或累积查找值来匹配第三匹配和动作表中的第三索引。在一些实施方式中,分组处理引擎被配置为基于第一哈希值,第二哈希值和第三哈希值来计算累积查找值。
转向动作条目可以包括以下任意一项或多项:转发要由至少一个所选的中央处理单元处理的分组;将分组转发到至少一个所选的目的地;丢弃分组;将分组转发到指示的目的地;使用另一个匹配和动作表继续进行处理;将当前哈希值添加到累积查找值;将报头部分的数据添加到累积查找值;当执行匹配时使用累积查找值;当执行匹配时不使用累积查找值;使用报头部分的特定部分;或当计算哈希时使用报头部分的特定部分。
系统描述
现在参考图1,图1是根据本发明的实施方式构造和操作的网络设备10的框图。网络设备10可以是任何合适的设备,例如但不限于路由器,交换机或网络接口卡(NIC)。网络设备10包括至少一个网络接口12,其被配置为用作至少一个入口端口和至少一个出口端口,以用于从分组数据网络14接收分组以及向分组数据网络14发送分组。
网络设备10还包括缓冲器16,硬件解析器18,分组处理引擎20,控制器22,解析器配置寄存器24,高速缓存存储器26,配置为存储匹配和动作表28的存储器27以及可选地通信总线接口30。
网络接口12接收到的分组存储在缓冲器16中。接收到的分组的报头部分由硬件解析器18解析,这些硬件解析器通常在分组处理引擎20的指令下由控制器22控制。至少一些硬件解析器18根据加载到解析器配置寄存器24中的数据解析报头部分。高速缓存存储器26缓存一系列解析配置数据集32,这些配置数据集在来自分组处理引擎 20的指令下由控制器从高速缓存存储器26选择性地加载到解析器配置寄存器24中。例如,解析配置数据集32之一被加载到硬件解析器18之一时,可以使硬件解析器18解析报头部分作为MPLS报头。当解析配置数据集32中的另一个被加载到硬件解析器18之一时,解析配置数据集32可以使硬件解析器18解析报头部分作为VLAN报头等等。
硬件解析器18解析包括在分组的报头部分中的各种报头,并且可以可选地从报头部分获取附加信息。解析的信息存储在缓冲器16 中,以供分组处理引擎20检索和/或发送至分组处理引擎20。在一些实施方式中,报头部分还由硬件解析器18发送至分组处理引擎20。参考图2至图4更详细地描述了硬件解析器18。
分组处理引擎20使用匹配和动作表28来根据硬件解析器18生成的解析信息来确定应如何处理每个分组。匹配和动作表28包括与所解析的信息相匹配的索引以及当找到匹配时要执行的相关联的动作。要匹配的索引可以基于来自分组的任何字段或子字段,例如,MAC或IP地址,安全信息,传输控制协议(TCP)数据,用户数据报协议(UDP)数据,虚拟可扩展本地区域网络(VXLAN)数据,通用路由封装(GRE)数据和通用网络虚拟化封装(GENEVE)数据,仅作为示例。这些动作可以包括每个匹配中的任何合适的一个或多个动作,例如但不限于,使用不同的解析配置集来重新解析报头部分,经由分组数据网络14将分组发送至给定的网络节点36,经由通信总线接口30发送分组到连接到网络设备10的主机34的给定CPU38,修改报头部分,添加新报头和/或删除报头,例如VLAN或多协议标签交换(MPLS)。参考图7描述了附加动作。通信总线接口30可以根据任何适当的协议来操作,例如但不限于PCIe(外围组件互连专用) 接口标准。
例如,如果报头部分中的MAC地址与给定的MAC地址匹配,则在解析器配置寄存器24被加载解析配置数据集A之后,将由硬件解析器18解析该分组。在该示例中,分组处理引擎20指示控制器22 从高速缓冲存储器26加载解析配置数据集A,并将报头部分或到缓冲器16中的报头部分的链接发送给硬件解析器18,使得报头部分可以根据解析配置数据集A重新解析。作为另一示例,如果解析的信息包括数据B,则该分组经由通信总线接口30被转发到主机C。作为另一示例,如果解析的信息包括数据D,则修改报头部分。作为又一示例,如果解析的信息包括数据E,则在端口F上将分组发送回分组数据网络14。一个或多个动作可以与单个匹配相关联。
分组处理引擎20的功能也参考图5-9进行描述。实际上,分组处理引擎20的一些或全部功能可以组合在单个物理组件中,或者替代地,使用多个物理组件来实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施方式中,分组处理引擎20的至少一些功能可以在适当的软件的控制下由可编程处理器来执行。该软件可以例如通过网络以电子形式下载到设备。替代地或附加地,软件可以存储在有形的,非暂时性的计算机可读存储介质中,例如光学,磁性或电子存储器。
实际上,控制器22的一些或全部功能可以组合在单个物理组件中,或者替代地,使用多个物理组件来实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施方式中,控制器22 的至少一些功能可以在适当的软件的控制下由可编程处理器执行。该软件可以例如通过网络以电子形式下载到设备。替代地或附加地,软件可以存储在有形的,非暂时性的计算机可读存储介质中,例如光学,磁性或电子存储器。在一些实施方式中,控制器22的功能可以在分组处理引擎20中实现。
在图1的示例中,网络设备10可以被实现为主机34的网络接口卡。主机34可以包括对应于不同虚拟网络功能(VNF)的多个CPU 38。每个VNF可以包括一个或多个虚拟机(VM)。在主机34上运行的管理程序可以实现VM。在一些示例中,可以为不同的客户操作不同的VM,每个VM具有其自己的解析和分组处理要求。每个客户可能希望能够根据他们自己的要求配置网络设备10的硬件解析器18。然而,由于硬件解析器18的数量有限,因此不能根据客户需求使用单个解析配置数据对硬件解析器18进行编程来解析不同客户的数据。当在缓冲器16中接收到分组时,硬件解析器18根据默认解析配置数据集来解析报头部分中的至少一些。分组处理引擎20使用匹配和动作表28来确定应该执行什么动作。一个动作可以包括使用针对与报头部分相关联的客户或VM的特定解析配置数据集来重新解析报头部分。例如,报头部分中包括的MAC地址可以指示与该报头部分相关联的VM。
现在参考图2,图2是根据本发明的实施方式操作的图1的设备 10中的硬件解析器18的框图。硬件解析器18包括灵活的硬件解析器 40和可选的一个或多个本地硬件解析器42,如图2所示。灵活的硬件解析器40被配置为根据解析器配置寄存器24中的数据解析头部分数据。因此,即使在已经制造了网络设备10之后,灵活的硬件解析器40也是可重新配置的。另一方面,在制造了网络设备10之后,本地硬件解析器42通常是不可重新配置的。例如,本地硬件解析器42 之一可以被配置为解析MAC报头,另一本地硬件解析器42可以被配置为解析多协议标签交换(MPLS)报头,而另一本地硬件解析器42 可以被配置为解析用户数据报协议(UDP)报头。本地硬件解析器42 可以以如图2所示的固定顺序连接在一起,使得当本地硬件解析器42 之一完成解析报头部分(例如,报头之一)的一部分时,报头部分经由连接46之一被传递到顺序的下一本地硬件解析器42。另外地或替代地,每个本地硬件解析器42可以经由连接44连接到一个或多个(典型地,每个)灵活的硬件解析器40。例如,在本地硬件解析器42之一完成解析报头部分(例如,报头之一)的一部分之后,报头部分经由连接44之一被传递到灵活的硬件解析器40之一。灵活的硬件解析器40也经由连接44彼此连接,使得当灵活的硬件解析器40之一完成解析报头部分(例如,报头之一)的一部分时,报头部分经由连接 44之一被传递到另一个灵活的硬件解析器40。硬件解析器40、42之间的连接44(即,哪个解析器40、42将接收报头部分以供下一步处理)可以使用解析器配置寄存器24中的数据来配置。例如,用于将报头部分发送到下一个解析器40、42的连接44的识别可以包括在解析器配置寄存器24中存储的数据中。对于解析器40、42的给定配置,可以启用一些连接44,而禁用其他连接。参考图3-图4更详细地描述连接44的配置。
在一些实施方式中,灵活的硬件解析器40之一可以被配置为下面参考图4更详细地描述的零长度解析器,其中灵活的硬件解析器40 用于在两个本地硬件解析器42之间传递报头部分,而不实际解析任何头部分。
在硬件解析器40、42之间传递报头部分的顺序由报头部分中的报头顺序确定。例如,如果报头部分包括MAC报头,随后是因特网协议(IP)报头,随后是UDP报头,随后是虚拟可扩展局域网(VXLAN) 报头,硬件解析器40、42及其连接44被配置为解析MAC报头,随后是IP报头,随后是UDP报头,随后是VXLAN报头。在一些实施方式中,报头部分可以包括一个以上特定报头协议。例如,当采用隧道传输时,可能有两个MAC报头。在这种情况下,可以在解析过程中的不同时间使用相同的灵活的硬件解析器40或本地硬件解析器42 来解析两个MAC报头。替代地,每个MAC报头可以由硬件解析器 40、42中的不同的解析器解析。在下面参考图4更详细地描述隧道传输。
现在参考图3,图3是根据本发明实施方式的灵活的硬件解析器 40从解析配置数据集48访问数据的框图。图3示出了解析配置数据集48当前被加载到解析器配置寄存器24中。解析配置数据集48包括多个数据子集50。数据子集50的相应子集被用于配置灵活的硬件解析器40的相应子集50。例如,根据数据子集1中的数据配置灵活的硬件解析器40-1,根据数据子集2中的数据配置灵活的硬件解析器 40-2,根据数据子集3中的数据配置灵活的硬件解析器40-3,并且根据数据子集4中的数据配置灵活的硬件解析器40-4。
现在参考图4,图4是示出根据本发明的实施方式的图3的解析配置数据子集1(附图标记50)中的字段的框图。
数据子集50可以包括报头大小字段(未示出),该报头大小字段给出灵活的硬件解析器40-1被配置为解析的报头的大小。当由灵活的硬件解析器40-1解析的报头都具有相同的长度时,该字段可能是有用的。替代地,数据子集50可以包括报头大小偏移字段52,其提供报头中的“报头大小字段”的偏移,灵活的硬件解析器40 1被配置为解析该报头大小偏移字段。报头中的“报头大小字段”给出报头的大小。报头大小偏移不是相对于报头部分开头的绝对偏移,而是距要解析的当前报头开头的相对偏移。数据子集50可以可选地包括报头大小掩码字段54,其给出报头中的报头大小字段中包括的位数。
数据子集50可以包括下一报头字段56,其给出在报头部分中要解析的下一报头的识别。当对于来自当前报头的下一报头只有一个选项时,此字段可能有用。替代地,数据子集50可以包括下一报头偏移字段58和下一报头掩码字段60。下一报头偏移字段58提供报头中下一报头识别字段的相对偏移,其给出在报头部分中要被解析的下一报头的识别。数据子集50还可以包括下一协议表62,该下一协议表 62将下一报头识别与协议进行映射。在下一协议表62中找到的协议值可以提供对连接当前灵活的硬件解析器40与另一个硬件解析器 40、42的连接44(图2)之一的识别。下一报头掩码字段60提供了报头中的下一报头识别字段中包括的位数。
数据子集50可以包括数据获取偏移字段64,其给出要获取的数据的报头中的偏移。数据子集50可以包括数据获取掩码字段,该数据获取掩码字段提供要在偏移处获取的位数。
数据子集50可以包括零大小字段66,其指示灵活的硬件解析器40-1是否为零大小解析器。如上所述,零大小解析器可用于在两个本地硬件解析器42(或任何两个解析器)之间传递报头部分,而无需进行进一步传递到分组中。
数据子集50可以包括隧道传输行为字段68。如上所述,当使用隧道传输时,相同的解析器40、42可以从报头部分解析一个以上相同类型的报头。当要处理隧道传输报头(内报头)时,将隧道传输位与报头部分一起发送到下一硬件解析器40、42。当下一解析器40、 42接收到带有隧道传输位的报头部分时,解析器40 42根据隧道传输处理报头,这意味着从解析过程中产生的数据(例如,偏移和获取的数据)被保存到隧道传输行为字段68中定义的缓冲器16中的位置。
如果灵活的硬件解析器40之一使用的数据子集50不包括下一报头信息或报头不包括下一报头信息,则解析被停止(并且报头部分不被传递到另一硬件解析器40、42),并且分组的进一步处理被传递到分组处理引擎20(图1)。
如前所述,由本地硬件解析器42执行的解析不是由解析器配置寄存器24中存储的解析配置数据集配置的。但是,为了使本地硬件解析器42之一能够将报头部分传递给灵活的硬件解析器40之一,数据子集50包括比较数据字段70和起始报头字段72。每个本地硬件解析器42包括多路复用器(未示出),该多路复用器接收报头部分和由该本地硬件解析器42计算的偏移,该本地硬件解析器42将报头部分和偏移经由连接44之一路由到下一灵活的硬件解析器40。多路复用器如下选择相关的连接44。多路复用器从由该本地硬件解析器42 处理的报头中检索下一报头识别。多路复用器搜索数据子集50的比较数据字段70,直到找到匹配为止。匹配意味着多路复用器应将报头部分和偏移发送到与其中找到匹配的数据子集50相关联的灵活的硬件解析器40。然后,多路复用器检索在其中找到匹配的数据子集50 的起始报头字段72中找到的协议值,从而提供连接到与数据子集50 相关联的灵活的硬件解析器40的连接44(图2)之一的识别。如果该多路复用器在任何数据子集50中都找不到与下一报头识别的匹配,则停止解析,并将对该分组的进一步处理传递给分组处理引擎20(图1)。
为了清楚起见,现在参考灵活的硬件解析器40-1描述解析方法。但是,该方法可以应用于任何灵活的硬件解析器40。
灵活的硬件解析器40-1被配置为接收绝对偏移(从报头部分的起始),其中先前硬件解析器40、42从先前硬件解析器40、42完成解析。如果灵活的硬件解析器40-1是解析报头部分的第一解析器,则灵活的硬件解析器40-1不接收任何偏移,并假设该偏移为零。偏移将在下面描述的解析过程中使用。因此,硬件解析器40、42中的相应解析器被配置为根据报头部分中的相应偏移来连续地解析报头部分。
灵活的硬件解析器40-1被配置为从报头大小偏移字段52(图4) 检索报头大小偏移,并且可选地从报头大小掩码字段54(图4)检索掩码数据。灵活的硬件解析器40-1被配置为从报头中的报头大小(相对)偏移中检索报头大小。灵活的硬件解析器40-1被配置为响应于所检索的报头大小和所接收的偏移来计算用于传递到下一硬件解析器40、42的偏移。计算的偏移提供此报头中最后一位的偏移。因此,灵活的硬件解析器40-1被配置为响应于解析配置数据的报头大小偏移字段52(以及可选地报头大小掩码字段54)和来自报头部分的报头大小以及接收的偏移来计算偏移。除了传递到下一硬件解析器40、 42之外,计算的偏移还可以保存在缓冲器16中和/或传递到分组处理引擎20。
如上所述,用于灵活的硬件解析器40-1的解析配置数据集48的数据子集50包括数据获取偏移字段64,该数据获取偏移字段64识别从中要获取数据的报头部分中的偏移。灵活的硬件解析器40-1被配置为从数据获取偏移字段64中检索偏移,并且响应于数据获取偏移而从报头部分的报头中获取数据。所获取的数据可以被保存在缓冲器 16中和/或被传递到分组处理引擎20。
如上所述,用于灵活的硬件解析器40-1的数据子集50包括:下一报头偏移字段58,其在报头部分的报头中提供下一报头识别(ID) 的下一报头偏移;以及下一协议表62,其链接下一报头ID和下一协议。耦合灵活的硬件解析器40-1以从解析器配置寄存器24(图1) 中的灵活的硬件解析器40-1的数据子集50检索下一报头偏移。耦合灵活的硬件解析器40-1以响应于检索的下一报头偏移,从报头部分中检索位于报头部分的报头中位于下一报头偏移处的下一报头ID。耦合灵活的硬件解析器40-1以响应于检索的下一报头ID从解析器配置寄存器24(图1)中的灵活的硬件解析器40-1的数据子集50的下一协议表62中检索要处理的下一协议的识别。耦合灵活的硬件解析器40-1以将报头部分传送到硬件解析器40、42之一,该硬件解析器 40、42被配置为根据下一协议来解析报头部分的下一报头。下一协议的识别提供了连接44的识别,灵活的硬件解析器40-1通过该连接44 连接到下一硬件解析器40、42。耦合灵活的硬件解析器40-1以将计算的偏移发送到下一硬件解析器40、42。上述步骤由下一硬件解析器 40重复,依此类推。
现在参考图5-图9,图5-图9是示出图1的网络设备10上的多级转向过程的框图。还参考图1。如前所述,网络接口12和/或通信总线接口30接收数据分组,每个数据分组包括报头部分。耦合硬件解析器18以接收分组的报头部分的数据,并且解析每个分组的报头部分的数据,从而产生多个报头部分,例如,第一报头部分,第二报头部分,以及可选的第三报头部分等。硬件解析器18可以被配置为根据以上参考图2-图4描述的方法或任何其他合适的解析方法进行解析。解析可以包括基于硬连线和/或硬编码解析器的灵活解析和/或解析。
每个匹配和动作表28包括相应的索引和与每个相应索引相对应的相应的转向动作条目。图5示出了MAC匹配和动作表28-1,其包括索引100和转向动作条目102,每个索引100和对应的转向动作条目在表28-1中形成了转向条目。
现在参考图5。分组处理引擎20(图1)被配置为从存储器27获取初始动作104。初始动作104可以是表格或字符串的形式或任何合适的数据形式。初始动作104可以指定接下来应该从存储器27中获取哪个表28,应该计算哪个哈希,以及是否应该累积所计算的哈希。在图5的示例中,初始动作104指示应获取MAC匹配和动作表28-1,应该计算MAC报头108-1的哈希106-1,并且应该将所计算的哈希累积到累积查找寄存器110中。图5示出哈希106-1被添加到累积查找寄存器110中。图5还示出哈希106-1被用于在匹配和动作表28-1 中查找索引100,从而产生匹配索引100-1和相应的转向动作条目 102-1,其指示接下来应获取IP匹配和动作表28-2(图6),应该计算IP报头的哈希,应该累积计算的IP哈希,并且应该将累积的查找值用于IP匹配和动作表28-2中的查找。
因此,分组处理引擎20被配置为接收第一报头部分(例如,MAC 报头108),并且从存储器27获取第一匹配和动作表(例如,匹配和动作表28-1)。分组处理引擎20被配置为响应于第一报头部分(例如,MAC报头108-1),匹配具有匹配和动作表28-1中的对应的转向动作条目102-1的索引100-1。在一些实施方式中,分组处理引擎 20被配置为响应于第一报头部分(例如,MAC报头108-1)来计算哈希值106-1,并且响应于哈希值106-1将匹配和动作表28-1中的索引100-1进行匹配。分组处理引擎20用来计算任何报头部分的哈希的哈希函数可以包括任何合适的哈希函数,例如但不限于CRC32, Toeplitz,Murmur或Jenkins。
现在参考图6。如参考图5所提到的,转向动作条目102-1指示接下来应该获取IP匹配和动作表28-2,应该计算IP报头108-2的哈希106-2,应该累积计算的IP哈希106-2,并且累积的查找值应该用于IP匹配和动作表28-2中的查找。
图6示出了将哈希106-2添加(箭头109)到累积查找寄存器110。图6还示出了从累积查找寄存器110中正被检索(箭头111)的累积查找值(基于哈希106-1和106-2)以用于在匹配和动作表28-2中查找索引100,从而产生匹配索引100-2和对应的转向动作条目102-2,其指示接下来应获取隧道传输匹配和动作表28-3(图7),应计算隧道传输报头的哈希,应累积计算的隧道哈希,并累积的查找值应该用于隧道传输匹配和动作表28-3中的查找。
因此,分组处理引擎20被配置为接收IP报头108-2。分组处理引擎20被配置为响应于转向动作条目102-1基于第一报头部分(例如,MAC报头108-1)和第二报头部分(例如,IP报头108-2)来计算累积查找值。在一些实施方式中,转向动作条目102-1指示应基于第二报头部分来计算累积查找值。
在一些实施方式中,分组处理引擎20被配置为响应于第二报头部分(例如,IP报头108-2)来计算哈希值(例如,IP报头的哈希106-2)。转向动作条目102-1指示应基于哈希值106-2来计算累积查找值。分组处理引擎20被配置为响应于转向动作条目102-1基于哈希值106-1 和哈希值106-2来计算累积查找值。在一些实施方式中,哈希值106-1、 106-2被级联,然后级联的结果可选地被哈希或由另一函数处理。
分组处理引擎20被配置为响应于转向动作条目102-1从存储器 27中获取匹配和动作表28-2。如图6所示,转向动作条目102-1向分组处理引擎20指示当在匹配和动作表28-2中执行匹配时使用累积查找值。分组处理引擎20被配置为响应于累积查找值来匹配具有匹配和动作表28-2中对应的转向动作条目102-2的索引100-2。
现在参考图7。如参考图6所提到的,转向动作条目102-2指示接下来应该获取隧道传输匹配和动作表28-3,应该计算隧道传输报头 108-3的哈希,应该累积计算的隧道传输报头哈希106-3,并且累积的查找值应该用于隧道匹配和动作表28-3中的查找。
图7示出了将哈希106-3添加(箭头109)到累积查找寄存器110。图7还示出了从累积查找寄存器110中正被检索(箭头111)的累积查找值(基于哈希106-1、106-2、106-3)以用于在匹配和动作表28-3 中查找索引100,从而产生匹配索引100-3和相应的转向动作条目102-3。
因此,在一些实施方式中,分组处理引擎20被配置为响应于第三报头部分(例如,隧道传输报头108-3)来计算哈希值106-3。在一些实施方式中,分组处理引擎20被配置为基于第一报头部分(例如, MAC报头108-1或哈希值106-1),第二报头部分(例如,IP报头 108-2或哈希值106-2)和第三报头部分(例如,隧道传输报头108-3 或哈希值106-3)来计算累积查找值。在一些实施方式中,哈希值 106-1、106-2、106-3被级联,然后级联的结果可选地被哈希或由另一函数处理。分组处理引擎20被配置为响应于第三报头部分(例如,隧道传输报头108-3或哈希值106-3或累积查找值)来获取匹配和动作表28-3并且匹配具有匹配和动作表28-3中对应的转向动作条目 102-3的索引100-3。
分组处理引擎20被配置为响应于匹配的转向动作条目102之一来转向分组。例如,转向动作条目102-3可以指示应该将分组转向主机34中的CPU1或网络节点36。转向动作条目102可以包括以下的任何一项或多项:转发要由至少一个选择的中央处理单元处理的分组;将分组转发到至少一个选择的目的地;丢弃分组;将分组转发到指示的目的地;使用另一个匹配和动作表28继续进行处理;将当前哈希值添加到累积查找值;将报头部分的数据添加到累积查找值;当执行匹配时使用累积查找值;当执行匹配时不使用累积查找值;使用报头部分的特定部分;或当计算哈希值时使用报头部分的特定部分。
现在参考图8。图8示出了转向动作条目102-2何时指示分组处理引擎20重置累积查找值(在累积查找寄存器110中)。图8示出了重置累积查找寄存器110并且从累积查找寄存器110中移除了哈希值106-1和106-2。因此,分组处理引擎20被配置为重置累积查找值。然后将隧道传输报头哈希106-3添加到累积查找寄存器110。可以基于累积查找值或隧道传输报头106-3(它们可以是相同的值)来查找匹配和动作表28-3。
现在参考图9。图9示出了当在匹配和动作表28-3中执行匹配时转向动作条目102-2何时指示分组处理引擎20不使用累积查找值,尽管(在该示例中)累积查找值仍然被保留以供将来在累积查找寄存器110中使用。图9示出了哈希值106-3被保存到累积查找寄存器110,并且哈希值106-3用于在匹配和动作表28-3中进行查找,而不是使用累积查找值。
图5-图9通过使用MAC报头,IP报头和隧道传输报头作为输入的三个示例匹配和动作表28示出了多级转向过程。多级转向过程可以基于任何报头字段和/或任何报头字段的子数据来使用任何合适的报头信息。
现在参考图10A和图10B,其是流程图200的两个部分,包括图 1的网络设备10的操作方法中的步骤。还参考图1。开始参考图10A,网络设备10被配置为接收(框202)分组。硬件解析器18被配置为解析(框204)分组报头。分组处理引擎20被配置为从存储器27中获取(框206)初始转向动作104(图5)。在决策框208处,分组处理引擎20确定这是否是过程中的最后转向动作条目,或者是否需要获取和匹配获取和匹配表28中的一个作为多级转向过程的一部分。如果这是最后的转向动作条目(分支210),则分组处理引擎20被配置为将分组转向(框211)到目的地队列(可选地基于提供队列索引的累积查找值)或当转向是在发送侧时转向到外部目的地。如果这不是最后的转向动作条目(分支212),则分组处理引擎20被配置为基于转向动作条目中的指示来计算(框214)用于在下一个表中查找的哈希。
继续参考图10B,在决策框216处,分组处理引擎20确定转向动作条目是否指定在累积查找寄存器110(图5)中累积哈希值106。如果转向动作条目未指定在累积查找寄存器110中累积哈希值106 (分支218),则分组处理引擎20被配置为获取(框220)下一个匹配和动作表28(如转向动作条目所示),并且将计算的哈希值106 与获取的匹配和动作表28中的索引100进行匹配,产生下一个转向动作条目102。然后,处理继续进行图10A所示的决策框208。
如果转向动作条目确实指定了在累积查找寄存器110中累积哈希值106(分支222),则分组处理引擎20被配置为在决策框224处确定转向动作条目是否指定重置累积查找值。如果转向动作条目指定重置累积查找值(分支226),则分组处理引擎20被配置为重置(框 228)累积查找寄存器110中的累积查找值,然后将计算的哈希添加 (框230)到累积查找寄存器110中。如果转向动作条目未指定重置累积查找值(分支232),则分组处理引擎20被配置为将计算的哈希添加到累积查找寄存器110(框232)。
在决策框234处,分组处理引擎20被配置为确定转向动作条目是否指定使用累积查找值用于下一个表查找。如果转向动作条目指定将累积查找值用于下一个表查找(分支236),则分组处理引擎20 被配置为获取(框238)下一个匹配和动作表28(如转向动作条目中所示),并将累积查找值与获取的匹配和动作表28中的索引100进行匹配,产生下一个转向动作条目102,然后处理继续进行图10A所示的决策框208。如果转向动作条目未指定将累积查找值用于下一个表查找(分支240),则分组处理引擎20被配置为获取(框220)下一个匹配和动作表28(如转向动作条目中所示),并且将计算的哈希值106与获取的匹配和动作表28中的索引100进行匹配,产生下一个转向动作条目102,然后处理继续进行图10A所示的决策框208。
为了清楚起见,在单独的实施方式的上下文中描述的本发明的各种特征也可以在单个实施方式中组合提供。相反,为简洁起见,在单个实施方式的上下文中描述的本发明的各种特征也可以单独地或以任何合适的子组合来提供。
通过示例引用了上述实施方式,并且本发明不受以上已经具体示出和描述的内容的限制。相反,本发明的范围包括上述各种特征的组合和子组合,以及本领域技术人员在阅读前述说明后将想到的并且其在现有技术中未公开的变型和修改。
Claims (20)
1.一种网络设备,包括:
接口,其被配置为接收包括报头部分的数据分组;
至少一个解析器,其被耦合为接收所述分组的报头部分的数据,并被配置为解析所述报头部分的数据,以产生第一报头部分和第二报头部分;
存储器,其被配置为存储多个匹配和动作表,每个匹配和动作表包括相应的索引和与所述相应的索引中的每个索引相对应的相应的转向动作条目;和
分组处理引擎,其被耦合为接收所述第一报头部分和所述第二报头部分,并且被配置为:
从所述存储器中获取所述多个匹配和动作表中的第一匹配和动作表;
响应于所述第一报头部分,匹配具有在所述第一匹配和动作表中相应的第一转向动作条目的第一索引;
响应于所述第一转向动作条目,基于所述第一报头部分和所述第二报头部分计算累积查找值;
响应于所述第一转向动作条目,从所述存储器中获取所述多个匹配和动作表中的第二匹配和动作表;
响应于所述累积查找值,匹配具有在所述第二匹配和动作表中相应的第二转向动作条目的第二索引;和
响应于所述第二转向动作条目转向所述分组。
2.根据权利要求1所述的设备,其中所述第一转向动作条目指示应基于所述第二报头部分来计算所述累积查找值。
3.根据权利要求1所述的设备,其中当在所述第二匹配和动作表中执行匹配时,所述第一转向动作条目指示所述分组处理引擎使用所述累积查找值。
4.根据权利要求1所述的设备,其中转向动作条目指示所述分组处理引擎重置所述累积查找值;以及所述分组处理引擎被配置为重置所述累计查找值。
5.根据权利要求1所述的设备,其中当在所述匹配和动作表之一中执行匹配时,转向动作条目指示所述分组处理引擎不使用所述累积查找值。
6.根据权利要求1所述的设备,其中:
所述至少一个解析器还被配置为解析所述报头部分的数据,以产生第三报头部分;以及
所述分组处理引擎被配置为
获取所述多个匹配和动作表中的第三匹配和动作表;以及
响应于所述第三报头部分,匹配具有所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
7.根据权利要求6所述的设备,其中所述分组处理引擎被配置为基于所述第一报头部分,所述第二报头部分和所述第三报头部分来计算所述累积查找值。
8.根据权利要求1所述的设备,其中所述分组处理引擎被配置为:
响应于所述第一报头部分,计算第一哈希值;
响应于所述第一哈希值,匹配所述第一匹配和动作表中的第一索引;
响应于所述第二报头部分,计算第二哈希值;以及
响应于所述第一转向动作条目,基于所述第一哈希值和所述第二哈希值计算所述累积查找值。
9.根据权利要求8所述的设备,其中所述第一转向动作条目指示应基于所述第二哈希值来计算所述累积查找值。
10.根据权利要求8所述的设备,其中当在所述第二匹配和动作表中执行匹配时,所述第一转向动作条目指示所述分组处理引擎使用所述累积查找值。
11.根据权利要求8所述的设备,其中转向动作条目指示所述分组处理引擎重置所述累积查找值;以及所述分组处理引擎被配置为重置所述累计查找值。
12.根据权利要求8所述的设备,其中当在所述匹配和动作表之一中执行匹配时,转向动作条目指示所述分组处理引擎不使用所述累积查找值。
13.根据权利要求8所述的设备,其中:
所述至少一个解析器还被配置为解析所述报头部分的数据,以产生第三报头部分;以及
所述分组处理引擎被配置为:
响应于所述第三报头部分,计算第三哈希值;
从所述存储器中获取所述多个匹配和动作表中的第三匹配和动作表;以及
响应于所述第三哈希值,匹配具有在所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
14.根据权利要求13所述的设备,其中所述分组处理引擎被配置为基于所述第一哈希值,所述第二哈希值和所述第三哈希值来计算所述累积查找值。
15.根据权利要求1所述的设备,其中所述第一转向动作条目包括以下中的任意一个或多个:转发要由至少一个选择的中央处理单元处理的分组;以及将所述分组转发到至少一个选择的目的地;丢弃所述分组;将所述分组转发到指示的目的地;使用另一个匹配和动作表继续进行处理;将当前哈希值添加到所述累积查找值;将报头部分的数据添加到所述累积查找值;当执行匹配时使用所述累积查找值;当执行匹配时不使用所述累积查找值;使用所述报头部分的特定部分;或当计算哈希时使用所述报头部分的特定部分。
16.一种联网方法,包括:
接收包括报头部分的数据分组;
解析所述报头部分的数据,以产生第一报头部分和第二报头部分;
存储多个匹配和动作表,每个匹配和动作表包括相应的索引和与所述相应的索引中的每个索引相对应的相应的转向动作条目;
获取所述多个匹配和动作表中的第一匹配和动作表;
响应于所述第一报头部分,匹配具有在所述第一匹配和动作表中相应的第一转向动作条目的第一索引;
响应于所述第一转向动作条目,基于所述第一报头部分和所述第二报头部分计算累积查找值;
响应于所述第一转向动作条目,获取所述多个匹配和动作表中的第二匹配和动作表;
响应于所述累积查找值,匹配具有在所述第二匹配和动作表中相应的第二转向动作条目的第二索引;和
响应于所述第二转向动作条目转向所述分组。
17.根据权利要求16所述的方法,还包括:
解析所述报头部分的数据,以产生第三报头部分;以及
获取所述多个匹配和动作表中的第三匹配和动作表;
响应于所述第三报头部分,匹配具有所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
18.根据权利要求16所述的方法,还包括:
响应于所述第一报头部分,计算第一哈希值;
响应于所述第一哈希值,匹配所述第一匹配和动作表中的第一索引;
响应于所述第二报头部分,计算第二哈希值;以及
响应于所述第一转向动作条目,基于所述第一哈希值和所述第二哈希值计算所述累积查找值。
19.根据权利要求16所述的方法,还包括:
解析所述报头部分的数据,以产生第三报头部分;
响应于所述第三报头部分,计算第三哈希值;
获取所述多个匹配和动作表中的第三匹配和动作表;
响应于所述第三哈希值,匹配具有在所述第三匹配和动作表中相应的第三转向动作条目的第三索引。
20.根据权利要求16所述的方法,其中所述第一转向动作条目包括以下中的任意一个或多个:转发要由至少一个选择的中央处理单元处理的分组;以及将所述分组转发到至少一个选择的目的地;丢弃所述分组;将所述分组转发到指示的目的地;使用另一个匹配和动作表继续进行处理;将当前哈希值添加到所述累积查找值;将报头部分的数据添加到所述累积查找值;当执行匹配时使用所述累积查找值;当执行匹配时不使用所述累积查找值;使用所述报头部分的特定部分;或当计算哈希时使用所述报头部分的特定部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/853,783 US11323372B2 (en) | 2020-04-21 | 2020-04-21 | Flexible steering |
US16/853,783 | 2020-04-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113542210A true CN113542210A (zh) | 2021-10-22 |
CN113542210B CN113542210B (zh) | 2022-12-20 |
Family
ID=77919701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110399946.XA Active CN113542210B (zh) | 2020-04-21 | 2021-04-14 | 网络设备和联网方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11323372B2 (zh) |
CN (1) | CN113542210B (zh) |
DE (1) | DE102021203777A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11711453B2 (en) | 2021-10-24 | 2023-07-25 | Mellanox Technologies, Ltd. | Template-based packet parsing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561625A (zh) * | 2001-09-28 | 2005-01-05 | 英特尔公司 | 用查找键作为分组标签以便于使用统一分组转发缓存 |
CN104104604A (zh) * | 2013-04-04 | 2014-10-15 | 马维尔以色列(M.I.S.L.)有限公司 | 网络交换机设备中的准确匹配哈希查找数据库 |
CN104704779A (zh) * | 2012-10-08 | 2015-06-10 | 瑞典爱立信有限公司 | 用于加速软件定义网络中的转发的方法和设备 |
CN106464583A (zh) * | 2014-05-05 | 2017-02-22 | 瑞典爱立信有限公司 | 实现具有开放流数据和控制平面的云计算机中的3g分组核心 |
CN106961412A (zh) * | 2016-01-11 | 2017-07-18 | 中国移动通信集团公司 | 一种报文转换方法、装置及系统 |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5394394A (en) | 1993-06-24 | 1995-02-28 | Bolt Beranek And Newman Inc. | Message header classifier |
US6504842B1 (en) * | 1998-07-30 | 2003-01-07 | Alcatel Internetworking, Inc. | Hardware copy assist for data communication switch |
US6308219B1 (en) | 1998-07-31 | 2001-10-23 | Cisco Technology, Inc. | Routing table lookup implemented using M-trie having nodes duplicated in multiple memory banks |
US7333484B2 (en) | 1998-08-07 | 2008-02-19 | Intel Corporation | Services processor having a packet editing unit |
US6356951B1 (en) | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
US7154858B1 (en) | 1999-06-30 | 2006-12-26 | Cisco Technology, Inc. | System and method for measuring latency of a selected path of a computer network |
US6788680B1 (en) | 1999-08-25 | 2004-09-07 | Sun Microsystems, Inc. | Defferrable processing option for fast path forwarding |
US6807172B1 (en) * | 1999-12-21 | 2004-10-19 | Cisco Technology, Inc. | Method and apparatus for learning and switching frames in a distributed network switch |
US7082569B2 (en) | 2001-01-17 | 2006-07-25 | Outlooksoft Corporation | Systems and methods providing dynamic spreadsheet functionality |
US7102996B1 (en) * | 2001-05-24 | 2006-09-05 | F5 Networks, Inc. | Method and system for scaling network traffic managers |
US20030043848A1 (en) | 2001-08-30 | 2003-03-06 | Sonksen Bradley Stephen | Method and apparatus for data item processing control |
US7881214B2 (en) | 2002-10-25 | 2011-02-01 | General Instrument Corporation | Method for performing remote testing of network using IP measurement protocol packets |
EP1416682B1 (en) | 2002-10-31 | 2009-07-29 | Alcatel Lucent | Methods of processing data packets at layer three level in a telecommunication equipment |
US7599287B2 (en) * | 2002-11-15 | 2009-10-06 | Cisco Technology, Inc. | Tokens in token buckets maintained among primary and secondary storages |
US7047453B2 (en) * | 2003-11-13 | 2006-05-16 | Nokia, Inc. | Method and apparatus for managing network traffic using cyclical redundancy check hash functions |
US7586851B2 (en) | 2004-04-26 | 2009-09-08 | Cisco Technology, Inc. | Programmable packet parsing processor |
GB2438455A (en) | 2006-05-23 | 2007-11-28 | Agilent Technologies Inc | Generation of data packet decoding instructions |
US7921046B2 (en) | 2006-06-19 | 2011-04-05 | Exegy Incorporated | High speed processing of financial information using FPGA devices |
US7668161B2 (en) | 2006-07-27 | 2010-02-23 | Cisco Technology, Inc. | Classifying data packet protocol values |
US8218539B2 (en) | 2006-10-18 | 2012-07-10 | Broadcom Corporation | Flexible packet field processor |
CN101246486B (zh) | 2007-02-13 | 2012-02-01 | 国际商业机器公司 | 用于改进的表达式处理的方法和装置 |
US20090097418A1 (en) * | 2007-10-11 | 2009-04-16 | Alterpoint, Inc. | System and method for network service path analysis |
US8694448B2 (en) | 2008-12-16 | 2014-04-08 | At&T Intellectual Property I, L.P. | Method and apparatus for providing an adaptive parser |
US8705533B1 (en) | 2010-12-10 | 2014-04-22 | Juniper Networks, Inc. | Fast packet encapsulation using templates |
US9665540B2 (en) | 2011-07-21 | 2017-05-30 | Arm Limited | Video decoder with a programmable inverse transform unit |
US9397960B2 (en) | 2011-11-08 | 2016-07-19 | Mellanox Technologies Ltd. | Packet steering |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
US10121196B2 (en) | 2012-03-27 | 2018-11-06 | Ip Reservoir, Llc | Offload processing of data packets containing financial market data |
US9602398B2 (en) * | 2013-09-15 | 2017-03-21 | Nicira, Inc. | Dynamically generating flows with wildcard fields |
US9444914B2 (en) | 2013-09-16 | 2016-09-13 | Annapurna Labs Ltd. | Configurable parser and a method for parsing information units |
US9973599B2 (en) | 2013-12-04 | 2018-05-15 | Mediatek Inc. | Parser for parsing header in packet and related packet processing apparatus |
US9363178B2 (en) | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US9762488B2 (en) | 2014-03-06 | 2017-09-12 | Cisco Technology, Inc. | Segment routing extension headers |
US9531847B2 (en) | 2014-05-22 | 2016-12-27 | International Business Machines Corporation | Skipping and parsing internet protocol version 6 (IPv6) extension headers to reach upper layer headers |
US10237354B2 (en) | 2014-09-25 | 2019-03-19 | Intel Corporation | Technologies for offloading a virtual service endpoint to a network interface card |
US9606781B2 (en) | 2014-11-14 | 2017-03-28 | Cavium, Inc. | Parser engine programming tool for programmable network devices |
US9826071B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Configuring a switch for extracting packet header fields |
US9892075B2 (en) * | 2015-12-10 | 2018-02-13 | Cisco Technology, Inc. | Policy driven storage in a microserver computing environment |
US10277511B2 (en) * | 2015-12-16 | 2019-04-30 | Nxp Usa, Inc. | Hash-based packet classification with multiple algorithms at a network processor |
US9892057B2 (en) | 2016-03-31 | 2018-02-13 | Mellanox Technologies Tlv Ltd. | Single double cuckoo hash |
US10616111B1 (en) * | 2017-01-18 | 2020-04-07 | Arista Networks, Inc. | Consistent hashing for packets across multi-stage lookups |
US10798633B2 (en) * | 2017-02-23 | 2020-10-06 | Cisco Technology, Inc. | Heterogeneous access gateway for an information-centric networking environment |
WO2018182604A1 (en) | 2017-03-30 | 2018-10-04 | Intel Corporation | Wifi protected access 2 (wpa2) pass-through virtualization |
US11159427B2 (en) * | 2017-03-31 | 2021-10-26 | Intel Corporation | Single lookup entry for symmetric flows |
US11366588B2 (en) | 2017-07-03 | 2022-06-21 | Intel Corporation | Tier-aware read and write |
US10541893B2 (en) * | 2017-10-25 | 2020-01-21 | Cisco Technology, Inc. | System and method for obtaining micro-service telemetry data |
US10911570B2 (en) | 2017-11-02 | 2021-02-02 | Utech, Inc. | System and method for content parsing |
US10841243B2 (en) * | 2017-11-08 | 2020-11-17 | Mellanox Technologies, Ltd. | NIC with programmable pipeline |
US10757230B2 (en) | 2017-12-11 | 2020-08-25 | Mellanox Technologies Tlv Ltd. | Efficient parsing of extended packet headers |
US10701190B2 (en) | 2018-01-10 | 2020-06-30 | Mellanox Technologies Tlv Ltd. | Efficient parsing of optional header fields |
US11469995B2 (en) * | 2018-06-14 | 2022-10-11 | Nokia Solutions And Networks Oy | Flow-specific fast rerouting of source routed packets |
-
2020
- 2020-04-21 US US16/853,783 patent/US11323372B2/en active Active
-
2021
- 2021-04-14 CN CN202110399946.XA patent/CN113542210B/zh active Active
- 2021-04-16 DE DE102021203777.1A patent/DE102021203777A1/de active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561625A (zh) * | 2001-09-28 | 2005-01-05 | 英特尔公司 | 用查找键作为分组标签以便于使用统一分组转发缓存 |
CN104704779A (zh) * | 2012-10-08 | 2015-06-10 | 瑞典爱立信有限公司 | 用于加速软件定义网络中的转发的方法和设备 |
CN104104604A (zh) * | 2013-04-04 | 2014-10-15 | 马维尔以色列(M.I.S.L.)有限公司 | 网络交换机设备中的准确匹配哈希查找数据库 |
CN106464583A (zh) * | 2014-05-05 | 2017-02-22 | 瑞典爱立信有限公司 | 实现具有开放流数据和控制平面的云计算机中的3g分组核心 |
CN106961412A (zh) * | 2016-01-11 | 2017-07-18 | 中国移动通信集团公司 | 一种报文转换方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
DE102021203777A1 (de) | 2021-10-21 |
US11323372B2 (en) | 2022-05-03 |
US20210328923A1 (en) | 2021-10-21 |
CN113542210B (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10015090B2 (en) | Packet steering | |
US8743882B1 (en) | Packet header altering device | |
US7613209B1 (en) | System and method for egress packet marking | |
US7848332B2 (en) | Method and apparatus for classifying a network protocol and aligning a network protocol header relative to cache line boundary | |
US7304996B1 (en) | System and method for assembling a data packet | |
US8228908B2 (en) | Apparatus for hardware-software classification of data packet flows | |
CN102104541B (zh) | 报头处理引擎 | |
US9385957B1 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
US20140324900A1 (en) | Intelligent Graph Walking | |
US7539750B1 (en) | System and method for packet processor status monitoring | |
US7346059B1 (en) | Header range check hash circuit | |
JP7481436B2 (ja) | Srネットワークでパケットを転送する方法、デバイス、及びシステム | |
US8792494B2 (en) | Facilitating insertion of device MAC addresses into a forwarding database | |
US10367734B2 (en) | Forwarding of packets in a network based on multiple compact forwarding identifiers represented in a single internet protocol version 6 (IPv6) address | |
WO2015125801A1 (ja) | ネットワーク制御方法、ネットワークシステムと装置及びプログラム | |
US11621853B1 (en) | Protocol-independent multi-table packet routing using shared memory resource | |
US9866480B1 (en) | Hash range lookup command | |
CN113542210B (zh) | 网络设备和联网方法 | |
US8605732B2 (en) | Method of providing virtual router functionality | |
CN112953829B (zh) | 网络设备中的灵活解析器 | |
EP4354282A1 (en) | Data processing method and apparatus, processor, and network device | |
US10063487B2 (en) | Pattern matching values of a packet which may result in false-positive matches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |