CN105282134A - 从分组提取数据的方法及其装置 - Google Patents

从分组提取数据的方法及其装置 Download PDF

Info

Publication number
CN105282134A
CN105282134A CN201510236939.2A CN201510236939A CN105282134A CN 105282134 A CN105282134 A CN 105282134A CN 201510236939 A CN201510236939 A CN 201510236939A CN 105282134 A CN105282134 A CN 105282134A
Authority
CN
China
Prior art keywords
layer
field
protocol
general
protocol layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510236939.2A
Other languages
English (en)
Other versions
CN105282134B (zh
Inventor
V·阿南德
T·丹尼尔
G·施密特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium LLC filed Critical Cavium LLC
Publication of CN105282134A publication Critical patent/CN105282134A/zh
Application granted granted Critical
Publication of CN105282134B publication Critical patent/CN105282134B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/03Protocol definition or specification 

Abstract

用于从分组提取数据的装置的实施例涉及允许提取来自分组的字段的可编程的层命令。分组被拆分成个别层。每层被给予标识该层的唯一的层类型编号。基于层类型,每层被扩展成通用格式。每层具有对于该层通用的层命令的集合。每个层命令的字段是fieldOffset和fieldLen。这些层命令允许以可编程方式提取分组中的信息。来自每个协议层的提取的字段被级联以形成标志层。所有标志层被级联以形成用于进一步处理分组的最终标志。

Description

从分组提取数据的方法及其装置
技术领域
本发明涉及网络分组。更具体地,本发明涉及一种从分组提取数据的方法及其装置。
背景技术
为了处理网络分组、比如以太网分组,有必要从分组提取某些字段。在提取的字段中包含的值帮助判决应当如何处置分组。例如交换利用在以太网头部以内的48位MAC目的地地址来判决分组应当被发送到哪个端口。相似地,路由利用在IPv4层内包含的32位目的地IP地址。当前硬件解决方案利用固定的提取机制以从分组提取这样的信息。在实施时间进行对将提取的相关信息在分组内落在何处的确定。然而,当前硬件解决方案不能处置演进中的联网协议。
发明内容
用于从分组提取数据的装置的实施例涉及允许提取来自分组的字段的可编程的层命令。分组被拆分成个别层。每层被给予标识该层的唯一的层类型编号。基于层类型,每层被扩展成通用格式。每层具有对于该层通用的层命令的集合。每个层命令的字段是fieldOffset和fieldLen;fieldOffse指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定将从该指定的偏移提取的字节的数目。这些层命令允许以可编程方式提取分组中的信息。来自每个协议层的提取的字段被级联以形成标志层。所有标志层被级联以形成最终标志,该最终标志用于分组的进一步处理。
在一个方面中,提供一种实施解析器引擎的方法。该方法包括:标识分组的协议层;基于协议层中的每个协议层的标识将该协议层扩展成通用格式;以及从经扩展的协议层选择内容,用以由此形成最终标志。
在一些实施例中,分组的协议层中的每个协议层被基于协议层的唯一的层类型编号来标识。
在一些实施例中,通用格式定义协议层能够具有的所有字段的超集。
在一些实施例中,扩展协议层中的每个协议层包括:维持用于经扩展的协议层的位矢量,其中位矢量包括用于扩展的协议层的每个字节的每字节的位;对于每个有效字段的每个字节将位标记为可用,其中每个有效字段是在分组的协议层中存在的字段;以及对于每个无效字段的每个字节将位标记为不可用,其中每个无效字段是在分组的协议层中不存在的字段。
在一些实施例中,该方法也包括使用压缩格式以表达经扩展的协议层。
在一些实施例中,该方法也包括将来自通用层命令的集合的至少一个通用层命令应用于经扩展的协议层以从经扩展的协议层提取字段。用层命令中的每个通用层命令的字段是fieldOffset和fieldLen;fieldOffse指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目。在一些实施例中,通用层命令中的每个通用层命令的字段是软件定义的。
在一些实施例中,该方法还包括:至少基于提取的字段形成标志层;以及至少基于该标志层形成最终标志。标志层是通过将提取的字段与来自经扩展的协议层的其它提取的字段放置在一起而无任何间隙来形成的。最终标志是通过将标志层与其它标志层放置在一起而无任何间隙来形成的。最终标志可以用于分组的进一步处理。
在另一方面,提供一种实施网络交换机的方法。该方法包括:在网络交换机的传入端口接收分组;根据用于对应协议的通用格式来通式化分组的每个协议头部;对于每个通式化的协议头部,从通式化的协议头部提取一个或者多个字段;对于每个通式化的协议头部,级联来自通式化的协议头部的一个或者多个提取的字段,以形成标志层;以及级联所有标志层以形成最终标志。
在一些实施例中,网络交换机包括:解析器引擎,被配置为通式化每个协议头部,从通式化的协议头部提取一个或者多个字段,级联来自通式化的协议头部的一个或者多个提取的字段以形成标志层,并且级联所有标志层以形成最终标志。
在一些实施例中,通式化每个协议头部包括:解析器引擎确定协议头部的层类型和层类型的变体;解析器引擎基于层类型和变体检测在协议头部中缺少的字段;以及基于检测,解析器引擎将协议头部扩展成通用格式。
在一些实施例中,提取一个或者多个字段包括将一个或者多个通用层命令应用于通式化的协议头部。通用层命令中的每个通用层命令的字段是fieldOffset和fieldLen;fieldOffse指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目。
在一些实施例中,在接收分组之前,该方法包括经由软件对一个或者多个通用层命令中的每个通用层命令的字段进行编程。
在一些实施例中,在接收分组之前,该方法包括:允许协议的通用格式的软件定义的映射;以及在网络交换机的存储器中存储软件定义的映射。
在又一方面中,提供一种网络交换机。网络交换机包括:输入端口和输出端口,用于接收和发送分组。网络交换机也包括:存储器,用于存储协议的通用格式的软件定义的映射的集合,以及用于存储用于提取字段的通用层命令的集合。网络交换机也包括:解析器引擎,用于对分组执行头部通式化过程,用以根据软件定义的映射中的特定于对应协议的一个软件定义的映射来通式化分组的每个协议头部,以及用于从通式化的协议头部选择内容用以由此形成最终标志。可以对协议的不同变体、对不同协议或者二者使用头部通式化过程。
在一些实施例中,在分组由解析器引擎处理之后,分组包括规范化的协议层。规范化的协议层中的每个规范化的协议层是根据用于对应协议的对应通用格式扩展了的协议层。
在一些实施例中,解析器引擎还将来自通用层命令的集合之一的至少一个通用层命令应用于通式化的协议层中的每个通式化的协议层,以从通式化的协议层提取字段。在一些实施例中,通用层命令的集合之一是特定于对应协议的。在一些实施例中,通用层命令中的每个通用层命令的字段是软件定义的。
在一些实施例中,提取的字段被与来自通式化的协议层的其它提取的字段级联以形成标志层。在一些实施例中,标志层与其它标志层级联以形成最终标志。在一些实施例中,最终标志被用于分组的进一步处理。
在又一方面中,提供一种解析器引擎。解析器包括电路,该电路被配置为标识分组的协议层;基于协议层中的每个协议层的标识将该协议层扩展成通用格式;以及从经扩展的协议层选择内容,用以由此形成最终标志。
在一些实施例中,分组的协议层中的每个协议层被基于协议层的唯一的层类型编号来标识。在一些实施例中,通用格式定义协议层能够具有的所有字段的超集。
在一些实施例中,电路也被配置为将来自通用层命令的集合的至少一个通用层命令应用于经扩展的协议层,用以从经扩展的协议层提取字段。在一些实施例中,通用层命令中的每个通用层命令的字段是fieldOffset和fieldLen;fieldOffse指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目。在一些实施例中,通用层命令中的每个通用层命令的字段是软件定义的。
在一些实施例中,电路也被配置为至少基于提取的字段形成标志层,以及至少基于标志层形成最终标志。在一些实施例中,标志层是通过将提取的字段与来自扩展的协议层的其它提取的字段放置在一起而无任何间隙来形成的。在一些实施例中,最终标志是通过将标志层与其它标志层放置在一起而无任何间隙来形成的。
附图说明
根据如附图中所示的本发明的示例实施例的以下更具体描述,前文将是清楚的,在附图中,相似标号贯穿不同视图指代相同部分。附图未必按比例、代之以着重于图示本发明的实施例。
图1图示根据本发明的一些实施例的将传入分组的层进行头部扩展成通用格式的图。
图2A-2B图示根据本发明的一些实施例的协议头部的示例通式化。
图3A-3C图示根据本发明的一些实施例的协议头部的另一示例通式化。
图4A-4C图示根据本发明的一些实施例的协议头部的另一示例通式化。
图5图示根据本发明的一些实施例的从经扩展的层提取数据的框图。
图6图示根据本发明的一些实施例的来自所有层的提取的信息一起级联以形成单个总线的框图。
图7A-7B图示根据本发明的一些实施例的解析器引擎的方法。
图8图示根据本发明的一些实施例的网络交换机的方法。
具体实施方式
在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现本发明。因此,本发明不旨在于局限于所示实施例、而是将被赋予与这里描述的原理和特征一致的最宽的范围。
用于从分组提取数据的装置的实施例涉及允许提取来自分组的字段的可编程的层命令。分组被拆分成个别层。每层被给予标识该层的唯一的层类型编号。基于层类型,每层被扩展成通用格式。每层具有对于该层通用的层命令的集合。每个层命令的字段是指定将被提取的字段在该层内开始的偏移的fieldOffset和指定将从该指定的偏移提取的字节的数目的fieldLen。这些层命令允许以可编程的方式提取分组中的信息。来自每个协议层的提取的字段被级联,以形成标志层。所有标志层被级联,以形成用于分组的进一步处理的最终标志。
网络设备,比如网络交换机,能够切换/路由网络流量。网络交换机包括用于接收和发送分组的至少一个输入/传入端口和至少一个输出/外传端口。在一些实施例中,网络交换机也包括解析器和重写器。解析器可以包括用于标识网络分组的内容的一个或者多个解析器引擎,并且重写器可以包括用于在分组从网络交换机被发送出之前修改它们的一个或者多个重写引擎。(多个)解析器引擎和(多个)重写引擎是灵活的并且在可编程的基础上操作。
网络交换机也包括用于存储由网络交换机使用的数据的存储器。例如存储器存储通用层命令的集合。简言之,通用层命令通常被用来从协议头部提取字段。对于另一示例,存储器也存储协议的通用格式的软件定义的映射。简言之,根据软件定义的映射中特定于对应协议的一个软件定义的映射来表示每个协议头部。如将变得清楚的,这些映射可以在协议的不同变体上以及在包括新协议的不同协议上被使用。对于又一示例,存储器也存储计数器和统计量。
在以太网中,分组包括多个协议层。每个协议层携带不同信息。公知的层的一些示例是:
·以太网
·PBB以太网
·ARP
·IPV4
·IPV6
·MPLS
·FCOE
·TCP
·UDP
·ICMP
·IGMP
·GRE
·ICMPv6
·VxLAN
·TRILL
·CNM
在理论上,协议层可以按照任何顺序出现。然而,这些层的仅一些公知的组合出现。这些层的有效组合的一些示例是:
·以太网
·以太网、ARP
·以太网、CNM
·以太网、FCoE
·以太网、IPV4
·以太网、IPV4、ICMP
·以太网、IPV4、IGMP
对于分组解析(和重写)操作,分组被分成层。这一拆分基于公知的层、比如以上列举的那些层来完成。层中的许多层具有在层内的字段的不同类型的组合。为了有效地处置不同的可能组合,层被扩展成通用格式。这些通用格式允许使用对层内的具体字段未知(agnostic)的命令、比如层命令。通用格式定义任何已知的层能够具有的所有字段的超集。
图1图示根据本发明的一些实施例的将传入分组的层进行头部扩展成通用格式的图100。在图1中,传入分组包括八个头部协议层。每个协议层通常包括用于它的相应协议的头部。如以上指示的那样,更多或者更少协议层是可能的。解析器引擎能够标识每个层及其变体。如图1中所示,解析器引擎基于每个协议层的标识和变体来标识该层。规范层是指已经被扩展成其通用格式的协议层。简言之,每个规范层包括位矢量,该位矢量具有针对无效字段标记为0的位和针对有效字段标记为1的位。
假设解析器引擎已经将层标识为以太网分组头部。图2A-4C图示根据本发明的一些实施例的解析器引擎如何对以太网协议工作的示例。图2A-4C中所示的示例示范了解析器引擎能够对协议、比如以太网协议的不同变体工作。每个示例举例说明了以太网协议的传入头部及其对应的通用格式。虽然未讨论其它协议,但是注意,解析器引擎对其它协议类似地工作。
图2A图示传入分组的示例性以太网分组头部的格式200。以太网分组头部200是22字节的并且包括五个字段:源地址(SA)字段、目的地地址(DA)字段、服务VLAN标签字段、客户VLAN标签字段和以太类型字段。SA字段和DA字段各自为6字节。服务VLAN标签字段和客户VLAN标签字段各自为4字节。以太类型字段为2字节。具有以太网分组头部100的分组是以太网分组的最大变体并且具有最大22字节的大小。
解析器引擎处理以太网分组头部200并且确定没有任何字段在以太网分组头部200中缺少。以太网分组头部200的通用格式因此与以太网分组头部200的通用格式相同,因为以太网分组头部200包含所有可能字段。图2B图示位矢量205,该位矢量205表示图2A的以太网分组头部200。位矢量205的每个位对应于以太网分组头部200的22字节之一。位矢量205包含全1,因为以太网分组头部200的所有字段有效,或者具有值,因为字段在以太网分组头部200中存在。因而,以太网分组头部200由通用格式{22'b111111_111111_1111_1111_11}表示。
图3A图示传入分组的另一示例以太网分组头部的格式300。以太网分组头部300为18字节并且仅包括四个字段:SA字段、DA字段、客户VLAN标签字段和以太类型(EtherType)字段。以太网分组头部300缺少服务VLAN标签字段。具有以太网分组头部300的分组是以太网分组的另一变化。
解析器引擎处理以太网分组头部300并且确定服务VLAN标签字段在以太网分组头部300中缺少,并且通过在以太网分组头部300的通用格式的适当位置包括缺少的服务VLAN标签字段来将以太网分组头部300扩展到它的最大22字节大小。图3B图示扩展的以太网分组头部的通用格式300’。扩展的以太网分组头部300’包括以太网协议的所有可能字段,包括缺少的服务VLAN标签字段。在扩展的以太网分组头部300’中的有效字段是SA字段、DA字段、客户VLAN标签字段和以太类型字段,因为它们在以太网分组头部300中存在。在扩展的以太网分组头部300’中的无效字段是服务VLAN标签字段,因为它在以太网分组头部300中不存在、而是被添加在扩展的以太网分组头部300’中的。
图3C图示表示图3B的扩展的以太网分组头部300’的位矢量305。位矢量305的每个位对应于扩展的以太网分组头部300’的22字节之一。位矢量305包含用于所有有效字段的1,这些有效字段是SA字段、DA字段、客户VLAN标签字段和以太类型字段。位矢量305包含用于所有无效字段的0,该无效字段仅为服务VLAN标签字段。因而,以太网分组头部300由通用格式{22'b111111_111111_0000_1111_11}表示。
图4A图示传入分组的另一示例以太网分组头部的格式400。以太网分组头部400为14字节并且仅包括三个字段:SA字段、DA字段和以太类型字段。以太网分组头部400缺少服务VLAN标签字段和客户VLAN标签字段。具有以太网分组头部400的分组是以太网分组的最小变体。
解析器引擎处理以太网头部400并且确定服务VLAN标签字段和客户VLAN标签字段在以太网分组头部400中缺少并且通过在以太网分组头部400的通用格式的适当位置处包括缺少的服务VLAN标签字段和缺少的客户VLAN标签字段来将以太网分组头部400扩展到它的最大22字节大小。图4B图示扩展的以太网分组头部的通用格式400’。扩展的以太网分组头部400’包括以太网协议的所有可能字段,包括缺少的服务VLAN标签字段和缺少的客户VLAN标签字段。扩展的以太网分组头部400’中的有效字段是SA字段、DA字段和以太类型字段,因为它们在以太网分组头部400中存在。扩展的以太网分组头部400’中的无效字段是服务VLAN标签字段和客户VLAN标签字段,因为它们在以太网分组头部400中不存在、而是被添加在扩展的以太网分组头部400’中的。
图4C图示表示图4B的扩展的以太网分组头部400’的位矢量405。位矢量405的每个位对应于扩展的以太网分组头部400’的22字节之一。位矢量405包含用于所有有效字段的1,这些有效字段是SA字段、DA字段和以太类型字段。位矢量405包含用于所有无效字段的0,该无效字段是服务VLAN标签字段和客户VLAN标签字段。因而,以太网分组头部400由通用格式{22'b111111_111111_0000_0000_11}代表。
如图2A-4C中所示,无论传入以太网头部的变化如何,一旦执行将以太网头部扩展成通用格式,字段偏移与最大大小的以太网头部(例如,图2A的以太网分组头部200)相同。头部扩展有利地允许相同软件命令集工作,而无论传入以太网头部如何,因为以太网头部被扩展成最大大小的以太网头部。这样,提取例如以太类型字段的层命令将总是指向相同偏移,无论接收到哪个以太网头部。
在一些实施例中,压缩格式被用来表达哪些字段在任何接收的头部中存在。紧凑格式由两个字段的组合组成、即:
·contBytes:这指示多少字节在层的开头有效;以及
·validBytes:这是指示层中的每个字节的有效性的位矢量。
例如如果contBytes为8而validBytes为4'h0111,则相应层包括有效的字节0-7、其后是空字节和三个有效字节。使用这一压缩格式有助于节省为了表示层而需要的位数。字节总数可以通过表1中所示的示例伪代码来计算。
表1
头部的通用格式在从分组头部提取字段方面产生硬件和软件灵活性。硬件能够从分组头部提取字段,而无论字段在分组头部内驻留于何处。硬件可以被软件编程用以支持新协议。软件将通用格式在硬件表中编程,用于各种头部协议。
一旦协议头部被扩展,可编程层命令允许提取来自分组的字段。每个层具有特定于对应协议的N个层命令的集合。在一些实施例中,每层具有八个可编程的层命令。表2列出了每个层命令的字段。这些字段是软件定义的。
表2
通用层命令允许以可编程的方式提取分组中的信息。例如与传统实现方式比较,对于以太网,为了提取MACDA(MAC目的地地址),层命令将指定偏移0和六个字节的长度。这将导致携带MACDA的前六个字节要从层中被提取。相似地,为了提取IPDA,层命令将指定偏移16和四个字节的长度。这将导致携带IPDA的在偏移16处开始的四个字节将从层中被提取。
图5图示根据本发明的一些实施例的从经扩展的层提取数据的框图500。经扩展的层在图5中被标注为“层N头部(规范头部)”。解析器引擎所确定的层类型被参考(referenced)在存储器中,该层类型指定用于从经扩展的层提取字段的N个层命令中的一个或者多个层命令。每个层命令包括两个字段:fieldOffset和fieldLen。在图5中,第一层命令提取字段0,第二层命令提取字段1,而第三层命令提取字段15。提取的信息被存储在图5中被表示为“标志层N”的总线中。提取的字段被依次地相互挨着放置而在提取的字段之间无任何间隙,以形成标志层。换而言之,被提取的字段被级联以形成标志层。任何层的提取的信息的总长度是用于该特定层的所有fieldLen层命令之和。
图6图示根据本发明的一些实施例的来自所有层的提取的信息被级联在一起以形成单个总线的的框图600。在图6中,两个层命令(即,cmd0和cmd1)被用来从层0提取字段用以形成标志层0,三个层命令(即cmd0、cmd1和cmd2)被用来从层1提取字段以形成标志层1,以此类推。所有标志层被依次地相互挨着放置而在标志层之间无任何间隙,以形成最终标志。换而言之,标志层0到标志层7被级联以形成最终标志。最终标志通常被用于分组的进一步处理。
图7A图示根据本发明的一些实施例的解析器引擎的方法700。解析器引擎是网络交换机的部分并且标识网络分组的内容。通常,解析器引擎先通过协议层拆分分组。在步骤705,标识分组的协议层。分组的协议层中的每个协议层被基于协议层的唯一的层类型编号来标识。
在步骤710,基于协议层中的每个协议层的标识将该协议层扩展成通用格式。通用格式定义协议层能够具有的所有字段的超集。为经扩展的协议层维持位矢量。位矢量包括用于扩展的协议层的每个字节的每字节的位。对于每个有效字段的每个字节将位标记为可用,其中每个有效字段是在分组的协议层中存在的字段。对于每个无效字段的每个字节将位标记为不可用,其中每个无效字段是在分组的协议层中不存在的字段。在一些实施例中,压缩格式被用来表达经扩展的协议层。
在步骤715,来自经扩展的协议层的内容被选择,用以由此形成最终标志。
图7B图示根据本发明的一些实施例的解析器引擎的另一方法750。通常,解析器引擎在方法700之后执行方法750。在步骤755,将来自通用层命令的集合的至少一个通用层命令应用于经扩展的协议层以从经扩展的协议层提取字段。通用层命令中的每个通用层命令的字段是指定将提取的字段在该层内开始的偏移的fieldOffset和指定应当从该指定的偏移提取的字节的数目的fieldLen。通用层命令中的每个通用层命令的字段是软件定义的。
在步骤760,至少基于提取的字段形成标志层。标志层是通过将提取的字段与来自经扩展的协议层的其它提取的字段放置在一起而无任何间隙而形成的。
在步骤765,基于标志层形成最终标志。最终标志是通过将标志层与其它标志层放置在一起而无任何间隙而形成的。最终标志通常被用于分组的进一步处理。
图8图示根据本发明的一些实施例的网络交换机的方法800。在一些实施例中,网络交换机允许协议的通用格式的软件定义的映射,并且在网络交换机的存储器中存储软件定义的映射。在步骤805,在网络交换机的传入端口接收分组。
在步骤810,根据用于对应协议的通用格式来通式化分组的每个协议头部。解析器引擎确定协议头部的层类型和层类型的变体。解析器引擎基于层类型和变体检测在协议中缺少的字段。基于检测,解析器引擎将协议头部扩展成通用格式。
在步骤815,对于每个通式化的协议头部,提取来自通式化的协议头部的一个或者多个字段。为了提取一个或者多个字段,一个或者多个通用层命令被应用于通式化的协议头部。通用层命令中的每个通用层命令的字段是指定将被提取的字段在该层内开始的偏移的fieldOffset和指定应当从该指定的偏移提取的字节的数目的fieldLen。通用层命令中的每个通用层命令的字段通常在步骤805之前由软件编程。
在步骤820,对于每个通式化的协议头部,来自通式化的协议头部的一个或者多个提取的字段被级联以形成标志层。标志层是通过将一个或者多个提取的字段放置在一起而无任何间隙而形成的。
在步骤825,所有标志层被级联以形成最终标志。最终标志是通过将标志层与其它标志层放置在一起而无任何间隙而形成的。最终标志通常被用于分组的进一步处理。
使用层命令来提取来自分组的数据。层中的每个层被扩展成通用格式。头部的通用格式在从分组头部提取字段方面产生硬件和软件灵活性,因为层命令对在分组的层内的具体字段不知的(agnostic)。不再需要在实施时间进行对将被提取的相关信息在分组内落在何处的确定。
本领域普通技术人员将认识到其它使用和优点也存在。尽管已经参照许多具体细节描述本发明,但是本领域普通技术人员将意识到可以以其它具体形式体现本发明而不脱离本发明的精神实质。因此,本领域普通技术人员将理解本发明不受前述示例细节的限制、而是实际上将由所附权利要求限定。

Claims (38)

1.一种实施解析器引擎的方法,所述方法包括:
标识分组的协议层;
基于所述协议层中的每个协议层的标识将所述协议层中的每个协议层扩展成通用格式;以及
从经扩展的协议层选择内容,用以由此形成最终标志。
2.根据权利要求1所述的方法,其中所述分组的所述协议层中的每个协议层被基于所述协议层的唯一层类型编号来标识。
3.根据权利要求1所述的方法,其中所述通用格式定义所述协议层能够具有的所有字段的超集。
4.根据权利要求1所述的方法,其中扩展所述协议层中的每个协议层包括:
维持用于经扩展的协议层的位矢量,其中所述位矢量包括用于所述经扩展的协议层的每个字节的每字节的位;
对于每个有效字段的每个字节将位标记为可用,其中每个有效字段是在所述分组的所述协议层中存在的字段;以及
对于每个无效字段的每个字节将位标记为不可用,其中每个无效字段是在所述分组的所述协议层中不存在的字段。
5.根据权利要求4所述的方法,还包括使用压缩格式以表达所述经扩展的协议层。
6.根据权利要求1所述的方法,还包括将来自通用层命令的集合的至少一个通用层命令应用于经扩展的协议层,用以从所述经扩展的协议层提取字段。
7.根据权利要求6所述的方法,其中所述通用层命令中的每个通用层命令的字段是fieldOffset和fieldLen;fieldOffset指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目。
8.根据权利要求6所述的方法,其中所述通用层命令中的每个通用层命令的字段是软件定义的。
9.根据权利要求6所述的方法,还包括:
至少基于所提取的字段形成标志层;以及
至少基于所述标志层形成所述最终标志。
10.根据权利要求9所述的方法,其中通过将所述提取的字段与来自所述经扩展的协议层的其它提取的字段放置在一起而无任何间隙,来形成所述标志层。
11.根据权利要求9所述的方法,其中通过将所述标志层与其它标志层放置在一起而无任何间隙,来形成所述最终标志。
12.一种实施网络交换机的方法,所述方法包括:
在所述网络交换机的传入端口接收分组;
根据用于对应协议的通用格式来通式化所述分组的每个协议头部;
对于每个通式化的协议头部,从所述通式化的协议头部提取一个或者多个字段;
对于每个通式化的协议头部,级联来自所述通式化的协议头部的所述一个或者多个提取的字段以形成标志层;以及
级联所有标志层以形成最终标志。
13.根据权利要求12所述的方法,其中所述网络交换机包括:解析器引擎,配置为通式化每个协议头部,从所述通式化的协议头部提取一个或者多个字段,级联来自所述通式化的协议头部的所述一个或者多个提取的字段以形成标志层,并且级联所有标志层以形成最终标志。
14.根据权利要求13所述的方法,其中通式化每个协议头部包括:
所述解析器引擎确定所述协议头部的层类型和所述层类型的变体;
所述解析器引擎基于所述层类型和所述变体从所述协议头部检测缺少的字段;以及
基于所述检测,所述解析器引擎将所述协议头部扩展成所述通用格式。
15.根据权利要求12所述的方法,其中提取一个或者多个字段包括将一个或者多个通用层命令应用于所述通式化的协议头部。
16.根据权利要求15所述的方法,其中所述一个或者多个通用层命令中的每个通用层命令的字段是fieldOffset和fieldLen;fieldOffset指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目。
17.根据权利要求15所述的方法,还包括在接收分组之前经由软件对所述一个或者多个通用层命令中的每个通用层命令的字段进行编程。
18.根据权利要求12所述的方法,在接收分组之前还包括:
允许协议的通用格式的软件定义的映射;以及
在所述网络交换机的存储器中存储所述软件定义的映射。
19.一种网络交换机,包括:
输入端口和输出端口,用于接收和发送分组;
存储器,用于存储协议的通用格式的软件定义的映射的集合以及用于存储用于提取字段的通用层命令的集合;以及
解析器引擎,用于对所述分组执行头部通式化过程以根据所述软件定义的映射中的特定于对应协议的一个软件定义的映射来通式化分组的每个协议头部,以及用于从所述通式化的协议头部选择内容用以由此形成最终标志。
20.根据权利要求19所述的网络交换机,其中对协议的不同变体使用所述头部通式化过程。
21.根据权利要求19所述的网络交换机,其中对不同协议使用所述头部通式化过程。
22.根据权利要求19所述的网络交换机,其中在所述分组由所述解析器引擎处理之后,所述分组包括规范化的协议层。
23.根据权利要求22所述的网络交换机,其中所述规范化的协议层中的每个规范化的协议层是根据用于所述对应协议的对应通用格式扩展的协议层。
24.根据权利要求19所述的网络交换机,其中所述解析器引擎还将来自所述通用层命令的集合之一的至少一个通用层命令应用于所述通式化的协议层中的每个通式化的协议层以从所述通式化的协议层提取字段。
25.根据权利要求24所述的网络交换机,其中所述通用层命令的集合之一是特定于所述对应协议的。
26.根据权利要求24所述的网络交换机,其中所述通用层命令中的每个通用层命令的字段是软件定义的。
27.根据权利要求24所述的网络交换机,其中所述提取的字段被与来自所述通式化的协议层的其它提取的字段级联以形成标志层。
28.根据权利要求27所述的网络交换机,其中所述标志层与其它标志层级联以形成最终标志。
29.根据权利要求28所述的网络交换机,其中所述最终标志被用于所述分组的进一步处理。
30.一种包括电路的解析器引擎,所述电路被配置为:
标识分组的协议层;
基于所述协议层中的每个协议层的所述标识,将所述协议层中的每个协议层扩展成通用格式;以及
从经扩展的协议层选择内容,用以由此形成最终标志。
31.根据权利要求30所述的解析器引擎,其中所述分组的所述协议层中的每个协议层被基于所述协议层的唯一层类型编号来标识。
32.根据权利要求30所述的解析器引擎,其中所述通用格式定义所述协议层能够具有的所有字段的超集。
33.根据权利要求30所述的解析器引擎,其中所述电路也被配置为将来自通用层命令的集合的至少一个通用层命令应用于经扩展的协议层,用以从所述经扩展的协议层提取字段。
34.根据权利要求33所述的解析器引擎,其中所述通用层命令中的每个通用层命令的字段是fieldOffset和fieldLen;fieldOffset指定将被提取的字段在所述经扩展的层内开始的偏移,fieldLen指定应当从该指定的偏移提取的字节的数目。
35.根据权利要求33所述的解析器引擎,其中所述通用层命令中的每个通用层命令的字段是软件定义的。
36.根据权利要求33所述的解析器引擎,其中所述电路也被配置为至少基于所述提取的字段形成标志层,以及至少基于所述标志层形成所述最终标志。
37.根据权利要求36所述的解析器引擎,其中通过将所述提取的字段与来自所述经扩展的协议层的其它提取的字段放置在一起而无任何间隙,来形成所述标志层。
38.根据权利要求36所述的解析器引擎,其中通过将所述标志层与其它标志层放置在一起而无任何间隙,来形成所述最终标志。
CN201510236939.2A 2014-06-19 2015-05-11 从分组提取数据的方法、网络交换机及解析器 Active CN105282134B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/309,726 US9516145B2 (en) 2014-06-19 2014-06-19 Method of extracting data from packets and an apparatus thereof
US14/309,726 2014-06-19

Publications (2)

Publication Number Publication Date
CN105282134A true CN105282134A (zh) 2016-01-27
CN105282134B CN105282134B (zh) 2020-09-25

Family

ID=53541505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510236939.2A Active CN105282134B (zh) 2014-06-19 2015-05-11 从分组提取数据的方法、网络交换机及解析器

Country Status (7)

Country Link
US (1) US9516145B2 (zh)
EP (1) EP2958285A3 (zh)
JP (1) JP6590545B2 (zh)
KR (1) KR102337516B1 (zh)
CN (1) CN105282134B (zh)
HK (1) HK1220831A1 (zh)
TW (1) TW201607274A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911579B1 (en) * 2016-03-01 2021-02-02 Amazon Technologies, Inc. Generating programmatically defined fields of metadata for network packets
CN111092880B (zh) * 2019-12-13 2022-08-09 支付宝(杭州)信息技术有限公司 一种网络流量数据提取方法及装置
JP7220814B1 (ja) 2022-01-21 2023-02-10 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ取得装置及びデータ取得方法
CN116156027B (zh) * 2023-04-20 2023-07-18 中国人民解放军国防科技大学 一种支持rmt的动作执行引擎及其执行方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101543018A (zh) * 2007-01-12 2009-09-23 庆熙大学校产学协力团 网络提取层单元的分组格式、使用该格式的视频编解码算法和装置以及使用该格式进行IPv6标签交换的QoS控制算法和装置
US20110022732A1 (en) * 2006-12-22 2011-01-27 Marvell International Ltd. Method for flexible modifications to a packet
US20120281714A1 (en) * 2011-05-06 2012-11-08 Ralink Technology Corporation Packet processing accelerator and method thereof
US20130163427A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau System for flexible and extensible flow processing in software-defined networks

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805808A (en) 1991-12-27 1998-09-08 Digital Equipment Corporation Real time parser for data packets in a communications network
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6341129B1 (en) 1998-04-03 2002-01-22 Alteon Networks, Inc. TCP resegmentation
US7333484B2 (en) 1998-08-07 2008-02-19 Intel Corporation Services processor having a packet editing unit
FI106504B (fi) 1998-10-06 2001-02-15 Nokia Networks Oy Datan segmentointimenetelmä tietoliikennejärjestelmässä
US6789116B1 (en) 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
CN101312052B (zh) 1999-12-02 2011-04-06 松下电器产业株式会社 制造光记录媒体的方法以及记录方法、再生方法
JP3613102B2 (ja) 1999-12-14 2005-01-26 日本電気株式会社 フレーム構成方法、フレーム構成装置およびフレーム構成転送システム
DE60026229T2 (de) * 2000-01-27 2006-12-14 International Business Machines Corp. Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
JP4099930B2 (ja) 2000-06-02 2008-06-11 株式会社日立製作所 ルータ装置及びvpn識別情報の設定方法
GB0023169D0 (en) 2000-09-20 2000-11-01 Ibm Message parsing in message processing systems
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US6944168B2 (en) 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US7580408B2 (en) 2001-11-21 2009-08-25 Alcatel Lucent Configurable packet processor
US7236501B1 (en) 2002-03-22 2007-06-26 Juniper Networks, Inc. Systems and methods for handling packet fragmentation
US7187694B1 (en) 2002-03-29 2007-03-06 Pmc-Sierra, Inc. Generic packet parser
JP2003308206A (ja) 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US20050232303A1 (en) 2002-04-26 2005-10-20 Koen Deforche Efficient packet processing pipeline device and method
US7408957B2 (en) 2002-06-13 2008-08-05 International Business Machines Corporation Selective header field dispatch in a network processing system
US7415596B2 (en) 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US20050281281A1 (en) 2003-01-24 2005-12-22 Rajesh Nair Port input buffer architecture
US7706363B1 (en) 2003-06-11 2010-04-27 Radlan Computer Communications, Ltd Method and apparatus for managing packets in a packet switched network
JP4152412B2 (ja) * 2003-10-10 2008-09-17 富士通株式会社 統計情報採取方法及び装置
US7411957B2 (en) 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7822032B1 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7522516B1 (en) 2004-03-30 2009-04-21 Extreme Networks, Inc. Exception handling system for packet processing system
US7568047B1 (en) 2004-04-30 2009-07-28 Nortel Networks Limited Method and apparatus for adaptive service label management
JP4392294B2 (ja) 2004-06-15 2009-12-24 株式会社日立製作所 通信統計収集装置
JP4156568B2 (ja) 2004-06-21 2008-09-24 富士通株式会社 通信システムの制御方法、通信制御装置、プログラム
US7760719B2 (en) * 2004-06-30 2010-07-20 Conexant Systems, Inc. Combined pipelined classification and address search method and apparatus for switching environments
US7474619B2 (en) 2004-07-22 2009-01-06 International Business Machines Corporation Method and apparatus for providing fragmentation at a transport level along a transmission path
US7570661B2 (en) 2005-06-14 2009-08-04 Microsoft Corporation Script-based parser
US7603474B2 (en) 2005-10-05 2009-10-13 Microsoft Corporation Efficient endpoint matching using a header-to-bit conversion table
US9143585B2 (en) * 2006-07-07 2015-09-22 Wi-Lan Inc. Method and system for generic multiprotocol convergence over wireless air interface
JP5102844B2 (ja) 2006-12-19 2012-12-19 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・フローを解析する装置および方法
US7978700B2 (en) 2007-03-12 2011-07-12 Marvell Israel (Misl) Ltd. Apparatus for determining locations of fields in a data unit
US8825592B2 (en) 2008-03-12 2014-09-02 Web Access, Inc. Systems and methods for extracting data from a document in an electronic format
US7843919B2 (en) * 2008-03-20 2010-11-30 International Business Machines Corporation Ethernet virtualization using a network packet alteration
KR101456563B1 (ko) * 2008-05-14 2014-10-31 삼성전자주식회사 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템
US8234369B2 (en) 2008-12-23 2012-07-31 Verizon Patent And Licensing Inc. Web page response monitoring
US8902886B2 (en) * 2009-04-23 2014-12-02 International Business Machines Corporation Canonicalization of network protocol headers
US8111704B2 (en) 2009-06-26 2012-02-07 Intel Corporation Multiple compression techniques for packetized information
US9008082B2 (en) * 2009-12-07 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) Handling data packets received at a routing node
US8472438B2 (en) * 2010-04-23 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Efficient encapsulation of packets transmitted on a packet-pseudowire over a packet switched network
US20130039278A1 (en) * 2010-05-03 2013-02-14 Nokia Corporation Protocol overhead reduction
US8537815B2 (en) 2010-06-17 2013-09-17 Apple Inc. Accelerating data routing
US8705533B1 (en) 2010-12-10 2014-04-22 Juniper Networks, Inc. Fast packet encapsulation using templates
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US9282173B2 (en) 2012-02-17 2016-03-08 Viavi Solutions Inc. Reconfigurable packet header parsing
WO2014061488A1 (ja) * 2012-10-17 2014-04-24 ソニー株式会社 データ処理装置、データ処理方法、及び、プログラム
US9438517B2 (en) * 2012-10-30 2016-09-06 Viavi Solutions Inc. Method and system for identifying matching packets
US9219694B2 (en) 2013-03-15 2015-12-22 Wisconsin Alumni Research Foundation Content addressable memory with reduced power consumption
US9769701B2 (en) * 2013-06-14 2017-09-19 Texas Instruments Incorporated Header compression for wireless backhaul systems
US9444914B2 (en) * 2013-09-16 2016-09-13 Annapurna Labs Ltd. Configurable parser and a method for parsing information units
US9628382B2 (en) * 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110022732A1 (en) * 2006-12-22 2011-01-27 Marvell International Ltd. Method for flexible modifications to a packet
CN101543018A (zh) * 2007-01-12 2009-09-23 庆熙大学校产学协力团 网络提取层单元的分组格式、使用该格式的视频编解码算法和装置以及使用该格式进行IPv6标签交换的QoS控制算法和装置
US20120281714A1 (en) * 2011-05-06 2012-11-08 Ralink Technology Corporation Packet processing accelerator and method thereof
US20130163427A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau System for flexible and extensible flow processing in software-defined networks

Also Published As

Publication number Publication date
US20150373163A1 (en) 2015-12-24
KR102337516B1 (ko) 2021-12-09
KR20150145728A (ko) 2015-12-30
EP2958285A3 (en) 2016-01-27
TW201607274A (zh) 2016-02-16
JP2016005285A (ja) 2016-01-12
JP6590545B2 (ja) 2019-10-16
EP2958285A2 (en) 2015-12-23
CN105282134B (zh) 2020-09-25
US9516145B2 (en) 2016-12-06
HK1220831A1 (zh) 2017-05-12

Similar Documents

Publication Publication Date Title
CN109962850A (zh) 实现分段路由的方法和控制器及计算机可读存储介质
CN105282133A (zh) 从分组内容形成哈希输入的方法及其装置
US11258886B2 (en) Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
CN105282134A (zh) 从分组提取数据的方法及其装置
US20240022652A1 (en) A method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9473601B2 (en) Method of representing a generic format header using continuous bytes and an apparatus thereof
JP6678401B2 (ja) 変更のためにパケットを個々のレイヤに分割し、変更後のレイヤを情報処理で継合する方法およびその装置
US9497294B2 (en) Method of using a unique packet identifier to identify structure of a packet and an apparatus thereof
US10397113B2 (en) Method of identifying internal destinations of network packets and an apparatus thereof
US20150373155A1 (en) Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof
US9531848B2 (en) Method of using generic modification instructions to enable flexible modifications of packets and an apparatus thereof
CN105763296B (zh) 用于在处理资源之间调度网络帧的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1220831

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California, USA

Applicant before: Cavium, Inc.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20200427

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: California, USA

Applicant before: Cavium, Inc.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1220831

Country of ref document: HK