用于调整数据流的系统和方法与流程

文档序号:13561795阅读:333来源:国知局
用于调整数据流的系统和方法与流程

交叉参考相关申请

本申请要求于2015年3月3日提交的美国临时申请no.62/127,753、2015年8月20日提交的美国临时申请no.62/207,529和2016年1月11日提交的美国临时申请no.62,277,320的优先权和权益,这些申请的全部内容通过援引并入本文。



背景技术:

可以通过网络流量容量、用户流量以及由通过网络传输流量的应用程序提供给用户的总体的用户体验质量的适当平衡来实现信息包数据内容向共享的最后一公里接入网络的用户的有效传输。随着流量的增加,这种平衡不被保持,则网络建设变得太昂贵或者用户受到的服务质量差。

当今的数据网络(其可能包括无线、有线和/或光纤网络)所面临的日益严重的问题之一是由于大量的内容文件在这些网络上被流式传送或以其他方式传送而导致的施加于这些数据网络上的负担。“大”媒体内容具有在其向终端用户设备或从终端用户设备传送期间消耗大量时间和网络资源的显著特征。通常,消费者接入网络被设计用于传送短脉冲数据和网络资源使用,并且不旨在用于长期连续使用,例如流媒体内容(例如,音频、视频和/或其他类型的内容数据)。流媒体内容被广泛认为是对尝试以有限的网络资源满足许多用户的高峰使用需求的网络流量工程师的主要挑战。广泛采用流媒体的典型结果是网络拥塞,网络拥塞通常由对于所有用户及其应用程序的缓慢网络响应展现。

在网络使用的高峰期(例如,当在网络上传输大量的媒体内容和/或其他类型的数据时),网络快速且有效地将数据从一个网络系统转发到另一个网络系统的能力严重恶化。也就是说,随着越来越多的网络用户连接到网络以下载大量的数据,有限数量的可用网络带宽和资源(例如,基站、路由器、服务器、数据库等)的竞争总是会导致每个网络用户遇到下降的服务(例如,较慢的上传和下载速度、数据传输和流中断)。



技术实现要素:

在一些实施例中,一种方法包括:选择用于管理的数据流,所述数据流从第一网络设备被传输到第二网络设备;在第三网络设备处确定正在被传输到所述第二网络设备的所述数据流的传送性能;基于正在被传输到所述第二网络设备的所述数据流的所确定的传送性能来检测网络拥塞;以及在所述第三网络设备处并基于检测到的网络拥塞,通过减小所述数据流被传送到所述第二网络设备的速率来调整所述数据流向所述第二网络设备的传送。

在一些实施例中,一种传输管理器系统包括彼此通信地耦合的一个或多个处理器、网络接口、队列和存储器,所述存储器存储计算机可执行指令,所述计算机可执行指令在被所述一个或多个处理器执行时使所述传输管理器系统:确定正在从第一网络设备被传输到第二网络设备的数据流的传送性能;基于数据流的所确定的传送性能检测网络拥塞;以及基于检测到的网络拥塞,通过减小所述数据流被传送到所述第二网络设备的速率来调整正在被传输到所述第二网络设备的所述数据流的传送。

在一些实施例中,一种系统包括:一个或多个处理器;网络接口;队列;被配置为选择用于管理的数据流的流检测器逻辑单元,所述数据流正在从第一网络设备被传输到第二网络设备;以及流管理器逻辑单元,所述流管理器逻辑单元被配置为:确定正在被传输到所述第二网络设备的所述数据流的传送性能;基于正在被传输到所述第二网络设备的所述数据流的所确定的传送性能来检测网络拥塞;以及基于所检测到的网络拥塞,通过减小将所述数据流被传送到所述第二网络设备的速率来调整所述数据流向所述第二网络设备的传送。

附图说明

图1a示出了示例网络环境;

图1b示出了另一示例网络环境;

图2a是根据实施例的传输管理器系统的框图;

图2b是根据另一实施例的传输管理器系统的框图;

图2c是根据又一实施例的传输管理器系统的框图;

图2d是根据又一实施例的传输管理器系统的框图;

图3是根据实施例的用户设备的框图;

图4是根据实施例的处理的高级逻辑流程图;

图5a是根据实施例的用于选择用于管理的数据流和调整所述数据流的处理的高级逻辑流程图;

图5b是根据实施例的用于选择用于管理的数据流和调整所述数据流的处理的高级逻辑流程图;

图6a是根据实施例的用于管理数据流的传送吞吐量的处理的高级逻辑流程图;

图6b是根据实施例的用于确定所选数据流的传送吞吐量并确定是否存在网络拥塞的处理的高级逻辑流程图;

图7a是根据实施例的用于管理数据流的传送吞吐量的处理的高级逻辑流程图;

图7b是根据实施例的用于确定与所选数据流相关联的文件段的传送吞吐量并确定是否存在网络拥塞的处理的高级逻辑流程图;

图8是根据实施例的用于与代理交互的处理的高级逻辑流程图。

具体实施方式

本文描述了系统和方法,以选择跨越一个或多个数据网络进行管理并且可能已被确定正在使用大量的网络资源的数据流。在检测到网络拥塞时,所述系统和方法可以被设计为通过减小数据流向目的地的传送速率(或目标数据速率)来调整数据流的传送。在某些情况下,所述系统可以包括传输管理器系统,而在其他情况下,所述系统可以包括所述传输管理器系统和流检测器系统。在一些实施例中,所述系统和方法可以在沿着第一网络设备(例如内容服务器)和第二网络设备(例如用户设备)之间的数据流路径的某处实施。在一些实施例中,为了下列描述的目的,数据流可以被定义为与从特定网络源传输到特定网络目的地的特定数据文件(例如媒体内容文件)相关联的数据包流。

在一些实施例中,所述系统和方法可以以随着时间推移更均匀地分配聚集用户流量的方式在共享接入网络上传送信息包数据内容,例如,通过将流量从瓶颈网络拥塞时间移动到剩余网络容量的随后的相邻时刻。这种流量再分配的净效应可能会减少高峰使用和拥塞(当网络无法为所有用户提供足够的吞吐量时)的间隔,这可能导致对于共享接入网络的最终用户而言网络服务质量降低之前,更高的允许的聚合网络的使用。

为了下列描述的目的,术语“剩余网络容量”(例如,空闲容量)被理解为表示,可以被例如在网络上传输一些或全部流内容数据的传输管理器系统使用但是在没有这种使用的情况下则不使用的共享网络容量(例如,网络带宽、网络资源)。换句话说,“剩余网络容量”可以被认为是超过当前聚集网络流量负载或需求的可用网络带宽(或网络资源)。例如,如果网络流量容量为x并且当前聚集网络流量负载为y,则可用剩余容量为x-y,其中y不能大于x。使用剩余网络容量的目标之一是使用一些或全部剩余容量x-y以传输包括流内容的内容,这意味着如果剩余容量(x-y)为零,则传输减慢或停止,并且向共享相同网络的其他用户的流量产生通道。当网络的剩余容量(x-y)为零或接近零时,网络被认为“拥塞”(即网络拥塞)。

在某些情况下,共享的多用户数据网络中的剩余网络容量是短暂的,并且可以每时每刻随机波动。此外,所定义的剩余容量的使用不同于网络容量的公平共享或类似竞争性共享使用(例如,当聚合流量负载超过网络容量限制x时,共享网络的n个用户中的每一个接收网络容量的x/n份额)。

当数据网络拥塞时,数据包(例如,数据流)跨越网络的速率通常会降低,从而导致不太理想的数据吞吐量。网络拥塞的原因之一是在使用包括共享吞吐容量的网络资源时相对繁重的“大象流”或其他类型的流的出现或存在。大象流的示例包括,例如,与使用大部分的网络带宽的媒体内容(例如,视频和/或音频文件)相关联的信息包数据流。在某些情况下,大象流可以被定义为消耗大于某个阈值水平的总网络带宽一部分的数据流。在其他情况下,大象流可以被定义为具有超过某个阈值量的数据速率的数据流。在其他的情况下,大象流可以被定义为比阈值持续时间存留更长的数据流。当然,阈值水平和阈值量的值可以是基于多个因素的设计选择,所述多个因素包括,例如,所涉及的数据网络的类型、最终用户的数量、总网络带宽等。

