CN111684769B - 包括基于表的动作的匹配处理单元的网络系统 - Google Patents
包括基于表的动作的匹配处理单元的网络系统 Download PDFInfo
- Publication number
- CN111684769B CN111684769B CN201880084971.5A CN201880084971A CN111684769B CN 111684769 B CN111684769 B CN 111684769B CN 201880084971 A CN201880084971 A CN 201880084971A CN 111684769 B CN111684769 B CN 111684769B
- Authority
- CN
- China
- Prior art keywords
- packet
- matching
- memory
- pipeline
- match
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了具有减少的数据停顿的用于处理分组的方法和设备。方法包括:(a)接收包括报头部分和有效负载部分的分组,其中报头用于生成分组报头向量;(b)通过执行分组匹配操作来生成表结果,其中表结果至少部分基于存储在匹配表中的数据和分组报头向量生成;(c)在匹配处理单元接收与匹配表关联的一组指令的地址和表结果;以及(d)由匹配处理单元执行一个或多个动作来响应一组指令直到指令完成,其中一个或多个动作包括更改报头部分、更新基于存储器的数据结构或者发起事件。
Description
相关申请的交叉引用
本申请要求在2017年11月6日提交的美国临时专利申请号62/582,138的优先权和权益,其全部内容通过引用并入本文。
背景技术
在数据通信网络中,网络或路由设备在一组输入接口中的一个接收消息,并将其转发到一组输出接口中的一个或多个。用户通常要求此类路由设备尽可能快地操作,以与传入消息的高速率同步。
当硬件交换机与专门的硬件功能相结合时,提供网络能力包括分组交换、安全、深度分组检查和其他功能。例如,网络处理单元(NPU)和标准CPU被用于以可编程的方式来处理分组。NPU是CPU的特定于域的版本;这两种设计都实质上将要处理的分组加载到缓冲区或存储器中,然后执行指令来操作分组字段以及查找表数据,以指导分组转发和重写操作。
发明内容
对于网络交换机或功能来说,以可编程的方式来执行分组处理而不牺牲性能一直是挑战。NPU和CPU在应用新的或复杂的特征时不能满足目标分组处理速率的主要原因是,它们花费许多周期停顿等待从表、状态或分组存储器返回数据读取。
当所述NPU或CPU需要在大型共享表中查找数据时,例如转发数据库表或连接状态表时,数据提取停顿是常见的。数据提取停顿通常是处理停顿的主要来源。当使用存储器,特别是所述NPU外部的存储器,来在所述硬件加速器和所述处理器之间通信时,所述网络处理器的所述总吞吐量可能会受到限制,其中所述处理器“停顿”,等待分组数据变为可用于处理。例如,如果处理器内核试图访问不在其缓存中的存储器地址,并且所述存储器系统必须访问其他存储器(例如,动态随机访问存储器(DRAM))来获取它们,则可能导致所述处理器内核在每个地址停顿数百个处理器时钟周期以等待所述存储器系统将所述请求的数据传输给所述处理器内核。在另一示例中,外部存储器可能包括两个或更多个子结构(例如,多组DRAM)。在这样的系统中,对同一存储器结构的多个访问请求可能会导致延迟损失。此外,用于数据流的一组给定操作可能需要以给定的顺序完成,进一步增加了延迟。
因此,需要用于存储、安全和网络功能的系统和方法允许高度可配置的网络流水线、可定制的主机接口和灵活的硬件卸载,其具有改进的性能并且不超过目标功率预算。本发明解决了这种需求,并且也提供了有关的优点。
本文中公开的主题通过将分组处理任务分解为一系列的查表或表匹配,以及处理动作来满足这种需要。可以提供匹配处理单元(MPU)来在网络流水线的每个阶段执行基于表的动作。一个或多个MPU可以与表引擎结合,所述表引擎被配置成提取可编程字段集并获取表结果。当表引擎完成了获取查找结果,它可以将表结果和相关的分组报头字段传输给MPU处理。所述MPU可以基于域特定的指令集运行目标程序,并且MPU可以将表查找结果和分组报头作为输入,并生成表更新和分组报头重写操作作为输出。预先确定数量的这种表引擎和MPU流水线阶段可以结合,以形成能够在高速率分组处理操作的可编程流水线。这防止了MPU经历数据丢失停顿,并允许MPU程序在确定的时间内执行,然后与流水线一起以维持目标分组处理速率。在一些情况下,所述程序员或编译器可以将所述分组处理程序分解成一组从属或独立的表查找和动作处理阶段(匹配+动作),其分别映射到表引擎和MPU阶段。在一些情况下,如果所需的阶段数超过了实施的阶段数,则可以重新循环分组用于额外处理。
因此,在一个方面,本文中公开的用于处理分组的方法具有减少的数据停顿,所述方法包括:(a)接收包括报头部分和有效负载部分的分组,其中所述报头部分包括分组报头向量;(b)通过执行分组匹配操作来生成表结果,其中至少部分基于存储在匹配表中的所述分组报头向量和数据生成表结果;(c)在匹配处理单元接收与所述匹配表关联的一组指令的地址和表结果;以及(d)由所述匹配处理单元执行一个或多个动作来响应所述的一组指令直到所述指令完成,其中所述一个或多个动作包括更改所述报头部分、更新基于存储器的数据结构或者发起事件。
在一些实施例中,所述方法进一步包括将所更改的报头部分提供给后续电路,其中所述后续电路被配置成将所更改的报头部分组装到相应的有效负载部分。在一些实施例中,执行分组匹配操作包括从存储在随机访问存储器(RAM)上的多个表中选择匹配表。在一些情况下,基于与分组类型有关的分组类型信息来选择所述匹配表,该分组类型与所述报头部分关联。或者,基于由以前阶段或以前流水线阶段选择的所述匹配表的ID来选择所述匹配表。
在一些实施例中,所述表结果包括与所述匹配表有关的键和所述匹配操作的匹配结果。在一些实施例中,所述匹配处理单元的存储器单元被配置成存储多组指令。在一些情况下,所述多组指令与不同的动作关联。在一些情况下,一组指令存储在所述存储器单元的连续区域中,并且所述连续区域由所述地址来标识。
在一些实施例中,所述一个或多个动作进一步包括更新所述匹配表。在一些实施例中,所述方法进一步包括在所述匹配处理单元处理所述匹配表时锁定所述匹配表。
在另一方面,提供了一种用于处理分组的装置。所述装置可以包括:(a)其上存储有多个程序的第一存储器单元,其中所述多个程序与多个动作关联,所述多个动作包括更改分组的报头部分,更新基于存储器的数据结构或者发起事件;(b)用于接收和存储表结果的第二存储器单元,其中通过对包含在所述报头部分中的分组报头向量和存储在匹配表中的数据执行分组匹配操作来生成表结果;以及(c)用于执行从所述多个程序中选择的程序来响应所述表结果和由所述装置接收的地址的电路,其中所述程序执行直到完成,并且所述程序与所述匹配表关联。
在一些实施例中,所述装置被配置成将所更改的报头部分提供给后续电路,并且所述后续电路被配置成将所更改的报头部分组装到相应的有效负载部分。
在一些实施例中,所述表结果由表引擎提供,所述表引擎包括用于从存储在随机访问存储器(RAM)上的多个表选择匹配表的电路。在一些情况下,基于与分组类型有关的分组类型信息来选择所述匹配表,该分组类型与所述报头部分关联。或者,基于由以前阶段选择的所述匹配表的ID来选择所述匹配表。
在一些实施例中,所述多个程序中的每一个都包括一组指令,所述指令存储在所述第一存储器单元的连续区域中,并且所述连续区域由所述地址来标识。在一些实施例中,所述一个或多个动作包括更新所述匹配表。在一些实施例中,所述电路被进一步配置成在所述装置处理所述匹配表时锁定所述匹配表。在一些情况下,所述事件与更改所述分组的报头部分无关。在一些情况下,所述基于存储器的数据结构包括以下所述至少一种:用于发起事件的管理令牌、管理命令、处理令牌。
在一些实施例中,提供了包括多个所述装置的系统。所述多个装置被协调成根据配置并发地或顺序地执行所述一组指令或者一个或多个动作。在一些情况下,所述配置由从可操作地与多个装置耦合的主机设备的主存储器接收的应用指令确定。
应当理解,本发明的不同方面可以单独地、共同地或彼此组合地理解。本文中所述发明的各个方面可以应用于下面提出的任何特定应用或本文中公开的任何其他类型的所述数据处理系统。本文中有关所述数据处理的任何描述都可以应用于和用于任何其他数据处理情形。此外,在所述数据处理系统或装置的情况下公开的任何实施例也适用于本文中公开的所述方法。
附图说明
在所附权利要求书中具体阐述了本发明的新颖特征。通过参考对在其中利用到本发明原理的说明性实施方式加以阐述的以下详细描述和附图,将会获得对本发明的特征和优点的更好的理解,在附图中:
图1示出了根据本发明实施例的匹配处理单元(MPU)的框图;
图2示出了用于执行程序的多个MPU的示例性配置;
图3示出了根据本发明实施例的示例性P4入口或出口流水线(PIP流水线)的框图;
图4说明了用于以太网分组传输(即,Tx P4流水线)的示例性阶段扩展流水线;
图5示出了根据本发明实施例的示例性Rx P4流水线的框图;
图6示出了根据本发明实施例的示例性Tx P4流水线的框图;以及
图7示出了根据本发明实施例的示例性系统的框图。
具体实施方式
在本文描述的某些实施例中,本文公开了用于处理数据(如分组或表)的网络装置、系统和方法,所述装置、系统和方法具有减少的数据停顿。
某些定义
除非另有定义,本发明使用的所有技术术语均具有与本发明所属域普通技术人员的通常理解相同的含义。
本文中所使用的单数形式“一个”、“一种”等包括复数指代,除非上下文另有明确规定。本文中任何提及“或”旨在包含“和/或”除非另有说明。
本文中所使用的术语“约”指的是接近所述量的约10%、5%或1%的量,包括其中的增量。
本说明书对“一些实施例”或“实施例”的引用,意味着与该实施例有关的描述的特定特征、结构或特征被包括在至少一个实施例中。因此,短语“在一些实施例中”或“在实施例中”在本说明书中各处的出现并不一定都指同一个实施例。此外,特定的特征、结构或特征可以以任何合适的方式组合在一个或多个实施例中。
如本文中使用的,术语“组件”、“系统”、“接口”、“单元”、“块”等是指与计算机相关的实体、硬件、软件(例如,在执行中)和/或固件。例如,组件可以是处理器、在处理器上运行的进程、对象、可执行程序、程序、存储设备和/或计算机。举例来说,服务器和在服务器上运行的应用可以是组件。一个或多个组件可以驻留在进程中,而组件可以本地化在一台计算机上并/或分布在两台或更多台计算机之间。
此外,这些组件可以从其上存储有各种数据结构的各种计算机可读媒介质上执行。组件可以通过本地和/或远程进程来通信,例如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据通过信号与本地系统、分布式系统中的另一个组件和/或跨网络(例如,因特网、局域网、广域网等)的另一个组件来交互)。
如另一示例,组件可以是具有特定功能的装置,由电气或电子电路操作的机械部件提供;电气或电子电路可以由由一个或多个处理器执行的软件应用或固件应用操作;一个或多个处理器可以是装置的内部或外部,并且至少可以执行软件或固件应用的一部分。如另一示例,组件可以是通过电子组件提供特定功能的装置,不需要机械部件;电子组件其中可以包括一个或多个处理器,用于执行至少部分赋予电子组件功能的软件和/或固件。
此外,在本文中使用的“示例性”一词的意思是作为示例、实例或说明。本文中描述成“示例性”的任何方面或设计不必要被理解为首选或优于其他方面或设计。相反,“示例性”一词的使用旨在以具体的方式表达概念。如在本申请中使用的,术语“或”旨在表示包含性“或”而不是排他性“或”。也就是说,除非另有说明或从上下文可以清楚得出,否则“X使用A或B”旨在表示任何自然包含的排列。也就是说,如果X使用A;X使用B;或X同时使用A和B,则“X使用A或B”在任何上述情况下均满足。另外,在本申请和所附权利要求书中使用的冠词“一”和“一个”应当通常被理解成意指“一个或多个”,除非另有说明或从上下文清楚地指向单数形式。
本发明的实施例可以用于各种应用。本发明的一些实施例可以与各种设备和系统结合使用,例如,个人计算机(PC)、台式计算机、移动计算机、膝上型计算机、笔记本计算机、平板计算机、服务器计算机、手持计算机、手持设备、个人数字助理(PDA)设备、手持PDA设备、无线通信站、无线通信设备、无线接入点(AP)、调制解调器、网络、无线网络、局域网(LAN)、无线LAN(WLAN)、城域网(MAN)、无线MAN(WMAN)、广域网(WAN)、无线WAN(WWAN)、个人局域网(PAN)、无线PAN(WPAN)、根据现有IEEE 802.11、802.11a、802.11b、802.11e、802.11g、802.11h、802.11i、802.11n、802.16、802.16d、802.16标准和/或上述标准的未来的版和/或派生和/或长期演进(LTE)来运行的设备和/或网络、属于上述网络一部分的单元和/或设备、单向和/或双向无线通信系统、蜂窝无线电话通信系统、蜂窝电话、无线电话、个人通信系统(PCS)设备、包括无线通信设备的PDA设备、多输入多输出(MIMO)收发器或设备、单输入多输出(SIMO)收发器或设备、多输入单输出(MISO)收发器或设备等。
术语“数据停顿”或“停顿”可以指在处理器恢复执行之前导致延迟的所有形式的停顿。例如,当处理器找不到缓存线时,可能出现缓存丢失停顿。在另一示例中,当译码阶段中的指令停顿时,为了防止新指令被提取,PC寄存器中的值和提取阶段中的指令被保留以防止变化。值将被保留直到气泡通过执行阶段。在另一示例中,当处理器内核试图访问不在其缓存中的存储器地址,并且所述存储器系统必须访问其他存储器(例如,动态随机访问存储器(DRAM))来获取它们时,可能导致所述处理器内核在每个地址停顿数百个处理器时钟周期以等待所述存储器系统将所请求的数据传输给处理器内核。
术语“表”是指涉及数据或分组处理的各种类型的表。例如,表可以是匹配+动作阶段中使用的匹配表,如转发表(例如,用于以太网地址查找的哈希表、用于IPv4或IPv6的最长前缀匹配表、用于访问控制列表(ACL)的通配符查找)。这些表可以存储在各种存储器位置,如内部静态随机访问存储器(SRAM)、网络接口卡(NIC)DRAM或主机存储器中。
术语“匹配+动作”是指用于网络分组交换的范式(诸如那些由OpenFlow交换机或P4流水线执行的,其使用匹配表、动作表、统计存储器、仪表存储器、状态存储器和三元间接存储器的)。术语“P4”指的是一种高级语言,用于编写与协议无关的分组处理器。P4是一种说明性语言,用于表示网络转发元件(如交换机、网络接口卡、路由器或网络功能设备)的流水线如何处理分组。它基于抽象转发模型,该抽象转发模型由解析器和在入口和出口之间划分的一组匹配+动作表资源组成。解析器识别每个传入分组中存在的报头。每个匹配+动作表在报头字段的子集上执行查找,并应用与每个表中的第一匹配对应的操作。
尽管出于说明性目的,本公开的部分涉及有线和/或有线通信系统或方法,但是本发明的实施例不限于此。例如,一个或多个有线通信系统可以利用一个或多个无线通信组件、一个或多个无线通信方法或协议等。
尽管出于说明目的,本文中讨论的一些部分可能涉及快速或高速互连基础设施,具有OS(操作系统)旁路功能的快速或高速互连组件或适配器,具有OS旁路功能的高速互连卡或网络接口卡(NIC)或者快速或高速互连基础设施或结构,本发明的实施例不限于此,并且可以与其他基础设施、结构、组件、适配器、主机通道适配器,卡或NIC结合使用,它们可以或可以不必要是快速或高速的或者具有操作系统旁路功能。例如,本发明的一些实施例可以与无限带宽(IB)基础设施、结构、组件、适配器、主机通道适配器、卡或NIC结合使用;与以太网基础设施、结构、组件、适配器、主机通道适配器、卡或NIC结合使用;与千兆位以太网(GEth)基础设施、结构、组件、适配器、主机通道适配器、卡或NIC结合使用;与具有操作系统的基础设施、结构、组件、适配器、主机通道适配器、卡或NIC结合使用;与允许用户模式应用直接访问这些硬件并绕过呼叫到操作系统(即,具有OS旁路功能)的基础设施、结构、组件、适配器、主机通道适配器、卡或NIC的操作系统结合使用;与基础设施、结构、组件、适配器、主机通道适配器、卡或NIC结合使用;与无连接和/或无状态的基础设施、结构、组件、适配器、主机通道适配器、卡或NIC结合使用;和/或与其他合适的硬件结合使用。
匹配处理单元(MPU)
在本发明的一个方面,提供了匹配处理单元(MPU)来处理数据结构。数据结构可以包括各种类型,如数据分组、管理令牌、来自主机的管理命令、处理令牌。MPU可以被配置成根据正在处理的数据类型或不同的用途执行各种操作。例如,这些操作可以包括用于处理分组的基于表的动作,表维护操作(例如将时间戳记写入表或收集表数据以进行导出),管理操作(例如创建新队列或存储器映射,收集统计信息)以及可能会导致将任何类型的修改后的数据写入主机存储器的各种其他操作(诸如发起批量数据处理)。
在一些实施例中,为了对分组进行处理而提供的MPU可包括:(a)其上存储有多个程序的第一存储器单元,其中所述多个程序与多个动作关联,所述多个动作包括更改分组的报头部分,更新基于存储器的数据结构或者发起事件;(b)用于接收和存储表结果的第二存储器单元,并且由被配置成向包含在报头部分中的分组报头向量和存储在匹配表中的数据执行分组匹配操作的表引擎来提供表结果;以及(c)用于执行从多个程序中选择的程序来响应表结果和由装置接收的地址的电路,并且程序执行直到完成,并且程序与匹配表关联。如上所述,事件可以与或可以不与对分组进行更改或更新有关。例如,事件可以是管理操作,如创建新队列或存储器映射、收集统计信息、发起可能导致将任何类型的更改数据写入主机存储器的批量数据处理或者在描述符环、集散列表(SGL)上执行计算。
图1示出了根据本发明实施例的匹配处理单元(MPU)100的框图。在一些实施例中,MPU单元100可包括多个功能单元、存储器和至少一个寄存器文件。例如,MPU单元可以包括指令提取单元101、寄存器文件单元107、通信接口105、算术逻辑单元(ALU)109和各种其他功能单元。
在说明性示例中,MPU单元100可以包括写端口或通信接口105,其允许存储器读/写操作。例如,通信接口可以支持从外部存储器(例如,主机设备的高带宽存储器(HBM))或内部静态随机存取存储器(SRAM)写入或读取分组。通信接口105可以采用任何合适的协议,如高级微控制器总线架构(AMBA)先进可扩展接口(AXI)协议。AXI是用于高速/高端片上总线协议的总线协议,并具有与读、写、寻址和写响应关联的通道,这些通道分别是分开的、单独操作的,并具有事务属性,如多个未完成地址或写数据交叉。AXI接口105的特征可以包括支持使用字节选通的不对齐数据传输,仅发布起始地址的基于突发的事务,分离地址/控制和数据阶段,具有乱序响应的多个未完成地址的发布,以及易于添加寄存器阶段以提供时序收敛。例如,在MPU执行表写入指令时,MPU可以跟踪哪些字节被写入(即脏字节)以及哪些保持不变。当表条目被清回存储器时,脏字节向量可以作为写入选通提供给AXI,允许多个写入以安全地更新单个表数据结构,只要它们不写入同一个字节。在一些情况下,表中的脏字节不需要是连续的,并且MPU可以只在脏向量中设置了至少一位时写回表。尽管分组数据是依照根据本说明书的本示例性实施例的分组数据通信片上互连系统中的AXI协议来传送的,但是它也可以应用于由其他支持锁定操作的协议来操作的分组数据通信片上互连系统,如除了AXI协议外的高级高性能总线(AHB)协议或高级外围总线(APB)协议。
MPU 100可以包括指令提取单元101,其被配置成基于输入表结果或表结果的至少一部分来从MPU外部的存储器中提取指令集。指令提取单元可以支持基于由表引擎提供的表结果或表结果的一部分的分支和/或线性代码路径。在一些情况下,表结果可以包括表数据、键数据和/或一组指令/程序的起始地址。关于表引擎的细节将在本文中随后描述。在一些实施例中,指令提取单元101可以包括用于存储一个或多个程序的指令缓存103。在一些情况下,一个或多个程序可以在收到由表引擎提供的程序的起始地址时被加载到指令缓存103中。在一些情况下,一组指令或程序可以存储在存储器单元的连续区域中,并且连续区域可以由地址来标识。在一些情况下,可以通过通信接口105从外部存储器提取和加载一个或多个程序。这提供了灵活性,允许使用同一个处理单元来执行与不同类型的数据关联的不同程序。在示例中,在将管理分组报头矢量(PHV)注入到流水线中以例如执行管理表直接存储器访问(DMA)操作或条目老化功能(即,添加时间戳)时,管理MPU程序之一可以加载到指令缓存以执行管理功能。指令缓存103可以使用各种类型的存储器来实现,如一个或多个SRAM。
一个或多个程序可以是任何程序,如与读取表、构造报头、到/从HBM或主机设备中的存储器区域的DMA以及其他动作有关的P4程序。一个或多个程序可以在流水线的任何阶段中执行,如本文中他处所述。
MPU 100可以包括寄存器文件单元107,以在MPU的存储器和功能单元之间或在MPU外部的存储器和MPU的功能单元之间将数据分段。功能单元可以包括,例如,ALU、仪表、计数器、加法器、移位器、边缘检测器、零检测器、条件码寄存器、状态寄存器等。在一些情况下,寄存器文件单元107可以包括多个通用寄存器(例如,R0、R1、……Rn),这些寄存器最初可以加载元数据值,然后再用于在程序执行期间存储临时变量,直到程序完成。例如,寄存器文件单元107可以用于存储SRAM地址、三元内容寻址存储器(TCAM)搜索值、ALU操作数、比较源或动作结果。阶段的寄存器文件单元还可以给随后阶段的寄存器文件提供数据/程序环境,以及使数据/程序环境可用于下一阶段的执行数据路径(即,下一阶段的加法器、移位器等的源寄存器)。在一个实施例中,寄存器文件的每个寄存器都是64位,并且最初可以分别加载特殊的元数据值,如来自表的哈希值、查找、分组大小、PHV时间戳、可编程表常数等。
在一些实施例中,寄存器文件单元107还可以包括被配置成存储比较器标志的比较器标志单元(例如,C0、C1、…Cn)。比较器标志可以通过由ALU生成的计算结果来设置,其进而与编码指令中的常数值比较,以确定条件分支指令。在实施例中,MPU可以包括八个一位比较器标志。但是,应当注意,MPU可以包括任何数量的比较器标志单元,其中每个单元都可以有任何合适的长度。
MPU 100可以包括一个或多个功能单元,如ALU 109。ALU可以支持在存储于寄存器文件单元107中的值上的算术和逻辑操作。然后ALU操作(例如,加、减、与、或、异或、非、与非、移位和比较)的结果可以写回到寄存器文件。例如,MPU的功能单元可以在PHV中任何处更新或更改字段、写入存储器(例如,表刷新)或者执行与PHV更新无关的操作。例如,ALU可以被配置成在描述符环、集散列表(SGL)上执行计算,以及控制从主机存储器加载到通用寄存器中的数据结构。
MPU 100可以包括各种其他功能单元,如仪表、计数器、动作插入单元等。例如,ALU可以被配置成支持P4兼容仪表。仪表是在表匹配上可执行的用于测量数据流速率的动作类型。仪表可以包括若干波段,通常是两个或三个波段,每个波段都有确定的最大数据速率和可选的突发大小。使用漏桶类比,仪表带是由分组数据速率填充的并以恒定允许的数据速率排水的桶。如果超过配额的数据速率的集合大于突发大小,就会发生溢出。溢出一个带会在下一个带中触发活动,这可能允许更高的数据速率。在一些情况下,分组的字段可以被认为是溢出基带的结果。这些信息可以随后用于将分组定向到不同队列,在该队列中,在拥塞的情况下时,可能更容易经受延迟或丢失。计数器可以由MPU指令实现。MPU可以包括用于不同目的一个或多个类型的计数器。例如,MPU可以包括对MPU停顿进行计数的性能计数器。动作插入单元可以被配置成将寄存器文件结果推送回到PHV,用于报头字段更改。
MPU可以能够将表锁定。在一些情况下,正被MPU处理的表可以在表引擎中被锁定或标记成“锁定”。例如,当MPU将表加载到其注册文件中时,表地址可以被报回表引擎,导致未来对同一个表地址的读取停顿,直到MPU释放了表锁。例如,当明确的表刷新指令执行时、MPU程序结束时或者MPU地址更改时,MPU可以释放锁。在一些情况下,MPU可以锁定多于一个表地址,例如,一个用于以前表回写,而另一个地址锁用于当前MPU程序。
MPU流水线化
在一些实施例中,单个MPU可以被配置成执行程序的指令,直到程序完成。可选地或附加地,多个MPU可以被配置成执行程序。在一些实施例中,表结果可以分布到多个MPU。根据为表配置的MPU分布掩码,表结果可以分布到多个MPU。这提供了在程序过长时防止数据停顿或每秒兆分组(MPPS)减少的优势。例如,如果PHV在一个阶段需要读取四个表,那么如果在800mhz的频率下操作(在这种情况中可能期望多个MPU),则每个MPU程序可能被限制成只有八条指令来维持100MPPS。
图2示出了用于执行程序的多个MPU的示例性配置。为了达到期望的性能,可以使用任何数量的MPU来执行程序。例如,可以使用至少两个、三个、四个、五个、六个、七个、八个、九个或十个个MPU来执行程序。每个MPU至少可以执行程序的一部分或指令集的子集。多个MPU可以同时地或顺序地实施执行。每个MPU可以或可以不执行相同数量的指令。图2中所示的示例仅用于说明目的,并且应当容易理解,可以采用各种其他配置。如图中所示,第一场景示出了四个MPU并发地执行16条指令长的程序。在这种情况中,可以在开始时将表结果分布到四个MPU,并且可以将进行阶段的结果分布在四个MPU之间。第二和第三场景分别对应于8条指令长的程序和32条指令长的程序。在每个场景中,四个MPU可以以不同的周期运行,并且可以不用于并发地处理同一个表。配置可以根据程序的长度(即,指令数、周期)和/或可用MPU的数量来确定。在一些情况下,配置可以由从可操作地与多个MPU耦合的主机设备的主存储器接收的应用指令确定。
P4流水线
在一个方面,提供了一种灵活、高性能、可执行范围广泛的P4程序的匹配动作流水线。可以对P4流水线编程以提供各种特征,包括但不限于路由、桥接、隧道、转发、网络ACL、L4防火墙、基于流的速率限制、VLAN标签策略、隶属度、隔离、多播和组控制、标签推送/弹出操作、L4负载平衡,用于分析和特定于流的处理的L4流表、DDOS攻击检测、抑制、在任何数据分组字段或流状态以及其他各种状态下收集的遥测数据。图3示出了根据本发明实施例的示例性P4入口或出口流水线(PIP流水线)300的框图。
在一些实施例中,所提供的发明可以支持匹配+动作流水线。程序员或编译器可以将分组处理程序分解成一组从属或独立的表查找和动作处理阶段(即,匹配+动作),其分别映射到表引擎和MPU阶段。匹配+动作流水线可以包括多个阶段。例如,进入流水线的分组可以首先由解析器(例如,解析器307)根据由P4程序指定的分组报头栈来解析。分组的这种解析表示可以被称为解析报头向量。然后,解析报头向量可以通过入口匹配+行动流水线的阶段(例如,阶段301-1、阶段301-2、阶段301-3、阶段301-4、阶段301-5、阶段301-6),其中每个阶段被配置成将一个或多个表解析报头向量字段匹配到表,随后根据P4程序指定的动作来更新分组报头向量(PHV)和/或表条目。在一些情况下,如果所需的阶段数超过了实施的阶段数,则可以重新循环分组用于额外处理。在一些情况下,分组有效负载可以在单独的先进先出(FIFO)队列中移动,直到它在反解析器(例如,反解析器309)中与其PHV重新组装。反解析器可以根据更改过的(例如,添加、删除或更新)PHV字段重写原始分组。在一些情况下,由入口流水线处理的分组可以位于分组缓冲器中,用于进行调度和可能的复制。在一些情况下,一旦分组被调度并离开分组缓冲器,它可以被再次解析,以创建出口解析报头向量。出口解析报头向量可以以与入口匹配+动作流水线类似的方式通过一系列匹配+动作流水线的阶段,之后,最终的反解析操作可以在分组发送到其目的地接口或再循环用于额外处理前执行。
在一些实施例中,可以使用相同的物理块或处理单元流水线来实现入口流水线和出口流水线。在一些实施例中,PIP流水线300可以包括至少一个解析器307和至少一个反解析器309。PIP流水线300可以包括多个解析器和/或多个反解析器。解析器和/或反解析器可以是P4兼容可编程解析器或反解析器。在一些情况下,解析器可以被配置成根据P4报头定义提取分组报头字段,并将分组报头字段放置到分组报头向量(PHV)中。解析器可以选择分组中的任何字段,并将所选字段的信息对齐,以创建分组报头向量。在一些情况下,在通过匹配+动作阶段的流水线之后,反解析块可以被配置根据更新的PHV重写原始分组。
由解析器产生的分组报头向量(PHV)可以具有任何大小或长度。例如,PHV可以是至少512位、256位、128位、64位、32位、8位或4位。在一些情况下,当需要长PHV(例如,6Kb)来包含所有有关报头字段和元数据时,单个PHV可以跨几个周期进行时分多路复用(TDM)。这种TDM功能提供了以下好处:允许所述发明支持可变长度的PHV,包括很长的PHV,以启用复杂的特征。PHV长度可以随着分组通过匹配+动作阶段而变化。
PIP流水线可以包括多个匹配+动作阶段。在解析器307生成PHV之后,PHV可以通过入口匹配+动作阶段。在一些实施例中,可以使用多个阶段单元301-1、301-2、301-3、301-4、301-5、301-6来实现PIP流水线,每个阶段单元可以包含表引擎305和多个MPU 303。MPU 303可以与如图1中所述的MPU相同。在说明性示例中,一个阶段单元中使用四个MPU。但是,任何其他数量的MPU,如至少一个、两个、三个、四个、五个、六个、七个、八个、九个或十个MPU,都可以通过表引擎来使用或分组。
表引擎305可以被配置成支持每个阶段的表匹配。例如,表引擎305可以被配置成哈希、查找和/或比较键与表条目。表引擎305可以被配置成通过控制表的地址和大小、用作查找键的PHV字段和定义了与表关联的P4程序的MPU指令向量来控制表匹配过程。由表引擎生成的表结果可以分布到多个MPU 303。
表引擎305可以被配置成控制表选择。在一些情况下,在进入阶段时,可以检查PHV,以选择启用哪些表用于到达的PHV。可以基于PHV中包含的信息来确定表选择标准。在一些情况下,可以基于与分组类型有关的分组类型信息来选择匹配表,该分组类型与PHV关联。例如,表选择标准可以基于分组类型或协议(例如,互联网协议版本4(IPv4)、互联网协议版本6(IPv6)和多协议标签交换(MPLS))或由以前阶段确定的下一表ID。在一些情况下,可以通过表选择逻辑来分析传入的PHV,然后,表选择逻辑生成表选择键,并使用TCAM来比较结果以选择有效表。表选择键可用于驱动表哈希生成、表数据比较以及驱动关联数据到MPU。
在一些实施例中,表引擎305可以包括哈希生成单元。哈希生成单元可以被配置成从PHV输入生成哈希结果,并且哈希结果可以用于从DRAM或SRAM数组执行DMA读取。在示例中,可以根据表选择键中哪些位对哈希熵有贡献来屏蔽哈希生成单元的输入。在一些情况下,表引擎可以使用相同的掩码用于与返回的SRAM读取数据的比较。在一些情况下,可以根据表的大小来缩放哈希结果,然后,可以添加表基偏移量来创建存储器索引。存储器索引可以被发送到DRAM或SRAM数组并执行读取。
在一些情况下,表引擎305可以包括TCAM控制单元。TCAM控制单元可以被配置成分配存储器以存储多个TCAM搜索表。在示例中,PHV表选择键可以在SRAM查找前定向到TCAM搜索阶段。TCAM搜索表可以被配置成最多1024位宽,并是TCAM资源允许的深度。在一些情况下,可以从共享象限TCAM资源切出多个TCAM表。TCAM控制单元可以被配置成将TCAM分配到各个阶段,以防止TCAM资源冲突,或者在阶段内将TCAM分配到多个搜索表中。TCAM搜索索引结果可以被转发到表引擎用于SRAM查找。
表引擎305可以通过硬件或电路来实现。表引擎可以是硬件定义的。在一些情况下,表查找的结果或表结果在MPU的寄存器文件中提供给MPU。
PIP流水线300可以包括多个阶段单元301-1、301-2、301-3、301-4、301-5、301-6。PIP流水线可以包括任何数量的阶段单元,如可以在PIP流水线中使用的至少两个、三个、四个、五个、六个、七个、八个、九个、十个阶段单元。在图示的实施例中,将六个匹配+动作阶段单元301-1、301-2、301-3、301-4、301-5、301-6组成组。这组阶段单元可以共享一组通用的SRAM 311和TCAM 313。SRAM 311和TCAM 313可以是PIP流水线的组件。这种安排可以允许六个阶段单元以任何合适的比例来划分匹配表资源,这为编译器提供了方便,也简化了编译器的资源映射任务。每个PIP流水线可以使用任何合适数量的SRAM资源和任何数量的TCAM资源。例如,图示的PIP流水线可以耦合到十个SRAM资源和四个或八个TCAM资源。在一些情况下,TCAM可以垂直或水平融合,用于更广或更深的搜索。
扩展的P4流水线
所提供的发明可以支持扩展的P4可编程流水线,以允许与主机驱动器的直接对接。例如,P4编程的DMA接口可以直接耦合到主机虚拟函数(VF)以及高级RISC机器(ARM)CPU或卸载引擎接口。扩展的P4流水线可以处理所需的DMA操作和循环。扩展的P4流水线可以包括特征,包括但不限于无状态NIC卸载,如TCP分段卸载(TSO)和接收侧缩放(RSS);扩展的P4流水线中的存储交换表式事务服务;细粒度负载平衡决策,其可以扩展到性能关键应用的单个数据结构,如DPDK或键值匹配;TCP流终止和代理服务的发起;融合以太网上的RDMA(RoCE)和类似的远程直接存储器访问(RDMA)协议支持;可以在P4中指定自定义描述符和SGL格式,以匹配性能关键应用的数据结构;可以使用与主机驱动程序开发耦合的P4程序以及各种其他特征来将新设备和VF行为建模。
数据可以在P4流水线中的分组域到/从主机和NIC存储器系统中的存储器事务域之间传输。这个分组到存储器事务的转换可以由扩展的P4流水线执行,扩展的P4流水线包括DMA写(TxDMA)和/或DMA读(RxDMA)操作。在本说明书中,包括TxDMA的扩展的P4流水线也可以被称为Tx P4,并且包括RxDMA的扩展的P4流水线也可以被称为Rx P4。扩展的P4流水线可以在P4流水线中包括相同的匹配+动作阶段,以及在流水线末端的有效负载DMA阶段。DMA阶段被配置成按顺序执行DMA命令。可以根据扩展的P4程序将分组分段或重新组装到数据缓冲器或存储器区域(例如,RDMA寄存器存储器)中。有效负载DMA阶段可以是P4扩展,其使可编程的P4网络流水线能够扩展到主机存储器系统和驱动程序接口。这个P4扩展允许定制数据结构和应用交互,以适应应用或容器的需要。
扩展的P4流水线的阶段可以包括多个可编程表,这些表可以存在于SRAM、NICDRAM或主机存储器中。主机存储器结构可以包括描述符环、SGL和控制数据结构,它们可以被读入到MPU的寄存器文件单元用于计算。MPU可以添加PHV命令来控制进出主机和NIC存储器的DMA操作,并将DMA命令插入到PHV中用于被有效负载DMA阶段执行。扩展的P4程序可以包括,例如,完成队列事件、中断、计时器设置和控制寄存器写入以及各种其他程序。
图4说明了用于以太网分组传输(即,Tx P4流水线)的示例性阶段扩展流水线。如示例中所示,阶段1的表引擎可以提取队列状态(例如,Q状态)表,用于被阶段1的MPU处理。在一些情况下,队列状态还可以包括基于队列对类型的指令偏移地址,以加速MPU处理。可以将其他分离的Tx P4程序写入,用于以太网Tx队列、RDMA命令队列或为特定应用定制的任何新类型的传输DMA行为。可以基于分配给每个队列对的硬件调度器资源来确定支持的Tx队列对的数量。如上所述,PHV可以通过每个阶段,在每个阶段中,关联的阶段单元可执行匹配+动作程序。最终阶段(例如,阶段5)的MPU可以将DMA命令插入到PHV中,用于被有效负载DMA阶段(例如,PDMA)执行。
图5和图6示出了根据本发明实施例的示例性Rx P4流水线500和Rx P4流水线600。Rx P4阶段和/或Tx P4阶段可以与本文中其他处描述的P4流水线阶段基本相似,有一些不同的特征。在一些情况下,扩展的P4阶段可以不使用TCAM资源,并且可以使用比P4阶段更少的SRAM资源。在一些情况下,通过在流水线末端具有有效负载DMA阶段,扩展的P4流水线可以包括与P4流水线不同的阶段数量。在一些情况下,扩展的P4流水线可以具有本地PHV再循环数据路径,该路径可以不使用分组缓冲器。
参考如图5中所示的Rx P4流水线(即,RxDMA P4流水线),Rx P4流水线可以包括多个阶段单元501-1、501-2、……501-n,每个阶段单元可以具有与图3中所述的阶段单元相同的物理块。Rx P4流水线中的阶段单元的数量可以或可以不与上述的P4流水线的阶段单元的数量相同。在示例中,分组可以从P4网络流水线传递到Rx P4流水线,该P4网络流水线可以包括P4转发、隔离、多播、L4安全和其他网络特征。
在一些实施例中,Rx P4流水线500可以包括被配置成生成RxDMA PHV的PHV分配器块503。例如,如RxDMA所需的PHV的元数据字段(例如,逻辑接口(LIF)ID)可以作为分组之前的连续字段块从P4网络流水线传递通过分组缓冲器。在进入RxDMA P4流水线的第一阶段之前,PHV分配器块503可以提取前置的元数据,并将其定位于RxDMA PHV中。PHV分配器块503可以维持当前在RxDMA流水线中的PHV的数量的计数,以及在流水线中的分组有效负载字节的数量的计数。在一些情况下,当PHV计数或总分组字节计数超过高水标时,PHV分配器块503可以停止接受来自分组缓冲器的新分组。这提供了确保从有效负载DMA块505再循环的分组具有被处理的优先级并离开流水线的好处。
Rx P4流水线可以包括被配置成控制相关事件之间的顺序的分组DMA块505。分组DMA块也可以称为有效负载DMA块。如上所述,有效负载DMA块可以包括有效负载DMA引擎。分组数据可以以先进先出的方式发送到分组DMA块505,以等待Rx P4流水线中创建的DMA命令。DMA命令可以由MPU创建,如本文中其他处所述。在Rx P4流水线末端的分组DMA块可以以DMA命令在PHV中放置的顺序来执行分组DMA写命令、DMA完成队列(CQ)写命令、中断断言写和门铃写。DMA命令可以被放置在PHV中的任何位置。在一些情况下,Rx P4流水线中生成的DMA命令可以被安排在连续的空间中,使得只要指示了第一个命令和最后一个命令,命令就可以按顺序执行。例如,第一个DMA命令可以由固有PHV字段指向,且随后的DMA命令可以被连续地放置在PHV中,其中最后一个DMA命令可以由另一个固有PHV字段指示。在一些情况下,可以不维持一些DMA命令之间的顺序。例如,可以不维持存储器到存储器命令和非存储器到存储器命令之间的顺序。这有助于防止存储器到存储器读取延迟阻塞分组处理命令。
参考如图6中所示的Tx P4流水线600,Tx P4流水线可以包括多个阶段单元601-1、601-2、……601-k,每个阶段单元可以具有与图5中所述的阶段单元相同的物理块。Tx P4流水线中的阶段单元的数量可以或可以不与上述的Rx P4流水线的阶段单元的数量相同。在示例中,可以使用Tx P4流水线从主机或NIC存储器来传输分组。Tx队列调度器可以选择下一个用于服务的队列,并将LIF、QID提交到Tx P4流水线的开始。
Tx P4流水线可以包括空PHV块603,其被配置来生成要由阶段0中的表引擎读取的地址。空PHV块603还可以向PHV的固有字段插入信息,如LIF或LIF类型。空PHV块603还可以将再循环的PHV,以及插入软件生成的PHV,从Tx P4流水线的最终阶段插入到流水线中。TxP4流水线可以包括分组DMA块605,类似于如图5中所述的分组DMA块。在一些实施例中,TxP4流水线中生成的DMA命令可以被安排在连续的空间中,使得只要指示了第一个命令和最后一个命令,命令就可以按顺序执行。
在一些实施例中,Tx DMA流水线、Rx DMA流水线和P4流水线可以能够在各自流水线的第一阶段前插入软件生成的PHV。软件可以使用生成的PHV来启动MPU程序,执行表更改,或者启动来自扩展的P4流水线的DMA命令。
在一个方面,可以提供包括Tx DMA流水线、Rx DMA流水线和P4流水线和其他组件的系统。系统可以支持基于扩展的P4流水线的主机接口特征(例如,DMA操作和循环),提供改进的网络性能(例如,具有减少的数据停顿的增加的MMPS),故障检测和隔离,基于P4的网络特征(例如,路由、桥接、隧道、转发、网络ACL、L4防火墙、基于流的速率限制、VLAN标签策略、隶属度、隔离、多播和组控制、标签推送/弹出操作、L4负载平衡,用于分析和特定于流的处理的L4流表、DDOS附加检测、抑制,在任何数据分组字段或流状态收集的遥测数据)、安全特征以及其他各种特征。
图7示出了根据本发明实施例的示例性系统700的框图。系统700作为实现P4和扩展的P4流水线以及各种其他功能以提供改进的网络性能的示例。如图中所示,系统700可以包括具有相干L1和L2缓存的四个高级RISC机器(ARM)处理器、共享的本地存储器系统、非易失性闪存、DMA引擎、以及用于操作和调试的各种输入输出设备。ARM处理器可以通过地址映射来观察和控制所有NIC资源。ARM处理器可以实现本文中他处描述的P4流水线和扩展的P4流水线。主机接口块也可以通过PCIe BAR映射来观察此地址空间的区域,以向主机公开NIC功能。在示例中,地址映射最初可以根据ARM存储器映射(ARM Limited,它给34位存储器映射提供SOC寻址指南)的原则来创建。
系统700中的所有存储器事务,包括主机存储器、高带宽存储器(HBM)和寄存器都可以通过基于来自外部系统的IP的相干的片上网络(NOC)来连接。NOC可以在NOC主机之间提供缓存相干互连,NOC主机包括P4流水线、扩展的P4流流水线、DMA、PCIe和ARM。互连可以使用可编程哈希算法将HBM存储器事务分布到多个(例如,16个)HBM接口上。所有的流量目标HBM可以存储在NOC缓存(例如,1MB缓存)中。NOC缓存可以保持与ARM缓存相干。NOC缓存可以用于聚合HBM写入事务,这些事务可以比缓存线小(例如,64字节的大小),因为在处理小的写入时HBM效率不高。NOC缓存可以具有高带宽,支持高达3.2Tb/s的操作,因为它面对1.6Tb/s HBM。
该系统可以是内部HBM存储器系统,用于运行Linux,存储大数据结构,如流表和其他分析,并提供缓冲资源用于高级功能,高级功能包括TCP终端和代理、深度分组检测,存储器卸载,和连接的FPGA功能。存储器系统可以包括HBM模块,取决于分组和HBM,HBM模块可以支持4GB容量或8GB容量。
应当注意,各种实施例可以与一个或多个类型的无线或有线通信信号和/或系统结合使用,例如,射频(RF)、红外(IR)、频分多路复用(FDM)、正交FDM(OFDM)、时分多路复用(TDM),时分多路访问(TDMA)、扩展的TDMA(E-TDMA)、通用分组无线业务(GPRS)、扩展的GPRS、码分多路访问(CDMA)、宽带CDMA(WCDMA)、CDMA 2000,多载波调制(MDM)、离散多音(DMT),ZigBeeTM等。本发明的实施例可用于各种其他设备、系统和/或网络。
虽然本文已经示出和描述了本主题的优选实施方式,但是对于本领域技术人员容易理解的是,这样的实施方案仅以举例的方式提供。在不脱离本发明的情况下,本领域技术人员现将想到许多变化、更改和替换。应该理解的是,本文所述主题的实施方案的各种替代方案可以在实施本发明中采用。
Claims (28)
1.一种用于处理分组的方法,包括:
a)接收包括报头部分和有效负载部分的分组,其中所述报头部分用于生成分组报头向量;
b)通过执行分组匹配操作来生成一表结果,其中至少部分基于存储在一匹配表中的数据和所述分组报头向量生成所述表结果,其中所述表结果包括表选择键,所述表选择键是基于所述分组报头向量的一个或多个字段生成的,并且其中所述表选择键用于驱动表哈希生成,其中哈希结果从所述分组报头向量的输入生成,并且所述哈希结果用于从DRAM或SRAM数组执行DMA读取,或者所述表选择键在SRAM查找前定向到TCAM搜索阶段;
c)在一匹配处理单元接收与所述匹配表相关联的一组指令的地址和所述表结果;以及
d)由所述匹配处理单元根据所加载的一组指令来执行一个或多个动作直到所述指令完成,其中所述一个或多个动作包括更改所述报头部分、更新基于存储器的数据结构并且/或者发起事件。
2.如权利要求1所述的方法,进一步包括将所更改的报头部分提供给后续电路,其中所述后续电路被配置成将所更改的报头部分组装到相应的有效负载部分。
3.如权利要求1所述的方法,其中执行分组匹配操作包括从存储在随机访问存储器(RAM)或三元内容可寻址存储器(TCAM)上的多个表中选择匹配表。
4.如权利要求3所述的方法,其中基于与分组类型有关的分组类型信息来选择所述匹配表,所述分组类型与所述报头部分相关联。
5.如权利要求3所述的方法,其中基于在用于处理所述分组的可编程流水线中的前一阶段选择的匹配表的ID来选择所述匹配表。
6.如权利要求1所述的方法,其中所述表结果包括与所述匹配表有关的键和匹配操作的匹配结果。
7.如权利要求1所述的方法,其中所述匹配处理单元的存储器单元被配置成存储多组指令。
8.如权利要求7所述的方法,其中所述多组指令中的每组指令与不同的动作相关联。
9.如权利要求7所述的方法,其中一组指令存储在所述存储器单元的连续区域中,并且所述连续区域由所述地址来标识。
10.如权利要求1所述的方法,其中所述一个或多个动作进一步包括更新所述匹配表。
11.如权利要求1所述的方法,进一步包括在所述匹配处理单元处理所述匹配表时,将所述匹配表锁定用于所述匹配处理单元的独占存取。
12.如权利要求1所述的方法,其中所述分组以无停顿的方式处理。
13.一种用于处理分组的装置,包括:
a)第一存储器单元,在该第一存储器单元上存储有多个程序,其中所述多个程序与多个动作相关联,所述多个动作包括更改分组的报头部分、更新基于存储器的数据结构、或者发起事件;
b)第二存储器单元,该第二存储器单元用于接收和存储一表结果,其中通过对包含在所述报头部分中的分组报头向量和存储在匹配表中的数据执行分组匹配操作来生成所述表结果,其中所述表结果包括表选择键,所述表选择键是基于所述分组报头向量的一个或多个字段生成的,并且其中所述表选择键用于驱动表哈希生成,其中哈希结果从所述分组报头向量的输入生成,并且所述哈希结果用于从DRAM或SRAM数组执行DMA读取,或者所述表选择键在SRAM查找前定向到TCAM搜索阶段;以及
c)电路,该电路用于响应于所述表结果和由所述装置接收的地址而执行从所述多个程序中选择的程序,其中执行所述程序直到完成,并且所述程序与所述匹配表相关联。
14.如权利要求13所述的装置,其中所述装置被配置成将所更改的报头部分提供给后续电路。
15.如权利要求14所述的装置,其中所述后续电路被配置成将所更改的报头部分组装到相应的有效负载部分。
16.如权利要求13所述的装置,其中所述表结果由一表引擎提供,所述表引擎包括用于从存储在随机访问存储器(RAM)或三元内容可寻址存储器(TCAM)上的多个表中选择一匹配表的电路。
17.如权利要求16所述的装置,其中基于与分组类型有关的分组类型信息来选择所述匹配表,该分组类型与所述报头部分相关联。
18.如权利要求16所述的装置,其中基于在用于处理所述分组的可编程流水线中的前一阶段选择的所述匹配表的ID来选择所述匹配表。
19.如权利要求13所述的装置,其中所述多个程序中的每一个都包括一组指令,所述指令存储在所述第一存储器单元的连续区域中,并且所述连续区域由所述地址来标识。
20.如权利要求13所述的装置,其中所述多个动作包括更新所述匹配表。
21.如权利要求13所述的装置,其中所述电路被进一步配置成在所述装置处理所述匹配表时,将所述匹配表锁定用于所述装置的独占存取。
22.如权利要求13所述的装置,其中所述事件与更改所述分组的报头部分无关。
23.如权利要求13所述的装置,其中所述基于存储器的数据结构包括以下中的至少一种:用于发起事件的管理令牌、管理命令、以及一个或多个处理令牌。
24.一种数据处理系统,包括多个如权利要求19所述的装置,其中多个所述装置被协调成根据配置并发地或顺序地执行所述一组指令或者所述多个动作。
25.如权利要求24所述的数据处理系统,其中所述配置由一应用指令确定,所述应用指令从可操作地与多个所述装置耦合的主机设备的主存储器接收。
26.如权利要求24所述的数据处理系统,其中多个所述装置被安排成根据阶段的流水线来处理所述分组。
27.如权利要求26所述的数据处理系统,其中所述流水线的最后阶段是DMA阶段。
28.如权利要求27所述的数据处理系统,其中所述DMA阶段被配置成按顺序执行DMA命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762582138P | 2017-11-06 | 2017-11-06 | |
US62/582,138 | 2017-11-06 | ||
PCT/US2018/059251 WO2019090247A1 (en) | 2017-11-06 | 2018-11-05 | Network system including match processing unit for table-based actions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111684769A CN111684769A (zh) | 2020-09-18 |
CN111684769B true CN111684769B (zh) | 2023-03-24 |
Family
ID=66333373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880084971.5A Active CN111684769B (zh) | 2017-11-06 | 2018-11-05 | 包括基于表的动作的匹配处理单元的网络系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11489773B2 (zh) |
EP (1) | EP3707864A4 (zh) |
CN (1) | CN111684769B (zh) |
CA (1) | CA3081591A1 (zh) |
WO (1) | WO2019090247A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3081591A1 (en) | 2017-11-06 | 2019-05-09 | Pensando Systems Inc. | Network system including match processing unit for table-based actions |
EP3756088A4 (en) * | 2018-02-22 | 2021-12-01 | Pensando Systems Inc. | PROGRAMMABLE COMPUTER WITH I / O DEVICE INTERFACE |
TWI774295B (zh) * | 2021-03-29 | 2022-08-11 | 瑞昱半導體股份有限公司 | 用於跨場域可編程邏輯閘陣列之資料傳輸控制的方法及相關設備 |
US11693664B2 (en) * | 2021-07-02 | 2023-07-04 | Pensando Systems Inc. | Methods and systems for distributing instructions amongst multiple processing units in a multistage processing pipeline |
CN113438252B (zh) * | 2021-07-08 | 2023-01-10 | 恒安嘉新(北京)科技股份公司 | 报文访问控制方法、装置、设备及存储介质 |
US11949604B2 (en) * | 2021-10-06 | 2024-04-02 | Inernational Business Machines Corporation | Integrated network switch operation |
CN114039894B (zh) * | 2021-12-23 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 一种基于矢量包的网络性能优化方法、系统、设备、介质 |
CN115086450B (zh) * | 2022-06-01 | 2023-11-17 | 珠海高凌信息科技股份有限公司 | 一种可编程数据平面装置、流表更新方法及交换机 |
TWI819976B (zh) * | 2023-03-15 | 2023-10-21 | 瑞昱半導體股份有限公司 | 封包辨識系統和封包辨識方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0528421A2 (en) * | 1991-08-20 | 1993-02-24 | Sony Corporation | Recording medium and information reading apparatus |
WO2001067237A2 (en) * | 2000-03-03 | 2001-09-13 | Tenor Networks, Inc. | High-speed data processing using internal processor memory space |
CN101770485A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 表项添加方法及装置和表项处理方法、装置及系统 |
CN103999431A (zh) * | 2011-12-22 | 2014-08-20 | 瑞典爱立信有限公司 | 软件定义的网络中灵活的并且可扩展的流处理系统 |
CN106547709A (zh) * | 2016-11-24 | 2017-03-29 | 盛科网络(苏州)有限公司 | 灵活配置多通道dma控制器的方法及装置 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157955A (en) | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US7215637B1 (en) | 2000-04-17 | 2007-05-08 | Juniper Networks, Inc. | Systems and methods for processing packets |
US6483699B1 (en) | 2000-07-20 | 2002-11-19 | Silicon Graphics, Inc. | Baffle system for air cooled computer assembly |
US8010469B2 (en) | 2000-09-25 | 2011-08-30 | Crossbeam Systems, Inc. | Systems and methods for processing data flows |
US6985988B1 (en) | 2000-11-09 | 2006-01-10 | International Business Machines Corporation | System-on-a-Chip structure having a multiple channel bus bridge |
US7035948B1 (en) | 2001-03-19 | 2006-04-25 | Transdimension, Inc. | System and method for USB controllers |
US7028098B2 (en) | 2001-07-20 | 2006-04-11 | Nokia, Inc. | Selective routing of data flows using a TCAM |
US7418536B2 (en) * | 2001-07-30 | 2008-08-26 | Cisco Technology, Inc. | Processor having systolic array pipeline for processing data packets |
US20030229738A1 (en) | 2002-06-05 | 2003-12-11 | Dactron | Controller interface |
US6906920B1 (en) | 2003-09-29 | 2005-06-14 | Google Inc. | Drive cooling baffle |
US7304996B1 (en) * | 2004-03-30 | 2007-12-04 | Extreme Networks, Inc. | System and method for assembling a data packet |
US7975094B2 (en) | 2004-04-15 | 2011-07-05 | Marvell International Technology Ltd. | Programmable I/O interface |
US7567567B2 (en) | 2005-04-05 | 2009-07-28 | Sun Microsystems, Inc. | Network system including packet classification for partitioned resources |
JP2007124495A (ja) | 2005-10-31 | 2007-05-17 | Nec Electronics Corp | ストリームデータ処理装置 |
US7809009B2 (en) * | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
GB2443277B (en) | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US20080101016A1 (en) | 2006-10-31 | 2008-05-01 | Michael Brooks | Airflow baffle for a computer system |
US8493979B2 (en) | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
US8743877B2 (en) | 2009-12-21 | 2014-06-03 | Steven L. Pope | Header processing engine |
JP5753372B2 (ja) * | 2009-12-22 | 2015-07-22 | キヤノン株式会社 | データ処理装置およびその制御方法 |
US8611352B2 (en) | 2010-04-20 | 2013-12-17 | Marvell World Trade Ltd. | System and method for adapting a packet processing pipeline |
US9680750B2 (en) * | 2010-07-06 | 2017-06-13 | Nicira, Inc. | Use of tunnels to hide network addresses |
US8913613B2 (en) | 2011-02-16 | 2014-12-16 | Oracle International Corporation | Method and system for classification and management of inter-blade network traffic in a blade server |
US20140025852A1 (en) | 2012-07-19 | 2014-01-23 | Lsi Corporation | Configurable Response Generator for Varied Regions of System Address Space |
CN103905311B (zh) * | 2012-12-28 | 2017-02-22 | 华为技术有限公司 | 流表匹配方法和装置以及交换机 |
US9906445B2 (en) | 2013-02-01 | 2018-02-27 | Texas Instruments Incorporated | Packet processing match and action pipeline structure with dependency calculation removing false dependencies |
US9712439B2 (en) | 2013-02-28 | 2017-07-18 | Texas Instruments Incorporated | Packet processing match and action unit with configurable memory allocation |
US10645032B2 (en) | 2013-02-28 | 2020-05-05 | Texas Instruments Incorporated | Packet processing match and action unit with stateful actions |
US9826067B2 (en) | 2013-02-28 | 2017-11-21 | Texas Instruments Incorporated | Packet processing match and action unit with configurable bit allocation |
US9674087B2 (en) | 2013-09-15 | 2017-06-06 | Nicira, Inc. | Performing a multi-stage lookup to classify packets |
US9891898B1 (en) | 2015-06-04 | 2018-02-13 | Netronome Systems, Inc. | Low-level programming language plugin to augment high-level programming language setup of an SDN switch |
US9826071B2 (en) * | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Configuring a switch for extracting packet header fields |
US10523764B2 (en) | 2015-09-24 | 2019-12-31 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US9912610B2 (en) * | 2015-09-24 | 2018-03-06 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US9923816B2 (en) * | 2015-09-24 | 2018-03-20 | Barefoot Networks, Inc. | Data-plane stateful processing units in packet processing pipelines |
US10511523B1 (en) * | 2017-05-15 | 2019-12-17 | Barefoot Networks, Inc. | Network forwarding element with data plane packet snapshotting capabilities |
US10313495B1 (en) * | 2017-07-09 | 2019-06-04 | Barefoot Networks, Inc. | Compiler and hardware interactions to remove action dependencies in the data plane of a network forwarding element |
US10826840B1 (en) * | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US10721167B1 (en) * | 2017-10-09 | 2020-07-21 | Barefoot Networks, Inc. | Runtime sharing of unit memories between match tables in a network forwarding element |
CA3081591A1 (en) | 2017-11-06 | 2019-05-09 | Pensando Systems Inc. | Network system including match processing unit for table-based actions |
EP3756088A4 (en) * | 2018-02-22 | 2021-12-01 | Pensando Systems Inc. | PROGRAMMABLE COMPUTER WITH I / O DEVICE INTERFACE |
US10997106B1 (en) | 2020-09-22 | 2021-05-04 | Pensando Sytems Inc. | Inter-smartNIC virtual-link for control and datapath connectivity |
-
2018
- 2018-11-05 CA CA3081591A patent/CA3081591A1/en active Pending
- 2018-11-05 CN CN201880084971.5A patent/CN111684769B/zh active Active
- 2018-11-05 US US16/761,659 patent/US11489773B2/en active Active
- 2018-11-05 EP EP18873802.5A patent/EP3707864A4/en active Pending
- 2018-11-05 WO PCT/US2018/059251 patent/WO2019090247A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0528421A2 (en) * | 1991-08-20 | 1993-02-24 | Sony Corporation | Recording medium and information reading apparatus |
WO2001067237A2 (en) * | 2000-03-03 | 2001-09-13 | Tenor Networks, Inc. | High-speed data processing using internal processor memory space |
CN101770485A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 表项添加方法及装置和表项处理方法、装置及系统 |
CN103999431A (zh) * | 2011-12-22 | 2014-08-20 | 瑞典爱立信有限公司 | 软件定义的网络中灵活的并且可扩展的流处理系统 |
CN106547709A (zh) * | 2016-11-24 | 2017-03-29 | 盛科网络(苏州)有限公司 | 灵活配置多通道dma控制器的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111684769A (zh) | 2020-09-18 |
WO2019090247A1 (en) | 2019-05-09 |
EP3707864A4 (en) | 2021-08-18 |
CA3081591A1 (en) | 2019-05-09 |
US11489773B2 (en) | 2022-11-01 |
EP3707864A1 (en) | 2020-09-16 |
US20200336425A1 (en) | 2020-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111684769B (zh) | 包括基于表的动作的匹配处理单元的网络系统 | |
US11263158B2 (en) | Programmable computer IO device interface | |
US8321385B2 (en) | Hash processing in a network communications processor architecture | |
US11588734B2 (en) | Systems for providing an LPM implementation for a programmable data plane through a distributed algorithm | |
US11907751B2 (en) | Resource fairness enforcement in shared IO interfaces | |
US11294841B1 (en) | Dynamically configurable pipeline | |
US10944696B2 (en) | Variable-length packet header vectors | |
US11258707B1 (en) | Systems for building data structures with highly scalable algorithms for a distributed LPM implementation | |
CA3167334C (en) | Zero packet loss upgrade of an io device | |
US20230139762A1 (en) | Programmable architecture for stateful data plane event processing | |
Pacífico et al. | Application layer packet classifier in hardware | |
US20220166718A1 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
US11552907B2 (en) | Efficient packet queueing for computer networks | |
US9195464B2 (en) | Tracking written addresses of a shared memory of a multi-core processor | |
US10680977B1 (en) | Splitting data into an information vector and a control vector and processing, at a stage of a control pipeline, the control vector and a data block of the information vector extracted from a corresponding stage of a data pipeline | |
Akbari et al. | Packet Reordering Algorithms in Multi-core Network Processors | |
Addepalli | Embedded Software for Networking Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |