数据传输方法、装置、设备及存储介质转让专利

申请号 : CN201911409353.6

文献号 : CN111193653B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴皓睿裴超王亮王健冯瑞青

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例公开了一种数据传输方法、装置、设备及存储介质,属于通信技术领域。该方法包括:获取原始数据包、第一地址和租户标识,根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包,将隧道数据包发送给第一地址对应的接收方网卡;接收方网卡接收到隧道数据包时,对隧道数据包进行解封装,得到原始数据包和租户标识;将原始数据包和租户标识传输至接收方服务器;接收方服务器用于将原始数据包分发给租户标识对应的租户。因此,通过进行隧道封装,根据租户标识对租户进行区分,可以将公有云中每个租户的数据隔离出来,保证了数据的安全。

权利要求 :

1.一种数据传输方法,其特征在于,应用于支持远程直接内存访问协议RoCE的发送方网卡,所述方法包括:

获取原始数据包、第一地址和租户标识,其中所述第一地址包括接收所述原始数据包的接收方网卡的地址,所述租户标识用于指示接收方服务器上对应的租户;其中,发送方服务器与所述接收方服务器之间建立有远程直接内存访问RDMA连接,所述原始数据包为RDMA数据包;

根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包;

将所述隧道数据包发送给所述第一地址对应的接收方网卡,所述接收方网卡支持所述RoCE。

2.根据权利要求1所述的方法,其特征在于,所述原始数据包携带第二地址,所述第二地址包括接收方虚拟机的地址,所述接收方虚拟机的地址包括第二媒体访问控制MAC地址和第二网际协议IP地址,所述第一地址包括所述接收方网卡的第一MAC地址和第一IP地址,所述根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包,包括:

将所述原始数据包的所述第二MAC地址删掉,添加所述第一MAC地址、所述第一IP地址和所述租户标识,得到所述隧道数据包。

3.根据权利要求2所述的方法,其特征在于,所述原始数据包包括包头和包体,所述原始数据包的包头包括第二MAC地址字段和第二IP地址字段,所述第二MAC地址字段包括所述第二MAC地址,所述第二IP地址字段包括所述第二IP地址、显式拥塞通知ECN值和差分服务代码点DSCP值,所述原始数据包的包体包括传输数据;

所述隧道数据包包括包头和包体,所述隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,所述第一MAC地址字段包括所述第一MAC地址,所述第一IP地址字段包括所述第一IP地址,所述隧道协议字段包括所述租户标识,所述隧道数据包的包体包括所述第二IP地址字段和所述传输数据;所述根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包之后,所述方法还包括:将所述第二IP数据字段中的ECN值和所述第二IP数据字段中的DSCP值写入所述第一IP地址字段中。

4.根据权利要求1所述的方法,其特征在于,所述获取原始数据包、第一地址和租户标识,包括:

获取发送方服务器下发的发送方流表,所述发送方流表包括所述第一地址和所述租户标识;

所述发送方服务器用于接收到发送方虚拟机获取的原始数据包时,建立与所述接收方服务器之间的RDMA连接,在建立所述RDMA连接的过程中生成所述发送方流表,将所述发送方流表下发给所述发送方网卡,并将所述原始数据包下发给所述发送方网卡。

5.根据权利要求4所述的方法,其特征在于,所述根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包,包括:确定所述原始数据包与所述发送方流表匹配成功时,根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到所述隧道数据包。

6.根据权利要求5所述的方法,其特征在于,所述发送方流表还包括匹配项,所述匹配项包括第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号,所述第三IP地址为发送方虚拟机的IP地址,所述第二IP地址为接收方虚拟机的IP地址,所述确定所述原始数据包与所述发送方流表匹配成功时,根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到所述隧道数据包,包括:当所述原始数据包对应的第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号,与所述匹配项中的第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号相同时,确定所述原始数据包与所述发送方流表匹配成功。

7.一种数据传输方法,其特征在于,应用于支持远程直接内存访问协议RoCE的接收方网卡,所述方法包括:

接收发送方网卡发送的隧道数据包,所述隧道数据包由支持所述RoCE的发送方网卡根据第一地址和租户标识对原始数据包进行隧道封装后得到,所述第一地址包括所述接收方网卡的地址,所述租户标识用于指示接收方服务器上对应的租户;其中,发送方服务器与所述接收方服务器之间建立有远程直接内存访问RDMA连接,所述原始数据包为RDMA数据包;

对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识;

将所述原始数据包和所述租户标识传输至所述接收方服务器。

8.根据权利要求7所述的方法,其特征在于,所述隧道数据包包括所述第一地址和所述租户标识,所述接收方网卡的地址包括第一媒体访问控制MAC地址和第一网际协议IP地址,所述对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识,包括:获取所述隧道数据包中的租户标识;

将所述隧道数据包中的第一MAC地址和第一IP地址删掉,得到所述原始数据包。

9.根据权利要求8所述的方法,其特征在于,所述隧道数据包包括包头和包体,所述隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,所述第一MAC地址字段包括所述第一MAC地址,所述第一IP地址字段包括所述第一IP地址、显式拥塞通知ECN值和差分服务代码点DSCP值,所述隧道协议字段包括所述租户标识,所述隧道数据包的包体包括第二IP地址字段和传输数据,所述第二IP地址字段包括第二IP地址,所述第二IP地址为接收方虚拟机的IP地址;

所述原始数据包包括包头和包体,所述原始数据包的包头包括所述第二IP地址字段,所述原始数据包的包体包括所述传输数据;所述对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识之后,所述方法还包括:将所述第一IP地址字段中的ECN值和所述第一IP地址字段中的DSCP值写入所述第二IP地址字段中;

在所述原始数据包的包头中添加第二MAC地址字段,所述第二MAC地址字段包括第二MAC地址,所述第二MAC地址为所述接收方虚拟机的MAC地址。

10.根据权利要求7所述的方法,其特征在于,所述对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识,包括:获取所述接收方服务器下发的接收方流表,所述接收方服务器用于建立与发送方服务器之间的RDMA连接,在建立所述RDMA连接的过程中生成所述接收方流表,将所述接收方流表下发给所述接收方网卡;

确定所述隧道数据包与所述接收方流表匹配成功时,对所述原始数据包进行解封装,得到所述原始数据包和所述租户标识。

11.根据权利要求10所述的方法,其特征在于,所述接收方流表包括匹配项,所述匹配项包括第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号,所述第四IP地址为发送方网卡的IP地址,所述第一IP地址为接收方网卡的IP地址,所述隧道数据包中包括第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号,所述确定所述隧道数据包与所述接收方流表匹配成功时,对所述原始数据包进行解封装,得到所述原始数据包和所述租户标识,包括:

当所述隧道数据包中的第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号,与所述匹配项中的第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号相同时,确定所述隧道数据包与所述接收方流表匹配成功。

12.一种数据传输装置,其特征在于,应用于支持远程直接内存访问协议RoCE的发送方网卡,所述装置包括:

获取模块,用于获取原始数据包、第一地址和租户标识,其中所述第一地址包括接收所述原始数据包的接收方网卡的地址,所述租户标识用于指示所述接收方服务器上对应的租户;其中,发送方服务器与所述接收方服务器之间建立有远程直接内存访问RDMA连接,所述原始数据包为RDMA数据包;

封装模块,用于根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包;

发送模块,用于将所述隧道数据包发送给所述第一地址对应的接收方网卡,所述接收方网卡支持所述RoCE。

13.一种数据传输装置,其特征在于,应用于支持远程直接内存访问协议RoCE的接收方网卡,所述装置包括:

接收模块,用于接收发送方网卡发送的隧道数据包,所述隧道数据包由支持所述RoCE的发送方网卡根据第一地址和租户标识对原始数据包进行隧道封装后得到,所述第一地址包括接收所述原始数据包的接收方网卡的地址,所述租户标识用于指示所述接收方服务器上对应的租户;其中,发送方服务器与所述接收方服务器之间建立有远程直接内存访问RDMA连接,所述原始数据包为RDMA数据包;

解封装模块,用于对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识;

传输模块,用于将所述原始数据包和所述租户标识传输至所述接收方服务器。

14.一种网卡,其特征在于,所述网卡用于实现如权利要求1至6任一所述的数据传输方法,或者实现如权利要求7至11任一所述的数据传输方法。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1至6任一所述的数据传输方法,或者实现如权利要求7至11任一所述的数据传输方法。

说明书 :

数据传输方法、装置、设备及存储介质

技术领域

[0001] 本申请实施例涉及通信技术领域,特别涉及一种数据传输方法、装置、设备及存储介质。

背景技术

[0002] RDMA(Remote Direct Memory Access,远程直接内存访问)是一种直接进行远程内存存取的技术。任一配置有RDMA网卡的系统采用RDMA技术,即可将数据直接传入远程系
统的存储区,而不对远程系统的操作系统造成任何影响,无需远程系统的中央处理器参与
数据传输过程,减少了资源消耗,进而提升了操作系统的性能,具有高带宽、低时延及低处
理器占用率的特点。
[0003] 但是,在公有云的环境下,第三方服务商在公有网络中提供服务,多个租户即可访问该公有网络,享受第三方服务商提供的服务。但是由于公有网络是共享的,如果不能做到
租户隔离,则租户的数据就会被其他租户嗅探到,无法保证数据安全。因此,亟需提供一种
方法,能够在公有云中实现RDMA技术时,将公有云中每个租户的数据隔离出来,以保证数据
安全。

发明内容

