CN110958215A - 安全的在线接收的网络分组处理 - Google Patents
安全的在线接收的网络分组处理 Download PDFInfo
- Publication number
- CN110958215A CN110958215A CN201910913261.5A CN201910913261A CN110958215A CN 110958215 A CN110958215 A CN 110958215A CN 201910913261 A CN201910913261 A CN 201910913261A CN 110958215 A CN110958215 A CN 110958215A
- Authority
- CN
- China
- Prior art keywords
- packet
- decryption
- processor
- circuit
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0485—Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
网络处理器提供对接收和传输的分组的在线加密和解密。针对分组传输,处理器核心生成用于加密的分组数据,并将加密指令转发给密码单元。密码单元生成经加密的分组,并将发送描述符排队到网络接口控制器,然后由接口控制器构造并传输传出分组。针对接收的经加密的分组,网络接口控制器与密码单元通信以在将工作排队到处理器核心之前解密该分组,从而为处理器核心提供经解密的分组。
Description
技术领域
开放系统互联(OSI)参考模型定义了用于在传输介质上通信的七个网络协议层(L1-L7)。上层(L4-L7)表示端到端通信并且下层(L1-L3)表示本地通信。
背景技术
网络应用感知系统操作处理、过滤和切换一系列L3到L7网络协议层,例如,L7网络协议层(诸如,超文本传输协议(HTTP)和简单邮件传输协议(SMTP),以及L4网络协议层(诸如传输控制协议(TCP))。除了处理网络协议层之外,网络应用感知系统需要通过L4-L7网络协议层(包括防火墙、虚拟专用网络(VPN)、安全套接字层(SSL)、入侵检测系统(IDS)、互联网协议安全(IPsec)、线速的反病毒(AV)和反垃圾邮件功能)同时利用基于访问和内容的安全性来保护这些协议。尤其是IPsec,是用于通过使用密码安全服务在IP网络上提供安全通信的标准框架。IPsec支持网络级对等认证、数据完整性、数据源认证、数据加密和重播保护。
在当今的互联网世界中,提高网络操作的效率和安全仍然是互联网用户的最终目标。访问控制、业务工程、入侵检测和许多其他网络服务需要基于分组报头的多个字段来区分分组,这称为分组分类。
典型的网络处理器调度和排队工作,诸如用于上层网络协议的分组处理操作,并且允许在将分组转发到连接的设备之前,对接收的分组中的上层网络协议(例如,传输层和应用层)进行处理。网络处理器通常执行的功能包括分组过滤、队列管理和优先级、服务执行质量和访问控制。通过采用特定于处理分组数据的功能,网络处理器可以优化网络设备的接口。
发明内容
示例实施例包括网络服务处理器,该网络服务处理器被配置为通过安全通信信道(诸如IPsec信道)来传输和接收分组。在一个实施例中,网络服务处理器可以包括网络解析器、网络接口控制器、密码引擎和分组处理器。网络解析器可以被配置为根据分组的分组报头确定加密状态,其中该加密状态指示该分组是否为用于解密的候选。网络接口控制器可以被配置为创建工作队列条目,该工作队列条目指示分组处理被需要用于该分组。控制器还可以基于加密状态选择性地转发解密命令。作为解密引擎操作的密码单元可以被配置为响应于解密命令解密该分组,并且生成经解密的分组。分组处理器可以被配置为基于工作队列条目处理该分组,其中分组处理器根据加密状态访问该分组或该经解密的分组。
另外的实施例可以包括网络处理器,该处理器包括分组处理器、密码单元和网络接口控制器。分组处理器可以被配置为生成分组并且选择性地为该分组生成加密指令。响应于加密指令,作为加密引擎操作的密码单元可以被配置为:1)加密分组以生成经加密的分组,以及2)转发经加密的分组和发送描述符。网络接口控制器可以被配置为基于从加密引擎接收的发送描述符来根据经加密的分组构造传出分组。
附图说明
通过以下对示例实施例的更具体描述,如在附图中所示,前述内容将变得显而易见,在附图中,相似的附图标记在不同的视图中指代相同的部分。附图不必按比例绘制,而是强调说明实施例。
图1是示出其中可以实现本发明的实施例的网络服务处理器的框图。
图2是图1的网络服务处理器的联网和输入输出部分的框图。
图3是在一个实施例中操作以传输分组的组件的框图。
图4是一个实施例中的分组传输操作的流程图。
图5是在一个实施例中操作以接收分组的组件的框图。
图6是一个实施例中的分组接收操作的流程图。
图7A-图7C示出了在示例实施例中实现的数据条目。
图8是在另外的实施例中操作以接收分组的组件的框图。
具体实施方式
以下是对示例实施例的描述。
图1是示出网络服务处理器100的框图。网络服务处理器100可以处理封装在接收的分组中的开放系统互联网络L2-L7层协议。如本领域技术人员所公知的,开放系统互联(OSI)参考模型定义了七个网络协议层(L1-L7)。物理层(L1)表示将设备连接到传输介质的电气和物理的实际接口。数据链路层(L2)执行数据成帧。网络层(L3)将数据格式化为分组。传输层(L4)处理端对端传输。会话层(L5)管理设备之间的通信,例如,通信是半双工还是全双工。表示层(L6)管理数据格式化和表示,例如,语法、控制代码、特殊图形和字符集。应用层(L7)允许用户之间的通信,例如,文件传输和电子邮件。
网络服务处理器100可以为上层网络协议(例如L4-L7)调度和排队工作(分组处理操作),并且允许对接收的分组中的上层网络协议执行处理以线速转发分组。线速是在其上传输和接收数据的网络的数据传输的速率。通过处理协议以线速转发分组,网络服务处理器不会降低网络数据传输速率。
接口单元122接收分组以进行处理。接口单元122通过检查包括在接收的分组中的网络协议报头(例如,L2、L3和L4报头)中的各个字段来执行对接收的分组的预处理,并且可以对TCP/用户数据报协议(UDP)(L3网络协议)执行校验和检查。接口单元122可以经由多个网络接口协议(诸如以太网和外围组件互连快速(PCIe))接收分组。在另外的实施例中,接口单元122可以被配置为从多个X附接单元接口(XAUI)、减少的X附接单元接口(RXAUI)、串行千兆媒体独立接口(SGMII)、40GBASE-R、50GBASE-R、和/或100GBASE-R接收分组。接口单元122还可以经由上述接口中的一个或多个来准备并传输传出分组。
然后,接口单元122可以将分组数据写入最后一级高速缓存和控制器(LLC)130或外部DRAM 108中的缓冲区。分组数据可以以便于在至少一个ARM处理器核心120中执行的高层软件的格式被写入到缓冲区。因此,促进了高层网络协议的进一步处理。
网络服务处理器100还可以包括一个或多个专用协处理器。当包括这些协处理器时,这些协处理器从核心120卸载了一些处理,从而使得网络服务处理器能够实现高吞吐量的分组处理。例如,提供专用于执行对接收的分组的压缩/解压缩的压缩/解压缩协处理器132。
I/O桥138被配置为管理整个协议和仲裁,并且利用I/O总线142提供一致I/O分配。I/O桥138可以包括缓冲区队列,该缓冲区队列用于存储要在一致存储器互连(CMI)144、I/O总线142和接口单元122之间传输的信息。I/O桥138可以包括多个单独的桥,可在其上分布通信和仲裁。
其他I/O接口(MIO)116可以包括辅助接口,诸如通用I/O(GPIO)、闪存、IEEE 802双线管理数据I/O接口(MDIO)、串行管理接口(SMI)、通用异步收发器(UART)、两线串行接口(TWSI)和其他串行接口。
调度/同步和顺序(SSO)模块148排队并调度处理器核心120的工作。通过将工作队列条目添加到队列来排队工作。例如,接口单元122为每个分组到达添加工作队列条目。定时器单元150用于调度处理器核心120的工作。
处理器核心120从SSO模块148请求工作。SSO模块148为处理器核心120中的一个选择(例如调度)工作,并且将指向描述该工作的工作队列条目的指针返回给处理器核心120。
处理器核心120依次包括指令高速缓存152、1级数据高速缓存154。在一个实施例中,网络服务处理器100包括24个ARM处理器核心120。在一些实施例中,每个ARM处理器核心120可以是ARMv8.2的64比特体系结构的实现,并且可以与ARMv8.2软件生态系统兼容并且包括硬件浮点数、SIMD和MMU支持。在这样的实施例中,与ARMv8.2体系结构一致,核心120可以包含对虚拟化的完整硬件支持。客户操作系统因此可以在ARM定义的用户和操作系统特权级别上运行,而管理程序软件可以在单独的更高特权级别中运行。核心120还可以支持安全状态,在安全状态中软件可以以三种不同的特权级别运行,而硬件提供与非安全状态的隔离。
最后一级高速缓存和控制器(LLC)130和外部DRAM 108由所有处理器核心120和I/O协处理器设备共享。每个处理器核心120通过CMI 144耦合到LLC 130。CMI 144是用于处理器核心120、I/O桥138和LLC 130之间的所有存储器和I/O事务的通信信道。在一个实施例中,CMI 144可扩展到多个(例如,24个)处理器核心120,支持完全一致的带有直写(writethrough)模式的1级数据高速缓存154。CMI 144可以被高度缓冲以具有对I/O进行优先化的能力。
LLC 130的控制器保持存储器参考一致性。无论块是存储在LLC 130中、外部DRAM108中还是“正在运行中”,它都为每个填充请求返回该块的最新副本。多个DRAM控制器133支持外部DRAM 108,并且可以支持优选协议,诸如DDR4协议。
在分组已经被处理器核心120处理之后,接口单元122从LLC 130、DRAM 108读取分组数据,执行L4网络协议后处理(例如,生成TCP/UCP校验和),通过接口单元122转发分组并且释放由分组使用的LLC 130/DRAM 108。DRAM控制器133管理去往/来自DRAM108的正在运行中的事务(加载/存储)。
资源虚拟化单元(RVU)162可以使得软件能够将各个模块中的各种本地功能(LF)资源映射为若干物理功能(PF)和虚拟功能(VF)。这使得多单元软件驱动程序可以与Linux、Windows和DPDK兼容。A Bose Chaudhuri Hocquenghem单元(BCH)146可以实现BCH循环纠错码,该BCH循环纠错码能够校正数据块内的许多错误。BCH 146可以加速奇偶生成和纠错功能两者。
管理模块126可以包括用于管理网络服务处理器100的操作的各种单元。例如,管理模块126可以包括温度传感器、用于确定电流性能和能量消耗的电源串行总线主接口,以及用于检测和报告存储器错误的存储器诊断控制器。模块126可以进一步包括控制处理器,诸如用于功率管理和其他安全芯片管理任务的系统控制处理器,以及用于模块管理和其他非安全芯片管理任务的模块控制处理器。
图2是接口单元122的更详细的框图。收发器模块290根据一种或多种通信协议(诸如PCIe、以太网和SATA)传输和接收信号。包括PCI快速接口单元(PEM0-PEM3)、SATA接口单元(SATA)和以太网I/O控制器(CGX0-CGX2)的接口模块285根据它们各自的协议处理接收的和传出的信号。网络控制器边带接口(NCSI)单元276为NCSI总线277提供接口和协议控制器,其提供来自/去往CGX接口模块285的网络分组数据。
网络接口单元(NIX)210提供控制器和直接存储器访问(DMA)引擎来处理和移动网络分组。NIX 210向前述接口285传输分组并且从前述接口285接收分组,并且与SSO模块148通信以调度核心120的工作以进一步处理分组。NIX还可以与核心120通信以代替SSO148转发工作,并且可以从核心120接收分组以进行传输。图1中所示的核心120可以包括诸如图2中所示的ARM处理器220的处理器。NIX可以包括传输子单元(NIX-TX)和接收子单元(NIX-RX),以及回路模块(LBK)272使得由NIX-TX传输的分组能够被环回并且由NIX-RX接收。
NIX 210与多个协处理器一起操作。特别地,网络解析器CAM单元(NPC)212解析为NIX接收或从NIX传输的网络分组。网络池分配器单元(NPA)214可以分配和释放用于分组、工作队列条目、发送描述符缓冲区的指针,并且可以支持与虚拟化方案的集成。如上所述,SSO 148调度用于NIX分组的工作队列条目。密码加速器单元(CPT)230可选地解密由NIX210接收的互联网协议安全(IPsec)分组,并且可以加密传出分组的数据。数据高速缓存(NDC0-NDC1)216是由NIX 210和NPA 214使用的公共数据高速缓存块。
图3是在创建和传输传出分组时实现的网络服务处理器100的组件子集的简化框图。ARM处理器220生成用于传输的分组数据。如果分组将被加密,则CPT 230在将分组数据转发到NIX 210之前加密该分组数据。否则,ARM处理器220可以将未加密的分组数据直接转发到NIX 210。然后,NIX 210组装传出分组(例如,通过给格式化数据、添加分组报头或其他元数据等),并且传输该传出分组。
在诸如提供IPsec加密的那些先前的网络加密技术下,发起分组数据的处理器与加密电路和接口控制器重复通信。例如,处理器可以将加密指令转发给加密电路,并且加密电路可以将经加密的分组返回给处理器。然后,处理器可以将经加密的分组转发给接口控制器,以组装成传出分组。与未经加密的分组的传输相比,这种方法涉及处理器的附加工作,并且组件之间的附加通信会减慢分组的传输并降低网络处理器的效率。
示例实施例提供了用于网络处理器中传输分组的在线加密。参考图3,ARM处理器220可以生成用于加密的分组数据,然后将加密指令转发给CPT 230。然后,CPT加密分组,并将经加密的分组以及用于组装各个传出分组的指令转发给NIX 210。因此,ARM处理器220可以提供每分组的单个通信,而不管该分组是否要被加密,并且不需要进一步涉及通信之后的分组。因此,要加密的分组被处理以串联通过模块220、230、210,与未经加密的分组的处理并行(调用CPT 230除外)。结果,减少了到ARM处理器220的工作负载,并且最小化了模块220、230、210之间的通信,从而提高了网络处理器的效率和延迟。
图4是生成和传输经加密的传出分组的示例过程400的流程图。参考图3,ARM处理器220可以生成分组(405),并将该分组连同对应的发送描述符一起存储到LLC 130或其他存储器。发送描述符也可以由NDC 216缓存。发送描述符为NIX 210提供指令以构造包含相应分组的传出分组。例如,发送描述符可以包括1)用以生成传出分组的分组报头的指令,2)附接到分组报头的信息,3)用于将一个大分组分解为多个较小的分组的指令,4)计算并将校验和插入到传出分组中的指令,5)以特定方式对分组进行着色、成形、监管和/或标记的指令,和/或其他信息或指令。然后,ARM处理器220可以为CPT 230生成加密指令以加密分组(415)。加密指令可以指导CPT 230根据给定的加密协议(诸如IPsec)来加密分组。加密指令还可以包括指向发送描述符的指针,从而使得CPT 230能够在不由ARM处理器220采取进一步动作的情况下指导NIX 210。因此,CPT 230可以通过解析来自ARM处理器220的加密指令来确定指向发送描述符的指针。
CPT 230相应地加密分组(415),并且可以将对应的经加密的分组存储到LLC 130或其他存储器(418)。然后,CPT 230可以使发送描述符入队以供NIX 210处理(420)。当CPT230使发送描述符入队时,它可以首先从存储器中读取发送描述符,然后将其发送到NIX210。NIX 210可能负责使从CPT 230接收的发送描述符入队。该动作可能涉及在NDC 216处缓存发送描述符。该发送描述符可以由ARM软件创建,并且可以保持不被CPT 230或NIX 210修改。
可选地,CPT 230可以通过将发送描述符指针转发到NIX 210,或者通过更新NIX210的分组队列来使发送描述符入队。为了指导NIX 210访问经加密的分组,CPT 230可以修改发送描述符(或发送描述符指针)以标识经加密的分组的地址。例如,CPT 230可以添加新的指向发送描述符的指针,或者可以重写指向未经加密的分组的指针,利用指向经加密的分组的指针替换它。备选地,CPT 230可以将经加密的分组写到与未经加密的分组相同的地址,以覆盖未经加密的分组。在另一备选方案中,CPT 230可以将发送描述符指针与指向经加密的分组的指针相关联,将这两个指针转发到NIX 210。
NIX 210在接收到发送描述符时,可以读取发送描述符并根据发送描述符中的指令来构造传出分组(425)。基于如上述由CPT 230提供的信息,NIX 210还可以访问经加密的分组以将其合并到传出分组中。如果分组适当地大,则NIX 210可以构造与该分组向对应的多个传出分组。NIX 210可以按顺序传输传出分组(430),并且可以在传输之后将各个分组缓冲区释放给NPA。
CPT 230可以进一步被配置为管理加密操作和工作流程。例如,如果当CPT 230在加密分组时遇到错误,则其可以避免加密分组,而可以与SSO 148(图1-2)通信来使工作入队以解决该错误,和/或可以引起中断。响应于中断或SSO指令,ARM处理器220可以确定进一步的动作来解决该错误。此外,CPT 220可以管理CPT工作队列(例如,加密和/或解密请求)。在使CPT指令入队之前,CPT 220和/或ARM处理器220可以确认CPT队列不会溢出。ARM处理器220可以操作被配置为避免溢出CPT队列和NIX发送队列的软件。针对NIX发送队列的情况,NPA 214可以利用有效描述NIX发送队列占用率的信息来使LLC/DRAM位置保持最新。针对CPT队列情况,CPT 220可以利用队列占用率来使LLC/DRAM位置保持最新。在决定加入CPT队列和/或NIX发送队列之前,ARM软件可以查阅这些LLC/DRAM位置。
在进一步的实施例中,CPT可以监测CPT队列和由NIX 210为传出分组实现的队列两者的状态,诸如NPA缓冲区214。在NIX 210处将分组入队之前,CPT 230可以检查NPA 240的状态以验证缓冲区容量。CPT可以避免将分组入队,直到它验证缓冲区容量为止,从而防止了溢出错误。在另外的实施例中,CPT 230和NIX 210中的一个或两者可以向上游模块发出反压命令以防止溢出。例如,NIX 230可以向CPT 230发出反压命令,从而使CPT 230避免使另外的发送描述符入队。反压命令可以是直接通信,或者可以通过将当前队列大小写入存储器来传达。
图5是在接收和处理分组中实现的网络服务处理器100的组件子集的简化框图。NPC 212解析接收到的分组的分组报头,并提供NPC结果。NPC结果提供了用于处理分组的信息,并且特别地标识分组是否为用于解密的候选。用于解密的候选可以由分组的一个或多个属性(诸如IP地址)确定,或者可以由分组是否是IPsec分组确定。例如,NPC 212可以将候选资格限制为源自给定IP地址的IPsec分组。针对满足标准的分组,NPC 212可以将标签与NPC结果相关联,以指示其为用于解密的候选。为了处理分组数据,NIX 210经由SSO 148调度ARM处理器的工作。如果分组将被解密,则CPT 230在将分组数据转发到SSO 148之前解密该分组数据。否则,NIX 210可以将未经加密的分组数据直接转发到SSO 128。SSO 148管理工作队列来调度ARM处理器220的工作,并且ARM处理器220根据对应的队列条目来处理分组,诸如工作队列条目(WQE)。
在诸如提供IPsec协议的那些先前的网络解密技术下,接收经加密的分组的处理器与解密电路和接口控制器重复通信。例如,处理器可以首先从接口控制器接收经加密的分组。因为处理器不能处理经加密的数据,所以它必须将加密指令转发到解密电路,并且解密电路可以将经解密的分组返回给处理器。然后,处理器可以访问经解密的分组数据,并按照指示处理经解密的数据。与接收未经加密的分组相比,这种方法涉及处理器的附加工作,并且组件之间的附加通信会减慢分组的接收并降低网络处理器的效率。
示例实施例提供了在网络处理器中对接收的分组的在线解密。参照图5,NIX 210确定接收的分组是否为用于解密的候选(基于NPC结果),如果是,则其将解密指令转发给CPT 230。然后,CPT解密分组,并在SSO 148处更新WQE以指示经解密的分组。因此,ARM处理器220从经解密(或未经加密)的分组开始工作分配,并且不需要与CPT 230通信以解密分组。因此,要解密的分组被处理以串联通过模块212、210、230、148、220,与未经加密的分组的处理并行(调用CPT 230除外)。结果,减少了到ARM处理器220的工作负载,并且最小化了模块220、230、210之间的通信,从而提高了网络处理器的效率和延迟。
图6是接收和处理分组的示例过程600的流程图。参考图5,NPC 212解析接收的分组的分组报头,并生成NPC结果,该NPC结果指示分组是否是用于解密的候选(605、610)。为了处理分组数据,NIX 210为SSO 148创建WQE以将工作分配给ARM处理器220(620)。针对不是用于解密的候选的分组,NIX 210可以将WQE入队到SSO 148,SSO 148调度WQE(640)。SSO148可以在其工作队列中保持WQE工作队列指针(WQP),该工作队列指针是指向WQE的指针。当WQP在工作队列的顶部时,SSO可以将WQP转发到ARM处理器220,以根据WQE处理经解密的分组(645)。
针对是用于解密的候选的分组,CPT 230可以在其解密分组之后在SSO 148处使WQE入队,从而保持顺序并防止错误。备选地,NIX 210可以使WQE入队,但是避免这样做直到分组被解密之后。在此期间,WQE可以被存储到存储器(例如,LLC 130或NDC 216)。为了解密该分组,NIX 210生成解密命令并将其转发到CPT 230(625)。
然后,CPT 230可以解密分组,将经解密的分组写入到存储器(例如,LLC 130或DRAM 108)(630)。解密之后,CPT 230可以从存储器访问WQE并基于解密结果更新它(635)。例如,CPT 230可以通过添加关于分组是否被成功解密的指示符以及指向经解密的分组的指针来修改WQE。它还可以利用指向经解密的分组的指针覆盖指向经加密的分组的指针。备选地,CPT 230可以将经解密的分组写入到与经加密的分组相同的地址,以覆盖经加密的分组,并且使WQE能够不经修改地进行。在另外的备选方案中,CPT 230可以将WQE与指向经解密的分组的指针相关联,而无需修改WQE本身,其中SSO可以同时管理WQE和指针。
一旦分组被解密并且相应地更新了WQE,CPT 230就可以使WQE入队到SSO 148,SSO148调度WQE(640)。SSO 148可以经由工作队列指针(WQP)将WQE保持在其工作队列中,该工作队列指针是指向WQE的指针。当WQP在工作队列的顶部时,SSO可以将WQP转发到ARM处理器220以根据WQE来处理经解密的分组(645)。
图7A-图7C示出了在示例实施例中实现的数据条目。图7A示出了示例WQP 701,图7B示出了示例WQE 702,并且图7C示出了示例加密结果(CPT结果)703。如上所述,再次参考图5-图6,SSO单元148通过将WQP 701添加到队列来排列每件工作。WQP 701包括指向LLC/DRAM中对应的WQE 702的地址,以及使SSO 148能够标识和调度对应的WQE 702的报头。例如,WQP 701报头可以指示与每件工作相对应的组、标签类型和标签,并且还可以指示对应的分组是否是用于解密的候选。
SSO单元148可以通过将WQP 701保持到每个WQE 702来管理工作。当核心可以用于处理新工作时,SSO 148可以存储WQP 701并且使用该指针。当WQP 701在SSO单元148内部时,SSO单元148可以在所有位置携带WQP 701,因为WQP 701间接地描述了需要执行的实际工作。然后,当WQP 701可以用于处理工作时,SSO 148可以将WQP 701传送到核心(例如,ARM处理器220)。
在LLC/DRAM中,WQE 702是描述每件工作的主要描述符。WQE可以由如上所述的NIX210创建,并且可以包含几个字段。这些字段的选择在图7B中示出。WQE报头可以包括如上所述的WQE报头中存在的相同信息。WQE报头还可以指示是否将对应的分组转发到CPT 230以进行解密。备选地,WQE可以包含另一个条目,指示发送到CPT 230的解密指令。WQE还包含工作描述,以及指向存储器(例如,LLC 130或DRAM 108)中的对应的分组的指针。
CPT结果703可以包括对解密结果的指示。解密结果可以指示解密是否成功,以及关于解密或经解密的分组的其他信息。CPT结果703可以可选地包括提供标识信息的报头。此外,如果经解密的分组被写入到与经加密的分组不同的位置,则CPT结果703还可以包含指向存储器中的经解密的分组的指针。在得到CPT结果703时,CPT 230可以通过将解密结果和/或指向经解密的分组的指针写入对应的WQE 702来更新对应的WQE 702。备选地,CPT230可以放弃生成正式的CPT结果,而是通过向其写入指针和/或解密结果来直接修改WQE。
图8是在备选实施例中在接收和处理分组中实现的网络服务处理器100的组件子集的简化框图。除了SSO 148被完成队列(CQ)812替换之外,该配置可以以与以上参考图5-图6描述的配置类似的方式操作。CQ 812可能不同于SSO 148,因为它可以是由NIX 210管理的更简单的队列,并且可能缺少SSO 148的某些调度和同步功能。例如,CQ 812可以是NIX210的一个组件,并且可以包含用于分组处理工作的单个队列或多个队列。NIX 210可以通过按照接收分组的顺序将分组条目添加到CQ 812来保持工作的正确顺序,然后根据CQ 812将工作转发到ARM处理器220。如本文所述,WQE的实施例可以用CQ 812代替SSO来实现。在这样的实施例中,WQE可以用作指示相应的分组需要处理的指示符,并且可以省略SSO 148利用的一些特征,诸如用于处理分组的特定指令。
尽管已经具体地示出和描述了示例实施例,但是本领域技术人员将理解,可以在不脱离所附权利要求所涵盖的实施例的范围的情况下在其中进行形式和细节上的各种改变。
Claims (13)
1.一种电路,包括:
网络解析器,被配置为根据分组的分组报头确定加密状态,所述加密状态指示所述分组是否是用于解密的候选;
网络接口控制器,被配置为创建队列条目,所述队列条目指示分组处理是否被需要用于所述分组,所述网络接口被配置为基于所述加密状态选择性地转发解密命令;
解密引擎,被配置为响应于所述解密命令来解密所述分组,并且生成经解密的分组;以及
分组处理器,被配置为基于所述队列条目处理所述分组,所述分组处理器根据所述加密状态访问所述分组和所述经解密的分组中的一个分组。
2.根据权利要求1所述的电路,其中所述解密引擎进一步被配置为:根据所述加密状态选择性地生成所述队列条目的一部分,所述部分包括指示所述经解密的分组的位置的解密结果。
3.根据权利要求2所述的电路,其中所述分组处理器进一步被配置为:基于所述队列条目在存储器中定位所述分组,所述处理器1)基于所述解密结果定位所述经解密的分组,或2)定位所述分组。
4.根据权利要求1所述的电路,其中所述分组处理器进一步被配置为:通过以独立于所述加密状态的方式读取所述队列条目来定位所述分组。
5.根据权利要求1所述的电路,其中所述网络解析器进一步被配置为:根据所述分组报头确定流,所述流标识所述分组所属的工作组。
6.根据权利要求5所述的电路,其中所述队列条目标识所述流。
7.根据权利要求1所述的电路,其中所述网络接口控制器响应于所述加密状态指示所述分组不是用于解密的候选,进一步被配置为:生成所述队列条目以指示所述分组的位置。
8.根据权利要求1所述的电路,其中所述分组处理器进一步被配置为:与所述加密引擎通信以解密所述分组。
9.根据权利要求1所述的电路,进一步包括:队列,被配置为存储包括所述分组的多个分组,所述网络接口控制器进一步被配置为管理所述队列的条目。
10.根据权利要求1所述的电路,其中所述网络接口控制器进一步被配置为:基于解密请求的队列的状态选择地向所述解密引擎转发所述解密命令。
11.根据权利要求1所述的电路,进一步包括:调度器,被配置为调度所述分组处理器的工作,所述调度器进一步被配置为:调度所述分组以用于由所述分组处理器处理。
12.根据权利要求11所述的电路,其中所述调度器进一步被配置为:从所述解密引擎接收解密结果,所述调度器基于所述解密结果来调度所述工作。
13.根据权利要求1所述的电路,其中所述队列条目进一步指示用于处理所述分组的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/142,923 US11095626B2 (en) | 2018-09-26 | 2018-09-26 | Secure in-line received network packet processing |
US16/142,923 | 2018-09-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110958215A true CN110958215A (zh) | 2020-04-03 |
CN110958215B CN110958215B (zh) | 2023-05-30 |
Family
ID=69883763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910913261.5A Active CN110958215B (zh) | 2018-09-26 | 2019-09-25 | 安全的在线接收的网络分组处理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11095626B2 (zh) |
CN (1) | CN110958215B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637069A (zh) * | 2020-12-18 | 2021-04-09 | 支付宝(杭州)信息技术有限公司 | 数据报文的传输方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11095617B2 (en) | 2017-12-04 | 2021-08-17 | Nicira, Inc. | Scaling gateway to gateway traffic using flow hash |
US11294715B2 (en) | 2019-08-28 | 2022-04-05 | Marvell Asia Pte, Ltd. | System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries |
US11409553B1 (en) * | 2019-09-26 | 2022-08-09 | Marvell Asia Pte, Ltd. | System and method for isolating work within a virtualized scheduler using tag-spaces |
US11509638B2 (en) * | 2019-12-16 | 2022-11-22 | Vmware, Inc. | Receive-side processing for encapsulated encrypted packets |
US12107834B2 (en) | 2021-06-07 | 2024-10-01 | VMware LLC | Multi-uplink path quality aware IPsec |
US12113773B2 (en) | 2021-06-07 | 2024-10-08 | VMware LLC | Dynamic path selection of VPN endpoint |
US11863514B2 (en) | 2022-01-14 | 2024-01-02 | Vmware, Inc. | Performance improvement of IPsec traffic using SA-groups and mixed-mode SAs |
US11956213B2 (en) | 2022-05-18 | 2024-04-09 | VMware LLC | Using firewall policies to map data messages to secure tunnels |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577281A (zh) * | 2003-06-27 | 2005-02-09 | 株式会社东芝 | 调度方法和信息处理系统 |
US6910133B1 (en) * | 2000-04-11 | 2005-06-21 | Cisco Technology, Inc. | Reflected interrupt for hardware-based encryption |
CN101262405A (zh) * | 2008-04-11 | 2008-09-10 | 华南理工大学 | 基于网络处理器的高速安全虚拟专用网通道及其实现方法 |
CN101502041A (zh) * | 2006-08-11 | 2009-08-05 | 松下电器产业株式会社 | 加密装置、解密装置、加密方法以及解密方法 |
US8074267B1 (en) * | 2003-12-18 | 2011-12-06 | Symantec Corporation | Computer communications monitor |
CN103384991A (zh) * | 2010-08-12 | 2013-11-06 | 思杰系统有限公司 | 用于加密网络流量的服务质量的系统和方法 |
CN106031107A (zh) * | 2014-02-28 | 2016-10-12 | 凯为公司 | 网络处理器中的分组调度 |
CN106030562A (zh) * | 2014-02-28 | 2016-10-12 | 凯为公司 | 网络处理器中的分组整形 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7305567B1 (en) | 2002-03-01 | 2007-12-04 | Cavium Networks, In. | Decoupled architecture for data ciphering operations |
US7814310B2 (en) | 2003-04-12 | 2010-10-12 | Cavium Networks | IPsec performance optimization |
US7613813B2 (en) | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
US7895431B2 (en) | 2004-09-10 | 2011-02-22 | Cavium Networks, Inc. | Packet queuing, scheduling and ordering |
WO2006031551A2 (en) | 2004-09-10 | 2006-03-23 | Cavium Networks | Selective replication of data structure |
US7742412B1 (en) | 2004-09-29 | 2010-06-22 | Marvell Israel (M.I.S.L.) Ltd. | Method and apparatus for preventing head of line blocking in an ethernet system |
WO2006116195A1 (en) * | 2005-04-21 | 2006-11-02 | Sinett Corporation | Methods and systems for fragmentation and reassembly for ip tunnels |
WO2009039222A2 (en) | 2007-09-19 | 2009-03-26 | Marvell World Trade Ltd. | Flexible sequencer design architecture for solid state memory controller |
US9229792B1 (en) | 2007-11-21 | 2016-01-05 | Marvell International Ltd. | Method and apparatus for weighted message passing |
US8358651B1 (en) | 2009-09-21 | 2013-01-22 | Marvell International Ltd. | Switch device having a plurality of processing cores |
US8516230B2 (en) | 2009-12-29 | 2013-08-20 | International Business Machines Corporation | SPE software instruction cache |
US8885480B2 (en) | 2011-10-20 | 2014-11-11 | Cavium, Inc. | Packet priority in a network processor |
US8897315B1 (en) | 2012-01-06 | 2014-11-25 | Marvell Israel (M.I.S.L) Ltd. | Fabric traffic management in a network device |
WO2013111019A2 (en) | 2012-01-27 | 2013-08-01 | Marvell World Trade Ltd. | Systems and methods for dynamic priority control |
US9036993B2 (en) | 2012-02-13 | 2015-05-19 | Marvell World Trade Ltd. | Method and apparatus for dynamically allocating bandwidth to a client in a passive optical network |
US8910179B2 (en) | 2012-05-15 | 2014-12-09 | Freescale Semiconductor, Inc. | Systems and methods for providing semaphore-based protection of system resources |
US9438527B2 (en) | 2012-05-24 | 2016-09-06 | Marvell World Trade Ltd. | Flexible queues in a network switch |
CN104641609B (zh) | 2012-09-10 | 2018-03-09 | 马维尔国际贸易有限公司 | 用于在线路卡的接口控制模块之间传送分组的方法和装置 |
US9680742B2 (en) | 2014-02-28 | 2017-06-13 | Cavium, Inc. | Packet output processing |
US9536590B1 (en) | 2014-09-03 | 2017-01-03 | Marvell International Ltd. | System and method of memory electrical repair |
US11038856B2 (en) | 2018-09-26 | 2021-06-15 | Marvell Asia Pte, Ltd. | Secure in-line network packet transmittal |
-
2018
- 2018-09-26 US US16/142,923 patent/US11095626B2/en active Active
-
2019
- 2019-09-25 CN CN201910913261.5A patent/CN110958215B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6910133B1 (en) * | 2000-04-11 | 2005-06-21 | Cisco Technology, Inc. | Reflected interrupt for hardware-based encryption |
CN1577281A (zh) * | 2003-06-27 | 2005-02-09 | 株式会社东芝 | 调度方法和信息处理系统 |
US8074267B1 (en) * | 2003-12-18 | 2011-12-06 | Symantec Corporation | Computer communications monitor |
CN101502041A (zh) * | 2006-08-11 | 2009-08-05 | 松下电器产业株式会社 | 加密装置、解密装置、加密方法以及解密方法 |
CN101262405A (zh) * | 2008-04-11 | 2008-09-10 | 华南理工大学 | 基于网络处理器的高速安全虚拟专用网通道及其实现方法 |
CN103384991A (zh) * | 2010-08-12 | 2013-11-06 | 思杰系统有限公司 | 用于加密网络流量的服务质量的系统和方法 |
CN106031107A (zh) * | 2014-02-28 | 2016-10-12 | 凯为公司 | 网络处理器中的分组调度 |
CN106030562A (zh) * | 2014-02-28 | 2016-10-12 | 凯为公司 | 网络处理器中的分组整形 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637069A (zh) * | 2020-12-18 | 2021-04-09 | 支付宝(杭州)信息技术有限公司 | 数据报文的传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US11095626B2 (en) | 2021-08-17 |
US20200099670A1 (en) | 2020-03-26 |
CN110958215B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110958215B (zh) | 安全的在线接收的网络分组处理 | |
US8645596B2 (en) | Interrupt techniques | |
US7996548B2 (en) | Message communication techniques | |
US9444757B2 (en) | Dynamic configuration of processing modules in a network communications processor architecture | |
EP3503507B1 (en) | Network interface device | |
EP3707880A1 (en) | Nic with programmable pipeline | |
JP6676027B2 (ja) | ネットワークプロセッサにおけるマルチコア相互接続 | |
US20140068134A1 (en) | Data transmission apparatus, system, and method | |
US20100318996A1 (en) | Methods and systems for sharing common job information | |
US20020071450A1 (en) | Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network | |
US11010165B2 (en) | Buffer allocation with memory-based configuration | |
JPH10320191A (ja) | プログラム可能暗号処理システムおよび方法 | |
US8595401B2 (en) | Input output bridging | |
CN110958216B (zh) | 安全的在线网络分组传输 | |
US12039359B1 (en) | System and method for isolating work within a virtualized scheduler using tag-spaces | |
US11327890B1 (en) | Partitioning in a processor cache | |
JP2024509884A (ja) | ネットワークインターフェースデバイス | |
US7292593B1 (en) | Arrangement in a channel adapter for segregating transmit packet data in transmit buffers based on respective virtual lanes | |
US11093405B1 (en) | Shared mid-level data cache | |
US11036643B1 (en) | Mid-level instruction cache | |
US9288163B2 (en) | Low-latency packet receive method for networking devices | |
CN111143897A (zh) | 数据安全处理装置、系统及处理方法 | |
US11960727B1 (en) | System and method for large memory transaction (LMT) stores | |
EP1049292A2 (en) | System and method for network monitoring | |
US12007921B2 (en) | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40017505 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |