CN117424849A - 数据传输方法、装置、计算机设备及可读介质 - Google Patents

数据传输方法、装置、计算机设备及可读介质 Download PDF

Info

Publication number
CN117424849A
CN117424849A CN202210883874.0A CN202210883874A CN117424849A CN 117424849 A CN117424849 A CN 117424849A CN 202210883874 A CN202210883874 A CN 202210883874A CN 117424849 A CN117424849 A CN 117424849A
Authority
CN
China
Prior art keywords
data
address
transmission
network device
retransmission
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
Application number
CN202210883874.0A
Other languages
English (en)
Inventor
秦振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zte Intelligent Technology Nanjing Co ltd
Original Assignee
Zte Intelligent Technology Nanjing Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zte Intelligent Technology Nanjing Co ltd filed Critical Zte Intelligent Technology Nanjing Co ltd
Priority to CN202210883874.0A priority Critical patent/CN117424849A/zh
Priority to PCT/CN2023/108602 priority patent/WO2024022243A1/zh
Publication of CN117424849A publication Critical patent/CN117424849A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供一种数据传输方法,应用与第一网络设备,包括:根据数据的存储顺序从内存中读取数据,并在本地存储数据;为数据分配地址,地址表示数据的读取顺序;将数据中的每个分配到至少两个传输路径中的一个;针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址,地址用于使第二网络设备根据地址将对应的数据写入内存。本公开实施例无需进行数据保序重组,避免数据保序重组对计算资源和存储资源的巨大消耗,能够无代价的实现多路径数据传输,支持数据中心流量工程,减少网络拥塞,降低网络时延,从而提升网络带宽。本公开还提供一种网络设备、计算机设备和可读介质。

Description