[0004] 本申请实施例提供了一种数据传输方法、装置、设备及存储介质,可以解决相关技术在公有云中实现RDMA技术时多个租户无法隔离的问题。所述技术方案如下:
[0005] 一方面,提供了一种数据传输方法,应用于发送方网卡,所述方法包括:
[0006] 获取原始数据包、第一地址和租户标识,其中所述第一地址包括接收所述原始数据包的接收方网卡的地址,所述租户标识用于指示接收方服务器上对应的租户;
[0007] 根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包;
[0008] 将所述隧道数据包发送给所述第一地址对应的接收方网卡。
[0009] 另一方面,提供了另一种数据传输方法,应用于发送方服务器,所述发送方服务器配置有如上述方法中的发送方网卡,所述方法包括:
[0010] 通过发送方虚拟机获取原始数据包时,建立与接收方服务器之间的远程直接内存访问RDMA连接,所述发送方虚拟机运行在所述发送方服务器中;
[0011] 在建立所述RDMA连接的过程中生成发送方流表,将所述发送方流表下发给所述发送方网卡,并将所述原始数据包下发给所述发送方网卡。
[0012] 可选地,所述原始数据包包括第一差分服务代码点DSCP值或者第二DSCP值,所述第一DSCP值用于表示所述原始数据包为RDMA数据包,所述第二DSCP值用于表示所述原始数
据包为传输控制协议/互联网协议TCP/IP数据包;
[0013] 所述通过发送方虚拟机获取原始数据包时,建立与接收方服务器之间的远程直接内存访问RDMA连接,包括:
[0014] 通过所述发送方虚拟机获取原始数据包,且所述原始数据包包括所述第一DSCP值时,建立与所述接收方服务器之间的RDMA连接。
[0015] 另一方面,提供了另一种数据传输方法,应用于接收方网卡,所述方法包括:
[0016] 接收发送方网卡发送的隧道数据包,所述隧道数据包由发送方网卡根据第一地址和租户标识对原始数据包进行隧道封装后得到,所述第一地址包括所述接收方网卡的地
址,所述租户标识用于指示接收方服务器上对应的租户;
[0017] 对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识;
[0018] 将所述原始数据包和所述租户标识传输至所述接收方服务器。
[0019] 另一方面,提供了另一种数据传输方法,应用于接收方服务器,所述接收方服务器配置有如上述方法中的接收方网卡,所述方法包括:
[0020] 通过接收方虚拟机建立与发送方服务器的远程直接内存访问RDMA连接,所述接收方虚拟机运行在所述接收方服务器中;
[0021] 在建立所述RDMA的过程中生成接收方流表,将所述接收方流表下发给所述接收方网卡。
[0022] 可选地,所述方法还包括:
[0023] 当获取到所述接收方网卡传输的原始数据包和租户标识时,将所述原始数据包分发给所述租户标识对应的租户。
[0024] 另一方面,提供了一种数据传输装置,应用于发送方网卡,所述装置包括:
[0025] 获取模块,用于获取原始数据包、第一地址和租户标识,其中所述第一地址包括接收所述原始数据包的接收方网卡的地址,所述租户标识用于指示所述接收方服务器上对应
的租户;
[0026] 封装模块,用于根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到隧道数据包;
[0027] 发送模块,用于将所述隧道数据包发送给所述第一地址对应的接收方网卡。
[0028] 可选地,所述原始数据包携带第二地址,所述第二地址包括所述接收方虚拟机的地址,所述接收方虚拟机的地址包括第二媒体访问控制MAC地址和第二网际协议IP地址,所
述第一地址包括所述接收方网卡的第一MAC地址和第一IP地址,所述封装模块,包括:
[0029] 删除单元,用于将所述原始数据包中的所述第二MAC地址删掉;
[0030] 添加单元,用于添加所述第一MAC地址、所述第一IP地址和所述租户标识,得到所述隧道数据包。
[0031] 可选地,所述原始数据包包括包头和包体,所述原始数据包的包头包括第二MAC地址字段和第二IP地址字段,所述第二MAC地址字段包括所述第二MAC地址,所述第二IP地址
字段包括所述第二IP地址、显式拥塞通知ECN值和差分服务代码点DSCP值,所述原始数据包
的包体包括传输数据;
[0032] 所述隧道数据包包括包头和包体,所述隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,所述第一MAC地址字段包括所述第一MAC地址,所述第一
IP地址字段包括所述第一IP地址,所述隧道协议字段包括所述租户标识,所述隧道数据包
的包体包括所述第二IP地址字段和所述传输数据;所述装置还包括:
[0033] 写入模块,用于将所述第二IP数据字段中的ECN值和所述第二IP数据字段中的DSCP值写入所述第一IP地址字段中。
[0034] 可选地,所述发送方网卡为支持远程直接内存访问协议RoCE的网卡,所述获取模块,包括:
[0035] 流表获取单元,用于获取发送方服务器下发的发送方流表,所述发送方流表包括所述第一地址和所述租户标识;
[0036] 所述发送方服务器用于接收到发送方虚拟机获取的原始数据包时,建立与所述接收方服务器之间的远程直接内存访问RDMA连接,在建立所述RDMA连接的过程中生成所述发
送方流表,将所述发送方流表下发给所述发送方网卡,并将所述原始数据包下发给所述发
送方网卡。
[0037] 可选地,所述封装模块,包括:
[0038] 封装单元,用于确定所述原始数据包与所述发送方流表匹配成功时,根据所述第一地址和所述租户标识,对所述原始数据包进行隧道封装,得到所述隧道数据包。
[0039] 可选地,所述发送方流表还包括匹配项,所述匹配项包括第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号,所述第三IP地址为发送方虚拟机的IP地
址,所述第二IP地址为接收方虚拟机的IP地址,所述封装单元,还用于当所述原始数据包对
应的第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号,与所述匹配
项中的第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号相同时,确
定所述原始数据包与所述发送方流表匹配成功。
[0040] 另一方面,提供了另一种数据传输装置,应用于发送方服务器,所述发送方服务器配置有如上述方法中的发送方网卡,所述装置包括:
[0041] 连接建立模块,用于通过发送方虚拟机获取原始数据包时,建立与接收方服务器之间的远程直接内存访问RDMA连接,所述发送方虚拟机运行在所述发送方服务器中;
[0042] 流表下发模块,用于在建立所述RDMA连接的过程中生成发送方流表,将所述发送方流表下发给所述发送方网卡,并将所述原始数据包下发给所述发送方网卡。
[0043] 可选地,所述原始数据包包括第一差分服务代码点DSCP值或者第二DSCP值,所述第一DSCP值用于表示所述原始数据包为RDMA数据包,所述第二DSCP值用于表示所述原始数
据包为传输控制协议/互联网协议TCP/IP数据包;
[0044] 所述连接建立模块,包括:
[0045] 连接建立单元,用于通过所述发送方虚拟机获取原始数据包,且所述原始数据包包括所述第一DSCP值时,建立与所述接收方服务器之间的RDMA连接。
[0046] 另一方面,提供了另一种数据传输装置,应用于接收方网卡,所述装置包括:
[0047] 接收模块,用于接收发送方网卡发送的隧道数据包,所述隧道数据包由发送方网卡根据第一地址和租户标识对原始数据包进行隧道封装后得到,所述第一地址包括接收所
述原始数据包的接收方网卡的地址,所述租户标识用于指示所述接收方服务器上对应的租
户;
[0048] 解封装模块,用于对所述隧道数据包进行解封装,得到所述原始数据包和所述租户标识;
[0049] 传输模块,用于将所述原始数据包和所述租户标识传输至所述接收方服务器。
[0050] 可选地,所述隧道数据包包括所述第一地址和所述租户标识,所述接收方网卡的地址包括第一媒体访问控制MAC地址和第一网际协议IP地址,所述解封装模块,包括:
[0051] 标识获取单元,用于获取所述隧道数据包中的租户标识;
[0052] 删除单元,用于将所述隧道数据包中的第一MAC地址和第一IP地址删掉,得到所述原始数据包。
[0053] 可选地,所述隧道数据包包括包头和包体,所述隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,所述第一MAC地址字段包括所述第一MAC地址,所
述第一IP地址字段包括所述第一IP地址、显式拥塞通知ECN值和差分服务代码点DSCP值,所
述隧道协议字段包括所述租户标识,所述隧道数据包的包体包括第二IP地址字段和传输数
据,所述第二IP地址字段包括第二IP地址,所述第二IP地址为接收方虚拟机的IP地址;
[0054] 所述原始数据包包括包头和包体,所述原始数据包的包头包括所述第二IP地址字段,所述原始数据包的包体包括所述传输数据;所述装置还包括:
[0055] 写入模块,用于将所述第一IP地址字段中的ECN值和所述第一IP地址字段中的DSCP值写入所述第二IP地址字段中;
[0056] 添加模块,用于在所述原始数据包的包头中添加第二MAC地址字段,所述第二MAC地址字段包括第二MAC地址,所述第二MAC地址为所述接收方虚拟机的MAC地址。
[0057] 可选地,所述接收方网卡为支持远程直接内存访问协议RoCE的网卡,所述解封装模块,包括:
[0058] 流表获取单元,用于获取所述接收方服务器下发的接收方流表,所述接收方服务器用于建立与发送方服务器之间的远程直接内存访问RDMA连接,在建立所述RDMA连接的过
程中生成所述接收方流表,将所述接收方流表下发给所述接收方网卡;
[0059] 解封装单元,用于确定所述隧道数据包与所述接收方流表匹配成功时,对所述原始数据包进行解封装,得到所述原始数据包和所述租户标识。
[0060] 可选地,所述接收方流表包括匹配项,所述匹配项包括第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号,所述第四IP地址为发送方网卡的IP地址,所述第一
IP地址为接收方网卡的IP地址,所述隧道数据包中包括第四IP地址、第一IP地址、租户标
识、三层协议号和应用层端口号,所述解封装单元,还用于当所述隧道数据包中的第四IP地
址、第一IP地址、租户标识、三层协议号和应用层端口号,与所述匹配项中的第四IP地址、第
一IP地址、租户标识、三层协议号和应用层端口号相同时,确定所述隧道数据包与所述接收
方流表匹配成功。
[0061] 另一方面,提供了另一种数据传输装置,应用于接收方服务器,所述接收方服务器配置有如上述方法中的接收方网卡,所述装置包括:
[0062] 连接建立模块,用于通过接收方虚拟机建立与发送方服务器的远程直接内存访问RDMA连接,所述接收方虚拟机运行在所述接收方服务器中;
[0063] 流表下发模块,用于在建立所述RDMA的过程中生成接收方流表,将所述接收方流表下发给所述接收方网卡。
[0064] 可选地,所述装置还包括:
[0065] 数据包分发模块,用于当获取到所述接收方网卡传输的原始数据包和租户标识时,将所述原始数据包分发给所述租户标识对应的租户。
[0066] 另一方面,提供了一种网卡,所述网卡用于实现如所述数据传输方法中所执行的操作。
[0067] 另一方面,提供了一种服务器,所述服务器包括处理器、存储器和网卡,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现
如所述数据传输方法中所执行的操作。
[0068] 再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如所述数据传输
方法中所执行的操作。
[0069] 本申请实施例提供的方法、装置、设备及存储介质,获取原始数据包、第一地址和租户标识,根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包,将隧
道数据包发送给第一地址对应的接收方网卡;接收方网卡接收到隧道数据包时,对隧道数
据包进行解封装,得到原始数据包和租户标识;将原始数据包和租户标识传输至接收方服
务器;接收方服务器用于将原始数据包分发给租户标识对应的租户。因此,通过进行隧道封
装,根据租户标识对租户进行区分,可以将公有云中每个租户的数据隔离出来,保证了数据
的安全。

附图说明

[0070] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获
得其他的附图。
[0071] 图1是本申请实施例提供的一种实施环境的示意图。
[0072] 图2是本申请实施例提供的一种数据传输方法的流程图。
[0073] 图3是本申请实施例提供的一种流表的结构示意图。
[0074] 图4是本申请实施例提供的一种数据包的结构示意图。
[0075] 图5是本申请实施例提供的一种流表匹配的示意图。
[0076] 图6是本申请实施例提供的一种数据传输方法的系统结构图。
[0077] 图7是本申请实施例提供的一种流表查询的示意图。
[0078] 图8是本申请实施例提供的另一种数据包的结构示意图。
[0079] 图9是本申请实施例提供的另一种数据包的结构示意图。
[0080] 图10是相关技术提供的一种配置双网卡的结构示意图。
[0081] 图11是本申请实施例提供的一种数据传输装置的结构示意图。
[0082] 图12是本申请实施例提供的另一种数据传输装置的结构示意图。
[0083] 图13是本申请实施例提供的另一种数据传输装置的结构示意图。
[0084] 图14是本申请实施例提供的另一种数据传输装置的结构示意图。
[0085] 图15是本申请实施例提供的另一种数据传输装置的结构示意图。
[0086] 图16是本申请实施例提供的另一种数据传输装置的结构示意图。
[0087] 图17是本申请实施例提供的另一种数据传输装置的结构示意图。
[0088] 图18是本申请实施例提供的另一种数据传输装置的结构示意图。
[0089] 图19是本申请实施例提供的一种服务器的结构示意图。

