CN111480328B - 将通信安全操作卸载到网络接口控制器 - Google Patents
将通信安全操作卸载到网络接口控制器 Download PDFInfo
- Publication number
- CN111480328B CN111480328B CN201880079802.2A CN201880079802A CN111480328B CN 111480328 B CN111480328 B CN 111480328B CN 201880079802 A CN201880079802 A CN 201880079802A CN 111480328 B CN111480328 B CN 111480328B
- Authority
- CN
- China
- Prior art keywords
- cryptographic security
- protocol
- data packet
- nic
- state context
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
计算装置(22)包括主机处理器(30),该主机处理器(30)运行虚拟机监控器(VMM)(40),该VMM 40支持多个虚拟机(38)并且包括密码安全软件模块(54)。网络接口控制器(NIC)(32)将主机处理器链接到网络(28)以便向虚拟机发送数据分组和从虚拟机接收数据分组,并且包括密码安全硬件逻辑模块(44),该密码安全硬件逻辑模块(44)在由VMM调用时对数据分组施加密码安全协议,同时保持该协议关于每个虚拟机的状态上下文。在当施加密码安全协议时遇到异常之后,NIC将数据分组连同密码安全协议关于给定虚拟机的状态上下文一起传送到密码安全软件模块以供进行处理。
Description
技术领域
本发明总体上涉及计算机网络通信,并且具体涉及用于对通过网络发送和接收的数据分组执行安全相关操作的装置和方法。
背景技术
因特网协议安全(Internet Protocol Security,IPsec)是一个对通过网络发送的数据分组进行认证和加密的网络协议套件(network protocol suite)。IPsec操作因特网协议(IP)套件的因特网层(一般称为网络层,或第3层),并且可以自动保护IP数据分组中传输的应用和数据。IPsec使用密码安全服务来支持网络级对等认证、数据来源认证、数据完整性、数据机密性(加密)和重放保护。IPsec还包括用于在会话开始时在代理之间建立相互认证以及协商在会话期间使用的密码密钥的协议。IPsec体系结构和操作功能在因特网工程任务组(Internet Engineering Task Force,IETF)在线发布的一系列征求意见(Request for Comment,RFC)中进行了规定,包括RFC 4301、RFC 4303和RFC 4106。
在流行的实现中使用的IPsec的特定功能包括以下各项:
·认证报头(Authentication Header,AH)被添加到IPsec分组,以提供IP数据报的无连接数据完整性和数据来源认证,连同针对重放攻击的保护。AH包含32位序列号和完整性检验值。为了防范重放攻击,序列号永远不会在给定的安全关联中重复使用,并且当序列号达到其最大值时,会协商新的安全关联。
·封装安全净荷(Encapsulating Security Payload,ESP)是一种加密净荷格式,其提供保密性、数据来源认证、无连接完整性、防重放服务和有限的业务流保密性。在隧道模式下,整个原始IP分组都封装有添加的新的分组报头,并且将ESP保护施加于整个内IP分组(包括报头),而用于网络路由的外报头保持不受保护。
·安全关联(Security Association,SA)提供用于导出和协商IPsec端点对之间AH和/或ESP操作所必需的参数的算法和数据。安全关联数据库(security associationdatabase,SAD)定义与每个SA相关联的参数。
由于IPsec为计算密集型,因此一些作者建议将IPsec处理从主机处理器卸载到网络接口控制器(NIC)。例如,美国专利8,006,297描述了用于组合安全协议和分组过滤器卸载和加载的方法和系统。该专利描述了一种NIC,其包括:安全关联数据库(SADB),其包括多个安全关联(SA);密码卸载引擎,其被配置用于使用多个SA中之一对分组进行解密;安全策略数据库(security policy database,SPD),其包括:多个安全策略(security policy,SP)和多个过滤器策略;以及策略引擎,其被配置用于使用来自SPD的多个SP中之一确定分组的进入权,并将多个过滤器策略中之一施加于分组。
作为另一示例,美国专利申请公开2010/0228962描述了对经由转发设备在第一计算机与第二计算机之间根据安全协议发送的分组数据进行的密码保护处理的卸载。转发设备执行部分处理,并将分组数据转发到与转发设备相连接的第三计算机以进行其他处理。第三计算机可以支持安全协议的非标准扩展,例如在安全协议上授权和建立连接中使用的扩展。第三计算机将其处理结果(诸如密码密钥或检测到的访问控制策略)发送到转发设备。
发明内容
下文描述的本发明实施方式提供了用于将安全相关功能卸载到硬件逻辑的改进的装置和方法。
因此,根据本发明的实施方式,提供了一种计算装置,包括:主机处理器,其被配置用于运行虚拟机监控器(virtual machine monitor,VMM),该VMM支持在所述主机处理器上运行的多个虚拟机,并且包括密码安全软件模块,所述密码安全软件模块被配置用于对由所述虚拟机中的一个或多个虚拟机发送和接收的数据分组施加密码安全协议。网络接口控制器(NIC)被配置用于将所述主机处理器链接到网络,以便通过所述网络向所述虚拟机发送所述数据分组和从所述虚拟机接收所述数据分组,并且所述NIC包括密码安全硬件逻辑模块,所述密码安全硬件逻辑模块被配置用于在由所述VMM调用时,对由所述虚拟机中的一个或多个虚拟机发送和接收的数据分组施加密码安全协议,同时保持所述密码安全协议关于所述虚拟机中的一个或多个虚拟机中的每一个的状态上下文。NIC被配置用于,在当对指向给定虚拟机的数据分组施加所述密码安全协议时遇到异常之后,将所述数据分组连同所述密码安全协议关于所述给定虚拟机的状态上下文一起传送到所述VMM的所述密码安全软件模块,所述密码安全软件模块使用所述状态上下文处理所述数据分组,并在处理后将所述数据分组传递给所述给定虚拟机。
在所公开的实施方式中,所述VMM被配置用于施加所述密码安全协议以及调用所述密码安全硬件逻辑模块,而无需所述虚拟机参与所述密码安全协议的调用或实现。
在一些实施方式中,所述VMM被配置用于,当所述NIC遇到所述异常时,通过与所述NIC执行预定义握手来获取所述密码安全协议关于所述给定虚拟机的状态上下文。所述预定义握手例如包括从所述NIC查询和接收分组序列号信息,以及更新在所述密码安全协议中使用的重放保护信息。
在一个实施方式中,所述异常包括在所述数据分组的发送者施加所述密码安全协议之后对所述数据分组进行分片,并且其中所述VMM被配置用于对所述数据分组进行分片整理。
在公开的实施方式中,所述VMM被配置用于,在处理所述数据分组之后,通过使经处理的数据分组通过所述NIC循环到所述给定虚拟机,来将经处理的数据分组传递到所述给定虚拟机。
在一些实施方式中,所述NIC被配置用于使用所述密码安全协议的状态上下文对从所述给定虚拟机向指定目的地发送的数据分组施加封装,同时保持使用所述状态上下文发送的数据的计数,并且当所述计数达到预定义的限制时,停止向所述指定目的地发送所述数据分组,并将所述状态上下文传送到所述VMM的所述密码安全软件模块以供更新所述状态上下文。附加地或替代地,所述NIC被配置用于使用所述密码安全协议的状态上下文,对从所述网络接收到的封装数据分组施加解封装,以及在从所述VMM接收到终止所述解封装的指令之后,使所述接收到的数据分组循环回到所述网络。
在示例实施方式中,所述密码安全协议包括IPsec协议。
根据本发明的实施方式,还提供了一种计算装置,包括:网络接口,其被配置用于连接到网络;以及主机接口,其被配置用于连接到主机计算机的外围组件总线。嵌入式控制器被配置用于运行密码安全软件模块,所述密码安全软件模块对由所述主机计算机上运行的应用发送和接收的数据分组施加密码安全协议。分组处理硬件逻辑耦合在所述主机接口与所述网络接口之间,以便通过所述网络向所述主机计算机上运行的所述应用发送数据分组和从所述主机计算机上运行的所述应用接收数据分组,并且所述分组处理硬件逻辑包括密码安全硬件逻辑模块,所述密码安全硬件逻辑模块被配置用于在由所述嵌入式控制器调用时,对由所述应用中的一个或多个应用发送和接收的数据分组施加所述密码安全协议,同时保持所述密码安全协议关于所述应用中的一个或多个应用中的每一个的状态上下文。分组处理硬件逻辑被配置用于,在当对指向给定应用的数据分组施加所述密码安全协议时遇到异常之后,将所述数据分组连同所述密码安全协议关于所述给定应用的状态上下文一起传送到所述嵌入式控制器的密码安全软件模块,所述密码安全软件模块使用所述状态上下文处理所述数据分组,并在处理后将所述数据分组传递给所述给定应用。
在公开的实施方式中,所述嵌入式控制器被配置用于施加所述密码安全协议以及调用所述密码安全硬件逻辑模块,而无需所述应用参与所述密码安全协议的调用或实现。
根据本发明的实施方式,另外提供一种计算方法,其包括:在可编程处理器上运行密码安全软件模块,所述密码安全软件模块被配置用于对由主机计算机上运行的应用发送和接收的数据分组施加密码安全协议。将网络接口控制器(NIC)耦合在主机处理器与网络之间,以便通过所述网络向所述应用发送所述数据分组和从所述应用接收所述数据分组。所述密码安全软件模块调用所述NIC中的密码安全硬件逻辑模块,从而使所述密码安全硬件逻辑模块对由所述应用中的一个或多个应用发送和接收的数据分组施加所述密码安全协议,同时保持所述密码安全协议关于所述应用中的一个或多个应用中的每一个的状态上下文。在所述密码安全硬件逻辑模块中,在当对指向给定应用的数据分组施加所述密码安全协议时遇到异常之后,将所述数据分组连同所述密码安全协议关于所述给定应用的状态上下文一起传送到在所述可编程处理器上运行的所述密码安全软件模块。使用所述状态上下文和所述密码安全软件模块在所述可编程处理器上处理所述数据分组,并在处理后将所述数据分组传递给所述给定应用。
通过以下对本发明实施方式的详细描述并结合附图,将会更充分地理解本发明,其中:
附图说明
图1是示意性地图示根据本发明实施方式的联网计算机系统的框图。
图2是示意性地图示根据本发明实施方式的网络接口控制器(NIC)和运行于主机处理器上的软件的细节的框图;
图3是示出根据本发明实施方式,在NIC与运行于主机处理器上的软件之间交换的通信的梯形图;
图4是示意性地图示根据本发明实施方式,用于在NIC与虚拟机监控器(virtualmachine monitor,VMM)之间执行安全相关握手的方法的流程图;以及
图5是示意性地图示根据本发明实施方式,带有具有嵌入式控制器的NIC的主机计算机的框图。
具体实施方式
概述
考虑到诸如IPsec之类的密码安全协议中涉及的繁重计算负担,将处理任务卸载到NIC是理想的解决方案。诸如IPsec等协议的核心计算功能可以在密码安全硬件逻辑模块中高效实现,该密码安全硬件逻辑模块可被设计成在不降低NIC数据吞吐量的情况下执行必要的分组处理。
然而,几乎每种协议都有其异常,这样的异常不在核心逻辑功能范围内。例如,在IP网络中,在发送节点被施加AH或ESP的分组可能会在前往目的地的途中被分片成较小的分组。接收节点必须在AH认证和解封装之前首先对这些分组进行分片整理。在NIC中实现此类分片整理需要大量的存储器和重新排序逻辑,这会增加芯片大小和处理延迟。
作为另一个示例,出于重放保护的原因,IPsec要求将给定的SA上下文用于不超过一定数目的数据分组或一定量的数据。IPsec端点应该保持使用当前SA传输的数据的计数,并继而在计数达到预定义的限制时协商新的SA。在这样的情况下,在NIC中的硬件逻辑中实现此类功能性也是不切实际的。
针对上述各种问题的一种解决方案是,NIC只需在发生异常时丢弃分组,并在需要时依靠高级软件来恢复和调用重传。这些种类的解决方案一般要求发送和接收分组的软件应用知晓并参与密码安全协议。这样的软件参与增添到施加在CPU上的处理负担,并且增加了分组延迟并降低了吞吐量。
本文描述的本发明实施方式通过在NIC中的密码安全硬件逻辑模块与在特权域中运行于处理器上的密码安全软件模块之间的新颖协作的手段来解决这些问题。该域是“特权的”,原因在于其可以访问并且能够更改密码安全协议的状态上下文,其中该上下文包括在加密和认证中使用的参数,诸如分组序列号、计数器和密码密钥。如下文描述的实施方式中所示,这样的特权域的示例包括运行虚拟机的主机计算机中的虚拟机监控器(virtualmachine monitor,VMM,也称为管理程序),或者智能NIC中的嵌入式可编程控制器。特权软件模块能够施加密码安全协议和调用密码安全硬件逻辑模块,而无需经由NIC发送和接收分组的(非特权)用户域应用的参与。实际上,用户域应用甚至不需要知晓正在向其所发送和接收的分组施加分组加密或认证。
在所公开的实施方式中,当要对由一个或多个应用(包括在给定虚拟机上运行的应用)发送和接收的数据分组施加密码安全时,密码安全软件模块调用NIC中的密码安全硬件逻辑模块。硬件逻辑模块继而将会对这些应用所发送和接收的数据分组施加适当的安全操作,同时保持关于所讨论的每个应用的密码安全协议的状态上下文。当安全硬件逻辑模块在将密码安全协议施加于指向给定应用的数据分组(诸如分片的分组)时遇到异常时,其将数据分组连同适用的状态上下文一起传送到密码安全软件模块。该软件模块使用状态上下文处理数据分组,并将经处理的数据分组传递给适当的应用。
为了清楚和明确起见,下面描述的实施方式具体涉及IPsec加密、认证和封装。然而,本发明的原理绝不限于IPsec,并且可以备选地适用于实现本领域中已知的其他密码安全协议,特别是基于数据报的分组加密、认证和封装协议。此类协议的示例包括IEEE标准802.1AE定义的媒体访问控制安全(Media Access Control Security,MACsec)和RFC 4347中规定的数据报传输层安全(Datagram Transport Layer Security,DTLS)。
系统描述
图1是示意性地图示根据本发明实施方式的联网计算机系统20的框图。系统20包括多个主机计算机22、24、26,…(也简称为“主机”),该多个主机计算机通过分组数据网络28进行通信。通常,尽管并非必须,数据网络28是第3层网络,诸如IP网络,并且因而包括第3层路由器36以及交换机34,主机22、24、26,…可以通过所述第3层路由器36以及交换机34连接到网络。然而,本发明的原理类似地适用于其他种类的数据网络,例如InfiniBand网络;并且本文描述的方法和电路可以用于支持各种分组级别的密码安全协议,包括第2层协议和第3层协议。
在该示例中,每个主机22、24、26包括中央处理器(CPU)30(其通常包括一个或多个处理核心(未示出)),并伴有系统存储器31和网络接口控制器(NIC)32。NIC 32通过总线33连接到CPU 30和存储器31,并经由交换机34中之一连接到网络28。总线33例如可以包括外围组件总线,诸如PCI总线,或者CPU的专用系统总线。如下文进一步描述,可以调用NIC 32中的密码安全硬件逻辑模块44,以对去往和来自网络28的传出数据分组和传入数据分组施加密码安全协议(诸如IPsec)。
主机22、24、26支持虚拟机环境,其中多个虚拟机38(在图1中标记为VM1、VM2、VM3)可以在任何给定的CPU 30上运行。CPU本机域中的虚拟机监控器(VMM)40以模拟主机处理器并允许虚拟机共享CPU资源的方式与虚拟机38的来宾操作系统的内核进行交互。
NIC 32包括分组处理电路,该分组处理电路被配置成对于在CPU30上运行的程序来说表现为多个虚拟NIC(vNIC)42。在称为单根I/O虚拟化(single-root I/Ovirtualization,SR-IOV)的模型中,每个虚拟机38与NIC 32交互,就如同NIC是专用于该虚拟机一样,从而将虚拟机链接到网络28上的其他机器(虚拟机和/或物理机)。在这方面,NIC32充当虚拟交换机,从而将每个虚拟机连接到特定租户网络,同时允许vNIC 42共享通往底层数据网络28的同一物理端口。
这样的NIC功能虚拟化还通过将IPsec功能从VMM 40卸载到NIC 32而得到支持,如下文更详细地解释。在图1中所示的示例中,主机22中的VM2和主机24中的VM3驻留在同一租户网络上。在本领域中已知的网络虚拟化系统中,为了向VM3发送IPsec分组,VM2将分组提交给主机22中的VMM 40;并且VMM添加AH,封装该分组并将其传输到主机24中的VMM,该VMM继而对分组进行认证、解封装并将其传递给VM3。相比之下,在本实施方式中,主机22中的VM2经由相应的NIC 32之间的IPsec隧道46与主机24中的VM3进行通信,而甚至不必知晓IPsec认证或封装正在发生。
图2是示意性地示出根据本发明实施方式的NIC 32和运行于CPU 30上的软件的细节的框图。运行于CPU 30上的软件,包括操作系统和应用程序,可以例如通过网络以电子形式下载到CPU。附加地或替代地,该软件可以储存在可体现于存储器31中的有形的非暂时性计算机可读介质上,诸如光、磁或电子存储器介质上。
CPU 30操作本机域48,该本机域48具有主机操作系统50和其他特权功能,包括IPsec软件模块54。此外,CPU同时运行一个或多个虚拟机38,如上所述,每个虚拟机38具有其自己的来宾操作系统52和来宾用户应用56。(为简单起见,在图2中仅示出一个来宾OS。)本机域48中的VMM 40以模拟主机处理器和允许虚拟机共享CPU 30的资源的方式与来宾操作系统52的内核进行交互。种类繁多的此类虚拟机软件可供市售,而进一步的描述不在本公开的范围内。
诸如用户应用56等客户机进程通过操纵称为“队列对”(queue pair,QP)的传输服务实例与网络28的传输层通信。为了使用NIC 32通过网络发送和接收消息,客户机将称为工作队列元素(work queue element,WQE)的工作项提交到适当的队列,以由NIC执行。如图1中所示,NIC 32对于每个虚拟机38来说表现为专用的I/O设备或vNIC,以供该虚拟机在其被分配的虚拟租户网络上直接通信时使用。这样的配置使VMM 40上和主机操作系统50上的通信负担最小化。
NIC 32包括连接到主机计算机22的总线33的主机接口,诸如PCIe接口,以及包括连接到网络28的一个或多个端口62的网络接口。NIC32中的分组处理硬件逻辑64耦合于主机接口60与网络端口62之间,并且包括发送(Tx)管道66和接收(Rx)管道68,所述Tx管道66和Rx管道68响应于应用56所发布的WQE而向网络28发送数据分组和从网络28接收数据分组。Tx管道66通过构成分组报头,从存储器31中将指定数据读取到分组净荷中,以及继而将分组发送到网络28来执行WQE。Rx管道68接收传入分组,将分组数据写入存储器31,并且通知目的地应用(例如,通过发布存储器31中适当队列中的完成队列项),以及通过网络28向分组的发送者返回确认。这些基本分组发送和接收操作在本领域中是众所周知的。例如,在美国专利9,462,047中描述了与NIC 32相关联的虚拟化功能的更多细节,该专利的公开内容通过引用并入于此。
分组处理硬件逻辑64还包括密码安全硬件逻辑模块44,该密码安全硬件逻辑模块44被配置用于当由IPsec软件模块54调用时,对由Tx管道66和Rx管道68发送和接收的数据分组施加IPsec安全功能。这些安全功能通常包括向发送的分组添加IPsec认证报头,以及使用这些报头对接收的分组进行认证和防止重放攻击,以及上述RFC中所述的ESP加密、解密、封装、解封装和隧道化(tunneling)。
例如,可以引入硬件逻辑模块44作为管道66和管道68内的流引导中的一个阶段。这样的流引导通常使用分组引导表,该分组引导表包含以报头字段值为键的引导指令,例如,在美国专利申请公开2013/0114599和2016/0359768中所述,其公开内容通过引用并入。流引导条目可以指示出哪些流需要进行IPsec处理,以及哪些IPsec操作应当施加于每个流。
管道66和管道68中的流引导机制由可通过软件配置的流引导条目管控。流引导处理从针对Tx管道66的单个流引导根条目以及针对Rx管道68的另一流引导根条目开始。流引导条目被添加到根条目以形成流引导树,该流引导树为非循环图。IPsec流引导条目可以指定要由硬件逻辑模块44执行的一个或多个行动,例如:
1.加密/解密和认证。
2.检查针对重放窗口的重放保护。
3.添加/删除IPsec报头。
这些功能可以相结合以提供完全IPsec卸载,并且可以与不相关于IPsec的流引导条目(诸如各种报头匹配功能)交错。
例如,在Rx管道68中,针对接收到的分组的流引导树可能包括以下条目序列和对应的行动:
1.检查目的地媒体访问控制(MAC)地址。
2.检查IP地址。
3.检查IPsec ESP的安全参数索引(Security Parameters Index,SPI)。
4.IPsec解密和认证。
5.检查和更新IPsec重放保护。
6.删除ESP报头(解封装分组)。
7.在解封装后解析分组。
8.检查IP地址,并且如果与现有列表不匹配则丢弃。
9.检查传输协议端口,并且如果不匹配则丢弃。
10.施加高级卸载功能。
在所有引导阶段均已成功完成之后,NIC 32将分组传递给其目的地进程。然而,在IPsec处理阶段之一中发生异常的情况下,NIC 32会将分组传递给VMM 40以供软件处理。另一方面,如果分组不满足适用的安全策略所规定的IPsec保护要求,则NIC 32将会完全阻止该分组。
在Tx管道66中,安全策略规则被包含在引导树中以选择SAD中要用于每个传出分组流的条目,这转而将会确定该分组是否将被引用给硬件逻辑模块44以供IPsec处理,并且如果是这样,要施加哪些IPsec功能。根据某些报头字段(诸如IP报头、传输报头和/或封装报头)为每个分组选择SAD条目。因此,针对传出分组的流引导树可能包括以下条目序列和对应的行动:
1.检查目的地MAC地址。
2.检查IP地址。
3.检查传输报头。
4.为该流选择SAD条目。
5.添加ESP报头。
6.加密和认证分组。
备选地,根据在步骤4选择的SAD条目,Tx管道66中的引导逻辑可以决定绕过进一步的IPsec处理或者有可能丢弃分组。
当其他行动与IPsec结合时,可能会出现更复杂的用例。例如,流引导条目可以指挥Rx管道68以解封装和处理封装在虚拟可扩展LAN(Virtual Extensible LAN,VXLAN)分组中的IPsec分组,或者封装在IPsec分组内的VXLAN分组。可以类似地指挥Tx管道66以执行此类多级封装。
硬件逻辑模块44保持关于IPsec软件模块54在VMM 40的控制下调用IPsec服务所针对的每个应用56或虚拟机38的IPsec状态上下文70。如果需要模块44处理大量的分组流,则可将状态上下文数据储存在存储器31中,并根据需要缓存在NIC 32中。上下文70包含SA数据库,该SA数据库保存用于认证和封装分组的密钥和加密参数。通常,上下文70还包括计数器72,该计数器72按照IPsec协议的要求来跟踪分组序列号、重放保护窗口以及所发送的字节和/或分组的数目。在上下文70中保持的信息的更多细节可参见上述RFC4301。
当在对发往或来自给定虚拟机38或应用56的给定分组施加强制IPsec处理时遇到异常后,硬件逻辑模块44将该分组或流传送到IPsec软件模块54以供进一步处理。硬件逻辑模块44还将针对给定虚拟机或应用的对应状态上下文70传送到软件模块54。VMM 40使用软件模块54中的该状态上下文,以对虚拟机或应用透明的方式继续处理分组或流。
在一些实施方式中,在VMM 40已经解决异常之后,硬件逻辑模块44继续处理流中的后续分组。备选地,在VMM已处理异常之后,该流的所有其他卸载(或者具体地,对该IPsecSA的处理)终止,并且该流中的所有后续分组完全由VMM处理。在一些情况下,诸如在非初始IP分片中遇到的异常,只有在完全处理了异常以允许流的正确识别之后,这样的终止才有可能。
异常处理
如上所述,当硬件逻辑模块44在对指向给定虚拟机38的数据分组施加所需IPsec操作中遇到异常时,硬件逻辑模块将数据分组连同关于给定虚拟机的IPsec状态上下文70一起传送到IPsec软件模块54。该软件模块使用状态上下文来处理数据分组,并在处理后将数据分组传递到给定虚拟机,同时更新状态上下文(例如,包括重放保护数据和序列号)。下面将会参考图3描述关于分片分组的此类处理的一个示例。
在状态和规则对于让硬件逻辑模块44保持和识别而言过于复杂(诸如复杂的防火墙规则)的其他情况下,发生从硬件到软件的类似类型的移交。例如,当某个VM 38要求NIC32发送对于在封装之后发送而言过大并且需要IP分片的分组时,可能会发生异常。硬件逻辑模块44在加密、认证和封装之后识别该异常,并将分组传递给VMM 40以供在分片之后进行重传。
作为另一示例,当应加密的分组在配置了用于处理该分组的任何密码信息之前被发送时,硬件逻辑模块44可能遇到异常。在接收到该分组之后,VMM 40将会接管并执行握手以配置密码信息。
图3是示出根据本发明实施方式,在NIC 32与运行于CPU 30上的软件之间交换的通信的梯形图。在此描述中,VMM 40采取的行动包括由IPsec软件模块54执行的功能。在正常操作中,NIC 32从网络28接收发往给定VM 38的IPSec分组80,并在硬件逻辑模块44中处理分组80以适当地认证和解封装该分组。NIC 32继而将对应的分组数据82写入存储器31,并通知适当的VM 38。如前文所述,VM不参与IPsec功能,并且可能甚至不知晓这样的功能正在被施加于VM所发送和接收的分组。
然而,当NIC 32接收到IPsec分片84时,硬件逻辑模块44识别出该分组已被分片,并通知VMM 40发生了异常86。(例如,当诸如主机24等分组发送者对大型分组施加IPsec认证和/或封装,并且路由器36中之一将原始的大型分组分解成较小的IP分组以供传输到主机22上时可能发生这种类型的分片。)具体而言,NIC 32通常将分组分片写入存储器31以供由软件处理,并在队列中放入事件报告以供由VMM 40处理。在接收和解析事件报告后,VMM40在分片整理步骤88处从存储器31中的分片读取并重新组装原始分组的碎片。
另外,IPsec软件模块54与硬件逻辑模块44执行握手90,以便在状态上下文70中检索和更新处理经分片整理的分组所需的参数。握手90的细节在图4中示出。握手90可以与分片整理步骤88同时或在其之前进行,而不是在分片整理之后进行,如图3中所示。
一旦IPsec软件模块54完成分片整理步骤88和握手90,它就能够对接收到的分组执行所需的IPsec处理操作。作为握手的一部分,NIC 32将当前IPsec扩展序列号(extendedsequence number,ESN)传递给VMM 40,以用于解密经分片整理的分组数据。(假设解密成功,VMM 40更新由硬件逻辑模块44在重放保护中使用的上下文信息,并且模块44因此能够继续处理该流中的后续分组。)在IPsec处理完成之后,VMM 40继而通过使经处理的数据分组循环通过NIC32,将经处理的数据分组传递给目的地VM 38。换句话说,VMM 40将恢复的分组92写入NIC 32,就如同其正在通过网络28将分组发送到任何目的地VM一样。NIC 32对恢复的分组92施加其通常的SR-IOV虚拟交换功能,以便将对应的分组数据94写入VM 38。因此,VM 38仍然不知晓所施加的IPsec处理和异常处理链。
图4是示意性地示出根据本发明实施方式的握手90的细节的流程图。如上所述,当NIC 32在给定分组或流的IPsec处理中遇到异常时,VMM 40使用这样的握手来获取关于该分组或流所发往的VM 38的IPsec状态上下文70。握手中的步骤是通过在VMM 40与NIC 32之间通过总线33读取和写入指令和数据来执行的。图4示出了这样的握手的一个示例,但根据交换的协议和上下文信息,还可以使用替代的实现方式。
VMM 40(或IPsec软件模块54)在查询步骤100处向NIC 32查询IPsec处理中使用的分组序列号信息。例如,VMM 40可以请求对接收到的分组进行认证和解密所需的,IPsec扩展序列号(ESN)的最高有效位(most significant bit,MSB)。在查询响应步骤102处,NIC32将该信息从IPsec状态上下文70返回到VMM 40。
VMM 40还在原子更新步骤104处对IPsec中使用的重放保护信息执行原子读取和更新操作。该步骤固定IPsec中使用的滑动窗口的值以防止重放攻击,并且因此确保VMM 40不会将被重放的分组传递给VM 38。一旦握手完成,VMM 40在移交步骤106处接管处理在该IPsec SA中发生的异常(例如,分组分片)。VMM 40更新IPsec状态上下文70,从而使得NIC32中的硬件逻辑模块44能够继续处理流中的后续分组。
作为另一示例(图中未明确示出),NIC 32中的硬件逻辑模块44可以使用针对每个虚拟机38的适当状态上下文70对传出分组和传入分组施加IPsec ESP封装、解封装和隧道化。根据IPsec要求,模块使用计数器72来保持使用给定SA传送的数据(例如,通过特定IPsec隧道发送或接收的数据)的计数。当计数达到预定义限制时,NIC 32将会停止发送或接收数据分组,并且将会向VMM 40传送对应的状态上下文70以供对状态上下文进行更新。在这个阶段,VMM40可以通过网络28与远程主机协商新的SA,随之ESP操作可以重新开始。
作为另一示例,NIC 32中的硬件逻辑模块44可以使用状态上下文70对来自网络28的传入分组进行解封装。在从VMM 40接收终止解封装的指令后,NIC 32可以将接收到的数据分组循环回网络28,并且还可以对传出分组执行附加的IPsec功能。
备选实施方式–智能NIC
图5是示意性地图示根据本发明实施方式,带有包括嵌入式控制器114的“智能NIC”112的主机计算机110的框图。该实施方式以与上述实施方式类似的方式处理IPsec卸载,不同之处在于NIC 112中的IPsec硬件逻辑模块44与运行于嵌入式控制器114而不是CPU30上的IPsec软件模块116进行交互。上文参考NIC 32和VMM 40所述的其中将状态上下文传送到IPsec软件模块的IPsec卸载特征可以同样地比照适用于智能NIC 112。计算机主机110中运行在CPU 30上的应用和虚拟机可以类似地不知晓NIC 112所施加的IPsec功能。
如在前述实施方式中那样,NIC 112包括连接到网络28的网络端口62和连接到计算机110的总线33的主机接口60。分组处理硬件逻辑64耦合在主机接口60与网络端口62之间,以便通过网络向运行于CPU 30上的应用发送数据分组和从运行于CPU 30上的应用接收数据分组。IPsec硬件逻辑模块44在由嵌入式控制器114调用时,对由运行于CPU 30上的一个或多个应用发送和接收的数据分组施加IPsec处理,同时保持关于这些应用中的每一个的IPsec状态上下文(如图2中所示)。
在本实施方式中,运行于嵌入式控制器114上的IPsec软件模块116被配置用于适当地施加IPsec处理和调用硬件逻辑模块44。当硬件逻辑模块44在对指向给定应用的数据分组施加IPsec中遇到异常时,模块44将数据分组连同对应的IPsec状态上下文传送到IPsec软件模块116。继而,嵌入式控制器114使用状态上下文处理数据分组,并在处理后将数据分组传递到CPU 30上的给定应用。
尽管上文具体参考IPsec描述了计算机22和110的特征,但这些计算机的硬件和软件体系结构以及操作方法可以类似地比照适用于其他密码安全协议的卸载。因此,应当理解,上述实施方式是作为示例引用的,且本发明不受上述的具体表示和描述的限制。相反,本发明的范围包括上述各个特征的组合和子组合,以及本领域技术人员在阅读以上描述时所想到的,且未在现有技术中公开的变化和修改。
Claims (23)
1.一种计算装置,包括:
主机处理器,其被配置用于运行虚拟机监控器(virtual machine monitor,VMM),所述虚拟机监控器支持在所述主机处理器上运行的多个虚拟机,并且包括密码安全软件模块,所述密码安全软件模块被配置用于对由所述虚拟机中的一个或多个虚拟机发送和接收的数据分组施加密码安全协议;以及
网络接口控制器(NIC),其被配置用于将所述主机处理器链接到网络,以便通过所述网络向所述虚拟机发送所述数据分组和从所述虚拟机接收所述数据分组,并且所述NIC包括密码安全硬件逻辑模块,所述密码安全硬件逻辑模块被配置用于在由所述VMM调用时,对由所述虚拟机中的一个或多个虚拟机发送和接收的数据分组施加所述密码安全协议,同时保持所述密码安全协议关于所述虚拟机中的一个或多个虚拟机中的每一个的状态上下文,
其中,所述NIC被配置用于,在当对指向给定虚拟机的数据分组施加所述密码安全协议时遇到异常之后,将所述数据分组连同所述密码安全协议关于所述给定虚拟机的状态上下文一起传送到所述VMM的所述密码安全软件模块,所述密码安全软件模块使用所述状态上下文处理所述数据分组,并在处理后将所述数据分组传递给所述给定虚拟机。
2.根据权利要求1所述的装置,其中所述VMM被配置用于施加所述密码安全协议以及调用所述密码安全硬件逻辑模块,而无需所述虚拟机参与所述密码安全协议的调用或实现。
3.根据权利要求1所述的装置,其中所述VMM被配置用于,当所述NIC遇到所述异常时,通过与所述NIC执行预定义握手来获取所述密码安全协议关于所述给定虚拟机的状态上下文。
4.根据权利要求3所述的装置,其中所述预定义握手包括从所述NIC查询和接收分组序列号信息,以及更新在所述密码安全协议中使用的重放保护信息。
5.根据权利要求1所述的装置,其中所述异常包括在所述数据分组的发送者施加所述密码安全协议之后对所述数据分组进行分片,并且其中所述VMM被配置用于对所述数据分组进行分片整理。
6.根据权利要求1所述的装置,其中所述VMM被配置用于,在处理所述数据分组之后,通过使经处理的数据分组通过所述NIC循环到所述给定虚拟机,来将经处理的数据分组传递到所述给定虚拟机。
7.根据权利要求1-6中的任一项所述的装置,其中所述NIC被配置用于使用所述密码安全协议的状态上下文对从所述给定虚拟机向指定目的地发送的数据分组施加封装,同时保持使用所述状态上下文发送的数据的计数,并且当所述计数达到预定义的限制时,停止向所述指定目的地发送所述数据分组,并将所述状态上下文传送到所述VMM的所述密码安全软件模块以供更新所述状态上下文。
8.根据权利要求1-6中的任一项所述的装置,其中所述NIC被配置用于使用所述密码安全协议的状态上下文,对从所述网络接收到的封装数据分组施加解封装,以及在从所述VMM接收到终止所述解封装的指令之后,使所述接收到的数据分组循环回到所述网络。
9.根据权利要求1-6中的任一项所述的装置,其中所述密码安全协议包括IPsec协议。
10.一种计算装置,包括:
网络接口,其被配置用于连接到网络;
主机接口,其被配置用于连接到主机计算机的外围组件总线;
嵌入式控制器,其被配置用于运行密码安全软件模块,所述密码安全软件模块对由所述主机计算机上运行的应用发送和接收的数据分组施加密码安全协议;以及
分组处理硬件逻辑,其耦合在所述主机接口与所述网络接口之间,以便通过所述网络向所述主机计算机上运行的所述应用发送数据分组和从所述主机计算机上运行的所述应用接收数据分组,并且所述分组处理硬件逻辑包括密码安全硬件逻辑模块,所述密码安全硬件逻辑模块被配置用于在由所述嵌入式控制器调用时,对由所述应用中的一个或多个应用发送和接收的数据分组施加所述密码安全协议,同时保持所述密码安全协议关于所述应用中的一个或多个应用中的每一个的状态上下文,
其中,所述分组处理硬件逻辑被配置用于,在当对指向给定应用的数据分组施加所述密码安全协议时遇到异常之后,将所述数据分组连同所述密码安全协议关于所述给定应用的状态上下文一起传送到所述嵌入式控制器的密码安全软件模块,所述密码安全软件模块使用所述状态上下文处理所述数据分组,并在处理后将所述数据分组传递给所述给定应用。
11.根据权利要求10所述的装置,其中所述嵌入式控制器被配置用于施加所述密码安全协议以及调用所述密码安全硬件逻辑模块,而无需所述应用参与所述密码安全协议的调用或实现。
12.根据权利要求10或11所述的装置,其中所述密码安全协议包括IPsec协议。
13.一种计算方法,包括:
在可编程处理器上运行密码安全软件模块,所述密码安全软件模块被配置用于对由主机计算机上运行的应用发送和接收的数据分组施加密码安全协议;
将网络接口控制器(NIC)耦合在主机处理器与网络之间,以便通过所述网络向所述应用发送所述数据分组和从所述应用接收所述数据分组;
通过所述密码安全软件模块调用所述NIC中的密码安全硬件逻辑模块,从而使所述密码安全硬件逻辑模块对由所述应用中的一个或多个应用发送和接收的数据分组施加所述密码安全协议,同时保持所述密码安全协议关于所述应用中的一个或多个应用中的每一个的状态上下文;
在所述密码安全硬件逻辑模块中,在当对指向给定应用的数据分组施加所述密码安全协议时遇到异常之后,将所述数据分组连同所述密码安全协议关于所述给定应用的状态上下文一起传送到在所述可编程处理器上运行的所述密码安全软件模块;以及
使用所述状态上下文和所述密码安全软件模块在所述可编程处理器上处理所述数据分组,并在处理后将所述数据分组传递给所述给定应用。
14.根据权利要求13所述的方法,其中所述可编程处理器包括嵌入在所述NIC中的控制器。
15.根据权利要求13所述的方法,其中所述可编程处理器被包括在所述主机计算机的中央处理器(CPU)中并且运行虚拟机监控器(VMM),所述VMM支持在所述主机计算机上运行的多个虚拟机并且包括密码安全软件模块,并且其中所述应用中的一个或多个应用在所述虚拟机中的一个或多个虚拟机上运行。
16.根据权利要求13所述的方法,其中施加所述密码安全协议并且调用所述密码安全硬件逻辑模块,而无需所述应用参与所述密码安全协议的调用或实现。
17.根据权利要求13所述的方法,其中传送所述状态上下文包括在所述密码安全软件模块与所述NIC之间执行预定义握手。
18.根据权利要求17所述的方法,其中所述预定义握手包括从所述NIC查询和接收分组序列号信息,以及更新在所述密码安全协议中使用的重放保护信息。
19.根据权利要求13所述的方法,其中所述异常包括在所述数据分组的发送者施加所述密码安全协议之后对所述数据分组进行分片,并且其中对所述数据分组进行处理包括对所述数据分组进行分片整理。
20.根据权利要求13所述的方法,其中将所述数据分组传递到所述给定应用包括使经处理的数据分组通过所述NIC循环到所述给定应用。
21.根据权利要求13至20中的任一项所述的方法,其中调用所述密码安全硬件逻辑模块使所述NIC使用所述密码安全协议的状态上下文对从所述给定应用向指定目的地发送的数据分组施加封装,同时保持使用所述状态上下文发送的数据的计数,并且当所述计数达到预定义的限制时,停止向所述指定目的地发送所述数据分组,并将所述状态上下文传送到所述密码安全软件模块以供更新所述状态上下文。
22.根据权利要求13至20中的任一项所述的方法,其中调用所述密码安全硬件逻辑模块使所述NIC使用所述密码安全协议的状态上下文对从所述网络接收到的封装数据分组施加解封装,以及在从所述密码安全软件模块接收到终止所述解封装的指令之后,使接收到的数据分组循环回到所述网络。
23.根据权利要求13至20中的任一项所述的方法,其中所述密码安全协议包括IPsec协议。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/841,339 US10708240B2 (en) | 2017-12-14 | 2017-12-14 | Offloading communication security operations to a network interface controller |
US15/841,339 | 2017-12-14 | ||
PCT/IB2018/059824 WO2019116195A1 (en) | 2017-12-14 | 2018-12-10 | Offloading communication security operations to a network interface controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111480328A CN111480328A (zh) | 2020-07-31 |
CN111480328B true CN111480328B (zh) | 2022-08-02 |
Family
ID=64959385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880079802.2A Active CN111480328B (zh) | 2017-12-14 | 2018-12-10 | 将通信安全操作卸载到网络接口控制器 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10708240B2 (zh) |
EP (1) | EP3725056B1 (zh) |
CN (1) | CN111480328B (zh) |
WO (1) | WO2019116195A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11005771B2 (en) | 2017-10-16 | 2021-05-11 | Mellanox Technologies, Ltd. | Computational accelerator for packet payload operations |
US11502948B2 (en) | 2017-10-16 | 2022-11-15 | Mellanox Technologies, Ltd. | Computational accelerator for storage operations |
US11095617B2 (en) | 2017-12-04 | 2021-08-17 | Nicira, Inc. | Scaling gateway to gateway traffic using flow hash |
US10708240B2 (en) * | 2017-12-14 | 2020-07-07 | Mellanox Technologies, Ltd. | Offloading communication security operations to a network interface controller |
CN110300064A (zh) * | 2018-03-22 | 2019-10-01 | 华为技术有限公司 | 一种数据流量处理方法、设备及系统 |
US11347561B1 (en) | 2018-04-30 | 2022-05-31 | Vmware, Inc. | Core to resource mapping and resource to core mapping |
US12238076B2 (en) * | 2018-10-02 | 2025-02-25 | Arista Networks, Inc. | In-line encryption of network data |
US11184439B2 (en) | 2019-04-01 | 2021-11-23 | Mellanox Technologies, Ltd. | Communication with accelerator via RDMA-based network adapter |
US11277343B2 (en) | 2019-07-17 | 2022-03-15 | Vmware, Inc. | Using VTI teaming to achieve load balance and redundancy |
US11416435B2 (en) * | 2019-09-03 | 2022-08-16 | Pensando Systems Inc. | Flexible datapath offload chaining |
WO2021050478A1 (en) * | 2019-09-11 | 2021-03-18 | Arris Enterprises Llc | Device-independent authentication based on a passphrase and a policy |
US11336629B2 (en) * | 2019-11-05 | 2022-05-17 | Vmware, Inc. | Deterministic load balancing of IPSec packet processing |
US11509638B2 (en) | 2019-12-16 | 2022-11-22 | Vmware, Inc. | Receive-side processing for encapsulated encrypted packets |
CN114095153B (zh) | 2020-08-05 | 2024-12-17 | 迈络思科技有限公司 | 密码数据通信装置 |
IL276538B2 (en) | 2020-08-05 | 2023-08-01 | Mellanox Technologies Ltd | A cryptographic device for data communication |
US11841985B2 (en) * | 2020-09-03 | 2023-12-12 | Pensando Systems Inc. | Method and system for implementing security operations in an input/output device |
US11556378B2 (en) * | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
CN112822164B (zh) * | 2020-12-29 | 2023-11-03 | 北京八分量信息科技有限公司 | 大数据系统中安全访问数据的方法、系统及相关产品 |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
DE102021203323A1 (de) * | 2021-04-01 | 2022-10-06 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren, System und Domäne zum Bereitstellen einer Sicherheits-Ausführungsumgebung für sicherheitsrelevante Anwendungen |
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 |
CN116069695A (zh) | 2021-11-03 | 2023-05-05 | 迈络思科技有限公司 | 使用外围设备进行存储器访问跟踪 |
US12056072B1 (en) * | 2021-12-03 | 2024-08-06 | Amazon Technologies, Inc. | Low latency memory notification |
US11863514B2 (en) | 2022-01-14 | 2024-01-02 | Vmware, Inc. | Performance improvement of IPsec traffic using SA-groups and mixed-mode SAs |
US20220231991A1 (en) * | 2022-03-28 | 2022-07-21 | Intel Corporation | Method, system and apparatus for inline decryption analysis and detection |
US11956213B2 (en) | 2022-05-18 | 2024-04-09 | VMware LLC | Using firewall policies to map data messages to secure tunnels |
CN115529180B (zh) * | 2022-09-28 | 2024-05-31 | 芯云晟(杭州)电子科技有限公司 | IPSec加解密卸载方法 |
US12117948B2 (en) | 2022-10-31 | 2024-10-15 | Mellanox Technologies, Ltd. | Data processing unit with transparent root complex |
US12007921B2 (en) | 2022-11-02 | 2024-06-11 | Mellanox Technologies, Ltd. | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1657878A1 (en) * | 2004-11-12 | 2006-05-17 | Microsoft Corporation | Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management |
US7716730B1 (en) * | 2005-06-24 | 2010-05-11 | Oracle America, Inc. | Cryptographic offload using TNICs |
CN103051510A (zh) * | 2011-09-07 | 2013-04-17 | 微软公司 | 网络策略向网络接口卡的安全和高效卸载 |
US8549345B1 (en) * | 2003-10-31 | 2013-10-01 | Oracle America, Inc. | Methods and apparatus for recovering from a failed network interface card |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6904519B2 (en) * | 1998-06-12 | 2005-06-07 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
US7600131B1 (en) | 1999-07-08 | 2009-10-06 | Broadcom Corporation | Distributed processing in a cryptography acceleration chip |
US9444785B2 (en) | 2000-06-23 | 2016-09-13 | Cloudshield Technologies, Inc. | Transparent provisioning of network access to an application |
US20040039940A1 (en) | 2002-08-23 | 2004-02-26 | Koninklijke Philips Electronics N.V. | Hardware-based packet filtering accelerator |
US7269171B2 (en) | 2002-09-24 | 2007-09-11 | Sun Microsystems, Inc. | Multi-data receive processing according to a data communication protocol |
US6901496B1 (en) | 2002-10-04 | 2005-05-31 | Adaptec, Inc. | Line rate buffer using single ported memories for variable length packets |
US20050102497A1 (en) | 2002-12-05 | 2005-05-12 | Buer Mark L. | Security processor mirroring |
US7587587B2 (en) * | 2002-12-05 | 2009-09-08 | Broadcom Corporation | Data path security processing |
US7290134B2 (en) | 2002-12-31 | 2007-10-30 | Broadcom Corporation | Encapsulation mechanism for packet processing |
WO2005024568A2 (en) * | 2003-08-19 | 2005-03-17 | General Dynamics Advanced Information Systems, Inc. | Trusted interface unit (tiu) and method of making and using the same |
US8341237B2 (en) | 2006-10-23 | 2012-12-25 | International Business Machines Corporation | Systems, methods and computer program products for automatically triggering operations on a queue pair |
US7657659B1 (en) | 2006-11-30 | 2010-02-02 | Vmware, Inc. | Partial copying of data to transmit buffer for virtual network device |
KR101490327B1 (ko) | 2006-12-06 | 2015-02-05 | 퓨전-아이오, 인크. | 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법 |
US8006297B2 (en) * | 2007-04-25 | 2011-08-23 | Oracle America, Inc. | Method and system for combined security protocol and packet filter offload and onload |
US20090086736A1 (en) | 2007-09-28 | 2009-04-02 | Annie Foong | Notification of out of order packets |
US8244826B2 (en) | 2007-10-23 | 2012-08-14 | International Business Machines Corporation | Providing a memory region or memory window access notification on a system area network |
US8103785B2 (en) | 2007-12-03 | 2012-01-24 | Seafire Micros, Inc. | Network acceleration techniques |
US8689292B2 (en) * | 2008-04-21 | 2014-04-01 | Api Technologies Corp. | Method and systems for dynamically providing communities of interest on an end user workstation |
US8584250B2 (en) * | 2008-09-23 | 2013-11-12 | Rite-Solutions, Inc. | Methods and apparatus for information assurance in a multiple level security (MLS) combat system |
US8572251B2 (en) | 2008-11-26 | 2013-10-29 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
US20100228962A1 (en) | 2009-03-09 | 2010-09-09 | Microsoft Corporation | Offloading cryptographic protection processing |
US9038073B2 (en) | 2009-08-13 | 2015-05-19 | Qualcomm Incorporated | Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts |
EP2306322A1 (en) | 2009-09-30 | 2011-04-06 | Alcatel Lucent | Method for processing data packets in flow-aware network nodes |
US9015268B2 (en) | 2010-04-02 | 2015-04-21 | Intel Corporation | Remote direct storage access |
US9755947B2 (en) | 2010-05-18 | 2017-09-05 | Intel Corporation | Hierarchical self-organizing classification processing in a network switch |
CN103238305A (zh) | 2010-05-28 | 2013-08-07 | 安全第一公司 | 用于安全数据储存的加速器系统 |
JP5772946B2 (ja) | 2010-07-21 | 2015-09-02 | 日本電気株式会社 | 計算機システム、及び計算機システムにおけるオフローディング方法 |
US9736116B2 (en) * | 2014-07-28 | 2017-08-15 | Intel Corporation | Cooperated approach to network packet filtering |
US8996644B2 (en) | 2010-12-09 | 2015-03-31 | Solarflare Communications, Inc. | Encapsulated accelerator |
US8774213B2 (en) | 2011-03-30 | 2014-07-08 | Amazon Technologies, Inc. | Frameworks and interfaces for offload device-based packet processing |
EP2574000B1 (en) | 2011-09-22 | 2020-04-08 | Xilinx, Inc. | Message acceleration |
US9397960B2 (en) | 2011-11-08 | 2016-07-19 | Mellanox Technologies Ltd. | Packet steering |
US20130318280A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US9665503B2 (en) | 2012-05-22 | 2017-05-30 | Xockets, Inc. | Efficient packet handling, redirection, and inspection using offload processors |
US8964554B2 (en) | 2012-06-07 | 2015-02-24 | Broadcom Corporation | Tunnel acceleration for wireless access points |
US9571507B2 (en) * | 2012-10-21 | 2017-02-14 | Mcafee, Inc. | Providing a virtual security appliance architecture to a virtual cloud infrastructure |
US20140129741A1 (en) | 2012-11-07 | 2014-05-08 | Mellanox Technologies Ltd. | Pci-express device serving multiple hosts |
US10341263B2 (en) | 2012-12-10 | 2019-07-02 | University Of Central Florida Research Foundation, Inc. | System and method for routing network frames between virtual machines |
US9008097B2 (en) | 2012-12-31 | 2015-04-14 | Mellanox Technologies Ltd. | Network interface controller supporting network virtualization |
US9094219B2 (en) | 2013-03-08 | 2015-07-28 | Intel Corporation | Network processor having multicasting protocol |
US9335886B2 (en) * | 2013-03-13 | 2016-05-10 | Assured Information Security, Inc. | Facilitating user interaction with multiple domains while preventing cross-domain transfer of data |
US9582320B2 (en) | 2013-03-14 | 2017-02-28 | Nxp Usa, Inc. | Computer systems and methods with resource transfer hint instruction |
JP2015076643A (ja) | 2013-10-04 | 2015-04-20 | 富士通株式会社 | 制御プログラム、制御装置および制御方法 |
US9678818B2 (en) | 2014-01-30 | 2017-06-13 | Mellanox Technologies, Ltd. | Direct IO access from a CPU's instruction stream |
US10078613B1 (en) | 2014-03-05 | 2018-09-18 | Mellanox Technologies, Ltd. | Computing in parallel processing environments |
US10218645B2 (en) | 2014-04-08 | 2019-02-26 | Mellanox Technologies, Ltd. | Low-latency processing in a network node |
US10120832B2 (en) | 2014-05-27 | 2018-11-06 | Mellanox Technologies, Ltd. | Direct access to local memory in a PCI-E device |
US9207979B1 (en) | 2014-05-28 | 2015-12-08 | Freescale Semiconductor, Inc. | Explicit barrier scheduling mechanism for pipelining of stream processing algorithms |
US9733981B2 (en) | 2014-06-10 | 2017-08-15 | Nxp Usa, Inc. | System and method for conditional task switching during ordering scope transitions |
US10423414B2 (en) | 2014-11-12 | 2019-09-24 | Texas Instruments Incorporated | Parallel processing in hardware accelerators communicably coupled with a processor |
US9787605B2 (en) | 2015-01-30 | 2017-10-10 | Nicira, Inc. | Logical router with multiple routing components |
IL238690B (en) | 2015-05-07 | 2019-07-31 | Mellanox Technologies Ltd | Network-based computational accelerator |
US10152441B2 (en) | 2015-05-18 | 2018-12-11 | Mellanox Technologies, Ltd. | Host bus access by add-on devices via a network interface controller |
US10027601B2 (en) | 2015-06-03 | 2018-07-17 | Mellanox Technologies, Ltd. | Flow-based packet modification |
US20160378529A1 (en) | 2015-06-29 | 2016-12-29 | Fortinet, Inc. | Utm integrated hypervisor for virtual machines |
US10114792B2 (en) | 2015-09-14 | 2018-10-30 | Cisco Technology, Inc | Low latency remote direct memory access for microservers |
US10929189B2 (en) | 2015-10-21 | 2021-02-23 | Intel Corporation | Mobile edge compute dynamic acceleration assignment |
US9912774B2 (en) * | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
JP6897574B2 (ja) | 2016-01-29 | 2021-06-30 | 日本電気株式会社 | アクセラレータ制御装置、アクセラレータ制御方法およびプログラム |
US10552205B2 (en) | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
US10417174B2 (en) | 2016-06-24 | 2019-09-17 | Vmware, Inc. | Remote direct memory access in a virtualized computing environment |
US10318737B2 (en) | 2016-06-30 | 2019-06-11 | Amazon Technologies, Inc. | Secure booting of virtualization managers |
CN109074330B (zh) | 2016-08-03 | 2020-12-08 | 华为技术有限公司 | 网络接口卡、计算设备以及数据包处理方法 |
US10891253B2 (en) | 2016-09-08 | 2021-01-12 | Microsoft Technology Licensing, Llc | Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks |
US20180109471A1 (en) | 2016-10-13 | 2018-04-19 | Alcatel-Lucent Usa Inc. | Generalized packet processing offload in a datacenter |
DE102016124383B4 (de) * | 2016-10-18 | 2018-05-09 | Fujitsu Technology Solutions Intellectual Property Gmbh | Computersystem-Architektur sowie Computernetz-Infrastruktur, umfassend eine Mehrzahl von solchen Computersystem-Architekturen |
US10642972B2 (en) | 2016-10-20 | 2020-05-05 | Intel Corporation | Extending packet processing to trusted programmable and fixed-function accelerators |
BR112019010679A2 (pt) | 2016-12-31 | 2019-09-17 | Intel Corp | sistemas, métodos e aparelhos para computação heterogênea |
AU2018212836B2 (en) * | 2017-01-26 | 2022-07-14 | Semper Fortis Solutions, LLC | Multiple single levels of security (MSLS) in a multi-tenant cloud |
US10250496B2 (en) | 2017-01-30 | 2019-04-02 | International Business Machines Corporation | Router based maximum transmission unit and data frame optimization for virtualized environments |
US11032248B2 (en) * | 2017-03-07 | 2021-06-08 | Nicira, Inc. | Guest thin agent assisted host network encryption |
US10210125B2 (en) | 2017-03-16 | 2019-02-19 | Mellanox Technologies, Ltd. | Receive queue with stride-based data scattering |
US11157422B2 (en) * | 2017-03-31 | 2021-10-26 | Intel Corporation | Shared memory for intelligent network interface cards |
US10402341B2 (en) | 2017-05-10 | 2019-09-03 | Red Hat Israel, Ltd. | Kernel-assisted inter-process data transfer |
EP3625679A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
US10423774B1 (en) * | 2017-08-22 | 2019-09-24 | Parallels International Gmbh | System and method for establishing secure communication channels between virtual machines |
US10382350B2 (en) | 2017-09-12 | 2019-08-13 | Mellanox Technologies, Ltd. | Maintaining packet order in offload of packet processing functions |
US11005771B2 (en) | 2017-10-16 | 2021-05-11 | Mellanox Technologies, Ltd. | Computational accelerator for packet payload operations |
US20190163364A1 (en) | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
US10938784B2 (en) * | 2017-12-05 | 2021-03-02 | Assured Information Security, Inc. | Dedicating hardware devices to virtual machines in a computer system |
US10708240B2 (en) * | 2017-12-14 | 2020-07-07 | Mellanox Technologies, Ltd. | Offloading communication security operations to a network interface controller |
US10956336B2 (en) | 2018-07-20 | 2021-03-23 | International Business Machines Corporation | Efficient silent data transmission between computer servers |
US11036650B2 (en) | 2019-09-19 | 2021-06-15 | Intel Corporation | System, apparatus and method for processing remote direct memory access operations with a device-attached memory |
-
2017
- 2017-12-14 US US15/841,339 patent/US10708240B2/en active Active
-
2018
- 2018-12-10 WO PCT/IB2018/059824 patent/WO2019116195A1/en unknown
- 2018-12-10 EP EP18830310.1A patent/EP3725056B1/en active Active
- 2018-12-10 CN CN201880079802.2A patent/CN111480328B/zh active Active
-
2020
- 2020-04-27 US US16/858,874 patent/US10958627B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8549345B1 (en) * | 2003-10-31 | 2013-10-01 | Oracle America, Inc. | Methods and apparatus for recovering from a failed network interface card |
EP1657878A1 (en) * | 2004-11-12 | 2006-05-17 | Microsoft Corporation | Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management |
US7716730B1 (en) * | 2005-06-24 | 2010-05-11 | Oracle America, Inc. | Cryptographic offload using TNICs |
CN103051510A (zh) * | 2011-09-07 | 2013-04-17 | 微软公司 | 网络策略向网络接口卡的安全和高效卸载 |
Also Published As
Publication number | Publication date |
---|---|
EP3725056B1 (en) | 2022-01-26 |
US10708240B2 (en) | 2020-07-07 |
EP3725056A1 (en) | 2020-10-21 |
CN111480328A (zh) | 2020-07-31 |
US20190190892A1 (en) | 2019-06-20 |
US10958627B2 (en) | 2021-03-23 |
US20200259803A1 (en) | 2020-08-13 |
WO2019116195A1 (en) | 2019-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111480328B (zh) | 将通信安全操作卸载到网络接口控制器 | |
US8055895B2 (en) | Data path security processing | |
EP3605976B1 (en) | Message sending method and network device | |
US9015467B2 (en) | Tagging mechanism for data path security processing | |
CN109150688B (zh) | IPSec VPN数据传输方法及装置 | |
US10250571B2 (en) | Systems and methods for offloading IPSEC processing to an embedded networking device | |
US20190020684A1 (en) | Systems and methods for storing a security parameter index in an options field of an encapsulation header | |
EP2529505B1 (en) | Establishing, at least in part, secure communication channel between nodes so as to permit inspection, at least in part, of encrypted communication carried out, at least in part, between the nodes | |
US10476850B2 (en) | Supporting unknown unicast traffic using policy-based encryption virtualized networks | |
US20110271096A1 (en) | Loosely-Coupled Encryption Functionality for Operating Systems | |
US9467471B2 (en) | Encrypted communication apparatus and control method therefor | |
Raumer et al. | Efficient serving of VPN endpoints on COTS server hardware | |
CN117254976B (zh) | 基于VPP的国标IPsec VPN实现方法、装置、系统及电子设备 | |
US20110271097A1 (en) | Loosely-Coupled Encryption Functionality for Operating Systems | |
US20230403260A1 (en) | Computer and Network Interface Controller Offloading Encryption Processing to the Network Interface Controller and Using Derived Encryption Keys | |
EP4044547B1 (en) | Message processing method, apparatus, and system | |
WO2011139440A2 (en) | Loosely-coupled encryption functionality for operating systems | |
US20250038971A1 (en) | Ipsec aware load balancer with minimal decryption | |
CN117811787A (zh) | 信息配置方法、装置、设备及存储介质 | |
Rosen et al. | IPsec |
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 |