数据传输方法、装置、计算机设备及可读介质
技术领域
本公开涉及通信技术领域,具体涉及一种数据传输方法、装置、计算机设备及可读介质。
背景技术
RDMA(Remote Direct Memory Access,远程直接数据存取),主要是RoCEv2(融合以太网RDMA协议v2版本),是目前在高性能计算(High Performance Computing,HPC)领域和大型数据中心当中,广泛使用的传输协议。由于具有零拷贝、内核Bypass(旁路)、CPU卸载等优点,相比于传统以太网,RDMA技术做到了更高带宽和更低时延。
数据中心流量工程提出了多路径数据传输的需求。宏观的数据中心的流量具有明显的“大小流”特征,流量高并发,流量突发。多路径数据传输具有以下优点:带宽聚合,提高吞吐量;降低突发;减少抖动,网络链路故障时快速恢复,期间一个路径的阻塞丢包影响变小、在原传输路径不可用时对重传报文进行重新路由而无需等待全网路由更新收敛。同时,数据中心也提供了多路径数据传输的实施条件:相对于因特网这类复杂多变且不完全可控的异构网络,数据中心网络是一个单一自治域下的同构网络环境。端主机及其使用的协议、网络设备及配置等都相对可控可预测;同构性体现在固定有规律的拓扑如Fat-tree(胖树)、VL2,相对一致的缓存大小和链路带宽等。
但是,现有RDMA RoCEv2不支持多路径数据传输,其根本原因在于使用多路径传输数据会导致接收端接收的数据包是乱序,且乱序成为常态。传统的保序方案,需要接收端缓存排序再写入数据,耗费计算资源和存储资源,并且时延较大。随着网络IO速度呈10G、100G级数提升,线速保序变得难以实现。
发明内容
本公开提供一种数据传输方法、装置、计算机设备及可读介质。
第一方面,本公开实施例提供一种数据传输方法,应用于第一网络设备,所述方法包括:
根据数据的存储顺序从内存中读取数据,并在本地存储所述数据;
为所述数据分配地址,所述地址表示所述数据的读取顺序;
将所述数据中的每个分配到至少两个传输路径中的一个;
针对每个所述传输路径,通过第一数据报文向第二网络设备发送分配到所述传输路径中的数据和所述数据的地址,所述地址用于使所述第二网络设备根据所述地址将对应的数据写入内存。
又一方面,本公开实施例还提供一种数据传输方法,应用于第二网络设备,所述方法包括:
通过至少两个传输路径接收第一网络设备发送的第一数据报文;
获取所述第一数据报文中携带的数据和所述数据的地址;所述数据由所述第一网络设备根据数据的存储顺序从内存中读取,所述地址表示所述数据的读取顺序;
根据所述地址将对应的数据写入内存。
又一方面,本公开实施例还提供一种网络设备,所述网络设备为第一网络设备,包括数据读取模块、地址分配模块、路径分配模块和数据传输模块,所述数据读取模块用于,根据数据的存储顺序从内存中读取数据,并在本地存储所述数据;
所述地址分配模块用于,为所述数据分配地址,所述地址表示所述数据的读取顺序;
所述路径分配模块用于,将所述数据中的每个分配到至少两个传输路径中的一个;
所述数据传输模块用于,针对每个所述传输路径,通过第一数据报文向第二网络设备发送分配到所述传输路径中的数据和所述数据的地址,所述地址用于使所述第二网络设备根据所述地址将对应的数据写入内存。
又一方面,本公开实施例还提供一种网络设备,所述网络设备为第二网络设备,包括数据传输模块、数据获取模块和数据写入模块,所述数据传输模块用于,通过至少两个传输路径接收第一网络设备发送的第一数据报文;
所述数据获取模块用于,获取所述第一数据报文中携带的数据和所述数据的地址;所述数据由所述第一网络设备根据数据的存储顺序从内存中读取,所述地址表示所述数据的读取顺序;
所述数据写入模块用于,根据所述地址将对应的数据写入内存。
又一方面,本公开实施例还提供一种计算机设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前所述的数据传输方法。
又一方面,本公开实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被执行时实现如前所述的数据传输方法。
本公开实施例提供的数据传输方法,应用于第一网络设备,包括:根据数据的存储顺序从内存中读取数据,并在本地存储数据;为数据分配地址,地址表示数据的读取顺序;将数据中的每个分配到至少两个传输路径中的一个;针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址,地址用于使第二网络设备根据地址将对应的数据写入内存。本公开实施例无需进行数据保序重组,避免数据保序重组对计算资源和存储资源的巨大消耗,能够无代价的实现多路径数据传输,支持数据中心流量工程,减少网络拥塞,降低网络时延,从而提升网络带宽。
附图说明
图1为传统的数据传输过程示意图;
图2为本公开实施例提供的数据传输系统架构示意图;
图3为本公开实施例提供的以第一网络设备为执行主体的数据传输流程示意图一;
图4为本公开实施例提供的多路径数据传输示意图;
图5为本公开实施例提供的数据报文的帧格式示意图;
图6为本公开实施例提供的以第一网络设备为执行主体的数据传输流程示意图二;
图7为本公开实施例提供的以第一网络设备为执行主体的数据传输流程示意图三;
图8为本公开实施例提供的以第二网络设备为执行主体的数据传输流程示意图;
图9为本公开实施例提供的重传数据的流程示意图;
图10为本公开一具体实例中校验算法的示意图;
图11为本公开一具体实例中利用多路径数据传输实现纠错编码的示意图;
图12为本公开实施例提供的第一网络设备的结构示意图一;
图13为本公开实施例提供的第一网络设备的结构示意图二;
图14为本公开实施例提供的第一网络设备的结构示意图三;
图15为本公开实施例提供的第二网络设备的结构示意图一;
图16为本公开实施例提供的第二网络设备的结构示意图二。
具体实施方式
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其群组。
本文所述实施例可借助本公开的理想示意图而参考平面图和/或截面图进行描述。因此,可根据制造技术和/或容限来修改示例图示。因此,实施例不限于附图中所示的实施例,而是包括基于制造工艺而形成的配置的修改。因此,附图中例示的区具有示意性属性,并且图中所示区的形状例示了元件的区的具体形状,但并不旨在是限制性的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
多路径技术存在明确需求和作用,但实际情况是多路径并没有被广泛使用,比如TCP(Transmission Control Protocol,传输控制协议)中的多路径MPTCP(MultiPath TCP,多路传输控制协议)。多路径技术未被广泛使用的原因不在于数据多路径喷射发送的实现。在数据中心,具有同质网络、等价多路由的条件下,通过修改传输流中的端口号,就可以依靠路由器交换机的ECMP(Equal Cost Multi-path,等价多路径路由)协议,实现将数据流分散到多个传输路径,不存在难度和瓶颈。多路径技术未被广泛使用的根本原因在于使用多个传输路径会引入乱序的问题。由于使用多条传输路径传输数据,每条传输路径时延不同,而且某条传输路径可能发生拥塞而导致时延增大,所以会造成接收端接收的数据包乱序。这在单路径数据传输中会是小概率事件,而在多路径情况下,乱序成为了常态。
传统的数据保序方案,是根据每个报文中的PSN(Package Sequence Number,包序列号)进行存储-计算-排序等一系列处理。如图1所示,传统的基于RDMA的数据传输过程如下:接收端的RDMA NIC(Network Interface Controller,网络接口控制器,即网卡)接收到报文,将报文缓存在本网卡的缓存区,然后进行排序。如果收到N号报文,然后是N+2号报文,N+3号报文,再是N+1号报文,这样就发生了乱序,网卡要进行报文缓存并重新排序,保证通过DMA(Direct Memory Access,直接数据存取)方式将这些数据写入Host memory(主机内存)的QP(队列对)缓存中的数据是按PSN大小排序的。这里的数据地址(Addr)是随机的、乱序的,是发送端CPU将数据写到接收端内存中的某个地址,是发送端与接收端的应用层之间约定的地址。通过上述数据传输过程可以看出,要实现数据保序,需要接收端网卡缓存数据并对数据排序后再写入内存,耗费计算资源和存储资源,并且因为等待导致数据传输时延增大。
为解决上述问题,本公开实施例提供一种数据传输方法,所述方法应用的系统架构如图2所示,包括第一网络设备和第二网络设备,第一网络设备为数据发送端设备,第二网络设备为数据接收端设备,第一网络设备和第二网络设备可以是计算节点服务器。第一网络设备通过RDMA网卡接入网络互联到远程一个第二网络设备,按OSI(Open SystemInterconnection Reference Model,开放式系统互联通信参考模型)分层从1-4层协议传输:物理层--数据链路层(Ethernet)--网络层--传输层(RDMA),本公开实施例应用在传输层。
基于RDMA的数据传输为端到端的传输,发送端(即第一网络设备)和接收端(即第二网络设备)包括CPU处理器、DDR(双倍速率同步动态随机存储器)内存、RDMA网卡,经过以太网线路(电缆或光缆)连接到网络中。在RDMA协议的工作过程中,需要占用DDR内存的一片空间,建立环形队列缓存数据,发送端的环形队列和接收端的环形队列构成一个QP对。发送端CPU是根据写指针向环形队列写入数据,发送端的RDMA网卡根据读指针从环形队列读取数据。数据通过以太网报文方式封装并在网络中传输。接收端的RDMA网卡根据写指针向环形队列写入数据。接收端CPU根据读指针从环形队列读取数据,从而完成数据从发送端到接收端的传输。
本公开实施例的数据传输方法,应用与第一网络设备,结合图3和图4所示,所述方法包括以下步骤:
步骤S11,根据数据的存储顺序从内存中读取数据,并在本地存储数据。
第一网络设备的APP应用程序向内存(Memory)的环形队列中按照写指针写入需要传输的数据,每写完一个地址,写指针加1。在本步骤中,第一网络设备的网卡(RDMA NIC)利用读指针根据数据的存储顺序,通过DMA方式从内存中读取数据,并将读取到的数据存储在RDMA网卡的缓存中。
步骤S12,为数据分配地址,地址表示数据的读取顺序。
在本步骤中,第一网络设备的RDMA网卡进行RDMA协议处理,为存储的数据分别分配地址,数据的地址能够表示数据的读取顺序,数据的读取顺序也就是数据在内存中的存储顺序。
步骤S13,将数据中的每个分配到至少两个传输路径中的一个。
本公开实施例应用于多路径传输场景,即通过多个传输路径传输数据。在本步骤中,第一网络设备的RDMA网卡将已分配地址的数据分配给多个传输路径中的一个传输路径,以便通过该传输路径传输该数据及该数据的地址。
步骤S14,针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址,地址用于使第二网络设备根据地址将对应的数据写入内存。
在本步骤中,第一网络设备的RDMA网卡进行协议报头封装,生成携带有数据及数据的地址的第一数据报文。第一数据报文的帧格式如图5所示,由外到内、由下层到上层,分别为以太网首部、IP(Internet Protocol,网际互连协议)首部、UDP(User DatagramProtocol,用户数据报协议)首部、RDMA传输协议头、应用数据、以太网尾部等字段。其中,UDP首部字段携带UDP端口号,图4示出了4个传输路径,则在UDP首部字段填写4个不同的UDP端口号;IP首部字段可以包括IP地址、以太网帧字段;RDMA传输协议头字段包括3Byte(即24bit位)的PSN和8Byte(即64bit位)的地址,在RDMA传输协议中,发送端每次发送一个数据报文,PSN字段的数值就加1,依次递增。第一网络设备的RDMA网卡按照上述帧格式进行报文封装后,将封装后的第一数据报文通过网络发送给第二网络设备。
在数据传输过程中,由于UDP端口号不同,在交换机进行ECMP分发路由时,会将数据分配到不同的传输路径,从而实现多路径传输,最终到达接收端。由于传输路径不同,报文到达接收端的第二网络设备时是乱序的。第二网络设备可以根据地址将相应的数据写入内存,从而实现数据保序。
本公开实施例提供的数据传输方法,应用于第一网络设备,包括:根据数据的存储顺序从内存中读取数据,并在本地存储数据;为数据分配地址,地址表示数据的读取顺序;将数据中的每个分配到至少两个传输路径中的一个;针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址,地址用于使第二网络设备根据地址将对应的数据写入内存。本公开实施例无需进行数据保序重组,避免数据保序重组对计算资源和存储资源的巨大消耗,能够无代价的实现多路径数据传输,支持数据中心流量工程,减少网络拥塞,降低网络时延,从而提升网络带宽。
在一些实施例中,所述为数据分配地址(即步骤S12),包括以下步骤:为数据分配连续的地址。为数据分配连续的地址,便于接收端(第二网络设备)在内存中存储数据,提高数据读写效率。
在一些实施例中,地址为从0开始的虚拟地址,这样,发送端(即第一网络设备)和接收端(即第二网络设备)之间不需要进行地址协商,可以减少网络信令交互,加快通信建链过程。
在一些实施例中,在地址从0开始的情况下,按照数据由先至后的读取顺序,各数据的地址递增,也就是说,第一网络设备的RDMA网卡先从内存中读取到数据先进行地址分配,为其分配的地址较小,第一网络设备的RDMA网卡后从内存中读取到数据后进行地址分配,为其分配的地址较大。如图4所示,4个数据由先至后的读取顺序为:PSN1<0>、PSN2<0>、PSN3<0>、PSN1<1>,相应的,为这4个数据分配的地址分别为:Addr<0>、Addr<1>、Addr<2>、Addr<3>,即各数据的地址递增。
在一些实施例中,地址为环形队列地址,也就是说,为数据分配的地址为环形地址,地址绕圈刷新,绕圈后重新从起始地址开始排序。该环形队列地址是第二网络设备内存的环形队列地址,第二网络设备根据该环形队列地址将数据写入内存的环形队列。在本公开实施例中,第一网络设备的内存也利用环形队列存储数据,是从内存的环形队列中读取数据存储在RDMA网卡。
在传统的基于RDMA的数据传输过程中,在发生一个报文丢失或报文校验出错时,例如接收端在先收到PSN=n的报文,在后收到PSN=n+2及之后的报文,那么接收端会等待PSN=n+1的报文达到后,再依次向内存写入数据,以保证数据的顺序性。如果在一个时间窗之内没有收到PSN=n+1的报文,那么会丢弃之前接收到的PSN=n+2报文及后续报文,并通知发送端从PSN=n+1的报文开始重新传输。而由于RDMA网卡的存储空间非常小,一般是*MB级,缓存时间窗较小,因此容易发生大量报文重传,降低了带宽利用率。
为了解决报文重传的上述问题,在一些实施例中,如图6所示,在针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址(即步骤S14)之后,所述数据传输方法还包括以下步骤:
步骤S15,在接收到第二网络设备发送的重传请求报文的情况下,获取重传请求报文中携带的重传数据的地址。
步骤S16,根据重传数据的地址确定重传数据。
由于在步骤12中已经为读取到的数据分配过地址,因此在本步骤中,获取到重传数据的地址之后,即可确定出该重传地址对应的数据,该数据即为重传数据,即需要重新向第二网络设备发送的数据。
步骤S17,通过第二数据报文向第二网络设备发送重传数据和重传数据的地址。
通过步骤S15-S17可以看出,本公开实施例针对特定的数据,例如丢失的数据、发生校验错误的数据,进行有针对性的重传,即选择性精准重传数据,可以提高带宽利用率。而且,在发生数据接收异常的情况下,接收端不用在当前时间窗内等待接收之前未接收到的报文,可以进一步降低网络时延。
在一些实施例中,如图7所示,在将数据中的每个分配到至少两个传输路径中的一个(即步骤13)之后、针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址(即步骤14)之前,所述数据传输方法还包括以下步骤:
步骤S14’,针对每个传输路径,为分配到传输路径的数据分配PSN,以形成传输路径的PSN序列;其中,在一个传输路径的PSN序列中,按照PSN由先至后的分配顺序,PSN递增。
针对每个传输路径单独维护一个PSN序列,不同传输路径的PSN序列相互独立。在一个PSN序列中,先分配的PSN较小,后分配的PSN较大。如图4所示,共3个传输路径:path1、path2和path3,3个传输路径对应的PSN序列分别为:PSN1<>、PSN2<>、PSN3<>,每个PSN序列由多个PSN组成,每个PSN对应一个在相应传输路径上传输的数据。如图4所示,共4个数据:PSN1<0>、PSN2<0>、PSN3<0>、PSN1<1>,其中,在path1上传输PSN1<0>和PSN1<1>,在path2上传输PSN2<0>,在path3上传输PSN3<0>。为上述4个数据分配的地址为:Addr<0>、Addr<1>、Addr<2>、Addr<3>。为上述4个数据分配传输路径:Addr<0>在path1上传输,对应PSN序列PSN1<>;Addr<1>在path2上传输,对应PSN序列PSN2<>;Addr<2>在path3上传输,对应PSN序列PSN3<>;Addr<3>在path1上传输,对应PSN序列PSN1<>。针对每个传输路径,为其PSN序列中的数据分配PSN,假设PSN均是从0开始,则为Addr<0>对应的数据分配的PSN为0,得到PSN1<0>;为Addr<1>对应的数据分配的PSN为0,得到PSN2<0>;为Addr<2>对应的数据分配的PSN为0,得到PSN3<0>;为Addr<3>对应的数据分配的PSN为1,得到PSN1<1>。
在本公开实施例中,数据的传输形式可以是块数据传输,也可以是字节流传输。
块数据传输形式,可以由应用(APP)对地址进行顺序性保证,传输层RDMA去掉PSN计数保序的操作,即甄别应用数据的特征,对块数据进行传输。需要说明的是,块数据传输与本公开实施例数据传输方案中根据地址存储数据实现保序并不冲突,即在实现数据传输过程中,数据可以采用块数据的形式进行传输。
字节流传输形式,数据是连续的有先后顺序的字符串,非结构化、无地址位置信息。报文中的地址定义为QP缓存队列的地址。第二网络设备的RDMA网卡对地址进行映射,提供给对端看到的是从0开始、地址连续的内存空间。第一网络设备发送的报文携带有地址,该地址按照顺序递增。第二网络设备从多个传输路径乱序接收到报文,根据报文内携带的地址直接向内存写入数据,发现丢包则将缺失报文的地址反馈给第一网络设备,第一网络设备只重传该地址的报文,实现选择性精准重传数据。需要说明的是,在基于RDMA的数据多传输路径场景下,若采用字节流传输形式,要实现保序,就必须采用本公开实施例的上述方案。地址的连续性可以由应用(APP)进行保证,或者由RDMA NIC保证,可以根据应用数据的特征选择哪种实现方式。
本公开实施例还提供一种数据传输方法,所述方法应用第二网络设备,如图8所示,所述方法包括以下步骤:
步骤S21,通过至少两个传输路径接收第一网络设备发送的第一数据报文。
在本步骤中,第二网络设备的RDMA网卡通过网络分别利用多个传输路径接收第一网络设备发送的第一数据报文,接收到的报文是乱序的。
步骤S22,获取第一数据报文中携带的数据和数据的地址;数据由第一网络设备根据数据的存储顺序从内存中读取,地址表示数据的读取顺序。
在本步骤中,第二网络设备的RDMA网卡对第一数据报文进行协议报头解封装,解除以太网帧字段,解除IP字段,恢复UDP端口号(即协商阶段确定的应用指定的端口号)等一系列操作,获取其中携带的数据及该数据的地址。
步骤S23,根据地址将对应的数据写入内存。
在本步骤中,第二网络设备的RDMA网卡进行RDMA协议处理,通过DMA方式向内存的环形队列中写入数据,写指针指示的就是数据的地址。第二网络设备不需要等待,哪个第一数据报文到达,就获取其中携带的地址,并根据该地址向内存中写入相应的数据,也就是说,数据并不是顺序写入内存。
本公开实施例提供的数据传输方法,应用于第二网络设备,包括:通过至少两个传输路径接收第一网络设备发送的第一数据报文;获取第一数据报文中携带的数据和数据的地址;数据由第一网络设备根据数据的存储顺序从内存中读取,地址表示数据的读取顺序;根据地址将对应的数据写入内存。本公开实施例无需进行数据保序重组,避免数据保序重组对计算资源和存储资源的巨大消耗,能够无代价的实现多路径数据传输,支持数据中心流量工程,减少网络拥塞,降低网络时延,从而提升网络带宽。
在一些实施例中,地址为连续地址。
在一些实施例中,地址为从0开始的虚拟地址,按照第一网络设备从内存中对数据由先至后的读取顺序,各数据的地址递增。
在一些实施例中,所述根据地址将对应的数据写入内存(即步骤S23),包括以下步骤:根据地址将对应的数据写入内存的环形队列。由于第一网络设备为数据分配的地址就是环形队列的地址,因此,在本步骤中,可以直接根据该地址向内存的环形队列中写入数据。
需要说明的是,在将数据写入内存之后,所述数据传输方法还包括以下步骤:APP应用程序根据读指针从内存的环形队列中读取数据,每读完一个地址的数据,读指针加1,即数据读取是按照存储顺序读取。
在一些实施例中,如图9所示,在通过至少两个传输路径接收第一网络设备发送的第一数据报文(即步骤S21)之后,所述数据传输方法还包括以下步骤:
步骤S31,在第一数据报文接收异常的情况下,确定重传数据的地址。
第一数据报文接收异常包括:在预设时长内未接收到第一数据报文,或者,接收到的第一数据报文校验错误。
在本步骤中,第二网络设备的RDMA网卡在判断出第一数据报文接收异常时,确定传输异常的数据及其地址,该传输异常的数据即为重传数据。如果某个地址的第一数据报文超时未收到,或者,虽然收到了第一数据报文,但在三层协议处理IP报文CRC(CyclicRedundancy Check,循环冗余校验)时出错,该第一数据报文被丢弃,说明第一数据报文接收异常,则该第一数据报文中携带的数据需要重传,该数据即为重传数据。
步骤S32,向第一网络设备发送携带有重传数据的地址的重传请求报文。
步骤S33,接收第一网络设备发送的第二数据报文,获取第二数据报文中携带的重传数据和重传数据的地址。
第二数据报文是第一网络设备根据重传数据的地址确定对应的数据之后发送的。
步骤S34,根据重传数据的地址将重传数据写入内存。
在本步骤中,第二网络设备的RDMA网卡进行RDMA协议处理,通过DMA方式向内存的环形队列中写入重传数据。
通过步骤S31-S34可以看出,本公开实施例针对特定的数据,例如丢失的数据、发生校验错误的数据,进行有针对性的重传,即选择性精准重传数据,可以提高带宽利用率。而且,在发生数据接收异常的情况下,接收端不用在当前时间窗内等待接收之前未接收到的报文,可以进一步降低网络时延。
RDMA是内存操作的传输协议,是向给定的地址写入/读出数据。本公开实施例基于这个特征,通过设计地址具有顺序性实现多个传输路径的数据报文乱序接收,并依据地址向内存写入数据,实现保序,避免了现有方案的依靠PSN计算重新排序对计算资源和存储资源的极大依赖和消耗。本公开实施例利用RDMA数据报文中携带数据地址的特点,利用地址的连续性实现保序。需要说明的是,TCP、QUIC(Quick UDP Internet Connection,基于UDP的低时延的互联网传输层协议)等传输协议,传输的是不带地址的无意义的字符串流,因此无法应用本公开实施例的方案。
RDMA传输协议支持多路径的数据传输,本公开实施例在使用RDMA传输协议的场景都可能得到应用,尤其适用于需要大带宽业务、或者存在流量突发的业务、或者需要高可靠性的业务的场景。本公开实施例基于多传输路径实现,为很多其它技术提供了基础,例如,采用多路径传输的实时通信AR/VR/XR视频通信业务,并且结合使用网络纠错码。
为了清楚描述本公开实施例的方案,以下结合图10和图11,通过采用多传输路径传输视频数据并进行纠错编码场景下的一具体实例,对数据传输过程进行详细说明。
由于视频数据通量大、实时性强,所以运用多路径技术,可以起到带宽聚合、避免拥塞的作用。结合网络纠错编码,可以提高可靠性,一路数据传输出错,可以恢复,不需要重传,进一步保证实时性。
现有的网络纠错编码,以最常见的RTP(Real-time Transport Protocol,实时传输协议)中使用UlpFEC(Uneven Level Protection Forward Error Correction,不均等保护-前向纠错)为例,需要前后关联计算。将一组M个报文进行异或运算,生成N(N就是FEC的冗余度)个FEC报文,打包出去。这组报文任意丢弃中的N个,都可以通过(M-N)个报文+FEC冗余包恢复回来。如图10所示,D为媒体包,其数量M=4,R为冗余包,图10所示的冗余度为2,即N=2。
现有的网络纠错编码存在以下问题:在网络传输中一个路径上某个交换机拥塞、路由故障愈合,这些时间很长一般为“秒”级单位。那么数据报文出现丢包往往不是一个而是一段时间内的包都有问题,以10GE线速、每个报文1KB来计算,1s对应着100万个报文。而纠错编码是对前后数据报文关联做异或运算,冗余度最多也是K级别长度,相差3个量级。所以,纠错编码往往失效,这也是网络纠错编码没有被广泛采用的主要原因。
而多传输路径传输数据为纠错编码创造了条件。若某一个传输路径出现故障,出现一连串报文错误和丢失,其结果与单路径传输一样。但通过阵列编码,将报文条带化后分配到不同的传输路径,某一个传输路径的数据可由其他传输路径的数据校验恢复,一个传输路径上的报文连续错误,不会导致数据传输失败。而且,编码不需要前后关联的复杂计算,只需要简单的编码方法,如RAID 5(分布式奇偶校验的独立磁盘结构),即可实现,可以降低计算复杂度、带宽占用小、时延低。
编码模块先将待传输数据切分到n个数据和依据校验算法计算生成1个校验数据。传输模块依照前面所述方法,将数据分到n+1个传输路径传输。接收端从各传输路径接收数据,并接成一帧数据。
以校验算法采用简单的RAID 5算法为例:P=D1 xor D2 xor D3…xor Dn,D1,D2,D3…Dn为数据块,P为校验块,xor为异或运算。假设某1个传输路径的数据丢失或者出现错误(可以通过IP报文中CRC校验、4层TCP,RDMA传输协议校验机制来判断),可以恢复该丢失或出现错误的数据。
以下结合图6,以n=3为例说明多传输路径结合纠错编码的过程。如图6所示,在发送端,应用层的数据流形成每个数据位宽3KB字节流,网卡将数据进行条带化编码并生成校验数据,其中,A、B、C....表示数据流。
通过发送模块将数据报文以图5所示的以太网报文帧格式发送到网络中,每个数据包带1KB payload数据。在网络中通过4个传输路径(path1-path4)传输数据。假设其中传输路径2(path2)发生故障,连续丢失数据包B2和Cp。
接收端的网卡(NIC)接收到乱序的数据报文,NIC不需做过多缓存和排序,发送给主机的解码模块,解码模块可以通过运算恢复数据,例如,A=A1+A2+A3,B=B1+B2+B3,....。数据恢复之后,按照地址将数据存储到内存中。
基于相同的技术构思,本公开实施例还提供一种网络设备,所述网络设备为第一网络设备,如图12所示,所述网络设备包括数据读取模块101、地址分配模块102、路径分配模块103和数据传输模块104,数据读取模块101用于,根据数据的存储顺序从内存中读取数据,并在本地存储数据。
地址分配模块102用于,为数据分配地址,地址表示数据的读取顺序。
路径分配模块103用于,将数据中的每个分配到至少两个传输路径中的一个。
数据传输模块104用于,针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址,地址用于使第二网络设备根据地址将对应的数据写入内存。
在一些实施例中,地址分配模块102用于,为数据分配连续的地址。
在一些实施例中,地址为从0开始的虚拟地址,按照数据由先至后的读取顺序,各数据的地址递增。
在一些实施例中,地址为环形队列地址。
在一些实施例中,如图13所示,所述网络设备还包括数据重传模块105,数据重传模块105用于,在针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址之后,在接收到第二网络设备发送的重传请求报文的情况下,获取重传请求报文中携带的重传数据的地址;根据重传数据的地址确定重传数据;通过第二数据报文向第二网络设备发送重传数据和重传数据的地址。
在一些实施例中,如图14所示,所述网络设备还包括PSN分配模块106,PSN分配模块106用于,在将数据中的每个分配到至少两个传输路径中的一个之后、针对每个传输路径,通过第一数据报文向第二网络设备发送分配到传输路径中的数据和数据的地址之前,针对每个传输路径,为分配到传输路径的数据分配包序列号PSN,以形成传输路径的PSN序列;其中,在一个传输路径的PSN序列中,按照PSN由先至后的分配顺序,PSN递增。
基于相同的技术构思,本公开实施例还提供一种网络设备,所述网络设备为第二网络设备,如图15所示,所述网络设备包括数据传输模块201、数据获取模块202和数据写入模块203,数据传输模块201用于,通过至少两个传输路径接收第一网络设备发送的第一数据报文。
数据获取模块202用于,获取第一数据报文中携带的数据和数据的地址;数据由第一网络设备根据数据的存储顺序从内存中读取,地址表示数据的读取顺序。
数据写入模块203用于,根据地址将对应的数据写入内存。
在一些实施例中,地址为连续地址。
在一些实施例中,地址为从0开始的虚拟地址,按照第一网络设备从内存中对数据由先至后的读取顺序,各数据的地址递增。
在一些实施例中,数据写入模块203用于,根据地址将对应的数据写入内存的环形队列。
在一些实施例中,如图16所示,所述网络设备还包括数据重传模块204,数据重传模块204用于,在通过至少两个传输路径接收第一网络设备发送的第一数据报文之后,在第一数据报文接收异常的情况下,确定重传数据的地址。
数据传输模块201还用于,向第一网络设备发送携带有重传数据的地址的重传请求报文;接收第一网络设备发送的第二数据报文。
数据获取模块202还用于,获取第二数据报文中携带的重传数据和重传数据的地址。
数据写入模块203还用于,根据重传数据的地址将重传数据写入内存。
本公开实施例还提供了一种计算机设备,该计算机设备包括:一个或多个处理器以及存储装置;其中,存储装置上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如前述各实施例所提供的数据传输方法。
本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被执行时实现如前述各实施例所提供的数据传输方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本发明的范围的情况下,可进行各种形式和细节上的改变。