具体实施方式

[0090] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0091] 为了便于理解本申请实施例的技术过程,下面对本申请实施例所涉及的一些名词进行解释:
[0092] VPC(Virtual Private Cloud,虚拟私有云)是公有云上的私有网络,是一个公共云计算资源的动态配置池,基于隧道协议来实现,如GRE(Generic  Routing 
Encapsulation,通用路由封装协议)或者VxLAN(Virtual Extensible Local Area 
Network,虚拟扩展局域网)等实现多租户隔离的云网络,可以为云服务器构建隔离的、用户
自主配置和管理的虚拟网络环境,提升用户云中资源的安全性,简化用户的网络部署。
[0093] RDMA(Remote Direct Memory Access,远程直接内存访问)是一种直接进行远程内存存取的技术。任一系统采用RDMA技术,即可将数据直接传入远程系统的存储区,而不对
远程系统的操作系统造成任何影响,无需远程系统的中央处理器参与数据传输过程,减少
了资源消耗,进而提升了操作系统的性能,具有高带宽、低时延及低处理器占用率的特点。
[0094] 隧道协议:用于实现隧道技术,隧道技术的实质是利用一种网络层的协议来传输另一种网络层的协议,其基本功能是数据包封装与解封装。封装是构建隧道的基本手段,从
隧道的两端来看,封装就是用来创建、维持和撤销一个隧道,来实现信息的隐蔽和抽象。
[0095] Overlay网络(覆盖网络)建立在Underlay网络(单层网络)之上,与Underlay网络是一对相对概念。比如二层网络是三层网络的Underlay网络,三层网络是二层网络的
Overlay网络。在公有云网络中,Underlay网络主要是指GRE、VxLAN等隧道协议的外层网络,
Overlay网络是指GRE、Vxlan等隧道协议的内层网络。
[0096] 可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念
区分。举例来说,在不脱离本申请的范围的情况下,可以将第一地址称为第二地址,且类似
地,可将第二地址称为第一地址。
[0097] 图1是本申请实施例提供的一种实施环境的示意图,参见图1,该实施环境包括:发送方服务器101和接收方服务器102,发送方服务器101配置有发送方网卡103,接收方服务
器102配置有接收方网卡104。发送方服务器101与接收方服务器102建立RDMA连接,并通过
发送方网卡103和接收方网卡104进行数据传输。
[0098] 发送方服务器101和接收方服务器102均接入公有云网络中,运行有与公有云网络连接的虚拟机。发送方设备通过发送方虚拟机获取原始数据包,将原始数据包下发给发送
方网卡103,由发送方网卡103进行隧道封装。其中,封装所需的租户标识、IP地址等信息由
网管系统下发到发送方网卡103。发送方网卡103通过RDMA连接,将该封装后的数据包发送
给接收方网卡104,由接收方网卡104对该数据包进行解封装得到原始数据包和租户标识。
接收方服务器102通过接收方网卡104获取到原始数据包和租户标识时,将原始数据包分发
给该租户标识对应的租户。因此基于隧道协议实现了公有云上的多租户隔离,保证了数据
包的安全性。
[0099] 图2是本申请实施例提供的一种数据传输方法的流程图。本申请实施例的交互主体为发送方服务器、发送方网卡、接收方服务器和接收方网卡,参见图2,该方法包括:
[0100] 201、发送方服务器通过发送方虚拟机获取原始数据包时,建立与接收方服务器之间的RDMA连接,在建立RDMA连接过程中生成发送方流表,将发送方流表下发给发送方网卡,
并将该原始数据包下发给发送方网卡。
[0101] 本申请实施例中,一种应用场景是,发送方服务器中运行一个或多个虚拟机,每个租户拥有至少一个虚拟机,接收方服务器中也运行多个虚拟机,每个租户拥有至少一个虚
拟机,当租户拥有多个虚拟机时,该多个虚拟机之间需要构成一个虚拟网络。
[0102] 其中,虚拟机中运行有RDMA应用,如社交应用、邮箱应用等。不同服务器的虚拟机上的RDMA应用之间需要进行数据交互,当发送方服务器的虚拟机上的RDMA应用,在运行过
程中产生数据时,调用RDMA库,根据该数据生成原始数据包,该原始数据包为RDMA数据包,
并由发送方服务器通过发送方网卡将该原始数据包发送给接收方服务器的虚拟机中的
RDMA应用。
[0103] 因此,当发送方服务器通过发送方虚拟机接收到RDMA应用的原始数据包后,确定要与接收方服务器进行数据传输。则发送方服务器与接收方服务器建立RDMA连接,在建立
RDMA连接的过程中,获取源IP地址、目的IP地址、网卡物理端口号等交互参数,根据交互参
数生成发送方流表,下发给发送方服务器的发送方网卡。
[0104] 其中,流表是对数据包进行处理的一种规则,也称为转发规则,该规则可以为预先设定的规则。流表中包括至少一个流表项(Flow Entry),是流表的最小单位,每条流表项确
定网络传输中的一条数据流。该流表项中至少包括:匹配项、优先级、计数器、操作项和超时
时间。匹配项可用于与数据包进行匹配,可以包括源MAC地址、目的MAC地址、源IP地址、目的
IP地址等;优先级可用于表示流表之间的优先级关系,按照优先级高低的顺序依次对流表
进行匹配;计数器可用于统计数据包的个数;指令可用于按照匹配项与数据包的匹配的结
果,对数据包进行转发或丢弃,超时时间可用于表示该流表的最长有效时间或最大空闲时
间,根据超时时间对流表进行删除。
[0105] 本申请实施例中,发送方流表用于指示发送方网卡对原始数据包进行处理。该发送方流表包括匹配项和操作项,匹配项用于确定数据包的类型,操作项用于确定对数据包
所执行的操作。如图3所示,发送方流表31中可以包括匹配项311、优先级312、计数器313、操
作项314和超时时间315等,该发送方流表的匹配项中可以包括第三IP地址、第二IP地址、网
卡物理端口号、三层协议号和应用层端口号,其中第三IP地址为发送方虚拟机的IP地址,第
二IP地址为接收方虚拟机的IP地址。该发送方流表的操作项中可以包括第一地址和租户标
识,其中第一地址包括接收原始数据包的接收方网卡的地址,租户标识用于指示接收方服
务器上对应的租户,其中,该租户标识为32位的数字。
[0106] 其中,发送方服务器的发送方网卡与传统网卡不同,该发送方网卡为支持RoCE(RDMA over Converged Ethernet,远程直接内存访问协议)的网卡,可提供数据封装等功
能。RoCE协议是一种允许通过以太网使用远程直接内存访问技术的网络协议,例如,该RoCE
协议可以为RoCE v1协议或者RoCE v2协议等。
[0107] 当发送方服务器通过发送方虚拟机获取原始数据包,且原始数据包中包括第一DSCP(Differentiated Services Code Point,差分服务代码点)值时,确定该原始数据包
为RDMA数据包,因此建立RDMA连接来进行数据传输。其中,发送方服务器和接收方服务器建
立RDMA连接,需要通过建立TCP/IP(Transmission Control Protocol/Internet 
Protocol,传输控制协议/互联网协议)连接,来获得交互信息。发送方服务器和接收方服务
器获取建立TCP/IP连接过程中产生的TCP/IP数据包,根据TCP/IP数据包携带的交互信息,
生成发送方流表和接收方流表。
[0108] 其中,原始数据包包括第一DSCP(Differentiated Services Code Point,差分服务代码点)值或者第二DSCP值,第一DSCP值用于表示该原始数据包为RDMA数据包,第二DSCP
值用于表示该原始数据包为TCP/IP数据包。因此,通过给原始数据包分配不同的DSCP值,可
以区分该原始数据包是通过RDMA连接传输的RDMA数据包,还是传统的TCP/IP数据包,传输
网络可以根据第一DSCP值和第二DSCP值区分不同的数据包,实现隔离与流控,解决了RDMA
网络和传统TCP/IP网络的隔离问题。
[0109] 202、接收方服务器建立与发送方服务器之间的RDMA连接,在建立RDMA连接过程中生成接收方流表,将接收方流表下发给接收方网卡。
[0110] 其中,接收方流表用于指示接收方网卡对隧道数据包进行处理。该接收方流表与上述步骤201中的发送方流表类似,在此不再赘述。
[0111] 需要说明的是,本申请实施例中仅以发送方设备向接收方设备主动发起RDMA连接请求为例进行说明,而在另一实施例中,还可以是接收方设备向发送方设备主动发起RDMA
连接请求,由发送方设备接收接收方设备的RDMA连接请求。
[0112] 并且,步骤201中的发送方服务器建立与接收方服务器之间的RDMA连接,步骤202中的接收方服务器建立与发送方服务器之间的RDMA连接,为同一过程。因此,在建立RDMA连
接的过程中,可同时下发发送方流表和接收方流表。
[0113] 203、发送方网卡接收发送方服务器下发的原始数据包和发送方流表,确定原始数据包与发送方流表匹配成功时,将原始数据包中的第二MAC地址删掉,添加第一MAC地址、第
一IP地址和租户标识,得到隧道数据包。
[0114] 原始数据包携带第二地址,第二地址包括接收方虚拟机的地址,可用于表示租户的虚拟机。接收方虚拟机的地址包括第二MAC(Media Access Control,媒体访问控制)地址
和第二IP(Internet Protocol,网际协议)地址,第二MAC地址为接收方虚拟机的MAC地址,
第二IP地址为包括接收方虚拟机的IP地址。虚拟机网络可以根据该第二地址将原始数据包
发送给该第二地址对应的虚拟机。
[0115] 发送方流表中包括第一地址和租户标识。第一地址包括接收方网卡的地址,第一地址包括第一MAC地址和第一IP地址,第一MAC地址可以包括接收方网卡的MAC地址和发送
方网卡的MAC地址,第一IP地址可以包括接收方网卡的IP地址和发送方网卡的IP地址。当发
送方服务器将原始数据包下发给发送方网卡,发送方网卡接收到该原始数据包时,进行流
表查询,当确定该原始数据包与发送方流表匹配成功时,从发送方流表中获取第一MAC地址
和第一IP地址,以及租户标识。
[0116] 则发送方网卡将原始数据包进行隧道封装,得到隧道数据包,包括:发送方网卡将原始数据包中的第二MAC地址删掉,添加第一MAC地址、第一IP地址和租户标识,得到隧道数
据包。
[0117] 相关技术中,根据Per Flow(一对IP地址和一对端口号)来对流表进行分类,其中流表中的字段包括源IP地址、目的IP地址、目的端口号和源端口号。服务器按照Per Flow的
方式生成流表,将流表下发到网卡,网卡根据Per Flow的方式,按照源IP地址和目的IP地址
查询目的端口号和源端口号对应的流表。而本申请实施例中,根据Per Destination(一对
IP地址和目的端口号)对流表进行分类,其中流表中的字段包括源IP地址、目的IP地址和目
的端口号。服务器按照Per Destination的方式生成流表,将流表下发到网卡,网卡根据Per 
Destination的方式,按照源IP地址和目的IP地址查询目的端口号对应的流表。因此,通过
本申请实施例提供的方法,仅根据目的端口号进行分类,不考虑源端口号,减少了分类的类
别,对流表的查询速度更快,时延更低,节省发送方网卡和接收方网卡的资源。
[0118] 原始数据包中还可以包括第三IP地址、第二IP地址、三层协议号和应用层端口号,其中第三IP地址为发送方虚拟机的IP地址,第二IP地址为接收方虚拟机的IP地址,发送方
网卡接收到原始数据包时可获取该原始数据包对应的网卡物理端口号,则通过原始数据包
对应的第三IP地址、第二IP地址、三层协议号、应用层端口号和网卡物理端口号即可确定该
原始数据包的传输流向。发送方流表包括匹配项,匹配项中包括第三IP地址、第二IP地址、
三层协议号、应用层端口号和网卡物理端口号,则通过发送方流表中的第三IP地址、第二IP
地址、三层协议号、应用层端口号和网卡物理端口号即可确定该发送方流表对应的数据包
的传输流向。因此,当原始数据包对应的参数与发送方流表中的参数相同时,确定原始数据
包与发送方流表匹配成功。
[0119] 发送方虚拟机的原始数据包通过发送方服务器到达发送方网卡,发送方网卡根据发送方流表进行隧道数据包的封装,包括:将原始数据包中的第二MAC地址,添加第一MAC地
址、第一IP地址和租户标识,得到隧道数据包。
[0120] 原始数据包包括包头和包体,原始数据包的包头包括第二MAC地址字段和第二IP地址字段,其中第二MAC地址字段包括第二MAC地址,第二IP地址字段包括第二IP地址、ECN
(Explicit Congestion Notification,显式拥塞通知)值和DSCP值,原始数据包的包体包
括传输数据。
[0121] 隧道数据包包括包头和包体,隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,第一MAC地址字段包括第一MAC地址,第一IP地址字段包括第一IP
地址,隧道协议字段包括租户标识,隧道数据包的包体包括第二IP地址字段和传输数据。
[0122] 该方法还包括:将原始数据包的第二IP数据字段中的ECN值和DSCP值,写入隧道数据包的第一IP地址字段中。
[0123] 其中ECN值用于进行拥塞控制,也即是当网络中的设备检测到潜在拥塞时,将每个数据包写入带有拥塞标识的ECN值,或者随机选择的多个数据包写入带有拥塞标识的ECN
值。因此,该原始数据包中可能包括带有拥塞标识的ECN值。其中DSCP值用于区分该原始数
据包为RDMA数据包,还是传统的TCP/IP数据包。
[0124] 如图4所示,原始数据包中包括包头的第二MAC地址字段411、第二IP地址字段412、TCP/UDP协议字段413,以及包体的传输数据字段414。其中,第二MAC地址字段411中包括第
二MAC地址,第二IP地址字段412中包括第二IP地址、DSCP值、ECN值,TCP/UDP协议字段413中
包括TCP/UDP协议,传输数据字段414中包括待传输的传输数据。将原始数据包的第二MAC地
址字段411删掉,添加第一MAC地址字段、第一IP地址字段和GRE协议字段,并将第二IP地址
字段412中的DSCP值、ECN值拷贝到第一IP地址字段,得到隧道数据包。如图4所示,隧道数据
包中包括包头的第一MAC地址字段421、第一IP地址字段422、GRE协议字段423,以及包体的
第二IP地址字段424、TCP/UDP协议字段425和传输数据字段426。其中,第一MAC地址字段421
中包括第一MAC地址,第一IP地址字段422中包括第一IP地址、DSCP值、ECN值,GRE协议字段
423中包括GRE协议,且GRE协议中携带租户标识。
[0125] 通过执行步骤203,即可实现根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包。其中,可以基于GRE、VxLAN等隧道协议进行隧道封装,还可以为其他隧
道协议,仅需保证得到的隧道数据包可以携带租户标识即可。
[0126] 图5为本申请实施例示出的一种流表匹配的示意图,参见图5,在RDMA数据的发送过程和接收过程均需与流表501进行匹配,流表501为发送方流表或者接收方流表。其中,在
发送方向上命中流表501时,将该原始数据包的第二MAC地址删掉,添加第一MAC地址、第一
IP地址和租户标识,得到隧道数据包;在接收方向上命中流表501时,将隧道数据包的第一
MAC地址和第一IP地址删掉,添加第二MAC地址,得到原始数据包。
[0127] 图6为本申请实施例示出的一种整体的系统结构图,参见图6,发送方虚拟机中运行的RDMA应用601通过RDMA分发流工具和库以及网卡驱动,为待传输的数据配置网络传输
信息,如IP地址、MAC地址、网卡端口号、应用层端口号等,将待传输的数据映射到RoCE协议
的净荷中,将网络传输信息填充到RoCE协议对应的包头中,形成封装RoCE协议的原始数据
包。该原始数据包通过发送方服务器发送到发送方网卡,当与流表匹配成功时根据流表对
原始数据包进行隧道封装,得到隧道数据包。由网卡与交换机保证数据在网络中的可靠传
输。
[0128] 相关技术中,发送方服务器通过学习将发送方流表下发到发送方网卡,学习是指发送方服务器对原始数据包进行解析,得到原始数据包中的IP地址、三层协议号和应用层
端口号等传输信息,根据传输信息生成发送方流表。具体过程为:发送方服务器将原始数据
包发往发送方网卡,发送方网卡先进行流表匹配。如果匹配成功,则将原始数据包进行隧道
封装,将封装后的数据包发往网络;如果匹配失败,则发送方网卡将该原始数据包返回到发
送方服务器进行处理。由发送方服务器对原始数据包进行解析,得到原始数据包的IP地址、
三层协议号和应用层端口号等传输信息,根据传输信息生成发送方流表,将发送方流表下
发到发送方网卡,后续发送方网卡接收到该原始数据包时即可匹配该发送方流表,根据发
送方流表进行数据包转发。
[0129] 而本申请实施例提供的方法,当接收到包括原始数据包的数据传输请求时,发送方服务器和接收方服务器建立RDMA连接,在RDMA连接的建立过程中生成发送方流表,将发
送方流表下发给发送方网卡,因此将该原始数据包发送给发送方网卡,发送方网卡在首次
接收到该数据包时即可与发送方流表匹配成功。
[0130] 如图7所示,虚拟私有云上的快速通道通过流表接口为发送方网卡下发嵌入式流表701,后续将RDMA数据包进行流表查询。当查询结果为命中时,则发送方网卡即可根据流
表执行操作;当查询结果为未命中时,则需要转发至慢速通道,通过流表接口为发送方网卡
安装流表。
[0131] 需要说明的是,原始数据包中的第二地址,是租户为虚拟机配置的地址,用于在虚拟网络中进行数据传输,其中该虚拟机中的虚拟网络,称为Overlay网络,是隧道协议的内
层网络。隧道数据包中的第一地址,是物理主机上网卡的地址,用于在真实的物理网络中进
行数据传输,称为Underlay网络,是隧道协议的外层网络。Overlay网络建立在Underlay网
络之上,与Underlay网络是一对相对的概念。因此通过隧道协议,可以实现内层网络与外层
网络的隔离。
[0132] 204、发送方网卡将隧道数据包发送给第一地址对应的接收方网卡。
[0133] 发送方网卡将原始数据包进行封装得到隧道数据包,该隧道数据包携带第一地址和租户标识,第一地址包括接收原始数据包的接收方网卡的地址,因此可以通过第一地址
确定一个接收方网卡,租户标识用于指示接收方网卡对应的接收方服务器上的租户。
[0134] 发送方网卡与接收方网卡建立通信网络连接,发送方网卡将该隧道数据包发送到通信网络中,通信网络根据第一地址,将该隧道数据包传输到接收方网卡中。后续接收方网
卡接收到隧道数据包时,对隧道数据包进行解封装,得到原始数据包和租户标识,具体可参
见下述步骤205。
[0135] 205、接收方网卡接收发送方网卡发送的隧道数据包,确定该隧道数据包与接收方流表匹配成功时,接收方网卡对隧道数据包进行解封装,得到原始数据包和租户标识,将原
始数据包和租户标识传输至接收方服务器。
[0136] 当接收方网卡接收到隧道数据包时,进行流表查询,当确定该隧道数据包与接收方流表匹配成功时,根据该接收方流表,对该隧道数据包进行解封装。其中隧道数据包携带
第一地址,第一地址包括接收方网卡的第一MAC地址和第一IP地址,对隧道数据包进行解封
装,包括:获取隧道数据包中的租户标识,将隧道数据包中的第一MAC地址和第一IP地址删
掉,得到原始数据包。接收方网卡得到原始数据包和租户标识,将原始数据包和租户标识传
输至该接收方网卡对应的接收方服务器中。
[0137] 隧道数据包包括包头和包体,包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,第一IP地址字段包括ECN值和DSCP值,隧道协议字段包括租户标识,包体包括第
二IP地址字段和传输数据,第二IP地址字段包括第二IP地址。
[0138] 则上述解封装过程包括:获取隧道协议字段中的租户标识,将隧道数据包的第一MAC地址字段、第一IP地址字段和隧道协议字段删掉,得到原始数据包,其中原始数据包包
括包头和包体,原始数据包的包头包括第二IP地址字段,原始数据包的包体包括传输数据。
在原始数据包的包头中添加第二MAC地址字段,第二MAC地址字段包括第二MAC地址,将ECN
值和DSCP值写入第二IP地址字段。
[0139] 其中,第二MAC地址由接收方网卡通过接收端服务系统软件进行查表得到。
[0140] 其中,该隧道数据包中的ECN值和DSCP值与上述步骤203中的ECN值和DSCP值类似,在此不再赘述。
[0141] 因此,步骤203中将原始数据包的包头中的ECN值和DSCP值,拷贝到隧道数据包的第一IP地址字段中,步骤206中将隧道数据包的包头中的ECN值和DSCP值拷贝回原始数据包
的第二IP地址字段中,实现了RDMA网络的流控问题,解决了RDMA网络和传统TCP/IP网络的
隔离问题。
[0142] 该隧道数据包可以包括第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号,其中第四IP地址为发送方网卡的IP地址,第一IP地址为接收方网卡的IP地址,隧道
数据包中的第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号可确定该隧道
数据包的传输流向。接收方流表包括匹配项,匹配项中可以包括第四IP地址、第一IP地址、
租户标识、三层协议号和应用层端口号,接收方流表中的第四IP地址、第一IP地址、租户标
识、三层协议号和应用层端口号可确定该接收方流表对应的数据包的传输流向。因此,当隧
道数据包的参数与接收方流表的参数相同时,确定隧道数据包与接收方流表匹配成功。
[0143] 如图8所示,隧道数据包中包括包头的第一MAC地址字段811、第一IP地址字段812、GRE协议字段813,以及包体的第二IP地址字段814、TCP/UDP协议字段815和传输数据字段
816。其中,第一MAC地址字段811中包括第一MAC地址,第一IP地址字段812中包括第一IP地
址、DSCP值、ECN值,GRE协议字段813中包括GRE协议,且GRE协议中携带租户标识,第二IP地
址字段814中包括第二IP地址,TCP/UDP协议字段815中包括TCP/UDP协议,传输数据字段816
中包括待传输的传输数据。将隧道数据包的第一MAC地址字段811、第一IP地址字段812、GRE
协议字段813删掉,添加第二MAC地址字段,并将第一MAC地址字段811中的DSCP值、ECN值拷
贝到第二IP地址字段,得到原始数据包。如图8所示,原始数据包中包括包头的第二MAC地址
字段821、第二IP地址字段822、TCP/UDP协议字段823,以及包体的传输数据字段824。其中,
第二MAC地址字段821中包括第二MAC地址,第二IP地址字段822中包括第二IP地址、DSCP值、
ECN值。
[0144] 图9所示的为网络中的四种数据包的类型,参见图9,数据包901为RoCE流控数据包,数据包902为RoCE数据包,数据包903为带随道协议的TCP/IP包(非RoCE数据包),数据包
904为不带随道协议的TCP/IP包(非RoCE数据包)。发送方服务器对不同类型的数据包打上
不同的DSCP值,以标识不同类型的数据包,网络上的交换机通过DSCP值来区分数据包,实现
流控。
[0145] 206、接收方服务器获取到原始数据包和租户标识时,将该原始数据包分发给租户标识对应的租户。
[0146] 接收方服务器中存在多个租户,当接收方服务器获取到原始数据包和租户标识时,将该原始数据包分发给该租户标识对应的租户。
[0147] 该原始数据包中携带有第二地址,第二地址包括接收方虚拟机的第二MAC地址和第二IP地址。接收方服务器为该租户配置有一个或多个虚拟机,该多个虚拟机之间构成虚
拟机网络,该第二地址用于指示多个虚拟机中的任一发送方虚拟机。当接收方服务器获取
到原始数据包和租户标识时,确定该租户标识对应的租户,将该原始数据包发送至该租户
的虚拟机网络中,由虚拟机网络将原始数据包方发送给第二地址对应的任一接收方虚拟机
中,租户可基于该任一接收方虚拟机,接收该原始数据包。
[0148] 如图10所示,相关技术中,为了同时实现RDMA技术和VPC技术,在一台主机1001上配置两个网卡,其中网卡1002用于实现RDMA网络,网卡1003用于实现VPC网络,双网卡服务
器可以管理RDMA网络和VPC网络的数据,虽然可以从物理上隔离RDMA数据包与TCP/IP数据
包,但是RDMA网络的多租户仍然未能隔离。而且,采用双网卡的方式,除网卡外,线材、交换
机等都要双份,布线复杂,配置成本和运营成本高。
[0149] 本申请实施例提供的方法,发送方网卡获取原始数据包、第一地址和租户标识,根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包,将隧道数据包发送
给第一地址对应的接收方网卡;接收方网卡接收到隧道数据包时,对隧道数据包进行解封
装,得到原始数据包和租户标识,传输至接收方服务器;接收方服务器将原始数据包分发给
租户标识对应的租户。由于VPC网络中包括多个租户,每个租户可以通过RDMA网络进行数据
包的收发,在RDMA网络中,根据本申请实施例提供的方法,将VPC网络中一个或多个租户的
数据包进行隧道封装,通过租户标识对租户进行区分,将VPC网络中各租户的数据隔离出来
在RDMA网络中进行传输,则每个租户只能获取该租户自己的数据包,例如租户1可以获取租
户1的数据包,但无法获取租户2的数据包,实现了每个租户的数据不会被其他租户获取到,
保证了数据的安全。
[0150] 并且,本申请实施例提供的方法,无需改变公有云网络的基础设施,无需增加硬件成本,即可实现在VPC网络上给租户呈现RDMA技术,将VPC网络与RDMA网络进行融合,解决了
多租户隔离的问题。满足VPC租户部署机器学习、大数据、科学计算等应用的需求,具有低延
时性。
[0151] 并且,通过将ECN值与DSCP值在原始数据包和隧道数据包之间复制,解决RDMA网络的流控问题,而且通过DSCP值将数据包进行标记,可以将RDMA数据包和传统的TCP/IP数据
包进行区分,解决了RDMA网络和传统TCP/IP网络的隔离问题。
[0152] 并且,在建立RDMA连接的过程中将流表下发给网卡,可以保证建立RDMA连接时流表下载成功,有效避免了RDMA数据包状态出错、乱序等问题。
[0153] 并且,相关技术中,根据Per Flow(一对IP地址和一对端口号)来对流表进行分类,其中流表中的字段包括源IP地址、目的IP地址、目的端口号和源端口号。服务器按照Per 
Flow的方式生成流表,将流表下发到网卡,网卡根据Per Flow的方式,按照源IP地址和目的
IP地址查询目的端口号和源端口号对应的流表。而本申请实施例中,根据Per Destination
(一对IP地址和目的端口号)对流表进行分类,其中流表中的字段包括源IP地址、目的IP地
址和目的端口号。服务器按照Per Destination的方式生成流表,将流表下发到网卡,网卡
根据Per Destination的方式,按照源IP地址和目的IP地址查询目的端口号对应的流表。因
此,通过本申请实施例提供的方法,仅根据目的端口号进行分类,不考虑源端口号,减少了
分类的类别,降低了流表规格,对流表的查询速度更快,时延更低。
[0154] 图11是本申请实施例提供的一种数据传输装置的结构示意图,应用于发送方网卡,参见图11,该装置包括:
[0155] 获取模块1101,用于获取原始数据包、第一地址和租户标识,其中第一地址包括接收原始数据包的接收方网卡的地址,租户标识用于指示接收方服务器上对应的租户;
[0156] 封装模块1102,用于根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包;
[0157] 发送模块1103,用于将隧道数据包发送给第一地址对应的接收方网卡,接收方网卡用于接收到隧道数据包时,对隧道数据包进行解封装,得到原始数据包和租户标识,将原
始数据包和租户标识传输至接收方服务器,接收方服务器用于将原始数据包分发给租户标
识对应的租户。
[0158] 本申请实施例提供的装置,获取原始数据包、第一地址和租户标识,根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包,将隧道数据包发送给第一地址
对应的接收方网卡;接收方网卡接收到隧道数据包时,对隧道数据包进行解封装,得到原始
数据包和租户标识;将原始数据包和租户标识传输至接收方服务器;接收方服务器用于将
原始数据包分发给租户标识对应的租户。因此,通过进行隧道封装,根据租户标识对租户进
行区分,可以将公有云中每个租户的数据隔离出来,保证了数据的安全。
[0159] 可选地,参见图12,原始数据包携带第二地址,第二地址包括接收方虚拟机的地址,接收方虚拟机的地址包括第二媒体访问控制MAC地址和第二网际协议IP地址,第一地址
包括接收方网卡的第一MAC地址和第一IP地址,封装模块1102,包括:
[0160] 删除单元1112,用于将原始数据包中的第二MAC地址删掉;
[0161] 添加单元1122,用于添加第一MAC地址、第一IP地址和租户标识,得到隧道数据包。
[0162] 可选地,原始数据包包括包头和包体,原始数据包的包头包括第二MAC地址字段和第二IP地址字段,第二MAC地址字段包括第二MAC地址,第二IP地址字段包括第二IP地址、显
式拥塞通知ECN值和差分服务代码点DSCP值,原始数据包的包体包括传输数据;隧道数据包
包括包头和包体,隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字
段,第一MAC地址字段包括第一MAC地址,第一IP地址字段包括第一IP地址,隧道协议字段包
括租户标识,隧道数据包的包体包括第二IP地址字段和传输数据。该装置还包括:
[0163] 写入模块1104,用于将第二IP数据字段中的ECN值和第二IP数据字段中的DSCP值写入第一IP地址字段中。
[0164] 可选地,发送方网卡为支持RoCE的网卡,获取模块1101,包括:
[0165] 流表获取单元1111,用于获取发送方服务器下发的发送方流表,发送方流表包括第一地址和租户标识;其中,发送方服务器用于接收到发送方虚拟机获取的原始数据包时,
建立与接收方服务器之间的远程直接内存访问RDMA连接,在建立RDMA连接的过程中生成发
送方流表,将发送方流表下发给发送方网卡,并将原始数据包下发给发送方网卡。
[0166] 可选地,封装模块1102,包括:
[0167] 封装单元1132,用于确定原始数据包与发送方流表匹配成功时,根据第一地址和租户标识,对原始数据包进行隧道封装,得到隧道数据包。
[0168] 可选地,发送方流表还包括匹配项,匹配项包括第三IP地址、第二IP地址、网卡物理端口号、三层协议号和应用层端口号,第三IP地址为发送方虚拟机的IP地址,第二IP地址
为接收方虚拟机的IP地址,封装单元1132,还用于当原始数据包对应的第三IP地址、第二IP
地址、网卡物理端口号、三层协议号和应用层端口号,与匹配项中的第三IP地址、第二IP地
址、网卡物理端口号、三层协议号和应用层端口号相同时,确定原始数据包与发送方流表匹
配成功。
[0169] 图13是本申请实施例提供的另一种数据传输装置的结构示意图,应用于发送方服务器,该发送方服务器配置有上述图11中的发送方网卡,参见图13,该装置包括:
[0170] 连接建立模块1301,用于通过发送方虚拟机获取原始数据包时,建立与接收方服务器之间的远程直接内存访问RDMA连接,发送方虚拟机运行在发送方服务器中;
[0171] 流表下发模块1302,用于在建立RDMA连接的过程中生成发送方流表,将发送方流表下发给发送方网卡,并将原始数据包下发给发送方网卡。
[0172] 可选地,参见图14,原始数据包包括第一差分服务代码点DSCP值或者第二DSCP值,第一DSCP值用于表示原始数据包为RDMA数据包,第二DSCP值用于表示原始数据包为传输控
制协议/互联网协议TCP/IP数据包;连接建立模块1301,包括:
[0173] 连接建立单元1311,用于通过发送方虚拟机获取原始数据包,且原始数据包包括第一DSCP值时,建立与接收方服务器之间的RDMA连接。
[0174] 图15是本申请实施例提供的另一种数据传输装置的结构示意图,应用于接收方网卡,参见图15,该装置包括:
[0175] 接收模块1501,用于接收发送方网卡发送的隧道数据包,隧道数据包由发送方网卡根据第一地址和租户标识对原始数据包进行隧道封装后得到,第一地址包括接收原始数
据包的接收方网卡的地址,租户标识用于指示接收方服务器上对应的租户;
[0176] 解封装模块1502,用于对隧道数据包进行解封装,得到原始数据包和租户标识;
[0177] 传输模块1503,用于将原始数据包和租户标识传输至接收方服务器。
[0178] 可选地,参见图16,隧道数据包包括第一地址和租户标识,接收方网卡的地址包括第一媒体访问控制MAC地址和第一网际协议IP地址,解封装模块1502,包括:
[0179] 标识获取单元1512,用于获取隧道数据包中的租户标识;
[0180] 删除单元1522,用于将隧道数据包中的第一MAC地址和第一IP地址删掉,得到原始数据包。
[0181] 可选地,隧道数据包包括包头和包体,隧道数据包的包头包括第一MAC地址字段、第一IP地址字段和隧道协议字段,第一MAC地址字段包括第一MAC地址,第一IP地址字段包
括第一IP地址、显式拥塞通知ECN值和差分服务代码点DSCP值,隧道协议字段包括租户标
识,隧道数据包的包体包括第二IP地址字段和传输数据,第二IP地址字段包括第二IP地址,
第二IP地址为接收方虚拟机的IP地址;
[0182] 原始数据包包括包头和包体,原始数据包的包头包括第二IP地址字段,原始数据包的包体包括传输数据。该装置还包括:
[0183] 写入模块1504,用于将第一IP地址字段中的ECN值和第一IP地址字段中的DSCP值写入第二IP地址字段;
[0184] 添加模块1505,用于在原始数据包的包头中添加第二MAC地址字段,第二MAC地址字段包括第二MAC地址,第二MAC地址为接收方虚拟机的MAC地址。
[0185] 可选地,接收方网卡为支持RoCE的网卡,解封装模块1502,包括:
[0186] 流表获取单元1532,用于获取接收方服务器下发的接收方流表,接收方服务器用于建立与发送方服务器之间的远程直接内存访问RDMA连接,在建立RDMA连接的过程中生成
接收方流表,将接收方流表下发给接收方网卡;
[0187] 解封装单元1542,用于确定隧道数据包与接收方流表匹配成功时,对原始数据包进行解封装,得到原始数据包和租户标识。
[0188] 可选地,接收方流表包括匹配项,匹配项包括第四IP地址、第一IP地址、租户标识、三层协议号和应用层端口号,第四IP地址为发送方网卡的IP地址,第一IP地址为接收方网
卡的IP地址,隧道数据包中包括第四IP地址、第一IP地址、租户标识、三层协议号和应用层
端口号,解封装单元1542,还用于当隧道数据包中的第四IP地址、第一IP地址、租户标识、三
层协议号和应用层端口号,与匹配项中的第四IP地址、第一IP地址、租户标识、三层协议号
和应用层端口号相同时,确定隧道数据包与接收方流表匹配成功。
[0189] 图17是本申请实施例提供的另一种数据传输装置的结构示意图,应用于接收方服务器,该接收方服务器配置有上述图15中的发送方网卡,参见图17,该装置包括:
[0190] 连接建立模块1701,用于通过接收方虚拟机建立与发送方服务器的远程直接内存访问RDMA连接,接收方虚拟机运行在接收方服务器中;
[0191] 流表下发模块1702,用于在建立RDMA的过程中生成接收方流表,将接收方流表下发给接收方网卡。
[0192] 可选地,参见图18,装置还包括:
[0193] 数据包分发模块1703,用于当获取到接收方网卡传输的原始数据包和租户标识时,将原始数据包分发给租户标识对应的租户。
[0194] 需要说明的是:上述实施例提供的数据传输装置在传输数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模
块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者
部分功能。另外,上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,其
具体实现过程详见方法实施例,这里不再赘述。
[0195] 图19是本申请实施例提供的一种服务器的结构示意图,该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing 
Units,CPU)1901和一个或一个以上的存储器1902,以及一个或一个以上的网卡1903。其中,
所述存储器1902中存储有至少一条程序代码,所述至少一条程序代码由所述处理器1901加
载并执行以实现上述各个方法实施例提供的服务器执行的方法,所述网卡1903用于实现上
述各个方法实施例提供的网卡执行的方法。当然,该服务器还可以具有有线或无线网络接
口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现
设备功能的部件,在此不做赘述。
[0196] 本申请实施例还提供了一种用于传输数据的网卡,该网卡用于实现上述实施例的数据传输方法中所具有的操作。
[0197] 本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的数
据传输方法中所具有的操作。
[0198] 本申请实施例还提供了一种计算机程序,该计算机程序包括至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的数据传输方法中所具有的
操作。
[0199] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读
存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0200] 以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的
保护范围之内。