图1a示出了根据实施例的示例网络环境100。如图所示,网络环境100包括传输管理器系统102a*、用户设备104、内容服务器106、数据网络108和数据网络110。注意,在下文中,“*”表示通配符。因此,以下对传输管理器系统102a*的引用可以指代例如图1a的传输管理器系统102a*、以及作为对图1a的传输管理器系统102a*的不同实现的图2a的传输管理器系统102a’或图2b的传输管理器系统102a”。尽管在图1a中未明确示出,但是一个或多个附加用户设备104和一个或多个附加内容服务器106可以与数据网络108和/或数据网络110交互。

在一个实施例中,用户设备104可以是台式计算机、工作站、机顶盒、工作站、诸如智能手机或平板电脑的移动计算设备、诸如智能手表或增强现实眼镜的可佩戴的计算设备等。

在一个实施例中,内容服务器106例如可以是服务器,该服务器向包括例如用户设备104的其他网络节点提供诸如视频和/或音频文件和/或数据文件的媒体内容。

两个数据网络108和110可以用作在用户设备104、传输管理器系统102a*和内容服务器106之间以数据包的形式交换数据的路径。例如,当诸如视频或音频文件的媒体内容文件正从内容服务器106下载到用户设备104时,媒体内容文件可以通过传输管理器系统102a*并经由数据网络108和110从内容服务器106路由到用户设备104。例如,内容服务器106可以经由数据网络108和110通过传送具有包括作为目的地的用户设备104的网络地址(例如,因特网协议ip地址)的报头的数据包,向用户设备104传送媒体内容文件。在一个实施例中,两个数据网络108和110可以是两个不同的网络,或者可以是单个大功能网络的一部分。

在一些实施例中,数据网络108可以是将传输管理器系统102a*通信地链接到用户设备104的接入网络(an)。例如,在某些情况下,数据网络108可以是诸如第二代(2g)网络、第三代(3g)网络、长期演进(lte)网络、第五代(5g)网络等的移动蜂窝接入网络中的一个。在某些情况下,数据网络108可以包括链接到无线电接入网络(ran)的子节点的核心集合。在某些情况下,数据网络108、110、114的部分可以是位于移动网络的边界的例如服务网关接口-局域网(sgi-lan)或网关接口-局域网(gi-lan)的局域网或数据中心。

在一些实施例中,将内容服务器106链接到传输管理器系统102a*的数据网络110可以是广域网(wan),为了说明的目的,所述广域网可以被认为是因特网。

在一些实施例中,可以假设内容服务器106和用户设备104之间的信息包数据流量的至少所选择的部分通过传输管理器系统102a*或与传输管理器系统102a*一致。为了促进通过传输管理器系统102a*的流量,在一个实施例中,传输管理器系统102a*的物理位置可以在连接数据网络108(例如,蜂窝或wi-fi网络等的接入网络)与数据网络110(例如,wan)的边界流量聚合点(多个)。例如,在第三代合作伙伴项目(3gpp)标准移动网络中,聚合点可以是sgi-lan的一部分,sgi-lan连接到数据网络(pdn)-网关核心元素(或者替代地,gi-lan和网关gprs支持节点(ggsn)-网关)并向外连接到因特网。然而,在其他实施例中,传送管理器系统102a*可以位于其他地方。在一些实施例中,传输管理器系统102a*可以是服务于一个或多个ans的内容传送网络(cdn)的一部分。

图2a和2b示出了图1a的传输管理器系统102a*的两个不同实现,在图2a中示出为传输管理器系统102a’以及在图2b中示出为传输管理器系统102a”。如图2a所示,传输管理器系统102a’包括通过总线210链接在一起的网络接口202(例如,网络接口卡或“nic”)、一个或多个处理器204、队列206(例如,缓冲器)、流检测器166和存储器208(例如,包括例如随机存取存储器(ram)、只读存储器(rom)、闪存、光盘存储器等的易失性和/或非易失性存储器)。存储器208可以存储一个或多个应用程序214(例如,计算机可读指令)和用于选择和/或确定应该管理哪个信息包数据流的一个或多个策略216。

流检测器166可以在其他特征中被设计成监测多个数据流,并且基于存储在存储器208中或来自其他来源的一个或多个策略216来选择用于进一步处理/管理的一个或多个数据流。在各种实施例中,可以使用定制电路(例如,应用程序专用集成电路或asic)来实现流检测器,或者通过采用定制电路和由诸如一个或多个处理器的可编程电路执行的软件的组合。

如图2a中进一步所示,传输管理器系统102a’还包括流管理器212a,所述流管理器可以在其他功能中被设计为测量数据流(即,信息包数据流)的传送性能(例如,传送吞吐量或一些其他传送参数)。流管理器212a可以至少部分地基于数据流的测量到的传送性能来检测网络是否拥塞,并且可以响应于检测网络拥塞,通过调整数据流向目的地(例如,用户设备104)的传送来调整数据流,从而降低数据流的传送速率。在图2a所示的实施例中,流管理器212a由执行一个或多个计算机可读程序指令(例如,应用程序214)的一个或多个处理器204(或其他可编程电路)来实现。流管理器212a、图2b的流管理器212b和图1b的流检测器166是分别被设计成执行在此描述的各种功能的逻辑单元。

图2b示出了图1a的传输管理器系统102a*的另一实现,其在图2b示出为传输管理系统102a”。图2b所示的传输管理系统102a”包括一些与图2a的传输管理器系统102a’相同的部件。然而,与图2a的流管理器212a不同,图2b所示的流管理器212b可以使用定制电路来实现,而不是使用执行软件(例如,机器可读编程指令)的一个或多个处理器204来实现。在其他的实施例中,图2a或2b的流管理器212*可以使用定制电路和由可编程电路(例如,处理器204)执行的软件的组合来实现。

图1b示出了根据实施例的另一示例网络环境150。如图所示,网络环境150包括传输管理器系统102b*,传输管理器系统102b*类似于图1a的传输管理器系统102a*,被设计为管理两个网络设备(例如,用户设备104和内容服务器106)之间的数据流。图2c和2d示出了图1b的传输管理器系统102b*的两个不同实现,在图2c中示出为传输管理器系统102b’,在图2d中示出为传输管理器系统102b”。

图1b的传输管理系统102b*(即图2c的传输管理系统102b’或图2d的传输管理系统102b”)包括与在图1a的传输管理系统102a*(即图2a的传输管理系统102a’或图2b的传输管理系统102a”)中包括的部件相似的部件。然而,不同于图1a、2a和2b的传输管理系统102a*,图1b、2c和2d的传输管理系统102b*不包括流检测器166。相反,流检测器166可以是单独的网络装置的一部分,这里称为流检测器系统112。

流检测器系统112包括网络接口160、一个或多个处理器162(例如,中央处理器(cpu)、图形处理单元(gpu)等)、存储器164(例如,易失性和/或非易失性存储器)和流检测器166。流检测器166可以在其他功能中类似于图2a和2b的流检测器166被设计为,经由数据网络108、110和114监测和/或采样内容服务器106和用户设备104之间的数据流。图1b的流检测器系统112和传输管理器系统102b*可以链接到数据网络114,在一些实施例中,数据网络114可以是局域网或软件定义网,例如网络或由路由器、交换机、网关等直接互连的硬件集合组成的网络。在一些实施例中,三个数据网络108、110和114可以是单个功能网络。

在一个实施例中,选择的信息包数据流可以基于特征在于跨越数据网络108、110和114的数据流的所配置的策略或模板,被流检测器系统112识别以进一步处理。例如,流检测器系统112可以采用流检测器166来测量数据流的平均吞吐量、传送的数据量、持续时间和其他特征,从而将流分类为大象流,大象流由于包括共享吞吐容量的网络资源的其相对较大的、不适当的使用,是相对繁重类型的数据流。

