CN116915370B - 基于远程直接数据存取的数据重传方法、装置及系统 - Google Patents
基于远程直接数据存取的数据重传方法、装置及系统 Download PDFInfo
- Publication number
- CN116915370B CN116915370B CN202311185983.6A CN202311185983A CN116915370B CN 116915370 B CN116915370 B CN 116915370B CN 202311185983 A CN202311185983 A CN 202311185983A CN 116915370 B CN116915370 B CN 116915370B
- Authority
- CN
- China
- Prior art keywords
- packet
- remote direct
- current
- packet sequence
- access network
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000004044 response Effects 0.000 claims abstract description 152
- 230000008569 process Effects 0.000 claims description 18
- 238000005516 engineering process Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 abstract description 25
- 230000005540 biological transmission Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
- H04L1/1614—Details of the supervisory signal using bitmaps
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本申请提供了一种基于远程直接数据存取的数据重传方法、装置及系统,可应用于通信领域。所述方法包括:第一网络设备的远程直接数据存取网卡生成多个相互解耦的数据包;所述第一网络设备的远程直接数据存取网卡将所述多个相互解耦的数据包向第二网络设备的远程直接数据存取网卡发送;在接收到所述第二网络设备的远程直接数据存取网卡发送的重传请求包的情况下,所述第一网络设备的远程直接数据存取网卡将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传。
Description
技术领域
本发明涉及通信领域,尤其涉及一种基于远程直接数据存取的数据重传方法、装置及系统。
背景技术
随着人工智能的发展,面向AI大模型的高性能数据中心网络呈现数据流的总数少、单径路由传输数据量大的特点,因此,数据中心网络对数据传输的高效性越来越关注。
现有技术只支持顺序接收,并采用回退N帧(go-back-N,GBN)的重传机制。网络上一旦发生乱序或者丢包,就需要重传。然而,回退N帧的重传机制每次都要重传丢失的数据包及其之后的所有数据包,存在传输过程资源消耗大、传输效率低、长尾延迟等问题。
发明内容
为解决上述技术问题,本申请提供一种基于远程直接数据存取的数据重传方法、装置及系统,能够解决数据的传输过程资源消耗大、传输效率低、长尾延迟等问题。
第一方面,提供了一种基于远程直接数据存取的数据重传方法,包括:
第一网络设备的远程直接数据存取网卡生成多个相互解耦的数据包;
上述第一网络设备的远程直接数据存取网卡将上述多个相互解耦的数据包向第二网络设备的远程直接数据存取网卡发送;
在接收到上述第二网络设备的远程直接数据存取网卡发送的重传请求包的情况下,上述第一网络设备的远程直接数据存取网卡将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传;
其中,上述多个相互解耦的数据包之间通过包序列号表示上述多个相互解耦的数据包之间的顺序关系,上述重传请求包是基于上述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的比较确定的,该当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,该当前第一包序位图用于记录多个相互解耦的数据包的接收状态,上述重传请求包包括该当前第一包序列号,上述当前第二包序位图用于记录多个应答包的接收状态,该应答包与对应的数据包具有相同的包序列号,该应答包是在对应的数据包已经被上述第二网络设备的远程直接数据存取网卡接收到的情况下产生的。
上述方案中,基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,在接收到重传请求包的情况下能够仅将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传来实现可靠连接。因此,相对于为了保证数据包顺序接收而采用回退N帧的重传机制来实现可靠连接的技术方案而言,本技术方案能够实现数据包的乱序接收,并且重传的数据量少,因而重传过程资源消耗小,数据的传输效率高,从而克服了可靠连接中数据的传输过程资源消耗大、传输效率低、长尾延迟等问题。并且,由于能够实现数据包的乱序接收,因而上述方案能够适用于采用多径路由传输数据包的场景,为高性能数据中心网络实现负载均衡、提高数据传输带宽以及降低数据传输延迟提供良好的技术支持。
在一些可能的实现方式中,上述重传请求包是基于上述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的比较确定的,包括:
上述重传请求包是在上述第二网络设备的远程直接数据存取网卡乱序接收上述多个相互解耦的数据包的情况下,上述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与上述当前第一包序列号之间的差值大于或等于第一阈值产生的。
在一些可能的实现方式中,上述第二网络设备的远程直接数据存取网卡用于对包序列号小于或等于上述当前第一包序列号与第一包序位图的容量之和,并且已经被上述第二网络设备的远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,上述方法还包括:
在接收到上述第二网络设备的远程直接数据存取网卡发送的应答包的情况下,上述第一网络设备的远程直接数据存取网卡在该应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值时,将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传,其中,该当前第二包序列号是上述当前第二包序位图中第一个未被接收的应答包的包序列号。
在一些可能的实现方式中,上述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,该第一字段用于区分不同类型的服务,该第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,该第三字段与该第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,该第一字段、该第二字段、该第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,上述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
第二方面,提供了一种基于远程直接数据存取的数据重传方法,包括:
第二网络设备的远程直接数据存取网卡乱序接收多个相互解耦的数据包;
上述第二网络设备的远程直接数据存取网卡基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,将该重传请求包向第一网络设备的远程直接数据存取网卡发送;
上述第二网络设备的远程直接数据存取网卡接收当前第二包序位图中第一个未被接收的应答包对应的数据包;
其中,上述多个相互解耦的数据包之间通过包序列号表示上述多个相互解耦的数据包之间的顺序关系,上述多个相互解耦的数据包由第一网络设备的远程直接数据存取网卡生成,上述当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,该当前第一包序位图用于记录多个相互解耦的数据包的接收状态,上述重传请求包包括上述当前第一包序列号,上述当前第二包序位图中第一个未被接收的应答包对应的数据包由上述第一网络设备的远程直接数据存取网卡生成,上述当前第二包序位图用于记录多个应答包的接收状态,该应答包与对应的数据包具有相同的包序列号,该应答包是在对应的数据包已经被上述第二网络设备的远程直接数据存取网卡接收到的情况下产生的。
在一些可能的实现方式中,上述第二网络设备的远程直接数据存取网卡基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,包括:
在上述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,上述第二网络设备的远程直接数据存取网卡生成上述重传请求包。
在一些可能的实现方式中,上述第二网络设备的远程直接数据存取网卡用于对包序列号小于或等于上述当前第一包序列号与第一包序位图的容量之和,并且已经被上述第二网络设备的远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,上述当前第二包序位图中第一个未被接收的应答包对应的数据包由上述第一网络设备的远程直接数据存取网卡生成,包括:
上述当前第二包序位图中第一个未被接收的应答包对应的数据包是上述第一网络设备的远程直接数据存取网卡在接收到上述第二网络设备的远程直接数据存取网卡发送的重传请求包的情况下生成的;
或者,上述当前第二包序位图中第一个未被接收的应答包对应的数据包是上述第一网络设备的远程直接数据存取网卡在接收到上述第二网络设备的远程直接数据存取网卡发送的应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值的情况下生成的,其中,该当前第二包序列号是上述当前第二包序位图中第一个未被接收的应答包的包序列号。
在一些可能的实现方式中,上述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,该第一字段用于区分不同类型的服务,该第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,该第三字段与该第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,该第一字段、该第二字段、该第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,上述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
第三方面,提供了一种基于远程直接数据存取的第一数据重传装置,包括:第一远程直接数据存取网卡,
上述第一远程直接数据存取网卡,用于生成多个相互解耦的数据包,
上述第一远程直接数据存取网卡,还用于将上述多个相互解耦的数据包向第二装置的远程直接数据存取网卡发送;
在接收到上述第二装置的远程直接数据存取网卡发送的重传请求包的情况下,上述第一远程直接数据存取网卡,还用于将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传;
其中,上述多个相互解耦的数据包之间通过包序列号表示上述多个相互解耦的数据包之间的顺序关系,上述重传请求包是基于上述第二装置的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的比较确定的,该当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,该当前第一包序位图用于记录多个相互解耦的数据包的接收状态,上述重传请求包包括该当前第一包序列号,上述当前第二包序位图用于记录多个应答包的接收状态,该应答包与对应的数据包具有相同的包序列号,该应答包是在对应的数据包已经被上述第二装置的远程直接数据存取网卡接收到的情况下产生的。
在一些可能的实现方式中,上述重传请求包是在上述第二装置的远程直接数据存取网卡用于乱序接收上述多个相互解耦的数据包的情况下,上述第二装置的远程直接数据存取网卡当前处理的数据包的包序列号与上述当前第一包序列号之间的差值大于或等于第一阈值产生的。
在一些可能的实现方式中,上述第二装置的远程直接数据存取网卡,还用于对包序列号小于或等于上述当前第一包序列号与第一包序位图的容量之和,并且已经被上述第二装置的远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,上述第一远程直接数据存取网卡还用于:
在接收到上述第二装置的远程直接数据存取网卡发送的应答包的情况下,上述第一远程直接数据存取网卡,还用于在该应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值时,将当前第二包序位图中第一个未被记录的数据包进行重传,其中,该当前第二包序列号是上述当前第二包序位图中第一个未被记录的数据包的包序列号。
在一些可能的实现方式中,上述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,该第一字段用于区分不同类型的服务,该第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,该第三字段与该第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,该第一字段、该第二字段、该第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,上述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
第四方面,提供了一种基于远程直接数据存取的第二数据重传装置,包括:第二远程直接数据存取网卡,
上述第二远程直接数据存取网卡,用于乱序接收多个相互解耦的数据包;
上述第二远程直接数据存取网卡,还用于基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,将该重传请求包向第一装置的远程直接数据存取网卡发送;
上述第二远程直接数据存取网卡,还用于接收当前第二包序位图中第一个未被接收的应答包对应的数据包;
其中,上述多个相互解耦的数据包之间通过包序列号表示上述多个相互解耦的数据包之间的顺序关系,上述多个相互解耦的数据包由上述第一装置的远程直接数据存取网卡生成,上述当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,该当前第一包序位图用于记录多个相互解耦的数据包的接收状态,上述重传请求包包括上述当前第一包序列号,上述当前第二包序位图中第一个未被接收的应答包对应的数据包由上述第一装置的远程直接数据存取网卡生成,上述当前第二包序位图用于记录多个应答包的接收状态,该应答包与对应的数据包具有相同的包序列号,该应答包是在对应的数据包已经被上述第二远程直接数据存取网卡接收到的情况下产生的。
在一些可能的实现方式中,在上述第二远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序位图中当前第一包序列号之间的差值大于或等于第一阈值的情况下,上述第二远程直接数据存取网卡,还用于生成上述重传请求包。
在一些可能的实现方式中,上述第二远程直接数据存取网卡,还用于对包序列号小于或等于上述当前第一包序列号与第一包序位图的容量之和,并且已经被上述第二远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,上述当前第二包序位图中第一个未被接收的应答包对应的数据包是上述第一装置的远程直接数据存取网卡在接收到上述第二远程直接数据存取网卡发送的重传请求包的情况下生成的;或者,上述当前第二包序位图中第一个未被接收的应答包对应的数据包是上述第一装置的远程直接数据存取网卡在接收到上述第二远程直接数据存取网卡发送的应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值的情况下生成的,其中,该当前第二包序列号是上述当前第二包序位图中第一个未被接收的应答包的包序列号。
在一些可能的实现方式中,上述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,该第一字段用于区分不同类型的服务,该第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,该第三字段与该第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,该第一字段、该第二字段、该第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,上述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
第五方面,提供了一种基于远程直接数据存取的数据重传系统,包括:第一装置以及第二装置,
上述第二装置的远程直接数据存取网卡,用于乱序接收多个相互解耦的数据包;
上述第二装置的远程直接数据存取网卡,还用于基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,将该重传请求包向上述第一装置的远程直接数据存取网卡发送;
在接收到上述重传请求包的情况下,上述第一装置的远程直接数据存取网卡,用于将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传;
上述第二装置的远程直接数据存取网卡,还用于接收上述当前第二包序位图中第一个未被接收的应答包对应的数据包;
其中,上述多个相互解耦的数据包之间通过包序列号表示上述多个相互解耦的数据包之间的顺序关系,上述多个相互解耦的数据包由上述第一装置的远程直接数据存取网卡生成,上述当前第一包序列号是当前第一包序位图中第一个未被记录的数据包的包序列号,该当前第一包序位图用于记录多个相互解耦的数据包的接收状态,上述重传请求包包括上述当前第一包序列号,上述当前第二包序位图用于记录多个应答包的接收状态,该应答包与对应的数据包具有相同的包序列号,该应答包是在对应的数据包已经被上述第二装置的远程直接数据存取网卡接收到的情况下产生的。
在一些可能的实现方式中,在上述第二装置的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,上述第二装置的远程直接数据存取网卡,还用于生成上述重传请求包。
在一些可能的实现方式中,上述第二装置的远程直接数据存取网卡还用于:对包序列号小于或等于上述当前第一包序列号与第一包序位图的容量之和,并且已经被上述第二装置的远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,上述第一装置还用于:
在接收到上述第二装置的远程直接数据存取网卡发送的应答包的情况下,上述第一装置的远程直接数据存取网卡,还用于在该应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值时,将当前第二包序位图中第一个未被记录的数据包进行重传,其中,该当前第二包序列号是上述当前第二包序位图中第一个未被记录的数据包的包序列号。
在一些可能的实现方式中,上述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,该第一字段用于区分不同类型的服务,该第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,该第三字段与该第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,该第一字段、该第二字段、该第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,上述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本申请提供的一种数据传输系统的结构示意图;
图2是本申请提供的一种基于远程直接数据存取的数据重传方法的流程示意图;
图3是本申请提供的基于远程直接数据存取的第一数据重传装置的结构示意图;
图4是本申请提供的基于远程直接数据存取的第二数据重传装置的结构示意图;
图5是本申请提供的一种基于远程直接数据存取的数据重传系统的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
参见图1,图1是本申请提供的一种数据传输系统的结构示意图。数据传输系统是采用远程直接数据存取(remote direct memory access,RDMA)完成数据传输过程的系统,因此,数据传输系统中的网络设备能够在不需要操作系统的情况下,与其它网络设备进行数据传输。
如图1所示,数据传输系统10包括至少两个网络设备以及通信网络11。下文中以两个网络设备(第一网络设备12、第二网络设备13)为例进行说明。
在数据传输系统10中,第一网络设备12 的第一网卡121通过任何通信机制/通信标准的通信网络11将数据包14传输给第二网络设备13的第二网卡131。相应地,第二网络设备13的第二网卡131通过通信网络11接收由第一网络设备12 的第一网卡121发送的数据包14。其中,第一网络设备12或者第二网络设备13可以是任何网络设备,包括交换机、计算机、服务器、集线器等等。第一网卡121或者第二网卡131是远程直接数据存取网卡。而通信网络11可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
在一些可能的实现方式中,第一网络设备12 的第一网卡121和第二网络设备13的第二网卡131之间使用基于融合以太网的远程直接数据存取(远程直接数据存取 overconverged ethernet,RoCE)传输数据包14。其中,RoCE是一种网络协议,通过在以太网上封装无限带宽技术(InfiniBand,IB)传输数据包,从而实现基于以太网的远程直接数据存取。而IB是RoCE的传输层协议,具有高带宽、低延迟等特点,能够支持多种通信的服务类型和通信语义,包括可靠连接(reliable connection,RC)、不可靠连接(unreliable connection,UC)、不可靠数据报(unreliable datagram,UD)等等。
应当理解,上述第一网络设备12和第二网络设备13之间的数据传输过程,仅仅作为一种示例,不作为具体的限定。
基于前述的数据传输系统,下面具体介绍本申请提供的一种基于远程直接数据存取的数据重传方法。
参见图2,图2是本申请提供的一种基于远程直接数据存取的数据重传方法的流程示意图。如图2所示,本申请提供的基于远程直接数据存取的数据重传方法,包括:
S201:第一网络设备的远程直接数据存取网卡将目标请求组成多个相互解耦的数据包。
其中,第一网络设备的远程直接数据存取网卡可以是图1中数据传输系统10中的第一网络设备12 的第一网卡121。
在一些可能的实现方式中,第一网络设备的远程直接数据存取网卡将目标请求组成多个相互解耦的数据包。其中,目标请求由第一网络设备的内部应用或者外部应用产生。目标数据包括一个消息或者多个消息。因此,多个相互解耦的数据包可以来自一个消息或者多个消息。每个数据包由包头和有效载荷组成,其中,包头用于承载控制信息(如源地址、目的地址),有效载荷用于承载消息中的信息。
在一些可能的实现方式中,数据包的包头包括第一字段、第二字段以及第三字段。其中,第一字段用于区分不同类型的服务,第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,第三字段与第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息。
在一具体的实现方式中,数据包的包头和有效载荷基于RoCE中的传输层协议IB进行定义。其中,第一字段、第二字段、第三字段定义在IB的头部字段(base transportheader,BTH)的Opcode字段中。具体定义过程如下所示:
第一字段为多位二进制数,从而区分RC、UC、UD、选择性重传的可靠连接(select-retry reliable connection,SRC)等不同类型的服务。例如,第一字段为三位二进制数,并且,第一字段为001时,表示RC;第一字段为010时,表示UC;第一字段为100时,表示UD;第一字段为110时,表示SRC。
第二字段为多位二进制数,从而区分远程直接数据存取中的发送操作(send)、读操作(read)、写操作(write)、原子操作(atomic)、接收操作(receive)等不同类型的操作,或者,区分不同类型的操作以及首包(first)、中间包(middle)、尾包(last)三种描述不同数据包在对应消息中的位置。例如,第二字段为五位二进制数,并且,第二字段为00000时,表示发送操作以及首包(send first),即数据包是对应消息中的首包,并且对数据包的有效载荷数据(payload data)执行发送操作;第二字段为00011时,表示支持立即数的发送操作以及尾包(send last with immdt),即数据包是对应消息中的尾包,并且对数据包的有效载荷数据以及由第一网络设备的远程直接数据存取网卡产生的立即数执行发送操作;第二字段为00111时,表示写操作以及中间包(write middle),即数据包是对应消息中的中间包,并且对数据包的有效载荷数据执行写操作;第二字段为01100时,表示读取请求操作(read request);第二字段为10010时,表示原子操作(atomic);第二字段为10011时,表示原子比较和交换操作(atomic compare and swap);第二字段为10100时,表示原子取和加操作(atomic fetch and add);
第三字段与第二字段中的操作之间具有一一对应的关系,包含能够独立完成对应操作的信息。例如,第二字段为00111,表示写操作以及中间包,则第三字段包含与写操作对应的绝对地址。或者,第二字段为10011,表示原子比较和交换操作,则第三字段包含与原子比较和交换操作对应的绝对地址、变量信息。因此,相对于由首包提供操作的绝对地址,中间包、尾包提供同一操作的偏移地址的技术方案而言,本技术方案通过为首包、中间包、尾包提供绝对地址,从而能够独立地执行每个数据包的写操作、原子操作,而不依赖于其它数据包中的信息。
因此,上述数据包中的第一字段、第二字段以及第三字段能够为后续独立执行每个数据包的操作提供必要的完整信息,使得对每个数据包的执行都不用依赖于其它数据包中的信息,进而实现多个数据包之间的相互解耦。
应当理解,上述第一字段、第二字段、第三字段包含的比特数量,第一字段、第二字段、第三字段在数据包中的位置,以及,封装数据包的协议仅仅作为一种示例,此处不作为具体的限定。
S202:第一网络设备的远程直接数据存取网卡将多个相互解耦的数据包通过通信网络发送给第二网络设备的远程直接数据存取网卡。
第一网络设备的远程直接数据存取网卡将多个相互解耦的数据包通过通信网络发送给第二网络设备的远程直接数据存取网卡。其中,通信网络可以是图1中数据传输系统10中的通信网络11,第二网络设备的远程直接数据存取网卡可以是图1中数据传输系统10中的第二网络设备13的第二网卡131,数据包可以是图1中数据传输系统10中的数据包14。
在一些可能的实现方式中,数据包的包序列号是该数据包在多个相互解耦的数据包中的序列号,存储在该数据包的包头中。因此,多个相互解耦的数据包之间通过包序列号表示多个相互解耦的数据包之间的顺序关系。
为了陈述简便,下文将第一网络设备的远程直接数据存取网卡发送的多个相互解耦的数据包称为第一组数据包,将第二网络设备的远程直接数据存取网卡接收到的多个相互解耦的数据包称为第二组数据包。
在一些可能的实现方式中,第二组数据包中的数据包乱序排列,即第二组数据包中存在两个相邻数据包的包序列号不连续的情况。第二组数据包存在两种情况:(1)第二组数据包不包括第一组数据包中的数据包,表明第一组数据包中的所有数据包在通过通信网络发送的过程中丢失。(2)第二组数据包包括第一组数据包中的数据包,表明第一组数据包中的部分数据包在通过通信网络发送的过程中丢失,或者,第一组数据包中的所有数据包在通过通信网络发送的过程中没有丢失。
S203:第二网络设备的远程直接数据存取网卡从乱序接收的多个相互解耦的数据包中获取第一数据包,基于第一数据包的包序列号与当前第一包序列号之间的比较,确定是否生成第一数据包的应答包以及确定是否生成第一数据包的重传请求包。在确定生成第一数据包的应答包的情况下,转S204;在确定生成第一数据包的重传请求包的情况下,转S205。
在一些可能的实现方式中,第二网络设备的远程直接数据存取网卡从乱序接收到的多个相互解耦的数据包中获取第一数据包,对第一数据包进行解封装,从而得到第一数据包的包序列号、服务类型、操作类型、源地址、目的地址等信息。因此,第一数据包是第二网络设备的远程直接数据存取网卡当前处理的数据包。
在一些可能的实现方式中,第一包序位图是二进制序列,包括多个二进制数,用于记录多个相互解耦的数据包的接收状态。二进制数的总量为第一包序位图的容量。每个二进制数对应一个数据包,二进制数的序列号对应数据包的包序列号,二进制数的数值对应数据包的接收状态。二进制数的数值为0,表示与其对应的数据包未被接收;二进制数的数值为1,表示与其对应的数据包已经被接收。第一包序位图中的第一位二进制数对应第一个未被接收的数据包,则第一位二进制数的序列号也称为第一包序列号,表示第一包序位图中第一个未被接收的数据包的包序列号,也即第一包序位图中第一个数值为0的二进制数对应的数据包的包序列号。第一包序位图、第一包序列号分别存储在第二网络设备的内部存储器或者第二网络设备的外部存储器。
在一些可能的实现方式中,第一包序列号基于多个相互解耦的数据包的接收状态进行变化。在当前第一包序列号指示的数据包已经被第二网络设备的远程直接数据存取网卡接收并且处理完成之后,第一包序位图中下一个未被接收的数据包成为第一包序位图中第一个未被接收的数据包,则第一包序列号指示第一包序位图中下一个未被接收的数据包。因此,第一包序位图中二进制数对应的数据包随着第一包序列号的变化而变化,其中,当前第一包序列号既指示当前第一包序位图中第一个未被接收的数据包,又指示当前第一包序位图所能记录的包序列号最小的数据包,而当前第一包序列号与第一包序位图的容量之和指示当前第一包序位图所能记录的包序列号最大的数据包。
在一些可能的实现方式中,第二网络设备的远程直接数据存取网卡基于第一数据包的包序列号与当前第一包序列号之间的比较,确定是否生成第一数据包的应答包以及确定是否生成第一数据包的重传请求包。具体过程为:第二网络设备的远程直接数据存取网卡判断第一数据包的包序列号是否大于当前第一包序列号与第一包序位图的容量之和。在第一数据包的包序列号大于当前第一包序列号与第一包序位图的容量之和的情况下,即第一数据包的包序列号与当前第一包序列号之间的差值大于第一阈值,表明第一数据包不在当前第一包序位图的范围之内,则第二网络设备的远程直接数据存取网卡丢弃第一数据包,并确定生成第一数据包的重传请求包。其中,第一阈值由第二网络设备确定。第一数据包的重传请求包的包序列号为当前第一包序列号。在第一数据包的包序列号小于或等于当前第一包序列号与第一包序位图的容量之和的情况下,表明第一数据包在当前第一包序位图的范围之内,则第二网络设备的远程直接数据存取网卡判断当前第一包序位图中与第一数据包对应的二进制数的数值。在二进制数的数值为1的情况下,表明第一数据包已经被接收,则第二网络设备的远程直接数据存取网卡丢弃第一数据包;在二进制数的数值为0的情况下,表明第一数据包未被接收,则第二网络设备的远程直接数据存取网卡确定生成第一数据包的应答包,其中,第一数据包的应答包的包序列号为第一数据包的包序列号。因此,在上述实现方式中,第二网络设备的远程直接数据存取网卡既可以确定生成第一数据包的重传请求包,也可以确定生成第一数据包的应答包。
在一具体的实现方式中,在判断当前第一包序位图中与第一数据包对应的二进制数的数值之前,第二网络设备的远程直接数据存取网卡判断第一数据包的包序列号与当前第一包序列号之间的差值是否小于第一阈值。在第一数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,第二网络设备的远程直接数据存取网卡确定生成第一数据包的重传请求包;在第一数据包的包序列号与当前第一包序列号之间的差值小于第一阈值的情况下,第二网络设备的远程直接数据存取网卡确定不生成第一数据包的重传请求包。因此,在上述实现方式中,第二网络设备的远程直接数据存取网卡既可以确定生成第一数据包的重传请求包,也可以确定生成第一数据包的应答包,还可以确定生成第一数据包的重传请求包以及第一数据包的应答包。
在另一具体的实现方式中,在判断当前第一包序位图中与第一数据包对应的二进制数的数值之后,第二网络设备的远程直接数据存取网卡判断第一数据包的包序列号与当前第一包序列号之间的差值是否小于第一阈值。在第一数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,第二网络设备的远程直接数据存取网卡确定生成第一数据包的重传请求包;在第一数据包的包序列号与当前第一包序列号之间的差值小于第一阈值的情况下,第二网络设备的远程直接数据存取网卡确定不生成第一数据包的重传请求包。因此,在上述实现方式中,第二网络设备的远程直接数据存取网卡既可以确定生成第一数据包的重传请求包,也可以确定生成第一数据包的应答包,还可以确定生成第一数据包的重传请求包以及第一数据包的应答包。
S204:第二网络设备的远程直接数据存取网卡执行第一数据包的操作,生成第一数据包的应答包,更新当前第一包序位图。
在一些可能的实现方式中,第二网络设备的远程直接数据存取网卡基于第一数据包中的第一字段、第二字段以及第三字段执行第一数据包的操作。例如,第一数据包中的第一字段为110,第二字段为00111,第三字段中的绝对地址为0x5A1,则第二网络设备的远程直接数据存取网卡将作为中间包的第一数据包中的有效载荷数据写入绝对地址为0x5A1的存储空间,从而实现SRC的写操作。或者,第一数据包中的第一字段为110,第二字段为01100,第三字段中的绝对地址为0x5B1,则第二网络设备的远程直接数据存取网卡将读取绝对地址为0x5B1的存储空间中的数据,从而实现SRC的读操作。或者,第一数据包中的第一字段为110,第二字段为10011,第三字段中的绝对地址为0x5C1、变量名称为this、变量的值为00,则第二网络设备的远程直接数据存取网卡将this中的值00与绝对地址为0x5C1的存储空间中的数据进行比较,在两者相等的情况下,this中的值00将被存储到绝对地址为0x5C1的存储空间中,从而实现SRC下的原子比较和交换操作。
在一些可能的实现方式中,第二网络设备的远程直接数据存取网卡执行完第一数据包的操作之后,生成第一数据包的应答包。应答包由包头和有效载荷组成,其中,包头用于承载控制信息(如源地址、目的地址、包序列号),有效载荷用于承载应答信息。应答包的包头包括第一字段、第四字段。其中,第一字段用于区分不同类型的服务,第四字段用于区分应答包以及重传请求包。
在一具体的实现方式中,当第四字段在包头中的位置不同于数据包中的第二字段、第三字段在包头中的位置时,第四字段包括一个二进制数或者多个二进制数。当第四字段为一个二进制数时,第四字段为0,表示应答包;第四字段为1,表示重传请求包。当第四字段包括多个二进制数时,例如,第四字段为00,表示应答包;第四字段为11,表示重传请求包。
在另一具体的实现方式中,当第四字段在包头中的位置与数据包中的第二字段在包头中的位置相同时,第四字段的二进制数量与第二字段的二进制数量相同,则第二字段用于区分具有不同类型的操作的数据包、应答包、重传请求包,例如,第二字段为10001,表示应答包;第二字段为11111,表示重传请求包。
在另一具体的实现方式中,当第四字段在包头中的位置与数据包中的第三字段在包头中的位置相同时,第四字段的二进制数量与第三字段的二进制数量相同,则第三字段用于区分不同类型的操作对应的信息、应答包、重传请求包,而第二字段用于区分具有不同类型的操作的数据包、应答包/重传请求包。例如,第二字段为10001,表示应答包/重传请求包,再通过第三字段的最后八位二进制数的数值区分应答包与重传请求包,如第三字段的最后八位二进制数的数值为01100100,表示应答包;第三字段的最后八位二进制数的数值为01100101,表示重传请求包。
在一些可能的实现方式中,第二网络设备的远程直接数据存取网卡执行完第一数据包的操作之后,将当前第一包序位图中序列号为第一数据包的包序列号的二进制数的数值设置为1,表明第一数据包已经被接收,从而得到更新后的第一包序位图。
S205:第二网络设备的远程直接数据存取网卡生成第一数据包的重传请求包。
在一些可能的实现方式中,第二网络设备的远程直接数据存取网卡生成第一数据包的重传请求包。重传请求包由包头和有效载荷组成,其中,包头用于承载控制信息(如源地址、目的地址、包序列号),有效载荷用于承载重传信息。重传请求包的包头包括第一字段、第四字段。其中,第一字段用于区分不同类型的服务,第四字段用于区分应答包以及重传请求包。
综上所述,第二网络设备的远程直接数据存取网卡可以对包序列号小于或等于当前第一包序列号与第一包序位图的容量之和,并且已经被接收到的数据包进行处理。
S206:第二网络设备的远程直接数据存取网卡将第一数据包的应答包和/或第一数据包的重传请求包作为第三组数据包通过通信网络发送给第一网络设备的远程直接数据存取网卡。相应地,第一网络设备的远程直接数据存取网卡通过通信网络接收第四组数据包。
在一些可能的实现方式中,第三组数据包存在两种情况:(1)第三组数据包中仅有第一数据包的应答包或者第一数据包的重传请求包;(2)第三组数据包中有第一数据包的应答包以及第一数据包的重传请求包。
在第三组数据包中仅有第一数据包的应答包或者第一数据包的重传请求包的情况下,第四组数据包存在两种情况:(1)第四组数据包不包括第三组数据包中的第一数据包的应答包或者第一数据包的重传请求包,表明第三组数据包中的第一数据包的应答包或第一数据包的重传请求包在通过通信网络发送的过程中丢失。(2)第四组数据包包括第三组数据包中的第一数据包的应答包或者第一数据包的重传请求包,表明第三组数据包中的第一数据包的应答包或第一数据包的重传请求包在通过通信网络发送的过程中没有丢失。
在第三组数据包中有第一数据包的应答包和第一数据包的重传请求包的情况下,第四组数据包存在两种情况:(1)第四组数据包不包括第三组数据包中的第一数据包的应答包以及第一数据包的重传请求包,表明第三组数据包中的第一数据包的应答包和第一数据包的重传请求包在通过通信网络发送的过程中丢失。(2)第四组数据包包括第三组数据包中的第一数据包的应答包、第一数据包的重传请求包中的至少一个,表明第一组数据包中的第一数据包的应答包或第一数据包的重传请求包在通过通信网络发送的过程中丢失,或者,第一组数据包中的第一数据包的应答包和第一数据包的重传请求包在通过通信网络发送的过程中没有丢失。
S207:第一网络设备的远程直接数据存取网卡从第四组数据包中获取第一响应包,基于第一响应包的包序列号与当前第二包序列号之间的比较,确定是否生成第二数据包。在确定不生成第二数据包的情况下,转S208;在确定生成第二数据包的情况下,转S209。
在一些可能的实现方式中,第一网络设备的远程直接数据存取网卡从第四组数据包中获取第一响应包,对第一响应包进行解封装,从而得到第一响应包的包序列号、服务类型、操作类型、源地址、目的地址等信息。
在一些可能的实现方式中,第二包序位图是二进制序列,包括多个二进制数,用于记录多个应答包的接收状态。二进制数的总量为第二包序位图的容量。每个二进制数对应一个应答包,二进制数的序列号对应应答包的包序列号,二进制数的数值对应应答包的接收状态。二进制数的数值为0,表示与其对应的应答包未被接收;二进制数的数值为1,表示与其对应的应答包已经被接收。第二包序位图中的第一位二进制数对应第一个未被接收的应答包,则第一位二进制数的序列号也称为第二包序列号,表示第二包序位图中第一个未被接收的应答包的包序列号,也即第二包序位图中第一个数值为0的二进制数对应的应答包的包序列号。第二包序位图、第二包序列号分别存储在第一网络设备的内部存储器或者第一网络设备的外部存储器。
在一些可能的实现方式中,第二包序列号基于多个应答包的接收状态进行变化。在当前第二包序列号指示的应答包已经被第一网络设备的远程直接数据存取网卡接收并且处理完成之后,第二包序位图中下一个未被接收的应答包成为第二包序位图中第一个未被接收的应答包,则第二包序列号指示第二包序位图中下一个未被接收的应答包。因此,第二包序位图中二进制数对应的应答包随着第二包序列号的变化而变化,其中,当前第二包序列号既指示当前第二包序位图中第一个未被接收的应答包,又指示当前第二包序位图所能记录的包序列号最小的应答包,而当前第二包序列号与第二包序位图的容量之和指示当前第二包序位图所能记录的包序列号最大的应答包。
在一些可能的实现方式中,第一网络设备的远程直接数据存取网卡基于第一响应包的包序列号与当前第二包序列号之间的比较,确定是否生成第二数据包。具体过程为:第一网络设备的远程直接数据存取网卡判断第一响应包的包序列号是否大于当前第二包序列号与第二包序位图的容量之和。在第一响应包的包序列号大于当前第二包序列号与第二包序位图的容量之和的情况下,即第一响应包的包序列号与当前第二包序列号之间的差值大于第二阈值,表明第一响应包不在当前第二包序位图的范围之内,则第一网络设备的远程直接数据存取网卡确定生成具有当前第二包序列号的数据包,也称为第二数据包,即第二数据包为当前第二包序位图中第一个未被接收的应答包对应的数据包。其中,第二阈值由第一网络设备确定。在第一响应包的包序列号小于或等于当前第二包序列号与第二包序位图的容量之和的情况下,表明第一响应包在当前第二包序位图的范围之内,第一网络设备的远程直接数据存取网卡基于第一响应包的第四字段判断第一响应包为第一数据包的应答包或者第一数据包的重传请求包。在第一响应包为第一数据包的应答包的情况下,第一网络设备的远程直接数据存取网卡判断当前第二包序位图中与第一数据包的应答包对应的二进制数的数值。在二进制数的数值为1的情况下,表明第一数据包的应答包已经被接收,则第一网络设备的远程直接数据存取网卡丢弃第一数据包的应答包;在二进制数的数值为0的情况下,表明第一数据包的应答包未被接收,则第一网络设备的远程直接数据存取网卡确定不生成第二数据包。在第一响应包为第一数据包的重传请求包的情况下,第一网络设备的远程直接数据存取网卡确定生成第二数据包。
在一具体的实现方式中,在第一响应包为第一数据包的应答包的情况下,第一网络设备的远程直接数据存取网卡判断第一数据包的应答包的包序列号与当前第二包序列号之间的差值是否小于第二阈值。在第一数据包的应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值的情况下,第一网络设备的远程直接数据存取网卡确定生成第二数据包;在第一数据包的应答包的包序列号与当前第二包序列号之间的差值小于第二阈值的情况下,第一网络设备的远程直接数据存取网卡确定不生成第二数据包。
在另一具体的实现方式中,在判断第一响应包为第一数据包的应答包或第一数据包的重传请求包之前,第一网络设备的远程直接数据存取网卡判断第一响应包的包序列号与当前第二包序列号之间的差值是否小于第二阈值。在第一响应包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值的情况下,第一网络设备的远程直接数据存取网卡确定生成第二数据包;在第一响应包的包序列号与当前第二包序列号之间的差值小于第二阈值的情况下,第一网络设备的远程直接数据存取网卡判断第一响应包为第一数据包的应答包或第一数据包的重传请求包。
S208:第一网络设备的远程直接数据存取网卡执行第一响应包的操作,更新当前第二包序位图。
在第一响应包为第一数据包的应答包的情况下,第一网络设备的远程直接数据存取网卡基于第一数据包的应答包的包头和有效载荷执行第一数据包的应答包的操作。
在一些可能的实现方式中,第一网络设备的远程直接数据存取网卡执行完第一数据包的应答包的操作之后,将当前第二包序位图中序列号为第一数据包的应答包的包序列号的二进制数的数值设置为1,表明第一数据包的应答包已经被接收,从而得到更新后的第二包序位图。
S209:第一网络设备的远程直接数据存取网卡生成第二数据包,将第二数据包通过通信网络发送给第二网络设备的远程直接数据存取网卡。
在一些可能的实现方式中,第二数据包由包头和有效载荷组成,其中,包头用于承载控制信息(如源地址、目的地址),有效载荷用于承载消息中的信息。第二数据包的包头包括第一字段、第二字段以及第三字段。第一字段、第二字段以及第三字段的具体内容可以参照上述S201中第一字段、第二字段以及第三字段的具体内容。
综上所述,通过实施本发明实施例,具有如下优点:
第一方面,本技术方案通过在数据包中定义第一字段、第二字段以及第三字段,如基于RoCE中的传输层协议IB进行定义,能够为后续独立执行每个数据包的操作提供必要的完整信息,使得对每个数据包的执行都不用依赖于其它数据包中的信息,实现了多个数据包之间的相互解耦,并且实现了对多个相互解耦的数据包的乱序执行,进而不需要额外的用于存储乱序数据包的存储空间。
第二方面,本技术方案通过在数据包的第二字段中定义多种类型的操作,并在第三字段中提供独立完成对应操作的信息,能够支持数据包的发送操作、读操作、写操作、原子操作、接收操作等不同操作,使得本技术方案中的数据重传方法能够适用于多样化场景。
第三方面,本技术方案基于第一数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,在接收到重传请求包的情况下能够仅将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传来实现可靠连接。因此,相对于为了保证数据包顺序接收而采用回退N帧的重传机制来实现可靠连接的技术方案而言,本技术方案能够实现数据包的乱序接收,并且重传的数据量少,因而重传过程资源消耗小,数据的传输效率高,从而克服了可靠连接中数据的传输过程资源消耗大、传输效率低、长尾延迟等问题。并且,由于能够实现数据包的乱序接收,因而本技术方案能够适用于采用多径路由传输数据包的场景,为高性能数据中心网络实现负载均衡、提高数据传输带宽以及降低数据传输延迟提供良好的技术支持。
第四方面,本技术方案在接收到重传请求包或者应答包的情况下都能够将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传,以此实现不可靠连接。因此,相对于丢包时采用静默处理,并丢弃目标请求对应的所有数据包来实现不可靠连接的技术方案而言,本技术方案能够主动分析是否生成用于重传的数据包,因而重传的触发时间短,重传时间短,进而能够有效减少数据传输的完成时间,提高数据的传输效率,还能够确保目标请求被接收。
第五方面,本技术方案基于第一网络设备的远程直接数据存取网卡以及第二网络设备的远程直接数据存取网卡实现,从而提高了数据的传输速度,实现数据传输的高效性。
参见图3,图3是本申请提供的基于远程直接数据存取的第一数据重传装置的结构示意图。如图3所示,基于远程直接数据存取的第一数据重传装置300包括:第一远程直接数据存取网卡301,
第一远程直接数据存取网卡301用于生成多个相互解耦的数据包,
第一远程直接数据存取网卡301还用于将多个相互解耦的数据包向第二装置的远程直接数据存取网卡发送;
在接收到第二装置的远程直接数据存取网卡发送的重传请求包的情况下,第一远程直接数据存取网卡301还用于将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传;
其中,多个相互解耦的数据包之间通过包序列号表示多个相互解耦的数据包之间的顺序关系,重传请求包是基于第二装置的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的比较确定的,当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,当前第一包序位图用于记录多个相互解耦的数据包的接收状态,重传请求包包括当前第一包序列号,当前第二包序位图用于记录多个应答包的接收状态,应答包与对应的数据包具有相同的包序列号,应答包是在对应的数据包已经被第二装置的远程直接数据存取网卡接收到的情况下产生的。
在一些可能的实现方式中,重传请求包是在第二装置的远程直接数据存取网卡用于乱序接收多个相互解耦的数据包的情况下,第二装置的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值产生的。
在一些可能的实现方式中,第二装置的远程直接数据存取网卡用于对包序列号小于或等于当前第一包序列号与第一包序位图的容量之和,并且已经被第二装置的远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,第一远程直接数据存取网卡301还用于:在接收到第二装置的远程直接数据存取网卡发送的应答包的情况下,第一远程直接数据存取网卡301在应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值时,将当前第二包序位图中第一个未被记录的数据包进行重传,其中,当前第二包序列号是当前第二包序位图中第一个未被记录的数据包的包序列号。
在一些可能的实现方式中,多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,第一字段用于区分不同类型的服务,第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,第三字段与第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,第一字段、第二字段、第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
上述基于远程直接数据存取的第一数据重传装置300实现的操作可以参照上述图2所示的实施例中第一网络设备的远程直接数据存取网卡实现的操作,在此不再赘述。
参见图4,图4是本申请提供的基于远程直接数据存取的第二数据重传装置的结构示意图。如图4所示,基于远程直接数据存取的第二数据重传装置400包括:第二远程直接数据存取网卡401,
第二远程直接数据存取网卡401用于乱序接收多个相互解耦的数据包;
第二远程直接数据存取网卡401还用于基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,将重传请求包向第一装置的远程直接数据存取网卡发送;
第二远程直接数据存取网卡401还用于接收当前第二包序位图中第一个未被接收的应答包对应的数据包;
其中,多个相互解耦的数据包之间通过包序列号表示多个相互解耦的数据包之间的顺序关系,多个相互解耦的数据包由第一装置的远程直接数据存取网卡生成,当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,当前第一包序位图用于记录多个相互解耦的数据包的接收状态,重传请求包包括当前第一包序列号,当前第二包序位图中第一个未被接收的应答包对应的数据包由第一装置的远程直接数据存取网卡生成,当前第二包序位图用于记录多个应答包的接收状态,应答包与对应的数据包具有相同的包序列号,应答包是在对应的数据包已经被第二远程直接数据存取网卡401接收到的情况下产生的。
在一些可能的实现方式中,在第二远程直接数据存取网卡401当前处理的数据包的包序列号与当前第一包序位图中当前第一包序列号之间的差值大于或等于第一阈值的情况下,第二远程直接数据存取网卡401还用于生成重传请求包。
在一些可能的实现方式中,第二远程直接数据存取网卡401还用于对包序列号小于或等于当前第一包序列号与第一包序位图的容量之和,并且已经被第二远程直接数据存取网卡401接收到的数据包进行处理。
在一些可能的实现方式中,当前第二包序位图中第一个未被接收的应答包对应的数据包是第一装置的远程直接数据存取网卡在接收到第二远程直接数据存取网卡401发送的重传请求包的情况下生成的,或者,当前第二包序位图中第一个未被接收的应答包对应的数据包是第一装置的远程直接数据存取网卡在接收到第二远程直接数据存取网卡401发送的应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值的情况下生成的,其中,当前第二包序列号是当前第二包序位图中第一个未被接收的应答包的包序列号。
在一些可能的实现方式中,多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,第一字段用于区分不同类型的服务,第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,第三字段与第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,第一字段、第二字段、第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
上述基于远程直接数据存取的第二数据重传装置400实现的操作可以参照上述图2所示的实施例中第二网络设备的远程直接数据存取网卡实现的操作,在此不再赘述。
参见图5,图5是本申请提供的一种基于远程直接数据存取的数据重传系统的结构示意图。基于远程直接数据存取的数据重传系统500可以用于实现前述的基于远程直接数据存取的数据重传方法。如图5所示,基于远程直接数据存取的数据重传系统500包括:第一装置501以及第二装置502,
第二装置502的远程直接数据存取网卡用于乱序接收多个相互解耦的数据包;
第二装置502的远程直接数据存取网卡还用于基于当前处理的数据包的包序列号与当前第一包序列号之间的比较生成重传请求包,将重传请求包向第一装置501的远程直接数据存取网卡发送;
在接收到重传请求包的情况下,第一装置501的远程直接数据存取网卡还用于将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传;
第二装置502的远程直接数据存取网卡还用于接收当前第二包序位图中第一个未被接收的应答包对应的数据包;
其中,多个相互解耦的数据包之间通过包序列号表示多个相互解耦的数据包之间的顺序关系,多个相互解耦的数据包由第一装置501的远程直接数据存取网卡生成,当前第一包序列号是当前第一包序位图中第一个未被记录的数据包的包序列号,当前第一包序位图用于记录多个相互解耦的数据包的接收状态,重传请求包包括当前第一包序列号,当前第二包序位图用于记录多个应答包的接收状态,应答包与对应的数据包具有相同的包序列号,应答包是在对应的数据包已经被第二装置502的远程直接数据存取网卡接收到的情况下产生的。
在一些可能的实现方式中,在第二装置502的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,第二装置502的远程直接数据存取网卡还用于生成重传请求包。
在一些可能的实现方式中,第二装置502的远程直接数据存取网卡还用于对包序列号小于或等于当前第一包序列号与第一包序位图的容量之和,并且已经被第二装置502的远程直接数据存取网卡接收到的数据包进行处理。
在一些可能的实现方式中,第一装置501还用于:
在接收到第二装置502的远程直接数据存取网卡发送的应答包的情况下,第一装置501的远程直接数据存取网卡还用于在应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值时,将当前第二包序位图中第一个未被记录的数据包进行重传,其中,当前第二包序列号是当前第二包序位图中第一个未被记录的数据包的包序列号。
在一些可能的实现方式中,多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,第一字段用于区分不同类型的服务,第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,第三字段与第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,第一字段、第二字段、第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
在一些可能的实现方式中,操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
应当理解,本发明实施例中,“当…时”以及“…时”均指在某种客观情况下终端设备或者接入网设备会做出相应的处理,并非是限定时间,且也不要求终端设备或接入网设备实现时一定要有判断的动作,也不意味着存在其它限定。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (13)
1.一种基于远程直接数据存取的数据重传方法,其特征在于,包括:
第一网络设备的远程直接数据存取网卡生成多个相互解耦的数据包,其中,所述多个相互解耦的数据包之间通过包序列号表示所述多个相互解耦的数据包之间的顺序关系;
所述第一网络设备的远程直接数据存取网卡将所述多个相互解耦的数据包向第二网络设备的远程直接数据存取网卡发送;
在接收到所述第二网络设备的远程直接数据存取网卡发送的重传请求包的情况下,所述第一网络设备的远程直接数据存取网卡将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传,其中,所述重传请求包是在所述第二网络设备的远程直接数据存取网卡乱序接收所述多个相互解耦的数据包的情况下,所述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与所述当前第一包序列号之间的差值大于或等于第一阈值产生的,所述当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,所述当前第一包序位图用于记录多个相互解耦的数据包的接收状态,所述重传请求包包括所述当前第一包序列号,所述当前第二包序位图用于记录多个应答包的接收状态,所述应答包与对应的数据包具有相同的包序列号,所述应答包是在对应的数据包已经被所述第二网络设备的远程直接数据存取网卡接收到的情况下产生的。
2.根据权利要求1所述的方法,其特征在于,所述第二网络设备的远程直接数据存取网卡用于对包序列号小于或等于所述当前第一包序列号与第一包序位图的容量之和,并且已经被所述第二网络设备的远程直接数据存取网卡接收到的数据包进行处理。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在接收到所述第二网络设备的远程直接数据存取网卡发送的应答包的情况下,所述第一网络设备的远程直接数据存取网卡在所述应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值时,将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传,其中,所述当前第二包序列号是所述当前第二包序位图中第一个未被接收的应答包的包序列号。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,所述第一字段用于区分不同类型的服务,所述第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,所述第三字段与所述第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,所述第一字段、所述第二字段、所述第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
5.根据权利要求4所述的方法,其特征在于,所述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
6.一种基于远程直接数据存取的数据重传方法,其特征在于,包括:
第二网络设备的远程直接数据存取网卡乱序接收多个相互解耦的数据包,其中,所述多个相互解耦的数据包之间通过包序列号表示所述多个相互解耦的数据包之间的顺序关系,所述多个相互解耦的数据包由第一网络设备的远程直接数据存取网卡生成;
在所述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,所述第二网络设备的远程直接数据存取网卡生成重传请求包,将所述重传请求包向所述第一网络设备的远程直接数据存取网卡发送,其中,所述当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,所述当前第一包序位图用于记录多个相互解耦的数据包的接收状态,所述重传请求包包括所述当前第一包序列号;
所述第二网络设备的远程直接数据存取网卡接收当前第二包序位图中第一个未被接收的应答包对应的数据包,其中,所述当前第二包序位图中第一个未被接收的应答包对应的数据包由所述第一网络设备的远程直接数据存取网卡生成,所述当前第二包序位图用于记录多个应答包的接收状态,所述应答包与对应的数据包具有相同的包序列号,所述应答包是在对应的数据包已经被所述第二网络设备的远程直接数据存取网卡接收到的情况下产生的。
7.根据权利要求6所述的方法,其特征在于,所述第二网络设备的远程直接数据存取网卡用于对包序列号小于或等于所述当前第一包序列号与第一包序位图的容量之和,并且已经被所述第二网络设备的远程直接数据存取网卡接收到的数据包进行处理。
8.根据权利要求7所述的方法,其特征在于,所述当前第二包序位图中第一个未被接收的应答包对应的数据包由所述第一网络设备的远程直接数据存取网卡生成,包括:
所述当前第二包序位图中第一个未被接收的应答包对应的数据包是所述第一网络设备的远程直接数据存取网卡在接收到所述第二网络设备的远程直接数据存取网卡发送的重传请求包的情况下生成的;
或者,所述当前第二包序位图中第一个未被接收的应答包对应的数据包是所述第一网络设备的远程直接数据存取网卡在接收到所述第二网络设备的远程直接数据存取网卡发送的应答包的包序列号与当前第二包序列号之间的差值大于或等于第二阈值的情况下生成的,其中,所述当前第二包序列号是所述当前第二包序位图中第一个未被接收的应答包的包序列号。
9.根据权利要求6至8任一项所述的方法,其特征在于,所述多个相互解耦的数据包中的每个数据包的包头包括第一字段、第二字段以及第三字段,其中,所述第一字段用于区分不同类型的服务,所述第二字段用于区分不同类型的操作,或者,不同类型的操作以及数据包在对应消息中的位置,所述第三字段与所述第二字段中的操作之间具有一一对应的关系,用于提供独立完成对应操作的信息,所述第一字段、所述第二字段、所述第三字段定义在基于融合以太网的远程直接数据存取的无限带宽技术的头部字段中。
10.根据权利要求9所述的方法,其特征在于,所述操作的类型包括发送操作、读操作、写操作、原子操作、接收操作。
11.一种基于远程直接数据存取的第一数据重传装置,其特征在于,包括:第一远程直接数据存取网卡,
所述第一远程直接数据存取网卡,用于生成多个相互解耦的数据包,其中,所述多个相互解耦的数据包之间通过包序列号表示所述多个相互解耦的数据包之间的顺序关系;
所述第一远程直接数据存取网卡,还用于将所述多个相互解耦的数据包向第二装置的远程直接数据存取网卡发送;
在接收到所述第二装置的远程直接数据存取网卡发送的重传请求包的情况下,所述第一远程直接数据存取网卡,还用于将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传,其中,所述重传请求包是在第二网络设备的远程直接数据存取网卡乱序接收所述多个相互解耦的数据包的情况下,所述第二网络设备的远程直接数据存取网卡当前处理的数据包的包序列号与所述当前第一包序列号之间的差值大于或等于第一阈值产生的,所述当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,所述当前第一包序位图用于记录多个相互解耦的数据包的接收状态,所述重传请求包包括所述当前第一包序列号,所述当前第二包序位图用于记录多个应答包的接收状态,所述应答包与对应的数据包具有相同的包序列号,所述应答包是在对应的数据包已经被所述第二装置的远程直接数据存取网卡接收到的情况下产生的。
12.一种基于远程直接数据存取的第二数据重传装置,其特征在于,包括:第二远程直接数据存取网卡,
所述第二远程直接数据存取网卡,用于乱序接收多个相互解耦的数据包,其中,所述多个相互解耦的数据包之间通过包序列号表示所述多个相互解耦的数据包之间的顺序关系,所述多个相互解耦的数据包由第一装置的远程直接数据存取网卡生成;
所述第二远程直接数据存取网卡,还用于在当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,生成重传请求包,将所述重传请求包向所述第一装置的远程直接数据存取网卡发送,其中,所述当前第一包序列号是当前第一包序位图中第一个未被接收的数据包的包序列号,所述当前第一包序位图用于记录多个相互解耦的数据包的接收状态,所述重传请求包包括所述当前第一包序列号;
所述第二远程直接数据存取网卡,还用于接收当前第二包序位图中第一个未被接收的应答包对应的数据包,其中,所述当前第二包序位图中第一个未被接收的应答包对应的数据包由所述第一装置的远程直接数据存取网卡生成,所述当前第二包序位图用于记录多个应答包的接收状态,所述应答包与对应的数据包具有相同的包序列号,所述应答包是在对应的数据包已经被所述第二远程直接数据存取网卡接收到的情况下产生的。
13.一种基于远程直接数据存取的数据重传系统,其特征在于,包括:第一装置以及第二装置,
所述第二装置的远程直接数据存取网卡,用于乱序接收多个相互解耦的数据包,其中,所述多个相互解耦的数据包之间通过包序列号表示所述多个相互解耦的数据包之间的顺序关系,所述多个相互解耦的数据包由所述第一装置的远程直接数据存取网卡生成;
所述第二装置的远程直接数据存取网卡,还用于在当前处理的数据包的包序列号与当前第一包序列号之间的差值大于或等于第一阈值的情况下,生成重传请求包,将所述重传请求包向所述第一装置的远程直接数据存取网卡发送,其中,所述当前第一包序列号是当前第一包序位图中第一个未被记录的数据包的包序列号,所述当前第一包序位图用于记录多个相互解耦的数据包的接收状态,所述重传请求包包括所述当前第一包序列号;
在接收到所述重传请求包的情况下,所述第一装置的远程直接数据存取网卡,用于将当前第二包序位图中第一个未被接收的应答包对应的数据包进行重传,其中,所述当前第二包序位图用于记录多个应答包的接收状态,所述应答包与对应的数据包具有相同的包序列号,所述应答包是在对应的数据包已经被所述第二装置的远程直接数据存取网卡接收到的情况下产生的;
所述第二装置的远程直接数据存取网卡,还用于接收所述当前第二包序位图中第一个未被接收的应答包对应的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311185983.6A CN116915370B (zh) | 2023-09-14 | 2023-09-14 | 基于远程直接数据存取的数据重传方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311185983.6A CN116915370B (zh) | 2023-09-14 | 2023-09-14 | 基于远程直接数据存取的数据重传方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116915370A CN116915370A (zh) | 2023-10-20 |
CN116915370B true CN116915370B (zh) | 2023-12-19 |
Family
ID=88360744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311185983.6A Active CN116915370B (zh) | 2023-09-14 | 2023-09-14 | 基于远程直接数据存取的数据重传方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116915370B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111711566A (zh) * | 2020-07-03 | 2020-09-25 | 西安电子科技大学 | 多路径路由场景下的接收端乱序重排方法 |
CN113992306A (zh) * | 2021-09-26 | 2022-01-28 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240939B2 (en) * | 2013-10-22 | 2016-01-19 | Cisco Technology, Inc. | Detecting packet loss and retransmission in a network environment |
-
2023
- 2023-09-14 CN CN202311185983.6A patent/CN116915370B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111711566A (zh) * | 2020-07-03 | 2020-09-25 | 西安电子科技大学 | 多路径路由场景下的接收端乱序重排方法 |
CN113992306A (zh) * | 2021-09-26 | 2022-01-28 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及系统 |
Non-Patent Citations (1)
Title |
---|
"智融标识网络中基于乱序优化的多径多协议传输机制研究";靳璐;《中国优秀硕士学位论文全文数据库信息科技辑》;I136-156 * |
Also Published As
Publication number | Publication date |
---|---|
CN116915370A (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11956154B2 (en) | System for avoiding layer 2 network congestion | |
CN115152193A (zh) | 针对ip路由数据中心网络使用自适应路由和基于拥塞提示的节流改进端到端拥塞反应 | |
CN113572582B (zh) | 数据发送、重传控制方法及系统、存储介质及电子设备 | |
EP1994695B1 (en) | Method and device for transmitting data packets | |
WO2022259452A1 (ja) | 中間装置、通信方法、およびプログラム | |
CN116915370B (zh) | 基于远程直接数据存取的数据重传方法、装置及系统 | |
JP2007259374A (ja) | ネットワーク送受信装置 | |
CN114827300A (zh) | 硬件保障的数据可靠传输系统、控制方法、设备及终端 | |
CN115834002B (zh) | 高速传输系统及方法 | |
CN116366544B (zh) | 地址解析协议的删除方法及装置 | |
KR102536942B1 (ko) | Toe 기반 네트워크 인터페이스 카드 및 네트워크 인터페이스 방법 | |
US20240333437A1 (en) | Direct Access To Storage Device Via Switch Data Plane | |
WO2009074840A2 (en) | Separately transmitting part of protocol information | |
CN118714082A (zh) | 一种基于报文镜像的拥塞通告方法及芯片 | |
CN117221225A (zh) | 一种网络拥塞通知方法、装置及存储介质 | |
CN117459460A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |