基于RDMA的数据传输方法、网卡、服务器及介质
技术领域
本说明书实施例涉及通信技术领域,尤其涉及一种基于RDMA的数据传输方法、RDMA网卡、服务器及可读存储介质。
背景技术
远端直接内存访问(Remote Direct Memory Access,简称RDMA)是一种高性能数据通信技术,RDMA可以将数据直接从一个系统的存储器快速传输到到另一个远程系统存储器中,在数据传输的整个过程中不需要操作系统和中央处理器的参与。所以,相对于传统TCP传输方式,RDMA技术减少了中央处理器在数据传输过程中的消耗,减少了对内存带宽和处理器(Central Processing Unit,简称CPU)周期,提升了系统处理业务的性能,RDMA具有高带宽、低时延及低CPU占用率的特点。
发明内容
本说明书实施例提供及一种基于RDMA的数据传输方法、RDMA网卡、服务器及可读存储介质。
第一方面,本说明书实施例提供一种基于RDMA的数据传输方法,包括:发送端RDMA网卡获取待发送的原始数据,并确定加密算法,采用所述加密算法对所述原始数据进行加密;将加密数据封装在数据包中,其中,在数据包的报头中含有加密算法标识;将所述数据包发送给接收端RDMA网卡。
第二方面,本说明书实施例提供一种RDMA网卡,包括:获取单元,用于获取待发送的原始数据,并确定加密算法;加密单元,用于采用所述加密算法对所述原始数据进行加密;封装单元,用于将加密数据封装在数据包中,其中,在数据包的报头中含有加密算法标识;发送单元,用于将所述数据包发送给接收端RDMA网卡。
第三方面,本说明书实施例提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述基于RDMA的数据传输的步骤。
第四方面,本说明书实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述基于RDMA的数据传输的步骤。
本说明书实施例有益效果如下:
本说明书实施例提供了一种基于RDMA的数据传输方法,通过在RDMA网卡对数据进行加密处理,使得数据传输的安全性得以提高,而且,由于整个数据加解密的操作是在RDMA网卡内部实现的,即在硬件内部完成,对软件是透明的,保证安全性的同时没有影响到应用程序的性能。
附图说明
图1为本说明书实施例基于RDMA的数据传输方法的应用场景示意图;
图2为本说明书实施例第一方面提供的基于RDMA的数据传输方法流程图;
图3为本说明书实施例第一方面提供的基于RDMA的数据传输方法中数据报文结构示意图;
图4为本说明书实施例第一方面提供的基于RDMA的数据传输方法中发送端与接收端处理示意图;
图5为本说明书实施例第二方面提供的RDMA网卡结构示意图;
图6为本说明书实施例第三方面提供的服务器结构示意图。
具体实施方式
为了更好地理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
在现代企业级数据中心,RDMA技术正在受到越来越多的关注,同时被越来越多的应用所使用。在实际场景中,除了要处理网络带宽和延时性能外,还需要关注网络传输其本身的安全性,特别是在网络金融系统,网络传输安全至关重要。因此为了实现RDMA传输的安全性,本说明书实施例提供了一种通过对RDMA报文进行加密进行安全数据传输的方法。
RDMA作为数据中心的较新的通信技术,对数据传输安全方面还存在不完善的地方。当前RDMA的数据加密主要还是靠CPU先对数据进行加密,然后RDMA硬件去获取加密好的数据进行传输。这种方式实在实现上较为复杂和繁琐,同时也一定程度扼杀了RDMA高性能的优势。所以,本发明提出一种对RDMA数据加密的方法,使得应用程式可以简单高效地完成对RDMA数据报文的加密和解密。
参见图1,为本说明书实施例基于RDMA的数据传输方法的应用场景示意图。该场景下,示出了发送端10和接收端20,可以理解,发送端和接收端是指两台设备,例如可以是服务器,也可以是终端设备。其中,发送端10进一步示出了应用程序101和RDMA网卡102,接收端进一步示出了应用程序201和RDMA网卡202。当有数据传输时,发送端10的应用程序101发起数据传输指令,将待传输的原始数据下发给RDMA网卡102,RMDA网卡102将数据进行封装成数据包后,将数据包通过RDMA网络发送给接收端20的RDMA网卡202,RMDA网卡202将接收到的数据包拆分得到原始数据,最终提供给应用程序201。为了提高数据传输安全性,上述发送端的RDMA网卡102在对原始数据进行封装之前,需要对数据进行加密处理,将加密数据封装成数据包发送给接收端的RDMA网卡202,由此,使得在RDMA网络中被传输的数据是密文,即使被截取,数据也是安全的。
第一方面,本说明书实施例提供一种基于RDMA的数据传输方法,请参考图2,包括步骤S201-S203。
S201:发送端RDMA网卡获取待发送的原始数据,并确定加密算法,采用加密算法对原始数据进行加密。
在一种可选方式中,发送端RDMA网卡从发送端应用程序获取到原始数据以及加密方式命令。例如,发送端应用程序调用RDMA应用接口Verbs API,向RDMA网卡下发数据发送命令及加密方式命令。
Verbs API是一个动态链接库,可提供对硬件(RDMA网卡)进行访问的方法。
数据发送命令中携带待发送的原始数据,原始数据是待发送的用户数据,或称为报文(message),是网络中交换与传输的数据单元,即一次性要发送的数据块,包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。
加密方式命令用于向RDMA网卡指示采用哪种加密算法对数据加密。加密方法可以是AES(Advanced Encryption Standard,高级加密标准)、DES(Data EncryptionStandard,即数据加密标准)、DSA(Digital Signature Algorithm,数字签名算法)、MD5(MD5Message-Digest Algorithm,MD5消息摘要算法)、SHA(Secure Hash Algorithm,安全散列算法)等各种已有或自定义算法,本说明书实施例对具体的加密算法不作限定。
另外,除了由上述例子中由应用程序向RDMA网卡下发加密方式命令确定加密方式外,还可以由RDMA网卡自身确定加密方式,例如,在RDMA网卡出厂设置中,默认采取某一种或某几种加密方式,或者,通过对RDMA网卡进行编程设置,确定采取哪种加密方式。
S202:将加密数据封装在数据包中,其中,在数据包的报头中含有加密算法标识。
RDMA网卡在接收到原始数据后,需要对原始数据进行封装,封装得到包含发送端和接收端地址信息的数据包,数据包沿着不同路径在一个或多个网络中传输。
参见图3,为RDMA数据包的结构示意图。RDMA数据包包括路由报头(RoutingHeader)、传输报头(Transport Header),报文(Packet Payload)和循环冗余校验(CRC)四部分。
Routing Header:路由报头,包含发送端到接收端的路由信息。
Transport Header:传输报头,包含IBA(InfiniBand Architecture,表示infiniband架构)传输的字段,满足IBTA(InfiniBand Trade Association,InfiniBand的全部标准制定者,解释RDMA传输过程中应具备的特性行为)协议的标准。在IBTA协议中传输报头包含了预留位(保留位)。
Packet Payload:报文,也可理解为原始数据、用户数据或数据包的净荷。
CRC:循环冗余校验,是根据数据的数据产生简短固定位数校验码的一种散列函数,用来检测或校验数据传输或者保存后可能出现的错误,利用除法及余数的原理来进行错误侦测的方式。
由于发送端RDMA网卡在数据包封装前对数据进行了加密,因此,是对加密数据进行的数据包封装,而且,为了使接收端获知加密方式,需要在数据包中携带加密算法标识。
在一种可选方式中,可在数据包的传输报头(Transport Header)的预留位表示加密算法标识。这种方式不需要对数据包的结构进行改动,比较方便。
在另一种可选方式中,可以通过重新制定数据包协议,使用非预留位的方式,例如,在数据包的路由报头(Routing Header)或传输报头(Transport Header)中增加自定义字段,在该自定义字段表示加密算法标识。
可以理解,通过在发送端RDMA网卡对数据包增加加密算法标识的方式,可以使接收端在解析数据包得到上述加密算法标识(不全为0)后,即可获知数据被加密,因此上述仅携带加密算法标识的方式,已足以使接收端得知数据被加密这一事实。当然,也可以在发送端再另外增加一个加密表示标识,该加密表示标识用以指示数据是否被加密,进一步再通过加密算法标识告知具体采用哪种加密算法,此种情况下,接收端RDMA网卡解析数据包后,首先根据加密表示标识确定数据被加密,然后再根据加密算法标识得知加密算法,继而确定加密算法对应的解密算法。与上述表示加密算法标识的方式类似,可在数据包的传输报头(Transport Header)的预留位表示加密表示标识,或者,在数据包的路由报头(RoutingHeader)或传输报头(Transport Header)中增加自定义字段,在该自定义字段表示加密表示标识。
S203:将数据包发送给接收端RDMA网卡。
发送端RDMA网卡将封装好的数据包通过RDMA网络传输给接收端RDMA网卡。由于数据包中的报文是经过加密处理的,因此,即使在数据传输过程中,数据发生了丢失或被截取的情况,由于是密文,由此尽可能提高了数据的安全性。
接收端RDMA网卡在接收到数据包之后,需要对数据包进行解析以及对密文进行解密处理:首先,接收端RDMA网卡对接收到数据包进行解析,得到加密数据及报头;然后,根据报头中加密算法标识,确定加密算法对应的解密算法;最后,采用解密算法对加密数据进行解密,得到原始数据。
其中,为了表述方便,将加密方式对应的解密方式称为解密算法,在实际应用中,有些加密方式没有区分加密算法和解密算法,都采用了统一的算法名称,对此可以理解,上述表述并不应该认为是对本说明书实施例构成限制。
参见图4,为本说明书实施例第一方面提供的基于RDMA的数据传输方法中发送端与接收端处理示意图。整个数据处理过程包括:首先,发送端应用程序将原始数据下发给发送端RDMA网卡,然后,发送端RDMA网卡对数据进行加密并封装成数据包,并将加密的数据包发送给接收端RDMA网卡,接着,接收端RDMA网卡对数据包进行拆分以及解密处理得到原始数据,最后,接收端RDMA网卡将原始数据提供给接收端应用程序。可见,整个数据加解密的操作是在RDMA网卡内部实现的,即在硬件内部完成,对软件是透明的,保证安全性的同时没有影响到应用程序的性能。
本领域技术人员了解,RDMA一直是HPC(高性能计算)领域的专有技术,而高性能计算没有加解密的需求,本申请发明人发现,可以将RDMA应用的网络金融中,而在将RDMA应用的网络金融中之后,发明人进一步发现数据传输的安全性至关重要。
目前加解密功能的芯片一般是独立的芯片,没有和网络芯片集成在一起,实际场景下,如果要达到网络传输加解密的功能,最容易想到的就是同时使用加解密芯片和网络芯片结合的方式,这种情况下,应用程序就需要同时调用加解密芯片以及网络芯片(RDMA网卡),这种将两种芯片结合到一起来实现数据加密传输的方式,复杂度增加且融通性不好。本说明书实施例中,创新性的提出,在RDMA网卡内部实现对数据进行加解密,使得网卡同时具备传输和加解密两种功能,且在芯片内部实现,对于软件是透明的,保证安全性的同时没有影响到应用程序的性能。
第二方面,基于同一发明构思,本说明书实施例提供一种RDMA网卡,请参考图5,该RDMA网卡包括:
获取单元501,用于获取待发送的原始数据,并确定加密算法;
加密单元502,用于采用所述加密算法对所述原始数据进行加密;
封装单元503,用于将加密数据封装在数据包中,其中,在数据包的报头中含有加密算法标识;
发送单元504,用于将所述数据包发送给接收端RDMA网卡。
在一种可选方式中,该RDMA网卡还包括:
接收单元505,用于接收所述数据包;
解析单元506,用于对接收到所述数据包进行解析,得到所述加密数据及所述报头;
确定单元507,用于根据所述报头中所述加密算法标识,确定加密算法对应的解密算法;
解密单元508,用于采用所述解密算法对所述加密数据进行解密,得到原始数据。
在一种可选方式中,在数据包的报头中还含有加密表示标识;
所述确定单元507具体用于:首先根据所述加密表示标识确定数据被加密,然后再根据所述加密算法标识确定所述解密算法。
在一种可选方式中,所述封装单元503具体用于,在所述数据包的传输报头的预留位表示所述加密表示标识和所述加密算法标识;或者,在所述数据包的路由报头或传输报头中增加自定义字段,在所述自定义字段表示所述加密表示标识和所述加密算法标识。
在一种可选方式中,所述的RDMA网卡还包括:应用传输单元509,用于接收发送端RDMA应用程序通过调用RDMA应用接口下发的原始数据以及加密方式命令;所述获取单元501,接收所述原始数据和所述加密方式命令,并根据所述加密方式命令确定所述加密算法。
可以理解,应用传输单元509,在接收端中,还用于将解密得到的原始数据提供给应用程序。
第三方面,基于与前述实施例中账户追款方法的发明构思,本发明还提供一种服务器,如图6所示,包括存储器604、处理器602及存储在存储器604上并可在处理器602上运行的计算机程序,所述处理器602执行所述程序时实现前文所述基于RDMA的数据传输方法的任一方法的步骤。
其中,在图6中,总线架构(用总线600来代表),总线600可以包括任意数量的互联的总线和桥,总线600将包括由处理器602代表的一个或多个处理器和存储器604代表的存储器的各种电路链接在一起。总线600还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口606在总线600和接收器601和发送器603之间提供接口。接收器601和发送器603可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器602负责管理总线600和通常的处理,而存储器604可以被用于存储处理器602在执行操作时所使用的数据。
第四方面,基于与前述实施例中基于RDMA的数据传输方法的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述基于RDMA的数据传输方法的任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。