可以基于例如信息包的组件包网络和传输层报头,来确定流经数据网络108、110和114的信息包的特定流类型(例如,大象流),传输层报头可以包括例如ip源和目的地地址、传输控制协议(tcp)或用户数据报协议(udp)源和目的地端口、协议(例如,ipv4)、流标签(例如,ipv6)、标志、扩展报头字段等的组合。也就是说,不同的信息包可以通过例如处理信息包的报头,被识别为属于相同的数据流(或虚拟流),来确定信息包具有例如相同的源和目的地端口、协议、流标签、扩展头字段等。一旦数据流(即,信息包数据流)已经被识别出,则可以确定由所识别的数据流载有的数据量,从而确定数据流是否是大象流。

在一些实施例中,通过对一个或多个流的聚合组合的信息包进行采样并选择超过在定义的采样持续时间内测量的阈值数据速率的流,将数据流识别为大象流。在其他实施例中,通过采样和选择超过连续活动持续时间阈值的流来将数据流识别为大象流,连续活动持续时间阈值可以通过测量多个连续数据速率或每个数据速率超过阈值数据速率的数据速率序列来定义。在其他的实施例中,通过随机采样一个或多个流的聚合组合的仅一些信息包并且选择超过表示聚合流量宽带的相对不适当使用的相对检测概率的流,来将数据流识别为大象流。在其他的实施例中,这些方法可以组合使用或与其它类似方法一起使用。

在某些情况下,当网络或传输层信息包数据有效负荷被加密或混淆时,为了识别属于相同信息包数据流的信息包,可以处理/检查有效负荷报头。在信息包数据有效负荷可读的其他情况下,可以处理/检查网络或传输信息包有效负荷中的信息,以进一步帮助识别与特定数据流或数据流类型(例如,流视频)相关联的信息包。

在一些实施例中,一旦流检测器系统112已经识别出大象流或可能繁重的另一个流,则流检测器系统112可以触发数据网络114中的信息包转发逻辑的重新配置,从而识别出的数据流中的信息包被引导通过源(例如,内容服务器106)和目的地(例如,104)之间的端到端路径中的传输管理器系统102b*。例如,流检测器系统112可以将繁重的流的特征传达给包括数据网络114的一个或多个路由器和交换机。因此,可以使用动态配置的转发或交换规则来引导相同数据流中的后续信息包通过信息包的端到端路径中的传输管理器系统102b*,例如使用软件定义网络的原理。然而,在其他实施例中,根据默认规则,传输管理器系统102b*可以被包括在端对端路径中,并且流检测器系统112可以仅通知与一个或多个分类模板匹配的检测到的流的传输管理器系统102b*,从而检测到的流被处理(例如,调整流速率以降低流的传送速率),而其他流量流可能被转发而不进行处理。

在某些情况下,流可以是单向的(例如,上行链路流或下行链路流),或者通过与属于连接端点通信对的相反方向上的流(例如,具有互换的目的地和源网络地址、互换端口地址、共同流标签等的信息包)配对而可以是双向的。在一些实施例中,双向流对的两个方向可以朝向传输管理器系统102b*。

在一些实施例中,流检测器系统112和传输管理器系统102b*可以如图1b所示是不同的功能元件,或者如图1a所示组合成单个功能单元。

图3是根据实施例的用户设备104的框图。在某些情况下,用户设备104可以是移动计算设备或台式计算机,可以包括经由总线310联结在一起的网络接口302(例如,nic)、一个或多个处理器304、用户界面306(例如,包括显示器、扬声器、键盘、鼠标等)以及存储器308(例如,易失性和/或非易失性存储器)。存储器308可以存储一个或多个应用程序314和一个或多个文件316(例如,诸如音频和/或视频文件的媒体内容文件)。在一些实施例中,一个或多个处理器304可以执行一个或多个计算机可读指令(例如,应用程序314)来实现代理312,代理312可被设计成便于由图1a、1b、2a、2b、2c和2d的传输管理器系统102*执行的各种功能。

图4示出了根据实施例的用于选择和管理数据流的处理。在一些实现中,处理400可以由例如流管理器212*(参见图2a、2b、2c和2d)和流检测器166(参见图1b、2a和2b)来实现。当数据流被例如流检测器166从跨越一个或多个数据网络的多个数据流中选择用于管理时,在402开始处理400。所选数据流可以从诸如内容服务器106的源传送到诸如用户设备104的目的地。在某些情况下,可以基于数据流是大象流(例如,消耗大于阈值水平或具有超过阈值量的数据速率的网络带宽的一部分的数据流)的判定来选择数据流。在一个实施例中,可以通过确定数据流的源来附加地或替代地选择数据流。例如,可以自动选择被确定为具有与诸如视频内容提供商的特定内容提供商相关联的原始形式源地址的数据流以进行管理。

在404,网络拥塞由例如流管理器212*检测。可以采用各种技术以检测网络拥塞。例如,在一些实现中,可以通过确定所选数据流的传送性能来检测网络拥塞。这可以通过使与所选数据流相关联的信息包以网络允许的速度快速通过网络来完成,从而估计所选数据流的当前传送吞吐量。在一些实施例中,为了精确地估计所选数据流的传送吞吐量,可以监测被目的地(例如,用户设备104)响应于成功接收的信息包而发送的确认(例如,ack信息包)。如果估计的传送吞吐量小于所选择的数据流的“峰值吞吐量”,则网络可能被确定为拥塞,在某些情况下,这可能在之前已经针对所选数据流被检测到。在一个实施例中,传送吞吐量是每单位时间传送到目的地的数据的估计量,而峰值吞吐量可能是基于针对所选择的数据流的一个或多个之前的这种传送吞吐量的最高(例如,过滤或平均)的估计的传送吞吐量。在另一个实施例中,峰值吞吐量可以是针对其他数据流的一个或多个之前的这种传送吞吐量估计值的最高(例如,过滤或平均)估计传送吞吐量。在一些实施例中,最高估计传送吞吐量可能已经基于峰值保持值、基于百分位数的分析、过滤的数据吞吐量和/或平均数据吞吐量被估计出。在某些情况下,峰值吞吐量可以由代理312报告。在其他情况下,峰值吞吐量可以由流管理器212*估计。在其他的情况下,峰值吞吐量可以由其他网络元件估计。

也就是说,当媒体文件的数据流正在跨越网络时,数据流的吞吐量将根据可用的网络容量/拥塞而频繁地波动。在存在空闲网络容量的时间点(例如,没有拥塞),相关联的信息包将以最佳或最大速率(在这里被称为峰值吞吐量)被传送到目的地(例如,用户设备104)。在数据流被检测为没有以峰值吞吐量级别被传送到目的地的特定时间点,网络可以被确定为拥塞。在一些实施例中,网络拥塞的检测可以包括基于例如所选择的数据流的所确定的传送性能来确定网络拥塞的级别。

在406处,基于检测到的网络拥塞,所选数据流由例如流管理器212*调整,从而减少数据流向目的地的传送速率。在一些实施例中,可以通过在要发送到目的地的信息包之间增加延迟来减小数据流的传送速率。例如,为了减慢传送速率,可以在要发送到目的地的数据流的两个或更多个信息包的传输之间增加一个或多个延迟。可以基于例如流的所确定的传送性能或网络拥塞的级别,增加一个或多个延迟的量。在一个实施例中,与数据流相关联的数据可以在队列(例如,传输管理器系统102*的队列306)中缓冲。在一个实施例中,传送速率可以被定义为对于流被传输系统102*以被选择为实现整个时间间隔中平均目标数据速率的时间间隔发送的数据量。如本文所使用的,术语“调整”(“pace”or“paced”)是指根据网络条件动态地调整(即增加或减少)目标数据速率的网络操作。在一个实施例中,目标数据速率被动态地调整为不超过分配的tcp公平份额。在一个实施例中,目标数据速率可以被定义为与流的当前估计吞吐量与峰值吞吐量之间的数值差成比例地减小的速率。因为该数值差异由于波动的网络条件而不断变化,所以目标数据速率也动态地(例如,连续地或频繁地)被调整。

