CN104662862A - 可扩展低延迟多协议网络设备 - Google Patents
可扩展低延迟多协议网络设备 Download PDFInfo
- Publication number
- CN104662862A CN104662862A CN201380048243.6A CN201380048243A CN104662862A CN 104662862 A CN104662862 A CN 104662862A CN 201380048243 A CN201380048243 A CN 201380048243A CN 104662862 A CN104662862 A CN 104662862A
- Authority
- CN
- China
- Prior art keywords
- grouping
- decision
- field groups
- field
- logic unit
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- 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
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3063—Pipelined operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/355—Application aware switches, e.g. for HTTP
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/251—Cut-through or wormhole routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
网络设备接收分组,该分组包括多个字段组。该分组的字段组被解析,并且一旦这些字段组可用就被评估以确定是否能够对该分组做出处理决策。额外的字段组可并行于确定是否能够做出处理决策而从该分组中被解析并获得,但是一旦确定能够做出处理决策,则终止字段组的评估,从而忽略该分组的任何其他字段组,以对该分组做出处理决策。
Description
相关申请
本申请要求于2012年9月18日提交的,题为“Scalable Low LatencyMulti-Protocol Networking Device”,申请号为No.61/702312的美国临时申请的优先权,其全部内容被通过引用结合于此。
技术领域
本公开一般涉及降低网络设备中的延迟。
背景技术
高性能计算(HPC)使用超级计算机和/或计算机集群来解决使用针对网络内的分组传输需要高带宽、低延迟网络以及很高的计算能力的应用的复杂科学、工程和商业项目。开放式系统互连(OSI)模型层通常被用于在网络内处理分组,例如,用于确定分组在网络内从源节点传输到目的地节点的路由。这些模型层包括OSI第2层(数据链路)、第3层(网络)和第4层(传输)。
传统网络设备(例如,交换机)依赖于串行做出决策的传统方法。这些决策在逻辑上被分组为,例如,第2层(L2)桥接,第3层(L3)路由、访问控制等。虽然该方法简化了设计考虑,但是串行方法也引入了固有延迟,因为决策被推迟,并且重要资源(即,复制表)被消耗以满足逻辑分区。
附图说明
图1是其中可执行这里给出的技术的示例性网络设备的框图。
图2是被配置为在网络设备中做出超低延迟处理决策的交换信息库的详细框图。
图3是以图形示出了分组的字段组的处理以在网络设备中对分组做出低延迟处理决策的图。
图4是一般地示出由交换信息库执行以对分组做出低延迟处理决策的操作的流程图。
具体实施方式
概述
根据这里给出的技术,网络设备接收分组,该分组包括多个字段组。该分组的字段组被解析,并且一旦这些字段组可用就被评估以确定是否能够对该分组做出处理决策。额外的字段组可并行于确定是否能够做出处理决策而从所述分组中被解析并获得,但是一旦确定能够做出处理决策,则终止字段组的评估,从而忽略该分组的任何其他字段组,以对该分组做出处理决策。
示例性实施例
在通过网络进行分组传输的过程中,网络设备可执行将延迟引入分组传输过程中的一个或多个操作。网络设备(例如,交换机)中的延迟的一个起因是分组决策单元,也被称为交换信息库(SIB)。SIB基于到达分组及网络策略的内容进行处理决策。通过这里给出的新技术可实现大大降低SIB延迟,该新技术通过例如将传统上串行处理的逻辑动作并行化的范例实现了高可扩展性、全功能、低延迟以及多协议的网络设备架构。
图1是被配置为执行这些技术的示例性网络设备10的框图。网络设备10包括:被配置为从网络接收分组并向网络发送分组的多个端口12(1)-12(N),用于在端口12(1)-12(N)之间交换分组的交换结构14,中央处理单元(CPU)16以及存储器18。交换结构14包括一个或多个缓冲器20、交换表30以及分组决策单元40(即,SIB)。CPU 16执行网络设备10的操作的较高级别控制。缓冲器20在分组被处理时临时存储网络设备10内的分组。
SIB 40做出决策,包括但不限于:安全、服务质量(QoS)、统计、入口和出口访问控制策略、分类、标记、分组字段的添加或删除、负载均衡、多租户处理、第2层桥接(交换)和第3层路由以及分组的丢弃。交换结构14可以以一个或多个专用集成电路(ASIC)中的数字逻辑门实现。
存储器18可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光学存储介质设备,闪存设备,电的、光的或其他物理/有形存储器存储设备。CPU 16例如是微处理器或微控制器。因此,一般而言,存储器18可包括一个或多个有形(非暂态)计算机可读存储介质(例如,存储器设备),该存储介质编码有包括计算机可执行指令的软件,并且当该软件被(CPU 16)执行时可操作为执行这里所述的技术。例如,SIB 40的操作可部分或全部以存储于存储器18中的软件执行并且由CPU 16执行。
网络设备10可以是现在已知或今后开发的任何网络设备,包括:交换机、路由器、网关、主机设备上的软件栈、虚拟网络接口卡(VNIC)、虚拟交换机以及物理网络接口卡(包括支持虚拟化的那些物理网络接口卡)。
现在转到图2,示出了SIB 40的更详细的图。为了实现可扩展性,多个端口(不必所有端口)通过串行来自多个端口的经解析的数据来共享单个SIB。因此,对于每个端口12(1)-12(N),均存在分组解析器。具体地,存在端口12(1)的解析器42(1),端口12(2)的解析器42(2),……,端口12(N)的解析器42(N)。每个分组解析器42(1)_42(N)对在相应的端口接收到的分组进行解析,并且顺序生成多个分组字段组,然后一旦它们准备好就发送它们。分组字段可被任意组织为M个字段组,被表示为:字段组1、字段组2、……、字段组M。作为示例,解析器可产生4组字段:字段组1包括第2层(L2)字段,字段组2包括第3层(L3)字段,字段组3包括第4层(L4)字段,而字段组4包括深度分组检测(DPI)字段。因此,每个字段组包括一个或多个字段。
分组解析器42(1)_42(N)被耦合到字段组处理块43。字段组处理块43包括多个字段组专用决策子块44(1)-44(M)。每个字段组专用决策子块专用于相应的字段组,并且包括字段组决策逻辑单元和字段组仲裁器(arbiter)。因此,存在多个决策逻辑单元,每个均被配置为基于分组的特定字段组(而在一些情况中,还基于来自该分组的先前另一字段组的处理的处理结果)来确定是否能够对分组做出处理决策。
具体地,字段组专用决策子块44(1)包括字段组1决策逻辑单元46(1)和字段组1仲裁器48(1),字段组专用决策子块44(2)包括字段组2决策逻辑单元46(2)和字段组2仲裁器48(2),字段组专用决策子块44(3)包括字段组3决策逻辑单元46(3)和字段组3仲裁器48(3),字段组专用决策子块44(M-1)包括字段组M-1决策逻辑单元46(M-1)和字段组M-1仲裁器48(M-1),字段组专用决策子块44(M)包括字段组M决策逻辑单元46(M)和字段组M仲裁器48(M)。还存在与字段组专用决策子块44(1)_44(M-1)相关联的终止块49(1)-49(M-1)。来自字段组专用决策子块44(1)-44(M-1)的处理决策被输出到分组决策仲裁器50。可由决策逻辑单元46(1)_46(M)做出的处理决策的示例包括:负载均衡决策、分组路由决策、丢弃决策以及交换(桥接)决策。图2所示的所有块可通过数字逻辑门来实现。
分组决策仲裁器50在来自多个字段专用子块44(1)-44(M)的处理决策之间进行仲裁,以向一个或多个缓冲器(在图1中示出)输出一个或多个分组处理决策,使得相应的分组以适当的方式被写入一个或多个缓冲器,和/或从一个或多个缓冲器读取。作为提前终止分组的处理决策的结果,多个处理决策可同时到达分组决策仲裁器50。因此,分组决策仲裁器50负责对处理决策进行调度/划分优先排序,并且每当基于该处理决策可在缓冲器中进行处理时,就将处理决策发送到缓冲器。通过分组决策仲裁器50的处理决策的调度优先级可基于严格的优先级,即,基于先到先服务,或基于从分组的一个或多个字段组中获得的与该分组相关联的一个或多个分组参数,例如,源端口、目的端口、COS等。
现在更详细地说明字段组处理块43的操作。图2用标号52示出了指示时间的箭头。在图2中,字段专用处理子块44(1)_44(M)相对于箭头52从左到右的物理布置意味着表示由字段专用处理子块44(1)的处理在由字段专用处理子块44(2)的处理之前开始,并且在由字段专用处理子块44(2)的处理结束之前结束。同样,由字段专用处理子块44(2)的处理在由字段专用处理子块44(3)的处理之前开始,并且在由字段专用处理子块44(3)的处理结束之前结束,以此类推。但是,对于从分组中解析字段组以及评估字段组以确定针对该分组是否能够做出处理决策而言,在时间上存在重叠。也就是说,给定分组的字段组一旦可用就与从该分组中解析字段组并行地进行评估以确定是否一旦字段组可用就能够与解析并行地对该分组做出处理决策。一旦确定能够做出处理决策,则终止字段组的评估,从而忽略还未进行评估的该分组的任何其他字段组,以便对该分组做出处理决策。
由字段专用处理子块44(1)-44(M)的处理可基于分组的相应字段组以超前方式执行,并且由同一分组的至少一个先前字段组导致。换句话说,如果字段组之间存在依赖关系,则字段专用处理子块44(2)-44(M)可使用来自先前字段专用处理子块的处理结果。例如,字段专用处理子块44(2)可使用来自字段专用处理子块44(1)的处理结果,字段专用处理子块44(3)可使用来自字段专用处理子块44(1)和44(2)的处理结果,以此类推。一般地,针对多个字段组中的第M字段组的决策逻辑单元被配置为评估多个字段组中的第M字段组和由第(M-1)字段组的决策逻辑单元输出的处理结果。分组头字段的组织可基于如何设计独立的决策逻辑单元。
如上所述,每个分组解析器42(1)_42(N)针对到达端口12(1)-12(N)中的相应端口的每个分组输出字段组1到M,并且将从解析中获得的字段组提供给字段组专用决策子块44(1)_44(M)中相应的决策逻辑单元。所有分组的字段组1数据被定向到字段组1仲裁器48(1),所有分组的字段组2数据被定向到字段组2仲裁器48(2),所有分组的字段组3数据被定向到字段组3仲裁器48(3),所有分组的字段组M-1数据被定向到字段组M-1仲裁器48(M-1),……,所有分组的字段组M数据被定向到字段组M仲裁器48(M)。
如图2所示,当字段组1决策逻辑单元46(1)正在对给定分组的字段组1数据进行操作时,同一分组的字段组2数据可正被提供给字段组2决策逻辑单元46(2)。如果字段组1决策逻辑单元46(1)确定能够对该分组做出处理决策,则终止块49(1)向分组决策仲裁器50输出该处理决策。因此,字段组2决策逻辑单元46(2)可至少部分并行于字段组1决策逻辑单元对给定分组的字段组1数据进行操作而对该分组的字段组2数据进行操作。但是,在一些配置中,字段组2决策逻辑单元46(2)可需要字段组1决策逻辑单元46(1)的处理结果,以确定是否能够做出处理决策。同样,字段组3决策逻辑单元46(3)可在一旦该同一分组的字段组3数据可用,就并行于字段组2决策逻辑单元对该分组的字段组2数据进行操作而对该分组的字段组3数据开始操作。字段组2决策逻辑单元46(2)基于字段组2数据和针对该分组从字段组1决策逻辑单元46(1)接收到的处理结果来确定是否能够对该分组做出处理决策。如果字段组2决策逻辑单元46(2)确定能够对该分组做出处理决策,则终止块49(2)将该处理决策输出到分组决策仲裁器50。否则,终止块49(2)将字段组2决策逻辑单元46(2)的处理决策结果输出到字段组专用决策子块44(3)。基于字段组3数据和来自字段组2决策逻辑单元46(2)的处理决策结果,在字段组专用决策子块44(3)中针对分组的字段组3数据发生类似的处理。
由于给定分组的额外字段组被处理,因此从该分组的字段组1的处理开始已经逝去越来越多的时间。但是,一旦能够对该分组做出处理决策,则该处理决策被输出到分组决策仲裁器50,并且终止该分组的字段组的评估。忽略还未进行评估的该分组的任何其他字段组,以对该分组做出处理决策。例如,如果字段组1决策逻辑单元46(1)已基于该分组的字段组1数据确定能够对该分组做出处理决策,则正在由字段组2决策逻辑单元46(2)对该分组的字段组2数据进行的任何评估被终止。终止块49(1)将由字段组1决策逻辑单元46(1)做出的处理决策输出到分组决策仲裁器50。因此,忽略字段组2到M以确定该分组的处理决策。如果处理决策不能基于该分组的字段组1做出,则终止块49(1)将来自字段组1决策逻辑单元46(1)的处理决策结果输出到字段专用决策子块44(2)。如果字段组2决策逻辑单元46(2)确定能够对该分组做出处理决策,则终止正由字段组决策逻辑3执行的任何评估,并且忽略该分组的字段组3到M,以对该分组做出处理决策。如果需要,则对分组的后续字段组继续类似的操作。一般地,如果在任何给定字段组决策逻辑单元S做出了处理决策,则处理被提前终止,并发送到分组决策仲裁器50。字段组S+1在字段组S处理期间被解析,并在确定已做出决策并且处理可被提前终止时被忽略。
对于每一决策逻辑单元46(1)_46(M),在从多个端口处接收的分组中获得的多个字段组之间执行仲裁以由相应的决策逻辑单元进行处理。具体地,字段组1仲裁器48(1)选择从多个解析器42(1)-42(M)中的一个接收的给定分组的字段组1数据,并将其提供给字段组1决策逻辑单元46(1)。字段组2仲裁器48(2)在从多个解析器42(1)-42(M)接收的多个字段组2数据之间进行仲裁,并且选择一个字段组2数据用于由字段组决策逻辑单元48(2)进行处理。例如,在任何给定时刻,来自两个或两个以上端口(由两个或两个以上解析器进行解析)的分组的字段组1数据可到达字段组专用子块44(1)。字段组1仲裁器48(1)选择针对多个分组中的一个分组的字段组1用于由字段组1决策逻辑单元46(1)在字段组1决策逻辑单元46(1)的任何给定操作会话进行评估。在一个实现中,一旦字段组1决策逻辑单元46(1)完成其对该字段组1数据的评估,则该仲裁器可选择另一分组的字段组1数据并将其提供给字段组1决策逻辑单元46(1)。如果需要,则由字段组专用子块44(2)-44(M)中的字段组仲裁器执行类似操作。在流水线实现中,字段组甚至可在另一字段组的评估完成之前由字段组仲裁器提供。
被耦合到每个字段组专用子块44(1)_44(M)的分组协调单元54被提供以跟踪各个分组的处理。一旦确定能够对特定分组做出处理决策,则决策逻辑单元向分组协调单元54输出信号。分组协调单元54向“下游”或“更深级别”字段组专用子块44(1)-44(M)中适当的一些提供控制信号以保证特定分组的任何额外的字段组被忽略并从至该分组的更深级别字段组的决策逻辑单元的仲裁过程中去除,并且针对特定分组的更深级别字段组已经开始的任何处理被决策逻辑单元终止。分组协调单元54向一个或多个下游决策逻辑单元发送关于处理决策确定的提前终止的控制信号,使得(针对同一分组的)重复的分组处理决策不被发送给分组决策仲裁器50,从而从分组决策仲裁器50的任何仲裁中移除。例如,当对给定分组已经做出处理决策时,分组协调单元54向评估给定分组的更深字段组的一个或多个决策逻辑单元发送控制信号,使得对更深字段组的评估被终止和/或针对一个或多个属于同一分组的更深字段组获得的处理决策被从仲裁中移除。
此外,通过任何两个连续的字段组专用决策子块44(S-1)-44(S)的分组顺序可以不同。因此,在字段组S数据可被处理之前,来自字段组专用决策子块44(S-1)的处理决策结果与来自解析器的字段组S数据同步。分组协调单元54可使字段组专用决策子块44(1)-44(M)中的多个决策逻辑单元的操作同步。同步可发生在来自端口12(1)-12(N)的字段组S处理的仲裁之前或之后。换句话说,与多个分组相关联的字段组的处理决策结果在字段组被仲裁到决策逻辑单元之前或之后被同步。
现在参考图3。图3以图表示出了由图2所示的SIB 40的操作所实现的随时间并行处理分组的字段组。图3的每个垂直块表示字段组中的字段,并且在该示例中,存在被认为用于分组处理的分组的四个字段组。例如,字段组1包括L2字段,字段组2包括L3字段,字段组3包括L4字段,而字段组4包括深度分组检测(DPI)字段。L2字段的示例包括:介质访问控制(MAC)源地址、MAC目的地址、IEEE 802.1Q(虚拟局域网)标签、以太类型、服务类别(COS)和服务类型(TOS)。L3字段的示例包括:互联网协议(IP)源地址和IP目的地址。L4字段的示例包括:源端口、目的端口、确认号和序列号。字段组的解析与基于分组的给定字段组来确定处理决策并行进行。但是,一旦能够对分组做出处理决策,则不再处理该分组的其他字段组,并且该处理决策被输出用于仲裁处理,如上所述。
现在转到图4,示出了高级流程图100,其示出了在网络设备中由SIB40执行的操作。在110,分组在网络设备处被接收。该分组包括多个字段组,每个字段组包括一个或多个字段。在120,分组的字段组被解析。与解析并行地,在130,一旦字段组可用,则该字段组被评估以确定是否能够对该分组做出处理决策。在140,一旦确定能够做出处理决策,则终止字段组的评估,从而忽略还未被评估的分组的任何其他字段组,以对该分组做出处理决策。一旦做出处理决策,则该处理决策被提供给仲裁处理。解析和评估操作120和130持续到处理决策被做出或所有字段组已被处理。应该理解的是,如结合图2所述,分组在网络设备的多个端口处被接收,并且在每个端口接收的分组的解析被执行以生成在相应端口接收的每个分组的多个字段组。存在针对来自多个分组的字段组数据的处理而执行的仲裁,以及针对为多个分组做出的处理决策的执行而执行的仲裁。
总之,上文给出了大大加速网络设备中的分组处理从而降低与该处理相关联的延迟的技术。分组的字段组被解析并传递给与特定字段组相关联的分离的处理子块。网络设备中的分组处理的一个重要延迟来源是在处理开始之前等待分组的所有需要的字段被完全接收。根据这里所述的技术,一接收到分组的字段组就提供给SIB大大改善了延迟。
这里给出的技术实现了具有完全可扩展性和功能的网络设备(例如,L2/L3数据中心交换机)的低延迟,其具有比当前设备多于3倍的延迟性能提升。
以上描述只意在通过示例的方式。
Claims (22)
1.一种方法,包括:
在网络设备处接收分组,所述分组包括多个字段组,每个字段组包括一个或多个字段;
从所述分组中解析字段组;
一旦字段组可用,与所述解析并行地评估所述分组的字段组以确定是否能够对所述分组做出处理决策;以及
一旦确定能够做出处理决策,则终止字段组的评估,从而忽略还未被评估的所述分组的任何其他字段组,以对所述分组做出处理决策。
2.如权利要求1所述的方法,其中所述处理决策是以下各项中的任何一项:负载均衡决策、分组路由决策、丢弃决策以及交换决策。
3.如权利要求1所述的方法,其中接收包括在多个端口的每个端口处接收分组,并且其中解析分组包括解析在每个端口处接收的分组以生成在相应端口处接收的每个分组的多个字段组。
4.如权利要求3所述的方法,还包括提供多个决策逻辑单元,每个决策逻辑单元被配置为确定是否能够基于分组的特定字段组对该分组做出处理决策,并将从所述解析获得的字段组提供给相应的决策逻辑单元。
5.如权利要求4所述的方法,还包括针对每个决策逻辑单元,在从多个端口接收的分组获得的多个字段组之间进行仲裁,以由所述决策逻辑单元进行处理。
6.如权利要求5所述的方法,其中评估基于分组的相应字段组和来自同一分组的至少一个先前字段组的评估的结果来执行。
7.如权利要求5所述的方法,还包括使所述多个决策逻辑单元对多个分组的字段组的操作同步。
8.如权利要求7所述的方法,还包括从所述多个决策逻辑单元接收针对多个分组的多个处理决策结果,并且还包括根据基于先到先服务或基于一个或多个分组参数的调度优先级来在所述多个处理决策结果之间进行仲裁。
9.如权利要求5所述的方法,还包括当对给定分组已经做出处理决策时,向正在评估该给定分组的更深字段组的一个或多个决策逻辑单元发送控制信号,使得对所述更深字段组的评估被终止和/或针对一个或多个属于同一分组的更深字段组获得的处理决策从所述仲裁中被移除。
10.一种装置,包括:
多个端口,被配置为从网络接收分组并向所述网络输出分组,每个分组包括多个字段组;
多个解析器,被配置为解析在所述端口的一个端口处接收的分组以获得所述分组的所述多个字段组,每个字段组包括一个或多个字段;
分组决策单元,被耦合到所述多个解析器,并且被配置为:
一旦字段组可用,与由所述多个解析器执行的所述解析并行地评估所述分组的字段组以确定是否能够对所述分组做出处理决策;并且
一旦确定能够做出处理决策,则终止字段组的评估,从而忽略还未被评估的所述分组的任何其他字段组,以对所述分组做出处理决策。
11.如权利要求10所述的装置,其中所述多个解析器被配置为解析在所述端口的相应一个接收的分组以生成每个分组的多个字段组。
12.如权利要求11所述的装置,其中所述分组决策单元包括多个决策逻辑单元,每个决策逻辑单元被配置为评估所述多个字段组的相应字段组来确定是否能够做出处理决策,并输出针对该字段组的处理结果。
13.如权利要求12所述的装置,其中所述多个字段组的第M字段组的决策逻辑单元被配置为评估所述多个字段组的第M字段组和由第(M-1)字段组的决策逻辑单元输出的处理结果。
14.如权利要求12所述的装置,还包括多个仲裁器,每个仲裁器与所述多个决策逻辑单元中相应的一个相关联,每个仲裁器被配置为从两个或两个以上解析器接收与两个或两个以上分组相关联的相应字段组,并且选择所述两个或两个以上字段组中的一个字段组用于由其相关联的决策逻辑单元进行评估。
15.如权利要求14所述的装置,还包括分组决策仲裁器,其被配置为接收由所述多个决策逻辑单元输出的针对多个分组的多个处理决策,并且根据基于先到先服务或基于一个或多个分组参数的调度优先级来在所述多个处理决策之间进行仲裁。
16.如权利要求14所述的装置,还包括分组协调单元,其被耦合到所述多个仲裁器和多个决策逻辑单元,所述分组协调单元被配置为向多个决策逻辑单元中适当的一些提供控制信号以保证一旦对特定分组已经确定处理决策,则所述特定分组的任何额外字段组被忽略并从所述仲裁器的仲裁过程中移除,并且终止由决策逻辑单元已经开始的针对所述特定分组的更深级别字段组的任何处理。
17.一种编码有指令的计算机可读有形存储介质,当所述指令被处理器执行时,所述指令导致所述处理器:
解析在网络设备处接收的分组的字段组,所述分组包括多个字段组,并且每个字段组包括一个或多个字段;
一旦字段组可用,则与所述解析并行地评估所述分组的字段组以确定是否能够对所述分组做出处理决策;并且
一旦确定能够做出处理决策,则终止字段组的评估,从而忽略还未被评估的所述分组的任何其他字段组,以对所述分组做出处理决策。
18.如权利要求17所述的计算机可读有形存储介质,其中当被所述处理器执行时导致所述处理器进行解析的所述指令包括导致如下操作的指令:所述处理器解析在所述网络设备的多个端口的每个端口接收的分组以生成在相应端口处接收的每个分组的多个字段组。
19.如权利要求18所述的计算机可读有形存储介质,还包括当指令被所述处理器执行时,所述指令导致所述处理器:
通过多个决策逻辑单元中的特定决策逻辑单元确定是否能够基于分组的特定字段组对该分组做出处理决策;并且
将字段组提供给相应的决策逻辑单元。
20.如权利要求19所述的计算机可读有形存储介质,还包括当指令被所述处理器执行时,所述指令导致所述处理器:
针对每个决策逻辑单元,在从在所述多个端口接收的分组获得的多个字段组之间进行仲裁,以用于由所述决策逻辑单元进行处理。
21.如权利要求19所述的计算机可读有形存储介质,还包括当指令被所述处理器执行时,所述指令导致所述处理器:
使所述多个决策逻辑单元对多个分组的字段组的操作同步。
22.如权利要求19所述的计算机可读有形存储介质,还包括当指令被所述处理器执行时,所述指令导致所述处理器:
根据基于先到先服务或基于一个或多个分组参数的调度优先级来在来自所述多个决策逻辑单元的针对多个分组的多个处理决策结果之间进行仲裁。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261702312P | 2012-09-18 | 2012-09-18 | |
US61/702,312 | 2012-09-18 | ||
US13/767,172 | 2013-02-14 | ||
US13/767,172 US9055004B2 (en) | 2012-09-18 | 2013-02-14 | Scalable low latency multi-protocol networking device |
PCT/US2013/059344 WO2014046945A1 (en) | 2012-09-18 | 2013-09-12 | Scalable low latency multi-protocol networking device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104662862A true CN104662862A (zh) | 2015-05-27 |
CN104662862B CN104662862B (zh) | 2017-09-19 |
Family
ID=50274360
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380048257.8A Active CN104641616B (zh) | 2012-09-18 | 2013-09-12 | 使用报头预测的低延时联网设备 |
CN201380048243.6A Active CN104662862B (zh) | 2012-09-18 | 2013-09-12 | 可扩展低延迟多协议网络设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380048257.8A Active CN104641616B (zh) | 2012-09-18 | 2013-09-12 | 使用报头预测的低延时联网设备 |
Country Status (4)
Country | Link |
---|---|
US (4) | US9065780B2 (zh) |
EP (2) | EP2898650B1 (zh) |
CN (2) | CN104641616B (zh) |
WO (2) | WO2014046945A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8954700B2 (en) | 2011-08-02 | 2015-02-10 | Cavium, Inc. | Method and apparatus for managing processing thread migration between clusters within a processor |
US9515929B2 (en) * | 2013-06-28 | 2016-12-06 | Netronome Systems, Inc. | Traffic data pre-filtering |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US9544402B2 (en) * | 2013-12-31 | 2017-01-10 | Cavium, Inc. | Multi-rule approach to encoding a group of rules |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
US10050833B2 (en) * | 2014-06-19 | 2018-08-14 | Cavium, Inc. | Method of reducing latency in a flexible parser and an apparatus thereof |
US9628385B2 (en) | 2014-06-19 | 2017-04-18 | Cavium, Inc. | Method of identifying internal destinations of networks packets and an apparatus thereof |
US9635146B2 (en) | 2014-06-19 | 2017-04-25 | Cavium, Inc. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US10616380B2 (en) | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US9961167B2 (en) | 2014-06-19 | 2018-05-01 | Cavium, Inc. | Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof |
US9742694B2 (en) | 2014-06-19 | 2017-08-22 | Cavium, Inc. | Method of dynamically renumbering ports and an apparatus thereof |
US10015048B2 (en) | 2014-12-27 | 2018-07-03 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US9787605B2 (en) * | 2015-01-30 | 2017-10-10 | Nicira, Inc. | Logical router with multiple routing components |
WO2016200399A1 (en) * | 2015-06-12 | 2016-12-15 | Hewlett Packard Enterprise Development Lp | Application identification cache |
CN111865906A (zh) * | 2015-07-17 | 2020-10-30 | 华为技术有限公司 | 报文传输的方法、装置和系统 |
US9826071B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Configuring a switch for extracting packet header fields |
US9825862B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
US10009291B1 (en) * | 2015-12-21 | 2018-06-26 | Amazon Technologies, Inc. | Programmable switching fabric for dynamic path selection |
US9912774B2 (en) | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
US10341259B1 (en) | 2016-05-31 | 2019-07-02 | Amazon Technologies, Inc. | Packet forwarding using programmable feature prioritization |
US10225161B2 (en) * | 2016-10-31 | 2019-03-05 | Accedian Networks Inc. | Precise statistics computation for communication networks |
CN106506392B (zh) * | 2016-12-19 | 2019-11-26 | 深圳创维数字技术有限公司 | 一种网络拥塞处理方法及装置 |
US10419366B1 (en) | 2017-01-31 | 2019-09-17 | Barefoot Networks, Inc. | Mechanism for communicating to remote control plane from forwarding element |
US10694006B1 (en) | 2017-04-23 | 2020-06-23 | Barefoot Networks, Inc. | Generation of descriptive data for packet fields |
US10826840B1 (en) | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
CN111464378B (zh) * | 2020-03-13 | 2021-12-07 | 苏州浪潮智能科技有限公司 | 一种服务器网卡双网速测试方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5056058A (en) * | 1989-03-13 | 1991-10-08 | Hitachi, Ltd. | Communication protocol for predicting communication frame type in high-speed processing system |
US6819681B1 (en) * | 1999-08-06 | 2004-11-16 | Shrikumar Hariharasubrahmanian | Systems and methods for predicting data fields in layered protocols |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3358254B2 (ja) * | 1993-10-28 | 2002-12-16 | 株式会社日立製作所 | 通信制御装置および通信制御用回路装置 |
US5916305A (en) * | 1996-11-05 | 1999-06-29 | Shomiti Systems, Inc. | Pattern recognition in data communications using predictive parsers |
US6463068B1 (en) | 1997-12-31 | 2002-10-08 | Cisco Technologies, Inc. | Router with class of service mapping |
US6961777B1 (en) * | 1999-08-06 | 2005-11-01 | Shrikumar Hariharasubrahmanian | Systems and methods for predicting fields in a data packet |
WO2001011834A1 (en) | 1999-08-06 | 2001-02-15 | Shrikumar Hariharasubrahmanian | Systems and methods for predicting fields in a data packet |
US6892237B1 (en) | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US7415531B2 (en) * | 2001-08-22 | 2008-08-19 | Mips Technologies, Inc. | Method and apparatus for predicting characteristics of incoming data packets to enable speculative processing to reduce processor latency |
US7899048B1 (en) | 2003-01-15 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for remotely monitoring network traffic through a generic network |
US7474666B2 (en) | 2003-09-03 | 2009-01-06 | Cisco Technology, Inc. | Switch port analyzers |
US7602712B2 (en) | 2004-06-08 | 2009-10-13 | Sun Microsystems, Inc. | Switch method and apparatus with cut-through routing for use in a communications network |
US7830793B2 (en) | 2004-10-22 | 2010-11-09 | Cisco Technology, Inc. | Network device architecture for consolidating input/output and reducing latency |
US7969971B2 (en) | 2004-10-22 | 2011-06-28 | Cisco Technology, Inc. | Ethernet extension for the data center |
US7961621B2 (en) | 2005-10-11 | 2011-06-14 | Cisco Technology, Inc. | Methods and devices for backward congestion notification |
US7656818B1 (en) | 2005-10-28 | 2010-02-02 | Cisco Technology, Inc. | Customizable network device management methods and systems |
US8208389B2 (en) | 2006-07-20 | 2012-06-26 | Cisco Technology, Inc. | Methods and apparatus for improved determination of network metrics |
US8355336B2 (en) * | 2008-02-13 | 2013-01-15 | Qualcomm Incorporated | Methods and apparatus for formatting headers in a communication frame |
US7940762B2 (en) | 2008-03-19 | 2011-05-10 | Integrated Device Technology, Inc. | Content driven packet switch |
KR101152958B1 (ko) | 2008-12-19 | 2012-06-08 | 한국전자통신연구원 | 계층적 패킷 처리 장치 및 방법 |
ATE498966T1 (de) | 2009-05-12 | 2011-03-15 | Alcatel Lucent | Verkehrslastabhängige leistungsreduzierung in hochgeschwindigkeits-paketvermittlungssystemen |
US8284776B2 (en) | 2009-06-10 | 2012-10-09 | Broadcom Corporation | Recursive packet header processing |
US8640036B2 (en) | 2010-04-07 | 2014-01-28 | Cisco Techology, Inc. | Messaging and presence protocol as a configuration and management bus for embedded devices |
JP5518754B2 (ja) | 2011-01-07 | 2014-06-11 | 株式会社日立製作所 | ネットワークノード |
US9001830B2 (en) | 2012-09-18 | 2015-04-07 | Cisco Technology, Inc. | Ultra low latency multi-protocol network device |
-
2013
- 2013-02-14 US US13/767,180 patent/US9065780B2/en active Active
- 2013-02-14 US US13/767,172 patent/US9055004B2/en active Active
- 2013-09-12 WO PCT/US2013/059344 patent/WO2014046945A1/en unknown
- 2013-09-12 CN CN201380048257.8A patent/CN104641616B/zh active Active
- 2013-09-12 EP EP13766824.0A patent/EP2898650B1/en not_active Not-in-force
- 2013-09-12 WO PCT/US2013/059346 patent/WO2014046946A1/en unknown
- 2013-09-12 EP EP13770570.3A patent/EP2898651B1/en not_active Not-in-force
- 2013-09-12 CN CN201380048243.6A patent/CN104662862B/zh active Active
-
2015
- 2015-05-01 US US14/702,270 patent/US9692857B2/en active Active
- 2015-05-01 US US14/702,186 patent/US9641457B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5056058A (en) * | 1989-03-13 | 1991-10-08 | Hitachi, Ltd. | Communication protocol for predicting communication frame type in high-speed processing system |
US6819681B1 (en) * | 1999-08-06 | 2004-11-16 | Shrikumar Hariharasubrahmanian | Systems and methods for predicting data fields in layered protocols |
Also Published As
Publication number | Publication date |
---|---|
US20140078902A1 (en) | 2014-03-20 |
CN104662862B (zh) | 2017-09-19 |
US20140079063A1 (en) | 2014-03-20 |
US9065780B2 (en) | 2015-06-23 |
WO2014046945A1 (en) | 2014-03-27 |
CN104641616A (zh) | 2015-05-20 |
US9055004B2 (en) | 2015-06-09 |
US20150237177A1 (en) | 2015-08-20 |
EP2898651B1 (en) | 2019-02-06 |
US9692857B2 (en) | 2017-06-27 |
US9641457B2 (en) | 2017-05-02 |
WO2014046946A1 (en) | 2014-03-27 |
EP2898651A1 (en) | 2015-07-29 |
US20150236982A1 (en) | 2015-08-20 |
EP2898650B1 (en) | 2019-02-13 |
EP2898650A1 (en) | 2015-07-29 |
CN104641616B (zh) | 2018-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104662862A (zh) | 可扩展低延迟多协议网络设备 | |
US10305802B2 (en) | Reliable transport of ethernet packet data with wire-speed and packet data rate match | |
US10735325B1 (en) | Congestion avoidance in multipath routed flows | |
CN108475244B (zh) | 加速网络分组处理 | |
US20170237672A1 (en) | Network server systems, architectures, components and related methods | |
US11394649B2 (en) | Non-random flowlet-based routing | |
US9590904B2 (en) | Fast software L2 switching using a caching technique | |
Luo | Network I/O virtualization for cloud computing | |
US10819640B1 (en) | Congestion avoidance in multipath routed flows using virtual output queue statistics | |
US9772968B2 (en) | Network interface sharing | |
US10009275B1 (en) | Uniform route distribution for a forwarding table | |
US9509613B1 (en) | Mechanisms for deadlock avoidance support in network fabrics | |
US10887234B1 (en) | Programmatic selection of load balancing output amongst forwarding paths | |
CN105530157B (zh) | Afdx网络交换机多个虚拟链路共享信用的架构及方法 | |
CN109218230A (zh) | 用于平衡跨多级网络交换机的输入端口的吞吐量的技术 | |
CN107003982B (zh) | 用于使用多个多点总线的装置和方法 | |
US10506044B1 (en) | Statistics collecting architecture | |
US8205023B1 (en) | Concurrent pairing of resources and requestors | |
US9258273B2 (en) | Duplicating packets efficiently within a network security appliance | |
EP3588901A1 (en) | Scalable packet processing | |
CN113039749B (zh) | 使用基于多播的服务插入对分组并行执行串行服务链的服务 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |