CN110958216B - 安全的在线网络分组传输 - Google Patents
安全的在线网络分组传输 Download PDFInfo
- Publication number
- CN110958216B CN110958216B CN201910913894.6A CN201910913894A CN110958216B CN 110958216 B CN110958216 B CN 110958216B CN 201910913894 A CN201910913894 A CN 201910913894A CN 110958216 B CN110958216 B CN 110958216B
- Authority
- CN
- China
- Prior art keywords
- packet
- processor
- encryption
- circuit
- packets
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/505—Corrective measures
- H04L49/506—Backpressure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
-
- 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/16—Implementing security features at a particular protocol layer
- H04L63/164—Implementing security features at a particular protocol layer at the network layer
-
- 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/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (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中的至少一个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。
处理器核心120还包括指令高速缓存152、1级数据高速缓存154。在一个实施例中,网络服务处理器100包括24个ARM处理器核心120。在一些实施例中,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,支持具有直写的完全一致的1级数据高速缓存154。CMI 144可以被高度缓冲以具有优先化I/O的能力。
LLC 130的控制器保持存储器参考一致性。其返回针对每个填充请求的块的最新副本,无论块是被存储在LLC 130中、在外部DRAM 108中、还是“在飞行中”。多个DRAM控制器133支持外部DRAM 108,并且可以支持优选协议,诸如DDR4协议。
在处理器核心120已经处理了分组之后,接口单元122从LLC 130、DRAM 108读取分组数据、执行L4网络协议后处理(例如,生成TCP/UDP校验和)、通过接口单元122转发分组并且释放分组所使用的LLC 130/DRAM 108。DRAM控制器133管理去往/来自DRAM 108的飞行中事务(加载/存储)。
资源虚拟化单元(RVU)162可以使软件能将各种模块中的各种本地功能(LF)资源映射到若干物理功能(PF)和虚拟功能(VF)中。这使多单元软件驱动程序能与Linux、Windows和DPDK兼容。Bose Chaudhuri Hocquenghem单元(BCH)146可以实现能够校正数据块内的许多错误的BCH循环纠错码。BCH 146可以加速奇偶校验生成和纠错功能两者。
管理模块126可以包括用于管理网络服务处理器100的操作的各种单元。例如,管理模块126可以包括温度传感器、用以确定当前性能和能量消耗的电源串行总线主接口,以及用以检测和报告存储器错误的存储器诊断控制器。模块126还可以包括控制处理器,诸如用于电源管理和其他安全芯片管理任务的系统控制处理器,以及用于模块管理和其他非安全芯片管理任务的模块控制处理器。
图2是更详细的接口单元122的框图。收发器模块290根据一个或多个通信协议(诸如PCIe、以太网和SATA)来传输和接收信号。包括PCI Express接口单元(PEM0-PEM3)、SATA接口单元(SATA)和以太网I/O控制器(CGX0-CGX2)的接口模块285根据它们相应的协议来处理接收和外发信号。网络控制器边带接口(NCSI)单元276为NCSI总线277提供接口和协议控制器,该NCSI总线277从/向CGX接口模块285提供网络分组数据。
网络接口单元(NIX)210提供控制器和直接存储器访问(DMA)引擎以处理和移动网络分组。NIX 210向上述接口285传输分组和从上述接口285接收分组,并且与SSO模块148通信以调度针对核心120的工作以进一步处理分组。NIX还可以与核心120通信以代替SSO 148转发工作,并且可以从核心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可选地对由NIX 210所接收的互联网协议安全(IPsec)分组进行解密,并且可以加密用于外发分组的数据。数据高速缓存(NDC0至NDC1)216是由NIX 210和NPA 214所使用的公共数据高速缓存块。
图3是在创建和传输外发分组时所实现的网络服务处理器100的组件的子集的简化框图。ARM处理器220生成用于传输的分组数据。如果分组将被加密,则CPT 230在向NIX210转发分组数据之前对分组数据进行加密。否则,ARM处理器220可以向NIX 210直接转发未加密的分组数据。然后,NIX 210组装外发数据(例如,通过格式化数据、添加分组报头或其者他元数据等),并且传输外发分组。
在先前的网络加密技术(诸如提供IPsec加密的那些技术)下,发起分组数据的处理器与加密电路和接口控制器重复通信。例如,处理器可以向加密电路转发加密指令,并且加密电路可以将加密的分组返回给处理器。然后,处理器可以向接口控制器转发经加密的分组,以用于组装成外发分组。与传输未加密的分组相比,这种方法涉及处理器的附加的工作,并且组件之间的附加通信可以减慢分组传输并且降低网络处理器的效率。
示例实施例提供用于在网络处理器中传输的分组的在线加密。参考图3,ARM处理器220可以生成用于加密的分组数据,并且然后向CPT 230转发加密指令。然后,CPT对分组进行加密,并且向NX210转发加密的分组以及用于组装相应外发分组的指令。因此,ARM处理器220可以按每个分组提供单个通信,而不管该分组是否将被加密,并且在通信之后不需要进一步涉及该分组。因此,除了征召CPT 230之外,与用于未加密的分组的过程并行地,将被加密的分组被处理,以用于与模块220、230、210的在线传输。因此,减少了到ARM处理器220的工作负载,并且模块220、230、210之间的通信被最小化,从而改进了网络处理器的效率和延时。
图4是生成和传输加密的外发分组的示例过程400的流程图。参考图3,ARM处理器220可以生成分组(405),并且将分组与对应的发送描述符一起存储到LLC 130或其他存储器,诸如高速缓存或者DRAM 108(408)。发送描述符也可以由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)。在CPT 230对发送描述符排队时,该CPT 230可以首先从存储器读取发送描述符,然后向NIX 210发送该发送描述符。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发送队列情况,NPA214可以使LLC/DRAM位置与有效地描述了NIX发送队列占用的信息保持(up-to-date)。针对CPT队列情况,CPT 220可以使LLC/DRAM位置与队列占用保持同步。在决定在CPT队列和/或NIX发送队列中进行排队之前,ARM软件可以查询这些LLC/DRAM位置。
在另外的实施例中,CPT可以监测CPT队列和由NIX 210所实现的用于外发分组(诸如NPA缓冲区214)的队列两者的状态。在NIX 210处对分组排队之前,CPT 230可以检查NPA214的状态以验证缓冲容量。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结果相关联,该NPC结果指示其是用于解密的候选者。为了处理分组数据,NIX 210经由SSO 148来调度针对ARM处理器220的工作。如果分组将被解密,则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通信以解密分组。因此,除了征召CPT 230之外,与用于未加密的分组的过程并行地,将被解密的分组被处理以用于与模块212、210、230、148、220的在线传输。作为结果,到ARM处理器220的工作负载被减小,并且模块220、230、210之间的通信被最小化,从而改进网络处理器的效率和延时。
图6是接收和处理分组的示例过程600的流程图。参考图5,NPC 212解析接收的分组的分组报头,并且生成指示分组是否是用于解密的候选者的NPC结果(605、610)。为了处理分组数据,NIX 210针对SSO 148创建WQE以将工作分配给ARM处理器220(620)。针对不是用于解密的候选的分组,NIX 210可以将WQE排入到SSO 148,SSO 148调度WQE(640)。SSO148可以将其工作队列中的WQE维护为工作队列指针(WQP),该WQP是指向WQE的指针。在WQP位于工作队列的顶部时,SSO可以向ARM处理器220转发WQP,以根据WQE来处理解密的分组(645)。
针对作为用于解密的候选者的分组,CPT 230可以在解密分组之后,在SSO 148处对WQE排队,从而保持顺序并且防止错误。备选地,NIX 210可以对WQE排队,但是在分组被解密之前避免这样做。在此期间,WQE可以被存储到存储器(例如,LLC 130或者NDC 216)。为了解密分组,NIX 210生成解密命令并且将其转发给CPT 230(625)。
然后,CPT 230可以解密分组、将解密的分组写入存储器(例如,LLC 130或者DRAM108)(630)。在解密之后,CPT 230可以从存储器访问WQE,并且基于解密结果来对其进行更新(635)。例如,CPT 230可以通过添加关于分组是否被成功解密的指示符以及指向解密分组的指针来修改WQE。CPT 230还可以利用指向解密的分组的指针覆盖指向加密的分组的指针。备选地,CPT 230可以将解密的分组写入到与加密的分组相同的地址,覆盖加密的分组并且使WQE能继续进行而不被修改。在另一备选方案中,CPT 230可以将WQE与指向解密分组的指针相关联,而不修改WQE本身,其中SSO可以并发地管理WQE和指针。
一旦分组被解密并且WQE被相应地更新,CPT 230就可以将WQE排入到SSO 148,SSO148调度WQE(640)。SSO 148可以经由工作队列指针(WQP)来维护其工作队列中的WQE,该WQP是指向WQE的指针。在WQP位于工作队列的顶部时,SSO可以向ARM处理器220转发WQP,以根据WQE来经处理解密的分组(645)。
图7A至图7C图示了在示例实施例中所实现的数据条目。图7A图示了示例WQP 701,图7B图示了示例WQE 702,并且图7C图示了示例加密结果(CPT结果)703。如上所述,并且再次参考图5至图6,SSO单元148通过将WQP 701添加到队列来对每个工作条进行排队。WQP701包括指向LLC/DRAM中的对应WQE 702的地址,以及使SSO 148能标识和调度对应WQE 702的报头。例如,WQP 701报头可以指示对应于每个工作条的组、标签类型以及标签,并且还可以指示相应的分组是否是用于解密的候选者。
SSO单元148可以通过将WQP 701维护到每个WQE 702来管理工作。SSO 148可以存储WQP 701,并且在核心可用于处理新工作时使用该指针。当SSQ单元148在SSO单元148内时,SSQ单元148可以在所有点处一起承载WQP 701,因为WQP 701间接地描述了需要被执行的实际工作。然后,在SSO 148可用于处理工作时,SSO 148可以向核心(例如,ARM处理器220)传递WQP 701。
LLC/DRAM中的WQE 702是描述每个工作条的主要描述符。如上所述,WQE可以由NIX210创建,并且可以包括若干字段。对这些字段的选择如图7B中所示。如上所述,WQE报头可以包括WQP报头中存在的相同信息。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。备选地,CPT 230可以放弃生成正式的CPT结果,而是通过将指针和/或解密结果写入WQE来直接修改WQE。
图8是在备选实施例中的网络服务处理器100的组件的子集的简化框图,该网络服务处理器100在接收和处理分组时被实现。除了SSO 148被完成队列(CQ)812替换之外,配置可以以与参考图5至图6的上述配置可比较的方式来操作。CQ 812可以与SSO 148的不同之处在于其可以是由NIX 210所管理的更简单的队列,并且可以缺少SSO 148的调度和同步能力中的一些能力。例如,CQ 812可以是NIX 210的组件,并且可以包括用于分组处理工作的单个或队列或多个队列。NIX 210可以通过按照分组被接收的顺序来将针对分组的条目添加到CQ 812,然后根据CQ 812来向ARM处理器220转发工作,来保持工作的正确顺序。如本文所述,可以利用CQ 812而不是SSO来实现WQE的实施例。在这类实施例中,WQE可以充当指示相应分组需要处理的指示符,并且可以省略SSO 148所利用的一些特征,诸如用于处理分组的特定指令。
虽然已经具体示出和描述了示例实施例,但是本领域技术人员将理解,在不脱离所附权利要求所涵盖的实施例的范围的情况下,可以在形式和细节上进行各种改变。
Claims (11)
1.一种电路,包括:
分组处理器,所述分组处理器被实现在硬件处理器中,所述分组处理器被配置为请求工作队列条目,从所述工作队列条目所指示的数据来生成分组并且选择性地生成针对所述分组的加密指令;
加密引擎,响应于所述加密指令而被配置为:1)独立于所述分组处理器的操作来加密所述分组以生成经加密的分组,以及2)转发所述经加密的分组和发送描述符;以及
网络接口控制器,被配置为:基于从所述加密引擎接收到的所述发送描述符,来从所述经加密的分组构建外发分组。
2.根据权利要求1所述的电路,其中所述分组处理器进一步被配置为:向所述加密引擎转发指向所述发送描述符的指针。
3.根据权利要求2所述的电路,其中所述加密引擎进一步被配置为:基于所述指针来定位所述发送描述符,并且向所述网络接口控制器转发所述发送描述符。
4.根据权利要求1所述的电路,其中所述分组处理器进一步被配置为:1)生成非安全分组,所述非安全分组不要求加密,以及2)向所述网络接口控制器转发与所述非安全分组相对应的发送描述符。
5.根据权利要求1所述的电路,其中所述加密引擎进一步被配置为:1)加密连续的分组以生成连续的经加密的分组,以及2)向所述分组处理器转发所述连续的经加密的分组。
6.根据权利要求5所述的电路,其中所述分组处理器进一步被配置为:向所述网络接口控制器转发所述连续的经加密的分组和对应的发送描述符。
7.根据权利要求1所述的电路,其中所述加密引擎进一步被配置为:响应于在所述经加密的分组的生成期间检测到错误,而向所述分组处理器转发错误消息。
8.根据权利要求7所述的电路,其中所述加密引擎进一步被配置为:生成队列条目,所述队列条目指示对处理所述错误的请求。
9.根据权利要求1所述的电路,其中所述加密引擎进一步被配置为:基于网络接口控制器队列的状态,来向所述网络接口控制器选择性地转发所述发送描述符。
10.根据权利要求9所述的电路,其中所述网络接口控制器进一步被配置为:基于所述网络接口控制器队列的所述状态,来向所述分组处理器和所述加密引擎中的至少一个选择性地转发反压命令。
11.根据权利要求1所述的电路,其中所述分组处理器进一步被配置为:基于加密引擎队列的状态,来向所述加密引擎选择性地转发所述加密指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/142,871 US11038856B2 (en) | 2018-09-26 | 2018-09-26 | Secure in-line network packet transmittal |
US16/142,871 | 2018-09-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110958216A CN110958216A (zh) | 2020-04-03 |
CN110958216B true CN110958216B (zh) | 2023-04-18 |
Family
ID=69884774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910913894.6A Active CN110958216B (zh) | 2018-09-26 | 2019-09-25 | 安全的在线网络分组传输 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11038856B2 (zh) |
CN (1) | CN110958216B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11038856B2 (en) * | 2018-09-26 | 2021-06-15 | Marvell Asia Pte, Ltd. | Secure in-line network packet transmittal |
US11095626B2 (en) | 2018-09-26 | 2021-08-17 | Marvell Asia Pte, Ltd. | Secure in-line received network packet processing |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1486555A (zh) * | 2000-12-22 | 2004-03-31 | �¼�Ԫ��˾ | 分组加密系统和方法 |
CN1747380A (zh) * | 2004-09-09 | 2006-03-15 | 三星电子株式会社 | 对分组加密数据进行解密 |
US7305567B1 (en) * | 2002-03-01 | 2007-12-04 | Cavium Networks, In. | Decoupled architecture for data ciphering operations |
CN101194475A (zh) * | 2005-04-18 | 2008-06-04 | 思科技术公司 | 具有用于性能增强的加密和队列的PCI Express交换机 |
CN101351784A (zh) * | 2005-12-30 | 2009-01-21 | 阿西式·A·潘迪亚 | 运行时自适应搜索处理器 |
CN101473588A (zh) * | 2006-06-20 | 2009-07-01 | 摩托罗拉公司 | 用于使用IPsec密钥的加密通信的方法和装置 |
US7814310B2 (en) * | 2003-04-12 | 2010-10-12 | Cavium Networks | IPsec performance optimization |
CN106487719A (zh) * | 2015-08-25 | 2017-03-08 | 谷歌公司 | 经由分组中继使网络功能外部化的系统和方法 |
Family Cites Families (24)
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 |
US8074267B1 (en) | 2003-12-18 | 2011-12-06 | Symantec Corporation | Computer communications monitor |
US20060059221A1 (en) * | 2004-09-10 | 2006-03-16 | Cavium Networks | Multiply instructions for modular exponentiation |
US7895431B2 (en) * | 2004-09-10 | 2011-02-22 | Cavium Networks, Inc. | Packet queuing, scheduling and ordering |
DK1794979T3 (en) * | 2004-09-10 | 2017-07-24 | Cavium Inc | Selective copying of data structure |
US7613813B2 (en) * | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
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 |
US20060262808A1 (en) | 2005-04-21 | 2006-11-23 | Victor Lin | Methods and Systems for Fragmentation and Reassembly for IP Tunnels in Hardware Pipelines |
KR101507975B1 (ko) * | 2007-09-19 | 2015-04-06 | 마벨 월드 트레이드 리미티드 | 솔리드 스테이트 메모리 제어기를 위한 플렉시블 시퀀서 디자인 아키텍쳐 |
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 | 马维尔国际贸易有限公司 | 用于在线路卡的接口控制模块之间传送分组的方法和装置 |
US9559982B2 (en) * | 2014-02-28 | 2017-01-31 | Cavium, Inc. | Packet shaping in a network processor |
US9397938B2 (en) * | 2014-02-28 | 2016-07-19 | Cavium, Inc. | Packet scheduling in a network processor |
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,871 patent/US11038856B2/en active Active
-
2019
- 2019-09-25 CN CN201910913894.6A patent/CN110958216B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1486555A (zh) * | 2000-12-22 | 2004-03-31 | �¼�Ԫ��˾ | 分组加密系统和方法 |
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 |
CN1747380A (zh) * | 2004-09-09 | 2006-03-15 | 三星电子株式会社 | 对分组加密数据进行解密 |
CN101194475A (zh) * | 2005-04-18 | 2008-06-04 | 思科技术公司 | 具有用于性能增强的加密和队列的PCI Express交换机 |
CN101351784A (zh) * | 2005-12-30 | 2009-01-21 | 阿西式·A·潘迪亚 | 运行时自适应搜索处理器 |
CN101473588A (zh) * | 2006-06-20 | 2009-07-01 | 摩托罗拉公司 | 用于使用IPsec密钥的加密通信的方法和装置 |
CN106487719A (zh) * | 2015-08-25 | 2017-03-08 | 谷歌公司 | 经由分组中继使网络功能外部化的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US11038856B2 (en) | 2021-06-15 |
US20200099669A1 (en) | 2020-03-26 |
CN110958216A (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110958215B (zh) | 安全的在线接收的网络分组处理 | |
US10841243B2 (en) | NIC with programmable pipeline | |
EP3719657A1 (en) | Communication with accelerator via rdma-based network adapter | |
CN105579987B (zh) | 通用pci express端口 | |
US8413153B2 (en) | Methods and systems for sharing common job information | |
EP4202705A1 (en) | Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access | |
EP3503507B1 (en) | Network interface device | |
CN104580011B (zh) | 一种数据转发装置和方法 | |
US12119958B2 (en) | Cross network bridging | |
EP3588881A1 (en) | Technologies for reordering network packets on egress | |
US11394664B2 (en) | Network interface device | |
US11010165B2 (en) | Buffer allocation with memory-based configuration | |
KR101752964B1 (ko) | Am을 통한 rma api의 지원 | |
CN110958216B (zh) | 安全的在线网络分组传输 | |
US11327890B1 (en) | Partitioning in a processor cache | |
US20210157935A1 (en) | Network interface with data protection | |
US20220292042A1 (en) | Network interface device | |
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 | |
EP1049292A2 (en) | System and method for network monitoring | |
US12007921B2 (en) | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) | |
CN118741736A (zh) | 实现低时延高可靠通信方法及装置、通信设备 | |
JP2002374245A (ja) | 暗号・復号処理方法 | |
CN117581226A (zh) | 遥测限制机制 |
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: 40026403 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 |