CN110661723A - 一种数据传输方法、计算设备、网络设备及数据传输*** - Google Patents
一种数据传输方法、计算设备、网络设备及数据传输*** Download PDFInfo
- Publication number
- CN110661723A CN110661723A CN201810711997.XA CN201810711997A CN110661723A CN 110661723 A CN110661723 A CN 110661723A CN 201810711997 A CN201810711997 A CN 201810711997A CN 110661723 A CN110661723 A CN 110661723A
- Authority
- CN
- China
- Prior art keywords
- data packet
- rtt
- sent
- data
- sending end
- 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.)
- Granted
Links
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/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2425—Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
- H04L47/2433—Allocation of priorities to traffic types
-
- 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/11—Identifying congestion
-
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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/31—Flow control; Congestion control by tagging of packets, e.g. using discard eligibility [DE] bits
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- 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/37—Slow start
-
- 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)
Abstract
本申请实施例提供一种数据传输方法、相关设备及***。发送端在首个RTT内发大量的数据包,从而充分利用网络空余带宽来使新数据流无延迟快速启动,同时以一条数据流是否新流为标准进行流分类,并对不同流设置不同的网络传输优先级,以免新流的数据包干扰旧流数据包传输,造成网络拥塞。本申请实施例提供的数据传输方法,在网络带宽利用率和网络拥塞发生概率之间取得了更好的平衡,在充分利用网络带宽的同时也尽量避免造成网络拥塞。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据传输方法、相关设备及***。
背景技术
在网络中,设备之间基于各种类型的通信协议进行数据传输,例如,传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由互联网工程任务小组(Internet Engineering Task Force,IETF)发布的RFC793定义,它是目前网络中使用最广泛的传输层协议。TCP为了保证数据包的可靠传输,给每个数据包分配一个序列号(Sequence Number,SN),对于已经成功收到的数据包,接收端会向发送端回复一个相应的确认(Acknowledgement,ACK),该确认会携带该接收到的数据包的序列号。如果发送端在合理的往返时延(Round-Trip Time,即RTT)内未收到确认,那么对应的数据包将会被重传,这种机制通常也被称为超时重传。虽然TCP通过确认和超时重传机制保障了数据的可靠性传输,但网络资源(包括链路带宽、交换节点中的缓存等)通常是有限的,如果在某段时间内,在网络中传送的数据包过多,网络的传输性能就会急剧恶化,这种情况就叫做网络拥塞。当网络发生拥塞时,一般会出现数据包丢失,传输时延增加,吞吐量下降,严重时甚至会导致“拥塞崩溃”(congestion collapse)。
为了防止网络拥塞,TCP引入了一系列的拥塞控制算法,包括最初由V.Jacobson在1988年的论文中提出的“慢启动(slow start)”和“拥塞避免(congestion avoidance)”算法,以及后来在TCP Reno版本中加入的“快速重传(Fast retransmit)”和“快速恢复(FastRecovery)”算法。这些拥塞控制算法的共同点在于基于一个拥塞窗口来调整数据发送的速率。拥塞窗口的大小,即cwnd值,代表能够发送出去的但还没有收到ACK的最大数据数据包个数,窗口越大那么数据发送的速率也就越快,但是也有越可能使得网络出现拥塞,如果窗口值为1,那么每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。选取最佳的cwnd值,从而使得网络吞吐量最大化且不产生拥塞是拥塞控制算法的核心。
图1示出了现有技术中TCP拥塞控制的主要过程,包含慢启动,拥塞避免、快速重传和快速恢复阶段,其中有两个重要的参数cwnd(拥塞窗口大小)和ssthresh(慢启动阈值),这几个阶段都是通过改变这两个参数来控制数据的发送速率。如图1所示,在慢启动阶段,发送端先发送1个数据包(cwnd=1),如果接收端成功接收该数据包,发送端就开始发送2个数据包(cwnd=2),如果接收端成功接收这2个数据包,然后再发送4个数据包(cwnd=4),即拥塞窗口大小呈指数增长,直到达到设定的慢启动阈值ssthresh。当cwnd=ssthresh之后,便进入了拥塞避免阶段,拥塞避免阶段发送端不再以上面的指数方式增长cwnd,而是以线性增长,即每次收到接收端ACK后只增加1/cwnd个数据包。这样在一个RTT内cwnd最多增加1。在cwnd=24的时候,假如发生了超时,则将cwnd重置为1,并减小慢启动阈值ssthresh,比如ssthresh=当前cwnd/2。
可以看出,现有的拥塞控制算法在网络状况良好的时候通过缓慢增加数据发送速率,避免对网络造成冲击,同时在检测到丢包时激进地降低数据发送速率,以避免网络状态的进一步恶化,是一种以“预防拥塞”为主的拥塞控制算法。这种算法虽然能一定程度上抑制网络拥塞,但也可能会不合理地限制数据传输速率,增加数据传输的时延,降低网络带宽利用率。尤其是在无线网络、数据中心网络和远程直接内存访问(remote direct memoryaccess,RDMA)网络等环境中,由现有的拥塞控制算法导致的吞吐率降低,数据传输时延大以及网络带宽浪费的情况普遍存在。
发明内容
本申请实施例提供一种数据传输方法及相关的设备和***,旨在减少网络拥塞的同时,能够充分利用网络带宽,提高数据传输的速率,降低数据传输时延。
为达到上述发明目的,一方面,本申请实施例提供了一种数据传输方法,该方法包括:发送端在与接收端的数据传输阶段的第一个RTT内以很大的速率(线速或者任意自定义速率)发送多个数据包,并为所述第一个RTT内发送的所述多个数据包添加第一标记,以使得网络设备在接收到携带所述第一标记的数据包后,将所述携带所述第一标记的数据包缓存至低优先级队列或丢弃,其中,所述网络设备的高优先级队列中的数据包优先于所述低优先级队列中的数据包被转发,所述高优先级队列中缓存的数据包未携带所述第一标记。该方法利用网络空余带宽来使新数据流无延迟快速启动,同时对首轮RTT发送的数据包进行标记,使得网络设备对首轮RTT发送的包以较低的优先级转发,以减少新流快速启动对旧流(非首轮RTT包)的冲击,降低网络拥塞发生的概率。
在一个可能的设计中,发送端可以基于第一个RTT内发送的所述多个数据包中被所述接收端成功接收的数据包的个数,调整下一个RTT内的发送速率或者发送数据包的个数,并基于调整后的发送速率或数据包个数在下一个RTT内发送数据包,从而实现基于感知到的网络状况及时进行拥塞控制,以免造成网络状况的急速恶化。
在一个可能的设计中,发送端可以为非首个RTT内发送的数据包添加第二标记,以指示该数据包为非首个RTT内发送的,网络设备进而基于数据包中携带的第二标记,将该数据包缓存至高优先级队列,并优先于首个RTT内发送的数据包转发,以减少对旧流(非首轮RTT包)的影响。
在一个可能的设计中,第一标记和第二标记为数据包头部的字段或特定比特位。
在一个可能的设计中,发送端在发送数据包之前,先建立与接收端的通信连接,上述第一个RTT或首轮RTT为通信连接建立后的第一个RTT。
在一个可能的设计中,发送端在与接收端建立通信连接的过程中进行数据传输,上述第一个RTT或首轮RTT为通信连接建立阶段第一个RTT。
在一个可能的设计中,发送端基于接收到的来自接收端的一个或确认,确认所述第一个RTT内发送的所述多个数据包中被所述接收端成功接收的数据包的个数。
在一个可能的设计中,发送端在第二个RTT内允许发送的数据包的数量上限与第一个RTT发送的数据包中已被接收端成功接收的数据包个数呈线性关系。
第二方面,本申请实施例提供了一种数据传输方法,包括:网络设备接收发送端发送的数据包;若所述数据包是所述发送端在与接收端的数据传输阶段的第一个往返时间(RTT)内发送的,则所述网络设备将所述数据包缓存至低优先级队列;若所述数据包不是在所述第一个RTT内发送的,则所述网络设备将所述数据包缓存至高优先级队列;其中,所述高优先级队列中的数据包优先于所述低优先级队列中的数据包被转发。
采用上述方法,网络设备对首轮RTT发送的数据包和非首轮RTT发送的数据包进行区分,并给予非首轮RTT发送的数据包更高的转发优先级,从而减少首轮RTT快速发包对旧流(非首轮RTT包)的冲击,降低网络拥塞发生的概率。
在一个可能的设计中,发送端给首轮RTT发送的数据包添加有特定标记,网络设备基于接收到的数据包携带的标记来判断该数据包是否为发送端在首轮RTT内发送的。
在一个可能的设计中,网络设备维护一个流表,用于记录所有活跃流信息。如果一条流的五元组信息无法在流表里查找到,则将该流分类为新流,并在流表里***一条新流记录。后续数据包在查表时,会命中上述新***流表项,并根据流表项内容确定当前数据包属于新流,即首轮RTT发送的包。当一条新流结束第一轮RTT的数据传输后,更新流表项为“旧流”,所以该流的后续数据包均会根据更新后的流表项被识别为非首轮RTT包。
在一个可能的设计中,流表的每条流记录都有一个有效时间,如果在有效时间里该流后续没有发送任何新的数据包,则删除该流记录。
第三方面,本申请实施例提供一种数据传输方法,包括:网络设备接收发送端发送的数据包;若所述数据包是所述发送端在与所述接收端的数据传输阶段的第一个往返时间(RTT)内发送的,且所述网络设备的接收队列中数据包的个数超出设定阈值,则所述网络设备将所述数据包丢弃;若所述数据包不是在所述第一个RTT内发送的,且所述接收队列未满,则所述网络设备将所述数据包加入所述接收队列。
采用上述方法,网络设备基于接收队列的深度,对首轮RTT发送的数据包进行选择性丢包,从而减少首轮RTT快速发包对旧流(非首轮RTT包)的冲击,降低网络拥塞发生的概率。
在一个可能的设计中,若所述数据包不是在所述第一个RTT内发送的,且所述接收队列已满,则所述网络设备将所述数据包丢弃。
在一个可能的设计中,若所述数据包不是在所述第一个RTT内发送的,且所述接收队列已满,则所述网络设备将所述接收队列中的一个数据包丢弃,其中,丢弃的所述数据包为所述发送端在所述第一个RTT内发送的数据包。
在一个可能的设计中,发送端给首轮RTT发送的数据包添加有特定标记,网络设备基于接收到的数据包携带的标记来判断该数据包是否为发送端在首轮RTT内发送的。
在一个可能的设计中,网络设备维护一个流表,用于记录所有活跃流信息。如果一条流的五元组信息无法在流表里查找到,则将该流分类为新流,并在流表里***一条新流记录。后续数据包在查表时,会命中上述新***流表项,并根据流表项内容确定当前数据包属于新流,即首轮RTT发送的包。当一条新流结束第一轮RTT的数据传输后,更新流表项为“旧流”,所以该流的后续数据包均会根据更新后的流表项被识别为非首轮RTT包。
在一个可能的设计中,流表的每条流记录都有一个有效时间,如果在有效时间里该流后续没有发送任何新的数据包,则删除该流记录。
第四方面,本申请实施例提供一种计算设备,该计算设备具有实现上述方法示例中发送端的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,该计算设备包括处理器、存储器和网卡,该网卡用于接收数据包以及发送数据包,该处理器运行存储器中的协议栈程序,以用于执行上述方法示例中发送端的功能。
在另一种可能的设计中,计算设备的结构中包括接收单元、处理单元以及发送单元,这些单元可以执行上述方法示例中的相应功能,例如,接收单元和发送单元分别用于数据包的接收和发送,处理单元用于数据包的处理,如添加第一和/或第二标记。
第五方面,本申请实施例提供一种网络设备,该网络设备具有实现上述任一方面或任一方面的任一可能的实现方式中网络设备的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,该网络设备包括处理器、存储器和输入/输出端口,该输入/输出端口用于接收数据包以及发送数据包,该处理器运行存储器中的协议栈程序,以用于执行上述方法示例中网络的功能,例如识别首轮RTT发送的数据包,缓存数据包至接收队列,当接收队列已满或队列深度超过设定阈值时丢弃数据包等。
在一种可能的设计中,网络设备的结构中包括接收单元、处理单元以及发送单元,这些单元可以执行上述方法示例中的相应功能,例如,接收单元和发送单元分别用于数据包的接收和发送,处理单元用于数据包的处理,例如识别首轮RTT发送的数据包,缓存数据包至接收队列,当接收队列已满或队列深度超过设定阈值时丢弃数据包等。
在一种可能的设计中,上述接收单元和发送单元为收发器、网卡或通信接口,处理单元为处理器,现场可编程门阵列(FPGA)或特定用途集成电路(ASIC)等硬件电路或专用芯片。
第六方面,本申请实施例提供一种网卡,包括:输入/输出端口,处理器,其中,处理器用于,在发送端与接收端的数据传输阶段的第一个往返时间RTT内通过所述输入/输出端口发送多个数据包;为所述第一个RTT内发送的所述多个数据包添加第一标记,以使得网络设备在接收到携带所述第一标记的数据包后,将所述携带所述第一标记的数据包缓存至低优先级队列或丢弃,其中,所述网络设备的高优先级队列中的数据包优先于所述低优先级队列中的数据包被转发,所述高优先级队列中缓存的数据包未携带所述第一标记。
又一方面,本申请实施例提供了一种计算设备,该计算设备包括上述网卡。
又一方面,本申请实施例提供了一种数据传输***,该***包括上述计算设备和上述网络设备。
再一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述计算设备或网络设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
相较于现有技术,本申请实施例提供的方案中,本申请实施例提供的数据传输方法,发送端在建立TCP连接后的首个RTT内发大量的数据包,从而充分利用网络空余带宽来使新数据流无延迟快速启动,同时以一条数据流是否新流为标准进行流分类,并对不同流设置不同的网络传输优先级,以免新流的数据包干扰旧流数据包传输,造成网络拥塞。也就是说,本申请实施例提供的数据传输方法,在网络带宽利用率和网络拥塞发生概率之间取得了更好的平衡,在充分利用网络带宽的同时也尽量避免造成网络拥塞。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1是现有技术中一种拥塞控制算法示意图。
图2是本申请实施例的数据传输***的架构图。
图3是本申请一实施例的计算设备的结构示意图。
图4是本申请另一实施例的计算设备的结构示意图。
图5是本申请另一实施例的计算设备的结构示意图。
图6是本申请实施例的数据传输方法的流程图。
图7是本申请实施例的基于高低优先级队列的数据传输示意图。
图8是本申请实施例的选择性丢包过程示意图。
图9是本申请实施例的数据传输方法的流程图。
图10是本申请实施例的TCP数据包的格式示意图。
图11是本申请实施例的网络设备的结构示意图。
图12是本申请实施例的另一数据传输***架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。
在开始描述本申请具体实施例之前,先介绍在本申请以下实施例中将会被提及的术语及其含义。可以理解的是,无如其他说明,本申请各个实施例中的这些术语及其含义均可以是相同的。
数据包:也称为报文,是网络传输的基本单位,以一定格式组织起来的数据。不同类型的网络协议对数据包的格式有不同的定义,但通常而言,一个数据包可分为头部(header)和净荷(payload),其中,头部包含了数据包传输过程中必需的信息,比如地址信息、标志位等等,净荷也称为数据包的数据部分,包含了被发送的数据内容。
交换机:能够转发数据包的一种网络设备,能为网络提供更多的连接端口,以便连接更多的设备到网络中。
交换机队列:交换机中用于存储接收到的数据包的功能单元。
服务器:提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。
终端设备:向用户提供语音和/或数据连通性的设备,包括无线终端或有线终端。无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)或具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。
数据中心:数据中心是一整套复杂的设施。它不仅仅包括计算机***和其它与之配套的设备(例如通信和存储***),还包含冗余的数据通信网络、环境控制设备、监控设备以及各种安全装置。这些设备被放置在一起是因为它们具有相同的对环境的要求以及物理安全上的需求,并且这样放置便于维护。
数据中心网络:连接数据中心里所有计算机***的网络。
网络带宽:网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量。
数据流:指网络中从一个计算设备(如服务器A)发往另外一个计算设备(如服务器B)的一组数据包,数据流的定义方式可以随应用的需求不同而改变,通常由五元组(源IP地址,目的IP地址,源端口号,目的端口号,协议类型)来定义一条数据流。
网络拥塞:网络拥塞是指在网络中传送数据量太大时,由于网络资源有限而造成网络传输性能下降的情况。通常情况下,当网络中负载过度增加致使网络性能下降时,就会发生网络拥塞。
拥塞控制:即通过某种方法来解决或缓解网络拥塞。拥塞控制需要确保网络能够承载用户提交的通信量,是一个全局性问题,涉及主机、交换机等很多因素。衡量网络是否拥塞的参数主要有:数据包丢失率、交换机队列深度(平均或瞬时)、超时重传的数据包数目、平均传输延迟等。
拥塞控制算法:解决网络拥塞的算法。
确认(Acknowledgement,ACK):数据传输过程中由接收端发给发送端的一种控制包,用于表示发送端发来的数据已确认接收。
往返时间(Round-Trip Time,RTT):网络传输中一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(ACK),总共经历的时延。RTT由三个部分决定:即链路的传播时间、发送端和接收端的处理时间以及中间网络设备缓存中的排队和处理时间。其中,前面两个部分的值相对固定,网络设备缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。
传输控制协议(Transmission Control Protocol,TCP):是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
显式拥塞通知(Explicit Congestion Notification,ECN):是一个对TCP协议的扩展,定义于IETF的RFC 3168。ECN允许拥塞控制的端对端通知而避免丢包。ECN为一项可选功能,如果底层网络设施支持,则可能被启用ECN的两个端点使用。通常来说,网络通过丢弃数据包来表明信道阻塞。在ECN成功协商的情况下,支持ECN的交换机可以在数据包包头中设置一个标记来代替丢弃数据包,以标明拥塞即将发生。数据包的接收端在检测到数据包被网络设备标记后,在返回的ACK中做相应标记以通知发送端网络发生拥塞;相应地,发送端降低其传输速率,就如同在传统TCP拥塞控制算法中检测到丢包那样。
远程直接内存访问(Remote Direct Memory Access,RDMA):为了解决网络传输中服务器端数据处理的延迟而产生的一种技术。RDMA通过网卡卸载协议栈的方式,将数据从一台服务器快速移动到另一台服务器内存中,整个过程不需要经过操作***的参与(内核旁路),因而能减少CPU的负载。
数据平面开发套件(Data Plane Development Kit,DPDK):是一组快速处理数据包的开发平台及接口。DPDK在应用层为快速的数据包处理及网络传输提供一个简单而完善的架构。DPDK允许应用层封装好的数据包直接发送给网卡,过程中不需要经过操作***的参与,因而能减少内存和CPU的负载。
在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图2示出了本发明方案适用的一种数据传输***10的简易架构。如图2所示,多个计算设备100通过网络200通信连接。计算设备100可以是具有数据收发能力的任何设备,比如服务器、终端设备、或虚拟机等等。网络200可以为数据中心网络,因特网、局域网或广域网等。网络200包括一个或多个网络设备210,比如交换机、网关、路由器等能实现数据包转发的设备。两个设备利用通信相关的组件,比如协议栈、网卡等建立通信连接,并根据建立的连接,以数据包为单位传输数据。数据包在传输的过程中会经过网络200中的一个或多个网络设备200,网络设备200先将接收到的数据包缓存在交换机队列中,然后再转发给其它设备。为了简化描述,本申请实施例中将已建立通信连接的两个设备中的一个称为发送端,另一个称为接收端。可以理解的是,发送端和接收端可以是具有数据收发能力的任何设备。比如,发送端可以是一台服务器,接收端是另一台服务器;或者发送端是终端设备,接收端是服务器;或者发送端和接收端均为终端设备。另外,发送端和接收端是两个相对的角色,且可以互相转换,即同一设备在不同的场景下可能是发送端,也有可能是接收端。
所属领域的技术人员可以理解一个数据传输***通常可包括比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本申请实施例所公开的多个实现方式更加相关的部件。
图2所示的数据传输***10仅作为本发明的一种典型应用场景,不应理解为对本发明应用场景的限定。
在数据传输***中传输数据不可避免地会存在数据包丢失现象,因此为了保证数据的可靠传输,数据传输***通常会引入了慢启动、拥塞避免等拥塞控制算法来抑制网络拥塞,但这些拥塞控制算法同时也会极大的限制数据的数据传输速率,增加传输时延,降低带宽利用率。本申请实施例提供一种数据传输方法,可以在减少网络拥塞的同时,能够充分利用网络带宽,提高数据传输速率,降低数据传输时延。该方法可以用于基于TCP进行数据传输的设备。可以理解的是,其它允许丢包的网络也可以使用该方法进行拥塞控制。
图3示出了本申请实施例的计算设备100的一个示例性的结构示意图。如图3所示,计算设备100包括:处理器110、存储器130和网卡(network interface card,NIC)150等部件。这些部件可通过一根或多根通信总线或信号线进行通信。本领域技术人员可以理解,计算设备100可以包括比图示更多或更少的部件,或者组合某些部件。
处理器110是计算设备100的控制中心,利用各种接口和总线连计算设备100的各个部件。在一些实施例中,处理器110可包括一个或多个处理单元。
存储器130中存储有可执行程序,诸如图3所示的操作***131和应用程序133。处理器110被配置用于执行存储器130中的可执行程序,从而实现该程序定义的功能,例如处理器110执行操作***131从而在计算设备100上实现操作***的各种功能。存储器130还存储有除可执行程序之外的其他数据,诸如操作***131和应用程序133运行过程中产生的数据。存储器130可以包括一个或多个存储设备。在一些实施例中,存储器130为非易失性存储介质,一般包括内存和外存。内存包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read-Only Memory,ROM),或高速缓存(cache)等。外存包括但不限于闪存(flash memory)、硬盘、通用串行总线(universal serial bus,USB)盘等。可执行程序通常被存储在外存上,处理器在执行可执行程序前会将该程序从外存加载到内存。
存储器130可以是独立的,通过总线与处理器110相连接;存储器130也可以和处理器110集成到一个芯片子***。
网卡150是实现数据包发送与接收、数据包的封装与解封装、介质访问控制以及数据缓存等功能的硬件单元。网卡150包括处理器、存储器(包括RAM和/或ROM)以及输入/输出端口,其中,输入/输出端口用于接收和发送数据包,存储器用于缓存接收到的数据包或待发送的数据包,处理器通过运行存储器中的程序,以对数据包进行处理,比如封装/解封装等。
进一步地,在一个实施例中,如图3所示,计算设备100从逻辑上可划分为硬件层21、操作***131以及应用层27。硬件层21包括如上所述的处理器110、存储器130、网卡150等硬件资源。应用层31包括一个或多个应用程序,比如应用程序133。操作***131作为硬件层21和应用层31之间的软件中间件,是管理和控制硬件与软件资源的可执行程序。
操作***131包括内核23,内核23用于提供底层***组件和服务,例如:电源管理、内存管理、协议栈25、硬件驱动程序26等。协议栈25是实现网络协议的组件。在一个实施例中,硬件驱动程序26包括存储器驱动233、网卡驱动235。在一个实施例中,协议栈25包括网络层协议组件253和传输层协议组件255,分别用于实现网络层和传输层的网络协议功能。本申请实施例提供的数据传输方法可以由内核12中的传输层协议组件255来实施。
在一个实施例中,计算设备100可以将协议栈相关组件的功能卸载到网卡,从而实现内核旁路,提升数据转发性能。如图4所示,网卡150为可编程网卡,传输层协议组件255实现在可编程网卡150中。相应地,本申请实施例提供的数据传输方法可以由网卡150来实施,例如,可以通过修改网卡150的硬件或固件来实现该方法。
在一个实施例中,如图5所示,计算设备100可以将传输层协议组件255实现在应用层(如DPDK技术),从而实现内核旁路,提升数据转发性能。相应地,本申请实施例提供的数据传输方法可以由应用层的软件来实施。
图6示出了本申请实施例提供的数据传输方法的流程示意图。为了便于描述,本申请实施例将通过网络设备210进行数据传输的两台计算设备100中的一台称为发送端,另一台称为接收端。如图6所示,该数据传输方法包括如下步骤:
步骤610:发送端在与接收端的数据传输阶段的首个RTT内发送多个数据包,或者在首个RTT内以很大的速率(线速或者任意自定义速率)发送数据包。RTT是发送端从发送数据开始,到收到来自接收端的确认所经历的时间。RTT不是一个固定值,是一个测量值,它会随着整个网络拥塞程度的变化而变化。对于首个RTT来说,它是从发送端发送首个数据包开始,直至发送端收到来自接收端的确认所经历的时长。在数据传输过程中,发送端可以根据发送的数据包的时间戳以及接收到的确认的时间戳动态估算RTT值,因此,随着网络拥塞程度的变化,RTT也会变化。
步骤610中,发送端在收到来自接收端的确认之前,可以无限制地发送多个数据包,而不必像现有技术的慢启动机制那样,仅发送一个数据包。这里的多个数据包至少包括二个数据包,优选地,包括两个以上,甚至远多于两个数据包。数据传输阶段是相对连接建立阶段而言的。发送端和接收端要能实现数据传输,需要建立通信连接,连接建立阶段通常涉及一次或多次消息交互。本申请各个实施例中所描述的“首个RTT”,一般是指发送端和接收端之间的通信连接建立后,进行数据传输的第一个RTT。在某一些特殊的情形下,连接建立阶段和数据传输阶段可能不是串行,而并行的,即发送端在与接收端建立连接的过程中就开始进行数据传输。在这种情况下,“首个RTT”是指发送端开始向接收端传输数据的第一个RTT。
步骤630:网络设备210接收该多个数据包中的一个或多个,并缓存至接收队列,并在合适的时机转发;
步骤650:发送端根据首个RTT内发送的数据包中,被接收端成功接收的数据包的个数,调整下一个RTT(非首轮RTT),即第二个RTT内发送数据包的个数或发送速率,并基于调整后的个数或发送速率继续发送数据包。例如,若首个RTT内发送的数据包中被接收端成功接收的数据包个数为N,则可以调整下一个RTT内允许发送数据包的上限为N,N+1,或者与N具有线性关系的整数值。
需要说明的是,步骤650中“被接收端成功接收的数据包的个数”通常是发送端基于接收端的反馈来确定或者估算的,与实际被接收端成功接收的数据包的个数可能会存在误差。在一个实施例中,接收端每接收到一个数据包,就会向发送节点回复一个对应的确认(acknowledgement),表明接收端已成功接收该报文。相应地,发送端基于接收到的来自接收端的确认,确认所述第一个RTT内发送的所述多个数据包中被所述接收端成功接收的数据包的个数。在一个实施例中,接收端也可以通过一个携带扩展字段的确认,反馈已经成功接收的多个数据包的信息,或者未成功接收的一个或多个数据包的信息,发送端基于接收到的确认中的扩展字段,即可确定所述第一个RTT内发送的所述多个数据包中被所述接收端成功接收的数据包,进而确定数据包的个数。
步骤670:网络设备210接收发送端在非首轮RTT发送的一个或多个数据包,并缓存至接收队列,并在合适的时机转发。
为了减少网络拥塞,网络设备210可以对首个RTT内发送的数据包和非首个RTT内发送的数据包进行差异化的操作。其中,网络设备210可以采用多种方式来区分发送端在首个RTT内发送的数据包以及非首个RTT内发送的数据包。
在一个实施例中,如图6中步骤640所示,发送端可以对首个RTT内发送的数据包添加第一标记,以便于网络设备210快速识别首个RTT内发送的数据包。
可选地,如步骤680所示,发送端也可以为非首个RTT内发送的数据包添加第二标记,以便于网络设备210快速识别非首个RTT内发送的数据包。其中,第一标记和第二标记可位于数据包头部的某一扩展字段,比如选项(Option)字段,或保留(reserved)字段等等。在一个实施例中,第一标记和第二标记可以为数据包报报头的ECN比特位,ECN比特位置为某个特定值(比如,0或1等)时用于表示数据包为首个RTT内发送的数据包。相应地,网络设备210在接收到任一数据包后,根据该数据包携带的的标记即可确定该数据包是否为首个RTT内发送的数据包。
在另一个实施例中,网络设备210可以维护一个记录所有活跃数据流信息的流表,并基于流表进行新旧流分类以确定数据包是否是首个RTT内发送的。其中,活跃数据流是指已经完成首轮RTT数据传输的数据流。如果一条流的五元组信息无法在流表里查找到,则将该流分类为新流,并在流表里***一条新流记录。若根据数据包的五元组查询该流表表,命中上述新***流表项,则确定当前数据包属于新流,即首个RTT发送的数据包。当一条新流结束第一轮RTT的数据传输后,更新流表项为“旧流”,所以后续数据包均会根据更新后的流表项被识别为旧流,即非首个RTT发送的数据包。可选地,流表的每条流记录都有一个有效时间,如果在有效时间里该流没有传输任何新的数据包,则删除该流记录。反之,则等有效时间到期后重新开始计算有效时间。
在一个实施例中,在步骤650中,第一轮RTT的数据传输之后,第二轮RTT的流速率可以根据以下方法(1)或(2)计算:
(1)根据第一个RTT成功传输的数据包数量来确定第二个RTT的流速率。假设拥塞窗口初始化为1(cwnd=1),则该拥塞窗口在第一个RTT不起作用。第二个RTT内,每收到一个确认则将cwnd的值增加1,并且第二个RTT内允许发送的数据包数量由cwnd的值来确定。
(2)主动式拥塞控制算法:从第二个轮RTT开始,发送速率的使用现有的拥塞控制算法来计算。
进一步地,网络设备210根据识别出的首个RTT内发送的数据包和非首个RTT内发送的数据包,进行差异化的缓存和转发。
在一个实施例中,如图7所示,网络设备210包含多个优先级队列,比如高优先级队列和低优先级队列,网络设备210将首个RTT内发送的数据包缓存至低优先级队列,将非首个RTT内发送的数据包缓存至高优先级队列。高优先级队列中的数据包优先被转发,当高优先级队列为空,或者高优先级队列深度小于预设阈值时,低优先级队列中的数据包才会被转发。队列的深度是指队列中缓存的数据包的数目。其中,高优先级队列和低优先级队列分别可以有一个或多个,比如网络设备210有2个高优先级队列和2个低优先级队列,或者有3个高优先级队列和1个低优先级队列。
在另一个实施例中,如图8所示,为网络设备210的接收队列设置一个选择性丢包阈值k,当接收队列的深度小于阈值k时,网络设备210接收到的首个RTT内发送的数据包和非首个RTT内发送的数据包均可缓存至接收队列;而当接收队列的深度大于或等于阈值k时,若当前接收到的数据包为首个RTT内发送的数据包,则网络设备210会将该数据包丢弃。若当前接收到的数据包为非首个RTT内发送的数据包,且接收队列未满,则网络设备210才会将其缓存至接收队列。其中,接收队列的深度是指接收队列中的数据包的个数。
作为一种可选的实施例方式,当接收队列已满,或者接收队列的深度大于或等于阈值k时,若当前接收到的数据包为非首个RTT内发送的数据包,网络设备210也可以将接收队列中已缓存的首个RTT内的数据包丢弃一个或多个,以给新接收到的非首个RTT内发送的数据包“腾出空间”。
作为一种可选的实施例方式,当接收队列已满,若当前接收到的数据包为非首个RTT内发送的数据包,网络设备210也可以将当前接收到的数据包丢弃。
作为一种可选的实施例方式,当接收队列的深度大于或等于另一阈值s时,若当前接收到的数据包为非首个RTT内发送的数据包,网络设备210也可以将当前接收到的数据包丢弃,其中,这里的阈值s大于或等于前述选择性丢包阈值k。
作为一种可选的实施例方式,当网络设备210有多个接收队列时,可以为不同的接收队列设置不同的选择性丢包阈值。例如,为用于缓存首个RTT内发送的数据包的低优先级队列设置第一阈值m,为用于缓存非首个RTT内发送的数据包的高优先级队列设置第一阈值n,其中,m<n。这样当低优先级队列深度大于或等于m时,若网络设备210接收到首个RTT内发送的数据包,则丢弃;当高优先级队列深度大于或等于n时,若网络设备210接收到非首个RTT内发送的数据包,则丢弃。
图9示出了当计算设备100基于TCP进行数据传输时,应用本申请实施例的数据传输方法的流程示意图。应当理解,TCP只是计算设备可能使用的一种传输协议,其它的传输协议也可适用于本申请实施例的方法。为了便于描述,本申请实施例将通过网络设备210进行数据传输的两台计算设备100中的一台称为发送端,另一台称为接收端。如图9所示,该数据传输方法包括如下步骤:
步骤910:发送端与接收端建立TCP连接。
在一个实施例中,该TCP连接的建立可由发送端上的应用程序发起。应用程序生成套接字开启(socket open)命令,该命令被传递给发送端的协议栈,以触发协议栈通过三次消息交互(也称为“三次握手”)与接收端建立TCP连接,然后,协议栈通知应用程序连接已经建立。TCP数据包的格式如图10所示,其中,源端口号和目的端口号用于确定发送端和接收端应用进程,通过五元组(源端口号、目的端口号、源IP地址、目的IP地址和传输层协议号)可以唯一确定一个TCP连接,该TCP连接上传输的数据包构成一条数据流,即同一条数据流中的数据包具有相同的五元组;TCP数据包头部的序列号(Sequence Number,seq)字段用于指示数据包的序号,通常情况下,数据包的序号为数据包净荷中第一个数据字节的序列号。接收端在接收到TCP数据包后,发送确认(Acknowledgement,ACK)至发送端。窗口大小用于指示接收端当前接收缓冲区的大小。另外,TCP数据包头部还有6个控制位以及一个可自定义的选项(Option)字段,选项字段可以用于携带额外的信息;其中6个控制位的定义如下:
URG:紧急指针有效;
ACK:确认号有效;
PSH:立即上送应用层处理;
RST:异常复位;
SYN:同步标志,置1建立连接;
FIN:终止标志,请求释放连接。
参照图9,发送端与接收端通过“三次握手”建立TCP连接,具体如下:
(1)发送端首先向接收端发一个SYN(Synchronize)包,告诉接收端请求建立连接;其中,SYN包就是仅SYN控制位设为1的TCP包(参见图10TCP数据包格式)。
(2)接收端收到SYN包后会向发送端返回一个对SYN包的确认包(SYN/ACK),表示对第一个SYN包的确认;其中,SYN/ACK包是仅SYN和ACK标记为1的包。
(3)发送端收到SYN/ACK包后,向接收端发一个确认包(ACK),通知接收端连接已建立。至此,三次握手完成,TCP连接建立。
步骤930:发送端在连接建立后的首个RTT内发送多个数据包。
根据现有的拥塞控制算法中的慢启动机制,拥塞窗口大小cwnd初始化为1,发送端在连接建立后的首个RTT只发送1个数据包。而本申请实施例在连接建立后的首个RTT就发送多个数据包,即在首个RTT充分利用网络带宽,以较大的速率发送数据包。具体地,为了实现首个RTT发送多个数据包的目的,发送端可以将拥塞窗口大小cwnd初始化为一个较大的值(cwnd=n,n>1),然后基于初始化的cwnd发送相应数量的数据包。可以理解的是,发送端也可以仍然按照现有方式,将拥塞窗口大小初始化为1(cwnd=1),但通过其他手段使该拥塞窗口在首个RTT不起作用。
步骤950:发送端首个RTT内发送的多个数据包经过网络设备210时,网络设备210将该多个数据包缓存至接收队列,并在合适的时机依序转发。
步骤970:发送端根据首个RTT发送的数据包中,被接收端成功接收的数据包个数,调整拥塞窗口大小cwnd,并在第二个RTT内基于调整后的cwnd发送相应数量的数据包,这里的第二个RTT是指上述首个RTT后的下一个RTT。RTT是一个估计值,具体的估算方法可以参照现有技术,不再赘述。
在一个实施例中,接收端每成功接收一个数据包,便返回一个对应的ACK给发送端。在另一个实施例中,接收端也可以通过一个数据包携带扩展选项,比如选择性确认(Selective Acknowledgment,SACK)来指示多个被成功接收的数据包。发送端可以基于接收到的来自接收端的确认来确定被接收端成功接收的数据包,进而调整cwnd。
在一个实施例中,若首个RTT发送的数据包中,被接收端成功接收的数据包个数为m,则可以将cwnd调整为m+1,或与m具有某种线性约束关系的值。
在一个实施例中,可以采用慢启动、拥塞避免等拥塞控制算法来调整拥塞窗口大小cwnd。其中,慢启动的算法的过程如下:
1)初始化拥塞窗口cwnd=1,表明可以发送一个数据包;
2)每当收到一个ACK,cwnd++;呈线性上升;
3)每当过了一个RTT,cwnd=cwnd*2;
当然,cwnd不可能无限制增长,因此,发送端还设置了慢启动阈值(slow startthreshold)ssthresh,表示拥塞窗口的上限,当cwnd>=ssthresh时,就会触发拥塞避免算法。一种典型的拥塞避免算法如下:
1)收到一个ACK时,cwnd=cwnd+1/cwnd
2)当每过一个RTT时,cwnd=cwnd+1
这样就可以避免数据包增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。
步骤990:网络设备210接收到第二个RTT内发送的数据包后,将数据包缓存至接收队列,并依序转发。
步骤1000:数据传输完成后,发送端断开与接收端之间的连接。在一个实施例中,若发送端和接收端之间的连接为TCP连接,则发送端和接收端具体可以通过“四次握手”断开连接,具体过程可以参考现有技术的相关描述,在此不再赘述。
与图6所示的实施例类似,网络设备210可以对首个RTT内发送的数据包和非首个RTT内发送的数据包进行差异化的操作。
其中,网络设备210可以采用多种方式来区分发送端在首个RTT内发送的数据包以及非首个RTT内发送的数据包。例如,发送端可以对首个RTT内发送的数据包添加第一标记,或者可以为非首个RTT内发送的数据包添加第二标记,或者也发送端可以对首个RTT内发送的数据包和非首个RTT内发送的数据包都进行标记。其中,第一标记和第二标记可位于数据包头部的某一字段,比如选项(Option)字段,保留(reserved)字段或者控制位字段。在一个实施例中,第一标记和第二标记可以为数据包报报头的ECN比特位,ECN比特位置为某个特定值(比如,0或1等)时用于表示数据包为首个RTT内发送的数据包。相应地,网络设备210在接收到任一数据包后,根据该数据包携带的的标记即可确定该数据包是否为首个RTT内发送的数据包。再例如,网络设备210也可以维护一个记录数据流信息的流表,并基于流表进行新旧流分类以确定数据包是否是首个RTT内发送的,通过查询流表以判断数据包是否为首个RTT发送的相关细节可以参见前面的实施例,不再赘述。
进一步地,网络设备210根据识别出的首个RTT内发送的数据包和非首个RTT内发送的数据包,进行差异化的缓存和转发。例如,网络设备210可以使用高低优先级队列来对首个RTT内发送和非首个RTT内发送的数据包进行差异化的缓存,具体细节可以参照图7相关的实施例。又例如,当接收队列的深度超过选择性丢包阈值时,网络设备210可以使用图8所示的选择性丢包方案来丢弃首轮RTT发送的一个或多个数据包。
本申请实施例提供的数据传输方法,发送端在与接收端的数据传输阶段的首个RTT内发大量的数据包,从而充分利用网络空余带宽来使新数据流无延迟快速启动,同时以一条数据流是否新流为标准进行流分类,并对不同流设置不同的网络传输优先级,以免新流的数据包干扰旧流数据包传输,造成网络拥塞。也就是说,本申请实施例提供的数据传输方法,在网络带宽利用率和网络拥塞发生概率之间取得了更好的平衡,在充分利用网络带宽的同时也尽量避免造成网络拥塞。
在一个实施例中,图6至图9相关实施例所描述的发送端的功能,由计算设备100的协议栈25来实现,如图3所示。相应地,以上实施例描述的网络设备210的功能也可由网络设备210的协议栈来实现。计算设备100的协议栈25可由计算设备100上的软件、硬件和/或固件的适当组合执行。例如,在一种可能的实现方式中,协议栈25以可执行程序的形式存储于存储器130中;计算设备100的处理器110运行协议栈对应的可执行程序,以执行上述各方法实施例所描述的发送端的部分或全部步骤。
在一种可能的实现方式中,协议栈25为一个独立的可执行程序,操作***131通过接口调用协议栈以进行数据包处理和传输。在另一种可能的实现方式中,协议栈25也可以被包含在操作***131中,作为操作***内核23的一部分。其中,协议栈按照协议层级或功能又可以分为多个协议组件或模块,每一个组件实现一层协议的功能,比如网络层协议组件用于实现网络层协议(比如IP协议),传输层协议组件用于实现传输层协议(比如TCP或者UDP协议),等等。
需要说明的是,本申请实施例所使用的术语“可执行程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。
图6至图9相关实施例所描述的发送端的功能,也可以由计算设备100的网卡150来实现。在一种可能的实现方式中,如图4所示,该网卡150为可编程网卡,传输层协议组件255的功能可以由现场可编程门阵列(Field Programmable Gate Array,FPGA)或特定用途集成电路(Application Specific Integrated Circuit,ASIC)等硬件电路或专用芯片来实现,该硬件电路或专用芯片可以集成在可编程网卡150中。在另一种可能的实现方式中,网卡150包括:处理器、存储器以及输入/输出端口,其中,输入/输出端口用于接收和发送数据包,存储器用于缓存接收到的数据包或待发送的数据包,处理器通过运行存储器中的程序,以实现图6至图9相关实施例所描述的发送端的功能。
可以理解的是,本申请实施例所描述的数据传输方法应用于数据网络、因特网、局域网等网络中发送端和接收端之间数据传输,发送端和接收端为建立通信连接且具有数据收发能力的设备,比如计算机、终端设备、服务器、交换机、路由器等等。
本申请实施例还提供一种网络设备400,如图11所示,该网络设备400包括:处理电路402,以及与其连接的通信接口404和存储介质406。
处理电路402用于处理数据,控制数据访问和存储,发出命令以及控制其它组件执行操作。处理电路402可以被实现为一个或多个处理器,一个或多个控制器和/或可用于执行程序的其它结构。处理电路402具体可以包括通用处理器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑组件中的至少一种。通用处理器可以包括微处理器,以及任何常规的处理器,控制器,微控制器,或状态机。处理电路302也可以实现为计算组件,例如DSP和微处理器的组合。
存储介质406可以包括计算机可读存储介质,如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它们的任意组合。存储介质406可以耦合到处理电路402以使得处理电路402可读取信息和将信息写入到存储介质406。具体地,存储介质406可以集成到处理电路402,或者存储介质406和处理电路302可以是分开的。
通信接口404可包括电路和/或程序以实现网络设备400与一个或多个无线网络设备(例如,路由器、交换机、接入点等等)之间的双向通信。通信接口404包括至少一个接收电路416和/或至少一个发射电路418。在一个实施例中,通信接口404可以是全部或部分由无线调制解调器来实现。
在一个实施例中,存储介质406中存储有协议栈程序420,处理电路402被适配为执行存储在存储介质406中的协议栈程序420,以实现上述图6至9相关的实施例中网络设备的部分或全部功能。
基于以上各个实施例描述的数据传输方法,本申请实施例还提供一种数据传输***,如图12所示,该***包括通过物理交换机230连接的多台服务器(例如图12所示的服务器103、105和107)。以服务器103为例,服务器103的硬件包括处理器102、存储器104和网卡106,服务器103的软件包括虚拟交换机250、虚拟机(virtual machine,VM)205和206,服务器103上的VM 205和VM 206通过虚拟交换机250通信,VM 205和VM 206通过虚拟交换机250和网卡103与其它服务器上的VM通信。其中,服务器103用于实现图6至图9相关实施例所描述的发送端的功能,物理交换机230用于实现图6至图9相关实施例所描述的网络设备的功能。具体地,在一个实施例中,服务器103可以通过处理器102执行存储器104中的可执行程序来实现以上描述的发送端的功能,可以理解的是,在程序执行过程中,若涉及对外发送数据包(比如向另一服务器发送数据包),则需要调用网卡106的驱动程序以驱动网卡106执行数据包的发送操作。在另一个实施例中,服务器103也可以通过网卡106来单独实现以上描述的发送端的功能,比如可以由集成在网卡106中的FPGA或ASIC等硬件电路或专用芯片来实现。
上述数据传输***仅是举例说明,适用于本发明技术方案的数据传输统不限于此,例如,服务器还可以安装容器或者其它虚拟操作***软件,服务器的数量还可以是其它数量,每个服务器所包括的硬件也都不限于图12所示的硬件。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端设备,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储可执行程序的介质。
Claims (39)
1.一种数据传输方法,其特征在于,包括:
发送端在与接收端的数据传输阶段的第一个往返时间RTT内发送多个数据包;
所述发送端为所述第一个RTT内发送的所述多个数据包添加第一标记,以使得网络设备在接收到携带所述第一标记的数据包后,将所述携带所述第一标记的数据包缓存至低优先级队列或丢弃,其中,所述网络设备的高优先级队列中的数据包优先于所述低优先级队列中的数据包被转发,所述高优先级队列中缓存的数据包未携带所述第一标记。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述发送端确认所述第一个RTT内发送的所述多个数据包中被所述接收端成功接收的数据包的个数;
所述发送端根据确定的所述成功接收的数据包的个数,确定第二个RTT内发送数据包的个数或发送速率;
所述发送端在第二个RTT内,基于确定的所述发送数据包的个数或发送速率发送一个或多个数据包。
3.根据权利要求2所述的方法,其特征在于,还包括:
所述发送端为所述第二个RTT内发送的所述一个或多个数据包添加第二标记,以使得网络设备在接收到携带所述第二标记的数据包后,将所述携带所述第二标记的所述数据包缓存至高优先级队列,其中,所述低优先级队列中缓存的数据包未携带所述第二标记。
4.根据权利要求2所述的方法,其特征在于,还包括:
所述发送端为所述第二个RTT内发送的所述一个或多个数据包添加第二标记,以使得网络设备在接收到携带所述第二标记的数据包后,若接收队列已满或所述接收队列中数据包的个数超出设定阈值,则将所述接收队列中未携带所述第二标记的一个或多个数据包丢弃。
5.根据权利要求1所述的方法,其特征在于,所述第一标记用于指示所述第一个RTT内发送的数据包。
6.根据权利要求3或4所述的方法,其特征在于,所述第二标记用于指示非所述第一个RTT内发送的数据包。
7.根据权利要求1至6任一项所述的方法,所述第一个RTT为所述发送端与所述接收端建立通信连接后的首个RTT。
8.一种数据传输方法,其特征在于,包括:
网络设备接收发送端发送的数据包;
若所述数据包是所述发送端在与接收端的数据传输阶段的第一个往返时间RTT内发送的,则所述网络设备将所述数据包缓存至低优先级队列;
若所述数据包不是在所述第一个RTT内发送的,则所述网络设备将所述数据包缓存至高优先级队列;其中,所述高优先级队列中的数据包优先于所述低优先级队列中的数据包被转发。
9.根据权利要求8所述的方法,其特征在于,还包括:
所述网络设备确定所述数据包是否是所述发送端在所述第一个RTT内发送的。
10.根据权利要求9所述的方法,其特征在于,所述数据包携带有第一标记,所述第一标记是由所述发送端添加的,用于指示所述数据包为所述第一个RTT内发送的;所述确定步骤包括:
所述网络设备根据所述数据包携带的所述第一标记,确定所述数据包是所述发送端在所述第一个RTT内发送的。
11.根据权利要求9或10所述的方法,其特征在于,所述数据包携带有第二标记,所述第二标记是由所述发送端添加的,用于指示所述数据包不是在所述第一个RTT内发送的;所述确定步骤包括:
所述网络设备根据所述数据包携带的所述第二标记,确定所述数据包不是所述发送端在所述第一个RTT内发送的。
12.根据权利要求9所述的方法,其特征在于,所述确定步骤包括:
所述网络设备根据所述数据包的特征信息查询流表,以确定所述数据包是否是所述发送端在所述第一个RTT内发送的,其中,所述流表存储有一条或多条数据流的特征信息。
13.一种数据传输方法,其特征在于,包括:
网络设备接收发送端发送的数据包;
若所述数据包是所述发送端在与所述接收端的数据传输阶段的第一个往返时间RTT内发送的,且所述网络设备的接收队列中数据包的个数超出设定阈值,则所述网络设备将所述数据包丢弃;
若所述数据包不是在所述第一个RTT内发送的,且所述接收队列未满,则所述网络设备将所述数据包加入所述接收队列。
14.根据权利要求13所述的方法,其特征在于,还包括:
若所述数据包不是在所述第一个RTT内发送的,且所述接收队列已满,则所述网络设备将所述数据包丢弃。
15.根据权利要求14所述的方法,其特征在于,还包括:
若所述数据包不是在所述第一个RTT内发送的,且所述接收队列已满,则所述网络设备将所述接收队列中的一个数据包丢弃,其中,丢弃的所述数据包为所述发送端在所述第一个RTT内发送的数据包。
16.根据权利要求14或15所述的方法,其特征在于,还包括:所述网络设备确定所述数据包是否是所述发送端在所述第一个RTT内发送的。
17.根据权利要求16所述的方法,其特征在于,所述数据包携带有第一标记,所述第一标记是由所述发送端添加的,用于指示所述数据包为所述第一个RTT内发送的;所述确定步骤包括:
所述网络设备根据所述数据包携带的所述第一标记,确定所述数据包是所述发送端在所述第一个RTT内发送的。
18.根据权利要求16或17所述的方法,其特征在于,所述数据包携带有第二标记,所述第二标记是由所述发送端添加的,用于指示所述数据包不是在所述第一个RTT内发送的;所述确定步骤包括:
所述网络设备根据所述数据包携带的所述第二标记,确定所述数据包不是所述发送端在所述第一个RTT内发送的。
19.根据权利要求16所述的方法,其特征在于,所述确定步骤包括:
所述网络设备根据所述数据包的特征信息查询流表,以确定所述数据包是否是所述发送端在所述第一个RTT内发送的,其中,所述流表存储有一条或多条数据流的特征信息。
20.一种计算设备,包括:处理器、存储器及存储在所述存储器上的可执行程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任一项所述方法的步骤。
21.一种网络设备,包括:处理器、存储器及存储在所述存储器上的可执行程序,其特征在于,所述处理器执行所述程序时实现权利要求8至12中任一项所述方法的步骤。
22.一种网络设备,包括:处理器、存储器及存储在所述存储器上的可执行程序,其特征在于,所述处理器执行所述程序时实现权利要求13至19中任一项所述方法的步骤。
23.一种网卡,包括:输入/输出端口,处理器,其特征在于,所述处理器用于,在发送端与接收端的数据传输阶段的第一个往返时间RTT内通过所述输入/输出端口发送多个数据包;为所述第一个RTT内发送的所述多个数据包添加第一标记,以使得网络设备在接收到携带所述第一标记的数据包后,将所述携带所述第一标记的数据包缓存至低优先级队列或丢弃,其中,所述网络设备的高优先级队列中的数据包优先于所述低优先级队列中的数据包被转发,所述高优先级队列中缓存的数据包未携带所述第一标记。
24.根据权利要求23所述的网卡,其特征在于,所述处理器还用于,确认所述第一个RTT内发送的所述多个数据包中被所述接收端成功接收的数据包的个数;根据确定的所述成功接收的数据包的个数,确定第二个RTT内发送数据包的个数或发送速率;在第二个RTT内,基于确定的所述发送数据包的个数或发送速率发送一个或多个数据包。
25.根据权利要求24所述的网卡,其特征在于,所述处理器还用于,为所述第二个RTT内发送的所述一个或多个数据包添加第二标记,以使得网络设备在接收到携带所述第二标记的数据包后,将所述携带所述第二标记的所述数据包缓存至高优先级队列,其中,所述低优先级队列中缓存的数据包未携带所述第二标记。
26.一种计算设备,其特征在于,包括如权利要求23至25任一项所述的网卡。
27.一种网络设备,其特征在于,包括:
接收器,用于接收发送端向接收端发送的数据包;
处理器,用于当所述数据包是所述发送端在与所述接收端的数据传输阶段的第一个往返时间RTT内发送时,将所述数据包加入低优先级队列;当所述数据包不是在所述第一个RTT内发送时,将所述数据包缓存至高优先级队列;其中,所述高优先级队列中的数据包优先于低优先级队列中的数据包被转发;
存储器,用于缓存所述高优先级队列和所述低优先级队列。
28.根据权利要求27所述的网络设备,其特征在于,所述处理器还用于,确定所述数据包是否是所述发送端在所述第一个RTT内发送的。
29.根据权利要求28所述的网络设备,其特征在于,所述数据包携带有第一标记,所述第一标记是由所述发送端添加的,用于指示所述数据包为所述第一个RTT内发送的;所述处理器具体用于,根据所述数据包携带的所述第一标记,确定所述数据包是所述发送端在所述第一个RTT内发送的。
30.根据权利要求28所述的网络设备,其特征在于,所述存储器中存储有流表,所述流表包含有一条或多条数据流的特征信息;所述处理器具体用于,根据所述数据包的特征信息查询所述流表,以确定所述数据包是否是所述发送端在所述第一个RTT内发送的。
31.一种网络设备,其特征在于,包括:
接收器,用于接收发送端向接收端发送的数据包;
处理器,用于当所述数据包是所述发送端在与所述接收端的数据传输阶段的第一个往返时间RTT内发送的,且所述网络设备的接收队列中数据包的个数超出设定阈值时,将所述数据包丢弃;当所述数据包不是在所述第一个RTT内发送的,且所述接收队列未满时,将所述数据包加入所述接收队列;
存储器,用于缓存所述接收队列。
32.根据权利要求31所述的网络设备,其特征在于,所述处理器还用于,若所述数据包不是在所述第一个RTT内发送的,且所述接收队列已满,将所述数据包丢弃。
33.根据权利要求31或32所述的网络设备,其特征在于,所述处理器还用于,确定所述数据包是否是所述发送端在所述第一个RTT内发送的。
34.根据权利要求33所述的网络设备,其特征在于,所述数据包携带有第一标记,所述第一标记是由所述发送端添加的,用于指示所述数据包为所述第一个RTT内发送的;所述处理器具体用于,根据所述数据包携带的所述第一标记,确定所述数据包是所述发送端在所述第一个RTT内发送的。
35.根据权利要求33所述的网络设备,其特征在于,所述存储器中存储有流表,所述流表包含有一条或多条数据流的特征信息;所述处理器具体用于,根据所述数据包的特征信息查询所述流表,以确定所述数据包是否是所述发送端在所述第一个RTT内发送的。
36.一种计算机可读存储介质,其上存储有可执行程序(指令),其特征在于,该程序(指令)被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
37.一种计算机可读存储介质,其上存储有可执行程序(指令),其特征在于,该程序(指令)被处理器执行时实现权利要求8至12中任一项所述方法的步骤。
38.一种计算机可读存储介质,其上存储有可执行程序(指令),其特征在于,该程序(指令)被处理器执行时实现权利要求13至19中任一项所述方法的步骤。
39.一种数据传输***,其特征在于,包括:如权利要求20所述的计算设备,以及权利要求21或22所述的网络设备。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810711997.XA CN110661723B (zh) | 2018-06-29 | 2018-06-29 | 一种数据传输方法、计算设备、网络设备及数据传输*** |
EP19826507.6A EP3742690B1 (en) | 2018-06-29 | 2019-05-17 | Data transmission method, computing device, network device and data transmission system |
PCT/CN2019/087382 WO2020001192A1 (zh) | 2018-06-29 | 2019-05-17 | 一种数据传输方法、计算设备、网络设备及数据传输*** |
US17/006,196 US11477129B2 (en) | 2018-06-29 | 2020-08-28 | Data transmission method, computing device, network device, and data transmission system |
US17/856,161 US11799790B2 (en) | 2018-06-29 | 2022-07-01 | Data transmission method, computing device, network device, and data transmission system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810711997.XA CN110661723B (zh) | 2018-06-29 | 2018-06-29 | 一种数据传输方法、计算设备、网络设备及数据传输*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110661723A true CN110661723A (zh) | 2020-01-07 |
CN110661723B CN110661723B (zh) | 2023-08-22 |
Family
ID=68984678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810711997.XA Active CN110661723B (zh) | 2018-06-29 | 2018-06-29 | 一种数据传输方法、计算设备、网络设备及数据传输*** |
Country Status (4)
Country | Link |
---|---|
US (2) | US11477129B2 (zh) |
EP (1) | EP3742690B1 (zh) |
CN (1) | CN110661723B (zh) |
WO (1) | WO2020001192A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404783A (zh) * | 2020-03-20 | 2020-07-10 | 南京大学 | 一种网络状态数据采集方法及其*** |
CN111464839A (zh) * | 2020-03-17 | 2020-07-28 | 南京创维信息技术研究院有限公司 | 一种能显示辅助信息的主副屏*** |
CN111464374A (zh) * | 2020-02-21 | 2020-07-28 | 中国电子技术标准化研究院 | 网络延迟控制方法、设备及装置 |
CN112543129A (zh) * | 2020-11-27 | 2021-03-23 | 北京经纬恒润科技股份有限公司 | 队列深度的确认方法、***及报文模拟器 |
CN113572582A (zh) * | 2021-07-15 | 2021-10-29 | 中国科学院计算技术研究所 | 数据发送、重传控制方法及***、存储介质及电子设备 |
CN114827042A (zh) * | 2021-01-22 | 2022-07-29 | 瑞昱半导体股份有限公司 | 数据流分类装置 |
CN117112044A (zh) * | 2023-10-23 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110661723B (zh) * | 2018-06-29 | 2023-08-22 | 华为技术有限公司 | 一种数据传输方法、计算设备、网络设备及数据传输*** |
US11374858B2 (en) | 2020-06-30 | 2022-06-28 | Pensando Systems, Inc. | Methods and systems for directing traffic flows based on traffic flow classifications |
US11818022B2 (en) * | 2020-06-30 | 2023-11-14 | Pensando Systems Inc. | Methods and systems for classifying traffic flows based on packet processing metadata |
FR3112262B1 (fr) * | 2020-07-01 | 2022-06-10 | Sagemcom Energy & Telecom Sas | Procede de regulation destine a resorber un engorgement d’un reseau maille de communication par courants porteurs en ligne |
CN113890852B (zh) * | 2021-08-24 | 2024-05-28 | 北京旷视科技有限公司 | 数据发送方法、装置、设备及介质 |
CN113824777B (zh) * | 2021-09-06 | 2023-12-19 | 武汉中科通达高新技术股份有限公司 | 数据管理方法和数据管理装置 |
US11916791B2 (en) * | 2021-12-22 | 2024-02-27 | Cloudbrink Inc. | Modifying data packet transmission strategy based on transmission control protocol stage |
US12034629B2 (en) | 2022-09-01 | 2024-07-09 | Cloudbrink Inc. | Overlay network modification |
CN115884229B (zh) * | 2023-01-29 | 2023-05-12 | 深圳开鸿数字产业发展有限公司 | 传输时延的管理方法、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005109782A1 (fr) * | 2004-04-07 | 2005-11-17 | France Telecom | Procede et dispositif d'emission de paquets de donnees |
CN101023455A (zh) * | 2004-08-17 | 2007-08-22 | 加州理工大学 | 使用排队控制和单向延迟测量实现网络拥塞控制的方法和设备 |
CN101115013A (zh) * | 2006-06-30 | 2008-01-30 | 阿尔卡特朗讯 | 提供资源准入控制的方法 |
CN103457871A (zh) * | 2013-09-18 | 2013-12-18 | 中南大学 | Dcn中基于延迟约束的拥塞避免阶段的增窗方法 |
US20140164640A1 (en) * | 2012-12-11 | 2014-06-12 | The Hong Kong University Of Science And Technology | Small packet priority congestion control for data center traffic |
CN106059951A (zh) * | 2016-06-08 | 2016-10-26 | 中南大学 | 一种用于dcn中基于多级拥塞反馈的传输控制方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6023368B2 (ja) * | 1977-08-29 | 1985-06-07 | 川崎重工業株式会社 | アクチユエ−タの異常検出方式 |
EP1250776A1 (en) * | 1999-10-29 | 2002-10-23 | Forskarpatent i Västsverige AB | Method and arrangements for congestion control in packet networks using thresholds and demoting of packet flows |
US8051197B2 (en) * | 2002-03-29 | 2011-11-01 | Brocade Communications Systems, Inc. | Network congestion management systems and methods |
US7706394B2 (en) * | 2003-07-23 | 2010-04-27 | International Business Machines Corporation | System and method for collapsing VOQ's of a packet switch fabric |
US20080037420A1 (en) * | 2003-10-08 | 2008-02-14 | Bob Tang | Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square waveform) TCP friendly san |
EP1829321A2 (en) * | 2004-11-29 | 2007-09-05 | Bob Tang | Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square wave form) tcp friendly san |
CA2679951A1 (en) * | 2007-03-12 | 2008-09-18 | Citrix Systems, Inc. | Systems and methods for dynamic bandwidth control by proxy |
JP4888515B2 (ja) * | 2009-04-16 | 2012-02-29 | 住友電気工業株式会社 | 動的帯域割当装置及び方法とponシステムの局側装置 |
GB2497218A (en) * | 2010-08-06 | 2013-06-05 | Acquire Media Ventures Inc | Method and system for pacing, ack'ing, timing, and handicapping (path) for simultaneous receipt of documents |
US9628406B2 (en) * | 2013-03-13 | 2017-04-18 | Cisco Technology, Inc. | Intra switch transport protocol |
EP2869514A1 (en) * | 2013-10-30 | 2015-05-06 | Alcatel Lucent | Method and system for queue management in a packet-switched network |
US10999012B2 (en) * | 2014-11-07 | 2021-05-04 | Strong Force Iot Portfolio 2016, Llc | Packet coding based network communication |
US9185045B1 (en) * | 2015-05-01 | 2015-11-10 | Ubitus, Inc. | Transport protocol for interactive real-time media |
CN105471750A (zh) * | 2016-01-21 | 2016-04-06 | 清华大学深圳研究生院 | 一种内容中心网络下提高pit表性能的方法 |
CN106027416B (zh) * | 2016-05-23 | 2019-03-01 | 北京邮电大学 | 一种基于时空结合的数据中心网络流量调度方法及*** |
CN106953742A (zh) * | 2017-02-16 | 2017-07-14 | 广州海格通信集团股份有限公司 | 一种基于sdn的无线异构网带宽保障方法 |
CN112866127B (zh) * | 2018-02-14 | 2022-12-30 | 华为技术有限公司 | 一种分组网络中控制流量的方法及装置 |
CN110661723B (zh) * | 2018-06-29 | 2023-08-22 | 华为技术有限公司 | 一种数据传输方法、计算设备、网络设备及数据传输*** |
-
2018
- 2018-06-29 CN CN201810711997.XA patent/CN110661723B/zh active Active
-
2019
- 2019-05-17 WO PCT/CN2019/087382 patent/WO2020001192A1/zh unknown
- 2019-05-17 EP EP19826507.6A patent/EP3742690B1/en active Active
-
2020
- 2020-08-28 US US17/006,196 patent/US11477129B2/en active Active
-
2022
- 2022-07-01 US US17/856,161 patent/US11799790B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005109782A1 (fr) * | 2004-04-07 | 2005-11-17 | France Telecom | Procede et dispositif d'emission de paquets de donnees |
CN101023455A (zh) * | 2004-08-17 | 2007-08-22 | 加州理工大学 | 使用排队控制和单向延迟测量实现网络拥塞控制的方法和设备 |
CN101115013A (zh) * | 2006-06-30 | 2008-01-30 | 阿尔卡特朗讯 | 提供资源准入控制的方法 |
US20140164640A1 (en) * | 2012-12-11 | 2014-06-12 | The Hong Kong University Of Science And Technology | Small packet priority congestion control for data center traffic |
CN103457871A (zh) * | 2013-09-18 | 2013-12-18 | 中南大学 | Dcn中基于延迟约束的拥塞避免阶段的增窗方法 |
CN106059951A (zh) * | 2016-06-08 | 2016-10-26 | 中南大学 | 一种用于dcn中基于多级拥塞反馈的传输控制方法 |
Non-Patent Citations (6)
Title |
---|
刘炯: "卫星因特网传输控制协议研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
刘炯: "卫星因特网传输控制协议研究", 《中国博士学位论文全文数据库 信息科技辑》, no. 8, 15 August 2008 (2008-08-15), pages 2 - 4 * |
张民等: "空间信息网络可靠传输协议研究", 《通信学报》 * |
张民等: "空间信息网络可靠传输协议研究", 《通信学报》, no. 06, 25 June 2008 (2008-06-25) * |
高文宇等: "接纳控制研究综述", 《计算机工程》 * |
高文宇等: "接纳控制研究综述", 《计算机工程》, no. 01, 5 January 2005 (2005-01-05) * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111464374A (zh) * | 2020-02-21 | 2020-07-28 | 中国电子技术标准化研究院 | 网络延迟控制方法、设备及装置 |
CN111464374B (zh) * | 2020-02-21 | 2021-09-21 | 中国电子技术标准化研究院 | 网络延迟控制方法、设备及装置 |
CN111464839A (zh) * | 2020-03-17 | 2020-07-28 | 南京创维信息技术研究院有限公司 | 一种能显示辅助信息的主副屏*** |
CN111404783A (zh) * | 2020-03-20 | 2020-07-10 | 南京大学 | 一种网络状态数据采集方法及其*** |
CN111404783B (zh) * | 2020-03-20 | 2021-11-16 | 南京大学 | 一种网络状态数据采集方法及其*** |
CN112543129A (zh) * | 2020-11-27 | 2021-03-23 | 北京经纬恒润科技股份有限公司 | 队列深度的确认方法、***及报文模拟器 |
CN112543129B (zh) * | 2020-11-27 | 2022-06-21 | 北京经纬恒润科技股份有限公司 | 队列深度的确认方法、***及报文模拟器 |
CN114827042A (zh) * | 2021-01-22 | 2022-07-29 | 瑞昱半导体股份有限公司 | 数据流分类装置 |
CN113572582A (zh) * | 2021-07-15 | 2021-10-29 | 中国科学院计算技术研究所 | 数据发送、重传控制方法及***、存储介质及电子设备 |
CN117112044A (zh) * | 2023-10-23 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
CN117112044B (zh) * | 2023-10-23 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020001192A1 (zh) | 2020-01-02 |
US20200396169A1 (en) | 2020-12-17 |
US20220337528A1 (en) | 2022-10-20 |
EP3742690B1 (en) | 2024-03-20 |
EP3742690A1 (en) | 2020-11-25 |
EP3742690A4 (en) | 2021-03-10 |
US11477129B2 (en) | 2022-10-18 |
US11799790B2 (en) | 2023-10-24 |
CN110661723B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110661723B (zh) | 一种数据传输方法、计算设备、网络设备及数据传输*** | |
US11272420B2 (en) | Method and apparatus for transmitting data packets using dual sequence numbers | |
CN109936510B (zh) | 多路径rdma传输 | |
EP2887595B1 (en) | Method and node for retransmitting data packets in a tcp connection | |
CN108881008B (zh) | 一种数据传输的方法、装置和*** | |
CN106656431B (zh) | 一种报文传输方法及用户设备 | |
WO2018210117A1 (zh) | 一种拥塞控制方法、网络设备及其网络接口控制器 | |
US9961585B2 (en) | Network-side buffer management | |
US20060203730A1 (en) | Method and system for reducing end station latency in response to network congestion | |
KR20090014334A (ko) | 전송 프로토콜의 성능을 향상시키는 시스템 및 방법 | |
Tam et al. | Preventing TCP incast throughput collapse at the initiation, continuation, and termination | |
US20230059755A1 (en) | System and method for congestion control using a flow level transmit mechanism | |
CN111224888A (zh) | 发送报文的方法及报文转发设备 | |
US8054847B2 (en) | Buffer management in a network device | |
US10063489B2 (en) | Buffer bloat control | |
US11962517B2 (en) | Communications method, apparatus, and system for recovering lost packets | |
Molia et al. | A conceptual exploration of TCP variants |
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 |