CN108353032B - 用于网络上的基于速率的分组传输的系统和方法 - Google Patents

用于网络上的基于速率的分组传输的系统和方法 Download PDF

Info

Publication number
CN108353032B
CN108353032B CN201680061982.2A CN201680061982A CN108353032B CN 108353032 B CN108353032 B CN 108353032B CN 201680061982 A CN201680061982 A CN 201680061982A CN 108353032 B CN108353032 B CN 108353032B
Authority
CN
China
Prior art keywords
transmission
data
rate
data packets
determining
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
Application number
CN201680061982.2A
Other languages
English (en)
Other versions
CN108353032A (zh
Inventor
M·K·泰斯蒂西奥格鲁
M·米拉拉帕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN108353032A publication Critical patent/CN108353032A/zh
Application granted granted Critical
Publication of CN108353032B publication Critical patent/CN108353032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • H04L5/0055Physical resource allocation for ACK/NACK
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0273Traffic management, e.g. flow control or congestion control adapting protocols for flow control or congestion control to wireless environment, e.g. adapting transmission control protocol [TCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/02Processing of mobility data, e.g. registration information at HLR [Home Location Register] or VLR [Visitor Location Register]; Transfer of mobility data, e.g. between HLR, VLR or external networks
    • H04W8/04Registration at HLR or HSS [Home Subscriber Server]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Environmental & Geological Engineering (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本文描述了用于控制数据传输的装置。该装置包括分组引擎,其被配置为获得关于链路上的第一数据分组的流的数据并且确定该流的传输通信协议(TCP)特征。该装置还包括数据传输控制器,其被配置为接收第二数据分组,基于TCP特征来确定传输速率,以及基于一个或多个标准来确定是否使用基于速率的数据传输控制来控制第二数据分组的传输。数据传输控制器还被配置为响应于确定基于速率的数据传输控制将被用于控制第二数据分组的传输,使得分组引擎以组的形式传输第二数据分组,其中第二数据分组的每个组的传输时间是基于传输速率确定的。

Description

用于网络上的基于速率的分组传输的系统和方法
背景技术
在网络环境中,当链路或网络节点(例如,路由器)由于大量数据分组而过载时可能发生网络拥塞,这可能导致相当大的传输延迟。此外,由于网络节点不能处理数据分组并且被迫丢弃数据分组,因此可能导致大量的数据分组丢失。所有这些都可能导致网络性能的严重退化。
存在各种可用于避免使网络过载并改善网络性能的方案。例如,传输通信协议(TCP)提供了许多拥塞控制机制,其包括使用拥塞窗口来控制发送到网络中的数据量。拥塞窗口可以定义在一个网络往返时间(RTT)内可被传输到网络中的数据的最大大小。可以基于发送设备传输数据分组与发送设备从接收设备接收到对所传输的数据分组的确认之间所经过的时间来测量RTT。基于网络具有传输更多数据分组的能力的指示(例如,数据分组通过网络的成功的先前传输,这可以由接收到对应于所传输的数据分组的确认来指示),可以增加拥塞窗口以允许更多的数据被发送到网络中。基于网络拥塞的指示,也可以减少拥塞窗口以允许更少的数据被发送到网络中。这样的指示可以基于检测到分组丢失,例如,基于接收到一定数量的重复确认、选择性确认(SACK),当反映RTT的估计的计时器在接收到确认之前到期等。TCP拥塞控制机制还包括重传算法,其中当存在数据分组丢失的指示时重传数据分组。此外,TCP还允许延迟确认,其中可以(响应于接收到数个数据分组)将数个确认合并成单个确认,以减少协议开销。
前述TCP拥塞控制机制基于许多假设而运行。这样的假设可以包括:例如,1)瓶颈节点(例如,路由器)的带宽保持不变;2)连接延迟的变化指示分组在瓶颈节点处排队,这指示网络拥塞;3)分组丢失通常是对网络拥塞的指示,并且归因于网络拥塞;4)分组重新排序(这也可能导致重复确认)是一种稀有事件,并且可以在几个分组内检测到;以及5)只有当延迟确认算法是主动的才观察到延迟确认,并且延迟确认被限制为针对最多两个分组有一个确认。
在诸如无线网络(例如,WiFi、LTE等)的某些类型的网络上,大多数(如果不是全部)前述假设可能不准确。例如,在LTE网络中,由于部署在较低层的信道/载波聚合技术,带宽可以变化。此外,由于在媒体访问控制(MAC)和无线电链路控制(RLC)层的重传机制,可能存在连续的延迟变化。还观察到,在信道和载波聚合/解聚时,延迟激增到大量的常规路径延迟。而且,可以观察到基于MAC和RLC配置的大量无序分组。此外,无线网络中频繁发生随机数据分组丢失,这不一定归因于网络节点由于拥塞而无法处理数据分组。因此,随机数据分组丢失通常不是这种网络中网络拥塞的可靠指标。
所有这些不准确的假设可能导致分组丢失的错误确定和/或网络拥塞的错误确定。例如,随机数据分组丢失可能被错误地解释为指示网络拥塞。而且,在一些无线标准(例如,4G)下,接收设备可以发送延伸确认,其可以覆盖多达一个完整RTT值的数据,但不会在发送数据的一个RTT内到达。延迟接收延伸确认可以以多种方式影响TCP拥塞控制机制的运行。首先,在TCP拥塞控制机制下,拥塞窗口的调整和下一组数据分组的传输都由接收到对先前传输的数据分组的确认来触发,并且可以通过延迟接收对应于那些先前传输的数据分组的延伸确认来推迟,这导致网络资源利用不足。其次,在发生拥塞相关的分组丢失的错误确定的情况下,例如当延伸确认由于生成延伸确认的数据的累积而不是由于网络拥塞而比预期RTT到达更晚时,可能导致拥塞窗口大小的不必要的减少以及数据分组的重传。因此,网络性能可能恶化。
发明内容
在一些方面,描述了用于控制数据传输的装置。该装置可以包括分组引擎,该分组引擎被配置为获得关于链路上的第一数据分组的流的数据,并且确定该流的传输通信协议(TCP)特征。该装置还可以包括数据传输控制器,该数据传输控制器被配置为接收第二数据分组,确定传输速率,并且基于一个或多个标准来确定基于速率的数据传输控制是否将被用于控制第二数据分组的传输。数据传输控制器还被配置为响应于确定基于速率的数据传输控制将被用于控制第二数据分组的传输,使得分组引擎以组的形式传输第二数据分组,其中第二数据分组的每个组的传输时间是基于传输速率确定的。
在另一方面,描述了用于控制数据传输的方法。该方法可以包括:获得关于链路上的第一数据分组的流的数据,确定该流的传输通信协议(TCP)特征,接收第二数据分组,确定传输速率,基于一个或多个标准确定基于速率的数据传输控制是否将被用于控制第二数据分组的传输;以及响应于确定基于速率的数据传输控制将被用于控制第二数据分组的传输,以组的形式传输第二数据分组,其中,第二数据分组的每个组的传输时间是基于所述传输速率确定的。
在又一方面,描述了非瞬态计算机可读存储介质。该存储介质存储可由装置的至少一个处理器执行的一组指令,以使所述装置执行用于控制数据传输的方法。该方法可以包括:获得关于链路上的第一数据分组的流的数据,确定该流的传输通信协议(TCP)特征,接收第二数据分组,确定传输速率,基于一个或多个标准确定基于速率的数据传输控制是否将被用于控制第二数据分组的传输;以及响应于确定基于速率的数据传输控制将被用于控制第二数据分组的传输,以组的形式传输第二数据分组,其中,所述第二数据分组的每个组的传输时间是基于所述传输速率确定的。
附图说明
现在将参考示出本公开的示例性实施例的附图。在附图中:
图1是与本公开的实施例一致的示例性网络环境的框图。
图2A-2B是与本公开的实施例一致的示例性计算设备的框图。
图3A是与本公开的实施例一致的图1中示出的示例性装置的框图。
图3B是与本公开的实施例一致的图3A中示出的示例性装置的一部分的框图。
图4示出了与本公开的实施例一致的用于估计数据分组的传输速率的示例性的一组通信。
图5是与本公开的实施例一致的数据传输控制器的示例性实施例的框图。
图6是表示与本公开的实施例一致的数据传输控制的示例性方法的流程图。
图7A-7C是表示与本公开的实施例一致的数据传输控制的示例性方法的流程图。
具体实施方式
现在将详细参考根据本公开实施的示例性实施例,其示例在附图中示出。只要有可能,在整个附图中将使用相同的附图标记来表示相同或相似的部分。
本文描述的实施例提供基于速率的数据传输控制,其允许以反映实际网络性能的速率通过网络来传输数据,并且可以减轻由于在传统TCP拥塞控制机制下错误确定网络拥塞而导致的网络过载和/或利用不足。因此,网络数据流的效率可以得到改善。
图1是示例性通信系统100的框图。示例性通信系统100可以是通过网络传输数据分组的任何类型的系统。例如,示例性通信系统100可以包括跨有线或无线网络向终端(终端未在图1中示出)传输数据分组的一个或多个网络。示例性通信系统100可以具有例如GSM网络,采用宽带码分多址(W-CDMA)无线电接入技术的UMTS网络,CDMA2000网络,WiMax网络,LTE网络等的网络体系结构。
另外,示例性通信系统100可以包括一个或多个网络101,102,103(A-C),一个或多个控制器104(A-D),一个或多个服务节点105(A-B),一个或多个基站107(A-C)-109(A-C),网关120以及一个或多个装置140,等等。在高层次上,通信系统100可以具有树状网络拓扑,其中网关120是树的根节点并且基站107-109是叶子。
网络101可以是适用于分组类型的通信(诸如互联网通信)的无线电网络、广域网(WAN)、局域网(LAN)或无线网络的任何组合。例如,在一个示例性实施例中,网络101可以是通用分组无线电服务(GPRS)核心网络,其在GSM和W-CDMA网络中为互联网协议分组服务提供移动性管理、会话管理和传送。在一些实施例中,网络101可以包括网关120以及一个或多个服务节点105(A-B)。
网络102可以包括适用于分组类型的通信的广域网(WAN)、局域网(LAN)或无线网络的任何组合。在一些示例性实施例中,网络102可以例如是互联网和X.25网络。在一些实施例中,网络102可以从客户端设备130(A-C)接收数据分组。客户端设备130可以是被配置为通过网络101和103与另一个远程设备(例如,服务器、另一个客户端设备等)通信的任何设备。网络102可以经由例如网关120向网络101传送从客户端设备130接收的数据分组。尽管客户端设备130被描绘为计算机(例如,客户端设备130A)、膝上型计算机(例如,客户端设备130B)和平板电脑(例如,客户端设备130C),但应该理解,客户端设备130可以是通过网络101,102和103传送分组的任何类型的设备(例如,诸如可穿戴式智能手表)。
网关120是将一种类型的网络中提供的格式化数据转换为另一种类型的网络所需的特定格式的设备。网关120可以是服务器、路由器、防火墙服务器、主机或代理服务器,或者上述的任何组合。在一些实施例中,网关120可以包括负载平衡器或其他类似的系统。在一些实施例中,网关120可以将从路由器接收的信号转换成网络101可以理解的信号,反之亦然。网关120能够单独或以任何组合的形式处理网页、图像、音频、视频和T.120传输,并且能够进行全双工媒体转换。作为示例性实施例,网关120可以是支持GPRS网络与外部分组交换网络(如互联网和X.25网络)之间的互通的网关GPRS支持节点(GGSN)。
服务节点105是将来自网关120的数据分组输送到其地理服务区域内的相应网络103的设备,反之亦然。服务节点105可以是:例如,服务器、路由器、防火墙服务器、主机或代理服务器。服务节点105还可以具有包括分组路由和传送、移动性管理(附接/分离和位置管理)、逻辑链路管理、网络访问调解和认证以及计费功能的功能。在一些实施例中,服务节点105可以是服务GPRS支持节点(SGSN)。在这样的实施例中,SGSN可以具有位置寄存器,其存储在此SGSN注册的所有GPRS用户的位置信息,例如,当前小区、当前访问者位置(VLR)和用户简档(例如,国际移动用户识别码(IMSI))以及分组数据网络中使用的地址。
网络103可以包括GSM或UMTS网络内的任何无线电收发器网络,或者适用于分组类型的通信的任何其他无线网络。在一些示例性实施例中,取决于所利用的底层传送技术,网络103的无线电接入网络(RAN)或回程区域(Backhaul area)可具有环形拓扑。在一些实施例中,网络103可以是GSM系统中的RAN或者UMTS系统的回程区域。另外,示例性网络103可以包括基站107-109(例如,基站收发台(BTS)或节点B)以及一个或多个控制器104(A-C)(例如,基站控制器(BSC)或无线电网络控制器(RNC)),等等。移动终端(图1中未示出)与具有无线电收发设备的BTS/节点B107-109通信。BTS/节点B 107-109与BSC/RNC 104(A-C)通信,BSC/RNC 104(A-C)负责当用户从一个小区移动到另一个时无线电信道的分配和切换。BSC/RNC 104(A-C)进而与服务节点105通信,服务节点105管理用户的移动性以及提供其他功能,诸如调解对网络的访问和计费。
装置140是可以优化和控制例如广域网(WAN)流量的设备。在一些实施例中,装置140优化其他类型的网络流量,诸如局域网(LAN)流量、城域网(MAN)流量或无线网络流量。装置140还可以处理不同的网络,像许多公司网络中常见的多协议标签交换(“MPLS”)。装置140可以通过例如在已建立的通信链路中调度数据分组来优化网络流量,使得可以以预定的时间和速率传输或者丢弃一定数量的数据分组,从而避免或者减轻网络101和102中的以及下游网络(例如,网络103)中的网络拥塞。在一些实施例中,装置140是物理设备,诸如Citrix System的Branch Repeater、Netscaler或CloudBridge。在一些实施例中,装置140可以是虚拟设备。在一些实施例中,装置140可以是具有多个虚拟机实例(例如,虚拟云桥)的物理设备。如图1所示,装置140可以被部署在网络101内的各个位置处。在一些实施例中,装置140可以位于网关120处、控制器104处、一个或多个基站107-109处或者任何其他位置处,以优化该位置处的网络流量。
在一些实施例中,通信系统100还包括与装置140通信耦合的数据中心(图1中未示出)。数据中心可以是物理或虚拟的中央存储系统,用于存储、管理和传播与特定的公共或私有实体有关的数据和信息。数据中心可用于容纳计算机系统和相关组件,诸如一个或多个物理服务器、虚拟服务器和存储系统。另外,数据中心可以包括被配置为提供某些服务的一个或多个服务器。数据中心还可以包括可以以与图1的装置140类似的方式优化网络流量的装置。在一些实施例中,在优化网络流量时,数据中心处的装置可以与装置140一起工作。
装置140和网关120可以被部署为能够在本文描述的任何类型和形式的网络上通信的任何类型和形式的特定计算设备(例如,诸如图2A-2B的计算设备),或者可以在该特定计算设备上执行。
如图2A-2B所示,每个计算设备200包括中央处理单元(CPU)221和主存储器222。CPU 221可以是响应并处理从主存储器222提取的指令的任何逻辑电路。CPU 221可以是能够执行存储在存储器(例如,主存储器222)或高速缓存(例如,高速缓存240)中的特定指令组的单个或多个微处理器、现场可编程门阵列(FPGA)或者数字信号处理器(DSP)。存储器包括有形和/或非瞬态计算机可读介质,诸如软盘、硬盘、CD-ROM(光盘只读存储器),MO(磁光)驱动器、DVD-ROM(数字多功能盘只读存储器)、DVD-RAM(数字多功能盘随机存取存储器)、闪存驱动器,闪存、寄存器、高速缓存或半导体存储器。主存储器222可以是能够存储数据并且允许CPU 221直接访问任何存储位置的一个或多个存储器芯片。主存储器222可以是任何类型的随机存取存储器(RAM),或者能够如本文所述进行操作的任何其他可用的存储器芯片。在图2A所示的示例性实施例中,CPU 221经由系统总线250与主存储器222通信。计算设备200还可以包括通过I/O控制器223连接的视觉显示设备224和输入/输出(I/O)设备230(例如,键盘、鼠标或指示设备),二者都经由系统总线250进行通信。可以理解的是,CPU 221还可以以不同于通过系统总线250的方式与存储器222和其他设备通信,诸如通过串行通信方式或点对点通信方式。此外,(I/O)设备230还可以为计算设备200提供存储和/或安装介质。
图2B示出了示例性计算设备200的一个实施例,其中CPU 221经由存储器端口203与主存储器222直接通信。CPU 221可以经由二级总线(未示出)与高速缓存240通信,该二级总线有时被称为后端总线。在一些其他的实施例中,CPU 221可以经由系统总线250与高速缓存240通信。高速缓存240通常具有比主存储器222更快的响应时间。在一些实施例中,诸如图2B所示的实施例,CPU 221可以经由I/O端口(未示出)与(I/O)设备230直接通信。在进一步的实施例中,I/O设备230可以是系统总线250和外部通信总线之间的桥270,外部通信总线诸如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线,FireWireTM总线,FireWire800TM总线、以太网总线,AppleTalkTM总线、千兆以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannelTM总线或串行连接的小型计算机系统接口总线,或者某种其他类型的数据总线。
如图2A所示,计算设备200可以支持任何合适的安装设备216,诸如磁盘驱动器或用于接收一个或多个计算机可读介质(例如USB设备、闪存驱动器、SD存储卡)的其他输入端口;硬盘驱动器;或者适用于安装软件和程序(诸如任何客户端代理220)的任何其他设备或其部分。计算设备200还可以包括存储设备228,诸如一个或多个硬盘驱动器或者独立磁盘的冗余阵列,用于存储操作系统和其他相关软件并且用于存储应用软件程序,诸如与客户端代理220有关的任何程序。可选地,任何安装设备216也可以被用作存储设备228。
此外,计算设备200可以包括网络接口218,以通过各种链路接入到LAN、WAN、MAN或互联网,所述各种链路包括但不限于标准电话线路、LAN或WAN链路(例如,802.11、T1、T3、56Kb、X.25)、宽带链路(例如,ISDN、帧中继、ATM)、无线连接(Wi-Fi、蓝牙、Z-Wave、Zigbee)或者上述中任何或全部的某种组合。网络接口218可以包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或者适用于将计算设备200接入能够通信和执行本文描述的操作的任何类型的网络的任何其他设备。
图3A是与本公开的实施例一致的图1中示出的示例性装置140的框图。装置140可以包括与图2A的网络接口218一致的一个或多个网络接口218A-N、分组引擎320和数据传输控制器330。尽管图3A将网络接口218A-218N描述为两个网络接口,但可以理解的是接口218A-218N可以包括任何数量的网络接口。
在一些实施例中,也被称为“分组处理引擎”、“分组处理器”或“数据处理器”的分组引擎320负责控制和管理对由装置140经由网络接口218A-N接收和传输的数据分组的处理。分组引擎320可以是一个或多个模块,其可以是被设计为与其他组件一起使用的一个或多个封装的功能硬件单元,或者执行特定功能(例如,控制和管理对数据分组的处理)的程序的一部分,其对应于相关功能的特定步骤。分组引擎320可以体现为可以在网络堆栈(例如,诸如开放系统互连通信模型的层和协议)的数据链路层(层2)、网络层(层3)或传输层(层4)处运行的单个分组引擎或者任意数量的多个分组引擎。分组引擎可被配置为在由CPU221执行之后完成本文所述的一些或全部步骤。在一些实施例中,经由以太网通信协议在数据链路层上传送数据分组,所述以太网通信协议包括WAN或LAN协议族中的任何一种,诸如IEEE802.3所涵盖的那些协议。在一些实施例中,网络堆栈可以具有任何类型和形式的无线协议,诸如IEEE 802.11和/或移动互联网协议。一个或多个分组引擎320诸如经由IP通信协议在网络层处拦截或接收数据分组。在一些实施例中,分组引擎320诸如经由TCP通信协议在传输层处拦截或接收数据分组,并且可以在传输层上方的任何会话或任何应用层处运行。
分组引擎320可以包括用于在数据分组的处理期间对一个或多个数据分组进行排队的缓冲器。另外,分组引擎320可以经由一个或多个通信协议进行通信,以经由网络接口218A-N跨一个或多个链路传输和接收多个网络数据分组。链路将装置140连接到其他设备,例如,位于远离装置140的另一个装置。分组引擎320可以被配置为获取关于流的数据,并且将所获取的数据存储在可操作地连接的计算机存储器中。跨一个或多个链路运行的发送和接收的数据分组可以被认为是“数据流”或“流”。
在一些实施例中,分组引擎320可以收集指示活动流(active flow)的操作的数据。例如,该数据可以包括指示分组发送时间、分组接收时间、用于发送和接收相同分组(或其确认)的往返时间的信息,指示数据分组丢失事件的信息,发送和接收的分组总数,和/或指示跨链路操作的一个或多个活动流的拥塞和/或操作方面的其他信息。基于该数据,分组引擎320可以动态地确定流的一个或多个TCP特征。流特征可以包括例如分组往返时间、分组的排队延迟、拥塞窗口大小信息等。
在一些实施例中,数据传输控制器330负责控制将可以从其他实体(例如,软件应用、另一物理设备等)接收的数据传输到网络中。数据传输控制器330还包括数据传输控制协调器340、基于速率的数据传输控制器350和基于拥塞窗口的数据传输控制器360。如下文将描述的,在控制将数据传输到网络中时,基于速率的数据传输控制器350可以在数据传输控制协调器340的协调下,与基于拥塞窗口的数据传输控制器360一起工作。
在一些实施例中,基于速率的数据传输控制器350可以基于反映网络性能的信息在数据要经由网络接口218A-N传输到网络时确定一个或多个传输时间。基于速率的数据传输控制器350还可以基于网络性能信息通过确定例如数据分组的有效载荷大小以及将传输到网络中的数据分组的数量,来确定将在上述传输时间传输的数据的大小。在一些实施例中,可以从分组引擎320计算的在先数据流的一个或多个TCP特征中得到网络性能信息。例如,如将在下文中描述的,基于速率的数据传输控制器350可以基于分组引擎320提供的数据分组的传输时间和确认的接收时间来估计网络内数据分组的传输速率。接着,基于速率的数据传输控制器350可以控制分组引擎320在多个相应的传输时间传输多组数据分组,其中传输时间由反映传输速率的时间间隔分开。在一些实施例中,每组数据分组的大小可以是相同的。如将在下文中描述的,可以基于网络内的传输速率以及RTT来确定前述的数据分组大小和时间间隔。
在一些实施例中,如上所述,可以基于数据分组的传输时间和相关联的确认的接收时间来确定传输速率。现在参考图4,其示出了确定传输速率的示例性方法。作为说明性示例,分组405A-D、406A-D、407A-D和408A-D在例如分组引擎320的缓冲器处排队。分组405A-D中的每一个分别具有DA、DB、DC和DD的数据大小。在时间410A,基本上同时将分组405A-D中的每一个传输到数据接收器412。当数据接收器412接收到分组时,其针对每个接收到的分组传输确认,其中ack 415A对应于分组405A,ack 415B对应于分组405B,ack 415C对应于分组405C以及ack 415D对应于分组405D。如图4所示,装置140在时间420A处接收ack415A,在时间420B处接收ack 415B,在时间420C处接收ack 415C,并且在时间420D处接收ack 415D。
在该说明性示例中,可以基于以下公式来确定传输速率:
速率=(DB+DC+DD)/(时间420D-时间420A)
可以理解的是,可以使用其他手段来做出该确定,诸如状态表等。
在接收到对应于多个数据分组的延迟确认的情况下,可以调节速率计算以包括由该延迟确认所确认的所有数据分组。作为说明性示例,如果没有接收到ack 415B和415C,并且ack 415D是对应于分组405B、405C和405D的延迟确认,则可以调节传输速率计算以考虑由ack 415D确认的分组405B、405C和405D的大小。在这个特定的示例中,仍然可以使用与上面相同的公式来计算传输速率。
在一些实施例中,也可以基于其他参数来计算传输速率,诸如包含在流的TCP特征中的最小路径RTT和拥塞窗值。当确认的接收时间还不能用于传输速率的确定时,可以使用这种计算来计算初始的传输速率。
在传输分组405A-D之后,不等待接收相应的确认,也可以根据基于传输速率确定的在传输时间的排队顺序来传输剩余分组的组。例如,如图4所示,在时间410B处传输分组406A-D,在时间410C处传输分组407A-D,并且在时间410D处传输分组408A-D。时间410A、410B、410C和410D中的每一个可以分开特定的时间间隔。在一些情况下,每组数据分组405A-D、406A-D、407A-D和408A-D可以具有相同的大小,但不是必需的。特定时间间隔的持续时间与数据分组405A-D、406A-D、407A-D和408A-D的数据大小的组合可以反映传输速率。作为说明性示例,在每组数据分组405A-D、406A-D、407A-D和408A-D具有相同大小并且时间410A、410B、410C和410D之间的时间间隔的持续时间相同的情况下,可以由数据分组405A-D的大小与数据分组405A-D的传输时间(时间410A)和数据分组406A-D的传输时间(时间410B)之间的时间间隔的持续时间之间的比率来反映传输速率。
在一些实施例中,传输速率可以每RTT大约更新一次,或者在比一个RTT更长的持续时间之间更新。例如,参考图4,可以收集在传输分组405A-D之后在一个RTT的持续时间内接收到的确认,并且可以基于那些确认的接收时间来计算传输速率。在一些情况下,可以基于先前发送的分组的传输时间和相应确认的接收时间之间的差来估计RTT。例如,可以基于(关于分组405A和ack 415A的)时间420A和410A之间的差或者关于其他分组-确认对的传输时间和接收时间之间的差(例如,在关于分组405B和ack 415B的时间420B和410A之间,在关于分组405C和ack 415C的时间420C和410A之间,在关于分组405D和ack 415D的时间420D和410A之间,等等)来估计RTT。还可以对RTT进行后处理,诸如取平均(例如,针对任何数量的分组405A-D对RTT取平均)以及过滤(例如,丢弃与分组405A-D不相关联的RTT,丢弃与第一数据分组的其他RTT显著不同的RTT,等等)。
如果在一个RTT的持续时间内没有有效的测量可用(例如,未接收到确认,因此没有确认的接收时间可以被采样),则可以跳过传输速率的更新。在这种情况下,可以基于例如在先前的RTT确定的传输速率来确定下一组数据分组的传输时间。作为说明性示例,如果在分组406A-D的传输时间(时间410B)的一个RTT内没有接收到确认,则可以基于确定在传输时间410A和410B之间分开的时间间隔的相同传输速率来确定下一传输时间(时间410C)。
在一些实施例中,如上所述,可以仅基于属于同一组数据分组的确认来更新传输速率。可以基于例如包含在确认中的序列号以及相应分组的传输时间来确定确认是否属于同一组数据分组。如果在该RTT内接收到不属于同一组数据分组的确认,则不会为该确认更新传输速率。作为说明性示例,如果在时间410A之后的一个RTT内,除了ack 415A-D之外还接收到对于先前的数据分组的组的延伸确认,则不会基于该延伸确认的接收时间来更新传输速率。
在一些实施例中,可以基于平均函数来更新传输速率,其中将针对当前RTT计算的传输速率与在先前的RTT中计算的传输速率进行平均。也可以基于跨RTT的确认的接收时间来执行平均。然后,将平均传输速率提供给分组引擎320,以控制数据向网络的传输。在一些实施例中,平均函数可以是指数移动平均函数,其中,例如与在相对遥远的过去确定的传输速率样本相比,较新的传输速率样本与更大的权重相关联。在针对当前RTT没有计算传输速率的情况下(例如,在时间410A的一个RTT内没有对确认接收时间的有效测量可用等),可以不更新平均传输速率,并且可以基于当前的平均传输速率来控制下一组数据分组的传输。
在一些实施例中,可以基于一个或多个所传输的分组丢失并且无法到达数据接收器412的指示来调节对传输速率的更新。该指示可以来自例如装置140,其接收指示由数据接收器412接收的分组的序列号的选择性确认(SACK)。如果在SACK中列出的序列号不包括所传输的分组的序列号,则基于速率的数据传输控制器350可以确定所传输的分组丢失。分组丢失的另一种可能的指示可以是装置140在传输之后的特定时间量内未能接收到对所传输的分组的确认。在这两种情况下,基于速率的数据传输控制器350可以基于在当前RTT中接收的确认的接收时间来确定计算速率可能不被计算。相反,在先前的RTT中确定的传输速率可以被提供给分组引擎320,以控制下一组数据分组的传输。在一些实施例中,可以通过预定因素来进一步降低所提供的传输速率,以减轻网络过载的风险。
在确定了传输速率之后,基于速率的数据传输控制器350还可以确定在数据分组的组中将要传输的数据的总大小。将要传输的数据的总大小可以由例如下游网络节点(例如,路由器)的队列大小来限制。在一些实施例中,如上所述,分组引擎320可以确定数据分组的排队延迟,作为TCP流特征的部分。基于速率的数据传输控制器350可以基于排队延迟来估计队列大小,并且控制将要传输的数据的总大小处于队列大小的特定比率,以减轻网络节点过载以及网络拥塞的风险。
基于数据分组的组中将要传输的数据的总大小以及传输速率,基于速率的数据传输控制器350随后可以确定分隔每组数据分组的传输时间的时间间隔以及每组数据分组的大小。在某些情况下,分隔传输时间的时间间隔可以相同,但不是必需的。在一些实施例中,每组数据分组可以包括基于速率的数据传输控制器350从其他实体(例如,软件应用、另一物理设备等)接收的多个数据分组。在一些实施例中,基于速率的数据传输控制器350还可以提取所接收的数据分组的有效载荷,并且使用所提取的有效载荷来生成数据分组的组。在某些情况下,每组数据分组的大小可以相同,但不是必需的。
返回参照图3A,数据传输控制器330还包括基于拥塞窗口的数据传输控制器360。在一些实施例中,基于拥塞窗口的数据传输控制器360可以基于由分组引擎320计算的拥塞窗口大小来确定在一个RTT的持续时间内将被传输到网络中的(如由例如数据分组的数量、分组有效载荷的大小等反映的)数据的大小。可以基于传统的TCP拥塞避免算法来控制拥塞窗口大小。接着,基于拥塞窗口的数据传输控制器360可以控制分组引擎320,以在一个RTT的持续时间内将所确定的大小的数据传输到网络中。
在一些实施例中,数据传输控制协调器340可以协调基于速率的数据传输控制器350和基于拥塞窗口的数据传输控制器360的运行。例如,数据传输控制协调器340可以基于满足一个或多个标准来确定允许基于速率的数据传输控制器350控制分组引擎320的数据传输,并且当不再满足一个或多个标准时,动态地将控制赋予基于拥塞窗口的数据传输控制器360。
用于确定是否允许基于速率的数据传输控制器350或基于拥塞窗口的数据传输控制器360控制分组引擎320的标准可以包括:例如,在网络中传输的分组的数量至少等于阈值。例如,当连接刚刚建立并且发送设备仅传输了少量数据分组以及接收到少量相应确认时,少量数据分组的传输速率不一定反映当前的网络性能。在这种情况下,数据传输控制协调器340可以确定少量确认的接收时间不提供对网络中的数据的传输速率的准确估计。因此,数据传输控制协调器340可以确定允许基于拥塞窗口的数据传输控制器360控制分组引擎320处的数据分组的传输,直到它接收到存在更多数据分组在网络中传输的指示。在一些实施例中,这样的指示可以包括:例如,拥塞窗口大小(其可以在接收到确认时增加)至少等于预定的阈值,或者反映至少等于阈值的数据分组的数量已被成功传输的任何其他参数。
前述标准还可以包括:例如,在一个RTT内将由基于速率的数据传输控制器350传输到网络中的数据的大小至少等于上述阈值。数据传输控制协调器340可以基于例如所确定的传输速率来做出确定。由此确定的将在一个RTT内传输的数据的大小可以大于或小于将由基于速率的数据传输控制器350传输的一组数据分组的总大小(其可以基于例如如上所述的下游网络节点的队列大小而确定)。如果在基于速率的数据传输控制器350的控制下将在一个RTT内传输的数据的大小小于上述阈值,则数据传输控制协调器340可以确定网络太慢(拥塞)而不能完成通过使用基于速率的传输在RTT内传输数据分组的组。因此,数据传输控制协调器340可以确定允许基于拥塞窗口的数据传输控制器360控制分组引擎320处的数据分组的传输。在该情况下,基于拥塞窗口的数据传输控制器360可以将拥塞窗口大小设置为等于将在一个RTT内以所确定的传输速率传输的数据量。在一些情况下,基于拥塞窗口的数据传输控制器360可以基于前述拥塞窗口大小在一个RTT内传输多个数据分组。在接收到对所传输的数据分组中的至少一个数据分组的确认之后,基于拥塞窗口的数据传输控制器360随后可以增加拥塞窗口大小,然后基于增加的拥塞窗口大小来传输下一组数据分组。
在一些实施例中,数据传输控制协调器340也可以被预先配置为选择基于速率的数据传输控制器350。当未满足任何上述标准时,预先配置的选择可以被忽略。在一些实施例中,数据传输控制协调器340也可以被预先配置为选择基于拥塞窗口的数据传输控制器360,并且随后在满足前述标准中的至少一些时切换到基于速率的数据传输控制器350。
图3B是与本公开的实施例一致的图3A中示出的示例性装置140的一部分的框图。在一些实施例中,装置140的操作系统分配、管理或以其他方式将可用的系统存储器分隔成内核空间(系统空间)和用户空间(应用空间)。内核空间通常被保留以用于运行内核,包括任何设备驱动程序、内核扩展或其他内核相关软件。内核可以是操作系统的核心,并且提供对装置140的资源和硬件相关元件的访问、控制以及管理。根据装置140的一些实施例,内核空间还可以包括与分组引擎320、数据传输控制器330或其任何部分一起工作的多个网络服务或进程。另外,内核的实施例可以取决于由装置140安装、配置或以其他方式使用的操作系统。
用户空间是由用户模式应用或者在用户模式下运行的程序所使用的操作系统的存储器区域或部分。用户模式应用不能直接访问内核空间并使用服务调用来访问内核服务。操作系统使用用户空间来执行或运行应用程序并且提供用户级程序、服务、进程和/或任务。作为示例,操作系统可以在用户空间中执行网络接口218A-N的软件。
图5是与本公开的实施例一致的数据传输控制的示例性实施例的框图。如上所述,数据传输控制器330可以被配置为从分组引擎320接收一个或多个TCP特征,诸如包括与分组数据550的活动流相关的信息的TCP特征530。TCP特征530可以包括这样的信息,其包括例如一个或多个排队延迟、指示流拥塞的信息、指示一个或多个拥塞窗口大小的信息以及指示活动流450中的分组的一个或多个平均往返时间的信息。当跨TCP链路发送和接收分组时,流是“活动的”。
根据一些实施例,一个或多个处理器(例如,CPU 221)执行数据传输控制器330。数据传输控制器330可以接收TCP特征530,然后基于TCP特征530(例如,当前拥塞窗口大小)确定基于速率的数据传输控制或者基于拥塞窗口的数据传输控制是否用于控制分组引擎320对数据分组的传输。在将使用基于速率的数据传输控制的情况下,数据传输控制器330还可以基于TCP特征530(例如,排队延迟、确认的接收时间等)来确定传输速率以及将以该传输速率传输的数据分组的组的总大小。与数据传输控制相关的数据(例如,是否将使用基于速率或基于拥塞窗口的控制、传输时间,将传输的数据的大小等等)可以包含在传输配置540中,随后该传输配置540可以被提供给分组引擎320。
图6是表示与本公开的实施例一致的数据传输控制的示例性方法600的流程图。将容易理解的是,所示的过程可以改变为删除步骤或者进一步包括附加的步骤。尽管方法600被描述为由装置(例如,装置140)来执行,但应该理解,可以由其他设备单独地或与该装置组合地执行方法600。
在初始启动之后,在步骤605中,使用例如一个或多个分组引擎(例如,分组引擎320)的装置140可以从第一数据分组的当前传输来确定一个或多个TCP特征。TCP特征可以包括例如拥塞窗口大小、RTT、与第一数据分组对应的确认的接收时间等。
在步骤610中,装置140可以接收一组第二数据分组以进行下一传输。装置140可以从例如软件应用或与装置140通信地耦合的其他物理设备(例如,客户端设备130A-C)接收第二数据分组。在一些实施例中,步骤610可以在步骤605之前进行、在步骤605之后进行或者与步骤605同时进行。
在步骤615中,装置140确定基于速率的数据传输控制是否将被用于控制分组引擎320处的分组传输。如上所述,该确定可以基于是否满足一个或多个预定标准。在一些情况下,标准可以包括例如是否有足够数量的数据分组被传输,使得确认的接收时间可以提供对网络中的数据传输速率的估计。这样的确定可以基于例如包含在TCP特征中的拥塞窗口大小信息,其可以反映正被传输和确认的数据分组的数量。当拥塞窗口大小至少等于预定阈值时,可以满足标准。而且,在一些情况下,标准还可以包括:在一个RTT内将由基于速率的数据传输控制器350传输到网络中的数据的大小超过预定阈值,这可以表示网络具有足够的能力来处理将由基于速率的数据传输控制器350传输的数据。在一些实施例中,步骤615可以由图3A的数据传输控制协调器340来执行。
如果装置140确定将使用基于速率的数据传输控制(在步骤615中),则在步骤620中,装置140可以将该组第二数据分组在例如分组引擎320处进行排队。然后,在步骤625中,装置140可以基于所接收的一个或多个TCP特征来确定该组第二数据分组的传输速率。如上所述,可以基于例如所传输的数据分组的大小以及相应的确认的接收时间来确定传输速率,如图4所示。在确认的接收时间还不可用(例如,为了计算初始传输速率)的情况下,也可以基于包含在所接收的TCP特征中的RTT和拥塞窗口大小信息来确定传输速率。此外,还可以基于先前确定的传输速率使用例如移动平均函数来确定传输速率。在一些情况下,例如,当在传输一组分组的一个RTT内没有接收到确认时,或者当检测到分组丢失时,还可以基于先前确定的传输速率来确定第二数据分组的传输速率。
在步骤625中确定传输速率之后,随后在步骤630中,基于速率的数据传输控制器350可以控制在分组引擎320处第二数据分组的传输。如上所述,基于速率的数据传输控制器350可以控制分组引擎320以组的形式传输排队的第二数据分组(或者来源于第二数据分组的分组),其中每个组的传输时间被隔开特定的时间间隔。可以基于在步骤625中确定的传输速率来确定该时间间隔。还可以基于例如传输速率、将传输的数据的总大小等来确定每组分组的大小。随后,基于速率的数据传输控制器350可以将时间间隔和数据大小信息传输到分组引擎320,作为传输配置(例如,传输配置540)的一部分。然后,分组引擎320可以基于传输配置来传输数据。
另一方面,如果数据传输控制协调器340在步骤615中确定将使用基于拥塞窗口的数据传输控制,则随后基于拥塞窗口的数据传输控制器360可以向分组引擎320提供多个第二数据分组,以在步骤635中在一个RTT内进行传输。可以基于拥塞窗口大小来确定所提供的第二数据分组的数量。在一些情况下,可以基于包含在TCP特征中的拥塞窗口大小信息来确定拥塞窗口的大小。在一些情况下,可以基于将在一个RTT内以先前确定的传输速率传输的数据的大小的估计来确定拥塞窗口大小。
图7A-7C是表示与本公开的实施例一致的数据传输控制的示例性方法700的流程图。将容易理解的是,所示的过程可以改变为删除步骤或者进一步包括附加的步骤。尽管方法700被描述为由装置(例如,装置140)来执行,但应该理解,可以由其他设备单独地或与该装置组合地执行方法700。
在初始启动之后,在步骤705中,使用例如一个或多个分组引擎(例如,分组引擎320)的装置140可以传输一组第一数据分组。在传输第一数据分组之后,在步骤710中,装置140可以监控并接收与该组第一数据分组对应的确认。
在步骤710中接收到确认之后,随后在步骤715中,装置140可以确定所接收的确认是否指示一个或多个第一数据分组丢失并且未能到达接收方(例如,数据接收器412)。如上所述,分组丢失的指示可以来自例如装置140,其接收指示数据接收器412接收的分组的序列号的SACK。然后,装置140可以基于来自SACK的信息确定数据接收器412没有接收到第一数据分组中的一个或多个数据分组并且该一个或多个数据分组丢失。分组丢失的指示还可以来自装置140,其在传输之后的特定时间量(例如,期望的RTT)内没有接收到对所传输的分组的确认。
如果装置140确定所传输的第一数据分组都没有丢失(步骤715),则装置140随后可以进行到图7B的步骤722,其中装置140可以接收一组第二数据分组以进行下一传输。然后,在步骤724中,装置140可以确定第一数据分组的传输的RTT。该确定可以基于例如第一数据分组的传输时间以及相应的确认的接收时间。也可以对RTT进行后处理,诸如取平均(例如,针对多个第一数据分组对RTT取平均)和过滤(例如,丢弃与第一数据分组不相关的RTT,丢弃与第一数据分组的其他RTT显著不同的RTT等)。在一些实施例中,接收步骤722可以在确定步骤724之后发生。
在确定第一数据分组的传输的RTT(步骤724)之后,装置140随后可以在步骤726中确定基于速率的传输控制是否将被用于第二数据分组的下一传输。如上所述,该确定可以基于不同的因素。例如,当连接刚刚建立时,不使用基于速率的传输控制,直到拥塞窗口大小达到预定阈值,这可以表示在网络中正传输足够数量的分组,使得所测量的传输速率可以反映实际的网络性能。该确定也可以基于例如装置140是否被预先配置为使用基于速率的传输。在一些实施例中,步骤726可以由数据传输控制协调器340执行。
如果数据传输控制协调器340确定基于速率的传输控制将用于传输第二数据分组(步骤726),则在步骤728中基于速率的数据传输控制器350可以随后确定传输速率。该确定可以基于例如第一数据分组的大小和相应的确认的接收时间,如图4所示。在确认的接收时间还不可用(例如,计算初始传输速率)的情况下,也可以基于RTT和拥塞窗口大小来确定传输速率。此外,还可以基于先前确定的传输速率使用例如移动平均函数来确定传输速率。在一些情况下,例如当在第一数据分组的传输的一个RTT内没有接收到确认时,还可以基于先前确定的传输速率来确定第二数据分组的传输速率。
在确定了第二数据分组的传输速率(步骤728)之后,随后在步骤730中,基于速率的数据传输控制器350可以确定是否已经从例如第一数据分组的传输经过了一个(在步骤724中确定的)RTT。如前所述,可以每RTT更新一次传输速率,或者在比一个RTT更长的持续时间之间更新传输速率。在一些实施例中,如果在步骤730中基于速率的数据传输控制器350确定还没有经过一个RTT,则其随后可以前进至结束而不使用在步骤728中确定的传输速率,直到已经经过一个RTT。
另一方面,如果在步骤730中基于速率的数据传输控制器350确定已经经过了至少一个RTT,则其随后在步骤732中可以确定将传输的每组第二数据分组的传输时间和大小。如前所述,可以以组的形式发送第二数据分组,其中每组的传输时间被隔开特定的时间间隔。基于速率的数据传输控制器350可以基于例如在步骤728中确定的传输速率来确定传输时间。例如,如前所述,正被传输的一组数据分组的大小与时间间隔的持续时间之间的比率可以反映传输速率。基于速率的数据传输控制器350还可以基于在步骤724中确定的RTT信息基于例如在下游网络节点(例如,路由器)处的队列大小的估计来确定将传输的一组数据分组的大小,该RTT信息可以反映该网络节点处的排队延迟。在一些情况下,每组分组的数据大小可以相同。在一些情况下,传输时间可以以相同的时间间隔分开。在步骤732中确定了传输时间和分组大小信息之后,基于速率的数据传输控制器350然后可以以配置数据(例如,传输配置540)的形式向分组引擎320提供该信息。然后,分组引擎320可以在步骤734中以组的形式传输第二数据分组。
另一方面,如果在步骤726中数据传输控制协调器340确定基于速率的传输控制不用于第二数据分组的下一传输(例如,由于预先配置为使用基于拥塞窗口的传输控制),则随后在步骤736中,其可以确定在一个(在步骤724中确定的)RTT期间使用基于速率的传输所传输的数据的大小是否至少等于阈值。如上所述,该确定可以提供关于网络是否有能力处理以所确定的传输速率传输的数据的指示。如果数据传输控制协调器340在步骤736中确定在一个RTT期间使用基于速率的传输所传输的数据的大小至少等于阈值,则其可以前进至步骤728以允许基于速率的数据传输控制器350控制第二数据分组的传输。
如果数据传输控制协调器340确定在一个RTT期间使用基于速率的传输所传输的数据的大小没有超过阈值(步骤736),则其随后可以前进至允许基于拥塞窗口的数据传输控制器360来控制第二数据分组的传输。分组引擎320可以基于例如根据传统TCP拥塞避免算法所接收的确认,或者基于在一个RTT内将以先前确定的传输速率传输的数据的估计大小来确定拥塞窗口大小。然后,基于拥塞窗口的数据传输控制器360可以基于拥塞窗口大小向分组引擎320提供多个第二数据分组以进行传输。然后,分组引擎320可以在步骤738中传输多个第二数据分组。在一些实施例中(图7B中未示出),在一个RTT期间(当在步骤738中传输多个第二数据分组时),如果增加了拥塞窗口(例如,由于接收到对应于在步骤738之前或期间传输的数据分组的确认)使得所增加的拥塞窗口大小超过预定阈值,则数据传输控制协调器340可以确定切换回到基于速率的传输并返回到步骤728。
返回参考图7A,如果装置140在步骤715中确定所传输的第一数据分组中的至少一个已经丢失,则装置140可以前进到图7C的步骤752,其中装置140可以接收一组第二数据分组以用于下一传输。然后,装置140可以在步骤754中基于在先前的RTT中确定的传输速率来确定第二数据分组的传输速率。在一些情况下,可以通过因素进一步减少所确定的传输速率,以减轻网络过载的风险。
在确定了传输速率之后,随后在步骤756中,装置140(例如,数据传输控制协调器340)可以确定在一个(在步骤724中计算的)RTT期间利用基于速率的传输所传输的数据的大小是否至少等于阈值。步骤756中的确定类似于图7B的步骤736中描述的内容,其细节在此不再重复。
如果数据传输控制协调器340确定在一个RTT期间利用基于速率的传输所传输的数据的大小至少等于该阈值(步骤756),则其随后可以前进至允许基于速率的数据传输控制器350基于在步骤754中确定的传输速率来控制第二数据分组的传输。在步骤758中,基于速率的数据传输控制器350可以为基于速率的传输确定第二数据分组的组的传输时间和大小。分组引擎320然后可以在步骤760中传输第二数据分组的组。步骤758和760类似于图7B的步骤732和734,其细节在此不再重复。
另一方面,如果数据传输控制协调器340在步骤756中确定在一个RTT期间利用基于速率的传输所传输的数据的大小没有超过阈值,则其随后可以前进至允许基于拥塞窗口的数据传输控制器360来控制第二数据分组的传输。分组引擎320可以基于例如根据传统TCP拥塞避免算法所接收的确认或者基于将以在步骤754确定的传输速率在一个RTT内传输的数据的估计大小来确定拥塞窗口大小。然后在步骤762中,基于拥塞窗口的数据传输控制器360可以基于拥塞窗口大小向分组引擎320提供用于在一个RTT内传输的多个第二数据分组。在一些实施例中(图7C中未示出),在一个RTT期间,当在步骤762中使用拥塞窗口传输多个第二数据分组时,如果增加了拥塞窗口(例如,由于接收到对应于在步骤762之前或期间传输的数据分组的确认)使得增加的拥塞窗口大小超过预定阈值,则数据传输控制协调器340可以确定切换回基于速率的传输并且返回步骤758。
利用本公开的实施例,可以以反映实际网络性能的传输速率传输数据。因此,带宽和延迟变化、无序的分组、延伸确认等对数据传输的影响可能较小,这些在无线网络中是普遍存在的并且在传统的TCP拥塞控制机制下可能导致错误地确定分组丢失是由于网络拥塞以及拥塞窗口大小的相应变化。然后,可以根据随机的分组丢失来保持数据的传输速率,并且可以避免网络的过载和未充分利用。这样的配置还可以避免连接的大量暴增,这还可能恶化网络性能。因此,网络数据流的效率可以得到改善。
在前面的陈述中,已参考可以随实施方式而变化的许多具体细节描述了实施例。可以对所描述的实施例作出某些变更和修改。考虑到本文公开的实施例的说明和实践,其他实施例对于本领域技术人员来说可以是显而易见的。说明和示例旨在仅被认为是示例性的。图中所示的步骤顺序旨在仅用于说明性目的,并不限于任何特定的步骤顺序。这样,本领域的技术人员可以理解,这些步骤可以以不同的顺序执行,同时实现相同的方法。

Claims (24)

1.一种用于控制数据传输的装置,包括:
分组引擎,其被配置为获得关于链路上的第一数据分组的流的数据并且确定所述流的TCP特征;其中所述TCP特征包括关于所述链路的RTT和拥塞窗口大小的信息;以及
数据传输控制器,其被配置为:
接收第二数据分组;
基于所述TCP特征确定传输速率;其中所述传输速率是基于所述RTT和所述拥塞窗口大小确定的;
基于一个或多个标准确定基于速率的数据传输控制将被用于控制所述第二数据分组的传输;其中所述一个或多个标准包括所述拥塞窗口大小至少等于阈值以及能够在所述RTT内以所确定的传输速率传输的数据的第一大小至少等于阈值;并且其中所述数据传输控制器被配置为:
响应于确定所述拥塞窗口大小小于所述阈值或者确定所述第一大小小于所述阈值,确定基于速率的数据传输控制将不被用于控制所述第二数据分组的传输;以及
响应于确定基于速率的数据传输控制将被用于控制所述第二数据分组的传输,使得所述分组引擎以组的形式传输所述第二数据分组,其中第二数据分组的每个组的传输时间是基于所述传输速率确定的。
2.根据权利要求1所述的装置,其中,所述TCP特征包括关于在与所述链路相关联的网络节点处的排队延迟的信息;其中所述第二数据分组的组的大小是基于所述排队延迟确定的。
3.根据权利要求1或2所述的装置,其中,所述TCP特征包括与所述第一数据分组中的至少一些对应的确认的接收时间;其中所述传输速率是基于所述第一数据分组中的至少一些的数据大小和所述接收时间中的至少一些确定的。
4.根据权利要求1或2所述的装置,其中,使用先前确定的一个或多个传输速率来确定所述传输速率。
5.根据权利要求4所述的装置,其中,所述数据传输控制器被配置为:
基于检测到分组丢失,确定将基于先前确定的一个或多个传输速率来确定所述传输速率。
6.根据权利要求4所述的装置,其中,所述数据传输控制器被配置为:
确定将不基于延伸确认的接收时间来确定所述传输速率。
7.根据权利要求4所述的装置,其中,所述数据传输控制器被配置为:
基于确定在传输所述第一数据分组中的一个或多个之后在与所述链路的往返时间(RTT)有关的时间段内没有接收到与所述第一数据分组中的任何一个对应的确认,确定将基于先前确定的一个或多个传输速率来确定所述传输速率。
8.根据权利要求1所述的装置,其中,所述数据传输控制器被配置为:
响应于确定基于速率的数据传输控制将不被用于控制所述第二数据分组的传输,使得所述分组引擎传输一定数量的所述第二数据分组,其中所述数量是基于所述拥塞窗口大小确定的。
9.一种用于控制数据传输的方法,包括:
获得关于链路上的第一数据分组的流的数据;
确定所述流的TCP特征;其中所述TCP特征包括关于所述链路的RTT和拥塞窗口大小的信息;
接收第二数据分组;
基于所述TCP特征确定传输速率;其中所述传输速率是基于所述RTT和所述拥塞窗口大小确定的;
基于一个或多个标准确定基于速率的数据传输控制将被用于控制所述第二数据分组的传输;其中所述一个或多个标准包括所述拥塞窗口大小至少等于阈值以及能够在所述RTT内以所确定的传输速率传输的数据的第一大小至少等于阈值;
响应于确定所述拥塞窗口大小小于所述阈值或者确定所述第一大小小于所述阈值,确定基于速率的数据传输控制将不被用于控制所述第二数据分组的传输;以及
响应于确定基于速率的数据传输控制将被用于控制所述第二数据分组的传输,以组的形式传输所述第二数据分组,其中第二数据分组的每个组的传输时间是基于所述传输速率确定的。
10.根据权利要求9所述的方法,其中,所述TCP特征包括关于在与所述链路相关联的网络节点处的排队延迟的信息;其中所述第二数据分组的组的大小是基于所述排队延迟确定的。
11.根据权利要求9或10所述的方法,其中,所述TCP特征包括与所述第一数据分组中的至少一些对应的确认的接收时间;其中所述传输速率是基于所述第一数据分组中的至少一些的数据大小和所述接收时间中的至少一些确定的。
12.根据权利要求9或10所述的方法,其中,使用先前确定的一个或多个传输速率来确定所述传输速率。
13.根据权利要求12所述的方法,还包括:
基于检测到分组丢失,确定将基于先前确定的一个或多个传输速率来确定所述传输速率。
14.根据权利要求12所述的方法,还包括:
确定将不基于延伸确认的接收时间来确定所述传输速率。
15.根据权利要求12所述的方法,还包括:
基于确定在传输所述第一数据分组中的一个或多个之后在与所述链路的往返时间(RTT)有关的时间段内没有接收到与所述第一数据分组中的任何一个对应的确认,确定将基于先前确定的一个或多个传输速率来确定所述传输速率。
16.根据权利要求9所述的方法,还包括:
响应于确定基于速率的数据传输控制将不被用于控制所述第二数据分组的传输,传输一定数量的所述第二数据分组,其中所述数量是基于所述拥塞窗口大小确定的。
17.一种非瞬态计算机可读存储介质,其存储能够由装置的至少一个处理器执行以使所述装置执行用于控制数据传输的方法的一组指令,所述方法包括:
获得关于链路上的第一数据分组的流的数据;
确定所述流的TCP特征;其中所述TCP特征包括关于所述链路的RTT和拥塞窗口大小的信息;
接收第二数据分组;
基于所述TCP特征确定传输速率;其中所述传输速率是基于所述RTT和所述拥塞窗口大小确定的;
基于一个或多个标准确定基于速率的数据传输控制将被用于控制所述第二数据分组的传输;其中,所述一个或多个标准包括所述拥塞窗口大小至少等于阈值以及能够在所述RTT内以所确定的传输速率传输的数据的第一大小至少等于阈值;
响应于确定所述拥塞窗口大小小于所述阈值或者确定所述第一大小小于所述阈值,确定基于速率的数据传输控制将不被用于控制所述第二数据分组的传输;以及
响应于确定基于速率的数据传输控制将被用于控制所述第二数据分组的传输,以组的形式传输所述第二数据分组,其中第二数据分组的每个组的传输时间是基于所述传输速率确定的。
18.根据权利要求17所述的非瞬态计算机可读存储介质,其中,所述TCP特征包括关于在与所述链路相关联的网络节点处的排队延迟的信息;其中所述第二数据分组的组的大小是基于所述排队延迟确定的。
19.根据权利要求17或18所述的非瞬态计算机可读存储介质,其中,所述TCP特征包括与所述第一数据分组中的至少一些对应的确认的接收时间;其中所述传输速率是基于所述第一数据分组中的至少一些的数据大小和所述接收时间中的至少一些确定的。
20.根据权利要求17或18所述的非瞬态计算机可读存储介质,其中,使用先前确定的一个或多个传输速率来确定所述传输速率。
21.根据权利要求20所述的非瞬态计算机可读存储介质,其中,能够由所述装置的所述至少一个处理器执行的所述一组指令使得所述装置还执行:
基于检测到分组丢失,确定将基于先前确定的一个或多个传输速率来确定所述传输速率。
22.根据权利要求20所述的非瞬态计算机可读存储介质,其中,能够由所述装置的所述至少一个处理器执行的所述一组指令使得所述装置还执行:
确定将不基于延伸确认的接收时间来确定所述传输速率。
23.根据权利要求20所述的非瞬态计算机可读存储介质,其中,能够由所述装置的所述至少一个处理器执行的所述一组指令使得所述装置还执行:
基于确定在传输所述第一数据分组中的一个或多个之后在与所述链路的往返时间(RTT)有关的时间段内没有接收到与所述第一数据分组中的任何一个对应的确认,确定将基于先前确定的一个或多个传输速率来确定所述传输速率。
24.根据权利要求17所述的非瞬态计算机可读存储介质,其中,能够由所述装置的所述至少一个处理器执行的所述一组指令使得所述装置还执行:
响应于确定基于速率的数据传输控制将不被用于控制所述第二数据分组的传输,传输一定数量的所述第二数据分组,其中所述数量是基于所述拥塞窗口大小确定的。
CN201680061982.2A 2015-10-21 2016-10-18 用于网络上的基于速率的分组传输的系统和方法 Active CN108353032B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/919317 2015-10-21
US14/919,317 US9992120B2 (en) 2015-10-21 2015-10-21 System and method for rate-based packet transmission over a network
PCT/US2016/057549 WO2017070119A1 (en) 2015-10-21 2016-10-18 System and method for rate-based packet transmission over a network