Claims (15)

1.一种数据传输方法,应用于第一网络设备,所述方法包括:
根据数据的存储顺序从内存中读取数据,并在本地存储所述数据;
为所述数据分配地址,所述地址表示所述数据的读取顺序;
将所述数据中的每个分配到至少两个传输路径中的一个;
针对每个所述传输路径,通过第一数据报文向第二网络设备发送分配到所述传输路径中的数据和所述数据的地址,所述地址用于使所述第二网络设备根据所述地址将对应的数据写入内存。
2.如权利要求1所述的方法,其特征在于,所述为所述数据分配地址,包括:为所述数据分配连续的地址。
3.如权利要求2所述的方法,其特征在于,所述地址为从0开始的虚拟地址,按照所述数据由先至后的读取顺序,各所述数据的地址递增。
4.如权利要求2所述的方法,其特征在于,所述地址为环形队列地址。
5.如权利要求1所述的方法,其特征在于,在针对每个所述传输路径,通过第一数据报文向第二网络设备发送分配到所述传输路径中的数据和所述数据的地址之后,所述方法还包括:
在接收到所述第二网络设备发送的重传请求报文的情况下,获取所述重传请求报文中携带的重传数据的地址;
根据所述重传数据的地址确定重传数据;
通过第二数据报文向所述第二网络设备发送所述重传数据和所述重传数据的地址。
6.如权利要求1-5任一项所述的方法,其特征在于,在将所述数据中的每个分配到至少两个传输路径中的一个之后、针对每个所述传输路径,通过第一数据报文向第二网络设备发送分配到所述传输路径中的数据和所述数据的地址之前,所述方法还包括:
针对每个所述传输路径,为分配到所述传输路径的数据分配包序列号PSN,以形成所述传输路径的PSN序列;其中,在一个传输路径的PSN序列中,按照PSN由先至后的分配顺序,PSN递增。
7.一种数据传输方法,应用于第二网络设备,所述方法包括:
通过至少两个传输路径接收第一网络设备发送的第一数据报文;
获取所述第一数据报文中携带的数据和所述数据的地址;其中,所述数据由所述第一网络设备根据数据的存储顺序从内存中读取,所述地址表示所述数据的读取顺序;
根据所述地址将对应的数据写入内存。
8.如权利要求7所述的方法,其特征在于,所述地址为连续地址。
9.如权利要求8所述的方法,其特征在于,所述地址为从0开始的虚拟地址,按照所述第一网络设备从内存中对所述数据由先至后的读取顺序,各所述数据的地址递增。
10.如权利要求8所述的方法,其特征在于,所述根据所述地址将对应的数据写入内存,包括:
根据所述地址将对应的数据写入内存的环形队列。
11.如权利要求7-10任一项所述的方法,其特征在于,在通过至少两个传输路径接收第一网络设备发送的第一数据报文之后,所述方法还包括:
在所述第一数据报文接收异常的情况下,确定重传数据的地址;
向所述第一网络设备发送携带有所述重传数据的地址的重传请求报文;
接收所述第一网络设备发送的第二数据报文,获取所述第二数据报文中携带的重传数据和所述重传数据的地址;
根据所述重传数据的地址将所述重传数据写入所述内存。
12.一种网络设备,所述网络设备为第一网络设备,包括数据读取模块、地址分配模块、路径分配模块和数据传输模块,所述数据读取模块用于,根据数据的存储顺序从内存中读取数据,并在本地存储所述数据;
所述地址分配模块用于,为所述数据分配地址,所述地址表示所述数据的读取顺序;
所述路径分配模块用于,将所述数据中的每个分配到至少两个传输路径中的一个;
所述数据传输模块用于,针对每个所述传输路径,通过第一数据报文向第二网络设备发送分配到所述传输路径中的数据和所述数据的地址,所述地址用于使所述第二网络设备根据所述地址将对应的数据写入内存。
13.一种网络设备,所述网络设备为第二网络设备,包括数据传输模块、数据获取模块和数据写入模块,所述数据传输模块用于,通过至少两个传输路径接收第一网络设备发送的第一数据报文;
所述数据获取模块用于,获取所述第一数据报文中携带的数据和所述数据的地址;所述数据由所述第一网络设备根据数据的存储顺序从内存中读取,所述地址表示所述数据的读取顺序;
所述数据写入模块用于,根据所述地址将对应的数据写入内存。
14.一种计算机设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-11任一项所述的数据传输方法。
15.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被执行时实现如权利要求1-11任一项所述的数据传输方法。
CN202210883874.0A 2022-07-26 2022-07-26 数据传输方法、装置、计算机设备及可读介质 Pending CN117424849A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210883874.0A CN117424849A (zh) 2022-07-26 2022-07-26 数据传输方法、装置、计算机设备及可读介质
PCT/CN2023/108602 WO2024022243A1 (zh) 2022-07-26 2023-07-21 数据传输方法、网络设备、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210883874.0A CN117424849A (zh) 2022-07-26 2022-07-26 数据传输方法、装置、计算机设备及可读介质

