CN104221000B - 用于网络设备上的处理元件的共享的缓冲区 - Google Patents
用于网络设备上的处理元件的共享的缓冲区 Download PDFInfo
- Publication number
- CN104221000B CN104221000B CN201280071802.0A CN201280071802A CN104221000B CN 104221000 B CN104221000 B CN 104221000B CN 201280071802 A CN201280071802 A CN 201280071802A CN 104221000 B CN104221000 B CN 104221000B
- Authority
- CN
- China
- Prior art keywords
- buffering area
- treatment element
- key
- encrypted
- virtual machine
- 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
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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
公开了用于在网络设备的输入/输出设备和在网络设备上运行的第一处理元件之间交换密钥的示例。可以由输入/输出设备接收具有与第一处理元件相关联的目的地的数据。可以使用交换的密钥对所接收数据进行加密。然后可以向至少部分在网络设备的存储器中维护的缓冲区发送加密的数据。可以布置存储器以能够至少与在网络设备上运行的第二处理元件共享缓冲区。还公开了处理元件接收在缓冲区中存储加密的数据的指示的示例。处理元件然后可以从缓冲区获得加密的数据并利用交换的密钥对数据进行解密。
Description
背景技术
诸如网络接口卡(NIC)的输入/输出(I/O)设备可以耦合到在诸如服务器的主机计算平台或网络设备上的处理元件。I/O设备可以使用接收队列(例如,维持在处理元件的缓存中)向处理元件指示发往处理元件的数据已经被I/O设备接收。I/O设备可能将发往处理元件的数据放置在主机网络设备的存储器中维护的接收缓冲区中。主机网络设备的存储器可以是一种类型的存储器,例如动态随机存取存储器(DRAM),或者其他类型的易失性存储器。
典型地,向处理元件的队列分配若干接收缓冲区以维持线速吞吐量。例如,在10吉比特/秒(Gbs)的线速和0.1秒的循环缓冲区平均时间下,可以向队列分配125兆字节(MB)的存储器用于接收缓冲区,以为该队列维持线速吞吐量。而且,在可以将处理元件实现为虚拟机(VM)的示例中,诸如VM设备队列(VMDq)或单根I/O虚拟化(SR-IOV)的技术可能导致单个处理元件的几种不同的队列。
耦合到给定I/O设备的处理元件数量也随着多核处理器的部署以及在这些多核处理器的一个或多个内核上实现VM而增长。一些I/O设备可以被设计成支持数百个VM和数千个队列。因此,支持数千队列会需要数百吉字节(GB)的存储器用于接收缓冲区,以便为每个队列维持线速吞吐量。
附图说明
图1示出了示例***。
图2示出了示例网络设备的方框图。
图3示出了加密管理器的示例架构的方框图。
图4示出了解密管理器的示例架构的方框图。
图5示出了用于对要存储于共享的缓冲区中的至少一部分数据进行加密的示例流程图。
图6示出了用于对存储于共享的缓冲区中的至少一部分数据进行解密的示例流程图。
图7示出了用于网络设备的示例***图。
具体实施方式
如本公开中构想的,可以将一些I/O设备设计成支持数百个VM和数千个队列。支持数百个VM和数千个队列可能导致数百GB的物理存储器用于接收缓冲区,以便为每个队列维持线速吞吐量。构建具有数百GB的类型的存储器(例如DRAM)的主机网络设备大大增加了成本。而且,数百GB的存储器(例如DRAM)的功率使用可能使操作这些类型的网络设备非常昂贵。具体而言,在可以在机架服务器环境中部署很多网络设备时,构建和/或操作具有数百GB的DRAM的网络设备的成本可能高得无法实现。因此,向每个队列独立地分配接收缓冲区的当前技术的问题越来越多,因为I/O设备能够支持越来越大数量的队列。
在一些示例中,技术被实现以对一个或多个共享的缓冲区中存储的数据进行加密或解密。对于这些示例,可以在网络设备的I/O设备和在网络设备上运行的第一处理元件之间交换密钥(例如,分组密码密钥)。可以在目的地与第一处理元件相关联的I/O设备处接收数据(例如数据分组)。可以利用交换的密钥加密至少第一部分数据(例如有效负载数据)。然后可以把加密的第一部分发送到网络设备的存储器(例如DRAM)中维持的缓冲区。根据一些示例,可以布置存储器以能够至少与在网络设备上运行的第二处理元件共享缓冲区。然后可以向处理元件指示(例如由I/O设备处的逻辑),已经向缓冲区发送了加密的第一部分。响应于该指示,第一处理元件然后可以从缓冲区获得(例如拷贝)加密的第一部分,然后利用交换的密钥对加密的第一部分进行解密。
图1示出了示例***100。在一些示例中,如图1中所示,***100可以包括处理器110、存储器120、I/O设备140和网络160。而且,如图1所示,处理器110和I/O设备140可以经由通信链路135通信地耦合,I/O设备140也可以经由通信信道150通信地耦合到网络160。而且,处理器110可以经由存储器通道145耦合到存储器120。如图1所示,根据一些示例,处理器110、存储器120或I/O设备140可以包括在或驻留在网络设备130上。
在一些示例中,如图1中所示,处理器110可以包括处理元件112-1到112-n(其中“n”代表任何>1的整数)。而且,如图1所示,存储器120可以包括缓冲区122-1到122-m(其中“m”代表任何>3的整数)。对于这些示例,处理元件112-1到112-n可以具有对应的缓存114-1到114-n。根据一些示例,可以在用于处理元件的缓存中包括任意数量的队列。而且,如下文进一步所述,可以布置缓冲区协调器116以与处理元件112-1到112-n、存储器120和I/O设备140协作运行,使得处理元件112-1到112-n能够从缓冲区122-1到122-m中共享一个或多个缓冲区。例如,每个处理元件可以至少具有对来自缓冲区122-1到122-m中的共享的缓冲区中存储的数据的只读访问。
根据一些示例,网络设备130可以是部署于服务器环境中的计算设备的一部分。对于这些示例,I/O设备140可以是布置成为网络设备130接收、转发或发送数据的网络接口卡(NIC)。例如,I/O设备140可以经由通信信道150从网络160接收或发送数据。例如,要接收或发送的数据可以至少暂时存储于缓冲区122-1到122-m中。
在一些示例中,如图1中所示,I/O设备140可以包括加密管理器142。对于这些示例,加密管理器142可以包括配置成或布置成与处理元件112-1到112-n交换诸如独立分组密码密钥的独立密钥的逻辑和/或特征。I/O设备140接下来从网络160接收数据。例如,该数据可以具有与处理元件112-1相关联的目的地。加密管理器142还可以被配置成利用与处理元件112-1交换的分组加密密钥对接收的数据的至少一部分进行加密。I/O设备140和/或加密管理器142然后可以向如上所述可能已被配置成由缓冲区协调器116共享的一个或多个缓冲区122-1到122-m,转发接收的数据的加密部分。
根据一些示例,如图1中所示,处理元件112-1到112-n独立地包括解密管理器111。对于这些示例,用于处理元件的给定解密管理器111可以包括配置成从缓冲区122-1到122-m中获得或拷贝发送到一个或多个缓冲区的加密数据的逻辑和/或特征。解密管理器111然后可以利用已经在I/O设备140处与加密管理器142交换的分组密码密钥对加密数据进行解密。在一些示例中,解密管理器111可以响应于来自I/O设备140和/或加密管理器142的表示已经向一个或多个缓冲区发送加密数据的指示,获得加密数据。
在一些示例中,处理器110可以是多核处理器,处理元件112-1到112-n可以是多核处理器的内核。在其他示例中,处理元件112-2到112-n可以包括一个或多个虚拟机。对于这些其他示例,可以在处理器110中包括的单个处理器上实现虚拟机。或者,可以在处理器110中包括的多核处理器的一个或多个内核上实现虚拟机。而且,对于这些其他示例,可以将缓冲区协调器116实现为便于控制和/或管理这些虚拟机的虚拟机管理器(VMM)或管理程序的一部分。
根据一些示例,如图1所示,通信链路135可以通信耦合或互连处理器110和I/O设备140。对于这些示例,通信链路135可以是数据总线,并可以根据各种通信协议或标准***作。这些通信协议或标准可以被描述在一种或多种行业标准(包括后续版本和变体)中,以包括但不限于在2010年11月发布的快速***部件互连(PCI Express)基础3.0规范(在下文中称为“PCI Express规范”)。
在一些示例中,如图1所示,存储器通道145可以将存储器120耦合到处理器110。对于这些示例,存储器通道145可以遵循一种或多种存储器标准或规范来运行,例如由JEDEC固态技术协会做出的规范。JEDEC固态技术协会做出的规范(包括后续版本和变体)可以包括,但不限于在2007年6月发布的双倍数据速率类型3(DDR3)同步动态随机存取存储器(SDRAM)规范(“DDR3规范”)。
在一些示例中,通信信道150可以包括一个或多个通信链路,I/O设备140可以经由其耦合至网络160。这些通信链路可以包括各种类型的有线、无线或光学通信介质。对于这些示例,可以根据任何版本的一种或多种适用的通信或连网标准操作通信链路。
图2示出了示例网络设备200的方框图。如图2所示,网络设备200包括处理器210、存储器220和I/O设备240。在一些示例中,如图2所示,网络设备200的这些元件可以经由接口235通信地耦合或互连。接口235,例如,可以根据一种或多种通信协议运行,例如PCI-Express。
根据一些示例,如图2所示,处理器210包括处理元件212-1和212-2以及缓冲区协调器216。图2中存储器220被示为包括缓冲区222-1到222-11。类似于图1中的I/O设备140,图2中的I/O设备240被示为还包括加密管理器142。而且,类似于图1中的处理元件,在图2中处理元件212-1和212-2被示为独立地包括解密管理器111。
在一些示例中,如图2中所示,处理元件212-1和212-2均包括完成队列和缓冲区标识(ID)队列。例如,处理元件212-1包括完成队列214-1A和缓冲区ID队列214-1B,处理元件212-2包括完成队列212-2A和缓冲区ID队列214-2B。根据一些示例,可以在用于处理元件212-1和212-2的相应缓存存储器中维护这些完成队列和缓冲区ID队列。如下文更多描述的,给定的处理元件可以利用其相应的完成队列和缓冲区ID队列以确定哪个缓冲区可以包括具有与给定处理元件相关联的目的地的数据。而且,如下文更多所述,I/O设备240和/或加密管理器142可以利用完成队列214-1A或214-1B向处理元件212-1或212-2指示已经将接收的数据放置于或存储于存储器220中或存储器220处维护的缓冲区。
根据一些示例,如图2中所示,缓冲区协调器216包括共享的缓冲区索引211和分配的缓冲区索引213。对于这些示例,缓冲区协调器216可以被配置成利用与可在处理元件212-1和212-2之间共享的缓冲区相关联的信息,填充共享的缓冲区索引211。例如,如图2中所示,共享的缓冲区索引211包括信息,以表示可以将缓冲区222-1到222-9布置为共享的。也可以布置缓冲区协调器216以利用与可以永久地分配给给定处理元件的缓冲区相关联的信息,填充分配的缓冲区索引213。例如,如图2中所示,分配的缓冲区索引213包括指示可以将缓冲区222-10和222-11分别独立地和永久地分配给处理元件212-1和212-2的信息。可以在位于处理器210处或与处理器210位于一起的存储器(例如共享的缓存存储器——未示出)中维护缓冲区索引211和分配的缓冲区索引213。
共享的缓冲区索引211或分配的缓冲区索引213可以由处理器元件212-1或212-2使用,用于为包括接收的数据的缓冲区确定物理地址。如下文更多描述的,可以将加密的接收的数据置于共享的缓冲区索引211中列出的共享的缓冲区中。可以将未加密的接收的数据置于分配的缓冲区索引213中列出的永久地分配的缓冲区中。
在一些示例中,如图2中所示,缓冲区协调器216还包括共享的接收队列(SRQ)212-1、分配的接收队列(ARQ)212-1、SRQ 212-2和ARQ212-2。SRQ/ARQ 212-1和SRQ/ARQ 212-2可以是缓冲区协调器116使用的队列,用于向I/O设备240和/或加密管理器142指示哪些缓冲区用来放置或存储接收的数据。对于这些示例,SRQ/ARQ 212-1可用于指示缓冲区ID和/或物理存储器地址以放置发往处理元件212-1的数据,SRQ/ARQ 212-2可用于指示缓冲区ID和/或物理存储器地址以放置发往处理元件212-2的数据。SRQ/ARQ 212-1和SRQ/ARQ 212-2也可以维护在位于处理器210处或与处理器210位于一起的存储器(例如,共享缓存存储器)中。
根据一些示例,缓冲区协调器216可以确定,在共享的缓冲区索引211中列出的共享的缓冲区或者在分配的缓冲区索引213中的永久地分配的缓冲区中,哪些可用于接收发往处理元件212-1或212-2的数据。对于这些示例,阴影框指示缓冲区协调器216认为可用于接收数据的那些缓冲区。例如,如图2中所示,缓冲区A(222-1)到E(222-5)在SRQ 212-1中带阴影,缓冲区F(222-6)到I(222-9)在SRQ 212-2中带阴影。类似地,ARQ212-1或ARQ 212-2中包括的用于缓冲区的阴影框可以指示缓冲区J(222-10)和J(222-11)也分别可用于接收数据。
在一些示例中,处理元件212-1和处理元件212-2处的解密管理器111可以独立地与I/O设备240处的加密管理器142交换相应的第一和第二分组密码密钥。对于这些示例,交换的第一分组密码密钥可由加密管理器142使用,用于对发往处理元件212-1的数据的至少一部分进行加密。为了对加密数据的部分进行解密,处理元件212-1处的解密管理器111可以使用交换的第一分组密码密钥。类似地,交换的第二分组密码密钥可以由加密管理器142使用,用于对发往处理元件212-2的至少一部分数据进行加密,在处理元件212-2处的解密管理器111可以使用交换的第二分组密码密钥对这一加密数据进行解密。
根据一些示例,发往处理元件212-1的数据可以由I/O设备240接收。数据可以是具有报头和有效负载的数据分组的形式。加密管理器142可以包括利用第一分组密码密钥对整个数据分组进行加密的逻辑和/或特征。对于这些示例,加密管理器142可以促使I/O设备240向SRQ 212-1中列示为可用于接收加密数据的一个或多个缓冲区转发加密的数据分组。例如,可以将加密的数据分组发送到缓冲区222-1,用于至少在与这一缓冲区相关联的存储器220处的物理存储器地址处暂时存储。
在一些示例中,加密管理器142可以包括逻辑和/或特征,用于向处理元件212-1指示发往处理元件212-1或者具有与处理元件212-1相关联的目的地的数据已经被置于或存储于缓冲区222-1。例如,加密管理器142可以在完成队列214-1A中放置指针,以指示具有标识符“A”的缓冲区包括具有与处理元件212-1相关联的目的地的数据。依据本示例,解密管理器111可以包括逻辑和/或特征,以将具有到标识符“A”的指针的完成队列214-1A与缓冲区ID队列214-1B中包括的条目进行比较。例如,该比较可以使解密管理器111能够确定标识符“A”被映射到共享的还是永久地分配的缓冲区。如果是共享的,那么解密管理器111可以假设数据被加密。如果是分配的,那么解密管理器111可以假设数据未被加密。如图2所示,“A”可以映射到ID-1,而ID-1被包括在共享的缓冲区索引211中并映射到缓冲区222-1。由于A(ID-1)映射到共享的缓冲区索引211中列出的缓冲区,解密管理器111可以明确知道缓冲区222-1处存储的数据被加密(例如,在完成状态中指示)。
在一些示例中,仅有接收的数据分组的有效负载可以利用第一分组密码密钥被加密并然后发送到SRQ 212-1中指示的一个或多个共享的缓冲区。对于这些示例,报头可以与有效负载分开并被发送到ARQ 212-1中指示的缓冲区。如图2中所示,该缓冲区可以是缓冲区222-10。由于缓冲区222-10被永久地分配到处理元件212-1,另一处理元件212-2不能访问这个缓冲区,从而可以无需对在这一缓冲区中存储的数据进行加密。一旦被发送到缓冲区222-10,加密管理器142就可以在完成队列214-1A中放置指针以指示具有标识符“J”的缓冲区包括发往处理元件212-1的数据。解密管理器111然后可以将具有到标识符“J”的指针的完成队列214-1A与缓冲区ID队列214-1B中包括的条目进行对比。例如,该比较可以使解密管理器111能够确定标识符“J”被映射到分配的缓冲区索引213中永久地分配的缓冲区(ID-10(缓冲区222-10))。由于“J”映射到分配的缓冲区,所以解密管理器111可以假设数据未加密。
根据一些示例,可以利用第一分组密码密钥对接收的数据分组的报头和有效负载进行独立地加密。对于这些示例,有效负载可以是接收的数据分组的第一部分,报头可以是接收的数据分组的第二部分。加密管理器142然后可以向缓冲区222-1转发加密的第一部分,向缓冲区222-2转发加密的第二部分。然后可以向处理元件212-做出指示以指示已经在缓冲区222-1和222-2处存储了具有与处理元件212-1相关联的目的地的数据。处理元件212-1处的解密管理器111然后可以确定哪些缓冲区包括加密的数据。
在一些示例中,可以将与具有与处理元件212-1相关联的目的地的多个数据分组相关联的多个报头与其相应的有效负载分开。对于这些示例,可以利用第一分组密码密钥对报头进行集合并一起加密,然后作为一组发送到单个缓冲区。与对独立缓冲区中存储的报头独立地进行解密相比,为解密而将报头进行集合可以减轻处理元件212-1的一些工作负荷。
根据一些示例,解密管理器111可以包括配置成获得或拷贝已经存储在缓冲区222-1处的加密数据的逻辑和/或特征。对于这些示例,解密管理器111还可以包括利用如上所述与加密管理器142交换的第一分组密码密钥对加密数据进行解密的逻辑和/或特征。
在一些示例中,与处理元件212-1合作工作的应用(未示出)可以是I/O设备240接收的数据的目的地。对于这些示例,解密管理器111可以通过执行拷贝和解密操作来获得缓冲区222-1处存储的加密的数据,其中拷贝和解密操作包括在向应用可访问的网络设备200(例如包括在存储器220中)的一部分存储器转发解密的数据之前,拷贝加密的数据并对加密的数据进行解密。在替代示例中,可以向网络设备200上的安全领域发送解密的数据。安全领域可以包括安全元件,以限制对其他元件(例如应用)的访问,使得其他元件可以具有对解密的数据的只读访问。
根据一些示例,缓冲区协调器216可以向加密管理器142指示或通知:先前用于存储加密的数据的共享的缓冲区(例如缓冲区222-1)现在可用于存储后续或额外接收的具有与处理元件212-1或处理元件212-2相关联的目的地的数据。对于这些示例,该指示可以响应于处理元件212-1获得和/或解密缓冲区中存储的加密的数据。缓冲区协调器216可以通过为处理元件212-1更新SRQ 212-1和/或为处理元件212-2更新SRQ 212-2来指示缓冲区的可用性。
在一些示例中,可以将处理元件212-1和212-2实现为处理器210支持的虚拟机。对于这些示例,可以将缓冲区协调器216的功能并入方便控制和/或管理这些虚拟机的VMM或管理程序中。
图3示出了加密管理器142的示例架构的方框图。在一些示例中,加密管理器142包括配置或布置为对在网络设备的I/O设备处接收的至少一部分数据进行加密并向共享的缓冲区转发加密数据的特性和/或逻辑。共享的缓冲区,例如,可以被在网络设备上运行的处理元件访问。根据一些示例,如图3所示,加密管理器142包括加密逻辑310、控制逻辑320、存储器330和输入/输出(I/O)接口340。如图3所示,加密逻辑310可以耦合到控制逻辑320、存储器330和I/O接口340。加密逻辑310可以包括交换特征312、加密数据特性314、缓冲区特征316或指示特征318中的一个或多个或其任意合理的组合。
在一些示例中,图3中绘出的元件被配置成支持或启用如本公开描述的加密管理器142。给定的加密管理器142可以包括图3中描绘的那些元件中的一些、全部或更多。例如,加密逻辑310和控制逻辑320可以独立地或集体地代表实现加密管理器142的特征的多种逻辑设备或可执行内容。示例逻辑设备可以包括以下中的一个或多个,或者其中组合:微处理器、微控制器、处理器电路、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、多核/多线程微处理器的隔离线程或内核、密码分组、卸载处理器。
在一些示例中,如图3所示,加密逻辑310包括交换特征312、加密数据特征314、缓冲区特征316或指示特征318。加密逻辑310可以被配置成使用这些特征中的一个或多个执行操作。例如,交换特征312可以与在网络设备上运行的处理元件独立地交换诸如分组密码密钥的密钥。加密数据特征314可以加密数据的至少一部分。数据可以具有与给定处理元件相关联的目的地,加密数据特征314可以利用与给定处理元件交换的密钥加密数据的至少一部分。缓冲区特征316可以使接收的数据被发送到共享的或分配的缓冲区。指示特征318然后可以向给定处理元件指示哪些缓冲区包括接收的数据。
在一些示例中,控制逻辑320可以被配置成控制加密管理器142的总体运行。如上所述,控制逻辑320可以代表各种逻辑设备或可执行内容的任一种。对于一些示例,控制逻辑320可以被配置成与可执行内容或指令结合运行以实现对加密管理器142的控制。在一些替代示例中,可以在加密逻辑310之内实现控制逻辑320的特征和功能。
根据一些示例,可以布置存储器330以存储可执行内容或指令,以供控制逻辑320和/或加密逻辑310使用。可以使用可执行内容或指令实现或激活加密管理器142的特征、元件或逻辑。如下文更详细所述,也可以布置存储器330以至少暂时维护与上文针对图1和2所述与处理元件交换密钥相关联的信息。也可以布置存储器330以至少暂时维护为了确定哪些缓冲区用于放置利用交换的密钥进行加密的加密的数据以及哪些缓冲区用于放置未加密的数据(例如报头)而收集的信息。
存储器330可以包括多种非易失性存储器介质,包括但不限于:一种或多种类型的闪存、可编程变量或状态、只读存储器(ROM)、随机存取存储器(RAM)、或者其他静态或动态存储介质。
在一些示例中,I/O接口340可以提供:加密管理器142和I/O设备140的元件或网络设备的元件之间经由局部通信介质或链路的接口。I/O接口340可以包括根据各种通信协议或标准运行的,用来通过局部通信介质或链路进行通信的接口。可以在一种或多种行业标准(包括后续版本和变体)中描述这些通信协议或标准,例如与集成电路间(I2C)规范、***管理总线(SMBus)规范、快速***部件互连(PCI Express)规范、通用串行总线(USB)规范或串行高级技术附件(SATA)规范相关联的那些。但本公开不仅限于上述标准和相关联的协议。
图4示出了解密管理器111的示例架构的方框图。在一些示例中,解密管理器111包括配置或布置成获得在网络设备的存储器中维护的共享的或分配的缓冲区中存储的数据,并利用交换的数据对数据的加密的部分进行解密的特征和/或逻辑。根据一些示例,如图4所示,解密管理器111包括解密逻辑410、控制逻辑420、存储器430和输入/输出(I/O)接口440。如图4所示,解密逻辑410可以耦合到控制逻辑420、存储器430和I/O接口440。解密逻辑410可以包括交换特征412、接收特征414、获得特征416或数据解密特征418中的一个或多个,或其任意合理组合。
在一些示例中,图4中绘出的元件被配置成支持或启用如本公开描述的解密管理器111。给定的解密管理器111可以包括图4中描绘的那些元件中的一些、全部或更多。例如,解密逻辑410和控制逻辑420可以独立地或集体地代表实现解密管理器111的特征的多种逻辑设备或可执行内容。示例逻辑设备可以包括以下中的一个或多个,或者其中组合:微处理器、微控制器、处理器电路、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、多核/多线程微处理器的隔离线程或内核、密码分组、卸载处理器。
在一些示例中,如图4中所示,解密逻辑410包括交换特征412、接收特征414、获得特征416或数据解密特征418。解密逻辑410可以被配置成使用这些特征中的一个或多个在解密管理器111位于网络设备的处理元件处或与其位于一起时执行操作。例如,交换特征412可以与网络设备的I/O设备(例如加密管理器142)处的加密管理器交换诸如分组密码密钥的密钥。当具有与处理元件相关联的目的地的接收的数据已经被存储于网络设备的存储器中维护的缓冲区中时,接收特征414可以从加密管理器或I/O设备接收指示。获得特征416可以获得接收的数据,如果数据已加密,数据解密特征418可以利用交换的密钥对数据进行解密。
在一些示例中,控制逻辑420可以被配置成控制解密管理器111的总体运行。如上所述,控制逻辑420可以代表多种逻辑设备或可执行内容中的任一种。对于一些示例,控制逻辑420可以被配置成与可执行内容或指令结合运行以实现对解密管理器111的控制。在一些替代示例中,可以在解密逻辑410之内实现控制逻辑420的特征和功能。
根据一些示例,可以布置存储器430以存储可执行内容或指令,供控制逻辑420和/或解密逻辑410使用。可以使用可执行内容或指令实现或激活解密管理器111的特征、元件或逻辑。如下文更多所述,也可以将存储器430布置成至少暂时维护与上文针对图1和2所述与I/O设备和/或加密管理器交换密钥相关联的信息。也可以布置存储器430以至少暂时维护为了确定哪些缓冲区用于获得利用交换的密钥进行加密的加密的数据以及哪些缓冲区用于获得未加密的数据(例如报头)而收集的信息。
存储器430可以包括多种非易失性存储器介质,包括但不限于:一种或多种类型的闪存、可编程变量或状态、ROM、RAM、或其他静态或动态存储介质。
在一些示例中,I/O接口440可以提供:解密管理器111和位于处理元件、处理器或网络设备的其他设备处或与其位于一起的元件之间经由局部通信介质或链路的接口。I/O接口440可以包括根据各种通信协议或标准运行的,用于通过局部通信介质或链路进行通信的接口。可以在一种或多种行业标准(包括后续版本和变体)中描述这些通信协议或标准,例如与集成电路间(I2C)规范、***管理总线(SMBus)规范、快速***部件互连(PCIExpress)规范、HyperTransport(HT)规范、或Interconnect(QPI)规范相关联的那些。但本公开不仅限于上述标准和相关联的协议。
图5示出了对将要存储于共享的缓冲区中的数据的至少一部分进行加密的示例流程图。在一些示例中,可以使用图1中显示的***100或图2中显示的网络设备200的元件来说明与图5中描绘的流程图相关的示例操作。也可以使用图1-3中显示的加密管理器142来说明示例操作。但所述的示例操作不限于,如上文针对图1-3所述在***100或网络设备200上的实现或者加密管理器142。
从开始移动到方框505(交换密钥),加密管理器142可以包括配置成与在诸如网络设备200的网络设备上运行的处理元件独立地交换密钥(例如经由交换特征312)的逻辑和/或特征。在一些示例中,独立地交换的密钥可以包括分组密码密钥。分组密码密钥可以基于密码标准(包括后续版本和变体),例如三元组数据加密标准(3DES或三元组DES),NationalInstitute of Standards and Technology Special Publication 800-67,2004年出版,或高级加密标准(AES),Federal Information Processing Standards Publication197,2001年出版,但本公开不仅限于基于这些标准和/或出版物的分组密码密钥。本公开还想到了其他类型的密码密钥,例如流密码密钥。
从方框505前进到方框510(接收数据),可以由网络设备的I/O设备(例如I/O设备240)接收具有与给定处理元件(例如处理元件212-1)相关联的目的地的数据。在一些示例中,接收的数据可以是具有报头和有效负载的数据分组的形式。
从方框510前进到决策方框515(加密所有数据?),加密管理器142可以包括配置成确定加密整个接收的数据分组或数据分组的部分(例如,经由数据加密特征314)的逻辑和/或特征。有效负载部分可以是接收的数据分组的第一部分,报头可以是第二部分。在一些示例中,可以仅加密第一部分。对于仅加密第一部分的这些示例,该过程前进到方框520。在其他示例中,报头和有效负载都要被加密。对于两个部分都加密的这些其他示例,该过程移动到方框535。
从决策方框515移动到方框520(加密第一部分),加密管理器142可以包括配置成加密接收的数据分组的第一部分(例如,经由数据加密特征314)的逻辑和/或特征。在一些示例中,加密管理器142可以利用与处理元件212-1交换的分组密码密钥加密第一部分。
从方框520前进到方框525(向共享的缓冲区转发第一部分),加密管理器142可以包括配置成至少使加密的第一部分被发送到在存储器220处维护的一个或多个共享的缓冲区(例如,经由缓冲区特征316)的逻辑和/或特征。在一些示例中,加密管理器142可以利用缓冲区协调器216维护的SRQ 121-1识别哪个(些)缓冲区以发送加密的第一部分。例如,加密管理器142可以将缓冲区222-1识别为一旦发送则至少暂时存储加密的第一部分的共享的缓冲区。
从方框525前进到方框530(向永久地分配的缓冲区转发第二部分),加密管理器142可以包括配置成至少使第二部分被转发到永久地分配给处理元件212-1的缓冲区(例如经由缓冲区特征316)的逻辑和/或特征。例如,可以在存储器220处维护永久地分配的缓冲区。在一些示例中,加密管理器142可以利用缓冲区协调器216维护的ARQ 121-1来识别哪个(些)缓冲区以发送第二部分。例如,加密管理器142可以将缓冲区222-10识别为一旦发送则至少暂时存储第二部分的永久地分配的缓冲区。
从决策方框515移动到方框535(加密所有数据),加密管理器142可以包括配置成加密整个接收的数据分组(例如,经由数据加密特征314)的逻辑和/或特征。在一些示例中,加密管理器142可以利用与处理元件212-1交换的分组密码密钥加密整个数据分组。
从方框535前进到方框540(向共享的缓冲区转发加密的数据),管理器142可以使加密的数据分组被发送到在存储器处维护的一个或多个共享的缓冲区。类似于上文针对方框525描述的示例,加密管理器142可以利用SRQ 121-1识别哪个(些)缓冲区以发送加密的数据分组。
从方框530或方框540前进到方框545(向处理元件指示缓冲区),加密管理器142可以包括配置成指示哪个(些)缓冲区包括针对处理元件212-1的数据(例如,经由指示特征318)的逻辑和/或特征。在一些示例中,加密管理器142可以利用处理元件212-1处的完成队列214-1A指示哪些缓冲区具有加密的数据(例如存储于共享的缓冲区中)或未加密的数据(例如,存储于永久地分配的缓冲区中)。
从方框545前进到决策方框550(更多数据?),加密管理器142可以包括确定(例如经由数据加密特征214)是否需要加密具有与处理元件212-1相关联的目的地的更多数据(例如,额外的数据分组)的逻辑和/或特征。如果需要对更多数据进行加密,该过程移动到决策方框515。否则,该过程结束。
图6示出了用于对存储于共享的缓冲区中的数据的至少一部分进行解密的示例流程图。在一些示例中,可以使用图1中显示的***100或图2中显示的网络设备200的元件来说明与图6中描绘的流程图相关的示例操作。也可以使用如图1、2或4中显示的解密管理器111来说明示例操作。但所述的示例操作不限于上文针对图1、2或4所述在***100或网络设备200上的实现或者解密管理器111。
从开始移动到方框610(交换密钥),处理元件(例如处理元件212-1)处的解密管理器111可以包括配置成与I/O设备240处的加密管理器142的元件或特征交换密钥(例如经由密钥特征412)的逻辑和/或特征。在一些示例中,密钥可以是基于3DES或AES的分组密码密钥。
从方框610前进到方框620(接收缓冲区的指示),解密管理器111可以包括配置成接收以下指示的逻辑和/或特征:接收的数据已经被置于或存储于存储器220之中或之处维护的缓冲区处(例如,经由接收特征414)。在一些示例中,加密管理器142可以在完成队列214-1A中放置指针以指示哪个(些)缓冲区包括接收的数据。
从方框620前进到决策方框630(共享的?),解密管理器111可以包括配置成确定接收的数据已经存储于共享的还是永久地分配的缓冲区中(例如,经由获得特征416)的逻辑和/或特征。在一些示例中,解密管理器111可以将放置于完成队列212-1A中的指针与缓冲区ID队列214-1B进行比较,以确定该指针是否指向被映射到共享的或永久地分配的缓冲区的缓冲区标识符。根据一个示例,完成队列214-1A中到“A”的指针映射到缓冲区ID队列214-1B中的ID-1。解密管理器111然后可以确定ID-1映射到由缓冲区协调器216维护的共享的缓冲区索引211中的缓冲区222-1。对于这个示例,该过程移动到方框640。根据另一个示例,完成队列214-1A中到“J”的指针映射到缓冲区ID队列214-1B中的ID-10。解密管理器111然后可以确定ID-10映射到分配的缓冲区索引213中的缓冲区222-10。对于这一其他示例,该过程前进到方框670。
从决策方框630前进到方框640(获得加密数据),解密管理器111可以包括配置成获得在共享的缓冲区222-1处存储的加密的数据(例如,经由获得特征416)的逻辑和/或特征。在一些示例中,可以经由拷贝缓冲区222-1中存储的加密数据来获得加密的数据。
从方框640前进到方框650(解密数据),解密管理器111可以包括配置成对缓冲区222-1中存储的加密的数据进行解密的逻辑和/或特征。在一些示例中,可以利用如上所述与加密管理器142交换的分组密码密钥对加密的数据进行解密。
从方框650前进到方框660(转发解密的数据),解密管理器111可以包括配置成向I/O设备240接收的数据的最终目的地转发解密的数据的逻辑和/或特征。在一些示例中,最终目的地可以是与处理元件212-1合作工作的应用。对于这些示例,解密管理器111可以向可以被应用访问的网络设备200的存储器(例如存储器220)的一部分转发解密的数据。
从决策方框630移动到方框670(获得数据),解密管理器111获得数据(例如经由获得特征416)。在一些示例中,由于数据存储于永久地分配的缓冲区222-10中,数据未被加密。对于这些示例,可以由解密管理器111经由拷贝缓冲区222-10中存储的数据来获得数据。
从方框670移动到方框680(转发数据),解密管理器111可以向最终目的地转发数据。在一些示例中,最终目的地可以是与处理元件212-1合作工作的应用。对于这些示例,解密管理器111可以向可被应用访问的网络设备200的存储器的一部分转发数据。
从方框660或方框680前进到决策方框690(接收到缓冲区的额外指示?),解密管理器111可以包括确定是否接收到存储数据的缓冲区的额外指示(例如,经由接收特征414)的逻辑和/或特征。如果已经接收到其他指示,该过程移动到决策方框630。否则,该过程结束。
图7示出了示例***700。如图7所示,***700包括管理程序705、操作***710、应用720、网络输入/输出(I/O)设备730、用户输入/输出(I/O)设备740、存储设备750、存储器760、中央处理单元(CPU)770、芯片组780、以及通信设备(Comms)790。根据一些示例,图7中还描绘了几个接口,用于互连和/或通信地耦合***700的元件。例如,用户接口715和接口735可以允许用户(未示出)和/或应用720耦合到操作***710和/或管理程序705。而且,接口735可以允许管理程序705和/或操作***710的元件(例如,设备驱动711)通信耦合到***700的元件,例如网络I/O设备730、用户I/O设备740、存储设备750、存储器760、CPU 770、芯片组780或通信设备790。例如,接口754可以允许***700的硬件和/或固件元件通信地耦合在一起(例如经由***总线或其他类型的内部通信信道)。
在一些示例中,如图7中所示,***100可以包括操作***710。操作***710,例如,可以包括一个或多个操作***。操作***710中包括的独立操作***可以被实现为***700的元件支持的独立虚拟机的一部分。对于这些示例,独立虚拟机可以与在CPU 770中包括的一个或多个处理器相关联。而且,对于这些示例,管理程序705可以充当这些独立虚拟机的虚拟机管理器。
根据一些示例,如图7所示,操作***710可以独立地包括设备驱动711。设备驱动711可以包括配置成与***700的硬件/固件类型元件交互(例如经由接口735)的逻辑和/或特征。例如,设备驱动711可以包括用于控制或指导存储设备750或存储器760完成应用720或操作***710做出的请求的设备驱动。设备驱动711还可以包括允许网络I/O设备730与CPU 770和存储器760交互以经由耦合到***700的通信信道(例如,经由网络I/O设备730或通信设备790)接收/转发数据的设备驱动。
在一些示例中,应用720可以包括可以在***700上实现的应用。对于这些示例,应用720可以请求访问(例如通过操作***710)或使用***的元件,例如用户I/O设备740、存储设备750或存储器760。
根据一些示例,网络I/O设备730可以类似于上文针对图1所述的I/O设备140。对于这些示例,网络I/O设备730可以包括加密管理器142(图7中未示出),其具有配置或布置成对网络I/O设备730接收的数据的至少一部分进行加密,并向共享的缓冲区(例如,在存储器760处维护的)转发加密的数据的逻辑和/或特征。在一些示例中,可以布置网络I/O设备730以起到网络接口卡(NIC)的功能。
在一些示例中,用户I/O设备740可以包括耦合到接口754的一个或多个用户输入设备,用于输入要由***700的元件实现的数据和命令。例如,用户输入设备可以包括键盘、鼠标、触摸屏、跟踪板、跟踪球、isopoint、语音识别***等。类似地,用户I/O设备740可以包括一个或多个耦合到接口754的用户输入设备,用于向操作员或用户输出信息。例如,如果希望的话,用户输出设备可以包括一个或多个显示器、打印机、扬声器、和/或其他输出设备。例如,用户输出设备中的一个可以是显示器。显示器可以是阴极射线管(CRT)、液晶显示器(LCD)、或任何其他类型的显示器。
在一些示例中,存储设备750可以包括布置成在运行的存储模式中实现或运行的各种类型的存储器。存储设备750可以包括不同类型存储设备的至少一个或组合以存储相对大量的数据。这些不同类型的存储设备可以包括但不限于以下中的一个或多个:磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附加存储设备、闪存、电池备份的SDRAM(同步DRAM)、可接入网络的存储设备、和/或其他类型的非易失性存储器(例如,相变材料(PCM))。尽管图7中未示出,但在一些示例中,存储设备750可以是I/O设备140中包括的用户I/O设备。
根据一些示例,存储器760可以包括不同类型存储器的至少一种或组合,包括RAM、DRAM、静态RAM(SRAM)、相变材料RAM(PRAM)、和/或其他类型的易失性存储器。在一些示例中,可以布置存储器760以维护由网络I/O设备730使用的缓冲区(共享的或分配的)、CPU770的元件和/或操作***110,以至少暂时存储接收的数据。对于这些示例,存储器760可以如上所述类似于针对***100或网络设备200的存储器120或存储器220那样工作。
根据一些示例,CPU 770可以被实现为***700的中央处理单元。CPU770可以包括独立地具有一个或多个处理器内核的一个或多个处理器。在一些示例中,CPU 770可以包括类似于针对***100所述的处理器110或针对网络设备200所述的处理器210的一个或多个处理器。而且,CPU 770中包括的处理器可以是任何类型的处理器,例如多核处理器、精简指令集计算机(RISC)、具有管线的处理器、复杂指令集计算机(CISC)、数字信号处理器(DSP)等。
在一些示例中,芯片组780可以提供操作***710、网络用户设备730、用户I/O设备740、存储设备750、存储器760、CPU 770或通信设备790之间的互相通信。例如,芯片组780可以提供操作***710、用户I/O设备740、存储设备750和CPU 770之间的互相通信,以从存储设备750检索信息,以在用户I/O设备740中包括的显示器上显示图形。可以由CPU 770应操作***710中包括的操作***的请求而渲染图形。
在一些示例中,通信设备790可以包括使***700能够在外部与***700远方的元件进行通信的逻辑和/或特征。这些逻辑和/或特征可以包括通过有线、无线或光通信信道进行通信或经由一个或多个有线、无线或光网络的连接。在跨过这样的网络通信时,通信设备790可以根据任何版本的一种或多种适当的通信或连网标准运行。而且,在一些示例中,通信设备790可以与网络I/O设备730集成,以便接收/转发与通信相关联的数据到***700远方的元件。
如上所述,接口754可以允许***700的硬件和/或固件元件通信地耦合在一起。根据一些示例,接口754可以根据一种或多种协议或标准运行。可以在一种或多种行业标准(包括后续版本和变体)中描述这些通信协议或标准,例如与集成电路间(I2C)规范、***管理总线(SMBus)规范、加速图形端口(AGP)规范、快速***部件互连(PCI Express)规范、通用串行总线(USB)规范、高清晰度多媒体接口(HDMI)标准、数字视觉接口(DVI)规范、BluetoothTM规范、或串行高级技术附件(SATA)规范相关联的那些。但本公开不仅限于上述标准和相关联的协议。
在一些示例中,***700可以包括在计算设备中。计算设备的示例可以包括,但不限于服务器、刀片服务器、计算板、台式计算机、个人计算机(PC)或膝上型计算机、超级移动计算机、平板、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、蜂窝电话/PDA的组合、电视、智能设备(例如智能电话、智能平板计算机或智能电视)、移动因特网设备(MID)、消息传递设备、数据通信设备等。
可以由在至少一个机器可读介质上存储的代表性指令实现至少一个示例的一个或多个方面,所述代表性指令代表处理器之内的各种逻辑,其在由机器、计算设备或***读取时,会使机器、计算设备或***建造逻辑以执行本文所述的技术。这种代表被称为“IP内核”,可以存储于有形的机器可读介质上并被供应给各种客户或制造设施以加载到实际制作逻辑或处理器的建造机器中。
可以利用硬件元件、软件元件或两者的组合来实施各种示例。在一些示例中,硬件元件的示例可以包括设备、部件、处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程序逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微片、芯片组等。在一些示例中,软件元件可以包括软件成分、程序、应用、计算机程序、应用程序、***程序、机器程序、操作***软件、中间件、固件、软件模块、例程、子例程、功能、方法、流程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。根据给定实现的需要,确定是否利用硬件元件和/或软件元件实现示例可能根据任意数量的因素而变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储资源、数据总线速度和其他设计或执行约束。
一些示例可以包括一种制品或至少一种计算机可读介质。计算机可读介质可以包括非暂时性存储介质,以存储逻辑。在一些示例中,非暂时性存储介质可以包括一种或多种能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可以包括各种软件元素,例如软件部件、程序、应用、计算机程序、应用程序、***程序、机器程序、操作***软件、中间件、固件、软件模块、例程、子例程、功能、方法、流程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。
根据一些示例,计算机可读介质可以包括非暂时性存储介质,以存储或维护指令,在由机器、计算设备或***执行时,所述指令会使机器、计算设备或***执行根据所述示例的方法和/或操作。指令可以包括任何适当类型的代码,例如源代码、汇编代码、解释的代码、可执行代码、静态代码、动态代码等。可以根据预定义的计算机语言、方式或语法实施指令,以指示机器、计算设备或***执行特定功能。可以利用任何适当的高层次、低层次、面向对象的、视觉、汇编的和/或解释的程序语言实施指令。
可以利用“在一个示例中”或“示例”的表达,连同其派生词描述一些示例。这些术语表示结合该示例描述的特定特征、结构或特性被包括在至少一个示例中。在说明书的各个地方出现的短语“在一个示例中”未必全部指同一示例。
可以利用“耦合的”和“连接的”的表达,连同其派生词描述一些示例。这些术语并非一定意在彼此作为同义词。例如,使用术语“连接的”和/或“耦合的”的描述可以表示两个或更多元件彼此直接物理或电接触。不过,术语“耦合的”也可以表示两个或更多元件并未彼此直接接触,但仍然彼此协作或交互。
要强调的是,提供了本公开的摘要以符合37 C.F.R.1.72(b)节的规定,即需要一份摘要,以让读者能够迅速明白技术公开的实质。提交其的前提是,不将其用于解释或限制权利要求的范围或含义。此外,在以上具体实施方式中可以看出,在单个示例中将各种特征组合在一起以便使公开流畅简洁。本公开的这种方法不应被视为反映例了如下意图,即所主张的示例需要比每个权利要求中明确枚举的更多的特征。相反,如以下权利要求所反映的,本发明的主题体现在比单一公开的示例的所有特征更少的特征中。于是,据此将以下权利要求并入具体实施方式中,每个权利要求自身代表一个独立的示例。在所附权利要求中,使用术语“包括(including)”和“其中(in which)”分别作为相应术语“包括(comprising)”和“其中(wherein)”的平白易懂英语的等价词语。此外,术语“第一”、“第二”、“第三”等仅仅用作标记,并不意在对其对象提出数值要求。
在一些示例中,可以实施第一方法,其包括在网络设备的输入/输出设备和在网络设备上运行的第一处理元件之间交换第一密钥。然后可以在具有与第一处理元件相关联的目的地的输入/输出设备处接收数据。可以利用第一密钥对接收的数据的至少第一部分进行加密,并可以向至少部分在网络设备的存储器中维护的一个或多个缓冲区发送加密的第一部分。可以布置存储器以能够至少与在网络设备上运行的第二处理元件共享一个或多个缓冲区。
根据一些示例,这种第一方法的实现可以包括第一密钥,包括分组密码密钥或流密码密钥中的一个。对于这些示例,分组密码密钥或流密码密钥可以基于三元组数据加密标准(3DES)或高级加密标准(AES)中的一个。
在一些示例中,这种第一方法的实现可以包括向第一处理元件指示已经向一个或多个缓冲区发送了加密的第一部分。可以布置第一处理元件以响应于指示从一个或多个缓冲区获得加密的第一部分。而且,可以布置第一处理元件以利用第一密钥对加密的第一部分进行解密。
根据一些示例,这种第一方法的实现可以包括与第一处理元件相关联的目的地,以包括也与布置成与第一处理元件合作运行的应用相关联的目的地。对于这些示例,第一处理元件可以通过执行拷贝和解密操作获得加密的第一部分,所述拷贝和解密操作包括拷贝数据的加密第一部分,以及在向可被应用访问的网络设备的存储器的一部分发送解密的第一部分之前对加密的第一部分进行解密。
在一些示例中,这种第一方法的实现可以包括在输入/输出设备处接收数据作为具有报头和有效负载的数据分组。对于这些示例,接收的数据的第一部分可以包括有效负载或报头中的一个。如果接收的数据的第一部分包括有效负载,向一个或多个缓冲区发送加密的第一部分可以包括向一个或多个缓冲区中的第一缓冲区发送加密的有效负载。而且,接收的数据的第二部分可以包括报头。可以利用第一密钥对报头独立地加密。然后可以向一个或多个缓冲区中的第二缓冲区发送加密的报头。可以向第一处理元件做出指示:已经向第一缓冲区发送加密的有效负载,并已经向第二缓冲区发送加密的报头。响应于该指示,可以布置第一处理元件以从第一缓冲区获得加密的有效负载,并从第二缓冲区获得加密的报头。而且,可以布置第一处理元件以利用第一密钥对加密的有效负载和加密的报头进行解密。
根据一些示例,该第一方法的实现可以包括包括有效负载的接收的数据的第一部分。发送加密的第一部分可以包括向一个或多个缓冲区中的第一缓冲区发送加密的有效负载。接收的数据的第二部分可以包括报头,可以向一个或多个缓冲区中的第二缓冲区发送报头。对于这些示例,可以向第一处理元件做出指示:已经向第一缓冲区发送了加密的有效负载并向第二缓冲区发送了报头,响应于该指示,布置第一处理元件以从第一缓冲区获得加密的有效负载,并从第二缓冲区获得报头,还布置第一处理元件以利用第一密钥对加密的有效负载进行解密。
在一些示例中,该第一方法的实现可以包括包括有效负载的接收的数据的第一部分,包括报头的接收的数据的第二部分,其向网络设备的存储器中维护的缓冲区发送报头,该缓冲区被永久地分配到第一处理元件。对于这些示例,可以向第一处理元件做出指示:已经向第一缓冲区发送了加密的有效负载并向永久地分配的缓冲区发送了报头,响应于该指示,可以布置第一处理元件以从第一缓冲区获得加密的有效负载,并从永久地分配的缓冲区获得报头。还可以布置第一处理元件以利用第一密钥对加密的有效负载进行解密。
根据一些示例,该第一方法的实现可以包括作为多核处理器的独立内核或多核处理器的一个或多个内核上实现的独立虚拟机中的一个的第一处理元件和第二处理元件。对于这些示例,第一处理元件和第二处理元件可以是相应的第一和第二虚拟机。网络设备可以包括虚拟机管理器以建立包括一个或多个缓冲区的缓冲区的池。第一和第二虚拟机可以具有对缓冲区的池的只读访问权。可以向第一虚拟机做出指示:已经向一个或多个缓冲区发送了数据的加密的第一部分。可以布置第一虚拟机以响应于指示,从一个或多个缓冲区获得加密的第一部分。还可以布置第一虚拟机以利用第一密钥对加密的第一部分进行解密。虚拟机管理器响应于第一虚拟机对数据的第一部分进行解密,可以向输入/输出设备指示:一个或多个缓冲区可用于至少暂时存储额外地接收的具有与第一虚拟机或第二虚拟机相关联的目的地的数据。
根据一些示例,至少一种包括多条指令的机器可读介质响应于在计算设备上被执行,使计算设备执行如上所述的示例第一方法。
在一些示例中,装置或设备可以包括用于执行如上所述的示例第一方法的单元。
在一些示例中,可以实施第二方法,其包括在网络设备的输入/输出设备和在网络设备上运行的第一处理元件之间交换第一密钥。还可以接收指示,即已经利用第一密钥加密了被输入/输出设备接收且具有与第一处理元件相关联的目的地的数据的至少第一部分。该指示还可以包括信息,以指示加密的第一部分被存储于至少部分在网络设备的存储器中维护的一个或多个缓冲区中。可以布置存储器以能够至少与在网络设备上运行的第二处理元件共享一个或多个缓冲区。然后可以响应于接收到指示从一个或多个缓冲区获得加密的第一部分,并可以利用第一密钥对加密的第一部分进行解密。
根据一些示例,该第二方法的实现可以包括第一密钥,其具有分组密码密钥或流密码密钥中的一个。分组密码密钥可以基于3DES或AES中的一个。
根据一些示例,该第二方法的实现可以包括与第一处理元件相关联的目的地,以包括也与被布置成与第一处理元件合作运行的应用相关联的目的地。指令还可以使***让第一处理元件通过执行拷贝和解密操作获得加密的第一部分,所述拷贝和解密操作包括拷贝数据的加密第一部分,以及在向可被应用访问的网络设备的存储器一部分发送解密的第一部分之前对加密的第一部分进行解密。
根据一些示例,该第二方法的实现可以包括第一处理元件和第二处理元件,作为多核处理器一个或多个内核上实现的相应的第一和第二虚拟机。网络设备可以包括虚拟机管理器以建立包括一个或多个缓冲区的缓冲区的池。第一和第二虚拟机可以具有对缓冲区的池的只读访问权。
根据一些示例,该第二方法的实现可以包括虚拟机管理器向输入/输出设备发送指示:一个或多个缓冲区可用于至少暂时存储额外地接收的具有与第一虚拟机或第二虚拟机相关联的目的地的数据。可以响应于第一虚拟机对数据的第一部分进行解密而发送指示。
根据一些示例,至少一种包括多条指令的机器可读介质响应于在计算设备上被执行,使计算设备执行如上所述的示例第二方法。
在一些示例中,装置或设备可以包括用于执行如上所述的示例第二方法的单元。
根据一些示例,在网络设备的输入/输出设备处维护的示例设备或设备可以包括处理器电路和通信地耦合到处理器电路的存储器单元。可以布置存储器单元以存储用于在处理器电路上运行的逻辑的指令。可以配置逻辑以与在网络设备上运行的第一处理元件交换第一密钥。也可以配置逻辑以对由输入/输出设备接收的数据的至少第一部分进行加密。接收的数据具有与第一处理元件相关联的目的地。可以利用第一密钥对数据的第一部分进行加密。还可以配置该逻辑以使加密的第一部分被发送到至少部分在网络设备的存储器中维护的一个或多个缓冲区。可以布置存储器以能够至少与在网络设备上运行的第二处理元件共享一个或多个缓冲区。
在针对示例设备的一些示例中,存储器单元可以包括易失性存储器。
根据针对示例设备的一些示例,第一密钥可以包括分组密码密钥或流密码密钥中的一个。分组密码密钥或流密码密钥可以基于三元组数据加密标准(3DES)或高级加密标准(AES)中的一个。
在针对示例设备的一些示例中,还可以配置逻辑以向第一处理元件指示:已经向一个或多个缓冲区发送了加密的第一部分。可以布置第一处理元件以响应于指示,从一个或多个缓冲区获得加密的第一部分。还可以布置第一处理元件以利用第一密钥对加密的第一部分进行解密。对于这些示例,由输入/输出设备接收的数据可以是具有报头和有效负载的数据分组。接收的数据的第一部分可以包括有效负载或报头中的一个。而且,如果第一部分包括有效负载,该逻辑可以使加密的第一部分被发送到一个或多个缓冲区中的第一缓冲区。接收的数据的第二部分可以包括报头。还可以配置该逻辑以利用第一密钥独立地加密报头并使加密的报头被发送到一个或多个缓冲区中的第二缓冲区。
根据针对示例设备的一些示例,第一处理元件和第二处理元件可以是在多核处理器一个或多个内核上实现的相应的第一和第二虚拟机。网络设备可以包括虚拟机管理器以建立包括一个或多个缓冲区的缓冲区的池。第一和第二虚拟机可以具有对缓冲区的池的只读访问权。对于这些示例,还可以配置逻辑以向第一虚拟机指示:已经向一个或多个缓冲区发送了数据的加密的第一部分。可以布置第一虚拟机以响应于指示,从一个或多个缓冲区获得加密的第一部分。还可以布置第一虚拟机以利用第一密钥对加密的第一部分进行解密。还可以配置逻辑以从虚拟机管理器接收指示:一个或多个缓冲区可用于至少暂时存储额外地接收的具有与第一虚拟机或第二虚拟机相关联的目的地的数据。可以响应于第一虚拟机对数据的第一部分进行解密而接收指示。
尽管已经以结构特征和/或方法动作特有的语言描述了主题,但要理解,所附权利要求中所定义的主题未必限于上述具体特征或动作。相反,公开上述具体特征和动作是作为实现权利要求的示例形式。
Claims (25)
1.一种在网络设备的输入/输出设备处执行的方法,包括:
在网络设备的输入/输出设备和在所述网络设备上运行的第一处理元件之间交换密钥;
在所述输入/输出设备处接收具有报头和有效负载的数据分组,所述数据分组具有与所述第一处理元件相关联的目的地;
利用所述密钥对所述有效负载进行加密;
向至少部分在所述网络设备的存储器中维护的第一缓冲区发送加密的有效负载,所述存储器被布置成能够至少与在网络设备上运行的第二处理元件共享所述第一缓冲区;以及
向至少部分在所述存储器中维护的第二缓冲区发送所述数据分组的所述报头,所述第二缓冲区被分配到所述第一处理元件并且不与所述第二处理元件共享或者不可被所述第二处理元件访问。
2.根据权利要求1所述的方法,包括:所述密钥包括分组密码密钥或流密码密钥中的一个,所述分组密码密钥或所述流密码密钥基于三元组数据加密标准(3DES)或高级加密标准(AES)中的一个。
3.根据权利要求1所述的方法,包括向所述第一处理元件指示已经向所述第一缓冲区发送了所述加密的有效负载,所述第一处理元件被布置成响应于所述指示从所述第一缓冲区获得所述加密的有效负载,所述第一处理元件还被布置成利用所述密钥对所述加密的有效负载进行解密。
4.根据权利要求3所述的方法,包括:与所述第一处理元件相关联的目的地包括也与布置成与所述第一处理元件合作运行的应用相关联的目的地,所述第一处理元件通过执行拷贝和解密操作而获得所述加密的有效负载,所述拷贝和解密操作包括拷贝所述加密的有效负载,以及在向可被应用访问的网络设备的存储器的部分发送解密的有效负载之前对所述加密的有效负载进行解密。
5.根据权利要求1所述的方法,包括向所述第一处理元件指示已经向所述第一缓冲区发送了所述加密的有效负载,并已经向所述第二缓冲区发送了所述报头,响应于所述指示,所述第一处理元件被布置成从所述第一缓冲区获得所述加密的有效负载,并从所述第二缓冲区获得所述报头,所述第一处理元件还被布置成利用所述密钥对所述加密的有效负载进行解密。
6.根据权利要求1所述的方法,包括所述第一处理元件和所述第二处理元件,作为多核处理器的独立内核或多核处理器的一个或多个内核上实现的独立虚拟机中的一个。
7.根据权利要求6所述的方法,包括所述第一处理元件和所述第二处理元件作为相应的第一和第二虚拟机,所述网络设备包括虚拟机管理器,以建立包括所述第一缓冲区和所述第二缓冲区的缓冲区的池。
8.根据权利要求7所述的方法,包括向所述第一虚拟机指示已经向所述第一缓冲区发送了所述加密的有效负载,所述第一虚拟机被布置成响应于所述指示从所述第一缓冲区获得所述加密的有效负载,所述第一虚拟机还被布置成利用所述密钥对所述加密的有效负载进行解密。
9.根据权利要求8所述的方法,包括所述虚拟机管理器响应于所述第一虚拟机对所述有效负载进行解密,向所述输入/输出设备指示所述第一缓冲区可用于至少暂时存储额外地接收的具有与所述第一虚拟机或所述第二虚拟机相关联的目的地的数据。
10.一种在网络设备的输入/输出设备处维护的装置,包括用于执行权利要求1到9的任一项所述的方法的单元。
11.至少一种包括多条指令的机器可读介质,所述指令响应于在计算设备上被执行,使所述计算设备执行根据权利要求1到9的任一项的方法。
12.一种在网络设备的输入/输出设备处维护的装置,包括:
处理器电路;以及
通信耦合到所述处理器电路的存储器单元,所述存储器单元被布置成存储用于在所述处理器电路上运行的逻辑的指令,所述逻辑被配置成与在所述网络设备上运行的第一处理元件交换密钥,所述逻辑还被配置成加密由所述输入/输出设备接收的、还具有报头的数据分组的有效负载,接收的数据分组具有与所述第一处理元件相关联的目的地,所述有效负载利用所述密钥被加密,所述逻辑还被配置成使加密的有效负载被发送到至少部分在所述网络设备的存储器中维护的第一缓冲区,所述存储器被布置成实现与在所述网络设备上运行的至少第二处理元件共享所述第一缓冲区,以及向至少部分在所述存储器中维护的第二缓冲区发送所述数据分组的所述报头,所述第二缓冲区被分配到所述第一处理元件并且不与所述第二处理元件共享或者不可被所述第二处理元件访问。
13.根据权利要求12所述的装置,包括所述存储单元包括易失性存储器。
14.根据权利要求12所述的装置,包括所述密钥包括分组密码密钥或流密码密钥中的一个,所述分组密码密钥或所述流密码密钥基于三元组数据加密标准(3DES)或高级加密标准(AES)中的一个。
15.根据权利要求12所述的装置,包括所述逻辑还被配置成向所述第一处理元件指示已经向所述第一缓冲区发送了所述加密的有效负载,所述第一处理元件被布置成响应于所述指示从所述第一缓冲区获得所述加密的有效负载,所述第一处理元件还被布置成利用所述密钥对所述加密的有效负载进行解密。
16.根据权利要求12所述的装置,包括所述第一处理元件和所述第二处理元件作为多核处理器的一个或多个内核上实现的相应的第一和第二虚拟机,所述网络设备包括虚拟机管理器,以建立包括所述第一缓冲区和所述第二缓冲区的缓冲区的池。
17.根据权利要求16所述的装置,包括配置成向所述第一虚拟机指示已经向所述第一缓冲区发送了所述加密的有效负载的逻辑,所述第一虚拟机被布置成响应于所述指示从所述第一缓冲区获得所述加密的有效负载,所述第一虚拟机还被布置成利用所述密钥对所述加密的有效负载进行解密。
18.根据权利要求17所述的装置,包括所述逻辑还被配置成从所述虚拟机管理器接收指示:所述第一缓冲区可用于至少暂时存储额外地接收的具有与所述第一虚拟机或所述第二虚拟机相关联的目的地的数据,响应于所述第一虚拟机对所述有效负载进行解密而接收所述指示。
19.一种在网络设备的输入/输出设备处执行的方法,包括:
在网络设备的输入/输出设备和在所述网络设备上运行的第一处理元件之间交换密钥;
接收指示:已经利用所述密钥加密由所述输入/输出设备接收的并具有与所述第一处理元件相关联的目的地的数据分组的有效负载,所述指示还包括信息以指示:所述加密的有效负载存储在至少部分在所述网络设备的存储器中维护的第一缓冲区中,所述存储器被布置成实现与在所述网络设备上运行的至少第二处理元件共享所述第一缓冲区,所述信息还指示所述数据分组的报头被存储到至少部分在所述存储器中维护的第二缓冲区,所述第二缓冲区被分配到所述第一处理元件并且不与所述第二处理元件共享或者不可被所述第二处理元件访问;
响应于接收到所述指示,从所述第一缓冲区获得所述加密的有效负载并且从所述第二缓冲区获得所述报头;以及
利用所述密钥对所述加密的有效负载进行解密。
20.根据权利要求19所述的方法,包括所述密钥包括分组密码密钥或流密码密钥中的一个,所述分组密码密钥基于三元组数据加密标准(3DES)或高级加密标准(AES)中的一个。
21.根据权利要求19所述的方法,包括与所述第一处理元件相关联的目的地,以包括也与布置成与所述第一处理元件合作运行的应用相关联的目的地,所述第一处理元件通过执行拷贝和解密操作获得所述加密的有效负载,所述拷贝和解密操作包括拷贝所述加密的有效负载,以及在向用于可被应用访问的网络设备的存储器的部分发送解密的有效负载之前对所述加密的有效负载进行解密。
22.根据权利要求19所述的方法,包括所述第一处理元件和所述第二处理元件,作为在多核处理器的一个或多个内核上实现的相应的第一和第二虚拟机,所述网络设备包括虚拟机管理器,以建立包括所述第一缓冲区和所述第二缓冲区的缓冲区的池。
23.根据权利要求22所述的方法,包括所述虚拟机管理器向所述输入/输出设备发送指示:所述第一缓冲区可用于至少暂时存储额外地接收的具有与所述第一虚拟机或所述第二虚拟机相关联的目的地的数据,响应于所述第一虚拟机对所述有效负载进行解密而发送所述指示。
24.一种在网络设备的输入/输出设备处维护的装置,包括用于执行权利要求19到23的任一项所述的方法的单元。
25.至少一种包括多条指令的机器可读介质,所述指令响应于在计算设备上被执行,使所述计算设备执行根据权利要求19到23的任一项的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/031023 WO2013147773A1 (en) | 2012-03-28 | 2012-03-28 | Shared buffers for processing elements on a network device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104221000A CN104221000A (zh) | 2014-12-17 |
CN104221000B true CN104221000B (zh) | 2018-05-01 |
Family
ID=49260838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280071802.0A Active CN104221000B (zh) | 2012-03-28 | 2012-03-28 | 用于网络设备上的处理元件的共享的缓冲区 |
Country Status (4)
Country | Link |
---|---|
KR (1) | KR101684042B1 (zh) |
CN (1) | CN104221000B (zh) |
DE (1) | DE112012006148B4 (zh) |
WO (1) | WO2013147773A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963183B2 (en) * | 2017-03-20 | 2021-03-30 | Intel Corporation | Technologies for fine-grained completion tracking of memory buffer accesses |
US11500737B2 (en) * | 2019-05-21 | 2022-11-15 | Mellanox Technologies, Ltd. | Coherent capturing of shared-buffer status |
JP7280508B2 (ja) * | 2019-09-19 | 2023-05-24 | 富士通株式会社 | 情報処理装置、情報処理方法および仮想マシン接続管理プログラム |
US12008413B2 (en) | 2021-07-29 | 2024-06-11 | International Business Machines Corporation | Vector processing employing buffer summary groups |
US20230030241A1 (en) * | 2021-07-29 | 2023-02-02 | International Business Machines Corporation | Intersystem processing employing buffer summary groups |
KR20240093723A (ko) * | 2022-03-31 | 2024-06-24 | 엘지전자 주식회사 | 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303302A (en) * | 1992-06-18 | 1994-04-12 | Digital Equipment Corporation | Network packet receiver with buffer logic for reassembling interleaved data packets |
US7269744B1 (en) * | 2000-09-29 | 2007-09-11 | Intel Corporation | System and method for safeguarding data between a device driver and a device |
JP2003204326A (ja) * | 2002-01-09 | 2003-07-18 | Nec Corp | 通信システムと暗号処理機能付きlan制御装置、及び通信制御プログラム |
US7308000B2 (en) * | 2002-11-07 | 2007-12-11 | Sun Microsystems, Inc. | Methods and systems for efficient multi-packet data processing in a layered network protocol |
US20040168081A1 (en) * | 2003-02-20 | 2004-08-26 | Microsoft Corporation | Apparatus and method simplifying an encrypted network |
US7783769B2 (en) * | 2004-03-31 | 2010-08-24 | Intel Corporation | Accelerated TCP (Transport Control Protocol) stack processing |
CA2584525C (en) * | 2004-10-25 | 2012-09-25 | Rick L. Orsini | Secure data parser method and system |
US20060195704A1 (en) * | 2005-01-27 | 2006-08-31 | Hewlett-Packard Development Company, L.P. | Disk array encryption element |
JP4667108B2 (ja) * | 2005-04-11 | 2011-04-06 | パナソニック株式会社 | データ処理装置 |
US8650397B2 (en) * | 2008-09-24 | 2014-02-11 | Telefonaktiebolaget L M Ericsson (Publ) | Key distribution to a set of routers |
GB2466651A (en) * | 2008-12-31 | 2010-07-07 | St Microelectronics | Security co-processor architecture for decrypting packet streams |
US8499148B2 (en) | 2009-11-02 | 2013-07-30 | Chi Eng | System and method for virtual team collaboration in a secure environment |
-
2012
- 2012-03-28 KR KR1020147027239A patent/KR101684042B1/ko active IP Right Grant
- 2012-03-28 CN CN201280071802.0A patent/CN104221000B/zh active Active
- 2012-03-28 WO PCT/US2012/031023 patent/WO2013147773A1/en active Application Filing
- 2012-03-28 DE DE112012006148.9T patent/DE112012006148B4/de active Active
Also Published As
Publication number | Publication date |
---|---|
DE112012006148T5 (de) | 2015-01-15 |
KR20140138800A (ko) | 2014-12-04 |
WO2013147773A1 (en) | 2013-10-03 |
DE112012006148B4 (de) | 2023-02-23 |
KR101684042B1 (ko) | 2016-12-07 |
CN104221000A (zh) | 2014-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
CN104221000B (zh) | 用于网络设备上的处理元件的共享的缓冲区 | |
US11651092B2 (en) | Techniques to provide client-side security for storage of data in a network environment | |
US12019562B2 (en) | Cryptographic computing including enhanced cryptographic addresses | |
US9910793B2 (en) | Memory encryption engine integration | |
US9973335B2 (en) | Shared buffers for processing elements on a network device | |
US11831663B2 (en) | Secure networking protocol optimization via NIC hardware offloading | |
US10560262B2 (en) | Information-processing system, information-processing apparatus, management apparatus, and processing method | |
US10810138B2 (en) | Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME) | |
CN107430670A (zh) | 用于存储器保护的柔性计数器*** | |
US20100293345A1 (en) | Network communications processor architecture with memory load balancing | |
US10691627B2 (en) | Avoiding redundant memory encryption in a cryptographic protection system | |
CN108370382A (zh) | 用于虚拟机之间的数据传输的可缩放技术 | |
US11526451B2 (en) | Secure address translation services using bundle access control | |
WO2022227317A1 (zh) | 基于区块链的资源转移方法、装置、电子设备及存储介质 | |
EP3930253A1 (en) | High throughput post quantum aes-gcm engine for tls packet encryption and decryption | |
CN109901909A (zh) | 用于虚拟化***的方法及虚拟化*** | |
US10241922B2 (en) | Processor and method | |
CN107250995A (zh) | 存储器管理设备 | |
CN114969851B (zh) | 一种基于fpga的数据处理方法、装置、设备及介质 | |
US20230058668A1 (en) | Selective cache line memory encryption | |
AU2021341467B2 (en) | Quantum controller fast path interface | |
CN106209370A (zh) | 椭圆曲线密码芯片装置、***及数据缓存控制方法 | |
Qureshi et al. | A lightweight and secure framework for hybrid cloud based EHR systems | |
US20240089083A1 (en) | Secure multiparty compute using homomorphic encryption |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |