解析器、分组处理装置以及相关方法

文档序号:8383735阅读:347来源:国知局
解析器、分组处理装置以及相关方法【专利说明】【
技术领域
】[0001]本发明的实施例关于转发分组的技术内容,尤其关于一种用于解析分组中的报头(header)的解析器(例如软件定义解析器)以及与其相关的分组处理装置。【【
背景技术
】】[0002]网络交换器(networkswitch)是一种链接(link)不同电子装置的电脑网络装置。举例来说,网络交换器会接收来自链接于该网络交换器的第一电子装置传来的分组,并且会只对用于接收分组的第二电子装置传送修改后的分组或未经修改的分组。解析器(parser)是网络交换器中的重要元件,尤其是解析器会经由遍历(traverse)协议树(protocoltree)以及提取感兴趣的报头字段(field),来对分组报头进行提取,后续的分组处理电路会参考该解析结果,来对分组报头进行分类以及执行动作命令。为了达到更好的分组处理性能,解析器可使用固定的硬件电路来实施。然而,这样的解析器设计会缺乏弹性,因此有需要一种创新的解析器设计来加强弹性。【【
发明内容】】[0003]有鉴于此,本发明特提供以下技术方案:[0004]本发明实施例提供一种解析器,用于解析分组中的报头,解析器包含多个水平字段选择器,多个比较器以及内容可寻址存储器式装置,多个水平字段选择器中的每一水平字段选择器用于选择第一比特位组;多个比较器分别耦接于多个水平字段选择器,其中多个比较器中的每一比较器用于将对应的水平字段选择器所选出的第一比特位组与指定值作比较,以产生比较结果;内容可寻址存储器式装置用于接收产生自多个比较器的多个比较结果,以及使用多个比较结果作为第一输入搜寻数据。[0005]本发明实施例另提供一种一种分组处理装置,包含解析器以及分组处理电路,解析器用于解析分组的报头,以经由提取来自报头的至少一个用户定义字段来产生解析结果,以及根据指定的集合识别符及指定的协议识别符来将至少一个用户定义字段储存于解析结果中的集合;分组处理电路用于至少部分地基于解析结果的数据结构,来进行分组处理操作。[0006]本发明实施例另提供一种用于解析分组中的报头的方法,包含选择多个第一比特位组;将多个第一比特位组分别与多个指定值作比较,以产生多个比较结果;以及将多个比较结果作为输入搜寻数据来输入内容可寻址存储器式装置。[0007]本发明实施例另提供一种分组处理方法,包含使用解析器来解析分组的报头,以经由自报头提取出至少一个用户定义字段来产生解析结果,以及根据指定的集合识别符以及指定的协议识别符来将至少一个用户定义字段储存于解析结果中的集合;以及至少部分地基于解析结果的数据结构,来进行分组处理操作。[0008]利用本发明的解析器、分组处理装置、用于解析分组中的报头的方法以及分组处理方法可增进分组处理的弹性。【【附图说明】】[0009]图1是根据本发明实施例的弹性分组处理装置的示意图。[0010]图2是图1所示的软件定义解析器的范例的示意图。[0011]图3是图2所示的解析状态表的每一表入口的数据结构的示意图。[0012]图4是图2所示的比较引擎的范例的示意图。[0013]图5是图2所示的动作表的每一表出口的数据结构的示意图。[0014]图6是图2所不的移位引擎的范例的不意图。[0015]图7是图2所不的提取引擎的范例的不意图。【【具体实施方式】】[0016]在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。[0017]本发明提出了一种使用可编程解析状态表的软件定义(software-defined)解析器。此外,该软件定义解析器会在本发明的以集合为基础的(un1nbased)结构中产生解析结果,其中该解析结果中的每一集合包含提取(extract)自分组的报头的用户定义字段(user-definedfield)。因此,后续的分组处理电路(包含入口(ingress)分组处理电路以及出口(egress)分组处理电路)用于基于设置于本发明的以集合为基础的结构中的用户定义字段所组成的解析结果来进行操作。如此一来,可实现增进分组处理的弹性的目的。关于使用该软件定义解析器的弹性分组处理装置的细节将详述如后。[0018]图1是根据本发明一实施例的弹性分组处理装置100的示意图,举例来说,弹性分组处理装置100可为网络交换器。如图1所示,弹性分组处理装置100包含介质访问控制(mediaaccesscontrol,MAC)层接收接口(标示为“MACRX”)102、软件定义解析器(software-definedparser,SDP)104、多个分组处理电路(例如多个流引擎(flowengines))106_1?106_N、流量管理器(trafficmanager,TM)108、分组修改电路110以及MAC层传送接口(标示为“MACTX")112oMAC层接收接口102用于自入口接口(ingressport)(未图示)接收分组(即入口分组),且MAC层传送接口112用于透过出口接口(egressport)(未图示)来转发分组。[0019]由MAC层接收接口102所接收的分组(即入口分组)PKT会被软件定义解析器104处理以进行分组报头辨识。软件定义解析器104会基于解析分组PKT中不同协议的报头而产生解析结果PR,并且将具有提取到的分组报头信息的解析结果PR提供给后续的分组处理电路(例如流引擎106_1?106_N)。流引擎106_1?106_N中一个或多个流引擎可基于分组PKT的解析结果PR来建立至少一个搜寻关键字(searchkey),并且使用该至少一个搜寻关键字来搜寻流程表114以进行分组报头分类(classificat1n)。基于分组报头分类的结果,流引擎106_1?106_N中一个或多个流引擎可搜寻指令表(instruct1ntable)116来决定用于分组的动作命令。此外,流引擎106_1?106_N中一个或多个流引擎可基于分组PKT的解析结果PR来建立散列关键字(hashkey),并且参照该散列关键字来选择性地进行动态负载平衡(dynamicloadbalancing),以转发由分组PKT产生的出口分组PKT’。[0020]流量管理器108至少用于处理分组的排序(queuing)以及调度(scheduling)。此夕卜,流量管理器108可另用于处理组播(multicast)以及相关的分组复制(replicat1n)。多个出口队列(outputqueues)118分别对应于弹性分组处理装置100的多个出口接口。基于分组PKT所经由来转发的出口接口,流量管理器108会将分组PKT编入(enqueue)至对应的输出队列118中。在排定的时间点,流量管理器108会自输出队列118取出(dequeue)分组PKT给后续的分组处理电路(例如分组修改电路110)。此外,由流引擎106_1?106_N中一个或多个流引擎所决定的动作命令可用动作命令桶指针(act1ncommandbucketpointer)来表示,且该动作命令桶指针经由流量管理器108来被传送至分组修改电路110。分组修改电路110用于依据该动作命令桶指针来存取多个动作命令桶120之一,找出并且执行动作命令,修改该分组PKT的报头,以产生出口分组PKT’至MAC层传送接口112。[0021]值得注意的是,图1所示的弹性分组处理装置100的结构仅作为举例,并非用于限定本发明的范畴,任何使用本发明的解析器设计及/或解析结果的数据结构的分组处理装置皆落入本发明的范畴。有关于软件定义解析器104的细节以及在以集合为基础的结构中使用该解析结果的应用的细节将详述如后。[0022]图2是图1所示的软件定义解析器104的范例的示意图。软件定义解析器104包含集合移位器(un1nshifter)202、比较引擎204、移位引擎206、提取引擎208、校验和引擎(checksumengine)210,以及多个可编程表(例如解析状态表(parserstatetable)212、掩模表(masktable)214以及数值表(valuetable)216)。由于解析状态表212、掩模表214以及数值表216都是可编程的,故可据以实现强化软件定义解析器104的弹性的目的。在本实施例中,解析状态表212基于协议树(protocoltree)而被编程,例如解析状态表212中的每一表入口(tableentry)会记录当前第1页1 2 3 4 5 
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1