Publications (1)

Publication Number Publication Date
CN117424849A true CN117424849A (zh) 2024-01-19

Family

ID=89527200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210883874.0A Pending CN117424849A (zh) 2022-07-26 2022-07-26 数据传输方法、装置、计算机设备及可读介质

Country Status (2)

Country Link
CN (1) CN117424849A (zh)
WO (1) WO2024022243A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115941616A (zh) * 2017-12-15 2023-04-07 微软技术许可有限责任公司 多路径rdma传输
EP3771180B1 (en) * 2019-07-25 2023-08-30 INTEL Corporation Offload of storage node scale-out management to a smart network interface controller
CN111711566B (zh) * 2020-07-03 2021-07-27 西安电子科技大学 多路径路由场景下的接收端乱序重排方法
CN114765631A (zh) * 2021-01-14 2022-07-19 华为技术有限公司 数据传输系统、数据传输方法以及网络设备

Also Published As

Publication number Publication date
WO2024022243A1 (zh) 2024-02-01

Similar Documents

Publication Publication Date Title
US20240291750A1 (en) System and method for facilitating efficient event notification management for a network interface controller (nic)
JP3816531B2 (ja) 非同期パケット交換
US7876751B2 (en) Reliable link layer packet retry
JP4099170B2 (ja) ネットワークにおけるデータ転送を管理するデータ処理システムおよび方法
US6445717B1 (en) System for recovering lost information in a data stream
US6516435B1 (en) Code transmission scheme for communication system using error correcting codes
US9749204B2 (en) Method of data delivery across a network
RU2540815C2 (ru) Прерывание, по меньшей мере частичное, передачи кадра
US10469200B2 (en) Minimum latency link layer metaframing and error correction
JP2007533012A (ja) データ格納のための情報処理と輸送アーキテクチャ
US20090210770A1 (en) Method, system and computer program product for end to end error checking in ethernet
CN117354253A (zh) 一种网络拥塞通知方法、装置及存储介质
WO2022105753A1 (zh) 网络数据编码传输方法及装置
CN117424849A (zh) 数据传输方法、装置、计算机设备及可读介质
US7506036B1 (en) Proxy device and method of operation for a windowing internet protocol data network
US6981194B1 (en) Method and apparatus for encoding error correction data
CN116032421B (zh) 以太网链路控制装置和存储介质
CN118054885A (zh) 一种数据重传方法、电子设备及存储介质
CN117376252A (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