Publications (2)

Publication Number Publication Date
CN108353032A CN108353032A (zh) 2018-07-31
CN108353032B true CN108353032B (zh) 2022-03-04

Family

ID=57209927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680061982.2A Active CN108353032B (zh) 2015-10-21 2016-10-18 用于网络上的基于速率的分组传输的系统和方法

Country Status (6)

Country Link
US (2) US9992120B2 (zh)
EP (1) EP3366013B1 (zh)
JP (1) JP6510142B2 (zh)
KR (1) KR102059283B1 (zh)
CN (1) CN108353032B (zh)
WO (1) WO2017070119A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017079412A (ja) * 2015-10-20 2017-04-27 富士通株式会社 パケット解析プログラム、パケット解析装置およびパケット解析方法
CN110300069B (zh) * 2018-03-22 2022-03-29 华为技术有限公司 数据传输方法、优化装置及系统
WO2019222880A1 (zh) * 2018-05-21 2019-11-28 华为技术有限公司 网络设备的配置方法及装置、存储介质
KR102139378B1 (ko) * 2018-11-20 2020-07-29 울산과학기술원 혼잡 제어 방법 및 장치
CN110048906B (zh) * 2019-03-27 2021-04-02 网宿科技股份有限公司 一种判断节点传输质量的方法、系统、装置及服务器
US10999206B2 (en) 2019-06-27 2021-05-04 Google Llc Congestion control for low latency datacenter networks
CN112787975B (zh) * 2019-11-05 2022-06-10 华为技术有限公司 一种接入设备类型确定方法、设备及系统
CN113285891B (zh) * 2020-02-20 2022-10-28 瑞昱半导体股份有限公司 用于过载式网络交换的带宽分配装置与相关网络交换装置
US11979330B2 (en) * 2020-06-22 2024-05-07 Google Llc Rate update engine for reliable transport protocol
US11233715B1 (en) * 2020-07-14 2022-01-25 Juniper Networks, Inc. Dynamic prediction and management of application service level agreements
CN112019447B (zh) * 2020-08-19 2024-06-25 博锐尚格科技股份有限公司 数据流量控制方法、装置、系统、电子设备、及存储介质
CN112333680B (zh) * 2020-10-20 2023-06-20 迅镭(广州)智能科技股份有限公司 基于蓝牙底座的数据传输方法及相关设备
US11616730B1 (en) * 2021-10-01 2023-03-28 Compira Labs Ltd. System and method for adapting transmission rate computation by a content transmitter
CN115277556A (zh) * 2022-06-21 2022-11-01 网宿科技股份有限公司 拥塞控制方法、电子设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8570864B2 (en) * 2010-12-17 2013-10-29 Microsoft Corporation Kernel awareness of physical environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512066B2 (en) * 2004-03-30 2009-03-31 Hewlett-Packard Development Company, L.P. Congestion control system
US7983156B1 (en) * 2004-11-12 2011-07-19 Openwave Systems Inc. System and method for controlling network congestion
JP4730427B2 (ja) * 2008-11-21 2011-07-20 ソニー株式会社 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム
US8553540B2 (en) * 2010-03-05 2013-10-08 Microsoft Corporation Congestion control for delay sensitive applications
WO2012121635A1 (en) * 2011-03-10 2012-09-13 Telefonaktiebolaget L M Ericsson (Publ) Hybrid congestion control
WO2014069642A1 (ja) * 2012-11-05 2014-05-08 日本電気株式会社 通信装置、送信データ出力制御方法、及びそのプログラム
US20140281018A1 (en) * 2013-03-13 2014-09-18 Futurewei Technologies, Inc. Dynamic Optimization of TCP Connections

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8570864B2 (en) * 2010-12-17 2013-10-29 Microsoft Corporation Kernel awareness of physical environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TCP in Wireless Environments:Problems and Solutions;YE TIAN 等;《IEEE Radio Communications》;20050301;第27-31页 *

