CN114928573A - 一种数据的传输方法及系统 - Google Patents
一种数据的传输方法及系统 Download PDFInfo
- Publication number
- CN114928573A CN114928573A CN202210558480.8A CN202210558480A CN114928573A CN 114928573 A CN114928573 A CN 114928573A CN 202210558480 A CN202210558480 A CN 202210558480A CN 114928573 A CN114928573 A CN 114928573A
- Authority
- CN
- China
- Prior art keywords
- sending
- data packet
- data
- connection
- packet
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000004044 response Effects 0.000 claims description 42
- 239000000872 buffer Substances 0.000 claims description 29
- 230000015654 memory Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 3
- 230000007423 decrease Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1809—Selective-repeat protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明实施例提供了一种数据的传输方法,包括:在与接收方建立的连接上发送一个数据包,其中,每个连接设有对应的连接号;根据所发送的数据包产生一个对应的发送事件,所述发送事件指示针对所述数据建立的连接的连接号以及所述数据包的发送序列号;响应于发送事件,调整为对应连接中发送数据包的计数的数值,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。本发明实施例的技术方案通过在计数的数值达到指定的冗余发送阈值时,主动复制对应的数据包,以作为冗余数据包再次发出,在一定程度上降低了接收方的丢包概率,从而提升网络整体性能。
Description
技术领域
本发明涉及网络通信技术领域,具体来说,涉及一种数据的传输方法及系统。
背景技术
在当代数据中心内部,分布式应用承载了绝大多数核心业务,各种各样的分布式应用被用于满足用户多样化的需求。而这些应用在运行过程中会进行大量的网络通信,一旦出现数据包丢失将对应用性能造成严重的影响。因此,如何为应用提供高效的可靠性网络传输保障是一个至关重要的问题。
目前保障应用层的可靠性网络传输主要有两类:
第一类:在数据链路层进行点对点的流量控制,当接收方缓冲区可用空间大小低于某个阈值时,发送方暂停数据包的发送直到接收方缓冲区可用空间大小恢复。这类方法虽然能够保障数据包不会因为缓冲区溢出而被丢弃,能够显著降低网络中的丢包率,但当网络中的某个交换机的输入端口出现拥塞,拥塞将会沿着上行链路逐级传递,最终导致整个网络的拥塞。
第二类:是在传输层实现高效的数据包重传机制。这类方法通过感知丢包事件来触发重传机制。
针对以上第二类,现有通过感知丢包事件进行重传的系统称为被动重传系统。而典型被动重传系统由处理器、数据包缓冲区、系统总线、网络接口及互连网络组成。其中,处理器用于准备待发送的网络数据并通知网络接口发送数据;数据包缓冲区暂存待发送的数据;网络接口进行数据发送和接收的处理;网络互连将不同的网络接口连接起来。在该被动重传系统中,当处理器准备好待发送的网络数据后,将其放入数据包缓冲区中,并通知网络接口发送数据。网络接口从数据包缓冲区中读取数据,经由网络接口发向网络。当网络中出现丢包时,网络互连将向网络接口返回一个丢包事件,发送控制模块检测到该丢包事件后,确认丢失数据包的信息,并从数据包缓冲区中读取丢失的数据包,将其重新发向网络。
该被动重传系统避免了第一类方法易造成的拥塞传递,在网络拥塞程度较轻、丢包率较低的情况下能够获得较好的重传性能。但存在的问题包括:网络接口使用的是被动重传机制,只有收到网络互连返回的丢包事件后,网络接口才会进行丢包重传。因此,这种系统无法主动地对丢包进行避免,在丢包较为严重的情况下将造成严重的性能下降。
因此,有必要对现有技术进行改进。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种数据的传输方法及系统。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,提供一种数据的传输方法,包括:在与接收方建立的连接上发送一个数据包,其中,每个连接设有对应的连接号;根据所发送的数据包产生一个对应的发送事件,所述发送事件指示针对所述数据建立的连接的连接号以及所述数据包的发送序列号;响应于发送事件,调整对应连接中发送数据包的计数,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。
在本发明的一些实施例中,所述连接对应的冗余发送阈值是根据所述连接的丢包情况以及所述数据建立的连接中发出冗余数据包的操作动态调整的。
在本发明的一些实施例中,所述连接对应的冗余发送阈值的大小随当前连接的丢包事件的发生而减小,并随当前连接对应冗余数据包的发出而增大。
在本发明的一些实施例中,每所述连接对应冗余发送阈值的调整方式被设为:每接收该连接的一个丢包事件,将冗余发送阈值减半,以及每发出一个该连接的冗余数据包,将冗余发送阈值翻倍。
在本发明的一些实施例中,所述方法还包括:获取待发送的数据,将所述数据切分组成多个数据包;建立发送数据的连接,将所述数据对应的多个数据包依次发出,并且每次发出数据包后生成对应的发送事件。
在本发明的一些实施例中,所述方法还包括:获取接收方反馈的针对所述数据的丢包事件,根据所述丢包事件对相应的数据包进行重传。
在本发明的一些实施例中,所述根据所述丢包事件对相应的数据包进行重传,包括:获取丢包事件中的编号,并基于建立的对应连接,获取当前正在发向网络的数据包的发送序列号以及首个发送到网络中且未被接收的数据包的编号;基于丢包事件的编号、首个发送到网络中且未被接收的数据包的编号和当前正在发向网络的数据包的发送序列号,确定未被接收过且被丢弃的一个或多个数据包;对未被接收过且被丢弃的一个或多个数据包进行重传。
在本发明的一些实施例中,所述方法还包括:在接收到某个连接的数据包时,若之前已正确收到过该数据包,则将该数据包丢弃。
在本发明的一些实施例中,所述方法还包括:获取接收方反馈的针对所述数据的响应数据包、响应数据包的编号和首个发送到网络中且未被接收的数据包的编号,其中,响应数据包的编号即对应被正确接收的数据包编号;根据所述响应数据包的编号和首个发送到网络中且未被接收的数据包的编号,更新首个发送到网络中且未被接收的数据包的编号,并确定已被正确接收的数据包。
在本发明的一些实施例中,所述方法还包括:每响应一个发送事件,将对应连接中发送数据包的计数的数值加一;每发出一个对应连接的冗余数据包,将该连接中发送数据包的计数的数值置为初始值。
根据本发明的第二方面,提供一种基于本发明的第一方面所述方法的系统,包括:发送控制模块,用于在与接收方建立的连接上发送一个数据包,其中,每个连接设有对应的连接号,以及根据所发送的数据包产生一个对应的发送事件,所述发送事件指示针对所述数据建立的连接的连接号以及所述数据包的发送序列号;冗余包发送模块,用于响应于发送事件,调整对应连接中发送数据包的计数,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。
在本发明的一些实施例中,所述系统还包括:接收控制模块,用于在接收到某个连接的数据包时,做出反馈,包括向发送方反馈一个指示相应数据包已被接收的响应数据包或向发送方反馈一个指示相应数据包已被丢弃且需重新传输的丢包事件;调度器,用于按照预定的调度方式将数据包调出并发送到网络中;互连单元,用于互连发送控制模块、冗余包发送模块、接收控制模块和调度器。
在本发明的一些实施例中,所述系统还包括:数据包缓冲区,用于存储每个连接中的将所述待发送的数据切分组成的多个数据包;元数据模块,用于存储每个连接中的计数的数值、冗余发送阈值、多个数据包的编号、丢包事件中的编号、响应数据包的编号、首个发送到网络中且未被接收的数据包的编号和当前正在发向网络的数据包的发送序列号。
根据本发明的第三方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现本发明的第一方面中任一项所述方法的步骤。
与现有技术相比,本发明的优点在于:
1、本发明基于每次发出数据包对应生成的发送事件,调整为对应连接中发送数据包的计数的数值,而冗余发送阈值与所述连接对应的丢包情况相关,为避免计数的数值达到指定的冗余发送阈值情况下,接收方无法接收相应的数据包而出现较高的丢包概率,在计数的数值达到指定的冗余发送阈值时,主动复制对应的数据包,以作为冗余数据包再次发出,增加接收方接收到相应数据包的接收概率,在一定程度上降低了接收方的丢包概率,减少发送方的重传概率,从而提升网络整体性能。
2、本发明将每个连接对应的冗余发送阈值的大小设置为随当前连接的丢包事件的发生而减小,并随当前连接对应冗余数据包的发出而增大,即发生丢包事件后,将冗余发送阈值减小,计数的数值也能在发出的较少数量的数据包情况下达到当前指定的冗余发送阈值,以及时对后续发出的数据包进行复制,并将复制的数据包作为冗余数据包再次发出,增加接收方接收到相应数据包的接收概率,在一定程度上降低了接收方的丢包概率,而随当前连接对应冗余数据包的发出,此时的丢包概率降低,将冗余发送阈值增大,可避免冗余发送阈值过小导致发送方发出过多的冗余数据包,进一步提升网络数据传输的整体性能。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明一个实施例的数据的传输方法流程图;
图2为根据本发明一个实施例的数据的传输系统结构示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,现有被动重传系统由处理器、数据包缓冲区、系统总线、网络接口及互连网络组成。其中,处理器用于准备待发送的网络数据并通知网络接口发送数据;数据包缓冲区暂存待发送的数据;网络接口进行数据发送和接收的处理;网络互连将不同的网络接口连接起来。在该被动重传系统中,当处理器准备好待发送的网络数据后,将其放入数据包缓冲区中,并通知网络接口发送数据。网络接口从数据包缓冲区中读取数据,经由网络接口发向网络。当网络中出现丢包时,网络互连将向网络接口返回一个丢包事件,发送控制模块检测到该丢包事件后,确认丢失数据包的信息,并从数据包缓冲区中读取丢失的数据包,将其重新发向网络。该被动重传系统避免了第一类方法易造成的拥塞传递,在网络拥塞程度较轻、丢包率较低的情况下能够获得较好的重传性能。但存在的问题包括:网络接口使用的是被动重传机制,只有收到网络互连返回的丢包事件后,网络接口才会进行丢包重传。因此,这种系统无法主动地对丢包进行避免,在丢包较为严重的情况下将造成严重的性能下降。
基于以上研究,本发明提供一种数据的传输方法,包括:获取待发送的数据,将所述数据切分组成多个数据包;建立发送数据的连接,将所述数据对应的多个数据包依次发出,并且每次发出数据包后生成对应的发送事件;获取发送的数据对应的发送事件,其指示针对所述数据建立的连接的连接号以及针对所述数据刚发出的数据包的发送序列号;响应于发送事件,调整为对应连接中发送数据包的计数的数值,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。本发明基于每次发出数据包对应生成的发送事件,调整计数的数值,而冗余发送阈值与所述连接对应的丢包情况相关,为避免计数的数值达到指定的冗余发送阈值情况下,接收方无法接收相应的数据包出现较高的丢包概率,在计数的数值达到指定的冗余发送阈值时,主动复制对应的数据包,以作为冗余数据包再次发出,增加接收方接收到相应数据包的接收概率,在一定程度上降低了接收方的丢包概率,减少发送方的重传概率,从而提升网络整体性能。
根据本发明的一个实施例,相应连接对应的冗余发送阈值是根据所述连接的丢包情况以及所述数据建立的连接中发出冗余数据包的操作动态调整的。每个连接对应的冗余发送阈值的大小随当前连接的丢包事件的发生而减小,并随当前连接对应冗余数据包的发出而增大。即发生丢包事件后表示当前的丢包概率较高,将冗余发送阈值减小,计数的数值也能在发出较少数量的数据包情况下达到当前指定的冗余发送阈值,以及时对后续发出的数据包进行复制,并将复制的数据包作为冗余数据包再次发出,增加接收方接收到相应数据包的接收概率,在一定程度上降低了接收方的丢包概率,而随当前连接对应冗余数据包的发出,此时的丢包概率降低,将冗余发送阈值增大,可避免冗余发送阈值过小导致发送方发出过多的冗余数据包,而降低网络数据传输的整体性能。因此,将每个连接对应的冗余发送阈值的大小设置为随当前连接的丢包事件的发生而减小,并随当前连接对应冗余数据包的发出而增大,有效提升网络数据传输的整体性能。
根据本发明的一个实施例,在初始发送状态下,可认为网络中丢包事件的发生概率极低,每个连接对应的冗余发送阈值可以设定为一个非常大的值(例如以一个32位的十六进制数表示冗余发送阈值:32'hFFFFFFFF),且冗余发送阈值的调整方式被设为:每接收该连接的一个丢包事件,将冗余发送阈值减半,以及每发出一个该连接的冗余数据包,将冗余发送阈值翻倍。对于本领域普通技术人员,应当理解,此处仅为示意,也可以设置为每接收该连接的一个丢包事件,将冗余发送阈值在原有大小上减去三分之一、四份之一等,以及每发出一个该连接的冗余数据包,将冗余发送阈值置为初始大小的值(在原有大小上增加三分之一、四份之一),可根据具体情况的需要进行设置,本发明对此不作任何限制。当计数的数值达到冗余发送阈值,说明此时网络中丢包概率较高,如果没有达到设定的冗余发送阈值,则丢包概率较低,继续等待发送事件。
进一步的,根据本发明的一个实施例,当发生丢包时接收方会生成一个丢包事件,发送方获取接收方反馈的针对所述数据的丢包事件,根据所述丢包事件对相应的数据包进行重传。在重传数据包的过程中,依然需要在每次发出数据包后生成对应的发送事件;获取发送的数据对应的发送事件,其指示针对所述数据建立的连接的连接号以及针对所述数据刚发出的数据包的发送序列号;响应于发送事件,调整对应连接中发送数据包的计数,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出。因此,本发明在重传数据包时依然会根据计数的数值和设定的冗余发送阈值间的关系,确定是否需要主动复制相应数据包,以作为冗余数据包进行再次发送,降低重传过程中的丢包概率,提升网络传输性能。
根据本发明的一个实施例,提供一种数据的传输方法,参见图1,包括步骤S1、S2、S3、S4和S5,为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
步骤S1:获取待发送的数据,将所述数据切分组成多个数据包。
根据本发明的一个实施例,当主机内存中有数据需要发送时,从内存中获取待发送的数据,并按照链路层预设的最大数据包长对数据切分,得到多个数据段,为每个数据段添加相应的包头,得到多个数据包。
步骤S2:建立发送数据的连接,将所述数据对应的多个数据包依次发出,并且每次发出数据包后生成对应的发送事件。
根据本发明的一个实施例,步骤S2具体包括:
步骤S201:在与接收方建立的连接上发送一个数据包,其中,每个连接设有对应的连接号。
根据本发明的一个实施例,通过相应的连接号建立发送端与接收端间的网络连接,将需要发送的数据对应的多个数据包存储在相应的发送队列中,依据相应的调度方式从相应的发送队列中选出一个数据包并在与接收方建立的连接上发向网络。
步骤S202:根据所发送的数据包产生一个对应的发送事件,所述发送事件指示针对所述数据建立的连接的连接号以及所述数据包的发送序列号。
步骤S3:获取发送的数据对应的发送事件,其指示针对所述数据建立的连接的连接号以及针对所述数据刚发出的数据包的发送序列号。
根据本发明的一个实施例,建立的连接的连接号即为发送方在对相应数据进行发送时,首先需确定接受相应数据的接收方,因此,通过统一的连接号来连接,如可以是以接收方的端口号作为连接号,发送方发送数据中包括指定的接收方的端口号以建立连接。
步骤S4:响应于发送事件,调整为对应连接发送数据包的计数的数值,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。
根据本发明的一个实施例,响应于发送事件,调整对应连接中发送数据包的计数,每响应一个发送事件,将对应连接中发送数据包的计数的数值加一。每发出一个对应连接的冗余数据包,将该连接中发送数据包的计数的数值置为初始值。如果计数的数值初始值为0,则将计数的数值置为0。
步骤S5:采用预定的调度方式将数据包调出并发送到网络中。
根据本发明的一个实施例,本发明对数据切分组成多个数据包,将数据包放入相应发送队列中,以及对相应数据包进行复制后得到的多个冗余数据包放入相应的发送队列中,采用预定的调度方式将相应发送队列中的数据包调出并发送到网络中。其中,调度方式可以为轮询调度方式或按照数据包预设的优先级进行调度发送到网络中。
进一步的,在将数据包发送到接收方后,接收方会基于数据包的编号确认是否为接收方期待接收的数据包,并对数据包进行处理,根据本发明的一个实施例,在接收到某个连接的数据包时,若之前已正确收到过该数据包,则将该数据包丢弃;若接收到某个连接的数据包为期待接收的数据包,即将其写入存储在接收方中,以上均需反馈一个响应数据包给对应连接的发送方;若接收到某个连接的数据包不是期待接收的数据包且之前未接收过该数据包,将该数据包丢弃,同时反馈一个丢包事件给对应连接的发送方。
根据本发明的一个实施例,建立的每个连接包括有对应的期待接收的数据包序列号(Expected Number,记为EN)、数据包的发送序列号(Send Number,简记为SN)和首个发送到网络中且未被接收的数据包的编号(Unacknowledged Number,简记为UN),根据相应的序列号和编号等信息对数据包的发送接收情况进行记录响应,以确保数据的正确发送。
根据本发明的一个实施例,判断相应数据包是否为当前连接中期待接收的数据包,包括:将数据包的编号(Packet Number,记为PN)与接收方预设的期待接收的数据包序列号EN进行比较。若EN等于PN,是期待的数据包,将数据包写入存储于接收方;若EN大于PN,不是期待的数据包,且是冗余数据包。将数据包直接丢弃,发送一个响应包,响应包中的PN值设置为EN;若EN小于PN,不是期待的数据包,且不是冗余数据包,将该数据包直接丢弃,并发送一个丢包事件。
根据本发明的一个实施例,发送方需根据接收方的不同反馈做相应的处理:
针对反馈的丢包事件,根据本发明的一个实施例,获取接收方反馈的针对所述数据的丢包事件,根据所述丢包事件对相应的数据包进行重传,包括步骤A1、A2和A3:
步骤A1:获取丢包事件中的编号,并基于建立的对应连接,获取当前正在发向网络的数据包的发送序列号SN以及首个发送到网络中且未被接收的数据包的编号UN。
步骤A2:基于丢包事件的编号、首个发送到网络中且未被接收的数据包的编号UN和当前正在发向网络的数据包的发送序列号SN,确定未被接收过且被丢弃的一个或多个数据包。其中,丢包事件中的编号即对应未被接收过且被丢弃的数据包的编号。
根据本发明的一个实施例,将丢包事件中的编号与UN进行比较,根据比较结果执行不同的动作。若UN小于或等于丢包事件中的编号,释放编号在UN至丢包事件中的编号之间的所有数据包占用的缓冲区空间,并将UN置为丢包事件中的编号加一后的结果,并将编号在丢包事件中的编号加一后的结果至SN之间的所有数据包进行重传;若UN大于丢包事件中的编号,说明出现网络错误,处理终止。
步骤A3:对未被接收过且被丢弃的一个或多个数据包进行重传。
根据本发明的一个实施例,在确定了需要重传的一个或多个数据包后,依次按照与上述的数据的传输方法中的步骤S2、S3、S4和S5同样的方式,先建立发送数据的连接,将需要重传的一个或多个数据包依次发出,并且每次发出数据包后生成对应的发送事件;获取发送的数据对应的发送事件,其指示针对所述数据建立的连接的连接号以及针对所述数据刚发出的数据包的发送序列号;响应于发送事件,调整对应连接中发送数据包的计数,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,对相应数据包进行重新发送。进一步降低重传过程中的丢包概率,提升网络传输性能。
针对反馈的响应数据包,根据本发明的一个实施例,根据响应数据包进行处理包括步骤B1和步骤B2:
步骤B1:获取接收方反馈的针对所述数据的响应数据包、响应数据包的编号和首个发送到网络中且未被接收的数据包的编号UN,其中,响应数据包的编号即对应被正确接收的数据包的编号。
步骤B2:根据所述响应数据包的编号和首个发送到网络中且未被接收的数据包的编号UN,更新首个发送到网络中且未被接收的数据包的编号,并确定已被正确接收的数据包。
根据本发明的一个实施例,将响应数据包的编号与UN进行比较,根据比较结果执行不同的动作。若UN小于或等于响应数据包的编号,释放编号在UN至响应数据包的编号之间的所有数据包占用的缓冲区空间,并将UN置为响应数据包的编号加一后的结果,以更新UN,等待反馈的下一个响应数据包或丢包事件;如果UN大于响应数据包的编号,等待接收方反馈的下一个响应数据包或丢包事件。
根据本发明的一个实施例,提供一种数据的传输系统,参见图2,包括:应用程序模块、数据包缓冲区模块、元数据模块、系统总线模块、网络接口设备和网络互连模块。其中,应用程序模块、数据包缓冲区模块、元数据模块和网络接口设备通过系统总线模块相互连接,且网络接口设备还与网络互连模块连接。另外,网络接口设备中包括发送控制模块、接收控制模块、冗余包发送模块、互连单元和调度器,发送控制模块、接收控制模块、冗余包发送模块和调度器通过互连单元相互连接;发送控制模块通过系统总线模块写入正常数据包和重传数据包到数据包缓冲区模块,并通过调度器发出正常数据包和重传数据包,接收网络互连模块发来的响应数据包和丢包事件,冗余包发送模块写入冗余数据包到数据包缓冲区模块,并通过调度器发出冗余数据包。其中,正常数据包为应用程序模块需要发送的数据切分组成的数据包,重传数据包为根据丢包事件需要重新通过发送控制模块再次进行发送的数据包。
根据本发明的一个实施例,应用程序模块运行时需要进行网络数据的发送和接收,并将需要发送的数据存储在数据包缓冲区模块中,其中,应用程序模块为运行在处理器上的一段代码或一个专用的计算模块。
根据本发明的一个实施例,数据包缓冲区模块是一个独立的存储模块,对发送控制模块、接收控制模块和冗余包发送模块提供读写访问接口,其可以是主机内存(动态随机存取存储器,Dynamic Random Access Memory,DRAM),也可以是网络接口内部的缓存。数据包缓冲区模块用于存储应用程序模块需要发送的网络数据,以及用于缓存接收到的数据包,供应用程序模块使用。
根据本发明的一个实施例,元数据模块是一个独立的存储模块,对发送控制模块、接收控制模块和冗余包发送模块提供读写访问接口,其可以是主机内存(动态随机存取存储器,Dynamic Random Access Memory,DRAM),也可以是网络接口内部的缓存。元数据模块存储了发送控制模块、接收控制模块和冗余包发送模块在处理数据包时需要用到的元数据。在通信过程中,建立的每个连接都有自己的元数据,其内容包括:对应的期待接收的数据包序列号(Expected Number,记为EN)、数据包的发送序列号(Send Number,简记为SN)和首个发送到网络中且未被接收的数据包的编号(Unacknowledged Number,简记为UN),根据相应的序列号和编号等信息对数据包的发送接收情况进行记录响应,以确保数据的正确发送。其中,SN可理解为当前正在发向网络的数据包编号,其指向发送队列中的队尾元素;UN可理解为最早发向网络,且尚未被对方接收到的数据包编号,其指向发送队列中的队首元素。
根据本发明的一个实施例,网络接口设备中的发送控制模块、接收控制模块、冗余包发送模块、互连单元和调度器相互协调配合实现数据的传输处理。下面以具体的实施例说明数据的传输处理过程:
根据本发明的一个实施例,针对正常数据包的传输过程,发送控制模块通过系统总线模块获取数据包缓冲区模块存储的待发送的数据,并执行上述实施例中的步骤S1和步骤S2,依次发出的数据包为正常数据包;冗余包发送模块通过互连单元获取发送控制模块发送数据包后生成的发送事件,并执行上述实施例中的步骤S3和步骤S4,发出冗余数据包;调度器执行上述实施例中的步骤S5。针对重传数据包的传输过程,即通过上述的数据的传输系统执行上述实施例中的步骤S2、S3、S4和S5。
根据本发明的一个实施例,冗余包发送模块在执行上述实施例中的步骤S3和步骤S4时,需响应于发送事件,调整为对应连接中发送数据包的计数的数值,该计数的数值可以通过发送连接的计数器进行计数,每次发送一个数据包时,该冗余包发送模块将该数据包对应连接的计数器加一,如果计数器值等于设定的冗余发送阈值,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,降低数据包被丢弃时触发重传事件的概率,每次发出一个冗余数据包后,将计数器复位。其中,建立的每个连接对应的计数器设置在元数据模块中,计数器计数得到的数值和冗余发送阈值存储于元数据模块,供冗余包发送模块判定是否应该发送冗余数据包。计数器和冗余发送阈值以可读写存储器的形式存在,元数据模块为冗余包发送模块提供读写这些存储器的接口。当冗余包发送模块需要读写计数器的数值和冗余发送阈值时,向元数据模块提供读写地址和内容,由元数据模块将计数器计数的数值和冗余发送阈值内容读出后返回冗余包发送模块或将计数器计数的数值和冗余发送阈值写入元数据模块。
根据本发明的一个实施例,接收控制模块对传输来的相应数据包做出的反馈,根据传输来的相应数据包的编号判断当前数据包是否是当前连接中期待接收的数据包,并根据判断结果向连接的发送方反馈一个响应事件包,响应事件包的类型为丢包事件或响应数据包。
根据本发明的一个实施例,针对接收方对传输来的相应数据包的反馈,发送控制模块根据响应事件包的类型和编号判断其对应的数据包是否被接收方成功接收,以进行进一步处理。包括在收到接收方反馈的一个丢包事件后,执行上述实施例中的步骤A1和A2后,获取相应需要重新传输的数据包,以作为重传数据包进行传输。发送控制模块在收到接收方反馈的一个响应数据包后,说明对应的数据包被成功接收,只需更新首个发送到网络中且未被接收的数据包的编号UN,执行上述实施例中的步骤B1和B2。
根据本发明的一个实施例,调度器需要调度的数据包有四类:正常数据包、冗余数据包、重传数据包和响应事件包,其中,正常数据包和重传数据包由发送控制模块发出并写入调度器,响应事件包(数据包和丢包事件)由接收控制模块发出并写入调度器,冗余数据包由冗余包发送模块发出并写入调度器。针对每种数据包,调度器为每种数据包都维护一个缓冲区,缓冲区在逻辑上为一个发送队列,发送控制模块和冗余包发送模块向相应的发送队列队尾位置写入数据包,调度器从相应发送队列的队首位置读取数据包,以实现先进入相应发送队列的数据包传输到网络互连模块的时间先于后进入相应发送队列的数据包。本发明不对相应发送队列占用缓冲区的形式进行限定,可以采用连续分配或者离散分配的方式。调度器用于按照预设的调度方式调度相应发送队列中的数据包到网络互连模块中,并将从网络互连模块中接收到的数据包分发到网络接口设备中的各个模块。其中,从网络互连模块中接收到的数据包有四类:正常数据包、冗余数据包、重传数据包和响应事件包。其中,正常数据包、冗余数据包、重传数据包被调度到接收控制模块处理,响应事件包被调度到发送控制模块处理。本发明不对调度器使用的调度算法进行限定,可以是轮询调度,也可以是基于优先级的调度。
根据本发明的一个实施例,调度器按照先进先出的轮询调度策略,从等待发送的数据包中选取一个发向网络互连模块。具体而言,每种数据包在调度器中存储在一个独立的缓冲区中,并按照写入的时间先后顺序,将先写入的数据包排列在队首,后续写入的数据包依次排列在后面,以发送队列的形式存储,如等待发送的数据包有三种:正常数据包,冗余数据包和重传数据包,对应分别存储于正常数据包发送队列,冗余数据包发送队列和重传数据包发送队列。调度器不断轮询调度三个发送队列中的数据包到网络互连模块,如首先调度正常数据包发送队列,若当前正常数据包发送队列非空,则将该发送队列的队首的正常数据包发送到网络互连模块,以实现先进先出的顺序,发送完成后轮询下一个冗余数据包发送队列,若当前冗余数据包发送队列为空,则直接轮询下一个重传数据包发送队列,若重传数据包发送队列非空,则将该发送队列的队首的重传数据包发送到网络互连模块,依次按照正常数据包发送队列,冗余数据包发送队列和重传数据包发送队列的顺序进行轮询调度。
根据本发明的一个实施例,系统总线模块自身具备路由功能,能够根据所承载数据包中相关的总线协议字段,转发数据的传输系统中不同模块之间的控制信息和数据信息。本发明并不对系统总线模块的总线类型进行限定,可以采用外设组件互连标准:PCI(Peripheral Component Interconnect,PCI)或PCI-X、高速串行计算机扩展总线标准PCI-E(peripheral component interconnect express)、总线协议:AXI(Advanced eXtensibleInterface)等。
根据本发明的一个实施例,互连单元为网络接口设备内部的单元,用于互连网络接口设备内部的各个模块,本发明不对互连单元使用的互连类型进行限定,可以是外设组件互连标准:PCI(Peripheral Component Interconnect,PCI)或PCI-X、高速串行计算机扩展总线标准PCI-E(peripheral component interconnect express)、总线协议:AXI(Advanced eXtensible Interface)等。
根据本发明的一个实施例,网络互连模块为互连各个发送方的网络接口设备和接收方的网络接口设备的控制器。本发明并不对网络互连模块中的网络传输协议的类型进行限定,可以是无限带宽(InfiniBand),以太网(Ethernet)或者光纤信道(Fibre Channel)等。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (15)
1.一种数据的传输方法,其特征在于,包括:
在与接收方建立的连接上发送一个数据包,其中,每个连接设有对应的连接号;
根据所发送的数据包产生一个对应的发送事件,所述发送事件指示针对所述数据建立的连接的连接号以及所述数据包的发送序列号;
响应于发送事件,调整为对应连接中发送数据包的计数的数值,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。
2.根据权利要求1所述的方法,其特征在于,所述连接对应的冗余发送阈值是根据所述连接的丢包情况以及所述数据建立的连接中发出冗余数据包的操作动态调整的。
3.根据权利要求2所述的方法,其特征在于,所述连接对应的冗余发送阈值的大小随当前连接的丢包事件的发生而减小,并随当前连接对应冗余数据包的发出而增大。
4.根据权利要求3所述的方法,其特征在于,所述连接对应冗余发送阈值的调整方式被设为:每接收该连接的一个丢包事件,将冗余发送阈值减半,以及每发出一个该连接的冗余数据包,将冗余发送阈值翻倍。
5.根据权利要求1-4之一所述的方法,其特征在于,所述方法还包括:
获取待发送的数据,将所述数据切分组成多个数据包;
建立发送数据的连接,将所述数据对应的多个数据包依次发出,并且每次发出数据包后生成对应的发送事件。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取接收方反馈的针对所述数据的丢包事件,根据所述丢包事件对相应的数据包进行重传。
7.根据权利要求6所述的方法,其特征在于,所述根据所述丢包事件对相应的数据包进行重传,包括:
获取丢包事件中的编号,并基于建立的对应连接,获取当前正在发向网络的数据包的发送序列号以及首个发送到网络中且未被接收的数据包的编号;
基于丢包事件的编号、首个发送到网络中且未被接收的数据包的编号和当前正在发向网络的数据包的发送序列号,确定未被接收过且被丢弃的一个或多个数据包;
对未被接收过且被丢弃的一个或多个数据包进行重传。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在接收到某个连接的数据包时,若之前已正确收到过该数据包,则将该数据包丢弃。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取接收方反馈的针对所述数据的响应数据包、响应数据包的编号和首个发送到网络中且未被接收的数据包的编号,其中,响应数据包的编号即对应被正确接收的数据包的编号;
根据所述响应数据包的编号和首个发送到网络中且未被接收的数据包的编号,更新首个发送到网络中且未被接收的数据包的编号,并确定已被正确接收的数据包。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
每响应一个发送事件,将对应连接中发送数据包的计数的数值加一;
每发出一个对应连接的冗余数据包,将该连接中发送数据包的计数的数值置为初始值。
11.一种用于权利要求1-10任一项所述方法的系统,其特征在于,包括:
发送控制模块,用于在与接收方建立的连接上发送一个数据包,其中,每个连接设有对应的连接号,以及根据所发送的数据包产生一个对应的发送事件,所述发送事件指示针对所述数据建立的连接的连接号以及所述数据包的发送序列号;
冗余包发送模块,用于响应于发送事件,调整对应连接中发送数据包的计数,并确定当前计数的数值是否达到指定的冗余发送阈值,若是,则根据发送事件中的发送序列号复制对应的数据包,以作为冗余数据包发出,其中,冗余发送阈值与所述连接对应的丢包情况相关。
12.根据权利要求11所述的系统,其特征在于,所述系统还包括:
接收控制模块,用于在接收到某个连接的数据包时,做出反馈,包括向发送方反馈一个指示相应数据包已被接收的响应数据包或向发送方反馈一个指示相应数据包已被丢弃且需重新传输的丢包事件;
调度器,用于按照预定的调度方式将数据包调出并发送到网络中;
互连单元,用于互连发送控制模块、冗余包发送模块、接收控制模块和调度器。
13.根据权利要求12所述的系统,其特征在于,所述系统还包括:
数据包缓冲区,用于存储每个连接中的将所述待发送的数据切分组成的多个数据包;
元数据模块,用于存储每个连接中的计数的数值、冗余发送阈值、多个数据包的编号、丢包事件中的编号、响应数据包的编号、首个发送到网络中且未被接收的数据包的编号和当前正在发向网络的数据包的发送序列号。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至10中任一项所述方法的步骤。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储可执行指令;
所述一个或多个处理器被配置为经由执行所述可执行指令以实现权利要求1至10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210558480.8A CN114928573A (zh) | 2022-05-20 | 2022-05-20 | 一种数据的传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210558480.8A CN114928573A (zh) | 2022-05-20 | 2022-05-20 | 一种数据的传输方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114928573A true CN114928573A (zh) | 2022-08-19 |
Family
ID=82810145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210558480.8A Pending CN114928573A (zh) | 2022-05-20 | 2022-05-20 | 一种数据的传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114928573A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871514A (zh) * | 2016-05-19 | 2016-08-17 | 乐视控股(北京)有限公司 | 一种数据传输方法以及数据发送装置 |
WO2017157303A1 (zh) * | 2016-03-15 | 2017-09-21 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
CN109525368A (zh) * | 2018-11-26 | 2019-03-26 | 广东中兴新支点技术有限公司 | 基于线性网络编码的混合传输方法、电子设备和存储介质 |
CN111817927A (zh) * | 2020-09-11 | 2020-10-23 | 南京嘉环科技股份有限公司 | 用于检测端到端数据传输质量的方法与系统 |
CN113572582A (zh) * | 2021-07-15 | 2021-10-29 | 中国科学院计算技术研究所 | 数据发送、重传控制方法及系统、存储介质及电子设备 |
-
2022
- 2022-05-20 CN CN202210558480.8A patent/CN114928573A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017157303A1 (zh) * | 2016-03-15 | 2017-09-21 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
CN105871514A (zh) * | 2016-05-19 | 2016-08-17 | 乐视控股(北京)有限公司 | 一种数据传输方法以及数据发送装置 |
CN109525368A (zh) * | 2018-11-26 | 2019-03-26 | 广东中兴新支点技术有限公司 | 基于线性网络编码的混合传输方法、电子设备和存储介质 |
CN111817927A (zh) * | 2020-09-11 | 2020-10-23 | 南京嘉环科技股份有限公司 | 用于检测端到端数据传输质量的方法与系统 |
CN113572582A (zh) * | 2021-07-15 | 2021-10-29 | 中国科学院计算技术研究所 | 数据发送、重传控制方法及系统、存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
杨帆等: "基于在网计算加速的拜占庭容错算法", 计算机研究与发展, 31 December 2021 (2021-12-31) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240160584A1 (en) | System and method for facilitating dynamic command management in a network interface controller (nic) | |
US5367643A (en) | Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets | |
US7991875B2 (en) | Link level retry scheme | |
US7233573B2 (en) | Apparatus and method for receiving data from a network | |
US7295565B2 (en) | System and method for sharing a resource among multiple queues | |
US20190370215A1 (en) | Programmed Input/Output Mode | |
US11301163B2 (en) | NOF-based read control method, apparatus, and system | |
WO2001076140A2 (en) | Data network with independent transmission channels | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
KR20030051433A (ko) | 스위칭 시스템 | |
GB2282474A (en) | Buffer memory management for a computer network. | |
US7788437B2 (en) | Computer system with network interface retransmit | |
US20040198223A1 (en) | Flow control in a bluetooth wireless communication system | |
CN113452591A (zh) | 基于can总线连续数据帧的回路控制方法及装置 | |
CN113572582B (zh) | 数据发送、重传控制方法及系统、存储介质及电子设备 | |
JPH0716204B2 (ja) | パケット交換方式 | |
US7843830B1 (en) | Resilient retransmission of epoch data | |
CN1095134C (zh) | 使用系统总线控制器的模块间通信的设备和方法 | |
JP2003258932A (ja) | 相互に通信する電子装置間の順序化され、パイプライン化されたトランザクションのフローを制御するための方法およびシステム | |
KR100298961B1 (ko) | 메시지도착통지를위한소스및수신지개시인터럽트시스템 | |
CN110022218B (zh) | 组播通讯方法、终端设备及存储介质 | |
CN114928573A (zh) | 一种数据的传输方法及系统 | |
JPH06276205A (ja) | ネットワークシステム | |
US7729259B1 (en) | Reducing latency jitter in a store-and-forward buffer for mixed-priority traffic | |
CN117675705B (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 |