CN108540380B - 多子流网络传输方法及装置 - Google Patents
多子流网络传输方法及装置 Download PDFInfo
- Publication number
- CN108540380B CN108540380B CN201710278562.6A CN201710278562A CN108540380B CN 108540380 B CN108540380 B CN 108540380B CN 201710278562 A CN201710278562 A CN 201710278562A CN 108540380 B CN108540380 B CN 108540380B
- Authority
- CN
- China
- Prior art keywords
- sub
- data
- streams
- transmission
- data 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.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 312
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000002776 aggregation Effects 0.000 claims abstract description 21
- 238000004220 aggregation Methods 0.000 claims abstract description 21
- 230000008859 change Effects 0.000 claims description 11
- 230000001934 delay Effects 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 5
- 230000004931 aggregating effect Effects 0.000 claims description 2
- 238000012959 renal replacement therapy Methods 0.000 description 20
- 230000000903 blocking effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000006116 polymerization reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- 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/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- 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/1867—Arrangements specially adapted for the transmitter end
- H04L1/187—Details of sliding window management
-
- 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/1867—Arrangements specially adapted for the transmitter end
- H04L1/1887—Scheduling and prioritising arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- 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/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/621—Individual queue per connection or flow, e.g. per VC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/15—Setup of multiple wireless link connections
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
技术领域
本发明涉及网络传输领域,尤其涉及一种多子流数据传输方法。
背景技术
随着网络技术的发展,一些网络场景里面出现了数据收发两端之间同时存在多条传输链路的场景,例如,移动终端同时支持WIFI接入以及LTE接入,数据中心服务器之间存在多条物理链路。通过关联和管理多条子流,并发进行聚合传输,可以提高带宽利用率和传输性能。
例如,MPTCP协议是IETF制定的一种新传输层协议,MPTCP协议对于上层应用使用唯一的Meta-Sock来接收数据,并由Meta-Sock依据数据调度模块的调度算法将应用层下发的数据调度分发到其管理的多个子流的Sub-Sock上进行传输。在现有的MPTCP协议中,协议栈中缺省调度算法的调度原则是优先在往返时延(RTT)最小的子流上调度数据发送。
由于子流之间的传输时延存在差异,发送端在在各个子流上按序发出的数据包可能在接收端会乱序到达,接收端需要将乱序的数据包进行缓存并处理。在实际网络中,子流的网络连接并非一直处于稳定状态。例如,在TCP连接中,TCP慢启动阶段,子流数据传输速率受限于拥塞窗口的变化,而拥塞窗口的变化在慢启动阶段变化接近于指数变化模型。在这种情况下,由于各个子流的传输延迟处于变化状态,接收端处理乱序的数据包的难度增大,需要缓存的数据包数量也增多,从而导致聚合传输的效率和稳定性下降。
发明内容
本发明实施例提供了一种网络传输方法及网络传输装置,可以实现在多子流下的网络数据传输。
一方面,本申请的实施例提供了一种网络传输方法。该方法首先确定多条子流的至少一种网络状态参数,当至少两条子流的网络状态参数满足预设条件时,将数据通过该至少两条子流进行聚合传输。聚合传输为数据包仅通过至少两条子流中的一条进行发送,所述至少两条子流中的每条子流所发送的数据包互不相同。由此,在网络状态参数满足预设条件时,子流处于稳定传输状态。在此情况下,进行聚合传输时,进行传输的子流的网络延迟为稳定且可预测的状态,从而能够根据预测的网络延迟进行聚合传输,提高传输的稳定性和效率。
在一种可能的实现方式中,当多条子流中至少一条子流的所述至少一种网络状态参数不足预设条件时,将数据分别通过所述至少一条子流进行冗余传输,冗余传输为数据包通过所述至少一条子流中的每条子流进行发送,所述至少一条子流中每条子流所发送的数据包相同。由此,当网络状态不满足预设条件时,子流处于非稳定传输状态。在此情况下,进行冗余传输,可以提高传输的可靠性,减少由于网络延迟的不可预测而导致的传输质量和速率的影响。
判断网络参数是否满足预设条件时,网络参数可以包括:
实时传输速率:即该子流当前的网络传输速率;
拥塞控制窗口:即指发送端在拥塞控制情况下一次最多能发送的数据包的数量;
接收窗口:即接收方根据自己的接收能力设定了接收窗口,并把这个窗口值写入TCP首部中的窗口字段,传送给发送方,发送发由此可以获知接受窗口数量。
已传输数据包数量:即已经成功传送到接收端,并由接收端确认的数据包数量或者数据包字节数。
已传输未确认数据包数量:即向接收端发送后,未由接收端确认的数据包数量或者数据包字节数。
传输时间:即从建立网络数据链接到当前时刻的时间。
传输时延抖动:即数据包发送的传输顺序或者时间间隔与到达接收端的传输顺序或者时间间隔的差异
丢包率:即丢失数据包数量占所发送数据组的比率。
在一种可能的实施方式中,所述网络参数和预设条件包括所述两条子流链路传输时延差值小于或等于对应的阈值,发送的数据包中包括第一数据包,其中,所述第一数据包包含所述第一数据包发送时间。发送端发送该数据包,并获取接收端根据该数据包计算的链路传输时延差值,从而确定链路传输时延差值。
在一种可能的实施方式中,所述网络参数和预设条件包括所述两条子流链路传输时延差值小于或等于对应的阈值,发送的数据包中包括第一数据包,其中,所述第一数据包包含第二数据包标识和所述第一数据包与所述第二数据包的发送时间差,所述第二数据包为与所述第一数据包通过所述至少两条子流中的不同子流发送的数据包。发送端发送该数据包,并获取接收端根据该数据包计算的链路传输时延差值,从而确定链路传输时延差值。
在一种可能的实施方式中,所述网络参数和预设条件包括所述两条子流链路传输时延差值小于或等于对应的阈值,发送的数据包中包括第一数据包,其中,所述第一数据包包含与第三数据包标识,所述第三数据包为与所述第一数据包同时或按照预定的时间间隔发送,且通过所述至少两条子流中的不同子流发送的数据包。发送端发送该数据包,并获取接收端根据该数据包计算的链路传输时延差值,从而确定链路传输时延差值。
所述第二数据包标识或者第三数据包标识,可以是直接用于指示该数据包的标识,也可以是与第二数据包或者第三数据包中所携带的标识相同的标识,从而表征第一数据包与第二数据包或者第三数据包之间的关联关系。在一种可能的实施方式中,所述标识可以为所述数据包本身特征,接收端通过预设的判断条件,确定接收到的数据包为第二数据包或者第三数据包。
在一种可能的实现方式中,当聚合传输的传输速率之和小于或等于对应的阈值时,将数据分别通过所述两条子流进行冗余传输。当聚合传输速率过低时,网络可能处于非稳定传输状态,通过冗余传输进行数据传输,能够提高传输的可靠性。
在一种可能的实现方式中,为每条子流设置待发送缓存队列,用于存储分配到该子流的数据包。进行聚合传输时,将数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中,其中,所述至少两条子流中传输时延大的子流的待发送缓存队列的数据量小于传输时延小的子流的待发送缓存队列的数据量。通过设置数据量大小不同的缓存队列,可以通过数据包在缓存队列中的等待时间抵消子流的传输时延带来的时间差,从而减少数据包到达接收端时产生乱序的可能,提高数据传输质量。
在一种可能的实现方式中,在确定数据包要放入的子流时,将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中,以使得所述至少两条子流的待发送缓存队列中的数据量的差值与所述至少两条子流的传输时延满足预设关系。由此,当数据量的差值与子流的传输时延满足预设关系时,可以通过数据包在缓存队列中的等待时间抵消子流的传输时延带来的时间差,从而减少数据包到达接收端时产生乱序的可能,提高数据传输质量。
在该种实现方式的一种具体的实施中,缓存队列的数据量的差值为子流间传输时延的差值乘以单位时间内该子流的数据传输量。
在一种可能的实现方式中,当确定数据包所要放入的子流时,将所述数据的一个数据包放入所述至少两条子流中预估传输总时间最短的子流,所述预估传输总时间为从数据包进入待发送缓存队列至数据包到达接收端之间的预估时间。由此,时钟选择预估传输送时间最短的子流,可以使得每个子流的预估时间相对一致,从而提高数据通过子流发送时的数据一致性,减少乱序数据包的产生。
在一种可能的实现方式中,每条子流的待发送缓存队列中的数据包数量不大于该条子流对应的阈值。通过控制缓存队列的数据量,可以避免由于缓存队列过长导致数据包在分配到子流时与数据包通过子流发送之间时间过长,子流的网络时延发送变化,从而使得数据包实际传输总时间与预估的传输总时间之间存在差异,导致数据包在接收端出现乱序。
在一种可能的实现方式中,每条子流的待发送缓存队列中的数据包数量与该子流发送窗口字节数满足预设关系。在另一种可能的实现方式中,每条子流的待发送缓存队列中的数据包数量与该子流上最大允许飞行中数据包满足预设关系。
在一种可能的实现方式中,为子流设置稳定传输集合和非稳定传输集合。当子流的至少一种网络状态参数满足预设条件时,则将该子流放入稳定传输集合,反之则放入非稳定传输集合。当稳定传输集合中的子流数量大于或者等于2时,将稳定传输集合中的子流进行聚合传输。或者,当全部子流均在稳定传输集合中时,所有子流进行聚合传输。
另一方面,本发明还提供了一种网络传输装置,该装置具有实现上述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的实现中,该网络传输装置包括用于确定子流的网络状态参数的监控模块以及用于根据状态参数进行聚合传输或者冗余传输的发送模块。所述发送模块可以执行上述方法将数据包分配到子流上进行发送。
在一种可能的实现中,该网络传输装置结构中包括处理器、存储器和网络接口,所述处理器被配置为支持网络传输装置执行上述方法中相应的功能。所述网络接口用于与接收端建立包含多个子流的通信链接。所述存储器用于与处理器耦合,其保存装置必要的程序指令和数据,以及待发送的数据。
再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述管理节点所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
相较于现有技术,本发明当通过多条子流进行数据传输时,先确定多条子流的至少一种网络状态参数,当多条子流中至少两条子流的所网络状态参数满足预设条件时,才数据包通过所述至少两条子流进行聚合传输。由此,使得进行聚合传输的子流均为稳定传输状态的子流,避免了由于处于不稳定传输状态的子流的传输迟延由于难以预测,导致接收端由于接受大量乱序的数据包而占用缓存空间和消耗处理能力的情况。提高了聚合传输的效率和稳定性。
附图说明
图1为本发明实施例中一种应用场景的场景示意图;
图2为本发明实施中中一种MPTCP网络装置的模块示意图;
图3为本发明实施例中一种方法的流程示意图;
图4为本发明实施例中又一种方法的流程示意图;
图5A为本发明实施例中一种数据包传输的时序流程示意图;
图5B为本发明实施例中又一种数据包传输的时序流程示意图;
图6为本发明实施例中又一种方法的流程示意图;
图7为本发明实施例中又一种方法的流程示意图;
图8为本发明实施例中一种网络装置的逻辑结构示意图;
图9为本发明实施例中一种网络装置的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在下面的描述中,提及多径传输控制协议(MPTCP),其允许在网络设备之间的传输连接中同时跨越网络的多个子流进行数据通信。应当注意的是,这些描述仅仅是示例性的,所描述的实施例的技术或机制可以应用于其他的允许多个网络设备之间的连接同时采用多个子流的其它协议。网络设备之间的“连接”是指使用预定的过程(例如,由MPTCP、TCP(传输控制协议)或者其它协议定义的过程)建立的会话。其中,网络设备之间的连接网络可以具有一个或多个中间设备,例如,路由器、交换机、防火墙、网络地址转换器、代理等等。子流是指属于在路径上发送的连接(例如,TCP连接)的分组流,一般而言,一个子流为一个独自的TCP连接,这些连接构成一个MPTCP连接,子流的开始与终止与一个常规的TCP连接相同。
图1示出了包括连接到第一网络设备104和第二网络设备106的网络102的场景示意图。虽然仅描绘了两个网络设备,但是应当注意的是,网络102可以连接到额外的网络设备。网络设备的示例包括个人数字助理、移动电话、平板计算机、笔记本计算机、台式计算机、物联网终端、智能汽车、服务器计算机、存储控制器、电子器件、或者其它类型的网络电子设备。
图1中所示的示例示出了可以在网络设备104和106之间建立的连接中提供多个子流108和110。虽然针对网络设备104和106之间的连接仅示出了两个子流108和110,但是应当注意的是,网络设备之间的连接可以具有多于两个的子流。这对网络设备104和106还可以建立多个连接,其中,每一个连接可以与其相应的子流集合相关联。在一些示例中,第一子流108可以是移动通信网络(例如,蜂窝网络)上的路径的一部分。第二子流110可以在无线局域网上。在其它示例中,子流108或110可以是有线路径的一部分。
如图1所示,在采用MPTCP的场景中,网络设备104和106中的每一个包括相应的MPTCP协议栈112和114。协议栈112或114包括应用层(其包括应用软件)和MPTCP层(其用于实现MPTCP功能)。针对每一个子流,在协议栈112或114中存在一个TCP/IP(传输控制协议/互联网协议)实例116A或116B。注意,由于图1的示例中存在两个子流,因此存在两个TCP/IP实例116A、116B。如果针对网络设备104和106之间的连接存在更多个子流,则将在协议栈112或114中提供额外的TCP/IP实例。
每一个TCP/IP实例116A或116B包括相应的TCP层118A或118B以及IP层120A或120B。MPTCP层定义连接级(或者数据级)的连接承载的通信,而每一个TCP层定义子流级的通信。虽然使用MPTCP层和TCP/IP实例描绘了每一个协议栈112或114,但是应当注意的是,根据其它实现的协议栈可以包括其它类型的协议层。
MPTCP被设计为与现有的网络组件后向兼容。在一些情况下,网络102可以包括一个或多个阻塞中间设备120A和120B,也称作序列空洞阻塞中间盒(sequence holeblocking middle box)。阻塞中间设备的示例包括:防火墙、网络地址转换器、代理(例如,性能增强代理)、或者任何其它中间设备,其处于发送机设备与接收机设备之间的分组的路由路径上并且例如当中间设备检测到由中间设备120A或120B接收的分组的序列号失去连续性时防止向目的地转发分组。换言之,如果阻塞中间设备检测到由中间设备接收到的分组中存在序列空洞,则阻塞中间设备将阻止向目的地转发具有在丢失的序列号之后或者大于丢失的序列号的序列号的分组。在备选的实现中,如果阻塞中间设备检测到来自发送机设备的分组流中的某一其它特征,则阻塞中间设备可以阻止转发分组。当阻塞中间设备处于发送机设备与接收机设备之间的分组的路由路径上时,阻塞中间设备处于子流的路径。
在图1的示例中,在相应的子流108和110中提供了中间设备120A和120B。在备选的示例中,仅在子流108和110之一中提供了阻塞中间设备。举另一个例子,中间设备120A和120B中的一个或这二者可以是非阻塞中间设备(即使在分组中存在序列空洞,非阻塞中间设备也允许向目的地转发分组)。假设中间设备120A或120B是阻塞中间设备,如果阻塞中间设备沿着相应的子流(108或110)检测到序列空洞,则这种阻塞中间设备将阻止沿着该子流转发分组。
图2是本发明实施例中MPTCP的一种网络设备200的模块示意图。MPTCP协议对于上层应用使用唯一的Meta-Sock(连接级套接字)来接收数据,并由Meta-Sock依据数据调度模块的调度算法将应用层下发的数据调度分发到其管理的多个子流的Sub-Sock(子流级套接字)上进行传输
在下面的描述中,为了便于理解,首先对在实施例中涉及到的主要概念进行解释:
聚合传输:在数据传输时,一个数据包仅通过一条子流进行传输,每个子流传输不同的数据包的方式为聚合传输。聚合传输能够节省网络资源,最大限度的利用每个子流的带宽从而提升数据传输效率。结合图2的逻辑模块进行理解,上层应用将数据传输给Meta-Sock,Meta-Sock会将数据存储在write queue(写入队列)队列中。当进行聚合传输时,各子流在发送数据时,会从write queue中当前还没有被接收侧确认并且所有子流都还没有发送的数据位置开始取数据进行发送。例如,如图3所示,数据包1-5为通过子流1和子流2聚合传输发送的数据,则子流1与子流2所发送的数据包互不相同。
冗余传输:在数据传输时,一个数据包会通过每条子流重复的进行传输,即每条子流会传输相同的数据包,这种方式为冗余传输。冗余传输可以保证数据的可靠性,并减少接收端在接收数据时的处理负担。结合图2,上层应用将数据传输给Meta-Sock,Meta-Sock会将数据存储在write queue队列中,各子流在发送数据时,会从write queue中当前还没有被接收侧确认并且所有子流都还没有发送的数据位置开始取数据进行发送。例如,如图3所示,数据包6-10为通过子流1和子流2冗余传输发送的数据,子流1与子流2所发送的数据包均为相同的数据包,每个数据包分别在两条子流均进行了发送。
结合图3,是本发明提供的一种网络传输方法实施例的方法流程示意图,本实施例通过建立了多条子流进行数据传输的网络设备中的发送端执行。即,在图1的实例中,网络设备104向106发送数据时,网络设备104为本实施例的执行主体,反之,当网络设备106向104发送数据时,则网络设备106我本实施例的执行主体。在本实施例中,发送端的待发送数据包在待发送缓存队列中,发送端与接收端之间已经建立的多条可以进行数据传输的子流。对于待发送本实施例的步骤如下:
S301、确定子流的至少一种网络状态参数满足预设条件。
发送端在子流建立链接成功后,监控每一条子流的预设的至少一种网络参数,从而监控每一条子流的网络状态。通过监控的网络参数对应设置的预设条件,来判定子流的网络状态是否稳定。当所监控的网络参数满足预设条件时,则认为子流进入了稳定传输状态。稳定传输状态是指子流的网络延迟的值相对稳定或者为可预测的规律性变化中。在稳定传输状态下,发送端可以相对准确的获取或者预测子流的网络延迟。例如,在TCP慢启动阶段,子流数据传输速率受限于拥塞窗口的变化,而拥塞窗口的变化在慢启动阶段变化接近于指数变化模型,因此,在这种情况下,子流的网络延迟变化不稳定,难以预测,即该阶段不是稳定传输阶段。而在此之后,TCP链接的拥塞窗口的变化接近线性规律增长,此时的网络延迟为可预测的变化阶段,则此时子流为稳定传输阶段。
在一种实现方式中,发送端通过多条子流的链路传输时延差值是否小于或等于对应的阈值来判断是否为稳定传输状态。链路传输时延差值,是指进行传输的子流中,各个子流之间的传输时延的差值。当传输时延差值较小时,各个子流之间的传输时延比较接近,网络状态相对稳定。
发送端获取各子流的链路传输时延差值可以通过同种方式实现,示例性的,可以通过在各条子流的部分或者全部数据包中加入相应的信息,接收端可以根据该信息确定链路传输时延差值,并通过响应报文将得到的链路传输时延差值发送给发送端。
在一种具体的实现中,可以通过时间戳等方式,在各条子流的部分或者全部数据包中加入该数据包的发送时间。接收端通过接受携带有发送时间的数据包,确定各条子流的传输时延,从而计算出个条子流的链路传输时延差值。
在另一种具体的实现中,在数据包中加入在另一子流中传输的数据包的标识,以及与该数据包的发送时间差,接收端可以由此确定在两条链路中的两个数据包的发送时间差,并根据该两个数据包的接收时间差,两者之间的差值即为该两条子流的链路传输时延差值。例如,在一条子流的数据包A中加入在另一子流中传输的数据包B的标识,该标识可以直接指示数据包B,或者数据包A与数据包B携带相同标识,从而使接收端可以根据该标识识别与数据包A相对于的数据包B。数据包A中还包含与数据包B的发送时间差M,其中,M为正则指示数据包A后于数据包B发送,反之则数据包A先于数据包B发送。接收端接收到数据包A后,同时根据数据包A的接收时间Ta以及数据包B的接收时间Tb可以确定该两条子流的链路传输时延差值为Tb-Ta-M,其中,所述差值为正时,数据包A所在链路的传输时延小于数据包A所在链路,反之,数据包A所在链路的传输时延大于数据包A所在链路。
在又一种具体的实现中,在数据包中加入与该数据包同时发送或者在预设的时间间隔中发送的的在另一子流中传输的数据包的标识,接收端由此根据两个数据包的接收时间差,以及预设的发送时间间隔,确定该两条子流的链路传输时延差值。该实现方式原理与前已实现方式区别在于数据包时间的发送时间差是预设的,无需在数据包中包含该时间差,从而减少了网络消耗。
示例性的,用于判断稳定传输状态的网络参数和与之对应的预设条件还可以为以下的一种或者几种:
a、子流的实时传输速率达到预设速率
在一种可能的实现中,可以判断子流的实时传输速率是否达到了预设的速率。一般而言,当子流的传输速率达到一定的速率之上后,该子流的网络传输状态趋于稳定。因此,可以基于该子流具体的网络情况,设定相应的预设速率作为稳定传输状态的判定条件。
在另一种可能的实现中,可以判断子流的实时传输速率在预设的一段时间内是否维持在预设的范围内。当子流的实时传输速率实在预设的一段时间内维持在预设的范围内时,子流的传输速率波动较小,可以认为该子流的网络传输状态稳定。
b、子流的拥塞控制窗口达到预设值
拥塞控制窗口指发送端在拥塞控制情况下一次最多能发送的数据包的数量。发送端根据网络的拥塞程度所预设的一个大小值,而这个值就是拥塞窗口。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。因此,通过监控子流的拥塞控制窗口可以用于判断子流的网络传输状态是否稳定。
c、接收端的接收窗口达到预设值
接收窗口为接收方根据自己的接收能力设定了接收窗口,并把这个窗口值写入TCP首部中的窗口字段,传送给发送方,发送发由此可以获知接受窗口数量。与拥塞控制窗口类似的,接收窗口也可以用于判断网络状态是否稳定。
d、子流已经传输的数据包的数量达到预设值
已传输的数据包的数量是指经成功传送到接收端,并由接收端确认的数据包数量或者数据包字节数。由于子流在TCP连接建立初期时往往为网络传输状态的不稳定状态,等到传输一定的数据后,则进入稳定状态。因此,根据已经传输的数据包数量,可以判断子流的网络状态是否稳定。
e、子流已传输未确认数据包数量达到预设值
已传输未确认的数据包即正在传输过程中,还未从接收端确认的数据包。当已传输未确认数据包数量达到预设值时,可以表明传输速率达到稳定值,则网络传输状态处于稳定状态。
f、子流开始传输数据之后的持续时间达到预设值
如前所述的,由于子流在TCP连接建立初期时往往为网络传输状态的不稳定状态,一段时间后,则进入稳定状态。因此也可以根据始传输数据之后的持续时间来判断是否进入了稳定传输状态。
g、传输时延抖动小于或等于预设值
传输时延抖动指数据包的传输顺序不如当时产生的顺序或者时间间隔到达接收端的量化值
h、丢包率小于或等于预设值。
以上的网络参数以及其相对应的预设条件的举例是示意性的,本领域技术人员也可以结合现有技术采用其他用于判断网络稳定状态的参数以及条件来确定子流是否进入了稳定传输状态。
S302、当至少两条子流的至少一种网络状态参数满足了预设条件,则将数据包通过达到预设条件的子流进行聚合传输。
按照前述的网络状态参数,若至少两条子流的网络状态参数均满足了预设条件,则将数据包通过该至少两条子流进行聚合传输。在不同的实施方式中,可以至少两条子流中每条子流均满足同一种或者几种网络状态参数符合预设的条件,也可以是至少两条子流中每条子流各自不同的网络状态参数符合预设条件。相应的,即便至少两条子流中各条子流均根据同一种或者几种网络参数进行判断,每条子流的网络参数对应的预设条件也可能因为子流的不同而不同。即,通过网络参数是否满足预设条件的判断,从而判断该条子流是否达到了稳定传输状态。
结合前述对聚合传输的描述,当至少两条子流进行聚合传输时,即将数据包分别通过两条子流互不重复的进行发送,每条子流所发送的数据包互不相同。发送端从待发送队列中获取待发送数据包,并将数据包分配给至少两条子流中的一条进行发送,分配后,该数据包即完成发送,不再重复分配给其他子流。即各子流在发送数据时,会从待发送数据队列中当前还没有被接收侧确认并且所有子流都还没有发送的数据位置开始取数据进行发送。在本实施例中,对发送端按照何种规则将数据包分配给不同的子流不做限制。
可选的,在本实施例中,还可以包含如下步骤:
S303、当至少一条子流的至少一种网络状态参数不满足预设条件,则将数据包通过不满足预设条件的子流进行冗余传输。
在监控了网络状态参数的多条子流中,对于网络参数没有满足预设条件的子流,通过冗余传输的方式进行数据传输。对于多条子流而言,每条子流的网络状态参数可以是相同的网络状态参数,也可以是不同的网络状态参数。多条子流的相同的网络状态参数所对应的预设条件可以是相同的预设条件,也可以是各自子流所对应的不同的预设条件。参考前述,当一条子流的网络状态参数不满足预设条件时,即认为该条子流在非稳定传输状态。
结合前述对于冗余传输的解释,对于不是稳定传输状态的子流,每条子流均会传输数据所包含的全部数据包,即每个数据包冗余的通过每条子流重复的进行传输。发送端从待发送队列中获取待发送数据包,并将数据包分配到网络参数不满足预设条件的子流中,每条子流均发送该数据包。即各子流在发送数据时,都会从待发送数据队列中当前还没有被接收侧确认并且本子流之前没有发送过的数据位置开始依次取数据进行发送。
可选的,在本实施例中,还可以包含如下步骤:
S304、当进行聚合传输的至少两条子流的传输速率之和小于或等于对应的阈值时,将该至少两条子流由聚合传输变为冗余传输。
通过前述S302步骤,将网络参数复核预设条件的子流进行聚合传输后,监控进行聚合传输的子流的传输速率之和,即聚合传输速率。当聚合传输速率小于或者等于对应的阈值时,则该聚合传输中的子流可能存在不稳定传输状态。因此,将进行该聚合传输的子流由聚合传输变为冗余传输。
通过本实施例所讨论的方法,当通过多条子流进行数据传输时,先确定多条子流的至少一种网络状态参数,当多条子流中至少两条子流的所网络状态参数满足预设条件时,才数据包通过所述至少两条子流进行聚合传输。由此,使得进行聚合传输的子流均为稳定传输状态的子流,避免了由于处于不稳定传输状态的子流的传输迟延由于难以预测,导致接收端由于接受大量乱序的数据包而占用缓存空间和消耗处理能力的情况。提高了聚合传输的效率和稳定性。
结合图4,是本发明的又一实施例的方法流程示意图,本实施例是基于上一实施例的进一步改进,因此为了避免赘述,本实施例会结合上一实施例进行描述,本实施例中的相关步骤可以结合上一实施例的介绍和解释进行理解。
在本实施例中,结合上一实施例,在S301步骤之后,执行S302步骤时,将数据包通过达到预设条件的子流进行聚合传输可以通过如下步骤进行:
S401、为进行聚合传输的每条子流设置待发送缓存队列(后简称为“缓存队列”),用于缓存分配到该子流进行发送的数据包。
每个子流设置有一个待发送缓存队列,发送端进行数据包发送时,会将数据包分配到进行聚合传输的多条子流中的一条进行发送,该数据包即入队到分配到的子流的待发送缓存队列中,直到该子流待发送缓存队列中先于该数据包进入队列的数据包发送后,该数据包出队并进行发送。
通过设置缓存队列,可以调节数据包从分配到子流至到达接收端的时间,从而调整数据包到达接收端的顺序。如图5A所示,在现有技术中,对于待发送的数据包,由于各子流RRT的差异,按顺序从发送端分配到各子流进行发送的数据包会乱序的到达接收端。例如,在图5A中,数据通过子流1和子流2发送的接收端,其中,对于按顺序发送的数据包501、502、503,子流1先发送501,然后子流2发送502,最后子流1再发送503。但是,由于子流1的RRT小于子流2的RRT,因此通过子流1发送的数据包会相对于子流2发送的数据包更快的到达接收端。由此,造成了接收端接收到的数据包乱序,即先接收到503,再接收到502。
当子流设置了各自的缓存队列后,通过调整缓存队列的长度,将RRT较小的子流设置队列长度更长的缓存队列,延迟了RRT较小的子流的数据包发送时间,从而抵消了由于RRT的差值所带来的时间差,减少了接收端乱序的产生。如图5B所示,子流1设置了缓存队列511,子流2设置了缓存队列512,缓存队列511的长度大于缓存队列512。当数据包按照与图5B同的场景进行发送时,由于数据包501与503在分配到子流后,需要更长的时间才能从缓存队列511中出队并发送到接收端,从而抵消了由于RRT更小而造成的与子流2的传输时间的差异。从而在接收端接收到的仍然是正确顺序的数据包。
在一种可能的实现中,在设置缓存队列时,可以通过对数据包分配子流的控制,调节缓存队列的长度,从而使得RRT较小的子流的缓存队列长度比RRT较大的子流的缓存队列长度更长。
S402、将待发送的数据包放入到进行聚合传输的多条子流中的一条子流的待发送缓存队列,以使得数据包通过多条子流的通过缓存队列出队并达到接收端的传输总时间一致。
设置缓存队列后,数据包从被分配到子流时,即入队到被分配子流的待发送缓存队列中时,到数据包到达接收端为止所需要的总时间为T。为了使得数据包到达接收端时的顺序与数据包分配到子流的顺序一致,即接收端接收到的数据包不产生乱序,需要使各个子流的总时间T尽可能的相一致。
总时间T包括了数据包从待发送缓存队列中入队到出队进行发送之间的时间T1以及数据包通过子流传输的时间T2。其中,T1可以通过如下公式(1)获得:
其中,待发送缓存队列总字节数为该子流中待发送缓存队列中的数据包的字节数之和,待发送数据包字节数即待发送数据包的字节数大小,每个RRT可发送字节数是指子流在当前的往返时延周期内所能够发送的字节数,RRT即指一个往返时延周期所占用的时间。通过该公式,即能够预估该子流在当前稳定传输状态下,数据包从进入待发送缓存队列到从发送端发送的时间差。
在一些场景中,发送端发送的每个数据包字节数大小相等,则上述公式(1)可变形为:
在一些场景中,缓存队列中数据包数量比较多的情况下,待发送数据包的数量可以忽略,则该公式(1)可以进一步变形为:
可以理解的,对于T1的估计,除了上述公式给出的示例外,还可以通过其他方法。例如,可以基于监控子流的平均发送速率和待发送缓存队列的数据量或者数据包数量来估计;或者通过历史数据建立子流的网络状态与缓存队列数据包数量或者缓存队列数据量之间的模型,从而基于当前网络状态和和缓存队列数据包数量或者缓存队列数据量,确定当前数据包从待发送缓存队列中入队到出队进行发送之间的时间T1。
子流传输的时间T2,可以认为是一个RRT的一半,由此总时间T可以为:
T的取值也可以按照前述公式(1)的变形加上0.5RRT得到。当T1的大小与0.5RRT的大小相差较大时,T2的值对于T的影响可以忽略,则可以用T1来作为总时间T。
要使得各子流的传输总时间T尽可能一致,即使得各子流的传输总时间T的差值尽可能小。在具体的实现方式中,可以有多种方式实现,示例性的列举如下:
A、计算每个子流当前估计的传输总时间T,在进行待发送数据包的分配时,始终优先分配给T的值最小的子流。
即通过上述介绍,确定分配时当前每个子流估计的总传输时间T,优先分配给T的值最小的子流,可以使得各子流的传输总时间T尽可能一致。
B、确定各子流RRT的差值,根据RRT的差值以及各子流每个RRT可发送的字节数,确定要使得各子流T值相等,各子流的待发送缓存队列字节数或者待发送缓存队列数据包数的差值,在进行数据包分配时,优先选择减去差值后剩余的缓存队列字节数或者待发送缓存队列数据包数最小的子流。
根据前述描述,由于各个子流的RRT不同,即T2的取值会不同,为了使得总时间T的值相同,则需要各自刘T1的取值的差值抵消T2的取值的差值。以a、b两条子流为例,即:
T1a-T1b=T2b-T2a
代入前述T1和T2的取值,即可以根据根据RRT的差值以及各子流每个RRT可发送的字节数,确定各子流的待发送缓存队列字节数或者待发送缓存队列数据包数的差值。
除了上述的示例外,可以理解的,基于不同的计算T1、T2以及总时间T的方法,还可以得到其他保持各个子流的传输总时间一致的方法。
S403、进行聚合传输的各个子流按照各自的待发送缓存队列,基于数据包入队的先后次序依次发送数据包。
在本实施例中,可选的,还可以对待发送缓存队列的长度进行控制。由于在进行数据包分配时,是基于分配时子流的RRT进行分配的,即通过数据包在待发送缓存队列中的时间T1,来平衡由于RRT的差异造成的网络传输延时T2的差异。但是,由于当数据包从待发送缓存队列中出队进行发送时,与分配到子流时的该子流的RRT可能发生了变化。因此,控制各个子流的待发送缓存队列的长度,可以缩短T1的时间,即使得数据包分配到子流的时间与数据包通过子流进行发送的时间缩短,从而减小在该时间段内RRT可能产生的变化。
在一种实现方式中,可以直接通过对每条子流的缓存队列长度设置与之对应的阈值来限制队列长度,当子流的待发送缓存队列的长度大于该子流对应的阈值时,即停止向该子流分配数据包。
在另一种实现方式中,还可以通过判断子流的缓存队列长度是否满足预设条件来限制队列长度。示例性的:
1)当子流的待发送缓存队列数据字节数与当前子流发送窗口字节数(bytes ofsend window)之间的关系达到预定的条件。例如:待发送缓存队列字节数已经达到子流发送窗口字节数的90%。则停止向子流缓存队列中入队数据包
2)当子流的待发送缓存队列数据字节数与当前子流上最大允许飞行中的字节数(maximum bytes in flight)之间的关系达到预定的条件。例如:待发送缓存队列数据字节数已经达到当前子流上最大允许飞行中的字节数的90%,则停止向子流缓存队列中入队数据包。
上述中的待发送缓存队列长度,可以为待发送缓存队列的字节数或者数据包数,或者其他用于衡量缓存队列中的数据量的量值。
基于本实施例,当子流进行聚合传输时,通过数据包的分配,使得数据包通过各个子流发送的传输总时间相对一致。由此,数据包通过各个子流发送的传输总时间相对一致,数据包在进行分配后,会经过相同或者相近的时间到达接收端,从而使得接收端接收到数据包的顺序与发送端将数据包分配到子流的顺序基本一致。因此,本实施例在具备了上一实施例所达到的技术效果外,进一步有效的降低了了在聚合传输时接收端接收到乱序的数据包的可能性。提升了数据传输的稳定性和效率。
结合图6,是本发明的又一实施例的方法流程示意图,本实施例是结合第一个实施例或者第二个实施例进行的进一步讨论,主要讨论了了当存在多个子流,且只有部分子流进入稳定传输状态的情况下,如何进行处理的过程。因此,本实施例可以结合前两个实施例进行理解,对于如何判断子流是否计入稳定传输状态,以及如何进行冗余传输或者聚合传输,在前两个实施例中已经有相关讨论,在本实施例中即不再赘述。
当子流链路多于两个时,基于第一个实施例,通过如下步骤进行:
S601、在进行数据包调度时,遍历所有子流,将子流划分为稳定传输状态子流集合以及非稳定传输状态子流集合两个集合,划分的条件同前述实施例中中描述的条件;
S602、判断稳定子流合集中的子流数是否大于或等于2,
S603、当稳定子流合集中的子流数大于或等于2时,则对于稳定传输状态子流集合中的子流进行聚合传输,对非稳定子流合集中的子流进行冗余传输;
S604、当稳定子流合集中的子流数小于2时,则对所有子流进行冗余传输。
结合图7,是本发明的又一实施例的方法流程示意图,与图6所对应的实施例相类似的,本实施例是结合第一个实施例或者第二个实施例进行的进一步讨论,主要讨论了了当存在多个子流,且只有部分子流进入稳定传输状态的情况下,如何进行处理的过程。因此,本实施例可以结合前两个实施例进行理解,对于如何判断子流是否计入稳定传输状态,以及如何进行冗余传输或者聚合传输,在前两个实施例中已经有相关讨论,在本实施例中即不再赘述。本实施例包含如下步骤:
S701、在进行数据包调度时,遍历所有子流,将子流划分为稳定传输状态子流集合以及非稳定传输状态子流集合两个集合,划分的条件同前述实施例中中描述的条件;
S702、判断是否所有子流均进入稳定子流合集中;
S703、当所有子流均进入稳定子流集合时,则所有子流进行聚合传输;
S704、当不是所有子流均进入稳定子流集合时,则所有子流进行冗余传输。
上述两个实施例,示例性的给出了在多条子流的情况下的数据包调度方法,通过设置稳定子流集合和非稳定子流集合,对不同传输状态的子流进行不同的调度方式,在保证传输效率和传输稳定性的基础上,提高了子流的资源利用率。
结合图8,是本发明一种网络设备实施例800的逻辑结构图。本实施例基于与前述几种方法实施例的发明构思,提供了包含能够实现前述方法的功能模块的网络设备。该网络设备包括:
监控模块801,用于确定所述多条子流的至少一种网络状态参数。监控模块801可用于执行前述实施例中S301步骤。
发送模块802,用于当所述多条子流中至少两条子流的所述至少一种网络状态参数满足预设条件时,将数据通过所述至少两条子流进行聚合传输。参考前述方法实施例,发送模块802可用于执行前述实施例中S302步骤。
可选的,发送模块802还可以用于执行前述方法中的S303、S304以及S401、S402、S403中的步骤。
可选的,结合前述图6和图7所对应的实施例,发送模块802可以基于步骤S601-S604或者S701-S704,通过监控模块801获取的网络状态参数对多个子流进行发送。
结合前述图2所对应的MPTCP传输的网络装置示意图,本实施例中的发送模块802即可通过图2中的数据调度模块和数据发送模块实现。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个物理硬件中,也可以是单独物理硬件存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
通过该实施例提供的网络设备,当通过该网络设备进行多子流的数据发送时,可以实现前述实施例所述的技术效果。
参照图9,实现本发明所举例的系统包括网络设备900形式的通用计算设备。结合前述图1中所述的系统场景及架构,本实施例所述的网络设备可以为前述场景及架构中所说明的本发明实施例的执行主体。
网络设备900的元件可以包括,但并不限制于,处理单元920,系统存储器930,和系统总线910。系统总线将包括系统存储器的各种系统元件与处理单元920相耦合。系统总线910可以是几种类型总线结构中的任意一种总线,这些总线可以包括存储器总线或存储器控制器,外围总线,和使用一种总线结构的局部总线。总线结构可以包括工业标准结构(ISA)总线,微通道结构(MCA)总线,扩展ISA(EISA)总线,视频电子标准协会(VESA)局域总线,以及外围器件互联(PCI)总线。
网络设备900一般包括多种网络设备可读媒介。网络设备可读媒介可以是任何网络设备900可有效访问的媒介,并包括易失性或非易失性媒介,以及可拆卸或非拆卸的媒介。例如,但并不限制于,网络设备可读媒介可以包括网络设备存储媒介和通讯媒介。网络设备存储媒介包括易失性和非易失性,可拆卸和非拆卸媒介,这些媒介可以采用存储诸如网络设备可读指令,数据结构,程序模块或其他数据的信息的任何方法或技术来实现。网络设备存储媒介包括,但并不限制于,RAM,ROM,EEPROM,闪存存储器或其他存储器技术,或者硬盘存储、固态硬盘存储、光盘存储,磁盘盒,磁盘存储或其它存储设备,或任何其它可以存储所要求信息和能够被网络设备900访问的媒介。通讯媒介一般包括嵌入的计算机可读指令,数据结构,程序模块或在模块化数据信号(例如,载波或其他传输机制)中的其他数据,并且还包括任何信息传递的媒介。上述任何组合也应该包括在网络设备可读媒介的范围内。
系统存储器930包括网络设备存储媒介,它可以是易失性和非易失性存储器,例如,只读存储器(ROM)931和随即存取存储器(RAM)932。基本输入/输出系统933(BIOS)一般存储于ROM931中,包含着基本的例行程序,它有助于在网络设备910中各元件之间的信息传输。RAM 932一般包含着数据和/或程序模块,它可以被处理单元920即时访问和/或立即操作。例如,但并不限制于,图9说明了操作系统934,应用程序935,其他程序模块936和程序数据937。
网络设备900也可以包括其他可拆卸/非拆卸,易失性/非易失性的网络设备存储媒介。仅仅是一个实例,图9说明了硬盘存储器941,它可以是非拆卸和非易失性的可读写磁媒介;外部存储器951,它可以是可拆卸和非易失性的各类外部存储器,例如光盘、磁盘、闪存或者移动硬盘等;硬盘存储器941一般是通过非拆卸存储接口(例如,接口940)与系统总线910相连接,外部存储器一般通过可拆卸存储接口(例如,接口960)与系统总线910相连接。
上述所讨论的以及图9所示的驱动器和它相关的网络设备存储媒介提供了网络设备可读指令,数据结构,程序模块和网络设备900的其它数据的存储。例如,硬盘驱动器941说明了用于存储操作系统942,应用程序943,其它程序模块944以及程序数据945。值得注意的是,这些元件可以与操作系统934,应用程序935,其他程序模块936,以及程序数据937是相同的或者是不同的。
在本实施例中,前述实施例中的方法或者上一实施例中逻辑模块的功能可以通过存储在网络设备存储媒介中的代码或者可读指令,并由处理单元920读取所述的代码或者可读指令从而执行所述方法。
用户可以通过各类输入设备961网络设备900输入命令和信息。各种输入设备经常都是通过用户输入接口960与处理单元920相连接,用户输入接口960与系统总线相耦合,但也可以通过其他接口和总线结构相连接,例如,并行接口,或通用串行接口(USB)。显示设备990也可以通过接口与系统总线910相连接。此外,诸如计算设备900也可以包括各类外围输出设备920,输出设备可以通过输出接口980等来连接。
网络设备900可以通过网络接口970连接着一个或多个计算设备,例如,远程计算机971。远程计算节点包括网络设备,计算节点,服务器,路由器,网络PC,等同的设备或其它通用的网络结点,并且一般包括许多或所有与网络设备900有关的上述所讨论的元件。结合前述图1所描述的架构中,远程计算节点可以是从节点、计算节点或者其他网络设备。在图9中所说明的逻辑连接包括局域网(LAN)和广域网(WAN),也可以包括其它网络。网络接口970可以通过和远程计算机971建立多条TCP连接,从而进行多子流的网络数据传输。结合前述实施例,网络接口970在进行网络数据传输时,可以通过前述方法,根据多条子流链路的网络传输状态,判断通过多条子流进行冗余传输或者聚合传输,从而提高网络传输的稳定性以及传输效率。
可以理解的,图9所对应的实施例为可以用于多条子流的网络传输的通用计算机架构的网络设备。但是,通过对本发明所描述逻辑模块功能的理解,其他硬件架构下的网络设备同样可以适用于本发明所描述的功能。例如,采用智能移动设备通过无线网络进行网络传输的设备,可以通过蜂窝网络建立多条链路,通过网络传输模块对各条子流的网络传输状态进行判断,从而进行冗余传输或者聚合传输。
本领域技术人员应该可以意识到,在上述示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (20)
1.一种网络传输方法,所述方法用于通过多条子流进行数据传输,其特征在于,
确定所述多条子流的至少一种网络状态参数;
当所述多条子流中至少两条子流的所述至少一种网络状态参数满足预设条件时,将数据通过所述至少两条子流进行聚合传输,其中,所述聚合传输为同一数据包仅通过所述至少两条子流中的一条进行发送,所述至少两条子流中的每条子流所发送的数据包互不相同;
当所述聚合传输的传输速率之和小于或等于对应的阈值时,将所述至少两条子流的调度方式由聚合传输变为冗余传输,其中,所述冗余传输为数据包通过所述至少两条子流中的每条子流进行发送,所述至少两条子流中每条子流所发送的数据包相同。
2.根据权利要求1所述方法,其特征在于,所述方法还包括,当所述多条子流中至少一条子流的所述至少一种网络状态参数不满足预设条件时,将数据分别通过所述至少一条子流进行冗余传输,其中,所述冗余传输为数据包通过所述至少一条子流中的每条子流进行发送,所述至少一条子流中每条子流所发送的数据包相同。
3.根据权利要求1至2中任一所述方法,其特征在于,所述网络状态参数包括:实时传输速率、拥塞控制窗口、接收窗口、已传输数据包数量、已传输未确认数据包数量、传输时间、传输时延抖动、丢包率或者所述至少两条子流的链路传输时延差值。
4.根据权利要求3所述方法,其特征在于,当所述网络状态包括所述至少两条子流的链路传输时延差时,所述预设条件具体为:所述两条子流链路传输时延差值小于或等于对应的阈值;
所述数据包包括第一数据包,其中,所述第一数据包包含所述第一数据包发送时间,或者,所述第一数据包包含第二数据包标识和所述第一数据包与所述第二数据包的发送时间差,所述第二数据包为与所述第一数据包通过所述至少两条子流中的不同子流发送的数据包,或者,所述第一数据包包含与第三数据包标识,所述第三数据包为与所述第一数据包同时或按照预定的时间间隔发送,且通过所述至少两条子流中的不同子流发送的数据包;
所述方法还包括:获取响应报文,所述响应报文包括根据第一数据包计算得到的所述至少两条子流的链路传输时延差值。
5.根据权利要求1所述方法,其特征在于,将数据通过所述至少两条子流进行聚合传输具体包括:
将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中,其中,所述至少两条子流中传输时延大的子流的待发送缓存队列的数据量小于传输时延小的子流的待发送缓存队列的数据量。
6.根据权利要求5所述方法,其特征在于,将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中具体包括:
将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中,以使得所述至少两条子流的待发送缓存队列中的数据量的差值与所述至少两条子流的传输时延满足预设关系。
7.根据权利要求1所述方法,其特征在于,所述将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中具体包括:
将所述数据的一个数据包放入所述至少两条子流中预估传输总时间最短的子流,所述预估传输总时间为从数据包进入待发送缓存队列至数据包到达接收端之间的预估时间。
8.根据权利要求5至7中任一所述方法,其特征在于,所述至少两条子流的每条子流的待发送缓存队列中的数据量不大于该条子流对应的阈值。
9.根据权利要求5至7中任一所述方法,其特征在于,所述至少两条子流的每条子流的待发送缓存队列中的数据量还满足如下条件中的至少一种:
所述至少两条子流的每条子流的待发送缓存队列中的数据量与该子流发送窗口字节数满足预设关系;或者,
所述至少两条子流的每条子流的待发送缓存队列中的数据包数量与该子流上最大允许飞行中数据包数量。
10.根据权利要求1至2或4至7中任一所述方法,其特征在于,所述至少两条子流为所述多条子流中的全部子流。
11.一种网络传输装置,所述装置用于通过多条子流进行数据传输,其特征在于,所述装置包括:
监控模块,用于确定所述多条子流的至少一种网络状态参数;
发送模块,用于当所述多条子流中至少两条子流的所述至少一种网络状态参数满足预设条件时,将数据通过所述至少两条子流进行聚合传输,其中,所述聚合传输为同一数据包仅通过所述至少两条子流中的一条进行发送,所述至少两条子流中的每条子流所发送的数据包互不相同;
所述发送模块还用于,当所述聚合传输的传输速率之和小于或等于对应的阈值时,将所述至少两条子流的调度方式由聚合传输变为冗余传输,其中,所述冗余传输为数据包均通过所述至少两条子流中的每条子流进行发送,所述至少两条子流中每条子流所发送的数据包相同。
12.根据权利要求11所述装置,其特征在于,所述发送模块还用于,当所述多条子流中至少一条子流的所述至少一种网络状态参数不满足预设条件时,将数据分别通过所述至少一条子流进行冗余传输,其中,所述冗余传输为数据包均通过所述至少一条子流中的每条子流进行发送,所述至少一条子流中每条子流所发送的数据包相同。
13.根据权利要求11至12中任一所述装置,其特征在于,所述网络状态参数包括:其特征在于,所述网络状态参数包括:实时传输速率、拥塞控制窗口、接收窗口、已传输数据包数量、已传输未确认数据包数量、传输时间、传输时延抖动、丢包率或者所述至少两条子流的链路传输时延差值。
14.根据权利要求13所述装置,其特征在于,当所述网络状态包括所述至少两条子流的链路传输时延差时,所述预设条件具体为:所述两条子流链路传输时延差值小于或等于对应的阈值;
所述数据包包括第一数据包,其中,所述第一数据包包含所述第一数据包发送时间,或者,所述第一数据包包含第二数据包标识和所述第一数据包与所述第二数据包的发送时间差,所述第二数据包为与所述第一数据包通过所述至少两条子流中的不同子流发送的数据包,或者,所述第一数据包包含第三数据包标识,所述第三数据包为与所述第一数据包同时或按照预定时间间隔发送,且通过所述至少两条子流中的不同子流发送的数据包;
所述装置还包括接收模块,用于获取响应报文,所述响应报文包括根据第一数据包计算得到的所述至少两条子流的链路传输时延差值。
15.根据权利要求12所述装置,其特征在于,所述发送模块将数据通过所述至少两条子流进行聚合传输时具体用于,将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中,其中,所述至少两条子流中传输时延大的子流的待发送缓存队列的数据量小于传输时延小的子流的待发送缓存队列的数据量。
16.根据权利要求15所述装置,其特征在于,所述发送模块将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中时具体用于:
将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中,以使得所述至少两条子流的待发送缓存队列中的数据量的差值与所述至少两条子流的传输时延满足预设关系。
17.根据权利要求15所述装置,其特征在于,所述发送模块将所述数据的一个数据包放入所述至少两条子流中的一条子流的待发送缓存队列中时具体用于:
将所述数据的一个数据包放入所述至少两条子流中传输总时间最短的子流,所述传输总时间为从数据包进入待发送缓存队列至数据包到达接收端之间的时间。
18.根据权利要求15至17中任一所述装置,其特征在于,所述发送模块中所述所述至少两条子流的每条子流的待发送缓存队列中的数据量不大于该条子流对应的阈值。
19.根据权利要求15至17中任一所述装置,其特征在于,所述发送模块中所述至少两条子流的每条子流的待发送缓存队列中的数据量还满足如下条件中的至少一种:
所述至少两条子流的每条子流的待发送缓存队列中的数据包数量与该子流发送窗口字节数满足预设关系;或者,
所述至少两条子流的每条子流的待发送缓存队列中的数据包数量与该子流上最大允许飞行中数据包数量。
20.根据权利要求11至12或14至17中任一所述装置,其特征在于,所述发送模块中所述至少两条子流为所述多条子流中的全部子流。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18760794.0A EP3582455B1 (en) | 2017-03-02 | 2018-02-28 | Method and apparatus for multiple subflows network transmission |
PCT/CN2018/077581 WO2018157819A1 (zh) | 2017-03-02 | 2018-02-28 | 多子流网络传输方法及装置 |
US16/557,140 US11171862B2 (en) | 2017-03-02 | 2019-08-30 | Multi-subflow network transmission method and apparatus |
US17/499,069 US20220103465A1 (en) | 2017-03-02 | 2021-10-12 | Multi-Subflow Network Transmission Method and Apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2017101211107 | 2017-03-02 | ||
CN201710121110 | 2017-03-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108540380A CN108540380A (zh) | 2018-09-14 |
CN108540380B true CN108540380B (zh) | 2021-08-20 |
Family
ID=63488697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710278562.6A Active CN108540380B (zh) | 2017-03-02 | 2017-04-25 | 多子流网络传输方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11171862B2 (zh) |
CN (1) | CN108540380B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3579500B1 (en) * | 2018-06-07 | 2021-11-17 | Deutsche Telekom AG | A communication system for transmitting a transmission control protocol segment over a communication network using a multipath transmission control protocol, corresponding method and computer program |
JP7181990B2 (ja) * | 2018-07-23 | 2022-12-01 | 華為技術有限公司 | データ伝送方法及び電子デバイス |
US11064384B2 (en) | 2019-02-19 | 2021-07-13 | Mediatek Inc. | Apparatuses and methods for multipath communications using a plurality of wireless technologies |
CN110113142A (zh) * | 2019-04-28 | 2019-08-09 | 天通畅达(深圳)科技有限公司 | 基于多个数据通道并发捆绑承载大数据量业务的传输方法及系统 |
CN110392394B (zh) * | 2019-07-26 | 2021-04-16 | 湖南大学 | 无线网络中基于链路状态信息的mptcp调度方法 |
CN111356155B (zh) * | 2020-03-12 | 2023-09-15 | Oppo广东移动通信有限公司 | 一种数据调度方法、终端及存储介质 |
CN113938946B (zh) * | 2020-07-13 | 2024-10-18 | 华为技术有限公司 | 通信方法及装置 |
CN113300976B (zh) * | 2021-05-20 | 2022-12-27 | 北京字跳网络技术有限公司 | 一种数据的传输方法、装置、存储介质及电子设备 |
CN115801739A (zh) * | 2021-09-10 | 2023-03-14 | 中兴通讯股份有限公司 | 数据传输方法、数据处理方法及设备、会议终端、介质 |
CN115208836A (zh) * | 2022-06-17 | 2022-10-18 | 珠海格力电器股份有限公司 | 数据包的处理方法、装置、设备及计算机可读存储介质 |
CN115883451B (zh) * | 2022-09-22 | 2024-10-29 | 中国华能集团清洁能源技术研究院有限公司 | 基于多路径评估算法的电力二次系统网络传输方法和装置 |
CN117792991B (zh) * | 2024-02-23 | 2024-04-30 | 深圳市优为尔科技发展有限公司 | 一种路由器链路自动切换方法及多链路由器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399737A (zh) * | 2008-10-21 | 2009-04-01 | 中兴通讯股份有限公司 | 用于以太环网的链路聚合组的保护方法及装置 |
CN102271048A (zh) * | 2010-06-02 | 2011-12-07 | 中兴通讯股份有限公司 | 聚合链路中的业务保护方法及装置 |
CN103780511A (zh) * | 2012-10-19 | 2014-05-07 | 中兴通讯股份有限公司 | 链路聚合组中流量路径的协商方法及装置 |
CN104735726A (zh) * | 2013-12-23 | 2015-06-24 | 中兴通讯股份有限公司 | 一种基于多种无线接入网络的业务分流传输的方法及装置 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100374787B1 (ko) * | 2000-01-18 | 2003-03-04 | 삼성전자주식회사 | 대역 효율적인 연쇄 티.씨.엠 디코더 및 그 방법들 |
US7110378B2 (en) * | 2000-10-03 | 2006-09-19 | Wisconsin Alumni Research Foundation | Channel aware optimal space-time signaling for wireless communication over wideband multipath channels |
US7027418B2 (en) * | 2001-01-25 | 2006-04-11 | Bandspeed, Inc. | Approach for selecting communications channels based on performance |
US7222166B2 (en) * | 2001-01-25 | 2007-05-22 | Bandspeed, Inc. | Approach for managing communications channels based on performance and transferring functions between participants in a communications arrangement |
JP3580273B2 (ja) * | 2001-07-24 | 2004-10-20 | 日本電気株式会社 | Sir測定システムと装置及び方法 |
JP3753637B2 (ja) * | 2001-08-30 | 2006-03-08 | Necマイクロシステム株式会社 | Cdma受信装置におけるパス検出方法及びその装置並びに制御プログラムを記録した記録媒体 |
US7716712B2 (en) * | 2003-06-18 | 2010-05-11 | General Instrument Corporation | Narrowband interference and identification and digital processing for cable television return path performance enhancement |
EP1638238A1 (en) * | 2004-09-15 | 2006-03-22 | Siemens Aktiengesellschaft | Method for combining data packets by a telecommunication device |
US20060215577A1 (en) * | 2005-03-22 | 2006-09-28 | Guichard James N | System and methods for identifying network path performance |
US7733913B1 (en) | 2006-07-31 | 2010-06-08 | Hewlett-Packard Development Company, L.P. | Striping data over transmission channels |
US8717885B2 (en) * | 2007-04-26 | 2014-05-06 | Mushroom Networks, Inc. | Link aggregation methods and devices |
JP2009055464A (ja) * | 2007-08-28 | 2009-03-12 | Toshiba Corp | 無線通信装置、無線通信装置の制御方法、無線通信装置の制御プログラム、および半導体集積回路 |
JP2010130267A (ja) * | 2008-11-27 | 2010-06-10 | Fujitsu Ltd | 伝送装置 |
US8612917B2 (en) * | 2009-05-07 | 2013-12-17 | Oracle America, Inc. | Method and system for selecting gate sizes, repeater locations, and repeater sizes of an integrated circuit |
US8339957B2 (en) * | 2009-06-26 | 2012-12-25 | Google Inc. | Aggregate transport control |
CN101895466B (zh) | 2010-07-02 | 2013-03-20 | 北京交通大学 | 一种降低sctp多路径传输数据包乱序影响的方法 |
JP5703384B2 (ja) * | 2010-11-12 | 2015-04-15 | インターデイジタル パテント ホールディングス インコーポレイテッド | チャネルアグリゲーションおよび媒体アクセス制御再送信を実行するための方法および装置 |
US20120260185A1 (en) * | 2011-04-11 | 2012-10-11 | Google Inc. | Path length selector |
US9444756B2 (en) * | 2013-07-09 | 2016-09-13 | Broadcom Corporation | Path aggregation group monitor |
US9742638B1 (en) * | 2013-08-05 | 2017-08-22 | Amazon Technologies, Inc. | Determining impact of network failures |
KR20150089853A (ko) | 2014-01-28 | 2015-08-05 | 삼성전자주식회사 | 이종 무선망에서 트래픽 분산 제어방법 및 장치 |
GB2532072B (en) | 2014-11-07 | 2017-04-19 | Canon Kk | Feedback management in a multipath communication network |
US9706524B2 (en) * | 2014-12-24 | 2017-07-11 | Lg Electronics Inc. | Method of performing scheduling for D2D multicast communication in wireless communication system and apparatus therefor |
US10594596B2 (en) * | 2015-03-30 | 2020-03-17 | British Telecommunications Public Limited Company | Data transmission |
US10855597B2 (en) * | 2015-06-29 | 2020-12-01 | T-Mobile Usa, Inc. | Channel coding for real time wireless traffic |
CN104954206B (zh) | 2015-07-31 | 2018-03-30 | 重庆邮电大学 | 一种多路径并行传输系统的乱序分析方法 |
KR102568436B1 (ko) * | 2016-07-28 | 2023-08-21 | 삼성전자 주식회사 | 무선 통신 시스템에서 데이터의 전송 방법 및 장치 |
US20180331946A1 (en) * | 2017-05-09 | 2018-11-15 | vIPtela Inc. | Routing network traffic based on performance |
US10462042B2 (en) * | 2017-06-20 | 2019-10-29 | Cisco Technology, Inc. | Network path selection |
-
2017
- 2017-04-25 CN CN201710278562.6A patent/CN108540380B/zh active Active
-
2019
- 2019-08-30 US US16/557,140 patent/US11171862B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399737A (zh) * | 2008-10-21 | 2009-04-01 | 中兴通讯股份有限公司 | 用于以太环网的链路聚合组的保护方法及装置 |
CN102271048A (zh) * | 2010-06-02 | 2011-12-07 | 中兴通讯股份有限公司 | 聚合链路中的业务保护方法及装置 |
CN103780511A (zh) * | 2012-10-19 | 2014-05-07 | 中兴通讯股份有限公司 | 链路聚合组中流量路径的协商方法及装置 |
CN104735726A (zh) * | 2013-12-23 | 2015-06-24 | 中兴通讯股份有限公司 | 一种基于多种无线接入网络的业务分流传输的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108540380A (zh) | 2018-09-14 |
US11171862B2 (en) | 2021-11-09 |
US20190386911A1 (en) | 2019-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108540380B (zh) | 多子流网络传输方法及装置 | |
US20220417151A1 (en) | Packet transmission system and method | |
US11102129B2 (en) | Adjusting rate of outgoing data requests for avoiding incast congestion | |
Becke et al. | On the fairness of transport protocols in a multi-path environment | |
US8873385B2 (en) | Incast congestion control in a network | |
Le et al. | ecMTCP: An energy-aware congestion control algorithm for multipath TCP | |
US20140164641A1 (en) | Congestion control for data center traffic | |
US20140164640A1 (en) | Small packet priority congestion control for data center traffic | |
US20220103465A1 (en) | Multi-Subflow Network Transmission Method and Apparatus | |
JP2015106880A (ja) | 通信ノード | |
EP1417808A2 (en) | Method for supporting non-linear, highly scalable increase-decrease congestion control scheme | |
EP1701506A1 (en) | Method and system for transmission control protocol (TCP) traffic smoothing | |
CN109714128B (zh) | 数据传输方法、设备及计算机存储介质 | |
CN104092625B (zh) | 一种用于dcn中的自适应请求分批调度方法 | |
Lu | Sed: An sdn-based explicit-deadline-aware tcp for cloud data center networks | |
KR102111029B1 (ko) | 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법 | |
Hu et al. | RPO: Receiver-driven transport protocol using opportunistic transmission in data center | |
CN118264620A (zh) | 用于多路径网络上的灵活负载均衡的计算系统和方法 | |
JP2009044413A (ja) | フロー制御装置およびフロー制御方法 | |
Halepoto et al. | Management of buffer space for the concurrent multipath transfer over dissimilar paths | |
US11805071B2 (en) | Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus | |
Lu et al. | EQF: An explicit queue-length feedback for TCP congestion control in datacenter networks | |
Sreekumari et al. | A simple and efficient approach for reducing TCP timeouts due to lack of duplicate acknowledgments in data center networks | |
US11729099B2 (en) | Scalable E2E network architecture and components to support low latency and high throughput | |
Tseng et al. | A cross-layer flow schedule with dynamical grouping for mitigating larger-scale TCP incast |
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 |