Also Published As

Publication number Publication date
JP2018531552A (ja) 2018-10-25
US10659367B2 (en) 2020-05-19
US9992120B2 (en) 2018-06-05
WO2017070119A1 (en) 2017-04-27
US20180262430A1 (en) 2018-09-13
JP6510142B2 (ja) 2019-05-08
KR102059283B1 (ko) 2019-12-24
CN108353032A (zh) 2018-07-31
US20170118120A1 (en) 2017-04-27
KR20180054800A (ko) 2018-05-24
EP3366013B1 (en) 2020-08-19
EP3366013A1 (en) 2018-08-29

Similar Documents

Publication Publication Date Title
CN108353032B (zh) 用于网络上的基于速率的分组传输的系统和方法
US10594609B2 (en) System and method of providing improved throughput control under delay-based congestion situation in a network
JP2018531552A6 (ja) ネットワークを介するレートベースパケット伝送のためのシステムおよび方法
US9985898B2 (en) System for bandwidth optimization with traffic priority determination
US11012367B2 (en) Technologies for managing TCP/IP packet delivery
WO2020001192A1 (zh) 一种数据传输方法、计算设备、网络设备及数据传输系统
US9641650B2 (en) TCP proxy server
JP6553196B2 (ja) トラフィックフローの監視
US9548936B2 (en) Method and system for improved TCP performance over mobile data networks
WO2017050216A1 (zh) 一种报文传输方法及用户设备
US10158575B2 (en) System for bandwidth optimization with high priority traffic awareness and control
CN108322401B (zh) 网络传输拥塞的控制方法及装置
Wang et al. TCP congestion control algorithm for heterogeneous Internet
US8885476B2 (en) TCP flow control optimized for networks having radio segments
Ko et al. Congestion control for sudden bandwidth changes in TCP
WO2024109734A1 (zh) 数据传输方法、装置、电子设备及存储介质
US9426086B2 (en) Sub flow based queueing management
US10063489B2 (en) Buffer bloat control
US10015288B2 (en) Communication apparatus and control method of communication apparatus
JPWO2014171543A1 (ja) データ送信装置、データ送信方法、及びそのプログラム
WO2019124290A1 (ja) 送信データ量制御装置、方法および記録媒体
WO2023051571A1 (en) Methods, systems and devices for network management using control packets
US11184803B2 (en) Data transmission device, method and recording medium
Tekala et al. Throughput analysis of Scalable TCP congestion control
TW201720122A (zh) 資料通信裝置、資料通信方法及程式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant