CN105207984B - 使用连续字节来表示通用格式报头的方法及其装置 - Google Patents

使用连续字节来表示通用格式报头的方法及其装置 Download PDF

Info

Publication number
CN105207984B
CN105207984B CN201510272436.0A CN201510272436A CN105207984B CN 105207984 B CN105207984 B CN 105207984B CN 201510272436 A CN201510272436 A CN 201510272436A CN 105207984 B CN105207984 B CN 105207984B
Authority
CN
China
Prior art keywords
protocol
header
field
protocol header
packet
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.)
Active
Application number
CN201510272436.0A
Other languages
English (en)
Other versions
CN105207984A (zh
Inventor
C·辛格
V·阿南德
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
Marvell Asia Pte Ltd
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 Marvell Asia Pte Ltd filed Critical Marvell Asia Pte Ltd
Publication of CN105207984A publication Critical patent/CN105207984A/zh
Application granted granted Critical
Publication of CN105207984B publication Critical patent/CN105207984B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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

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

使用连续字节来表示通用格式报头的方法及其装置
技术领域
本发明涉及分组报头修改。更具体地,本发明涉及一种使用连续字节来表示通用格式报头的方法及其装置。
背景技术
网络分组经由因特网使用的协议、比如传输控制协议/网际协议/以太网协议(TCP/IP/以太网)承载数据。典型交换机能够在向目的地或者向另一交换机发送出分组之前修改传入的分组的各种字段。出于各种原因而修改传入的分组,比如分组将被转发到何处、目的地支持的协议、分组的优先级、协议报头的传入格式等。由于网络协议正在演变,协议报头的一个或者多个字段可以是可任选的,这使交换机的硬件变复杂,因为在协议报头内的给定的字段可能不总是处于固定的偏移。
在分组的修改期间,现有技术的交换机线性地处理分组中的每个协议层。这样的处理会产生与网络有关的性能问题,包括时延,这可能使实现方式过度提供处理资源。
发明内容
用于修改分组报头的装置的实施例涉及重写引擎,重写引擎以该协议特有的通用格式表示分组的每个协议报头,以实现分组的可编程修改,从而产生在修改分组报头时的硬件和软件灵活性。软件在用于各种协议的硬件表中对通用格式进行编程。重写引擎能够从协议报头检测缺失字段并且能够将协议报头扩展成最大大小,使得协议报头包含该协议的所有可能字段。无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。扩展的协议报头由独立于协议报头的大小的数据结构表示。
在一个方面中,提供一种重写引擎的方法。该方法包括从传入的分组的协议报头检测缺失字段。基于检测,该方法也包括将协议报头扩展成用于对应协议的通用格式。通用格式包括对应协议可以具有的所有可能字段。该方法也包括针对扩展的协议报头维护数据结构。数据结构包括第一字段和第二字段,其中第一字段指示从扩展的协议报头的开始起的连续有效字节的数目,而第二字段是指示在扩展的协议报头中的连续有效字节之后的每个字节的有效性的位矢量。
在一些实施例中,维护数据结构包括:针对在连续有效字节之后的每个无效字段的每个字节,将位矢量的位标注为不可用,以及针对在连续有效字节之后的每个有效字段的每个字节,将位矢量的位标注为可用。
在另一方面中,提供一种表示扩展的协议报头的方法。该方法包括获得扩展的协议报头。扩展的协议报头是根据用于对应协议的通用格式而被一般化的传入的分组的协议报头。
在一些实施例中,重写引擎通过从协议报头检测缺失字段以及基于检测根据通用格式扩展协议报头来使协议报头一般化。
在一些实施例中,通用格式包括协议的所有可能字段,其中无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。
该方法也包括维护扩展的协议报头的表示。表示是包括第一字段和第二字段的数据结构。在一些实施例中,第一字段是连续_字节字段,而第二字段是位矢量字段。
该方法也包括:将第一字段设置成从扩展的协议报头的开始起的连续有效字节的数目,针对在连续有效字节之后的每个无效字段的每个字节将第二字段的位标注为不可用,其中每个无效字段是在传入的分组的协议报头中不存在的字段,以及针对在连续有效字节之后的每个有效字段的每个字节将第二字段的位标注为可用,其中每个有效字段是在传入的分组的协议报头中存在的字段。
在又一方面中,提供一种网络交换机的方法。该方法包括:在网络交换机的传入端口处接收分组,以及根据用于对应协议的通用格式来使分组的协议报头一般化。
在一些实施例中,网络交换机包括被配置为使协议报头一般化的重写引擎。
在一些实施例中,使协议报头一般化包括:重写引擎从分组的协议报头检测缺失字段;以及基于检测,重写引擎将协议报头扩展成通用格式。
该方法也包括在独立于协议报头的大小的数据结构中表示经一般化的协议报头。在一些实施例中,数据结构包括连续_字节字段和位矢量字段,其中连续_字节字段表示从协议报头的开始起的连续有效字节的数目,而位矢量字段是协议报头的每字节的位表示。
在一些实施例中,该方法还包括:通过向经一般化的协议报头应用至少一个命令来修改经一般化的协议报头,去除修改的协议报头的所有无效字节以形成新报头,以及经由网络交换机的传出端口发送出具有新报头的分组。在一些实施例中,修改协议报头包括基于传出端口的出口端口类型向命令表进行索引以确定至少一个命令。
在一些实施例中,该方法还包括从经一般化的协议报头提取至少一个字段。
在一些实施例中,该方法在接收传入的分组之前还包括:允许协议的通用格式的由软件定义的映射;以及在网络交换机的存储器中存储由软件定义的映射。
在又一方面中,提供一种网络交换机。网络交换机包括:输入端口和输出端口,用于接收和发送分组;存储器,用于存储协议的通用格式的由软件定义的映射的集合;以及重写引擎,对分组执行报头一般化过程以根据对应协议特有的由软件定义的映射之一来使分组中的每个分组的每个协议报头一般化。通常,在独立于协议报头的大小的数据结构中表示经一般化的协议报头。
可以在协议的不同变体上使用报头一般化过程。相似地,可以在不同协议上使用报头一般化过程。
在一些实施例中,在分组中的每个分组由重写引擎处理之后,分组包括规范化的协议层。规范化的协议层中的每个规范化的协议层是根据该协议的对应通用格式扩展的协议层。在一些实施例中,数据结构包括连续_字节字段和位矢量字段,其中连续_字节字段表示从协议报头的开始起的连续有效字节的数目,而位矢量字段是协议报头的每字节的位表示。
在一些实施例中,重写引擎是灵活的并且在可编程基础上操作。重写引擎基于输出端口的出口端口类型向命令表进行索引,命令表向重写引擎告知将向每个分组的每个报头应用的一个或者多个命令。存储器存储命令集合,其中在命令集合中包括该一个或者多个命令。
在一些实施例中,网络交换机也包括解析器引擎。解析器引擎标识分组的内容。解析器引擎是灵活的并且在可编程基础上操作。
附图说明
前文将从如附图中所示本发明的示例实施例的以下更具体描述中变清楚,在附图中,相似标号贯穿不同视图指代相同部分。附图未必按比例、代之以着重于图示本发明的实施例。
图1图示分组的示例协议层组合。
图2图示根据本发明的一些实施例的本地协议表的示例结构。
图3图示根据本发明的一些实施例的网络交换机的示例方法。
图4图示根据本发明的一些实施例的网络交换机的另一示例方法。
图5图示根据本发明的一些实施例的将传入的分组的层进行报头扩展成通用格式的图。
图6A-6B图示根据本发明的一些实施例的协议报头的示例一般化。
图7A-7C图示根据本发明的一些实施例的协议报头的另一示例一般化。
图8A-8C图示根据本发明的一些实施例的协议报头的又一示例一般化。
图9A-9F图示根据本发明的一些实施例的协议报头的示例修改。
图10A-10E图示根据本发明的一些实施例的协议报头的另一示例修改。
图11图示根据本发明的一些实施例的重写引擎的方法。
图12图示根据本发明的一些实施例的网络交换机的又一方法。
图13图示根据本发明的一些实施例的网络交换机的又一方法。
图14图示根据本发明的一些实施例的网络交换机的又一方法。
图15图示根据本发明的一些实施例的网络交换机的又一方法。
图16图示根据本发明的一些实施例的重写引擎的另一方法。
图17图示根据本发明的一些实施例的网络交换机的又一方法。
图18图示根据本发明的一些实施例的重写引擎的又一方法。
图19图示根据本发明的一些实施例的网络交换机的又一方法。
图20图示根据本发明的一些实施例的层结构的示例图。
图21图示根据本发明的一些实施例的重写引擎交换机的又一方法。
图22图示根据本发明的一些实施例的网络交换机的又一方法。
具体实施方式
在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到,可以在不使用这些具体细节的情况下实施本发明。因此,本发明并不旨在于限于所示实施例,而是将被赋予与这里描述的原理和特征一致的最广范围。
引言
网络设备、比如网络交换机能够切换/路由网络流量。网络交换机包括用于接收和发送分组的至少一个输入/传入端口和至少一个输出/传出端口。在一些实施例中,网络交换机也包括解析器和重写器。解析器可以包括用于标识网络分组的内容的一个或者多个解析器引擎,并且重写器可以包括用于在分组从网络交换机被发送出之前修改它们的一个或者多个重写引擎。解析器引擎和重写引擎是灵活的并且在可编程基础上操作。
网络交换机也包括用于存储网络交换机使用的数据的存储器。例如存储器存储通用命令集合。简言之,通用命令通常被用来修改协议报头。对于另一示例,存储器也存储协议的通用格式的由软件定义的映射。简言之,根据对应协议特有的由软件定义的映射中的一个映射表示每个协议报头。如将变得清楚的那样,这些映射可以被用在协议的不同变体上以及用在包括新协议的不同协议上。对于又一示例,存储器也存储协议表。简言之,协议表包括被编程到协议表中的每个协议层组合的每个协议层的层信息。对于又一示例,存储器也存储计数器和统计量。
在以太网中,分组包括多个协议层。每个协议层承载不同信息。公知层的一些示例是:
·以太网
·PBB以太网
·ARP
·IPV4
·IPV6
·MPLS
·FCOE
·TCP
·UDP
·ICMP
·IGMP
·GRE
·ICMPv6
·VxLAN
·TRILL
·CNM
在理论上,协议层可以按照任何顺序出现。然而,这些层的仅一些公知组合出现。这些层的有效组合的一些示例是:
·以太网
·以太网、ARP
·以太网、CNM
·以太网、FCoE
·以太网、IPV4
·以太网、IPV4、ICMP
·以太网、IPV4、IGMP
唯一分组标识符
在一些实施例中,网络交换机支持17个协议和八个协议层。因此有817个可能协议层组合。图1图示分组的示例协议层组合。例如分组可以包括三协议层组合比如以太网、IPv4和ICMP。对于另一示例,分组可以包括七协议层组合比如以太网、IPv4、UDP、VxLAN、以太网和ARP。
虽然有817个可能协议层组合,但是这些层中的仅一些公知组合出现。所有已知协议层组合被唯一地标识和翻译成称为分组标识符(PktID)的唯一编号。在网络交换机的存储器中存储的协议表被编程为包括每个已知协议层组合的每层的层信息。在实践中,本地协议表包括少于256个协议层组合。在一些实施例中,这一本地表包括212个已知协议层组合。本地表被编程为包括或多或少协议层组合。
图2图示根据本发明的一些实施例的本地协议表200的示例结构。在本地表200中的使用PktID索引的每个协议层组合包括用于该协议层组合的每个协议层的信息,该信息被示出为层0信息、层1信息和层N信息。通过对PktID进行索引,可以访问或者获取用于分组的所有N层的信息。
用于每个协议层的信息至少包括以下信息:层类型、层数据偏移和杂项信息。然而,更多信息可以被存储在本地表200中。简言之,层类型是指协议层的关联协议(例如IP/TCP/UDP/以太网),层数据偏移提供协议层中的层数据的开始位置,并且杂项信息包括比如校验和和长度数据之类的数据。
通常,解析器引擎能够标识在网络交换机处接收的传入的分组的PktID。重写引擎使用PktID作为至协议表的关键字,该协议表向重写引擎提供为了使用于修改的分组的每个协议层一般化而需要的所有信息。换而言之,重写引擎使用PktID从协议表访问或者获取用于分组中的协议层中的每个协议层的信息,而不是从解析器引擎接收解析结果。
层类型。层类型和对分组的一个或者多个字段的哈希的唯一组合向重写引擎提供用于每个协议层的“通用格式”。在一些实施例中,这一唯一组合指定在存储器中存储的协议的通用格式的由软件定义的映射中的一个映射。通用格式由重写引擎用来扩展协议层并且使用软件命令来修改协议层。这一信息也向重写引擎告知每个协议层在分组内何处开始。
层数据偏移。重写引擎使用数据修改传入报头层。这一数据可以在分组中任何处被扩展。由于层大小可以变化,所以向重写引擎在修改期间需要使用的数据的偏移可以变化,这限制对重写引擎可以从何处拾取什么数据的硬件灵活性。
以分层方式布置来自传入的分组报头的提取的数据。布置提取的数据结构,使得层数据结构的开始偏移每PktID是唯一的。每层的层数据偏移用来标识用于修改的提取的数据的位置。由于通过分组的PktID标识在分组内的层的结构和来自层的提取的数据的位置,所以软件和硬件使用相同唯一标识符来管理提取的数据,这简化重写引擎中的命令。
杂项信息。比如校验和和长度数据之类的信息向重写引擎告知对于关联协议层的特殊处置要求,比如校验和重新计算以及报头长度更新。
分组一般化方案允许软件定义通用命令的小集合,该集合完全地基于给定的协议层并且独立于在这一协议层之前或者之后的层。分组一般化方案也提供硬件灵活性以使自身针对协议改变和添加而不会过时。
图3图示根据本发明的一些实施例的网络交换机的示例方法300。网络交换机通常包括解析器引擎和重写引擎。
在步骤305,解析器引擎检查传入的分组以标识分组的PktID。在一些实施例中,解析器引擎向重写引擎传递PktID,而不是向重写引擎传递分组的解析的数据。
在步骤310,重写引擎参考协议表,该协议表定义网络交换机接收的分组的不同分组结构。重写引擎使用PktID作为至协议表的关键字,以提取修改所必需的用于分组的每个协议层的信息。
在步骤315,重写引擎基于在协议表中存储的数据修改分组。通常,重写引擎在修改分组之前扩展分组的每个协议层。协议层扩展和修改在别处讨论。
图4图示根据本发明的一些实施例的网络交换机的另一示例方法400。网络交换机通常包括存储器和至少一个传入端口。
在步骤405,在存储器中存储协议表。协议表定义分组的不同分组结构。分组结构中的每个分组结构由PktID进行索引。分组结构中的每个分组结构表示协议层组合并且包括协议层组合的每个协议层的层信息。协议表可以被更新以添加表示新协议的新分组结构。协议表也可以被更新以响应于协议的改变来修改分组结构。
在步骤410,在传入端口处接收分组。
在步骤415,标识分组的PktID。在一些实施例中,解析器引擎标识分组的PktID。
在步骤420,访问用于分组的每个协议层的信息。通常,信息位于协议表中。在一些实施例中,信息被用来根据用于对应协议的通用格式使分组的协议报头一般化。通用格式在存储器中由软件定义。
如别处说明的那样,经一般化的协议报头可以通过将至少一个命令应用于经一般化的协议报头来修改。在一些实施例中,通过使用信息确定用来修改经一般化的协议报头的数据的位置,由此修改经一般化的协议报头。网络交换机的重写引擎通常使协议报头一般化并且修改经一般化的协议报头。
通用格式
如以上简要地说明的那样,重写引擎以对应协议特有的通用格式表示分组的每个协议报头,以实现分组的可编程修改,从而产生在修改分组报头时的硬件和软件灵活性。
图5图示根据本发明的一些实施例的将传入的分组的层进行报头扩展成通用格式的图500。在图5中,传入的分组包括八个协议层。每个协议层具有用于相应协议的报头。更多或者更少协议层如以上指示的那样是可能的。重写引擎能够如图5中所示从协议报头中的任何协议报头检测缺失字段并且将每个协议报头扩展成它的通用格式。规范层是指已经扩展成它的通用格式的协议层。简言之,每个规范层包括位矢量,该位矢量具有对于无效字段标注为0的位和对于有效字段标注为1的位。
图6A-8C图示根据本发明的一些实施例的重写引擎如何对以太网协议工作的示例。图6A-8C中所示示例证明,重写引擎能够对比如以太网协议之类的协议的不同变体工作。每个示例举例说明以太网协议的传入报头及其对应通用格式。虽然未讨论其它协议,但是注意重写引擎对其它协议相似地工作。
图6A图示传入的分组的示例以太网分组报头的格式600。以太网分组报头600是22字节并且包括五个字段:源地址(SA)字段、目的地地址(DA)字段、服务VLAN标记字段、客户VLAN标记字段和以太类型字段。SA字段和DA字段各自为6字节。服务VLAN标记字段和客户VLAN标记字段各自为4字节。以太类型字段为2字节。具有以太网分组报头600的分组是以太网分组的最大变体并且具有最大大小22字节。
重写引擎处理以太网分组报头600并且确定没有任何字段从以太网分组报头600缺失。以太网分组报头600的通用格式因此与以太网分组报头600的通用格式相同,因为以太网分组报头600包含所有可能字段。图6B图示表示图6A的以太网分组报头600的位矢量605。位矢量605的每个位对应于以太网分组报头600的22字节的一个字节。位矢量605包含所有1,因为以太网分组报头600的所有字段由于字段在以太网分组报头600中存在而都为有效或者具有值。因而,以太网分组报头600由通用格式{22'b111111_111111_1111_1111_11}表示。
图7A图示传入的分组的另一示例以太网分组报头的格式700。以太网分组报头700为18字节并且仅包括四个字段:SA字段、DA字段、客户VLAN标记字段和以太类型字段。以太网分组报头700缺失服务VLAN标记字段。具有以太网分组报头700的分组是以太网分组的另一变体。
重写引擎处理以太网分组报头700,并且确定服务VLAN标记字段从以太网分组报头700缺失,并且通过在以太网分组报头700的通用格式的适当位置处包括缺失的服务VLAN标记字段来将以太网分组报头700扩展成它的最大大小22字节。图7B图示扩展的以太网分组报头的通用格式700’。扩展的以太网分组报头700’包括以太网协议的包括缺失的服务VLAN标记字段的所有可能字段。在扩展的以太网分组报头700’中的有效字段是SA字段、DA字段、客户VLAN标记字段和以太类型字段,因为它们在以太网分组报头700中存在。在扩展的以太网分组报头700’中的无效字段是服务VLAN标记字段,因为它在以太网分组报头700中不存在、而是被添加在扩展的以太网分组报头700’中。
图7C图示表示图7B的扩展的以太网分组报头700’的位矢量705。位矢量705的每个位对应于扩展的以太网分组报头700’的22字节中的一个字节。位矢量705包含用于所有有效字段的1,这些字段是SA字段、DA字段、客户VLAN标记字段和以太类型字段。位矢量705包含用于所有无效字段的0,这些字段仅为服务VLAN标记字段。因而,以太网分组报头700由通用格式{22'b111111_111111_0000_1111_11}表示。
图8A图示传入的分组的另一示例以太网分组报头的格式800。以太网分组报头800为14字节并且仅包括三个字段:SA字段、DA字段和以太类型字段。以太网分组报头800缺失服务VLAN标记字段和客户VLAN标记字段。具有以太网分组报头800的分组是以太网分组的最小变体。
重写引擎处理以太网报头800,并且确定服务VLAN标记字段和客户VLAN标记字段从以太网分组报头800缺失,并且通过在以太网分组报头800的通用格式的适当位置处包括缺失的服务VLAN标记字段和缺失的客户VLAN标记字段来将以太网分组报头800扩展成它的最大大小22字节。图8B图示扩展的以太网分组报头的通用格式800’。扩展的以太网分组报头800’包括以太网协议的包括缺失的服务VLAN标记字段和缺失的客户VLAN标记字段的所有可能字段。在扩展的以太网分组报头800’中的有效字段是SA字段、DA字段和以太类型字段,因为它们在以太网分组报头800中存在。在扩展的以太网分组报头800’中的无效字段是服务VLAN标记字段和客户VLAN标记字段,因为它们在以太网分组报头800中不存在、而是被添加在扩展的以太网分组报头800’中。
图8C图示表示图8B的扩展的以太网分组报头800’的位矢量805。位矢量805的每个位对应于扩展的以太网分组报头800’的22字节中的一个字节。位矢量805包含用于所有有效字段的1,这些字段是SA字段、DA字段和以太类型字段。位矢量805包含用于所有无效字段的0,这些字段是服务VLAN标记字段和客户VLAN标记字段。因而,以太网分组报头800由通用格式{22'b111111_111111_0000_0000_11}表示。
如图6A-8C中所示,无论传入以太网报头的变化如何,一旦执行将以太网报头扩展成通用格式,字段偏移与最大大小的以太网报头(例如图6A的以太网分组报头600)相同。报头扩展有利地无论传入以太网报头如何都允许相同软件命令集合工作,因为以太网报头被扩展成最大大小的以太网报头。这样,例如修改以太类型字段的命令将无论接收到哪个以太网报头都总是指向相同偏移。
报头的通用格式产生在修改分组报头方面的硬件和软件灵活性。硬件能够修改分组报头,而不管字段在分组报头内驻留于何处。硬件可以通过软件被编程以支持新协议。软件在用于各种报头协议的硬件表中对通用格式进行编程。
假设1(传入的分组是单标记的以太网分组,传出的分组是无标记的以太网分组):假设网络交换机的输入以太网端口正在接收具有客户VLAN标记的分组,并且分组需要无标记地被转发到输出以太网端口。图9A图示在这一传入以太网端口处接收的分组的示例以太网分组报头的格式900。对于在这一传入以太网端口处接收的分组,软件将以太网报头的通用格式编程为{22'b111111_111111_0000_1111_11}。重写引擎接收报头协议层并且向存储器进行索引,该存储器向硬件告知用于这一报头协议的通用格式是{22'b111111_111111_0000_1111_11}。在这一情况下,硬件预期前12个连续字节(各自标注为1)和将被移位四个字节的接下来六个字节(各自标注为1)。与位矢量中标注为0的四个位对应的四个字节无效。
基于通用格式{22'b111111_111111_0000_1111_11},重写引擎将传入报头协议层扩展成图9B中所示的扩展的报头905并且维护针对经扩展的报头层905的每个字节的每字节的位。在图9C中示出用于经扩展的报头905的对应位矢量910。位矢量910向硬件告知哪些字节有效而哪些无效。
基于转发判决,在这一假设1中,需要无标记地转发分组。硬件基于传出以太网端口的出口端口类型向命令表进行索引,该命令表告知硬件删除客户VLAN标记。客户VLAN标记总是在固定的偏移、即16处开始。由于命令被应用于通用格式,所以用于删除客户VLAN标记的命令是“从位置16开始删除(客户VLAN标记的)4个字节”。硬件简单地标注这四个字节为无效并且删除它们。图9D图示在通用格式中的无标记的以太网报头915。图9E图示用于无标记的以太网报头915的位矢量920。在去除所有无效字节之后,硬件形成图9F中所示的新报头925。经由传出以太网端口发送出具有新报头925的分组。
假设2(传入的分组是双标记的以太网分组,传出的分组是无标记的以太网分组):假设网络交换机的输入以太网端口接收具有服务VLAN标记和客户VLAN标记的分组,并且分组需要无标记地被转发到输出以太网端口。图10A图示在这一传入以太网端口处接收的分组的示例以太网分组报头的格式1000。对于在这一传入以太网端口处接收的分组,软件将以太网报头的通用格式编程为{22'b111111_111111_1111_1111_11}。重写引擎接收报头协议层并且向存储器进行索引,该存储器向硬件告知用于这一报头协议的通用格式是{22'b111111_111111_1111_1111_11}。在这一情况下,硬件预期所有22个连续字节(各自标注为1)
基于通用格式{22'b111111_111111_1111_1111_11},重写引擎无需扩展传入报头协议层,因为报头协议已经处于它的最大大小。在图10B中示出用于报头1000的对应位矢量1005。位矢量1005向硬件告知哪些字节有效而哪些无效。
基于转发判决,在这一假设2中,需要无标记地转发分组。硬件基于传出以太网端口的出口端口类型向命令表进行索引,该命令表告知硬件删除客户VLAN标记和服务VLAN标记。客户VLAN标记总是在固定的偏移、即16处开始。相似地,服务VLAN标记总是在固定的偏移、即12处开始。由于命令被应用于通用格式,所以用于删除客户VLAN标记的命令是“从位置16开始删除(客户VLAN标记的)4个字节”,而用于删除服务VLAN标记的命令是“从位置12开始删除(服务VLAN标记的)4个字节”。硬件简单地标注这八个字节为无效并且删除它们。图10C图示通用格式中的无标记的以太网报头1010。图10D图示用于无标记的以太网报头1010的位矢量1015。在去除所有无效字节之后,硬件形成图10E中所示的新报头1020。经由传出以太网端口发送出具有新报头1020的分组。
假设3(传入的分组是无标记、单标记或者双标记的以太网分组,传出的分组是双标记的以太网分组):假设网络交换机的输入以太网端口正在接收无标记、具有服务VLAN标记、客户VLAN标记或者两个标记的分组,并且分组需要被作为双标记、但是具有新标记而转发到输出以太网端口。如果传入的分组是双标记的,则软件将以太网报头的通用格式编程为{22'b111111_111111_1111_1111_11}。如果传入的分组是无标记的,则软件将以太网报头的通用格式编程为{22'b111111_111111_0000_0000_11}。如果传入的分组是单标记的,则软件将以太网报头的通用格式编程为{22'b111111_111111_0000_1111_11}。
基于转发判决,在这一假设3中,需要双标记地转发分组。硬件基于传出以太网端口的出口端口类型向命令表进行索引,该命令表告知硬件替换客户VLAN标记和服务VLAN标记。客户VLAN标记总是在固定的偏移、即16处开始。相似地,服务VLAN标记总是在固定的偏移、即12处开始。对于这些情况中的每个情况,命令相同。由于命令被应用于通用格式,所以命令是“从层数据.位置X向开始位置=12复制4个字节(用于服务VLAN标记)”和“从层数据.位置Y向开始位置=16复制4个字节(用于客户VLAN标记)”,其中从层数据.位置X和层数据.位置Y指定的位置复制内容。
如在假设1-3中证明的那样,重写引擎在硬件上被简化并且保持存储器中的软件命令集合为小。因而,为了保持命令而需要的硬件存储器浅。
图11图示根据本发明的一些实施例的重写引擎的方法1100。在步骤1105,重写引擎从传入的分组的协议报头检测缺失字段。
在步骤1110,基于检测,重写引擎将协议报头扩展成用于对应协议的通用格式。通用格式包括协议的所有字段。字段中的每个字段无论协议报头对应于协议的哪个变体都具有相同偏移。重写引擎针对经扩展的协议报头维护位矢量,其中位矢量包括针对经扩展的协议报头的每个字节的每字节的位。重写引擎对于每个有效字段的每个字节标注位为可用,其中每个有效字段是在传入的分组的协议报头中存在的字段。重写引擎对于每个无效字段的每个字节标注位为无效,其中每个无效字段是在传入的分组的协议报头中不存在的字段。
在一些实施例中,对于传入的分组的每个协议层执行步骤1105和1110。
图12图示根据本发明的一些实施例的网络交换机的又一方法1200。在一些实施例中,网络交换机允许协议的通用格式的由软件定义的映射并且在网络交换机的存储器中存储由软件定义的映射。网络交换机包括用于使协议报头一般化的重写引擎。在步骤1205,在网络交换机的传入端口处接收分组。
在步骤1210,根据用于对应协议的通用格式来使分组的协议报头一般化。如以上说明的那样,硬件根据在网络交换机的存储器中存储的映射中的一个映射来扩展协议报头。用于经扩展的协议报头的位矢量向硬件告知哪些字节有效而哪些字节无效。
在步骤1215,通过将至少一个命令应用于经一般化的协议报头来修改经一般化的协议报头。如以上说明的那样,硬件基于传出以太网端口的出口端口类型向命令表进行索引,以确定用于向协议报头应用的至少一个命令。
在步骤1220,去除经修改的协议报头的所有无效字节以形成新报头。
在步骤1225,经由网络交换机的传出端口发送出具有新报头的分组。
图13图示根据本发明的一些实施例的网络交换机的又一方法1300。在步骤1305,网络交换机被配置为包括协议的通用格式的由软件定义的映射。在网络交换机的存储器中存储由软件定义的映射。
在步骤1310,在网络交换机的传入端口处接收分组。
在步骤1315,基于由软件定义的映射中的一个映射使分组的协议报头一般化。
在步骤1320,针对经一般化的协议报头维护位矢量。位矢量包括针对经一般化的协议报头的每个字节的每字节的位。
经一般化的协议报头的优化的表示
每个传入层可以包含任何数目的字节,比如64字节或者128字节或者甚至更大数目的字节。在以上示例中,扩展的以太网报头具有22字节。在位矢量中表示协议层的所有字节不是高效的,因为为最坏情况的协议的分配是存储器密集的。在现代片上系统(SOC)设计中,嵌入式存储器的面积和功率预算通常主导整个芯片预算。作为结果,高效地利用有限的存储器资源是关键的。
如果多数协议具有少数“空洞”或者无效字节,则用连续字节的计数器和表示非连续字节的更小位矢量表示通用格式报头是成本更低的。在一些实施例中,这一更小位矢量的大小通常是固定的,但是大小是可编程的。可以基于协议的统计量调整大小,这些统计量确定为了表示协议而必须存储的非连续字节的最大数目。
在一些实施例中,在使用包括两个字段的数据结构的优化方式中表示分组的每个通用格式报头:连续_字节字段和位矢量字段。连续_字节字段表示从协议层的开始起的连续有效字节的数目。位矢量字段是协议层的每字节的位表示。位矢量字段示出“空洞”或者无效字节。位矢量字段如果不能容纳所有协议则能够容纳多数协议。因此,优化的表示可以由{连续_字节,位矢量}表示。该数据结构独立于协议报头的大小。
例如图6B的位矢量605的紧凑表示是{22,00000000_0000_000},这表示从图6A的以太网分组报头600的开始起的22个连续字节。位矢量字段包含全0,因为没有无效字节。
对于另一示例,图7C的位矢量705的紧凑表示是{12,00001111_1100_000},这表示从图7B的扩展的以太网分组报头300’的开始起的12个连续字节、继而为四个无效字节、然后六个有效字节。
对于又一示例,图8C的位矢量805的紧凑表示是{12,00000000_1100_0000),这表示从图8B的扩展的以太网分组报头800’的开始起的12个连续字节、继而为八个无效字节、然后两个有效字节。
图14图示根据本发明的一些实施例的网络交换机的又一方法1400。在步骤1405,获得经扩展的协议报头。如以上讨论的那样,经扩展的协议报头是根据用于对应协议的通用格式而被一般化的传入的分组的协议报头。通常,重写引擎通过从协议报头检测缺失字段并且基于检测根据通用格式扩展协议报头来使协议报头一般化。通用格式包括协议的所有可能字段,其中无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。
在步骤1410,维护经扩展的协议报头的表示。该表示是包括连续_字节字段和位矢量字段的数据结构。
在步骤1415,将连续_字节字段设置成从经扩展的协议报头的开始起的连续有效字节的数目。
在步骤1420,针对在连续有效字节之后的每个无效字段的每个字节,将位矢量字段的位标注为不可用。每个无效字段是在传入的分组的协议报头中不存在的字段。
在步骤1425,针对在连续有效字节之后的每个有效字段的每个字节,将位矢量字段的位标注为可用。每个有效字段是在传入的分组的协议报头中存在的字段。
图15图示根据本发明的一些实施例的网络交换机的又一方法1500。在步骤1505,在网络交换机的传入端口处接收分组。
在步骤1510,根据用于对应协议的通用格式使分组的协议报头一般化。通常,重写引擎被配置为使协议报头一般化。
在步骤1515,在独立于协议报头的大小的数据结构中表示经一般化的协议报头。在一些实施例中,数据结构包括连续_字节字段和位矢量字段,其中连续_字节字段表示从协议报头的开始起的连续有效字节的数目,而位矢量字段是协议报头的每字节的位表示。
这一数据结构有助于使用于各种协议层的表示一般化并且去除对协议报头层的大小的依赖性。位矢量的紧凑表示有利地减少硬件成本。
用于报头修改的通用命令
修改使用向扩展的协议报头应用的通用命令的集合。所有命令因此通用,因为这些命令独立于传入报头(例如大小和协议)。
表1列举重写引擎用于协议报头修改的通用命令。通用命令的这一小集合被用于报头修改,无论传入的分组报头(例如大小、协议)如何,因为在修改之前分组报头被一般化。通常,通用命令表现为软件编程的微代码。
表1
Figure BDA0000724004840000201
Figure BDA0000724004840000211
DELETE命令通过使在当前经一般化的协议层内的从Start定位开始的Size个字节无效来删除这些字节。标注表示那些字节的位矢量的位为0。
COPY命令从Source的SourceOffset向当前经一般化的报头层的DestinationOffset复制Size个字节的数据。COPY命令根据数据的有效性在Source中是否有效来使得对应目的地字节有效或者无效。将表示无效字节的位矢量的位标注为0。将表示有效字节的位矢量的位标注为1。COPY命令也可以使用Bitmask用于位掩码操作。COPY命令也可以使用copyConstantBitMask和copyConstantData。如果copyConstantBitMask在位位置处包含“1”,则在对应定位处将来自copyConstantData中的对应定位的字节复制到当前经一般化的报头层中。在一些实施例中,在表中存储常数数据。在一些实施例中,常数数据是由软件定义的。
MOVE命令将当前经一般化的协议层内的Size个字节从StartOffset移动到DestinationOffset。MOVE命令根据数据的有效性在Source中是否有效来使对应目的地字节有效或者无效,并且使源字节无效。将表示无效字节的位矢量的位标注为0。将表示有效字节的位矢量的位标注为1。
通过使用至少一个计数器,针对执行的所有操作,对添加或者删除的字节的数目进行计数。至少一个计数器是硬件计数器。备选地,至少一个计数器是软件计数器。至少一个计数器出于统计目的和出于其它原因而保持跟踪计数。在一些实施例中,重写引擎对两个位矢量执行XOR操作——原有的位矢量和修改的位矢量——以向硬件告知多少位改变,这用于考虑删除或者添加的字节的数目。
图16图示根据本发明的一些实施例的重写引擎的另一方法1600。重写引擎是网络交换机的部分并且在分组从网络交换机被发送出之前修改它们。在步骤1605,根据用于分组的每个协议报头的通用格式使该协议报头一般化。通用格式包括协议的所有可能字段。这样,无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。每个经一般化的协议报头包括位矢量。位矢量包括针对经一般化的协议报头的每个字节的每字节的位。位矢量包括对于无效字段而被标注为0的位和对于有效字段而被标注为1的位。这里,无效字段是在接收的分组的协议报头中不存在的字段,而有效字段是在接收的分组的协议报头中存在的字段。
在步骤1610,使用来自在网络交换机的存储器中存储的通用命令集合的至少一个命令以修改至少一个经一般化的协议报头。对至少一个经一般化的协议报头的修改是基于网络交换机的传出端口的出口端口类型。对至少一个经一般化的协议报头的修改造成位矢量被更新。
由于不管传入的分组报头如何,通用命令集合都被用于报头修改,所以通用命令集合可以被用来修改协议的第一变体的分组报头和修改协议的第二变体的分组报头。相似地,通用命令集合可以被用来修改第一协议的分组报头和修改第二协议的分组报头。
图17图示根据本发明的一些实施例的网络交换机的又一方法1700。在步骤1705,在网络交换机的存储器中维护通用命令集合。
在步骤1710,在网络交换机的传入端口处接收分组。
在步骤1715,根据用于分组的每个协议报头的通用格式使该协议报头一般化。检测从分组的协议报头的缺失字段。基于检测,通过包括缺失字段来将协议报头扩展成通用格式。每个经一般化的协议报头包括位矢量,该位矢量具有对于无效字段被标注为0的位和对于有效字段被标注为1的位。这里,无效字段是在接收的分组的协议报头中不存在的字段,而有效字段是在接收的分组的协议报头中存在的字段。
在步骤1720,通过向经一般化的协议报头中的至少一个经一般化的协议报头应用来自通用命令集合的至少一个命令,来修改经一般化的协议报头,由此更新位矢量。
在步骤1725,基于更新的位矢量,形成新协议报头。
在步骤1730,经由网络交换机的传出端口发射具有新协议报头的分组。在一些实施例中,在发射具有新协议报头的分组之前,针对执行的所有操作,对添加或者删除的字节的数目进行计数。
使用位矢量来使经修改的协议报头塌缩
重写引擎不仅使用用于每个协议报头的位矢量来允许修改基于通用格式的协议报头的扩展,重写引擎也使用位矢量来允许将协议报头从通用格式塌缩成“规则”报头。通常,在位矢量中的每个位表示经一般化的协议报头的字节。在位矢量中被标注为0的位对应于无效字节,而在位矢量中被标注为1的位对应于有效字节。重写引擎使用位矢量来去除在已经对经一般化的协议报头操作所有命令之后的所有无效字节,以由此形成新协议报头。重写引擎因此使用位矢量来允许分组的协议报头的扩展和塌缩,由此通过使用通用命令集合而实现分组的灵活修改。
例如回顾假设1,图9E的位矢量920表示在已经向图9B的经一般化的协议报头905应用删除命令之后的图9D的修改的协议报头915。在这一假设1中,删除客户VLAN标记,由此使客户VLAN标记的四个字节无效。这样,将位矢量920中的与客户VLAN标记对应的位标注为0。在已经操作所有命令、即在假设1中的删除命令之后,重写引擎使用位矢量920来去除所有无效字节,由此使位矢量920塌缩。基于塌缩的位矢量形成新协议报头。图9F图示在去除所有无效字节之后的新协议报头925。经由传出以太网端口发送出具有新报头925的在假设1中的分组。
对于另一示例,回顾假设2,图10D的位矢量1015表示在已经向图10A的协议报头1000应用删除命令之后的图10C的修改的协议报头1010。在这一假设2中,删除服务VLAN标记和客户VLAN标记,由此使服务VLAN标记的四个字节和客户VLAN标记的四个字节无效。这样,将位矢量1015中的与服务VLAN标记和客户VLAN标记对应的位标注为0。在已经操作所有命令、即在假设2中的两个删除命令之后,重写引擎使用位矢量1015来去除所有无效字节,由此使位矢量1015塌缩。基于塌缩的位矢量形成新协议报头。图10E图示在去除所有无效字节之后的新协议报头1020。经由传出以太网端口发送出具有新报头1020的在假设2中的分组。
图18图示根据本发明的一些实施例的重写引擎的又一方法1800。重写引擎是网络交换机的部分并且在分组从网络交换机被发送出之前修改它们。在步骤1805,针对每个经一般化的协议报头维护位矢量。经一般化的协议报头是扩展成通用格式的分组的协议报头。通用格式包括协议的所有可能字段。无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。位矢量包括针对经一般化的协议报头的每个字节的每字节的位。
在步骤1810,基于对至少一个经一般化的协议报头的修改来更新位矢量。该修改使用来自在网络交换机的存储器中存储的通用命令集合的至少一个命令来修改至少一个经一般化的协议报头。
在步骤1815,使用经更新的位矢量来压缩至少一个经一般化的协议报头。在一些实施例中,在步骤1815之前,对位矢量和更新的位矢量执行XOR操作以确定多少位改变,这允许重写引擎考虑删除和添加的字节。
图19图示根据本发明的一些实施例的网络交换机的又一方法1900。在步骤1905,在网络交换机的传入端口处接收分组。
在步骤1910,根据用于分组的每个协议报头的通用格式使该协议报头一般化。检测从分组的协议报头的缺失字段。基于检测,通过包括缺失字段来将协议报头扩展成通用格式。
在步骤1915,针对每个经一般化的协议报头维护位矢量。位矢量包括对于无效字段而标注为0的位和对于有效字段而标注为1的位。
在步骤1920,修改经一般化的协议报头中的至少一个经一般化的协议报头,由此更新位矢量。该修改使用来自在网络交换机的存储器中存储的通用命令集合的至少一个命令以修改至少一个经一般化的协议报头。对至少一个经一般化的协议报头的修改是基于网络交换机的传出端口的出口端口类型。
在步骤1925,通过移位经更新的位矢量来去除在经更新的位矢量中的标注为0的每个位,由此使经更新的位矢量塌缩。
在步骤1930,基于塌缩的位矢量形成紧凑协议报头。经由网络交换机的传出端口发射至少具有紧凑协议报头的分组。在一些实施例中,在发射分组之前,对针对执行的所有操作而添加或者删除的字节数目进行计数。
指针结构
指针结构可以被用来提取在用于经一般化的传入的分组内的不同协议层并且在协议层的修改之后重建分组。指针结构包括N+1个层指针和分组的所有报头的总大小。通常,指针结构初始地用如下数据来更新,该数据由解析器引擎提供以供重写引擎用来将分组拆分成各个层并且随后智能地将它们拼接回到一起。在分组被拆分成各个层之后,重写引擎使协议报头一般化、修改经一般化的协议报头并且通过去除所有无效字段来压缩经一般化的协议报头。层指针在每个层被修改之后由重写引擎更新。这些更新的层指针被用来在从网络交换机发送出分组之前将不同协议层拼接回到一起。
图20图示根据本发明的一些实施例的层结构的示例图2000。假设传入的分组包括以下协议层:专有报头、以太网、IPv4、UDP、VxLAN和以太网。也假设网络交换机的解析器引擎能够解析上至八层而重写引擎仅能修改前N个、比如N=4个协议层(因为软件要求和/或硬件能力)。在一些实施例中,解析器引擎向重写引擎提供数据,诸如分组的每个协议报头的开始位置。
由于重写引擎能够修改分组的前四个协议层,所以重写引擎仅使用来自解析器引擎的相关数据、即关于如下前四个协议层的数据:专有报头、以太网、IPv4和UDP。使用这一数据,初始化用于分组的指针结构:设置为0的层指针0,这是在分组内的用于专有报头的起始位置(即层0),设置为16的层指针1,这是在分组内的用于以太网报头的起始位置(即层1),设置成36的层指针2,这是在分组内的用于IPv4报头的起始位置(即层2),设置成48的层指针3,这是在分组内的用于UDP报头的起始位置(即层3),以及设置成56的层指针4,这是用于重写引擎不修改的报头的剩余部分的起始位置。在一些实施例中,重写引擎计算报头的大小并且将报头大小(即所有报头的总大小)设置成223。
通过使用层指针,重写引擎如以上讨论的那样一般化前四个协议层(即专用报头、以太网、IPv4、UDP)以供修改。在修改之后,重写引擎通过去除所有无效字节来压缩修改的协议报头。通常,在修改协议报头之后更新层指针。
层指针形成尾指针。尾指针与报头大小一起与报头的正文关联,该正文是报头的未修改的并且向前输送的用于随后拼接的部分。在执行所有修改并且压缩修改的协议报头之后,修改的层指针用来将修改的报头与报头的正文拼接回到一起。
重写引擎可以限于重写引擎可以修改的层数。在一些实施例中,重写引擎也可以限于重写引擎可以将任何给定的协议层扩展成多少。在这样的实施例中,重写引擎通过将两个相邻层指针相减来提取协议层的大小。如果层大小超过重写引擎的硬件能力,则重写引擎简单地使用先前的层指针并且智能地形成正文。
假设协议层不能被扩展多于40字节,但是关联协议的最大变体是64字节。在一些实施例中,重写引擎将报头协议扩展成最大40字节以供修改。在修改之后,使用层指针,重写引擎能够相似地将剩余字节拼接到修改的字节。
使用层指针显著地减少硬件逻辑和复杂性,因为它仅需应对一个给定的协议层。硬件命令的范围限于给定的层。由于命令引擎对先前层和在它之后的层无依赖性,所以如果每层需要更多命令则可以用多通过方式使用命令硬件。换而言之,由于命令没有与命令关联的内部状态,所以可以并行地使用多个命令。相似地,可以并行地修改多层。
图21图示根据本发明的一些实施例的重写引擎的又一方法2100。重写引擎是网络交换机的部分并且在分组从网络交换机被发送出之前修改它们。在步骤2105,针对每个分组维护指针结构。指针结构包括层指针和分组的所有报头的总大小。层指针中的每个层指针对应于分组中的关联层的开始位置。
指针结构包括N+1个层指针。重写引擎修改分组的N个层。层指针形成尾指针。有总大小的尾指针指示报头的正文。报头的正文是报头的未被重写引擎修改的部分。
在步骤2110,基于层指针拆分分组的层以供层修改。检测从分组的协议报头的缺失字段。基于检测,将协议报头扩展成用于对应协议的通用格式。通用格式包括协议的所有可能字段。无论协议报头对应于协议的哪个变体,字段中的每个字段都具有相同偏移。每个经一般化的协议报头包括位矢量,该位矢量具有对于无效字段被标注为不可用或者0的位和对于有效字段被标注为可用或者1的位。使用来自通用命令集合的至少一个命令来修改经一般化的协议报头。通常,在修改之后更新位矢量。
在步骤2115,基于层修改来更新层指针。
在步骤2120,基于经更新的层指针将层拼接回到一起。
图22图示根据本发明的一些实施例的网络交换机的又一方法2200。在步骤2205,在网络交换机的传入端口处接收分组。
在步骤2210,使用指针结构来分离分组的协议层。指针结构包括指向分组的N+1个位置的N+1个层指针和分组的所有报头的总大小。位置包括协议层的起始定位。基于分组的解析的数据来初始化指针结构。
在步骤2215,使经分离的协议层一般化以进行修改。对于每层,提取层的大小以确定该大小是否超过用于修改该层的硬件能力。通过将在指针结构中的两个相邻层指针相减来提取该大小。基于该确定,使用两个相邻层指针中的第一层指针并且形成正文。
在步骤2220,基于修改来更新指针结构。
在步骤2225,使用经更新的指针结构来智能地将经修改的协议层拼接回到一起以形成新协议报头。
在步骤2230,经由网络交换机的传出端口发送出具有新协议报头的分组。
本领域普通技术人员将认识到,也存在其它使用和优点。尽管已经参照许多具体细节描述本发明,但是本领域普通技术人员将认识到,可以在其它具体形式中体现本发明而不脱离本发明的精神实质。因此,本领域普通技术人员将理解到,本发明不受前述示例细节限制,而是将由所附权利要求限定。

Claims (25)

1.一种重写引擎的方法,所述方法包括:
从传入的分组的协议报头检测缺失字段;
基于所述检测,将所述协议报头扩展成用于对应协议的通用格式,其中所述通用格式包括所述对应协议能够具有的所有字段;以及
针对经扩展的协议报头维护数据结构,其中所述数据结构包括第一字段和第二字段,其中所述第一字段指示从所述经扩展的协议报头的开始起的连续有效字节的数目,并且所述第二字段是指示在所述经扩展的协议报头中的所述连续有效字节之后的每个字节的有效性的位矢量,其中每个字节的所述有效性由所述位矢量中的一个位来指示。
2.根据权利要求1所述的方法,其中维护数据结构包括:针对在所述连续有效字节之后的每个无效字段的每个字节,将所述位矢量的位标注为不可用,以及针对在所述连续有效字节之后的每个有效字段的每个字节,将所述位矢量的位标注为可用。
3.一种表示经扩展的协议报头的方法,所述方法包括:
获得所述经扩展的协议报头,其中所述经扩展的协议报头是根据用于对应协议的通用格式而被一般化的传入的分组的协议报头;
维护所述经扩展的协议报头的表示,其中所述表示是包括第一字段和第二字段的数据结构;
将所述第一字段设置成从所述经扩展的协议报头的开始起的连续有效字节的数目;以及
针对在所述连续有效字节之后的每个无效字段的每个字节,将所述第二字段的位标注为不可用,其中每个无效字段是在所述传入的分组的所述协议报头中不存在的字段;以及
针对在所述连续有效字节之后的每个有效字段的每个字节,将所述第二字段的位标注为可用,其中每个有效字段是在所述传入的分组的所述协议报头中存在的字段,
其中所述第二字段中的每个位指示所述经扩展的协议报头中的一个字节的有效性。
4.根据权利要求3所述的方法,其中所述第一字段是连续_字节字段,并且所述第二字段是位矢量字段。
5.根据权利要求3所述的方法,其中重写引擎通过以下来使所述协议报头一般化:从所述协议报头检测缺失字段,以及基于所述检测,根据所述通用格式扩展所述协议报头。
6.根据权利要求3所述的方法,其中所述通用格式包括所述协议的所有字段,其中无论所述协议报头对应于所述协议的哪个变体,所述字段中的每个字段都具有相同偏移。
7.一种网络交换机的方法,所述方法包括:
在所述网络交换机的传入端口处接收分组;
根据用于对应协议的通用格式来使所述分组的协议报头一般化;以及
创建表示经一般化的协议报头的数据结构,其中所述数据结构包括连续_字节字段和位矢量字段,其中所述连续_字节字段表示从所述协议报头的开始起的连续有效字节的数目,并且所述位矢量字段是所述协议报头的每字节的位表示,其中所述位矢量字段中的每个位指示所述经一般化的协议报头中的一个字节的有效性。
8.根据权利要求7所述的方法,其中所述网络交换机包括被配置为使所述协议报头一般化的重写引擎。
9.根据权利要求8所述的方法,其中使协议报头一般化包括:
所述重写引擎从所述分组的所述协议报头检测缺失字段;以及
基于所述检测,所述重写引擎将所述协议报头扩展成所述通用格式。
10.一种网络交换机的方法,所述方法包括:
在所述网络交换机的传入端口处接收分组;
根据用于对应协议的通用格式来使所述分组的协议报头一般化;以及
在独立于所述协议报头的大小的数据结构中表示经一般化的协议报头,其中所述数据结构包括连续_字节字段和位矢量字段,其中所述连续_字节字段表示从所述协议报头的开始起的连续有效字节的数目,并且所述位矢量字段是所述协议报头的每字节的位表示,其中所述位矢量字段中的每个位指示所述经一般化的协议报头中的一个字节的有效性。
11.一种网络交换机的方法,所述方法包括:
在所述网络交换机的传入端口处接收分组;
根据用于对应协议的通用格式来使所述分组的协议报头一般化;
在独立于所述协议报头的大小的数据结构中表示经一般化的协议报头,所述数据结构包括第一字段和第二字段,其中所述第一字段指示从所述经一般化的协议报头的开始起的连续有效字节的数目,并且所述第二字段是位矢量,所述位矢量指示在所述经一般化的协议报头中的所述连续有效字节之后的每个字节的有效性,其中每个字节的所述有效性由所述位矢量中的一个位来指示;
通过向所述经一般化的协议报头应用至少一个命令来修改所述经一般化的协议报头;
从所述位矢量确定经修改的协议报头的无效字节;
去除所述经修改的协议报头的所有所述无效字节以形成新报头;以及
经由所述网络交换机的传出端口发送出具有所述新报头的所述分组。
12.根据权利要求11所述的方法,其中修改所述协议报头包括:基于所述传出端口的出口端口类型,向命令表进行索引以确定所述至少一个命令。
13.根据权利要求7所述的方法,还包括从所述经一般化的协议报头提取至少一个字段。
14.根据权利要求7所述的方法,在接收传入的分组之前还包括:
允许协议的通用格式的由软件定义的映射;以及
在所述网络交换机的存储器中存储所述由软件定义的映射。
15.一种网络交换机,包括:
输入端口和输出端口,用于接收和发送分组;
存储器,用于存储协议的通用格式的由软件定义的映射的集合;以及
重写引擎,对所述分组执行报头一般化过程,以根据所述对应协议特有的所述由软件定义的映射之一来使所述分组中的每个分组的每个协议报头一般化,其中在数据结构中表示所述经一般化的协议报头,其中所述数据结构包括连续_字节字段和位矢量字段,其中所述连续_字节字段表示从所述协议报头的开始起的连续有效字节的数目,并且所述位矢量字段是所述协议报头的每字节的位表示,所述位矢量字段中的每个位指示所述经一般化的协议报头中的一个字节的有效性。
16.根据权利要求15所述的网络交换机,其中在协议的不同变体上使用所述报头一般化过程。
17.根据权利要求15所述的网络交换机,其中在不同协议上使用所述报头一般化过程。
18.根据权利要求15所述的网络交换机,其中在所述分组中的每个分组由所述重写引擎处理之后,所述分组包括规范化的协议层。
19.根据权利要求18所述的网络交换机,其中所述规范化的协议层中的每个协议层是根据该协议的对应通用格式扩展的协议层。
20.一种网络交换机,包括:
输入端口和输出端口,用于接收和发送分组;
存储器,用于存储协议的通用格式的由软件定义的映射的集合;以及
重写引擎,对所述分组执行报头一般化过程,以根据所述对应协议特有的所述由软件定义的映射之一来使所述分组中的每个分组的每个协议报头一般化,其中在独立于所述协议报头的大小的数据结构中表示所述经一般化的协议报头,其中所述数据结构包括连续_字节字段和位矢量字段,其中所述连续_字节字段表示从所述协议报头的开始起的连续有效字节的数目,并且所述位矢量字段是所述协议报头的每字节的位表示,所述位矢量字段中的每个位指示所述经一般化的协议报头中的一个字节的有效性。
21.根据权利要求15所述的网络交换机,其中所述重写引擎是灵活的并且在可编程基础上操作。
22.一种网络交换机,包括:
输入端口和输出端口,用于接收和发送分组;
存储器,用于存储协议的通用格式的由软件定义的映射的集合;以及
重写引擎,对所述分组执行报头一般化过程,以根据所述对应协议特有的所述由软件定义的映射之一来使所述分组中的每个分组的每个协议报头一般化,其中在独立于所述协议报头的大小的数据结构中表示所述经一般化的协议报头,所述数据结构包括第一字段和第二字段,其中所述第一字段指示从所述经一般化的协议报头的开始起的连续有效字节的数目,并且所述第二字段是位矢量,所述位矢量指示在所述经一般化的协议报头中的所述连续有效字节之后的每个字节的有效性,其中每个字节的所述有效性由所述位矢量中的一个位来指示,其中所述重写引擎基于所述输出端口的出口端口类型向命令表进行索引,所述命令表向所述重写引擎告知将向每个分组的每个经一般化的协议报头应用的一个或者多个命令。
23.根据权利要求22所述的网络交换机,其中所述存储器存储命令集合,其中在所述命令集合中包括所述一个或者多个命令。
24.根据权利要求15所述的网络交换机,还包括解析器引擎,其中所述解析器引擎标识所述分组的内容。
25.根据权利要求24所述的网络交换机,其中所述解析器引擎是灵活的并且在可编程基础上操作。
CN201510272436.0A 2014-06-19 2015-05-25 使用连续字节来表示通用格式报头的方法及其装置 Active CN105207984B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/309,619 US9473601B2 (en) 2014-06-19 2014-06-19 Method of representing a generic format header using continuous bytes and an apparatus thereof
US14/309,619 2014-06-19

Publications (2)

Publication Number Publication Date
CN105207984A CN105207984A (zh) 2015-12-30
CN105207984B true CN105207984B (zh) 2021-03-16

Family

ID=54870781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510272436.0A Active CN105207984B (zh) 2014-06-19 2015-05-25 使用连续字节来表示通用格式报头的方法及其装置

Country Status (4)

Country Link
US (1) US9473601B2 (zh)
CN (1) CN105207984B (zh)
HK (1) HK1219186A1 (zh)
TW (1) TW201603537A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170127100A1 (en) * 2014-07-07 2017-05-04 Lg Electronics Inc. Hybrid broadcast signal transmission and reception apparatus and transmission and reception method
CN108881124B (zh) * 2017-05-15 2021-02-02 武汉斗鱼网络科技有限公司 在模块间实现高性能通信的方法、系统、存储介质及设备
CN109246150A (zh) * 2018-11-02 2019-01-18 唐山华洋自动化有限公司 基于移动互联网的监测设备数据传输协议远程控制系统
CN111953604B (zh) 2019-05-17 2023-07-18 华为技术有限公司 一种为业务流提供业务服务的方法和装置
CN111770055A (zh) * 2020-05-29 2020-10-13 宁波三星医疗电气股份有限公司 一种应用于电能表的多协议通讯帧快速判别方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103384224A (zh) * 2008-09-05 2013-11-06 思科技术公司 共享接入电缆网络中的绑定信道上的qos

Family Cites Families (64)

* 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
US6330251B1 (en) * 1998-05-30 2001-12-11 Alcatel Canada Inc. Method and apparatus for data extraction from a bit stream
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 日本電気株式会社 フレーム構成方法、フレーム構成装置およびフレーム構成転送システム
US6591310B1 (en) * 2000-05-11 2003-07-08 Lsi Logic Corporation Method of responding to I/O request and associated reply descriptor
JP4099930B2 (ja) 2000-06-02 2008-06-11 株式会社日立製作所 ルータ装置及びvpn識別情報の設定方法
GB0023169D0 (en) 2000-09-20 2000-11-01 Ibm Message parsing in message processing systems
US6898647B2 (en) * 2001-04-02 2005-05-24 Redback Networks Inc. Parallel byte processing engines shared among multiple data channels
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
US7277957B2 (en) * 2001-07-17 2007-10-02 Mcafee, Inc. Method of reconstructing network communications
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
US20050281281A1 (en) 2003-01-24 2005-12-22 Rajesh Nair Port input buffer architecture
US7415596B2 (en) 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US7706363B1 (en) 2003-06-11 2010-04-27 Radlan Computer Communications, Ltd Method and apparatus for managing packets in a packet switched network
US7411957B2 (en) 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7554978B1 (en) 2004-03-30 2009-06-30 Extreme Networks, Inc. System for accessing content-addressable memory in packet processor
US7822032B1 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
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 富士通株式会社 通信システムの制御方法、通信制御装置、プログラム
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
KR20060053425A (ko) * 2004-11-15 2006-05-22 엘지전자 주식회사 데이터 스트림내의 픽처 데이터의 기록구간을 지정하고이를 이용하는 방법 및 장치
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
CN101563908B (zh) 2006-12-19 2013-01-09 国际商业机器公司 分析网络流的装置和方法
US7822875B1 (en) 2006-12-22 2010-10-26 Marvell International Ltd. Method for flexible modifications to a packet
US7978700B2 (en) 2007-03-12 2011-07-12 Marvell Israel (Misl) Ltd. Apparatus for determining locations of fields in a data unit
CN101286215A (zh) * 2008-02-22 2008-10-15 山东中创软件工程股份有限公司 同时支持人工流和自动流的工作流引擎
CN101237419A (zh) * 2008-03-07 2008-08-06 北京航管科技有限公司 航空电信网空地通信中的报头压缩方法
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
RU2549159C2 (ru) * 2010-05-03 2015-04-20 Нокиа Корпорейшн Сокращение служебной информации протокола
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
US8750333B2 (en) * 2011-02-14 2014-06-10 Telefonaktiebolaget Lm Ericsson (Publ) Backwards-compatible approach to fields of a protocol layer
TW201246867A (en) 2011-05-06 2012-11-16 Ralink Technology Corp Packet processing accelerator and method thereof
US8645763B2 (en) * 2011-09-12 2014-02-04 Microsoft Corporation Memory dump with expanded data and user privacy protection
US8521905B2 (en) 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103384224A (zh) * 2008-09-05 2013-11-06 思科技术公司 共享接入电缆网络中的绑定信道上的qos

Also Published As

Publication number Publication date
CN105207984A (zh) 2015-12-30
US20150373169A1 (en) 2015-12-24
HK1219186A1 (zh) 2017-03-24
US9473601B2 (en) 2016-10-18
TW201603537A (zh) 2016-01-16

Similar Documents

Publication Publication Date Title
CN105207984B (zh) 使用连续字节来表示通用格式报头的方法及其装置
CN105282137B (zh) 将分组拆分成各层以供修改且之后将层拼接的方法及装置
CN105187330B (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
KR102337513B1 (ko) 패킷 컨텐츠로부터 해시 입력을 형성하는 방법 및 장치
CN105323192B (zh) 将分组修改成通用格式用于实现可编程修改的方法及装置
CN105282136B (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: 1219186

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
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California, USA

Applicant before: Cavium, Inc.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200424

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: 20200424

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: California, USA

Applicant before: Cavium, Inc.

GR01 Patent grant
GR01 Patent grant