CN104702588A - 解析器、分组处理装置以及相关方法 - Google Patents
解析器、分组处理装置以及相关方法 Download PDFInfo
- Publication number
- CN104702588A CN104702588A CN201410727846.5A CN201410727846A CN104702588A CN 104702588 A CN104702588 A CN 104702588A CN 201410727846 A CN201410727846 A CN 201410727846A CN 104702588 A CN104702588 A CN 104702588A
- Authority
- CN
- China
- Prior art keywords
- header
- bit
- resolver
- addressable memory
- content addressable
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种解析器、分组处理装置以及相关方法。解析器用于解析分组中的报头,包含多个水平字段选择器,多个比较器以及内容可寻址存储器式装置,多个水平字段选择器中的每一水平字段选择器用于选择第一比特位组;多个比较器分别耦接于多个水平字段选择器,其中多个比较器中的每一比较器用于将对应的水平字段选择器所选出的第一比特位组与指定值作比较,以产生比较结果;内容可寻址存储器式装置用于接收产生自多个比较器的多个比较结果,以及使用多个比较结果作为第一输入搜寻数据。本发明的解析器、分组处理装置以及相关方法可增进分组处理的弹性。
Description
【技术领域】
本发明的实施例关于转发分组的技术内容,尤其关于一种用于解析分组中的报头(header)的解析器(例如软件定义解析器)以及与其相关的分组处理装置。
【背景技术】
网络交换器(network switch)是一种链接(link)不同电子装置的电脑网络装置。举例来说,网络交换器会接收来自链接于该网络交换器的第一电子装置传来的分组,并且会只对用于接收分组的第二电子装置传送修改后的分组或未经修改的分组。解析器(parser)是网络交换器中的重要元件,尤其是解析器会经由遍历(traverse)协议树(protocol tree)以及提取感兴趣的报头字段(field),来对分组报头进行提取,后续的分组处理电路会参考该解析结果,来对分组报头进行分类以及执行动作命令。为了达到更好的分组处理性能,解析器可使用固定的硬件电路来实施。然而,这样的解析器设计会缺乏弹性,因此有需要一种创新的解析器设计来加强弹性。
【发明内容】
有鉴于此,本发明特提供以下技术方案:
本发明实施例提供一种解析器,用于解析分组中的报头,解析器包含多个水平字段选择器,多个比较器以及内容可寻址存储器式装置,多个水平字段选择器中的每一水平字段选择器用于选择第一比特位组;多个比较器分别耦接于多个水平字段选择器,其中多个比较器中的每一比较器用于将对应的水平字段选择器所选出的第一比特位组与指定值作比较,以产生比较结果;内容可寻址存储器式装置用于接收产生自多个比较器的多个比较结果,以及使用多个比较结果作为第一输入搜寻数据。
本发明实施例另提供一种一种分组处理装置,包含解析器以及分组处理电路,解析器用于解析分组的报头,以经由提取来自报头的至少一个用户定义字段来产生解析结果,以及根据指定的集合识别符及指定的协议识别符来将至少一个用户定义字段储存于解析结果中的集合;分组处理电路用于至少部分地基于解析结果的数据结构,来进行分组处理操作。
本发明实施例另提供一种用于解析分组中的报头的方法,包含选择多个第一比特位组;将多个第一比特位组分别与多个指定值作比较,以产生多个比较结果;以及将多个比较结果作为输入搜寻数据来输入内容可寻址存储器式装置。
本发明实施例另提供一种分组处理方法,包含使用解析器来解析分组的报头,以经由自报头提取出至少一个用户定义字段来产生解析结果,以及根据指定的集合识别符以及指定的协议识别符来将至少一个用户定义字段储存于解析结果中的集合;以及至少部分地基于解析结果的数据结构,来进行分组处理操作。
利用本发明的解析器、分组处理装置、用于解析分组中的报头的方法以及分组处理方法可增进分组处理的弹性。
【附图说明】
图1是根据本发明实施例的弹性分组处理装置的示意图。
图2是图1所示的软件定义解析器的范例的示意图。
图3是图2所示的解析状态表的每一表入口的数据结构的示意图。
图4是图2所示的比较引擎的范例的示意图。
图5是图2所示的动作表的每一表出口的数据结构的示意图。
图6是图2所示的移位引擎的范例的示意图。
图7是图2所示的提取引擎的范例的示意图。
【具体实施方式】
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。
本发明提出了一种使用可编程解析状态表的软件定义(software-defined)解析器。此外,该软件定义解析器会在本发明的以集合为基础的(union based)结构中产生解析结果,其中该解析结果中的每一集合包含提取(extract)自分组的报头的用户定义字段(user-defined field)。因此,后续的分组处理电路(包含入口(ingress)分组处理电路以及出口(egress)分组处理电路)用于基于设置于本发明的以集合为基础的结构中的用户定义字段所组成的解析结果来进行操作。如此一来,可实现增进分组处理的弹性的目的。关于使用该软件定义解析器的弹性分组处理装置的细节将详述如后。
图1是根据本发明一实施例的弹性分组处理装置100的示意图,举例来说,弹性分组处理装置100可为网络交换器。如图1所示,弹性分组处理装置100包含介质访问控制(media access control,MAC)层接收接口(标示为“MACRX”)102、软件定义解析器(software-defined parser,SDP)104、多个分组处理电路(例如多个流引擎(flow engines))106_1~106_N、流量管理器(traffic manager,TM)108、分组修改电路110以及MAC层传送接口(标示为“MAC TX”)112。MAC层接收接口102用于自入口接口(ingress port)(未图示)接收分组(即入口分组),且MAC层传送接口112用于透过出口接口(egress port)(未图示)来转发分组。
由MAC层接收接口102所接收的分组(即入口分组)PKT会被软件定义解析器104处理以进行分组报头辨识。软件定义解析器104会基于解析分组PKT中不同协议的报头而产生解析结果PR,并且将具有提取到的分组报头信息的解析结果PR提供给后续的分组处理电路(例如流引擎106_1~106_N)。流引擎106_1~106_N中一个或多个流引擎可基于分组PKT的解析结果PR来建立至少一个搜寻关键字(search key),并且使用该至少一个搜寻关键字来搜寻流程表114以进行分组报头分类(classification)。基于分组报头分类的结果,流引擎106_1~106_N中一个或多个流引擎可搜寻指令表(instruction table)116来决定用于分组的动作命令。此外,流引擎106_1~106_N中一个或多个流引擎可基于分组PKT的解析结果PR来建立散列关键字(hash key),并且参照该散列关键字来选择性地进行动态负载平衡(dynamic load balancing),以转发由分组PKT产生的出口分组PKT’。
流量管理器108至少用于处理分组的排序(queuing)以及调度(scheduling)。此外,流量管理器108可另用于处理组播(multicast)以及相关的分组复制(replication)。多个出口队列(output queues)118分别对应于弹性分组处理装置100的多个出口接口。基于分组PKT所经由来转发的出口接口,流量管理器108会将分组PKT编入(enqueue)至对应的输出队列118中。在排定的时间点,流量管理器108会自输出队列118取出(dequeue)分组PKT给后续的分组处理电路(例如分组修改电路110)。此外,由流引擎106_1~106_N中一个或多个流引擎所决定的动作命令可用动作命令桶指针(action command bucket pointer)来表示,且该动作命令桶指针经由流量管理器108来被传送至分组修改电路110。分组修改电路110用于依据该动作命令桶指针来存取多个动作命令桶120之一,找出并且执行动作命令,修改该分组PKT的报头,以产生出口分组PKT’至MAC层传送接口112。
值得注意的是,图1所示的弹性分组处理装置100的结构仅作为举例,并非用于限定本发明的范畴,任何使用本发明的解析器设计及/或解析结果的数据结构的分组处理装置皆落入本发明的范畴。有关于软件定义解析器104的细节以及在以集合为基础的结构中使用该解析结果的应用的细节将详述如后。
图2是图1所示的软件定义解析器104的范例的示意图。软件定义解析器104包含集合移位器(union shifter)202、比较引擎204、移位引擎206、提取引擎208、校验和引擎(checksum engine)210,以及多个可编程表(例如解析状态表(parser state table)212、掩模表(mask table)214以及数值表(value table)216)。由于解析状态表212、掩模表214以及数值表216都是可编程的,故可据以实现强化软件定义解析器104的弹性的目的。在本实施例中,解析状态表212基于协议树(protocol tree)而被编程,例如解析状态表212中的每一表入口(table entry)会记录该协议树中的一个状态的信息。因此,从被目前的程序计数器值Curr_PC所指到的表入口中所读取出的解析指令(parser instruction)会被用来设置软件定义解析器104中其他的电路元件(例如比较引擎204以及移位引擎206),以使软件定义解析器104进入该协议树的对应状态。举例而言,但不用于限定,解析状态表212被设置为具有64个表入口,且每个表入口具有317个比特位(图中标示为64x317b)。解析状态表212的每一表入口的数据结构如图3所示,其中括号中的数字用于注记该解析状态表入口的每一控制设定的比特位长度(例如,317比特位)。关于记录在该解析状态表中的控制设定将在后续段落中详细说明。
比较引擎204用于控制软件定义解析器104,使该协议树由目前状态转换至下一个状态。因此,比较引擎204可产生下一个程序计数器值Next_PC,来更新该目前的程序计数器值Curr_PC。尤其是,比较引擎204可检查多个预定规则中哪一个预定规则有符合,接着对应地控制报头信息提取、第四层(L4)校验和查验以及状态转移。
图4是图2所示的比较引擎204的范例的示意图,比较引擎204包含多个水平字段(horizontal field)选择器402_0~402_15、多个比较器404_0~404_15、垂直字段(vertical field)选择器406、掩模电路408、内容可寻址存储器式(contentaddressable memory(CAM)based)装置410以及动作表412。在本实施例中,内容可寻址存储器式装置410包含有三元内容可寻址存储器(ternary contentaddressable memory,TCAM)414以及优先编码器(priority encoder)416。请注意,水平字段选择器的数量以及比较器的数量可视实际设计考虑来作调整。
对于水平字段选择器402_0~402_15、比较器404_0~404_15、垂直字段选择器406以及掩模电路408的操作的控制基于记录在被目前的程序计数器值Curr_PC所指到的解析状态表212的表入口中的控制设定。如图4所示,水平字段选择器402_0~402_15分别耦接于比较器404_0~404_15。因此,水平字段选择器以及比较器会组成检查电路,用于检查选择自数据源的比特位组(例如2比特位组(或16比特位))是否符合预定规则并且据以产生比较结果(例如一个比特位)来作为检查结果,其中该数据源包含通用寄存器(general purposeregister)GPR0~GPR3以及报头屏幕窗口(header screen window)中的报头。水平字段选择器402_0-402_15分别被控制设定C_Sel0-C_Sel15控制。在本实施例中,每一通用寄存器GPR0~GPR3具有16比特位(即2比特位组),且该报头屏幕窗口的大小是32比特位组。由于该数据源具有40个比特位组,且每一水平字段选择器402_0~402_15用于自该数据源选择两个比特位组,每一控制设定C_Sel0~C_Sel15会因而具有5比特位(图3中标示为C_Sel0(5)~C_Sel15(5)),以指示该数据源中哪两个比特位组应该被选出来进行比较。因此,水平字段选择器402_0~402_15会分别对比较器404_0~404_15输出各自具有两个比特位组的比特位组BG0~BG15。
比较器404_0~404_15中的每一比较器由算子(由控制设定C_OP0~C_OP15(图3中标示为C_OP0(1)~C_OP15(1))之一所直接设定)、指定值(基于控制设定C_value_idx0~C_value_idx15(图3中标示为C_value_idx0(7)~C_value_idx15(7))之一所设置)以及指定的掩模(基于控制设定C_mask_idx0~C_mask_idx15(图3中标示为C_mask_idx0(5)~C_mask_idx15(5)之一所设置)所控制。例如,比较器所使用的算子可为“=”或者是“>”。因此,当C_OP0=0时,比较器404_0可被指示以使用算子“=”;当C_OP0=1时,比较器404_0可被指示以使用算子“>”。被比较器使用的指定值从图2所示的数值表216取得,且被比较器所指定的掩模从图2所示的掩模表214取得。
举例而言,但不用于限定,图2所示的数值表216具有80个表入口,其中每一表入口储存有16比特位的数值(图2中标示为80x16b),用于进行比较;如图2所示的掩模表214具有32个表入口,其中每一表入口储存有16比特位的位图(bitmap)掩模,用于定义兴趣比特位(interested bit)的位置以及随意比特位(don’t care bit)的位置(图2中标示为32x16b)。透过使用数值表216来在解析状态表212中储存16比特位的数值以及储存该16比特位的数值的索引值(indexvalue),相同的16比特位的数值可在该分组报头解析程序(packet header parsingprocedure)中被重复使用,因而可降低解析状态表212的整体大小。同样地,透过使用掩模表214来在解析状态表212中储存16比特位的位图掩模以及储存该16比特位的位图掩模的索引值,相同的16比特位的位图掩模可在该分组标投解析程序中被重复地使用,并可降低解析状态表212的整体大小。
如图3所示,控制设定C_mask_idx0~C_mask_idx15是为比较器404_0~404_15而自掩模表214分别选择指定的掩模mas0~mask15。同样地,控制设定C_value_idx0~C_value_idx15是为比较器404_0~404_15而自数值表216分别选择指定的数值Value0~Value15。因此,基于指定的掩模(例如掩模0)的设定,在比较器(例如404_0)所执行的比较操作的期间,指定值(例如Value0)的所有比特位可被视为兴趣比特位;或是在该比较器(例如404_0)所执行的比较操作的期间,该指定值(例如Value0)的至少一个比特位可被视为随意比特位。尤其是,每一比较器404_0~404_15可用于根据指定的掩模(例如mas0~mask15之一)来将一个比特位组(例如BG0~BG15之一)与一个指定值(例如Value0~Value15之一)进行比较,并且产生单一比特位(one bit)的比较结果。因此,比较器404_0~404_15用作为水平比较器来同时输出各自具有单一比特位的比较结果CR0~CR15至三元内容可寻址存储器414。
如以上所述,每一水平字段选择器402_0~402_15可用于选择两个比特位组(two bytes),且每一比较器404_0~404_15可用于检查被选择的该两个比特位组是否符合由算子、指定的数值以及指定的掩模所定义的预定规则。在此情况下,水平字段选择器402_0~402_15以及比较器404_0~404_15会被使用来检查16项规则,且会有16个检查结果(即比较结果CR0~CR15)被输入至三元内容可寻址存储器414。三元内容可寻址存储器414使用16个检查结果(即比较结果CR0~CR15)来作为三元内容可寻址存储器的搜寻关键字的输入搜寻数据,以及将该输入搜寻数据与三元内容可寻址存储器414的所有的入口进行比较,来判断该输入搜寻数据是否符合由三元内容可寻址存储器414的入口所定义的一个或多个预定规则。因此,使用水平字段选择器402_0~402_15以及比较器404_0~404_15可强化该报头辨识灵活性及/或降低三元内容可寻址存储器的大小以及设计复杂度。
然而,若使用水平字段选择器402_0~402_15以及比较器404_0~404_15,可能会使对于报头辨识所需的规则所做的检查失败。例如当相同的两个比特位组必须使用该16项规则来检查时,每一水平字段选择器402_0~402_15可选择该相同的两个比特位组,且比较器404_0~404_15可被用来检查该16项规则。然而,当该二相同的比特位组需要使用超过16项规则来检查时,则水平字段选择器402_0~402_15以及比较器404_0~404_15便不足以使用来进行检查。在本实施例中,比较引擎204另用于支持使用部分的三元内容可寻址存储器414的垂直比较器。
垂直字段选择器406系被解析状态表212的表入口的控制设定V_Sel所控制,其中解析状态表212被程序计数器值Curr_PC所指示。如上所述,每一通用寄存器GPR0~GPR3具有16比特位(即2个比特位组),且该报头屏幕窗口的大小是32比特位组。由于该数据源具有40个比特位组,且垂直字段选择器406用于自该数据源选择两个比特位组,控制设定V_Sel会具有5比特位(图3中标示为V_Sel(5))以指示数据源中哪两个比特位组应该被选出来进行比较。因此,垂直字段选择器406会输出具有两个比特位组的比特位组BGV至掩模电路408。
关于掩模电路408,其根据被当前的程序计数器值Curr_PC所指到的解析状态表212的表入口中的控制设定V_mask_idx(图3中标示为V_mask_idx(5)),来被得自掩模表214的指定的掩模所控制。指定的掩模mask_V是用于定义兴趣比特位的位置以及随意比特位的位置的16比特位的位图掩模。基于指定的掩模mask_V的设定,比特位组BGV中的所有比特位皆可被视为兴趣比特位,或是比特位组BGV中的至少一个比特位可被视为随意比特位。在将指定的掩模mask_V应用至比特位组BGV之后,掩模电路408会输出比特位组BGV’作为该三元内容可寻址存储器的搜寻关键字的输入搜寻数据。
除了包含于该报头中的比特位组,垂直字段选择器406以及水平字段选择器402_0~402_15还可选择包含于通用寄存器GPR0~GPR3中的比特位组。在本实施例中,通用寄存器GPR0以及GPR1是可读/写(R/W)寄存器,而通用寄存器GPR3以及GPR4是只读(read-only,RO)寄存器。因此,储存于通用寄存器GPR0以及GPR1中的信息可被用户修改。换句话说,通用寄存器GPR0以及GPR1可用来储存用户定义(user-defined)的信息。然而,储存于通用寄存器GPR2以及GPR3中的信息不允许用户修改。举例而言,通用寄存器GPR2以及GPR3可用来储存系统信息,例如与将要被解析的分组相关的接口信息。该系统信息及/或用户定义信息可为操作数(operand),用于在该分组报头解析中被比较。此外,接收自不同入口接口的解析分组可从该协议树的不同状态下开始。因此,目前的程序计数器值Curr_PC的起始值可基于通用寄存器GPR0/GPR1所给予的该接口信息来设定,故可省去比较操作。
如本领域技术人员所了解的,三元内容可寻址存储器包含三元内容可寻址存储器阵列,该三元内容可寻址存储器阵列具有多列(column)的三元内容可寻址存储器单元,其中每一三元内容可寻址存储器单元支持三种状态,分别为“0”、“1”以及“X”(随意(don’t care)状态)。该三元内容可寻址存储器会将搜寻关键字与被储存的数据的表作比较,并且回传每一符合数据(matched data)的地址。换句话说,在该三元内容可寻址存储器中,储存于该三元内容可寻址存储器阵列中的数据并非经由一开始提供地址来存取,而是经由先将该搜寻字应用至该三元内容可寻址存储器阵列,接着进行比较操作来辨识该三元内容可寻址存储器阵列中的一个或多个行(row)位置,其中该三元内容可寻址存储器阵列包含匹配于被应用的搜寻关键字的数据,并因而提供了匹配状态。如此一来,该三元内容可寻址存储器的储存的数据会根据其内容而不是根据其地址来被存取。如图4所示,由比较结果CR0~CR15所组成的输入搜寻数据的比特位会被分别输入至三元内容可寻址存储器414中的多列(例如C6~C22),且被比特位组BGV’所设定的另一输入搜寻数据的比特位会被分别输入至三元内容可寻址存储器414中的多列(例如C23~C37)。经由适当地设定三元内容可寻址存储器单元,对于比较结果CR0~CR15所设定的输入搜寻数据所作的比较操作可独立于比特位组BGV’所设定的输入搜寻数据的比较操作来执行。
此外,目前的程序计数器值Curr_PC也可作为该三元内容可寻址存储器的搜寻关键字的输入搜寻数据来使用。由于解析状态表212具有64个表入口,目前的程序计数器值Curr_PC会因而具有6比特位。如图4所示,目前的程序计数器值Curr_PC的比特位分别被输入至三元内容可寻址存储器414的多列(例如C0~C5)中。
在特定的网络环境下,例如虚拟专用网(virtual private network,VPN),一个分组可被封装于另一分组中。因此,分组可包含一个对外(outer)报头(例如通道报头)、一个对内(inner)报头,以及有效负荷(payload),其中该对内报头接续在该对外报头之后,且该有效负荷接续在该对内报头之后。因此,在解析该对外报头之后,解析器会开始解析该对内报头。在一种解析器设计下,解析状态表可包含用于解析该对外报头的表入口,以及另包含其他的用于解析该对内报头的表入口。然而,这样的解析器设计将需要大型的解析状态表,而导致较高的生产成本。该对外报头以及该对内报头可具有相似的报头结构,以使得该对外报头的协议树可相似于该对内报头的协议树。有鉴于此,本发明提出了设定内旗标(flag)来达到对解析状态表中的表入口进行再利用(reuse)的目的,以降低表的大小。
如图4所示,内旗标被输入至三元内容可寻址存储器414中的一列(例如C38)中,以作为三元内容可寻址存储器的搜寻关键字的输入搜寻数据。该内旗标在软件定义解析器104正在解析对内报头时被宣告有效(例如内旗标=1),且该内旗标在软件定义解析器104正在解析对外报头时被宣告无效(例如内旗标=0)。虽然解析状态表212的至少一个部分的(部分或全部的)表入口可在解析该对内报头时(即当该内旗标被第一逻辑值(例如1)所设定时)被选择/使用,以及可于解析该对外报头时(即当该内旗标被第二逻辑值(例如0)所设定时)被选择,用于解析该对内报头而在三元内容可寻址存储器414中被检查的规则仍可不同于用于解析该对外报头而在三元内容可寻址存储器414中被检查的规则。在本实施例中,位于列C38的三元内容可寻址存储器单元会被适当地设定。例如,当三元内容可寻址存储器的入口在C38列具有由状态“0”所设定的三元内容可寻址存储器单元时,被三元内容可寻址存储器的入口所定义的规则会被允许仅对该对外报头进行解析;当三元内容可寻址存储器的入口在C38列具有由状态“1”所设定的三元内容可寻址存储器单元时,被三元内容可寻址存储器的入口所定义的规则会被允许仅对该对内报头进行解析;以及当三元内容可寻址存储器的入口在C38列具有由状态“X”(即随意状态)所设定的三元内容可寻址存储器单元时,被三元内容可寻址存储器的入口所定义的规则会被允许对该对内报头以及该对外报头进行解析。请注意,每当对于分组的报头解析操作完成时,该内旗标就会被清空(cleared)/宣告无效(即内旗标=0)。
由于三元内容可寻址存储器单元可被程序化以具有随意状态,故在相同的三元内容可寻址存储器的搜寻关键字之下,多个三元内容可寻址存储器的入口有可能具有“匹配”状态。因此,优先编码器416会被用来选择具有最高顺位的匹配的三元内容可寻址存储器的入口(例如第一个匹配的三元内容可寻址存储器的入口),以及输出具有最高顺位的匹配的三元内容可寻址存储器的入口的入口索引至动作表412。关于动作表412,动作基于产生自优先编码器416的入口索引来决定。举例而言,但不用于限定,动作表412包含384个表入口,其中每个表入口具有93比特位(图4中标示为(384x93b)),用于定义动作的行为。此外,三元内容可寻址存储器414的三元内容可寻址存储器入口以及动作表412之间可存在有一对一(one-to-one)的映射。因此,包含在动作表412中的表入口的数量可相同于包含于三元内容可寻址存储器414中的三元内容可寻址存储器的入口的数量。动作表412的每一表入口的数据结构在图5有举例,其中标注于括弧内的数字用于指示动作表入口中的每一控制设定的比特位长度。关于记录在动作表入口中的控制设定的相关说明将详述如后。
控制设定Next_PC对应于该协议树中的下一状态,并因此指出解析状态表212中的下一表入口的地址,其中解析状态表212应被选择/使用来解析下一报头(例如不同协议的报头)。因此,目前的程序计数器值Curr_PC将会被指定于控制设定Next_PC中的值所更新。
如上所述,通用寄存器GPR0以及GPR1是可读/写(R/W)寄存器。控制设定GPR_idx会指定要选择通用寄存器GPR0以及GPR1中的哪一个以进行修改(modification)。控制设定GPR_value会指定一个值来存入被选择该通用寄存器(即GPR0或GPR1)。控制设定GPR_mask指定位图掩模,其中该位图掩模用于定义被控制设定GPR_value所指定的值中的比特位的位置,且控制设定GPR_value实际上会被储存至选择的该通用寄存器。
控制设定assert_inner_flag用于设置上述的内旗标。例如,当将要被处理的下一报头是对内报头时,控制设定assert_inner_flag将会记录第一逻辑值(例如assert_inner_flag=1)以宣告该内旗标有效(例如内旗标=1);以及当将要被处理的下一报头仍为对外报头时,控制设定assert_inner_flag会记录第二逻辑值(例如assert_inner_flag=0)以宣告该内旗标无效(例如内旗标=0)。控制设定Cks_mode以及L4_cks_sel用于设置图2所示的校验和引擎210,以进行错误处理。
控制设定Fix_sft以及Fix_sft_amt用于控制图2所示的移位引擎206,以调整被集合移位器202所读取的报头区段(section)。在对于目前的报头(例如第一协议的报头)所作的解析完成之后(即在目前的报头中的所需报头信息被提取引擎208所提取),软件定义解析器104会继续进行对于下一报头(例如第二协议的报头)的解析。集合移位器202必须经由对该分组的所需比特位/比特位组位置进行移位(shift),以从该分组载入不同的报头区段。例如,在图2中,假定当前所解析的报头为L3报头,其中L3报头位于在前的L2报头和在后的L4报头之间。报头屏幕窗口位32比特位,集合移位器202对分组的所需比特位/比特位组位置进行移位,以从分组载入L3报头。
图6是图2所示的移位引擎206的范例的示意图,在本范例中,移位引擎206包含移位字段选择器(shifterfield selector)602、掩模移位电路604、加法器606,以及复用器(multiplexer,MUX)608。目前的报头(可例如为某一协议的报头)中的报头字段可包含与下一报头(可例如为另一协议的报头)的地址相关的信息。当软件定义解析器104正在解析该目前的报头时,记录在解析状态表212的表入口中的控制设定S_Sel(图3中标示为S_Sel(5))、S_sft_left(图3中标示为S_sft_left(1))、S_sft_amt(图3中标示为S_sft_amt(4))、S_mask_idx(图3中标示为S_mask_idx(5))以及Extra_sft_amt(图3中标示为S_sft_amt(4))用于设置移位引擎206,其中解析状态表212系被目前的程序计数器值Curr_PC所指到。例如,控制设定S_Sel会控制移位字段选择器602来自该目前的报头选择两个比特位组。该掩模以及移位电路604会被根据控制设定S_mask_idx而从掩模表214得来的掩模Masksft所控制,并且会进一步被控制设定S_sft_left以及控制设定S_sft_amt所控制。掩模Masksft是位图掩模,用于从被移位字段选择器602所选择的两个比特位组中来选择兴趣比特位。控制设定S_sft_left会决定比特位左移(left-bit shifting)操作(即2次乘法所构成的幂次(power-of-2multiplication)是否被使能,以及控制设定S_sft_amt会决定要被左移的比特位位置的数量。控制设定Extra_sft_amt会被传到加法器606,而与该掩模以及移位电路604的输出相加。加法器606的输出会作为第一候选移位量来给集合移位器202使用。
此外,也可能直接经由记录在动作表412的表入口中的控制设定Fix_sft_amt所指定的固定的移位量来直接控制移位引擎206,其中动作表412基于产生自优先编码器416的入口索引而被选择,且该固定的移位量可作为集合移位器202的第二候选移位量。在所选择的动作表入口中的控制设定Fix_sft会决定被用于从该分组载入报头区段的移位引擎206所使用的移位量Hdr_shift_amt是要被该第一候选移位量或是该第二候选移位量所设定。例如,当Fix_sft=1时,移位量Hdr_shift_amt会被第二候选移位量(即Fix_sft_amt)所设定;以及当Fix_sft=0时,移位量Hdr_shift_amt会被第一候选移位量(即加法器606的输出)所设定。
当动作表412的表入口基于产生自优先编码器416的该入口索引来设定时,在所选择的动作表入口中的控制设定Ext_map、集合识别符以及协议识别符会被用来控制图2所示的提取引擎208。在本实施例中,提取引擎208用于基于控制设定Ext_map来自目前的报头(例如某一协议的报头)提取至少一个用户定义字段(user-defined field,UDF),以及根据由控制设定集合识别符所设定的指定的集合识别符以及由控制设定协议识别符所设定的指定的协议识别符,来储存该至少一个用户定义字段至解析结果PR中的集合。
图7是图2所示的提取引擎208的范例的示意图,提取引擎208包含提取字段选择器702。控制设定Ext_map是位图,用于定义该目前的报头中的哪一部分被提取。举例而言,控制设定Ext_map具有32个比特位(例如比特位[0]~比特位[31]),其中每一比特位对应于一个两个比特位组(two-byte)的报头区段。对于该报头字段的提取从目前被该报头屏幕窗口所选择的报头区段的起始位置开始。因此,当对于该报头字段的提取由提取引擎208执行时,比特位[0]会被用作为控制信号(即使能信号),以决定第一两个比特位组报头字段(由在该报头屏幕窗口中的该报头区段的第一比特位组以及第二比特位组所组成)是否该被提取;比特位[1]可用来决定该第二个两个比特位组报头字段(由在该报头屏幕窗口中的该报头区段的第三比特位组以及第四比特位组所组成)的控制信号(即使能信号)是否该被提取,以此类推。
请注意,控制设定Ext_map的比特位长度的设定与报头屏幕窗口的大小的设定相关联。因此,对于控制设定Ext_map的比特位计数可不同于报头屏幕窗口的比特位组计数。在本实施例中,每一记录于解析结果PR中的用户定义字段会具有固定的大小。例如,提取字段选择器702会自该目前报头提取16比特位(即2比特位组)来产生用户定义字段。换句话说,该用户定义字段是经由解析分组所产生的解析结果PR中的固定大小的分组报头字段(例如16比特位的分组报头字段)。
解析结果PR中的每一集合会被独特(unique)集合识别符所辨识,举例而言,但不用于限定,集合可用来记录自属于相同的网络层提取而来的用户定义字段,而在同一集合中的用户定义字段会被协议识别符所指定。也就是说,从某一协议的报头提取来的用户定义字段会被分配有独特协议识别符。例如,当用户定义字段提取自IPv4报头时,可使用PID=1;以及当用户定义字段由提取自IPv6报头时,可使用PID=2。如此一来,提取自不同协议的报头的用户定义字段可被设置于相同的集合并且由分配的协议识别符进行适当地辨识。此外,当对于该分组报头的解析结束后,集合是空(empty)时,PID=0可被分配至解析结果PR中的此空集合。
如图7所示,倘若在所选择的动作表入口中的控制设定集合识别符记录UID=3,以及所选择的动作表入口中的控制设定协议识别符记录PID=8,提取字段选择器702会依据被控制设定Ext_map所定义的位图,来提取三个用户定义字段,并且将提取到的该三个PID=8的用户定义字段储存至该UID=3的集合中。换句话说,指定的协议识别符(即PID=8)会分配给解析结果PR中所定义的该第三集合(即union#3)。举例而言,但不用于限定,解析结果PR会被允许将至多180个用户定义字段、至多26个集合、至多16个协议识别符分配给相同的集合,及/或允许最多32个用户定义字段储存在相同的集合中。
具有设置于以集合为基础的(union-based)结构中的用户定义字段的解析结果PR将会被后续的分组处理电路所使用。除了解析结果PR,提取引擎208可为解析结果PR中的集合另产生集合属性U_profile。如图7所示,集合属性U_profile可包含两个字段Union_PID以及Union_Pkt_offset。第一字段Union_PID描述每一集合中的协议识别符,且第二字段Union_Pkt_offset记录了每一集合的物理分组偏移(offset)。该物理分组偏移指示该集合中的该第一用户定义字段的物理分组位置。例如,物理分组偏移可被视为该分组的物理起始位置以及在该分组中的该集合的物理起始位置之间的偏移。记录于集合属性U_profile中的信息可被参考以使得对于提取的解析结果PR及/或该物理分组所作的修改可被转发。
简而言之,解析器(例如软件定义解析器104)可经由从该报头提取至少一个用户定义字段,来解析分组的报头以产生解析结果,以及根据指定的集合识别符以及指定的协议辨识符来储存该至少一个用户定义字段至该解析结果中的集合;此外,分组处理电路(例如流引擎106_1~106_N以及分组修改电路110之一)可至少部分地基于该解析结果的数据结构来执行分组处理操作。为了帮助了解本发明的技术特征,以下将介绍使用该解析结果及/或该集合属性的几个示范应用。
关于使用软件定义解析器104的输出的第一应用,流引擎106_1~106_N之一可根据被分配有指定的集合识别符以及指定的协议识别符的集合中的用户定义字段来建立搜寻关键字,其中该指定的集合识别符以及该指定的协议识别符会被检查,以确认该所述用户定义字段是建立该搜寻关键字所需的用户定义字段。该搜寻关键字可用来搜寻用于匹配的字段的流程表。接着,可对应地决定出与该匹配的字段相关的动作。也就是说,至少一个动作命令可透过以该搜寻关键字来搜寻该流程表而决定。
关于使用软件定义解析器104的输出的第二应用,流引擎106_1~106_N之一可根据被分配有指定的集合识别符以及指定的协议识别符的集合中的该(或该多个)用户定义字段来建立散列关键字,其中该指定的集合识别符以及该指定的协议识别符会被检查以确认该(或该多个)用户定义字段是建立该散列关键字所需的用户定义字段。散列关键字可作为等价多路径(Equal Cost Multipath,ECMP)/链路聚合组(Link Aggregation Group,LAG)负载平衡之用。也就是说,该散列关键字可被参考来选择性地进行动态负载平衡。
关于使用软件定义解析器104的输出的第三应用,渐进式的(incremental)分组解析(例如软件辅助解析)可在流引擎之间的动作之后被执行。例如,流引擎106_1~106_N之一会决定至少一个动作命令来修改第一协议的特定报头,以将该特定报头转换为不同于该第一协议的第二协议。为了确保后续的流引擎能够正常运作,该流引擎可经由改变分配给具有提取自该特定报头的用户定义字段的集合来修改解析结果PR。因此,在对于该协议识别符的修改完成之后,该第二协议的协议识别符会被分配给具有提取自该特定报头的用户定义字段的该集合。
关于使用软件定义解析器104的输出的第四应用,流引擎106_1~106_N之一可修改由提取到的分组报头信息所组成的解析结果PR。由于用户定义字段记录在以集合为基础的结构中的解析结果PR,所述的对于用户定义字段的修改可基于目标集合的集合识别符以及在该目标集合中的目标用户定义字段的用户定义字段偏移来进行。例如,当在图7所示的解析结果PR中的该第三集合(即union#3)中的第二用户定义字段(即UDF 8.1)需要作修改时,可执行至少一个具有参数{UID=3,UDF offset=2}的命令。
关于使用软件定义解析器104的输出的第五应用,分组修改电路110可在传送物理分组至MAC层传送接口112之前,修改该从输出队列(queue)118取出的物理分组,以进行分组转发。由于用户定义字段记录于以集合为基础的结构中的解析结果PR,分组修改电路110可依据集合属性U_profile中的信息来将修改应用至该物理分组中的目标报头。例如,对于该分组的修改可以基于目标集合的集合识别符以及分组偏移,其中具有该集合识别符的该目标集合的物理分组偏移从集合属性U_profile得到,且至少一个动作命令根据该物理分组偏移加上该分组偏移,而被应用至该分组的报头。
以上所述仅为本发明的较佳实施例,本领域相关的技术人员依据本发明的精神所做的等效变化与修改,都应当涵盖在权利要求书内。
Claims (20)
1.一种解析器,用于解析分组中的报头,该解析器包含:
多个水平字段选择器,该多个水平字段选择器中的每一水平字段选择器用于选择第一比特位组;
多个比较器,分别耦接于该多个水平字段选择器,其中该多个比较器中的每一比较器用于将对应的水平字段选择器所选出的第一比特位组与指定值作比较,以产生比较结果;以及
内容可寻址存储器式装置,用于接收产生自该多个比较器的多个比较结果,以及使用该多个比较结果作为第一输入搜寻数据。
2.根据权利要求1所述的解析器,其特征在于,产生自该多个水平字段选择器的多个第一比特位组包含具有读取自至少一个通用寄存器的多个比特位的至少一个第一比特位组。
3.根据权利要求2所述的解析器,其特征在于,该至少一个通用寄存器储存有与该分组相关的接口信息。
4.根据权利要求1所述的解析器,其特征在于,另包含:
垂直字段选择器,用于选择第二比特位组;
其中该内容可寻址存储器式装置另用于接收来自该第二比特位组的第二输入搜寻数据。
5.根据权利要求4所述的解析器,其特征在于,该第一输入搜寻数据的多个比特位分别被输入至该内容可寻址存储器式装置的多个第一列;该第二输入搜寻数据的多个比特位分别被输入至该内容可寻址存储器式装置的多个第二列;以及该多个第一列不同于该多个第二列。
6.根据权利要求5所述的解析器,其特征在于,当该报头属于对内报头时,旗标会用第一逻辑值来设定,以及当该报头属于对外报头时,该旗标会用不同于该第一逻辑值的第二逻辑值来设定;该旗标被输入至该内容可寻址存储器式装置中的第三列;以及该第三列不同于该多个第一列以及该多个第二列。
7.根据权利要求4所述的解析器,其特征在于,该第二比特位组具有读取自至少一个通用寄存器的比特位。
8.根据权利要求7所述的解析器,其特征在于,该至少一个通用寄存器用于储存与该分组相关的接口信息。
9.根据权利要求1所述的解析器,其特征在于,该多个比较器中的每一比较器用于根据指定的掩模来将该第一比特位组与该指定值进行比较。
10.根据权利要求1所述的解析器,其特征在于,另包含:
提取字段选择器;
其中针对该第一输入搜寻数据匹配于该内容可寻址存储器式装置的至少一个内容可寻址存储器入口而产生的该内容可寻址存储器式装置的输出,该提取字段选择器会自该报头中提取至少一个用户定义字段,以及根据指定的集合识别符以及指定的协议辨识符来将该至少一个用户定义字段储存于解析结果中的集合。
11.根据权利要求1所述的解析器,其特征在于,该第一输入搜寻数据的多个比特位被分别输入至该内容可寻址存储器式装置的多个第一列;当该报头属于对内报头时,旗标会用第一逻辑值来设定,以及当该报头属于对外报头时,该旗标会用不同于该第一逻辑值的第二逻辑值来设定;该旗标被输入至该内容可定址记忆装置的第二列;以及该第二列不同于该多个第一列。
12.根据权利要求1所述的解析器,其特征在于,另包含:
解析状态表,具有多个表入口,该多个表入口中的每一表入口至少储存有该水平字段选择器以及该多个比较器的多个控制设定;
其中该解析状态表具有至少一个表入口,该表入口在该报头属于对内报头以及对外报头之一时被选择,并且在该分组中的另一报头属于该对内报头以及该对外报头中的另外一个时也会被选择。
13.一种分组处理装置,包含:
解析器,用于解析分组的报头,以经由提取来自该报头的至少一个用户定义字段来产生解析结果,以及根据指定的集合识别符及指定的协议识别符来将该至少一个用户定义字段储存于该解析结果中的集合;以及
分组处理电路,用于至少部分地基于该解析结果的数据结构,来进行分组处理操作。
14.根据权利要求13所述的分组处理装置,其特征在于,该分组处理操作包含:
根据分配有该指定的集合识别符以及该指定的协议识别符的该集合中的该至少一个用户定义字段,来建立搜寻关键字;以及
根据该搜寻关键字来搜寻表,以决定至少一个动作命令。
15.根据权利要求13所述的分组处理装置,其特征在于,该分组处理操作包含:
根据分配有该指定的集合识别符以及该指定的协议识别符的该集合中的该至少一个用户定义字段,来建立散列关键字;以及
依据该散列关键字来选择性地进行动态负载平衡。
16.根据权利要求13所述的分组处理装置,其特征在于,该分组处理操作包含:
在决定出用于修改该报头的至少一个动作命令之后,改变分配给该解析结果中的该集合的该指定的协议识别符。
17.根据权利要求13所述的分组处理装置,其特征在于,该分组处理操作包含:
使用该指定的集合识别符以及用户定义字段偏移,来在具有该指定的集合辨识符的该集合中,修改具有该用户定义字段偏移的用户定义字段。
18.根据权利要求13所述的分组处理装置,其特征在于,该解析器另用于针对该解析结果中的多个集合产生集合属性,其中该集合属性针对该多个集合中的每一集合而记录有物理分组偏移;以及该分组处理操作包含:
使用该指定的集合识别符以及分组偏移来修改该分组的该报头,其中具有该指定的集合识别符的该集合的该物理分组偏移取自该集合属性,且至少一个动作命令根据该物理分组偏移加上该分组偏移,而被应用于该分组的该报头。
19.一种用于解析分组中的报头的方法,包含:
选择多个第一比特位组;
将该多个第一比特位组分别与多个指定值作比较,以产生多个比较结果;以及
将该多个比较结果作为输入搜寻数据来输入内容可寻址存储器式装置。
20.一种分组处理方法,包含:
使用解析器来解析分组的报头,以经由自该报头提取出至少一个用户定义字段来产生解析结果,以及根据指定的集合识别符以及指定的协议识别符来将该至少一个用户定义字段储存于该解析结果中的集合;以及
至少部分地基于该解析结果的数据结构,来进行分组处理操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361911992P | 2013-12-04 | 2013-12-04 | |
US61/911,992 | 2013-12-04 | ||
US14/520,350 US9973599B2 (en) | 2013-12-04 | 2014-10-22 | Parser for parsing header in packet and related packet processing apparatus |
US14/520,350 | 2014-10-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104702588A true CN104702588A (zh) | 2015-06-10 |
CN104702588B CN104702588B (zh) | 2018-11-23 |
Family
ID=53266323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410727846.5A Active CN104702588B (zh) | 2013-12-04 | 2014-12-04 | 解析器、分组处理装置以及相关方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9973599B2 (zh) |
CN (1) | CN104702588B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218301A (zh) * | 2018-09-05 | 2019-01-15 | 天津市滨海新区信息技术创新中心 | 多协议间软件定义的帧头映射的方法和装置 |
CN111107042A (zh) * | 2018-10-26 | 2020-05-05 | 广州汽车集团股份有限公司 | 报文解析方法、装置、计算机设备和存储介质 |
TWI757207B (zh) * | 2021-07-02 | 2022-03-01 | 瑞昱半導體股份有限公司 | 不完全比對的資料流處理方法與系統 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11308114B1 (en) * | 2013-12-23 | 2022-04-19 | Cazena, Inc. | Platform for provisioning a data analytics environment |
US9620213B2 (en) | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US9548945B2 (en) | 2013-12-27 | 2017-01-17 | Cavium, Inc. | Matrix of on-chip routers interconnecting a plurality of processing engines and a method of routing using thereof |
US9379963B2 (en) | 2013-12-30 | 2016-06-28 | Cavium, Inc. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US9880844B2 (en) * | 2013-12-30 | 2018-01-30 | Cavium, Inc. | Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine |
US10015048B2 (en) | 2014-12-27 | 2018-07-03 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
US10003676B2 (en) * | 2015-02-20 | 2018-06-19 | Cavium, Inc. | Method and apparatus for generating parallel lookup requests utilizing a super key |
US9825862B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
US9826071B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Configuring a switch for extracting packet header fields |
US10104205B2 (en) * | 2015-10-28 | 2018-10-16 | Mediatek Inc. | Flexible data packet information mapping and modification |
US9912774B2 (en) | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
US10911579B1 (en) | 2016-03-01 | 2021-02-02 | Amazon Technologies, Inc. | Generating programmatically defined fields of metadata for network packets |
US10362149B2 (en) | 2016-12-30 | 2019-07-23 | Intel Corporation | Intelligent packet aggregation |
US11223520B1 (en) * | 2017-01-31 | 2022-01-11 | Intel Corporation | Remote control plane directing data plane configurator |
US10686735B1 (en) | 2017-04-23 | 2020-06-16 | Barefoot Networks, Inc. | Packet reconstruction at deparser |
US11503141B1 (en) | 2017-07-23 | 2022-11-15 | Barefoot Networks, Inc. | Stateful processing unit with min/max capability |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
CN109474641B (zh) * | 2019-01-03 | 2020-05-12 | 清华大学 | 一种可破坏硬件木马的可重构交换机转发引擎解析器 |
US11258885B2 (en) * | 2019-12-10 | 2022-02-22 | Mellanox Technologies, Ltd. | Flexible parser in a networking device |
US11579890B1 (en) * | 2020-01-29 | 2023-02-14 | Synopsys, Inc. | Frame parser executing subsets of instructions in parallel for processing a frame header |
US11323372B2 (en) | 2020-04-21 | 2022-05-03 | Mellanox Technologies Ltd. | Flexible steering |
CN111600796B (zh) * | 2020-05-20 | 2021-10-01 | 中国电子科技集团公司第五十四研究所 | 一种基于可配置解析字段的流识别装置及方法 |
US11425230B2 (en) | 2021-01-28 | 2022-08-23 | Mellanox Technologies, Ltd. | Efficient parsing tuned to prevalent packet types |
US11711453B2 (en) | 2021-10-24 | 2023-07-25 | Mellanox Technologies, Ltd. | Template-based packet parsing |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347484A (en) * | 1992-06-19 | 1994-09-13 | Intel Corporation | Nonvolatile memory with blocked redundant columns and corresponding content addressable memory sets |
US5751984A (en) * | 1994-02-08 | 1998-05-12 | United Microelectronics Corporation | Method and apparatus for simultaneously executing instructions in a pipelined microprocessor |
US20070171838A1 (en) * | 2006-01-26 | 2007-07-26 | Broadcom Corporation | Content aware apparatus and method |
US20090323383A1 (en) * | 2007-04-23 | 2009-12-31 | Maxim Mondaeev | Comparing data representations to stored patterns |
US8000324B2 (en) * | 2004-11-30 | 2011-08-16 | Broadcom Corporation | Pipeline architecture of a network device |
CN102394872A (zh) * | 2005-05-25 | 2012-03-28 | 微软公司 | 数据通信协议 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101461958B1 (ko) * | 2007-06-29 | 2014-11-14 | 엘지전자 주식회사 | 디지털 방송 시스템 및 데이터 처리 방법 |
-
2014
- 2014-10-22 US US14/520,350 patent/US9973599B2/en active Active
- 2014-12-04 CN CN201410727846.5A patent/CN104702588B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347484A (en) * | 1992-06-19 | 1994-09-13 | Intel Corporation | Nonvolatile memory with blocked redundant columns and corresponding content addressable memory sets |
US5751984A (en) * | 1994-02-08 | 1998-05-12 | United Microelectronics Corporation | Method and apparatus for simultaneously executing instructions in a pipelined microprocessor |
US8000324B2 (en) * | 2004-11-30 | 2011-08-16 | Broadcom Corporation | Pipeline architecture of a network device |
CN102394872A (zh) * | 2005-05-25 | 2012-03-28 | 微软公司 | 数据通信协议 |
US20070171838A1 (en) * | 2006-01-26 | 2007-07-26 | Broadcom Corporation | Content aware apparatus and method |
US20090323383A1 (en) * | 2007-04-23 | 2009-12-31 | Maxim Mondaeev | Comparing data representations to stored patterns |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218301A (zh) * | 2018-09-05 | 2019-01-15 | 天津市滨海新区信息技术创新中心 | 多协议间软件定义的帧头映射的方法和装置 |
CN109218301B (zh) * | 2018-09-05 | 2021-01-15 | 天津市滨海新区信息技术创新中心 | 多协议间软件定义的帧头映射的方法和装置 |
CN111107042A (zh) * | 2018-10-26 | 2020-05-05 | 广州汽车集团股份有限公司 | 报文解析方法、装置、计算机设备和存储介质 |
CN111107042B (zh) * | 2018-10-26 | 2021-03-09 | 广州汽车集团股份有限公司 | 报文解析方法、装置、计算机设备和存储介质 |
TWI757207B (zh) * | 2021-07-02 | 2022-03-01 | 瑞昱半導體股份有限公司 | 不完全比對的資料流處理方法與系統 |
Also Published As
Publication number | Publication date |
---|---|
CN104702588B (zh) | 2018-11-23 |
US9973599B2 (en) | 2018-05-15 |
US20150156288A1 (en) | 2015-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104702588A (zh) | 解析器、分组处理装置以及相关方法 | |
US11811660B2 (en) | Flow classification apparatus, methods, and systems | |
US8750144B1 (en) | System and method for reducing required memory updates | |
CN110383777B (zh) | 端口扩展器设备的灵活处理器 | |
US9736073B2 (en) | Packet switch device and method of the same | |
CN104580027B (zh) | 一种OpenFlow报文转发方法及设备 | |
CN103339887B (zh) | 用于优化网络前缀列表搜索的方法 | |
CN101309216B (zh) | 一种ip包分类方法和设备 | |
CN113542125B (zh) | 一种基于集成流表转发报文的方法及装置 | |
US20170052731A1 (en) | Efficient lookup of tcam-like rules in ram | |
CN105191232A (zh) | 具有分布式流表的网络元件 | |
CN103354522A (zh) | 一种多级流表查找方法和装置 | |
CN107018165A (zh) | 控制物联网设备的方法及装置、服务器、移动设备 | |
CN111382114B (zh) | 一种用于片上网络的数据传输方法、装置及电子设备 | |
US7480300B2 (en) | Content addressable memory organized to share entries between different entities such as ports of a network unit | |
US9813357B2 (en) | Filtration of network traffic using virtually-extended ternary content-addressable memory (TCAM) | |
US8166004B2 (en) | Verifying data consistency among structured files | |
CN105681199B (zh) | 一种车载总线中报文数据的处理方法及装置 | |
CN102957617A (zh) | 实现多业务叠加的方法及装置 | |
CN107648854A (zh) | 一种游戏分类方法、装置及电子设备 | |
TWI665894B (zh) | 用於利用超級鍵生成並行查找請求的方法和裝置 | |
EP4135280A1 (en) | Message parsing method and apparatus | |
CN104021147B (zh) | 一种码流解析方法及装置 | |
CN106656850B (zh) | 一种自动识别网络流量并做限速的芯片实现方法 | |
CN111950000A (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 |