CN115017089A - 一种远程内存访问的系统及方法 - Google Patents
一种远程内存访问的系统及方法 Download PDFInfo
- Publication number
- CN115017089A CN115017089A CN202210617225.6A CN202210617225A CN115017089A CN 115017089 A CN115017089 A CN 115017089A CN 202210617225 A CN202210617225 A CN 202210617225A CN 115017089 A CN115017089 A CN 115017089A
- Authority
- CN
- China
- Prior art keywords
- buffer area
- request
- physical address
- specified
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Abstract
本发明提供一种远程内存访问的系统,包括网络接口设备,该设备包括:加解密模块,用于获取缓冲区的信息,该信息包括缓冲区的唯一标识符、虚拟地址、长度和物理地址,加解密模块针对每个缓冲区生成对应密钥,基于密钥对缓冲区的物理地址进行加密,生成缓冲区的物理地址密文;权限记录模块,用于记录每个缓冲区对应的包含其缓冲区的唯一标识符、虚拟地址、长度和密钥信息的权限验证信息;响应处理模块,用于根据缓冲区的权限验证信息验证请求端对指定缓冲区是否具有访问权限,获取通过验证的请求端所指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址;内存访问模块,用于根据指定缓冲区的物理地址授权请求端访问缓冲区的。
Description
技术领域
本发明涉及网络通信技术领域,更具体地说,涉及一种远程内存访问的系统及方法。
背景技术
在现有的分布式应用中,其运行过程中会进行大量的网络通信,因此,网络通信能力是影响分布式应用整体性能的关键因素。远程直接内存访问(Remote Direct MemoryAccess,RDMA)是提升分布式应用网络通信性能的有效技术手段。相对于传统的TCP/IP网络通信,RDMA技术具有高带宽低延迟的显著优势。而RDMA网卡需要使用网络协议栈相关信息和内存访问相关信息,这两种状态信息通常由操作系统预先分配好,放置在内存中,网卡在通信过程中从内存中读取或进行更新。为加速访问这些状态信息,网卡上会开辟一段缓存空间以暂存这些状态信息。当网卡处理某个连接的通信请求时,若该连接的状态信息未缓存在网卡上,网卡需要通过系统总线访问内存,从内存中读取该状态信息,然后更新本地缓存,再进行数据处理。因此,当缓存不命中时,对通信性能的影响较大。
随着系统规模和应用工作数据集的不断增大,网卡的缓存面临着较大的压力。一方面,单节点内部的通信进程数量较多,导致需要存储的通信状态越来越多;另一方面,应用工作数据集的增加,导致需要存储的虚实地址转换表项数量越来越多,且很多应用在访问远程内存时具有随机访存的特性。同时,网卡上的缓存数量增加远远比不上状态信息的增速。内存状态访问缺失是RDMA性能下降的直接因素,而目前有四类解决RDMA网卡内存状态的缺失以提高RDMA网络可扩展性的方法,其中一类方法为减少网卡上缓存的内存状态信息。
传统的减少网卡上内存缓存状态信息包括:现有方式1)操作系统在上电后对内存进行分页时,预留一部分空间,该空间按照配置的页面大小进行分页。此时系统中会有两种页面大小(通常而言是4KB的小页面和2MB的大页面),不同应用在使用内存时使用不同的页面大小。当需要进行远程直接内存通信时,操作系统使用大页面进行内存分配,并将虚拟地址和物理地址的对应关系写入内存的页表项中。当网卡在通信过程中从内存中读取到缓存中进行虚拟地址到物理地址的转换,该方式可以将页表项的数量缩小到原先的1/512,从而显著提升网卡缓存的命中率。现有方式2)当进程需要进行网络通信时,向操作系统注册一块缓冲区,由操作系统直接返回该缓冲区的物理页面。并由该进程通过带外通信的方式将该缓冲区的物理页面发送给通信对端。当通信对端访问当前进程的内存时,直接使用物理地址生成网络请求。物理页表项将通过网络数据包传递到接收方,接收方网卡将直接使用物理页面地址发起内存读写请求。这种方式下网卡直接使用物理地址进行内存访问,消除了对内存状态缓存的依赖,因此可解决内存状态的可扩展性问题。
但以上的现有方式1)虽然使用大页面进行内存分配,可以将网卡中页表项的虚拟地址和物理地址的对应关系数量缩小,从内存中读取到缓存中进行虚拟地址到物理地址的转换,提高网卡缓存的命中率,但一方面存在由于系统使用了大页面,对内存页面的保护粒度将变得更大,对进程内存的嗅探将变得更加容易,因此降低了系统的安全性;另一方面,随着应用工作数据集的增速超过网卡缓存容量的增速,这种方式无法从根本上解决问题。现有方式2)中由于接收方网卡使用的物理地址是由发送方直接传递过来的,如果发送进程是一个恶意程序,其有可能在网络请求中填入一个非法的物理地址,从而访问到响应端的任意内存地址区域,也存在很大的不安全性。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种远程内存访问的系统及方法。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,提供一种远程内存访问的系统,其包括网络接口设备、一个或多个CPU以及每个CPU对应的内存,所述网络接口设备通过系统总线与CPU相连,所述内存中包括缓冲区,所述网络接口设备包括:加解密模块,用于获取缓冲区信息,其中,所述缓冲区信息至少包括缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述加解密模块针对每个缓冲区生成对应密钥,基于密钥对缓冲区的物理地址进行加密,生成缓冲区的物理地址密文;权限记录模块,用于记录每个缓冲区对应的包含其缓冲区的唯一标识符、虚拟地址、长度和密钥信息的权限验证信息;响应处理模块,用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述响应处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址;内存访问模块,用于根据指定缓冲区的物理地址授权所述请求端对物理地址对应的缓冲区进行访问。
在本发明的一些实施例中,所述网络接口设备还包括:请求处理模块,用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述请求处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址。
在本发明的一些实施例中,所述响应处理模块用于根据指定缓冲区的唯一标识符和内存中的缓冲区的唯一标识符判断指定缓冲区是否存在,所述响应处理模块通过如下方式对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,包括:通过确定指定缓冲区的虚拟地址和内存中的缓冲区的虚拟地址是否相等,以及确定指定缓冲区的长度是否小于或等于内存中的缓冲区的长度,以进行访问权限验证。
在本发明的一些实施例中,所述请求处理模块用于根据指定缓冲区的唯一标识符和内存中的缓冲区的唯一标识符判断指定缓冲区是否存在,所述请求处理模块通过如下方式对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,包括:通过确定指定缓冲区的虚拟地址和内存中的缓冲区的虚拟地址是否相等,以及确定指定缓冲区的长度是否为小于或等于内存中的缓冲区的长度,以进行访问权限验证。
在本发明的一些实施例中,所述请求中包括指定缓冲区的物理地址密文和物理地址签名;所述加解密模块还用于根据记录的权限验证信息中的密钥和指定缓冲区的物理地址密文和物理地址签名验证所述请求端对指定缓冲区是否具有访问权限;以及对请求端具有访问权限的指定缓冲区的物理地址密文进行解密,得到解密后的指定缓冲区的物理地址。
在本发明的一些实施例中,所述加解密模块还用于采用预定的加解密算法对缓冲区的物理地址进行加密或对指定缓冲区的物理地址密文进行解密,其中,加解密算法为RSA加解密算法或DES加解密算法。
在本发明的一些实施例中,所述内存访问模块通过如下方式实现对物理地址对应的缓冲区进行访问,包括:根据远程内存访问请求的请求类型以及指定缓冲区的物理地址和长度,得到待发送的数据,以发送给响应端;或根据远程内存访问请求的请求类型以及指定缓冲区的物理地址和长度,得到待发送的数据,以发送给请求端。
在本发明的一些实施例中,所述网络接口设备还包括数据包收发模块,该模块被配置为:根据远程内存访问请求,获取物理地址对应的缓冲区中待发送的数据,并基于待发送的数据生成若干数据包用于进行发出;或接收远程内存访问请求时通过网络发送来的数据包。
在本发明的一些实施例中,所述CPU中配置有:应用程序模块,用于根据远程内存访问请求中待发送的数据或待接收的数据,在内存中分配相应的缓冲区,并生成缓冲区的虚拟地址和长度;网卡驱动模块,用于基于分配的缓冲区,生成缓冲区的唯一标识符和对应的物理地址。
根据本发明的第二方面,提供一种远程内存访问的响应方法,包括:步骤B1:获取请求端在远程内存访问请求时通过网络发送来的请求数据包,提取请求数据包中指定响应端缓冲区的信息,其中,所述信息包括指定响应端缓冲区的物理地址密文、唯一标识符、虚拟地址和长度;步骤B2:获取权限验证信息,根据权限验证信息和指定响应端缓冲区的唯一标识符、虚拟地址及长度,验证所述请求端对指定响应端缓冲区是否具有访问权限;步骤B3:为通过验证的请求端,获取将其所发请求数据包中指定响应端缓冲区的物理地址密文解密后得到的指定响应端缓冲区的物理地址;步骤B4:根据请求数据包的请求类型和指定响应端缓冲区的物理地址授权所述请求端对响应端缓冲区的物理地址对应的响应端缓冲区进行访问。
在本发明的一些实施例中,所述步骤B2包括:根据指定响应端缓冲区的唯一标识符,确定指定访问的响应端缓冲区是否存在;基于指定响应端缓冲区的唯一标识符,获取存在的响应端缓冲区对应的权限验证信息,包括响应端内存中的响应端缓冲区对应的唯一标识符、虚拟地址和长度;通过比较指定响应端缓冲区的虚拟地址和内存中的响应端缓冲区对应的虚拟地址,以及比较指定响应端缓冲区的长度和内存中的响应端缓冲区对应的长度,确定是否超过访问权限。
在本发明的一些实施例中,所述指定响应端缓冲区的信息还包括指定响应端缓冲区的物理地址签名,所述权限验证信息还包括响应端内存中的响应端缓冲区对应的密钥,所述验证所述请求端对指定响应端缓冲区是否具有访问权限还包括:根据内存中的响应端缓冲区的密钥和指定响应端缓冲区的物理地址密文对指定响应端缓冲区的物理地址签名进行正确性验证,确定是否为正常访问。
在本发明的一些实施例中,所述步骤B4包括:获取请求数据包中指定响应端缓冲区的长度,其中,请求数据包的请求类型为远程内存写数据或远程内存读数据;根据远程内存写数据的请求数据包、指定响应端缓冲区的物理地址和指定响应端缓冲区的长度,对响应端缓冲区进行远程内存写数据;根据远程内存读数据的请求数据包、指定响应端缓冲区的物理地址和指定响应端缓冲区的长度,读取响应端缓冲区相应数据,得到待发送的数据。
在本发明的一些实施例中,所述远程内存读数据的请求数据包包括指定请求端缓冲区的信息,所述对响应端缓冲区进行访问,还包括:获取待发送的数据,基于待发送的数据生成多个响应数据包,以用于反馈给请求端,其中,响应数据包中包括指定请求端缓冲区的长度和根据指定请求端缓冲区的信息解密计算出的指定请求端缓冲区的物理地址。
在本发明的一些实施例中,响应方法还包括:基于响应端与请求端之间建立的连接,根据接收或发送的数据量大小,在响应端的内存中分配响应端缓冲区并为内存中的响应端缓冲区生成对应响应端缓冲区的信息,其中,所述信息包括内存中的响应端缓冲区对应的唯一标识符、虚拟地址、长度和物理地址。
在本发明的一些实施例中,所述生成对应响应端缓冲区的信息还包括响应端为内存中的响应端缓冲区生成的响应端缓冲区的密钥;基于内存中的响应端缓冲区对应的密钥、唯一标识符、虚拟地址和长度,得到响应端缓冲区对应的权限验证信息;所述指定响应端缓冲区的密文基于内存中的响应端缓冲区对应的密钥对内存中的响应端缓冲区对应的物理地址进行加密得到;所述指定响应端缓冲区的物理地址签名基于内存中的响应端缓冲区对应的密钥和内存中的响应端缓冲区的物理地址密文得到。
根据本发明的第三方面,提供一种远程内存访问的请求方法,包括:步骤A1:获取向响应端发起的远程内存访问请求,其中,请求中包括指定请求端缓冲区的信息和指定响应端缓冲区的信息,指定请求端缓冲区的信息包括指定请求端缓冲区的物理地址密文、唯一标识符、虚拟地址和长度,指定响应端缓冲区的信息包括指定响应端缓冲区的物理地址密文;步骤A2:获取权限验证信息,根据权限验证信息和指定请求端缓冲区的唯一标识符、虚拟地址及长度,验证所述请求端对指定的请求端缓冲区是否具有访问权限;步骤A3:为通过验证的请求端,获取指定请求端缓冲区的信息中指定请求端缓冲区的物理地址密文解密后得到的指定请求端缓冲区的物理地址;步骤A4:根据远程内存访问请求的请求类型以及指定请求端缓冲区的物理地址,得到待发送的数据,以基于待发送的数据生成相应的请求数据包发送给响应端。
在本发明的一些实施例中,所述步骤A2包括:根据指定请求端缓冲区的唯一标识符,确定指定访问的请求端缓冲区是否存在;基于指定请求端缓冲区的唯一标识符,获取存在的请求端缓冲区对应的权限验证信息,包括请求端内存中的请求端缓冲区对应的唯一标识符、虚拟地址和长度;通过比较指定请求端缓冲区的虚拟地址和内存中的请求端缓冲区对应的虚拟地址,以及比较指定请求端缓冲区的长度和内存中的请求端缓冲区对应的长度,确定是否超过访问权限。
在本发明的一些实施例中,所述指定请求端缓冲区的信息还包括指定请求端缓冲区的物理地址签名,所述权限验证信息还包括请求端内存中的请求端缓冲区对应的密钥,所述验证所述请求端对指定的请求端缓冲区是否具有访问权限还包括:根据内存中的请求端缓冲区的密钥和指定请求端缓冲区的物理地址密文,对指定请求端缓冲区的物理地址签名进行正确性验证,确定是否为正常访问。
在本发明的一些实施例中,所述远程内存访问请求的请求类型包括远程内存读数据请求和远程内存写数据请求,所述步骤A4包括:获取远程内存访问请求中指定请求端缓冲区的长度;根据远程内存写数据请求、指定请求端缓冲区的物理地址和指定请求端缓冲区的长度,读取请求端相应缓冲区的数据,得到待发送的数据和指定响应端缓冲区的信息;根据远程内存读数据请求、指定请求端缓冲区的物理地址和指定请求端缓冲区的长度,得到待发送的指定请求端缓冲区的信息和指定响应端缓冲区的信息。
在本发明的一些实施例中,所述基于待发送的数据生成相应的请求数据包包括:基于待发送的数据和指定响应端缓冲区的信息,生成多个用于发送给响应端进行远程内存写数据的请求数据包;或基于待发送的指定请求端缓冲区的信息和指定响应端缓冲区的信息,生成一个用于发送给响应端进行远程内存读数据的请求数据包。
在本发明的一些实施例中,请求方法还包括:基于响应端与请求端之间建立的连接,根据需要发送或接收的数据量大小,在内存中分配请求端缓冲区并为内存中的请求端缓冲区生成对应请求端缓冲区的信息,其中,所述信息包括内存中的请求端缓冲区对应的唯一标识符、虚拟地址、长度和物理地址。
在本发明的一些实施例中,所述生成的请求端缓冲区的信息包括请求端为内存中的请求端缓冲区生成的请求端缓冲区的密钥;基于内存中的请求端缓冲区对应的密钥、唯一标识符、虚拟地址和长度,得到请求端缓冲区对应的权限验证信息;所述指定请求端缓冲区的物理地址密文基于内存中的请求端缓冲区对应的密钥对内存中的请求端缓冲区对应的物理地址进行加密得到;指定请求端缓冲区的物理地址签名基于内存中的请求端缓冲区对应的密钥和内存中的请求端缓冲区对应的物理地址密文得到。
根据本发明的第四方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现本发明第二方面中和本发明第三方面中任一项所述方法的步骤。
与现有技术相比,本发明的优点在于:
本发明系统中的网络接口设备需要对内存中的缓冲区的物理地址加密,并在进行远程内存访问请求时,传输的物理地址为物理地址密文,获取到请求中的物理地址均为经过加密的物理地址密文,需要根据权限验证信息对请求中的指定缓冲区的信息进行权限验证,以确定请求端对指定缓冲区是否具有访问权限,通过验证才能基于指定缓冲区的物理地址密文解密后的指定缓冲区的物理地址,对内存中的相应缓冲区进行访问,增强了远程内存访问时系统的安全性。另外,本发明系统中网络接口设备直接通过解密后的物理地址进行访问,不需要存储虚拟地址到物理地址的转换页表项,避免了网络接口设备缓存相应转换页表项缺失带来的性能影响。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明一个实施例的远程内存访问的系统示意图;
图2为根据本发明一个实施例的远程内存访问的请求方法流程图;
图3为根据本发明一个实施例的远程内存访问的响应方法流程图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,现有方式1)中,虽然使用大页面进行内存分配,可以将网卡的页表项中的虚拟地址和物理地址的对应转换关系数量缩小,减少网卡中缓存的页表项缺失,从内存中读取数据到缓存中根据页表项进行虚拟地址到物理地址的转换时,提高网卡缓存的页表项的命中率,但一方面存在由于系统使用了大页面,对内存页面的保护粒度将变得更大,对进程内存的嗅探将变得更加容易,因此降低了系统的安全性;另一方面,随着应用工作数据集的增速超过网卡缓存容量的增速,也会导致缓存的页表项缺失从而影响通信性能,这种方式无法从根本上解决问题。现有方式2)中,由于接收方网卡使用的物理地址是由发送方直接传递过来的,如果发送进程是一个恶意程序,其有可能在网络请求中填入一个非法的物理地址,从而访问到响应端的任意内存地址区域,也存在很大的不安全性。
基于上述研究,本发明提供一种远程内存访问的系统,其包括网络接口设备、一个或多个CPU以及每个CPU对应的内存,所述网络接口设备通过系统总线与CPU相连,所述内存中包括缓冲区,其特征在于,所述网络接口设备包括:加解密模块,用于获取缓冲区信息,其中,所述缓冲区信息至少包括缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述加解密模块针对每个缓冲区生成对应密钥,基于密钥对缓冲区的物理地址进行加密,生成缓冲区的物理地址密文;权限记录模块,用于记录每个缓冲区对应的包含其缓冲区的唯一标识符、虚拟地址、长度和密钥信息的权限验证信息;响应处理模块,用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述响应处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址;内存访问模块,用于根据指定缓冲区的物理地址授权所述请求端对物理地址对应的缓冲区进行访问。本发明系统中的网络接口设备需要对缓冲区的物理地址加密,并在进行远程内存访问请求时,传输的物理地址为物理地址密文,获取到请求中的物理地址为经过加密的物理地址密文,需要根据对应的权限验证信息对请求中的指定缓冲区的信息进行权限验证,以确定请求端对指定缓冲区是否具有访问权限,通过验证才能基于指定缓冲区的物理地址密文解密后的指定缓冲区的物理地址,对内存中的缓冲区进行访问,增强了远程内存访问时系统的安全性。另外,本发明系统中网络接口设备直接通过解密后的物理地址进行访问,不需要存储虚拟地址到物理地址的转换页表项,避免了网络接口设备缓存相应转换页表项缺失带来的性能影响。
根据本发明的一个实施例,提供一种远程内存访问的系统,该系统既可以部署在请求端也可以部署在响应端,参见图1,包括应用程序模块1、网卡驱动模块2、应用程序缓冲区3、系统总线模块4和网络接口设备5。其中,网络接口设备5中包括请求处理模块501、响应处理模块502、内存访问模块503、加解密模块504、权限记录模块505和数据包收发模块506。应用程序模块1和网卡驱动模块2设置于中央处理器CPU中,应用程序缓冲区3设置于内存中,应用程序缓冲区3即为内存中的缓冲区,应用程序模块1和网卡驱动模块2与内存中应用程序缓冲区3连接,并通过系统总线模块4与网络接口设备5中的内存访问模块503连接,内存访问模块503和数据包收发模块506均与请求处理模块501、响应处理模块502和加解密模块504相互连接,加解密模块504还与权限记录模块505相互连接。
根据本发明的一个实施例,内存采用动态随机存取存储器DRAM实现,存储应用程序模块1和网卡驱动模块2的驱动程序代码及其所需的数据;系统总线模块4其自身具备路由功能,能够根据所承载数据包中相关的总线协议字段,转发系统中不同模块之间的控制信息和数据信息。本发明并不对系统总线模块的总线类型进行限定,可以是外设组件互连标准:PCI(Peripheral Component Interconnect,PCI)或PCI-X、高速串行计算机扩展总线标准PCI-E(peripheral component interconnect express)、总线协议:AXI(AdvancedeXtensible Interface)等。内存访问模块503支持基于PCI-E协议的内存访问,请求处理模块501通过AXI总线和内存访问模块503、加解密模块504、数据包收发模块506相连接;响应处理模块502通过AXI总线和内存访问模块503、加解密模块504、数据包收发模块506相连接;加解密模块504支持RSA加解密算法或DES加解密算法等可逆加解密算法,加解密模块504通过AXI总线和内存访问模块503、请求处理模块501、响应处理模块502和权限记录模块505相连;权限记录模块505采用静态随机存取存储器SRAM实现;数据包收发模块506支持InfiniBand网络通信协议和TCP/IP协议,能够实现端到端的数据收发。其中,TCP/IP协议用于传递控制信息,InfiniBand网络通信协议用于传递数据信息。数据包收发模块506通过AXI总线和请求处理模块501、响应处理模块502相连。
根据本发明的一个实施例,对请求端和响应端之间进行远程内存访问时用到的相应缓冲区的控制信息进行说明。
Krecv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的密钥;
Frecv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的唯一标识符;
Precv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的物理地址;
Lrecv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的大小;
Vrecv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的虚拟地址;
Srecv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的物理地址签名;
Wrecv:响应端为内存中的响应端缓冲区生成的响应端缓冲区的物理地址密文;
Ksend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的密钥;
Fsend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的唯一标识符;
Psend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的物理地址;
Lsend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的大小;
Vsend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的虚拟地址;
Ssend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的物理地址签名;
Wsend:请求端为内存中的请求端缓冲区生成的请求端缓冲区的物理地址密文;
Fr-app:请求端请求访问的指定响应端缓冲区的唯一标识符;
Pr-app:响应端根据请求数据包中的指定响应端缓冲区的信息解密计算出的指定响应端缓冲区的物理地址;
Lr-app:请求端内存访问请求中的指定响应端缓冲区的长度;
Vr-app:请求端内存访问请求中的指定响应端缓冲区的虚拟地址;
Sr-app:请求端内存访问请求中的指定响应端缓冲区的物理地址签名;
Wr-app:请求端内存访问请求中的指定响应端缓冲区的物理地址密文;
Fs-app:请求端内存访问请求中的指定请求端缓冲区的唯一标识符;
Ps-app:请求端根据指定请求端缓冲区的信息解密计算出的指定请求端缓冲区的物理地址;
Ls-app:请求端内存访问请求中的指定请求端缓冲区的长度;
Vs-app:请求端内存访问请求中的指定请求端缓冲区的虚拟地址;
Ss-app:请求端内存访问请求中的指定请求端缓冲区的物理地址签名;
Ws-app:请求端内存访问请求中的指定请求端缓冲区的物理地址密文。
根据本发明的一个实施例,应用程序模块1是包括运行在CPU上的一段应用程序,其运行过程中需要与远端主机上运行的应用程序进行网络通信。在请求端,其应用程序模块1提交网络通信请求,用于进行远程内存访问请求,在响应端,其应用程序模块1对远程内存访问请求进行响应。请求端和响应端在进行远程内存访问前,应用程序模块1还需要根据远程内存访问请求中待发送的数据或待接收的数据,在内存的应用程序缓冲区3中分配好用于进行网络通信的缓冲区,并生成缓冲区的信息,该信息包括虚拟地址和长度,其中,在请求端,为内存中的请求端缓冲区生成的请求端缓冲区的信息包括生成的请求端缓冲区的虚拟地址Vsend和长度Lsend,在响应端,为内存中的响应端缓冲区生成的响应端端缓冲区的信息包括生成的响应端缓冲区的虚拟地址Vrecv和长度Lrecv。
根据本发明的一个实施例,通过网卡驱动模块2对相应缓冲区进行注册。具体的,网卡驱动模块2是运行在CPU上的一段程序,当应用程序模块1根据接收或发送的数据量大小分配缓冲区时,在请求端,网卡驱动模块2在内存的应用程序缓冲区3中对应用程序模块1分配的请求端缓冲区进行注册并生成对应请求端缓冲区的信息,其中,生成的请求端缓冲区的信息包括生成的请求端缓冲区的唯一标识符Fsend和物理地址Psend,并将上述生成的请求端缓冲区的唯一标识符Fsend、虚拟地址Vsend、长度Lsend和物理地址Psend通过系统总线模块4发送给网络接口设备5的内存访问模块503,内存访问模块503将其传递给加解密模块504。在响应端,网卡驱动模块2在内存的应用程序缓冲区3中对应用程序模块1分配的请求端缓冲区进行注册并生成对应响应端缓冲区的信息,其中,生成的响应端缓冲区的信息包括生成的响应端缓冲区的唯一标识符Frecv和物理地址Precv,并将上述生成的响应端缓冲区的唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv和物理地址Precv通过系统总线模块4发送给网络接口设备5的内存访问模块503,内存访问模块503将其传递给加解密模块504。
根据本发明的一个实施例,应用程序缓冲区3是主机内存中的一段存储区域,用于存放应用程序模块1中的应用程序运行过程中的工作数据集和网络通信数据,以及网络通信数据所在缓冲区的加密后的物理地址密文。
根据本发明的一个实施例,在请求端,其加解密模块504为注册的请求端缓冲区生成请求端缓冲区的密钥Ksend,同时,权限记录模块505用于记录请求端缓冲区对应的包含其请求端缓冲区的唯一标识符Fsend、虚拟地址Vsend、长度Lsend、密钥Ksend信息的权限验证信息,形成一个请求端缓冲区的权限验证信息表项<唯一标识符Fsend、虚拟地址Vsend、长度Lsend、密钥Ksend>;最后,根据密钥Ksend对生成的请求端缓冲区的物理地址Psend进行加密,得到生成的请求端缓冲区的物理地址密文Wsend,利用密钥Ksend为密文Wsend生成签名Ssend,将唯一标识符Fsend、虚拟地址Vsend、长度Lsend、物理地址密文Wsend、签名Ssend通过网卡驱动模块2返回给请求端应用程序模块1。以供请求端根据已分配的请求端缓冲区按需求进行本地内存访问。
根据本发明的一个实施例,在响应端,其加解密模块504为注册的响应端缓冲区生成响应端缓冲区的密钥Krecv,同时,权限记录模块505用于记录响应端缓冲区对应的包含其响应端缓冲区的唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、密钥Krecv信息的权限验证信息,形成一个响应端缓冲区的权限验证信息表项<唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、密钥Krecv>;最后,根据密钥Krecv对生成的响应端缓冲区的物理地址Precv进行加密,得到生成的响应端缓冲区的物理地址密文Wrecv,利用密钥Krecv为密文Wrecv生成签名Srecv,将唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、物理地址密文Wrecv、签名Srecv通过网卡驱动模块2返回给响应端应用程序模块1。
根据本发明的一个实施例,在请求端和响应端建立连接之后,响应端的应用程序模块1将注册生成的每个响应端缓冲区对应的唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、物理地址密文Wrecv、签名Srecv通过网络发送到请求端的应用程序模块1。以供请求端根据已分配的响应端缓冲区按需求进行远程内存访问。
根据本发明的一个实施例,当请求端和响应端建立连接后,在请求端,其请求处理模块501用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述请求处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址。
具体的,请求端对指定缓冲区的远程内存访问请求包括请求端对指定请求端缓冲区的内存访问请求,其指定缓冲区为指定请求端缓冲区,请求中包括指定请求端缓冲区的物理地址密文Ws-app、物理地址签名Ss-app、唯一标识符Fs-app、虚拟地址Vs-app和长度Ls-app,根据本发明的一个实施例,,请求处理模块501用于根据指定请求端缓冲区的唯一标识符Fs-app和内存中的请求端缓冲区的唯一标识符Fsend判断指定请求端缓冲区是否存在,所述请求处理模块501通过如下方式对存在的指定请求端缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定请求端缓冲区是否具有访问权限,包括:通过确定指定请求端缓冲区的虚拟地址Vs-app和内存中的请求端缓冲区的虚拟地址Vsend是否相等,以及确定指定请求端缓冲区的长度Ls-app是否为小于等于内存中的请求端缓冲区的长度Lsend,当Vs-app和Vsend相等,且Ls-app小于等于Lsend时,Ls-app和Vs-app验证通过,再根据权限验证信息中的密钥进行下一步的访问权限验证。
根据本发明的一个实施例,所述加解密模块504还用于根据对应权限验证信息的密钥Ksend和指定请求端缓冲区的物理地址密文Ws-app和物理地址签名Ss-app验证所述请求端对指定请求端缓冲区是否具有访问权限;在以上请求中的指定请求端缓冲区的物理地址密文Ws-app、物理地址签名Ss-app、唯一标识符Fs-app、虚拟地址Vs-app和长度Ls-app均验证通过后,加解密模块504对通过验证的请求端所指定请求端缓冲区的物理地址密文Ws-app进行解密,得到解密后的指定请求端缓冲区的物理地址Ps-app。本发明请求端的请求需通过验证才能基于请求中指定请求端缓冲区的物理地址密文Ws-app解密后的指定请求端缓冲区的物理地址Ps-app对本地内存中的请求端缓冲区进行访问,避免本机系统被恶意入侵时访问系统内存的不安全性。另外,本发明直接通过解密后的物理地址进行访问,避免了网卡缓存中相应转换页表项缺失带来的性能影响。
根据本发明的一个实施例,请求端内存访问模块503用于根据远程内存访问请求的请求类型以及指定请求端缓冲区的物理地址Ps-app,得到待发送的数据,以基于待发送的数据生成相应的请求数据包发送给响应端。
根据本发明的一个实施例,当请求端和响应端建立连接后,在响应端,其响应处理模块502用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述响应处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址。
具体的,请求端对指定缓冲区的远程内存访问请求中包括请求端对指定响应端缓冲区的远程内存访问请求,其指定缓冲区为指定响应端缓冲区,请求中包括指定响应端缓冲区的物理地址密文Wr-app、物理地址签名Sr-app、唯一标识符Fr-app、虚拟地址Vr-app和长度Lr-app,根据本发明的一个实施例,,响应处理模块502用于根据指定响应端缓冲区的唯一标识符Fr-app和内存中的响应端缓冲区的唯一标识符Frecv判断指定响应端缓冲区是否存在,所述响应处理模块502通过如下方式对存在的指定响应端缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定响应端缓冲区是否具有访问权限,包括:通过比对指定响应端缓冲区的虚拟地址Vs-app和内存中的响应端缓冲区的虚拟地址Vrecv是否相等,以及指定响应端缓冲区的长度Lr-app是否为小于等于内存中的响应端缓冲区的长度Lrecv,当Vr-app和Vrecv相等,且Lr-app小于等于Lrecv时,Lr-app和Vr-app验证通过,再根据权限验证信息中的密钥进行下一步的访问权限验证。。
根据本发明的一个实施例,所述加解密模块504还用于根据对应权限验证信息的密钥Krecv和指定响应端缓冲区的物理地址密文Wr-app和物理地址签名Sr-app验证所述请求端对指定响应端缓冲区是否具有访问权限;在以上请求中的指定响应端缓冲区的物理地址密文Wr-app、物理地址签名Sr-app、唯一标识符Fr-app、虚拟地址Vr-app和长度Lr-app均验证通过后,加解密模块504对通过验证的请求端所指定响应端缓冲区的物理地址密文Wr-app进行解密,得到解密后的指定响应端缓冲区的物理地址Pr-app。本发明请求端的请求需通过验证才能基于请求中指定响应端缓冲区的物理地址密文Wr-app解密后的指定请求端缓冲区的物理地址Pr-app对远程内存中的缓冲区进行访问,避免本机系统被恶意入侵时访问系统内存的不安全性。另外,本发明直接通过解密后的物理地址进行访问,避免了网卡缓存中相应转换页表项缺失带来的性能影响。
根据本发明的一个实施例,响应端内存访问模块503用于根据请求数据包的请求类型和指定响应端缓冲区的物理地址Pr-app授权所述请求端对指定响应端缓冲区的物理地址Pr-app对应的响应端缓冲区进行访问。
根据本发明的一个实施例,加解密模块504采用预定的加解密算法对物理地址进行加密或对物理地址密文进行解密,其中,加解密算法为RSA加解密算法或DES加解密算法等可逆加解密算法,本发明对此并不限定。
根据本发明的一个实施例,数据包收发模块506用于根据远程内存访问请求,获取待发送的数据,并基于待发送的数据生成若干数据包用于进行发出;或接收远程内存访问请求时通过网络发送来的数据包。
根据本发明的一个实施例,当请求端进行远程内存访问时,基于注册好的请求端缓冲区和响应端缓冲区、为对应内存中的请求端缓冲区生成的请求端缓冲区的信息、请求端缓冲区的权限验证信息、为对应内存中的响应端缓冲区生成的响应端缓冲区的信息和响应端缓冲区的权限验证信息,提供一种远程内存访问的请求方法,参见图2,包括步骤A1、A2、A3和A4,其中,请求处理模块501被配置为执行步骤A1、A2和A3,内存访问模块503被配置为执行步骤A4,具体如下。
步骤A1:获取向响应端发起的远程内存访问请求,其中,请求中包括指定请求端缓冲区的信息和指定响应端缓冲区的信息,指定请求端缓冲区的信息包括指定请求端缓冲区的物理地址密文、唯一标识符、虚拟地址和长度,指定响应端缓冲区的信息包括指定响应端缓冲区的物理地址密文。
根据本发明的一个实施例,指定请求端缓冲区的物理地址密文Ws-app、唯一标识符Fs-app、虚拟地址Vs-app和长度Ls-app分别基于注册请求端缓存区时对应内存中的请求端缓冲区对应的物理地址密文Wsend、唯一标识符Fsend、虚拟地址Vsend和长度Lsend直接获得,另外,指定响应端缓冲区的物理地址密文Wr-app为基于请求端与响应端建立连接后,响应端发送来的其注册响应端缓冲区时内存中的响应端缓冲区对应的物理地址密文Wrecv直接获得。
步骤A2:获取权限验证信息,根据权限验证信息和指定请求端缓冲区的唯一标识符、虚拟地址及长度,验证所述请求端对指定的请求端缓冲区是否具有访问权限。
根据本发明的一个实施例,所述步骤A2包括:
步骤A21:根据指定请求端缓冲区的唯一标识符,确定指定访问的请求端缓冲区是否存在。
根据本发明的一个实施例,根据指定请求端缓冲区的唯一标识符,读取对应请求端缓冲区的权限验证信息表项。若对应的表项不存在,说明该指定请求端缓冲区没有被注册过,终止操作;如果表项存在,进一步执行以下步骤。
步骤A22:基于指定请求端缓冲区的唯一标识符,获取存在的请求端缓冲区对应的权限验证信息,包括请求端内存中的请求端缓冲区对应的唯一标识符、虚拟地址、长度。例如获取的对应请求端缓冲区的权限验证信息表项<唯一标识符Fsend、虚拟地址Vsend、长度Lsend、密钥Ksend>,其中,表项中依次为请求端内存中的请求端缓冲区对应的唯一标识符Fsend、虚拟地址Vsend、长度Lsend、密钥Ksend。
步骤A23:通过比较指定请求端缓冲区的虚拟地址和内存中的请求端缓冲区对应的虚拟地址,以及比较指定请求端缓冲区的长度和内存中的请求端缓冲区对应的长度,确定是否超过访问权限。
根据本发明的一个实施例,当指定的请求端缓冲区的虚拟地址Vs-app等于内存中的请求端缓冲区对应的虚拟地址Vsend,并且指定请求端缓冲区的长度Ls-app等于或小于内存中的请求端缓冲区对应的长度Lsend时,本地内存访问合法,继续执行相应操作;否则内存访问越界,返回访问越界错误,终止操作。其中,指定请求端缓冲区的信息还包括指定请求端缓冲区的物理地址签名Ss-app,在确定本地内存访问合法后执行的相应操作为:通过加解密模块504对指定请求端缓冲区的物理地址签名进行正确性验证。指定请求端缓冲区的物理地址签名Ss-app基于注册请求端缓存区时对应内存中的请求端缓冲区对应的物理地址签名Ssend得到。
根据本发明的一个实施例,正确性验证包括根据内存中的请求端缓冲区的密钥Ksend和指定请求端缓冲区的物理地址密文Ws-app,对指定请求端缓冲区的物理地址签名Ss-app进行正确性验证,确定是否为正常访问。如果正确性验证不通过,说明指定请求端缓冲区的物理地址密文Ws-app无效,当前指定请求端缓冲区的物理地址已经被篡改,终止操作,增强了本地内存访问的安全性;如果正确性验证通过,则说明当前请求端下方的指定请求端缓冲区的物理地址是有效的,加解密模块504根据指定请求端缓冲区的信息解密计算得到的请求端缓冲区的物理地址Ps-app返回给请求处理模块501,继续执行以下步骤。
步骤A3:为通过验证的请求端,获取指定请求端缓冲区的信息中指定请求端缓冲区的物理地址密文解密后得到的指定请求端缓冲区的物理地址。
步骤A4:根据远程内存访问请求的请求类型以及指定请求端缓冲区的物理地址,得到待发送的数据,以基于待发送的数据生成相应的请求数据包发送给响应端。
根据本发明的一个实施例,所述远程内存访问请求的请求类型包括远程内存读数据请求和远程内存写数据请求所述步骤A4包括步骤A41、A42和A43,具体如下:
步骤A41:获取远程内存访问请求中指定请求端缓冲区的长度;
根据本发明的一个实施例,当请求类型为远程内存请求读数据请求,执行以下步骤A42。
步骤A42:根据远程内存读数据请求、指定请求端缓冲区的物理地址和指定请求端缓冲区的长度,得到待发送的指定请求端缓冲区的信息和指定响应端缓冲区的信息。
根据本发明的一个实施例,请求处理模块501基于待发送的指定请求端缓冲区的信息和指定响应端缓冲区的信息,生成一个用于发送给响应端进行远程内存读数据的请求数据包,且请求数据包包括指定请求端缓冲区的信息和指定响应端缓冲区的信息,数据包收发模块506按照其支持的网络协议为该请求数据包添加网络包头,并将添加了网络包头的请求数据包发送到响应端。
根据本发明的一个实施例,当请求类型为远程内存请求写数据请求,执行以下步骤A43。
步骤A43:根据远程内存写数据请求、指定请求端缓冲区的物理地址和指定请求端缓冲区的长度,读取请求端缓冲区的数据,得到待发送的数据和指定响应端缓冲区的信息。
根据本发明的一个实施例,验证通过后,解密计算得到的请求端缓冲区的物理地址Ps-app就是网卡驱动模块2注册的请求端缓冲区的物理地址Psend。内存访问模块503根据Ps-app和指定请求端缓冲区的长度Ls-app通过系统总线模块4从应用程序缓冲区3中读取指定请求端缓冲区的数据,得到待发送的数据和指定响应端缓冲区的信息。
根据本发明的一个实施例,请求处理模块501基于待发送的数据和指定响应端缓冲区的信息,对读取到的待发送的数据进行分包,得到多个用于发送给响应端进行远程内存写数据的请求数据包,且每个请求数据包包括指定响应端缓冲区的信息,并将多个请求数据包发送给数据包收发模块506。
根据本发明的一个实施例,数据包收发模块506按照其支持的网络协议为每个请求数据包添加网络包头,并将添加了网络包头的请求数据包发送到响应端。
根据本发明的一个实施例,提供一种远程内存访问的响应方法,参见图3,包括步骤B1、B2、B3和B4,其中,响应处理模块502被配置为执行步骤B1、B2和B3,内存访问模块503被配置为执行步骤B4,具体过程如下。
步骤B1:获取请求端在远程内存访问请求时通过网络发送来的请求数据包,提取请求数据包中指定响应端缓冲区的信息,其中,所述信息包括指定响应端缓冲区的物理地址密文、唯一标识符、虚拟地址和长度。
根据本发明的一个实施例,指定响应端缓冲区的物理地址密文Wr-app、唯一标识符Fr-app、虚拟地址Vr-app和长度Lr-app为请求端分别基于响应端注册响应端缓存区时对应内存中的响应端缓冲区的物理地址密文Wrecv、唯一标识符Frecv、虚拟地址Vrecv和长度Lrecv直接获得。
步骤B2:获取权限验证信息,根据权限验证信息和指定响应端缓冲区的唯一标识符、虚拟地址及长度,验证所述请求端对指定响应端缓冲区是否具有访问权限。
根据本发明的一个实施例,所述步骤B2包括:
步骤B21:根据指定响应端缓冲区的唯一标识符,确定指定访问的响应端缓冲区是否存在。
根据本发明的一个实施例,根据指定响应端缓冲区的唯一标识符,读取对应响应端缓冲区的权限验证信息表项。若对应的表项不存在,说明该指定响应端缓冲区没有被注册过,终止操作;如果表项存在,进一步执行以下步骤。
步骤B22:基于指定响应端缓冲区的唯一标识符,获取存在的响应端缓冲区对应的权限验证信息,包括响应端内存中的响应端缓冲区对应的唯一标识符、虚拟地址、长度。例如获取的对应响应端缓冲区的权限验证信息表项<唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、密钥Krecv>,其中,表项中依次为响应端内存中的响应端缓冲区对应的唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、密钥Krecv。
步骤B23:通过比较指定响应端缓冲区的虚拟地址和内存中的响应端缓冲区对应的虚拟地址,以及比较指定响应端缓冲区的长度和内存中的响应端缓冲区对应的长度,确定是否超过访问权限。
根据本发明的一个实施例,当指定响应端缓冲区的虚拟地址Vr-app等于内存中的响应端缓冲区对应的虚拟地址Vrecv,并且指定响应端缓冲区的长度Lr-app等于或小于内存中的响应端缓冲区对应的长度Lrecv时,远程内存访问合法,继续执行相应操作;否则远程内存访问越界,返回访问越界错误,终止操作。其中,指定响应端缓冲区的信息还包括指定响应端缓冲区的物理地址签名Sr-app,在确定远程内存访问合法后执行的相应操作为:通过加解密模块504对指定响应端缓冲区的物理地址签名进行正确性验证。指定响应端缓冲区的物理地址签名Sr-app基于注册响应端缓存区时内存中的响应端缓冲区对应的物理地址签名Srecv直接得到,即可视为指定响应端缓冲区的物理地址签名Sr-app为内存中的响应端缓冲区对应的物理地址签名Srecv。
根据本发明的一个实施例,正确性验证包括根据内存中的响应端缓冲区的密钥Krecv和指定响应端缓冲区的物理地址密文Wr-app,对指定响应端缓冲区的物理地址签名Sr-app进行正确性验证,确定是否为正常访问。如果正确性验证不通过,表示指定响应端缓冲区的物理地址密文Wr-app无效,当前指定响应端缓冲区的物理地址已经被篡改,终止操作,增强了远程内存访问的安全性;如果正确性验证通过,则说明当前请求端请求的指定响应端缓冲区的物理地址是有效的,加解密模块504根据指定响应端缓冲区的信息解密计算得到的请求端缓冲区的物理地址Pr-app返回给响应处理模块502,继续执行以下步骤。
步骤B3:为通过验证的请求端,获取将其所发请求数据包中指定响应端缓冲区的物理地址密文解密后得到的指定响应端缓冲区的物理地址。
步骤B4:根据请求数据包的请求类型和指定响应端缓冲区的物理地址授权所述请求端对指定响应端缓冲区的物理地址对应的响应端缓冲区进行访问。
根据本发明的一个实施例,所述根据请求数据包的请求类型为远程内存写数据或远程内存读数据,步骤B4包括步骤B41、B42和B43。具体如下:
步骤B41:获取请求数据包中指定响应端缓冲区的长度。
根据本发明的一个实施例,当请求类型为远程内存写数据,执行以下步骤B42。
步骤B42:内存访问模块503根据指定响应端缓冲区的物理地址Pr-app和指定响应端缓冲区的长度Lr-app,对响应端缓冲区进行远程内存写数据,将请求数据包中的数据通过系统总线模块4写入指定响应端缓冲区,远程内存写数据操作完成。
根据本发明的一个实施例,当请求类型为远程内存读数据,该请求数据包包括指定请求端缓冲区的信息,执行以下步骤B43。
步骤B43:根据远程内存读数据的请求数据包、指定响应端缓冲区的物理地址和指定响应端缓冲区的长度,读取响应端缓冲区的数据,得到待发送的数据。
根据本发明的一个实施例,远程内存读数据的请求数据包包括指定请求端缓冲区的信息,获取响应端缓冲区的数据,基于待发送的数据生成多个响应数据包,以用于反馈给请求端,其中,响应数据包中包括指定请求端缓冲区的长度Ls-app和根据指定请求端缓冲区的信息解密计算出的指定请求端缓冲区的物理地址Ps-app。
根据本发明的一个实施例,数据包收发模块506根据其支持的协议为响应数据包添加网络包头,并将添加了网络包头的响应数据包发送给请求端。请求端收到响应数据包,获取响应数据包中携带的指定请求端缓冲区的物理地址Ps-app和长度Ls-app。由于Ps-app和Ls-app已经在请求发送过程中经过了验证,响应数据包中的数据将被内存访问模块503直接写入指定请求端缓冲区的物理地址Ps-app指定的请求端缓冲区中,远程读操作完成。
根据本发明的一个实施例,下面结合请求端和响应端给出一个具体的远程读写操作流程:
S1:响应端应用程序模块1在内存的应用程序缓冲区3中分配网络通信的响应端缓冲区,生成的响应端缓冲区的虚拟地址为Vrecv,长度为Lrecv,继续执行步骤S2。
S2:响应端网卡驱动模块2对该响应端缓冲区进行注册,为该响应端缓冲区生成唯一标识符Frecv,并为该响应端缓冲区生成物理地址Precv。
S3:响应端网卡驱动模块2将生成的唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、物理地址Precv通过系统总线模块4发给内存访问模块503,内存访问模块503将以上生成的响应端缓冲区的信息传递给加解密模块504。
S4:响应端加解密模块504根据该响应端缓冲区生成密钥Krecv,通过可逆加密算法将物理地址Precv进行加密,生成物理地址密文Wrecv,并利用密钥Krecv为物理地址密文Wrecv生成物理地址签名Srecv。同时,加解密模块504生成一个权限验证信息表项<Frecv,Vrecv,Lrecv,Krecv>并写入权限记录模块505,并将内存中的响应端缓冲区对应物理地址密文Wrecv、物理地址密钥Krecv返回给网卡驱动模块2。
S5:响应端网卡驱动模块2将上述内存中的响应端缓冲区对应的唯一标识符Frecv、物理地址密文Wrecv和物理地址签名Srecv返回给响应端应用程序模块1。
S6:请求端的相应模块也执行步骤S2~S5,对请求端缓冲区进行注册,并为内存中的请求端缓冲区生成请求端缓冲区的唯一标识符Fsend、虚拟地址Vsend、长度Lsend、物理地址密文Wsend、物理地址签名Ssend和密钥Ksend。同时,将生成的一个权限验证信息表项<Fsend,Vsend,Lsend,Ksend>写入权限记录模块505,并将加密后的物理地址密文Wsend、物理地址密钥Ksend返回给网卡驱动模块2。
S7:请求端的网卡驱动模块2将内存中的请求端缓冲区对应的唯一标识符Fsend、物理地址密文Wsend和物理地址签名Ssend返回给请求端应用程序模块1中。
S8:请求端和响应端建立连接后,响应端应用程序模块1将内存中的响应端缓冲区对应的唯一标识符Frecv、虚拟地址Vrecv、长度Lrecv、物理地址密文Wrecv和物理地址签名Srecv通过网络发送到请求端应用程序模块1。
S9:请求端发起远程内存访问请求,并将请求下发到请求端网络接口设备5。请求中包括由应用程序模块1请求的指定请求端缓冲区的唯一标识符Fs-app、虚拟地址Vs-app、长度Ls-app、物理地址密文Ws-app和物理地址签名Ss-app,以及请求的指定响应端缓冲区的唯一标识符Fr-app、虚拟地址Vr-app和长度Lr-app、物理地址密文Wr-app和物理地址签名Sr-app。
S10:请求端请求处理模块501首先检查请求端缓冲区的访问权限是否合法。通过对比指定请求端缓冲区的唯一标识符Fs-app和内存中的请求端缓冲区对应的唯一标识符Fsend,读取权限记录模块505中保存的权限验证信息表项<Fsend,Vsend,Lsend,Ksend>。如果唯一标识符Fsend对应的表项不存在,说明该请求端缓冲区没有被注册过,终止操作;如果表项存在,判断虚拟地址区域的访问是否合法。当且仅当注册时内存中的请求端缓冲区对应的虚拟地址Vsend等于指定请求端缓冲区的虚拟地址Vs-app且指定请求端缓冲区的长度Ls-app等于或小于注册时内存中的请求端缓冲区对应的长度Lsend时,访问合法,继续执行步骤S11;否则,访问越界,向应用程序模块1返回访问越界错误,终止操作。
S11:请求端请求处理模块501将指定请求端缓冲区的物理地址密文Ws-app、物理地址签名Ss-app、注册时生成的对应请求端缓冲区的密钥Ksend发送到加解密模块504,由加解密模块504按照预定的加密算法根据密钥Ksend和密文Ws-app对签名Ss-app进行正确性验证;如果验证通过,则说明当前请求端下发的指定请求端缓冲区的物理地址是有效的,加解密模块504将解密计算出的指定请求端缓冲区的物理地址Ps-app返回给请求处理模块501,继续执行步骤S12;如果验证不通过,则说明当前指定请求端缓冲区的信息已经被篡改过,例如其指定响应端缓冲区的物理地址密文被篡改,内存访问存在不安全性,终止操作。
S12:如果请求端当前的请求是写数据请求,继续执行步骤S13;如果当前请求是读数据请求,继续执行步骤S15;
S13:请求端请求处理模块501读取请求端的应用程序缓冲区3的数据:由于已经通过验证,因此,解密后的指定请求端缓冲区的物理地址Ps-app就是注册时生成的请求端缓冲区的物理地址Psend。内存访问模块503根据指定请求端缓冲区的物理地址Ps-app和长度Ls-app通过系统总线模块4从应用程序缓冲区3中读取数据;
S14:请求端请求处理模块501对读取到的数据进行分包,每个请求数据包的请求类型为远程内存写数据请求,每个请求数据包将携带指定响应端缓冲区的唯一标识符Fr-app、虚拟地址Vr-app、长度Lr-app、物理地址签名Sr-app、物理地址密文Wr-app和从应用程序缓冲区3中读取的一段数据。请求处理模块501将请求数据包发送给数据包收发模块506。继续执行步骤S16。
S15:请求端请求处理模块501生成一个请求数据包,请求数据包的请求类型为远程内存读数据请求,请求数据包包括指定请求端缓冲区的唯一标识符Fs-app、虚拟地址Vs-app、长度Ls-app、物理地址签名Ss-app和物理地址密文Ws-app;同时,请求数据包还包括指定响应端缓冲区的唯一标识符Fr-app、虚拟地址Vr-app、长度Lr-app、物理地址签名Sr-app、物理地址密文Wr-app。请求处理模块501将该请求数据包发送给数据包收发模块506。继续执行步骤S16。
S16:请求端数据包收发模块506按照其支持的网络协议在相应请求数据包中添加网络包头,并将请求数据包发送到响应端。继续执行步骤S17。
S17:响应端网络接口设备5的响应处理模块502通过数据包收发模块506收到相应请求数据包后,提取请求数据包中的指定响应端缓冲区的唯一标识符Fr-app、虚拟地址Vr-app、长度Lr-app、物理地址签名Sr-app、物理地址密文Wr-app,并根据指定响应端缓冲区的唯一标识符Fr-app在权限记录表中进行进行查找,如果查找失败,说明访问的响应端缓冲区不存在,终止操作;如果查找成功,获取指定响应端缓冲区对应的权限验证信息表项<Frecv,Krecv,Vrecv,Lrecv>。
S18:响应端响应处理模块502进行访问权限检查。当且仅当指定响应端缓冲区的虚拟地址Vr-app等于内存中的响应端缓冲区对应的虚拟地址Vrecv且指定响应端缓冲区的长度Lr-app等于或小于内存中的响应端缓冲区对应的长度Lrecv时,访问权限检查通过,继续执行以下步骤S19;否则,访问越界,权限检查失败,返回访问越界错误,终止操作。
S19:响应端响应处理模块502将内存中的响应端缓冲区对应的密钥Krecv、指定响应端缓冲区的物理地址签名Sr-app和物理地址密文Wr-app传递给加解密模块进行验证。加解密模块利用密钥Krecv和物理地址密文Wr-app对物理地址签名Sr-app进行正确性验证。如果验证失败,说明指定响应端缓冲区的信息被篡改过,例如其指定响应端缓冲区的物理地址密文被篡改过,终止操作;如果验证通过,加解密模块对指定响应端缓冲区的物理地址密文Wr-app进行解密,得到解密后指定响应端缓冲区的物理地址Pr-app,并将该物理地址Pr-app返回给响应处理模块502。继续执行步骤S20。
S20.如果响应端接收的请求数据包的请求类型是远程内存写数据请求,执行步骤S21;如果是远程内存读数据请求,执行步骤S22。
S21:响应端内存访问模块503根据指定响应端缓冲区的物理地址Pr-app和长度Lr-app将请求数据包中的数据通过系统总线模块4写入指定响应端缓冲区的物理地址对应的响应端缓冲区,远程写操作完成。
S22:响应端内存访问模块503根据指定响应端缓冲区的物理地址Pr-app和长度Lr-app通过系统总线模块4从内存中读取数据,将读取的数据传递给响应处理模块502。
S23:响应端响应处理模块502对数据进行拆分,生成多个响应数据包,每个响应数据包包括解密计算出的指定请求端缓冲区的物理地址Ps-app、指定请求端缓冲区的Ls-app,响应处理模块502将响应数据包传递给数据包收发模块506。
S24.数据包收发模块506根据其支持的协议为响应数据包添加网络包头,并将响应数据包发送给请求端。
S25.请求端收到响应数据包,获取响应数据包中包括的指定请求端缓冲区的物理地址Ps-app、指定请求端缓冲区的Ls-app。由于指定请求端缓冲区的物理地址Ps-app、指定请求端缓冲区的Ls-app已经在请求发送过程中经过了验证,响应数据包中的数据将被内存访问模块503直接写入指定请求端缓冲区的物理地址Ps-app对应的请求端缓冲区中,远程读操作完成。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (25)
1.一种远程内存访问的系统,其包括网络接口设备、一个或多个CPU以及每个CPU对应的内存,所述网络接口设备通过系统总线与CPU相连,所述内存中包括缓冲区,其特征在于,所述网络接口设备包括:
加解密模块,用于获取缓冲区信息,其中,所述缓冲区信息至少包括缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述加解密模块针对每个缓冲区生成对应密钥,基于密钥对缓冲区的物理地址进行加密,生成缓冲区的物理地址密文;
权限记录模块,用于记录每个缓冲区对应的包含其缓冲区的唯一标识符、虚拟地址、长度和密钥信息的权限验证信息;
响应处理模块,用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述响应处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址;
内存访问模块,用于根据指定缓冲区的物理地址授权所述请求端对物理地址对应的缓冲区进行访问。
2.根据权利要求1所述的系统,其特征在于,所述网络接口设备还包括:
请求处理模块,用于基于请求端对指定缓冲区的远程内存访问请求,所述请求中包含了指定缓冲区的唯一标识符、虚拟地址、长度和物理地址,所述请求处理模块对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,获取请求端具有访问权限的指定缓冲区的物理地址密文解密后得到的指定缓冲区的物理地址。
3.根据权利要求1所述的系统,其特征在于,所述响应处理模块用于根据指定缓冲区的唯一标识符和内存中的缓冲区的唯一标识符判断指定缓冲区是否存在,所述响应处理模块通过如下方式对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,包括:
通过确定指定缓冲区的虚拟地址和内存中的缓冲区的虚拟地址是否相等,以及确定指定缓冲区的长度是否小于或等于内存中的缓冲区的长度,以进行访问权限验证。
4.根据权利要求2所述的系统,其特征在于,所述请求处理模块用于根据指定缓冲区的唯一标识符和内存中的缓冲区的唯一标识符判断指定缓冲区是否存在,所述请求处理模块通过如下方式对存在的指定缓冲区根据权限记录模块中记录的权限验证信息验证请求端对该指定缓冲区是否具有访问权限,包括:
通过确定指定缓冲区的虚拟地址和内存中的缓冲区的虚拟地址是否相等,以及确定指定缓冲区的长度是否为小于或等于内存中的缓冲区的长度,以进行访问权限验证。
5.根据权利要求3或4所述的系统,其特征在于,所述请求中包括指定缓冲区的物理地址密文和物理地址签名;
所述加解密模块还用于根据记录的权限验证信息中的密钥和指定缓冲区的物理地址密文和物理地址签名验证所述请求端对指定缓冲区是否具有访问权限;以及
对请求端具有访问权限的指定缓冲区的物理地址密文进行解密,得到解密后的指定缓冲区的物理地址。
6.根据权利要求1所述的系统,其特征在于,所述加解密模块还用于采用预定的加解密算法对缓冲区的物理地址进行加密或对指定缓冲区的物理地址密文进行解密,其中,加解密算法为RSA加解密算法或DES加解密算法。
7.根据权利要求1所述的系统,其特征在于,所述内存访问模块通过如下方式实现对物理地址对应的缓冲区进行访问,包括:
根据远程内存访问请求的请求类型以及指定缓冲区的物理地址和长度,得到待发送的数据,以发送给响应端;或
根据远程内存访问请求的请求类型以及指定缓冲区的物理地址和长度,得到待发送的数据,以发送给请求端。
8.根据权利要求1所述的系统,其特征在于,所述网络接口设备还包括数据包收发模块,该模块被配置为:
根据远程内存访问请求,获取物理地址对应的缓冲区中待发送的数据,并基于待发送的数据生成若干数据包用于进行发出;
或接收远程内存访问请求时通过网络发送来的数据包。
9.根据权利要求1所述的系统,其特征在于,所述CPU中配置有:
应用程序模块,用于根据远程内存访问请求中待发送的数据或待接收的数据,在内存中分配相应的缓冲区,并生成缓冲区的虚拟地址和长度;
网卡驱动模块,用于基于分配的缓冲区,生成缓冲区的唯一标识符和对应的物理地址。
10.一种远程内存访问的响应方法,其特征在于,包括:
步骤B1:获取请求端在远程内存访问请求时通过网络发送来的请求数据包,提取请求数据包中指定响应端缓冲区的信息,其中,所述信息包括指定响应端缓冲区的物理地址密文、唯一标识符、虚拟地址和长度;
步骤B2:获取权限验证信息,根据权限验证信息和指定响应端缓冲区的唯一标识符、虚拟地址及长度,验证所述请求端对指定响应端缓冲区是否具有访问权限;
步骤B3:为通过验证的请求端,获取将其所发请求数据包中指定响应端缓冲区的物理地址密文解密后得到的指定响应端缓冲区的物理地址;
步骤B4:根据请求数据包的请求类型和指定响应端缓冲区的物理地址授权所述请求端对响应端缓冲区的物理地址对应的响应端缓冲区进行访问。
11.根据权利要求10所述的方法,其特征在于,所述步骤B2包括:
根据指定响应端缓冲区的唯一标识符,确定指定访问的响应端缓冲区是否存在;
基于指定响应端缓冲区的唯一标识符,获取存在的响应端缓冲区对应的权限验证信息,包括响应端内存中的响应端缓冲区对应的唯一标识符、虚拟地址和长度;
通过比较指定响应端缓冲区的虚拟地址和内存中的响应端缓冲区对应的虚拟地址,以及比较指定响应端缓冲区的长度和内存中的响应端缓冲区对应的长度,确定是否超过访问权限。
12.根据权利要求10所述的方法,其特征在于,所述指定响应端缓冲区的信息还包括指定响应端缓冲区的物理地址签名,所述权限验证信息还包括响应端内存中的响应端缓冲区对应的密钥,所述验证所述请求端对指定响应端缓冲区是否具有访问权限还包括:
根据内存中的响应端缓冲区的密钥和指定响应端缓冲区的物理地址密文对指定响应端缓冲区的物理地址签名进行正确性验证,确定是否为正常访问。
13.根据权利要求10所述的方法,其特征在于,所述步骤B4包括:
获取请求数据包中指定响应端缓冲区的长度,其中,请求数据包的请求类型为远程内存写数据或远程内存读数据;
根据远程内存写数据的请求数据包、指定响应端缓冲区的物理地址和指定响应端缓冲区的长度,对响应端缓冲区进行远程内存写数据;
根据远程内存读数据的请求数据包、指定响应端缓冲区的物理地址和指定响应端缓冲区的长度,读取响应端缓冲区相应数据,得到待发送的数据。
14.根据权利要求13所述的方法,其特征在于,所述远程内存读数据的请求数据包包括指定请求端缓冲区的信息,所述对响应端缓冲区进行访问,还包括:
获取待发送的数据,基于待发送的数据生成多个响应数据包,以用于反馈给请求端,其中,响应数据包中包括指定请求端缓冲区的长度和根据指定请求端缓冲区的信息解密计算出的指定请求端缓冲区的物理地址。
15.根据权利要求10-14任一项所述的方法,其特征在于,还包括:
基于响应端与请求端之间建立的连接,根据接收或发送的数据量大小,在响应端的内存中分配响应端缓冲区并为内存中的响应端缓冲区生成对应响应端缓冲区的信息,其中,所述信息包括内存中的响应端缓冲区对应的唯一标识符、虚拟地址、长度和物理地址。
16.根据权利要求15所述的方法,其特征在于,所述生成对应响应端缓冲区的信息还包括响应端为内存中的响应端缓冲区生成的响应端缓冲区的密钥;
基于内存中的响应端缓冲区对应的密钥、唯一标识符、虚拟地址和长度,得到响应端缓冲区对应的权限验证信息;
所述指定响应端缓冲区的密文基于内存中的响应端缓冲区对应的密钥对内存中的响应端缓冲区对应的物理地址进行加密得到;
所述指定响应端缓冲区的物理地址签名基于内存中的响应端缓冲区对应的密钥和内存中的响应端缓冲区的物理地址密文得到。
17.一种远程内存访问的请求方法,其特征在于,包括:
步骤A1:获取向响应端发起的远程内存访问请求,其中,请求中包括指定请求端缓冲区的信息和指定响应端缓冲区的信息,指定请求端缓冲区的信息包括指定请求端缓冲区的物理地址密文、唯一标识符、虚拟地址和长度,指定响应端缓冲区的信息包括指定响应端缓冲区的物理地址密文;
步骤A2:获取权限验证信息,根据权限验证信息和指定请求端缓冲区的唯一标识符、虚拟地址及长度,验证所述请求端对指定的请求端缓冲区是否具有访问权限;
步骤A3:为通过验证的请求端,获取指定请求端缓冲区的信息中指定请求端缓冲区的物理地址密文解密后得到的指定请求端缓冲区的物理地址;
步骤A4:根据远程内存访问请求的请求类型以及指定请求端缓冲区的物理地址,得到待发送的数据,以基于待发送的数据生成相应的请求数据包发送给响应端。
18.根据权利要求17所述的方法,其特征在于,所述步骤A2包括:
根据指定请求端缓冲区的唯一标识符,确定指定访问的请求端缓冲区是否存在;
基于指定请求端缓冲区的唯一标识符,获取存在的请求端缓冲区对应的权限验证信息,包括请求端内存中的请求端缓冲区对应的唯一标识符、虚拟地址和长度;
通过比较指定请求端缓冲区的虚拟地址和内存中的请求端缓冲区对应的虚拟地址,以及比较指定请求端缓冲区的长度和内存中的请求端缓冲区对应的长度,确定是否超过访问权限。
19.根据权利要求17所述的方法,其特征在于,所述指定请求端缓冲区的信息还包括指定请求端缓冲区的物理地址签名,所述权限验证信息还包括请求端内存中的请求端缓冲区对应的密钥,所述验证所述请求端对指定的请求端缓冲区是否具有访问权限还包括:
根据内存中的请求端缓冲区的密钥和指定请求端缓冲区的物理地址密文,对指定请求端缓冲区的物理地址签名进行正确性验证,确定是否为正常访问。
20.根据权利要求17所述的方法,其特征在于,所述远程内存访问请求的请求类型包括远程内存读数据请求和远程内存写数据请求,所述步骤A4包括:
获取远程内存访问请求中指定请求端缓冲区的长度;
根据远程内存写数据请求、指定请求端缓冲区的物理地址和指定请求端缓冲区的长度,读取请求端相应缓冲区的数据,得到待发送的数据和指定响应端缓冲区的信息;
根据远程内存读数据请求、指定请求端缓冲区的物理地址和指定请求端缓冲区的长度,得到待发送的指定请求端缓冲区的信息和指定响应端缓冲区的信息。
21.根据权利要求17所述的方法,其特征在于,所述基于待发送的数据生成相应的请求数据包包括:
基于待发送的数据和指定响应端缓冲区的信息,生成多个用于发送给响应端进行远程内存写数据的请求数据包;或
基于待发送的指定请求端缓冲区的信息和指定响应端缓冲区的信息,生成一个用于发送给响应端进行远程内存读数据的请求数据包。
22.根据权利要求17-21任一项所述的方法,其特征在于,还包括:
基于响应端与请求端之间建立的连接,根据需要发送或接收的数据量大小,在内存中分配请求端缓冲区并为内存中的请求端缓冲区生成对应请求端缓冲区的信息,其中,所述信息包括内存中的请求端缓冲区对应的唯一标识符、虚拟地址、长度和物理地址。
23.根据权利要求22所述的方法,其特征在于,所述生成的请求端缓冲区的信息包括请求端为内存中的请求端缓冲区生成的请求端缓冲区的密钥;
基于内存中的请求端缓冲区对应的密钥、唯一标识符、虚拟地址和长度,得到请求端缓冲区对应的权限验证信息;
所述指定请求端缓冲区的物理地址密文基于内存中的请求端缓冲区对应的密钥对内存中的请求端缓冲区对应的物理地址进行加密得到;
指定请求端缓冲区的物理地址签名基于内存中的请求端缓冲区对应的密钥和内存中的请求端缓冲区对应的物理地址密文得到。
24.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求10至16中和权利要求17至23中任一项所述方法的步骤。
25.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储可执行指令;
所述一个或多个处理器被配置为经由执行所述可执行指令以实现权利要求10至16中和权利要求17至23中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210617225.6A CN115017089A (zh) | 2022-06-01 | 2022-06-01 | 一种远程内存访问的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210617225.6A CN115017089A (zh) | 2022-06-01 | 2022-06-01 | 一种远程内存访问的系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115017089A true CN115017089A (zh) | 2022-09-06 |
Family
ID=83073177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210617225.6A Pending CN115017089A (zh) | 2022-06-01 | 2022-06-01 | 一种远程内存访问的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115017089A (zh) |
-
2022
- 2022-06-01 CN CN202210617225.6A patent/CN115017089A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11627131B2 (en) | Address validation using signatures | |
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
EP3274848B1 (en) | Providing enhanced replay protection for a memory | |
US8161287B2 (en) | Method and system for memory protection and security using credentials | |
EP3274850B1 (en) | Protecting a memory | |
US9152825B2 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
US10225247B2 (en) | Bidirectional cryptographic IO for data streams | |
CN111143247B (zh) | 存储装置数据完整性保护方法及其控制器、片上系统 | |
US20130297857A1 (en) | Parallel computation with multiple storage devices | |
CN112433817A (zh) | 信息配置方法、直接存储访问方法及相关装置 | |
CN115017089A (zh) | 一种远程内存访问的系统及方法 | |
CN112363800B (zh) | 一种网卡的内存访问方法、安全处理器、网卡及电子设备 | |
US7269739B2 (en) | Method and system for allowing for the secure transmission and reception of data in a processing system | |
KR20090059602A (ko) | 세션 메모리 버스를 구비한 암호화 장치 | |
CN115186300B (zh) | 文件安全处理系统及文件安全处理方法 | |
CN111125794A (zh) | 访存控制方法、系统及存储装置控制器 |
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 |