图5a和5b示出了根据一些实施例的图4的处理400的两个不同实现即两个处理500和550。处理500和550可以由图2a、2b、2c或2d的流管理器212*以及图1b、2a或2b的流检测器166实现。

在某些情况下,单个逻辑流可以与具有作为终点的用户设备104的两个或更多个传输层流相关联。来自单个逻辑流的聚合流量可以由例如流管理器212*根据图5a或5b所示的操作进行管理。例如,在用户设备104上运行的应用程序可以创建该应用程序可以使用来发送和接收数据的多个传输控制协议/互联网协议(tcp/ip)流。通过关联和管理包括多个tcp/ip流的流量的单个逻辑流,可以在每个用户设备和/或每个用户应用程序的基础上执行图5a或5b所示的操作。在一些实施例中,可以使用每个流的tcp/ip4元组(源地址(sa),目的地址(da),源端口(sp),目的端口(dp))和协议id或(sa,da,流标签)来分组共享共同用户设备ip地址、协议id或它们的组合的流。在其他实施例中,可以使用已知与ip地址相关联的用户设备104的唯一id将多个tcp/ip流分组为单个逻辑流。

图5a示出了根据实施例的用于选择用于管理的数据流和用于调整所述数据流的处理500。无论被管理的信息包的网络或传输层有效负荷是被加密还是未被加密,都可以实现处理500。当跨越一个或多个网络的数据流被例如流检测器166监测时,在502开始处理500。在一些实现中,这可以通过监测通过图1a或1b的传输管理器系统102*(或图1b的流检测器系统112)的网络层(例如,ip)和传输层(例如,tcp、udp)流(例如,信息包的tcp/ip部分)来完成。在某些情况下,监测操作502可以包括更高层(例如,http或应用层)的检查。

基于一组流分类策略,流检测器166可以在504选择用于更密切的检查和管理的特定数据流。例如,流检测器166可以确定满足大象流的策略标准的流。在另一个示例中,假设采用tcp/ip,流检测器166可以确定多个流信息包的目的地ip网络地址与基于建立3路tcp连接时执行的握手的在线视频流内容的主要商业提供者相关联。可以记录返回的tcp/ip4元组(sa,da,sp,dp)和连接的协议id,以便流检测器166可以检测和检查属于所建立的tcp/ip流的入口(wan到an)信息包。

在某些情况下,可以在正在检查的信息包的一个或多个封装协议(encapsulatingprotocols)内隧道化感兴趣的连接网络层,这可能需要流检测器166展开所述一个或多个封装协议从而检查源和目的地、协议以及确认网络信息中的一者。在一些实施例中,当不排除加密时,监测操作502还可以包括更高层(例如,http或应用层)的检查。

在504,流检测器166可以识别或选择要进一步处理和管理的数据流。当流检测器166位于流检测器系统112(参见图1b)时,流检测器166可将流量信息包(和相关联的返回信息包流包)引导到传输管理器系统102*。或者,当不需要流量重定向(例如,已经通过传输管理器系统102*引导数据流)时,流检测器166可以向传输管理器系统102*发信号使其开始管理流。如果流检测器166未识别或选择用于进一步处理和管理的数据流,则处理500返回到502。

在506,所选数据流的传送性能由例如传输管理器系统102*的流管理器212*测量。在一些实施例中,流管理器212*可以通过在测量阶段期间监测所选择的数据流的传送性能来测量传送性能。在测量阶段的一个实施例中,可以使用流的数据量和由传输管理器系统102*向用户设备104发送的数据量的传送时间来确定平均传送吞吐量。

在一些实施例中,当流管理器212*转发一个或多个数据流时,可以推断所选数据流(其可以是文件段的数据流)的接收器(例如,用户设备104)的定时和传送性能。例如,可以通过在足以在连接传输管理器系统102*和接收器(例如,用户设备104)的网络(例如,数据网络108)中建立稳定状态条件的已知时间间隔中计数发送到接收器的出口字节的数量,来确定向数据流的接收器的传送性能(例如,吞吐量)。在这些实施例中,出口数据包中的字节可能不确定被传送到接收器,这可能在所确定的传送性能中引入错误,但是这些错误在许多情况下可能仍然很小,并因此可以被忽略。可以使用该方法,例如,可以使用不支持或复杂化流管理器212*对来自流的接收器的返回确认(ack)包信息的检查的传输或其他协议层(例如,udp),来使用该方法。

在一些实施例中,如本文所使用的短语“稳定状态”可以指,一旦初始斜坡周期(例如,当流的数据包传输斜坡上升时的初始时间间隔)过去而达到的数据流和/或传送速率。例如,在流的测量阶段期间,流的吞吐量可能波动(例如,开始相对缓慢,然后在一段时间之后达到持续的平均速率)。如果测量阶段不够长或未排除例如初始斜坡间隔,那么可能不足以建立稳定状态。在传输一个或几个数据包之后,通过例如移动网络的数据包的传输通常不能达到稳定状态条件。事实上,建立稳定状态实际上可能耗费一秒或几秒钟,在此期间许多数据包被发送,并且持续多个往返时间(发送器到接收器到发送器)间隔。因此,定义稳定状态测量的一种方式可以被定义为在一定时间间隔(例如,斜坡上升时间间隔)过去之后采取的流测量。定义达到稳定状态的测量的另一种方式是将测量时间间隔增加到足够的水平以便测量不会随附加测量而显著变化。

在某些情况下,可以通过检查由接收器响应于接收由接收器接收到的数据流的传输层(或其他协议层)信息包而发送的返回ack信息包(例如,tcpacks)来确定和/或确认所选数据流中的数据包的定时和传送性能。例如,在一些实施例中,流管理器212*可以通过使用定义的时间间隔内的发送和确认到的信息包的数量或发送和确认到的数据字节的固定量或阈值量的定时来开始传送性能测量操作506。在某些情况下,接收到的信息包确认可以包括由管理器212*对上行链路隧道化和/或更高/更低层信息包有效负荷或文件段信息包的报头(例如,物理、数据链路、网络、传输、会话、表示或应用层报头或有效负荷)的检查。

在其他实施例中,可以使用数据流向共享与传输管理器系统102*连接的相同网络的一个或多个其他接收器的传送性能,来推断传输管理器系统102*和主体接收器(例如,用户设备104)之间的传送性能。例如,流管理器212*可以确定数据流向第一接收器(例如,第一用户设备)的传送性能,如果已知第二接收器(例如,第二用户设备)在相同的共享网络(例如,相同的服务基站无线电链路)上操作,则可以推断并行流向第二接收器的传送性能而不需要对第二接收器的数据流进行单独的测量操作。流管理器212*可以例如基于将接收器的当前ip或网络地址与服务基站id链接的网络信息,来确定第一和第二接收器对基站共享。可以使用该方法,例如进行可能使流管理器212*难以进行第二接收器的流的准确的单独测量阶段的传输或其他协议层(例如,udp)。

通过保持网络的多个数据流的峰值观测吞吐量性能的记录,流管理器212*可以在510检测到比峰值吞吐量慢的流,并且因此可以例如从共享瓶颈网络链路的竞争流量流推断网络拥塞。

确定多个数据流的稳定状态网络传送性能的这种方法可能取决于测量到的传送数据量,该测量到的传送数据量具有足够的长度来跨越许多往返的传送时间间隔从而实现网络吞吐能力的稳定估计。当这不可能时,在一些实施例中,流管理器212*可使用所测量的吞吐量的平均值或过滤值来检测拥塞。

例如,在一些实施例中,峰值观测吞吐量性能可以通过例如确定百分位数、平均值、加权平均值、移动平均值等的多个数据流的一个或多个测量值的统计加权来确定。在其他实施例中,峰值吞吐量可以基于例如一个或多个瓶颈网段的最大吞吐量的关于流量流的内容源和目的地之间的一个或多个网段的已知信息来确定。

在508,确定是否存在网络拥塞。流管理器212*可以通过将所选择的数据流的当前吞吐量与峰值吞吐量进行比较来进行这样的确定。如果当前吞吐量等于或大于峰值吞吐量,则处理400返回到506,在506,数据的传送性能继续被测量。另一方面,如果当前吞吐量小于峰值吞吐量,则网络被确定为拥塞。在一些实施例中,在508检测到网络拥塞之后,流管理器212*可以进入操作的调整模式,在操作的调整模式中在510动态地调整识别的数据流。

在一些实施例中,所选数据流的动态调整可以通过例如连续地或逐渐地减少或增加正被输送到接收器的数据包的传送速率来实现。例如,流管理器212*可以通过例如增加传输到接收器的信息包之间的延迟至少直到对于调整间隔达到目标平均吞吐量,来减少所选数据流向接收器的传送速率。在调整了数据流的传送速率之后,处理500可能返回到再次测量数据流的传送性能的506。

在一些实施例中,为了降低所选数据流的传送速率,在传输管理器系统102*处排队(例如,缓冲)来自上游内容服务器106的传入的网络层信息包(例如,ip),然后根据目标速率策略通过分组网络108(例如,接入网络)重发。在某些情况下,目标速率策略可以是检测到的拥塞的倒数函数(例如随着拥塞增加降低目标速率并且随着拥塞减小增加目标速率)。在这种策略下,如果没有检测到拥塞或者如果检测到的拥塞低于某个阈值,则可能不需要调整(例如,减慢或降低传送速率)。在一些实施例中,根据检测到的拥塞程度,计算目标速率,使得目标速率吞吐量低于网络(例如,分组网络108)在之前被观测到当不增加调整延迟的情况下传送一个或多个文件段时能够支持的速率。

在一些实施例中,可以通过延迟数据单元(例如,ip信息包)的发送来实现调整,使得平均传输速率与目标水平一致。例如,如果传输管理器系统102*物理接口吞吐量容量的(接入网络)an面向(例如移动网络)出口接口为100mbps,并且每个数据包大小(例如,tcp有效负荷)为1500字节,则两个入队的信息包可以在2*1500*8/100e6=240e-6s内背对背(back-to-back)发送。如果期望例如目标调整速率为600000bps,则可以在发送39.76e-3s的信息包对(或者在一些实施例中平均每20ms发送一个1500b信息包)之间插入延迟。在某些情况下,可以采用用于控制延迟以实现目标传输速率和突发特性的标准算法(例如令牌桶速率限制)。在一些实施例中,附加插入的延迟可以在几个传输层往返时间(rtt)周期从0斜坡化,从而给予发送传输层协议(例如,tcp)更逐渐地适应速率调整的机会。

在一些实施例中,可以考虑在未增加调整延迟的情况下输送到目的地(例如,用户设备104)的最近传送的数据,执行调整,使得没有和有调整延迟所传送的组合数据可以以达到传输速率目标水平的平均速率传送。可以理解的是,为了达到传输速率目标水平,可以改变调整间隔的持续时间或调整间隔的调节吞吐量或这两者。

在一些实施例中,考虑在未增加调整延迟的情况下发送的最近传送的数据,调整间隔的调节吞吐量可以是恒定的,使得在调整间隔期间至少调整流的最小吞吐量继续被传送,然后计算并设定可变调整间隔,使得达到传输速率目标水平。在其他实施例中,考虑在未增加调整延迟的情况下发送的最近传送的数据,调整间隔的长度可以是恒定的,然后确定可变调节调整吞吐量,从而达到传输速率目标水平。在其他的实施例中,调整间隔的调节吞吐量和调整间隔的长度可以都是可变的并且根据策略确定。例如,只要调整间隔的调整长度(其可以基于目标平均吞吐率计算)不超过阈值最大值(例如5秒),则设定调整间隔的固定调节的调整吞吐率(例如,恒定吞吐率为250k比特/秒)并对调整间隔的时间长度进行调整;否则,将调整间隔的长度设定在阈值最大值并设定(例如调节)调节调整吞吐量以达到传输速率目标水平。

在一些实施例中,所识别的数据流的调整可以通过在传输管理器系统102*处暂时保留并延迟被用户设备104输送到内容服务器106的内容请求来实现。在这种调整方法中,流管理器212*检查内容请求(例如,httpget),并且可以根据针对请求用户设备104的当前测量的拥塞级别来将向内容服务器106转发请求延迟等待间隔。

在一些实施例中,信息包队列规则(例如,先进先出-fifo)可以在传输管理器系统102*处操作,并且可以在发生信息包损失(例如,当队列满时的入口信息包可能被丢弃)之前加强最大允许队列深度以限制最大允许队列延迟。实际上,在调整模式的一些实施例中,传输管理器系统102*可以类似于网络层信息包路由器进行操作,但其出口接口吞吐容量根据下游网络瓶颈中的拥塞级别针对流量进行调整。以这种方式,传输管理器系统102*可以在拥塞不存在或减少时将传送的流量转移到时间间隔中,并且在拥塞间隔期间从数据网络108中移除流量。在一些实施例中,传输管理器系统102*可以使用信息包标记例如网络层信息包(例如,ip)的明确拥塞通知(ecn)向发送器以信号通知拥塞,而不是以信号通知信息包丢弃或插入延迟,或除信息包丢弃或插入延迟以外还以信号通知拥塞。

在调整模式的一些实施例中,如果附加延迟没有被传输管理器系统102*引入到信息包传输之间,则文件段的传送吞吐量可能不反映数据网络108可传送信息包的速度有多快。因此,为了估计下游网络拥塞的实际状态,流管理器212*可以周期性地允许一个或多个文件段通过传输管理器系统102*而不增加调整延迟,这将在本文进一步描述。

图5b示出了根据实施例的用于选择用于管理数据流和用于调整所述数据流的处理550。如前所述,处理550可以由图2a、2b、2c或2d的流管理器212*以及图1b、2a或2b的流检测器166实现。在一些实施例中,当网络或传输层有效负荷未加密时,处理550可能特别适用。如图所示,处理550包括与图5a的处理500中包括的一些操作相同或相似的操作。例如,图5b的操作552、554、558和560基本上镜像图5a的操作502(例如,监测数据流)、504(确定是否管理数据流的传输)、508(例如,确定是否存在网络拥塞)和510(例如,调整数据流)。

当通过图1a或1b的传输管理器系统102*(或图1b的流检测器系统112)的网络层(例如ip)和传输层(例如,tcp、udp)流(例如,信息包的tcp/ip部分)被例如流检测器166监测时,在552开始处理550。在某些情况下,流的监测可包括较高层(例如,http或应用层)的检查,从而确定例如正在从源(例如,内容服务器106)向目的地(例如,用户设备104)发送的媒体内容文件的信息包流。流的监测可以还包括测量正在被数据流发送的数据量、数据流的数据传输速率等。

在554,流检测器166可以识别或选择要被进一步处理和管理的数据流。当流检测器166位于流检测器系统112(参见图1b)时,流检测器166可将流的信息包(和相关联的返回信息包流包)引导到传输管理器系统102*。或者,当不需要流量重定向(例如,已经通过传输管理器系统102*引导数据流)时,流检测器166可以向传输管理器系统102*发信号使其开始管理流。如果数据流未被识别或选择以进一步处理和管理,则处理550返回到552。

在556,流管理器212*检测来自目的地(例如,用户设备104)的文件段请求(例如,文件下载的请求)。例如,这可以通过检查应用层有效负荷(例如,httpget)直接实现,或者可以通过在可定义的时间间隔内,对于数据字节量的固定量或阈值量或这些量的可识别的组合,通过比较例如上行链路和下行链路信息包的启发式数据包模式(例如,“指纹”)与已知的内容服务器网络地址和传输层端口组合、协议id、流标签等来间接地完成。通过检测文件段请求,传输管理器系统102*可以确定文件下载即将开始。

在某些情况下(例如,加密的tcp有效负荷)连接请求的可靠检测只能在下载数据已经响应于请求而开始流动之后的某个时刻发生(例如,下行链路数据流的容量或模式确认文件请求已进行)。一些实施例可以采用检测文件下载正在进行的其它方法。

在558,通过例如流管理器212*关于是否存在网络拥塞进行确定。在一个实施例中,流管理器212*可以采用各种技术来确定传输管理器系统102*和用户设备104之间的数据网络108的拥塞状态。在某些情况下,例如,可以使用要下载的文件段的大小以及文件段的传送的定时来确定平均传送吞吐量。

在一些实施例中,可以通过流管理器212*例如以网络允许的速度尽快对一个或多个文件段的转发,来推断文件段的接收器的定时和传送性能。在其他实施例中,文件段的定时和传送性能可以通过检查与被传输管理器系统102*发送的文件段的传输层(或其他协议层)信息包相对应的返回ack信息包(例如,tcpack)来另外确认。例如,在一些实施例中,流管理器212*可以通过使用定义的时间间隔内的发送和确认的信息包的数量的定时、或发送和确认的数据字节量的固定量或阈值量来开始拥塞状态确定。在某些情况下,接收的信息包确认可以包括管理器212*对上行链路隧道化和/或更高/更低层信息包有效负荷或文件段信息包的报头(例如,物理、数据链路、网络、传输、会话、表示或应用层报头或有效负荷)的检查。

通过保持在特定数据流期间的峰值观测吞吐量性能的记录,流管理器212*可以在比峰值吞吐量慢的数据流的期间检测文件段传输,并且因此可以推断由于例如共享瓶颈网络链路的竞争流量流导致网络拥塞。

确定网络拥塞的这种方法可能需要所传送的文件段大小具有足够的长度来跨越许多往返时间的传送时间间隔从而实现网络吞吐量能力的稳定估计。当不是这种情况时,在一些实施例中,流管理器212*可使用多个文件段的测量到的吞吐量的平均值或过滤值来检测拥塞。

例如,在一些实施例中,峰值观测吞吐量性能可以通过例如百分位数、平均值、加权平均值、移动平均值等的一个或多个测量值的统计来确定。在一些实施例中,峰值吞吐量可以基于例如一个或多个瓶颈网络段的最大吞吐量的关于流量流的源和目的地之间的一个或多个网段的已知信息来确定。通过比较当前吞吐量与峰值吞吐量,可以确定是否存在网络拥塞。如果在558未检测到网络拥塞(例如,当前吞吐量等于或基本上等于峰值吞吐量),则处理550返回到556以检测另一文件段请求。另一方面,如果在558检测到网络拥塞,则在一些实施例中,传输管理器系统102*可以进入在560动态地调整所识别或选择的数据流的操作的调整模式。

如前所述,数据流的调整可以包括连续地或逐渐地向下调整数据流的传送速率。在数据流的传送速率已被调整之后,处理550可以返回到可检测另一个文件段请求的556。检测文件段请求、确定网络拥塞和调整数据流的处理(例如,556、558和560)可以重复,直到整个文件已经被下载到目的地。

图6a示出了根据实施例的用于管理数据流的传送吞吐量的处理。在某些情况下,处理600可通常对应于图5a的506、508和510。在一个实施例中,处理600可由图2a、2b、2c或2d的流管理器212*来实现。即使传输管理器系统102*的流管理器212*不能监测和检查文件段传送请求以及来自例如内容服务器的相对应的响应(例如,不能读取包含在应用协议层中的信息),也可以实现处理600。

当所选数据流(例如,经由图5a的操作502和504选择)的传送吞吐量被确定时,在602开始处理600。如这里将进一步描述的,可以使用用于确定传送吞吐量的一种或多种可用技术来确定所选数据流的传送吞吐量,所述技术例如是在时间间隔期间对传输管理器系统102*能够发送到用户设备104并且接入网络(例如,数据网络108)允许的所选数据流的数据包的数量进行计数。在其他实施例中,为了估计所选数据流的传送吞吐量,可以采用其他技术。

在604处,确定传输管理器系统102*和用户设备104之间是否存在网络拥塞。在一个实施例中,其可能包括将当前确定的传送吞吐量与和被下载到用户设备104的文件段相关联的所选数据流的历史峰值吞吐量进行比较。如果没有检测到网络拥塞,则处理600返回到602,否则处理600移动到606。注意,下面将参考图6b的处理650,对与602和604有关的具体细节进行说明。

在606,基于在604确定的网络拥塞的级别来计算目标传送吞吐量。在一个实施例中,所估计的目标传送吞吐量比所选数据流的峰值吞吐量小。并且,在大多数情况下,目标传送吞吐量小于在602确定的吞吐量。在一个实施例中,可以至少部分上基于所确定的网络拥塞级别来计算目标传送吞吐量。

在608,通过使用与所计算的目标传送吞吐速率匹配的传送吞吐速率将所选数据流传送到目的地来恢复所选数据流向目的地(例如,用户设备104)的传送。所选数据流的传送可继续至少直到数据流中断(例如,当没有更多的数据要传送时),在某些情况下,这可能基于数据传送暂停之后的超时或者基于观察流连接拆除(例如,tcp4路握手)、连接复位、流活动超时、或流不再活动的类似指示。

在610,传输管理器系统102*接收到的来自所选数据流的数据例如在传输管理器系统102*的队列206中缓冲(例如排队)。

在612,通过调节存储在传输管理器系统102*的缓冲数据向目的地(例如,用户设备104)的流,来调整所选数据流向目的地的传送,以达到目标传送吞吐量。

在614,对是否需要更新网络拥塞估计(如在604中估计的)进行确定。如果不需要这样的更新,则处理600返回到608。另一方面,如果需要更新网络拥塞估计,则处理600返回到602。通过返回到602,可以对新的或更新的网络拥塞级别进行确定,然后可以被使用以调整数据流向目的地的传送速率。

也就是说,在一些实施例中,通过促使从所选数据流的调整模式传送退出并循环回到处理600的开始,处理600可以周期性地(例如,在一个或多个预定时间间隔之后,或者在数据的阈值量被传送之后,每个第n个传送的文件段)触发传输管理器系统102*和目的地之间的数据网络108的拥塞状态(例如,采样未调整的信息包进行确定)的更新。

在一些实施例中,可能影响是否需要对估计的网络拥塞进行更新的条件包括,例如来自与传输管理器系统102*通信的其他用户设备终端的其他连接是否最近已经被报告了相同数据网络108或其瓶颈吞吐量部分的拥塞状态。然而,实施例可以使用其他条件来影响是否需要更新。

参考图6b,其示出了根据实施例的用于确定所选数据流的传送吞吐量并确定是否存在网络拥塞的处理650。处理650通常对应于图6a的操作602和604。在一些实施例中,处理650可以由图2a、2b、2c或2d的传输管理器102*执行。当所选数据流(例如通过图5a的操作502和504选择的)在652被测量时,处理650开始。在一些实施例中,所选数据流的测量可以包括对与传输管理器系统102*发送到用户设备104的所选数据流相关联的信息包进行计数。

在654,启动计时器。一旦计时器启动,传输管理器系统102*(更具体地,流管理器212*)继续对与传输管理器系统102*发送的所选数据流相关联的信息包进行计数。计数可以继续,至少直到已经发送和/或传送足够的数据以实现下游网络传送吞吐量的可靠的稳定状态估计。这种确定可以基于经过时间、传送速率、传输层ack循环的数量、传送数据量等或它们的任意组合。

在658,计算并记录当前传送吞吐量。在一个实施例中,计算可以基于在656进行的数据流测量。

在660,对是否应该更新所选数据流的峰值吞吐量进行确定。请注意,在某些情况下,峰值吞吐量与特定数据流相关联。例如,当与媒体内容文件相关联的数据流正在下载到用户设备104时,数据流的传送吞吐量可能根据网络拥塞和其他网络条件(例如,信噪比或snr、网络节点位置、信号强度等)剧烈变动。当例如网络大体拥塞时,数据流的吞吐量将从可能对应于没有网络拥塞的情况的峰值吞吐量变动到低得多的吞吐量。因此,如果在数据流被传送到目的地的同时新的峰值被检测到,则峰值吞吐量可能需要在任何给定时间点更新。

如果确定了需要更新所选数据流的峰值吞吐量,则在662更新峰值吞吐量。另一方面,如果不需要更新,则处理650移动到对是否存在网络拥塞进行确定的664。在一个实施例中,当计算出的吞吐量下降到峰值吞吐量以下(其可以连续地或周期性地重置以避免在非拥塞操作中网络传送能力的陈旧估计)时,可以识别网络拥塞。

如果未检测到网络拥塞,则处理650返回到654,至少直到数据流中断(例如,当没有更多的数据要传送时)。另一方面,如果检测到网络拥塞,则传输管理器系统102*(更具体地,流管理器212*)确定传输管理器系统102*与用户设备104之间的数据网络108事实上拥塞。

在处理650的测量阶段(例如,操作652、654和656)的期间,监测或采样的数据流可以是连续的或可以不是连续的。可能存在内容服务器106和/或用户设备104已引起所选数据流中断的情况。例如,媒体播放器应用程序可能会填充其运行时回放缓冲区,并暂时暂停其对视频流服务器的数据请求。在这种情况下,测量阶段可以确定数据流的网络传送性能的人工较低估计。因此,测量阶段可以在之前有斜坡上升阶段(例如,作为602的一部分),以确保在进行测量之前数据流是活动的。在一些实施例中,斜坡上升阶段可以持续,直到达到数据的阈值量、阈值活动时间、或者这些值或流的类似标准的组合。每当检测到数据流不活动时,可以重新进入斜坡上升阶段。

图7a示出了根据实施例的用于管理数据流的传送吞吐量的处理。在某些情况下,处理700可能通常对应于图5b的556、558和560。在一个实施例中,处理600可以由图2a、2b、2c或2d的流管理器212*来执行。在某些情况下,当传输管理器系统102*的流管理器212*能够检测和检查文件段传送请求以及来自例如内容服务器的相应的响应(例如,能够读取包含在应用协议层内的未加密的信息)时,处理700可能是特别有用的。

当传送到目的地(例如,用户设备104)并且与所选数据流(例如,通过图5b的操作552和554选择的)相关联的文件段的传送吞吐量被确定时,在702开始处理700。在一些实施例中,响应于从用户设备104发送到内容服务器106的文件段请求(例如,http字节范围请求),文件段经由传输管理器系统102*被转发到用户设备104。文件段请求可以通过传输管理器系统102*检测。文件段的随后的传送(无调整介入)可用于使用例如图7b所示的处理在其通过传输管理器系统102*时探测下游网络吞吐量。

在704,对传输管理器系统102*和用户设备104之间是否存在网络拥塞进行确定。在一个实施例中,这可能包括将当前确定的传送吞吐量与和被下载到用户设备104的文件段相关联的所选数据流的历史峰值吞吐量进行比较。如果没有检测到网络拥塞,则处理700返回到702,否则处理700移动到706。注意,下面将参考图7b的处理750,提供与702和704有关的具体细节。

在706,基于在704确定的网络拥塞的级别来计算目标传送吞吐量。在一个实施例中,所估计的目标传送吞吐量将比所选数据流的峰值吞吐量小。在大多数情况下,目标传送吞吐量将小于在702确定的吞吐量。在一个实施例中,可以至少部分上基于所确定的网络拥塞的级别来计算目标传送吞吐量。

在708,检测与所选数据流相关联并且被用户设备104发送的文件段请求。

在710,与所请求的文件段相关联并且被传输管理器系统102*接收到的数据在例如传输管理器系统102*的队列206中缓冲(例如排队)。

在712,通过调整存储在传输管理器系统102*处的缓冲数据的流来调整与所请求的文件段相关联的数据向目的地(例如,用户设备104)的传送,以实现目标传递吞吐量。

在714,对是否需要更新网络拥塞估计进行确定。如果不需要这样的更新,则处理700返回到708。在某些情况下,可能在708最初检测到的文件段请求可以是针对整个文件,在这种情况下,当不需要拥塞更新时(例如,不需要操作702和704),处理700循环回到710以继续文件的传送。另一方面,如果需要更新网络拥塞估计,则处理700返回到702。通过返回到702,可以对新的或更新的网络拥塞级别进行确定,然后这种确定可以用于调整数据流向目的地的传送速率。

如关于图7a的714所述,当确定何时更新网络拥塞估计时,可以考虑各种因素。例如,网络拥塞估计可以在某些情况下周期性地更新(例如,在一个或多个预定的时间间隔之后,或者在数据的阈值量被传送之后,每个第n个传送的文件段)。

在一些实施例中,可能影响是否需要对估计的网络拥塞进行更新的条件包括,例如来自与传输管理器系统102*通信的其他用户设备终端的其他连接是否最近已经被报告了相同数据网络108或其瓶颈吞吐量部分的拥塞状态。然而,实施例可以使用其他条件来影响是否需要更新。

图7b示出了根据实施例的用于确定与所选数据流相关联的文件段的传送吞吐量并用于确定是否存在网络拥塞的处理750。处理750通常对应于图7a的操作702和704。在一些实施例中,处理750可以由图2a、2b、2c或2d的传输管理器102*执行。当在752检测到与所选数据流(例如通过图5b的操作552和554选择的数据流)相关联的文件段请求(例如,http字节范围请求)时,处理750开始。

在754,启动计时器。一旦计时器启动,传输管理器系统102*(更具体地,流管理器212*)可以监测所选数据流,直到传输管理器系统102*在756检测由目的地(例如,用户设备104)传输的后续文件段请求。在一些实施例中,对所选数据流的监测可能包括例如监测来自传输管理器系统102*的文件段信息包成功传送/接收时由目的地(例如,用户设备104)传输的返回ack信息包。

在758,计算并记录所请求的文件段的吞吐量。在某些情况下,可以通过确定与在计时器启动和在756检测到后续文件段请求时之间的时间间隔期间传送到用户设备104的请求文件段相关联的数据量来计算吞吐量。通过将传送的数据量除以时间间隔,可以计算吞吐量。

在一些实施例中,如果传输管理器系统102*能够识别文件段响应的开始信息包和结束信息包,则通过确定开始信息包和结束信息包的接收之间经过的时间量,可以可选地使用(例如,文件段大小/时间间隔)来直接测量文件段的下行吞吐量,而不需要参考文件段请求命令的时刻。将传送划分到多个文件段的类似方法可以在可能发生整个文件仅单个文件请求的情况下使用。

在760,对是否应该更新所选数据流的峰值吞吐量进行确定。注意,在某些情况下,峰值吞吐量将与特定数据流相关联。例如,当与媒体内容文件相关联的数据流正在下载到用户设备104时,数据流的传送吞吐量可能会根据网络拥塞和其他网络条件(例如,信噪比或snr、网络节点位置、信号强度等)剧烈变动。当例如网络大体拥塞时,数据流的吞吐量将从可能对应于没有网络拥塞的情况的峰值吞吐量变动到低得多的吞吐量。因此,如果在数据流被传送到目的地的同时新的峰值被检测到,则峰值吞吐量可能需要在任何给定时间点更新。

如果确定了需要更新所选数据流的峰值吞吐量,则在762更新峰值吞吐量。另一方面,如果不需要更新,则处理750移动到对是否存在网络拥塞进行确定的764。在一个实施例中,当计算出的吞吐量下降到峰值吞吐量以下(其可以连续地或周期性地重置以避免在非拥塞操作中网络传送能力的陈旧估计)时,可以识别网络拥塞。

如果未检测到网络拥塞,则处理750返回到754,至少直到数据流中断(例如,当没有更多的数据要传送时)。另一方面,如果检测到网络拥塞,则传输管理器系统102*(更具体地,流管理器212*)确定传输管理器系统102*与用户设备104之间的数据网络108事实上拥塞。

在一些实施例中,如果对于传输管理器系统102*网络类型、网络附件信息(例如,基站id、单元id)可用,则拥塞确定可能受这样的信息影响。

在一些实施例中,传输管理器系统102*可以使用诸如计算传输层段/acks的下游往返时间(rtt)和观测rtt的改变速率(例如,当拥塞增加时,其增加)的检测拥塞的替代方法。可以使用不同于传输层(例如tcp或udp)的协议层来实施rtt和ack处理。

在某些情况下,要传送到用户设备104的所请求的文件段具有使得能够在758进行下游网络传送吞吐量的稳定的稳定状态估计的足够大的数据大小。这种确定可以基于总经过时间、顺序发送器/接收器传输层ack循环的数量、传送数据量或类似标准。然而,在其他情况下,这一要求可能不是必需的。

在某些情况下,只有在传输层协议拥塞-控制状态机已发送许多数据包之后,才能达到稳定状态。通常,单个传输层段或少数段可能不够。根据传送会话协议,单个文件段响应可能是足够的,或者可能需要多个顺序请求/响应周期,其中响应传送吞吐量测量可以被平均或过滤。例如,在现代流媒体协议中,数据的编码视频“块”(例如,128k字节)经常进行文件请求,其通常但不总是足够大以允许网络稳定状态吞吐能力的稳定估计。

一旦建立了稳定状态,则可以在758计算测量的吞吐量,并且如果需要,可以在762更新峰值吞吐量估计。

如果在764和766检测到下游网络拥塞,则传输管理器系统102*可以在调整模式中对所选数据流进行操作(例如,图7a中所示的操作710和712)。

如上面简要描述的,在一些实施例中,用户设备104可以使用代理312。代理312可以是由执行一个或多个机器可读指令的一个或多个处理器304(或其他类型的可编程电路)实现的软件代理。在另一个实施例中,代理312可以驻留在可能与和用户设备104交互的接入网络(例如,数据网络108)相关联的其他网络元件(例如,基站、基站控制器等)。

在一些实施例中,代理312可以通过诸如终端识别(例如,用户设备标识)和网络状态报告的特定操作和任务来辅助传输管理器系统102*。此外,代理312可以通过其他操作和任务辅助传输管理器系统102*。

图8示出了根据实施例的用于与代理交互的处理。在一些实施例中,处理800可以由传输管理器系统102*执行。

当传输管理器系统102*注册代理312时,处理800开始。代理312的注册可以基于代理唯一标识符(ui)(例如,代理的国际移动设备识别(imei))以及与代理相关联的相应用户设备的当前网络数据地址(例如,ip),从而通过数据流(可能存在于例如用户设备104和远程内容服务器之间)的发现进行辅助。注册还可以允许在用户设备104和传输管理器系统102*之间建立控制数据连接,从而促进“推送”消息能力。每当用户设备104上线、改变其网络数据地址、改变服务网络类型等时,注册可被重复。

在804,传输管理器系统102*(或流检测器系统112)可以检测未知文件传送会话的开始。在注册期间,代理和传输管理器系统102*可以交换诸如与代理312相关联的用户设备104的ip地址的特定信息。

在806,通过检查文件传送会话的信息包确定与未知文件传送会话相关联的代理312的身份。例如,在某些情况下,可以通过检查tcp/ip信息包的应用程序有效负荷(例如,使用在注册期间由代理312报告的用户设备104的ip地址识别)来检测与未知文件的传送相关联的用户设备104(可以进一步与特定代理312相关联)。

在808,传输管理器系统102*可以向用户设备104发信号,以促使代理312开始报告可能对传输管理器系统102*管理到用户设备104的数据流有用的信息。在一些实施例中,可能被报告的信息包括可以周期性地确定和报告的一个或多个当前无线电链路质量(例如,在最大吞吐能力方面)、当前网络类型(例如,第三代(3g)、高速信息包接入(hspa)、长期演进(lte)、无线保真(wi-fi)等)、当前附件位置(例如,湾站识别(bsid)、cell_id、纬度/经度、全球定位系统(gps)、服务集识别(ssid)等)、当前服务运营商(例如,“xyz无线”)、用户设备资源状态(例如,低电量、移动状态、处理器状态)、用户设备应用状态(例如,“媒体播放器应用程序xyz动作”)等。

在810,传输管理器系统102*可以检测文件传送会话的结束。在812,传输管理器系统102*在检测到文件传送会话的结束之后,可以发信号给用户设备104以使报告中断。在一些实施例中,代理312可以独立地停止报告(基于例如网络类型的改变、低电量、没有活动的数据会话、进入飞行模式等)。

在一些实施例中,代理312可以附加地或替代地进行其自己对网络的吞吐量容量的评价(例如,在相关联的用户设备104和远程数据传送源之间,或者对于服务于用户设备终端的集合的基站),其自己对网络的吞吐量容量的评价也可以被报告给传输管理器系统102*。在这种情况下,传输管理器系统102*可以代替或附加于其自身对网络拥塞的评价,使用来自代理312的报告来确定拥塞。

在一些实施例中,可以在传输管理器系统102*处将发送器(例如,内容服务器106)和接收器(例如,用户设备104)之间的传输层连接路径分割成两个路径。在默认单路径版本中,通过传输管理器系统102*进行调整,可以将传输层段(rtt变化)的定时改变为用于调节受影响的流量的速率的控制机制。一些传输拥塞控制算法(例如,tcp拥塞避免)可能无效地响应于端到端rtt中的大跨度改变。利用独立传输层状态机将路径分割成两个独立的路径可以是执行调整而不干扰tcp拥塞控制算法的一种方式,同时仍然允许传输管理器系统102*调节单独的传输层连接的端到端吞吐率。

在某些情况下,传输管理器系统102*可能不能可靠地检测来自流的接收器的信息包接收acks(例如,具有加密的有效负荷的未确认的udp)。这可能使传输管理器系统102*对流量流的网络拥塞和传送性能的确定复杂化。在这些情况下,传输管理器系统102*可以被设计为进行动作使得目的地(例如,用户设备104)以多种方式中的一种在流中传输ack信息包。

例如,在一些实施例中,传输管理器系统102*可以在传输层流中发送每一个或多个udp信息包之后注入附加传输层(例如tcp)信息包,以便接收这样的信息包的代理312将确认被插入的tcp信息包。注入的tcp信息包可以被引导到代理312而不引导到同一用户设备104上的udp信息包目的地应用程序。然后,传输管理器系统102*当接收到相应的tcpacks时,可以推断用户设备104对一个或多个udp信息包的成功接收。在其他实施例中,传输管理器系统102*可以在未确认的传输流信息包(例如,udp)或另一协议层的报头或有效负荷中设置标志或插入扩展字段,其促使接收用户设备104或应用程序314确认接收传输流信息包,或者其指示传输流信息包已被接收。

在其他情况下(例如,udp或tcp),传输管理器系统102*可以在不需要从流的接收器检测信息包接收acks或者需要代理312的模式下操作。

虽然上述方法和示例大体涉及在从远程服务器(例如,内容服务器106)向用户设备104的方向流动的内容数据,但是上述方法和系统可以同样地应用于将内容数据从终端用户设备104向远程服务器传送的相反方向,而无需改变上述方法和系统的主要细节。

虽然已经关于具体示例描述了本技术的各方面,但是本技术的实施例不受这些示例的限制。例如,本领域技术人员将认识到,在不脱离本技术的范围或精神的情况下,可以根据各种其它算法和处理,有条件地利用空闲网络容量来进行数据的下载。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1