利用按照需求的装置的实时网络监视和订户标识 |
|||||||
申请号 | CN201380038766.2 | 申请日 | 2013-06-03 | 公开(公告)号 | CN104488231A | 公开(公告)日 | 2015-04-01 |
申请人 | 欧朋软件爱尔兰有限责任公司; | 发明人 | E·R·斯文森; N·布汉达里; | ||||
摘要 | 公开一种用于有选择地监视服务提供商网络中的流量的系统和方法。该系统接收用于网络数据流的开始的通知,该网络数据流响应于来自用户设备的对在源 服务器 的内容的 请求 。该系统然后确定是否监视从源服务器到用户设备的数据流。如果这样确定,则系统收集数据流的统计信息并且向 数据库 中的流记录存储统计信息。该系统还通过分析数据流的统计信息来向服务提供商网络的订户映射流记录,并且基于对数据流的统计信息的分析来估计服务提供商的网络向数据流提供的带宽。 | ||||||
权利要求 | 1.一种用于有选择地监视服务提供商网络中的流量的方法,所述方法包括: |
||||||
说明书全文 | 利用按照需求的装置的实时网络监视和订户标识技术领域[0001] 本公开总体上涉及改进网络上的用户体验,并且更具体地涉及监视连接到网络中的给定节点的许多设备的带宽消耗。 背景技术[0002] 移动设备、比如智能电话和平板计算机近年来已经变得盛行。由于移动计算能力和远程无线因特网接入的快速发展,越来越多用户在他们的移动设备上查看流式视频。网 络拥塞检测对于尝试最大化网络上的用户体验的网络运营商而言已经变得越来越重要。甚 至随着网络运营商正在日益增加他们的网络的容量,对于带宽的需求正在以日益更快的步 伐增长。管理网络增长和应对基础结构中的拥塞由于无线移动网络利用的无线电频谱和无 线电接入网络(RAN)设备的高成本而在移动空间中特别地重要。这些高成本妨碍移动服务 提供商通过购买附加RAN基础结构来向每个网络接入点中工程设计额外容量。然而,相同 情形也可以对其它类型的网络基础结构发生。 [0003] 现有网元可以向运营商给予对它们的网络中的当前流量状态的审视,但是它们未提供“良好度”的测量、即剩余多少弹性或者网络可以处置多少更多数据。这一测量对于多媒体内容递送是重要的,因为良好用户体验通常依赖于网络的用于以可靠和可持续方式递 送数据的能力。需要最小数据速率以防止在多媒体内容的流传输期间拖延和重新缓冲,因 此保证充分带宽对于体验质量是重要的。通常,多媒体内容提供商被充分地装备以在远超 无线基础结构的能力以外的水平递送多媒体内容。因此,负担落在无线服务提供商上以实 施网络数据优化从而缓解流量负担以及最大化网络上的每一个用户的体验。然而目前,移 动服务提供商经常被迫使用很粗略的工具,这些工具具有对哪些网络段被拥塞的很少可见 性并且往往向可能无需任何优化的流应用优化。 [0004] 通常,移动服务提供商使用内联网络装置,这些内联网络装置监视订户流量的每个比特以便进行网络吞吐量的估计。这给系统带来巨大负担,因为它必须缩放以通过单个 网络接入点处置每秒数以万计到百万计的网络请求。另外,网络服务提供商经常必须在微 规模(例如,每RAN装备安装)利用这些监视技术以便对网络的状况做出反应,这造成增加 的成本。此外,网络流量的大部分由小对象请求构成,这可能由于它们的短生命期限和突发特性而模糊在任何水平的网络监视。 附图说明 [0006] 图1图示用于有选择按照需求的实时网络监视和订户标识的示例通信环境的高级框图。 [0007] 图2图示能够从机器可读介质读取指令和在处理器(或者控制器)中执行它们的示例机器的部件的一个实施例。 [0008] 图3图示用于提供有选择实时网络监视和订户标识的网络控制器的示例架构的一个实施例。 [0009] 图4A和图4B图示用于提供有选择按照需求的网络监视和订户标识的网络控制器的示例工作模式的实施例。 [0010] 图5图示在用于有选择按照需求的实时网络监视和订户标识的“继续”工作模式中的示例网络控制器的事件踪迹的一个示例实施例。 [0011] 图6图示在用于有选择按照需求的实时网络监视和订户标识的“计数”工作模式中的示例网络控制器的事件踪迹的一个示例实施例。 [0012] 图7图示网络控制器管理的示例流高速缓存的部件的一个实施例。 具体实施方式[0013] 附图和以下描述仅通过示例涉及优选实施例。应当注意,从以下讨论将容易认识这里公开的结构和方法的备选实施例作为可以在未脱离要求保护的内容的原理时运用的 可行备选。 [0014] 现在将具体参照若干实施例,在附图中图示这些实施例的示例。注意无论何处可行都可以在图中使用相似或者相同标号并且这些标号可以指示相似或者相同功能。附图仅 出于示例的目的而描绘公开的系统(或者方法)的实施例。本领域技术人员将从以下描述 中容易认识,可以运用这里所示结构和方法的备选实施例而未脱离这里描述的原理。 [0015] 概述 [0016] 公开的实施例包括一种用于实时收集关于现有网络流量流的状态的数据并且向网络中的相应用户映射流数据以预测可用带宽和拥塞水平的网络控制器系统。通过收集网 络中的流统计量的历史,网络控制器系统建立在基站(或者其它网络段)与它们的用于递 送网络的特定用户通常需要的数据量的能力之间的关系。网络流的新近历史可以用来以 基本上实时方式预测不远将来的拥塞。另外,流统计量的历史可以用来构建网络上的用户 行为的长期映射,该长期映射可以用一致方式对于利用给定的网络接入点的用户汇集更有 效地预测按照需求的数据递送要求。网络控制器保持流状态数据库,该流状态数据库用多 种方式、比如在每站/小区塔、每订户、每当天时间或者每地理区域基础上对流数据进行分组。随着向系统呈现新流用于检查,可以查询数据库以估计用于新流的网络拥塞水平以确 定现有、新的或者将来流是否需要优化以便维持希望的用户满意度水平。 [0017] 在一个实施例中,采用一种按照需求的网络监视方法以在网络流穿越网络时收集关于它们的数据。例如,可以基于在网络流中携带的内容的类型有选择地或者按照需求监 视流。另外,也可以在内联水平以及带外有选择地执行网络监视以提高效率。监视TCP和 UDP流二者以收集关于网络的状态的信息、比如用于每个流的平均网络吞吐量和在例如客 户端设备与向客户端设备提供多媒体内容的源服务器之间的端到端延时。对于每个TCP或 者UDP流,系统跟踪发送(并且在一些实施例中确认)的字节数目。在TCP中,也可以跟踪 当前床大小。在可以按照订户标识(ID)、小区塔(基站)和网络段等编索引的流统计量数 据库中存储关于网络流的记录。随着许多流记录累积,这一数据库代表用于递送数据的历 史和当前网络状况和容量。可以通过计算在时间段内递送的字节平均数目来测量网络吞吐 量。可以采取步骤以从具有比某个阈值更小的大小的小流过滤掉假数据,这些小流在被测 量时引起在测量带宽和/延时时的很有噪声的结果。例如,可以过滤具有小于500ms的递 送时间的任何流。 [0018] 在另一实施例中,穿越网络的大对象、比如视频文件和数据被监视和定步调。取代仅测量与大对象递送关联的带宽,基于测量来确定对于网络的将来带宽需要的估计。又可以有选择地优化大对象以保存网络吞吐量。对于视频对象,流的流式比特率提供可以参数,该参数可以与网络容量比较以确定网络是否能够持续需要的吞吐量水平。将传送速度定步 调为不超过已知上限是经常有利的。如果可以在为了防止视频拖延而需要的最小水平与定 步调限制的上限之间的速率递送流,则流在其上穿越的网络段视为能够持续流需要的比特 率。大对象、比如视频和图像需要时间段来递送,该时间段辅助测量源服务器延时并且比小流更准确地检测网络拥塞。例如可以在512kB到1MB以及用于中等大小的对象的50kB和 以上之间设置用于分离大对象与小对象的合理大小阈值。其它值也是可能的。 [0019] 在一些实施例中,单个流达到的带宽可以足以确定流穿越的网络段的容量。因此,有了对网络控制器的相当小的部署,可以得到对关键网络拥塞点的准确检测。具体而言,无需监视穿过网络段的每个流以检测拥塞。由于视频当前包括网络上的流量的大约50%、但是仅包括全部流的大约5%,所以很小数目的大对象流采样可以映射网络的统计显著部分。 [0020] 网络拥塞的不可预测和瞬态性质意味着网络拥塞的缓解如果在拥塞被检测到之后未被接近实时地作用则将太迟。在一个实施例中,网络控制器通过按照需求的视频优化 器选择大视频或者图像流以优化大对象递送并且因此优化可用网络带宽。有了控制器和/ 或优化器智能地和有选择地处置测量和优化,从网络路由装置分流这些操作。实时流量监 视 [0021] 图1图示用于有选择按照需求的实时网络监视和订户标识的示例通信环境100的高级框图。环境100包括用户设备110、源服务器160、导引设备130、网络控制器140、视频优化器150和网络120。网络120是在用户设备110、导引设备130和源服务器160和/或 视频优化器150之间传输数据的通信网络。在一个实施例中,网络120包括无线网络和因 特网。 [0022] 希望防止资本开支超过收入的网络效率策略必须与来自消费者的对于更佳用户体验的需求平衡,这些更佳用户体验日益依赖于更高数据速率。如今,移动运营商正在运用多种工具以管理包括数据使用上限、Wi-Fi分流和智能优化的容量。环境100示范这样的 解决方案,该解决方案提供统一基础,该统一基础具有深度会话智能、集成服务关联和用于适合任何服务赋予的动态适应性。网络控制器140和视频优化器150一起递送如下全球类 媒体优化解决方案,该解决方案给无线运营商以及因特网服务提供商带来外科手术式容量 优点以及比备选解决方案更佳的峰容量。 [0023] 在一个实施例中,用户设备110是具有网络能力的计算设备。经常例如用户设备110是具有web浏览器和媒体显示能力的具有无线启用的移动计算设备。作为移动计算设 备的用户设备110可以包括膝上型计算机、上网本、平板计算机、智能电话或者个人数字助理(PDA)。尽管在图1中图示仅两个用户设备110A和110B,但是环境100可以包括数以千 计或者数以百万计的这样的设备。Web浏览器可以是在移动设备110上运行的用于从源服 务器160取回web内容并且在耦合到移动设备的显示器上呈现web内容的软件应用。用户 设备110访问的web内容包括文本、图像、音频和视频内容。多媒体内容可以由浏览器、例 如HTML5兼容浏览器、插件或者单独媒体播放器回放。浏览器也可以调用在用户设备110上 可用的媒体播放器或者插件或者单独媒体播放器回放。浏览器也可以调用在用户设备110 上可用的媒体播放器或者插件并且向媒体播放器或者插件传递图像、音频和/或视频用于 回放。 [0024] 导引设备130可以是位于用户设备110与网络120之间的负荷平衡器或者路由器。导引设备130向用户设备110提供向网络的接入并且因此提供网关,用户设备流量通 过该网关向网络上流动以及相反。在一个实施例中,导引设备130对通过它路由的流量进 行分类以标识感兴趣的流用于在网络控制器140进一步检查。备选地,网络控制器140与 导引设备130进行接口以协调对网络流量的监视和分类、比如标识HTTP流量流中的大对象 和小对象。在这一情况下,导引设备130基于用于对感兴趣的流进行分类用于进一步检查 的希望标准从网络控制器140接收指令。 [0025] 然而,关于无线/蜂窝用户设备110侧的信息经常在处于蜂窝网络与有线因特网之间的导引设备130不可用。例如经常无关于与移动设备110关联的塔的标识符的信息。 仅在移动设备第一次附着到网络时广播塔关联信息。此外,用户设备110通常未报告除了 它们的IP地址之外的任何标识信息。因此,对网络流量的监视和对拥塞的检测被检测器 140自动化和管理,从而可以对于终端用户的体验来优化网络而不了解移动用户。 [0026] 与监视发送和接收的每单个数据分组的常规内联TCP吞吐量监视设备对照,网络控制器140是与导引设备130进行接口以有选择地检查感兴趣的用户流的“带外”计算机服 务器。网络控制器140还可以标识用户流(例如,在感兴趣的流之中)用于优化。在一个 实施例中,网络控制器140可以在导引设备130被实施为监视流量。在其它实施例中,网络 控制器140耦合到导引设备130并且与导引设备130通信用于流量监视和优化。在被导引 设备130查询时,网络控制器140确定是否应当忽略、进一步监视或者优化给定的网络流。 经常在流的开始时判决对流的优化,因为一旦非优化的内容递送已经开始就很少有可能流 中间向优化的内容切换。然而,网络控制器140可以确定应当优化与特定订户或者其它实 体关联的现有流。可以优化被确定为与实体关联的新流(例如,由媒体中的查找请求、新媒体请求、在暂停之后恢复等产生)。网络控制器140在它的用于监视和优化的判决中使用网 络状态以及历史流量数据。关于当前网络状态、比如拥塞的了解在它来到数据优化时认为 关键。 [0027] 在向网络控制器140发送流用于检查时,可以搜索在网络控制器140存储的历史网络流量数据。历史网络流量数据包括信息、比如订户信息、用户设备附着到的小区塔、流量穿过的路由器、地理地区、回程段和流的当天时间。例如在移动网络中,用户设备附着到的小区塔可以最有用,因为它是多数拥塞由于无线电接入网络基础结构的有限带宽和高成 本而出现的位置。网络控制器140对于在特定小区塔的每用户的带宽平均值调查历史流量 数据。网络控制器140然后可以基于历史记录来估计用于新流的带宽数量或者拥塞程度。 [0028] 视频优化器150是提供视频和图像优化并且经由网络120向用户设备110递送优化的视频和图像内容的计算机服务器。视频和图像优化是通过对视频和图像内容的代码转 换而提供的按照需求的服务。例如,在用户设备尝试从源服务器160取回视频时,网络控制器140可以判决新满足用于内容优化的某个标准。网络控制器140然后向视频优化器150 重定向用户设备110以取回优化的内容。视频优化器150在来自用户设备110或者来自网 络控制器140的重定向请求中接收关于将优化的视频或者图像内容的信息并且从对应源 服务器160取回视频或者图像内容用于优化和向用户设备110后续递送。 [0029] 公开的实施例聚焦于视频优化,因为视频在考虑网络拥塞时比所有其它流量类型远远更重要。视频流量组成所有网络流量的大约一半——并且该比例正在逐年增长。因此,优化视频流量大规模地减少网络中的拥塞。视频流也有长期声明、具有大分组大小并且需 要高比特流,监视视频流是一种检测网络中的拥塞的有效方式。另外,由于视频流需要稳定和一致带宽,所以它们在拥塞出现和可用网络带宽减少时将首当其冲受影响。对照而言,网页文本和图像在具有不可察觉的更长负荷时间的适度网络拥塞之下一般不受影响。视频优 化在一个关键方面上不同于优化其它web内容:它是长久形式,并且在视频的开始时做出 的优化策略判决对用于针对视频的长度递送一致体验的能力具有显著影响。 [0030] 视频优化器150和源服务器160通常由一个或者多个计算机形成。尽管在图1的环境100中示出每个视频优化器150和源服务器160的仅一个服务器,但是不同实施例可 以包括单个实体或者多个实体操作的多个web服务器和视频服务器。在其它实施例中,单 个服务器也可以提供不同功能、比如作为web服务器递送web内容以及供应优化的视频内 容。 [0031] 计算机器架构 [0032] 图2是图示示例机器的部件的框图,该机器能够从机器可读介质读取指令并且在处理器(或者控制器)中执行它们以实施公开的用于按照需求的实时网络监视和订户标识 的系统。具体而言,图2示出示例形式为计算机系统200的机器的图解表示,在该计算机 系统200内可以执行用于使机器执行这里讨论的方法中的任何一种或者多种方法的指令 224(例如,软件)。在备选实施例中,机器作为独立设备操作或者可以连接(例如,联网) 到其它机器。在联网部署中,机器可以在服务器-客户端网络环境中的服务器机器或者客 户端机器的能力内或者作为对等(或者分布式)网络环境中的对等机器操作。 [0033] 机器可以是服务器计算机、客户端计算机、个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能电话、web装置、网络路由器、交换机或者桥接器或者能够执行指令224(依序或者另外方式)的任何机器,这些指令指定机器将采取的动 作。另外,尽管仅图示单个机器,但是也应当解读术语“机器”包括如下机器的任何汇集,这些机器个别或者共同执行指令224以执行这里讨论的方法中的任何一种或者多种方法。 [0034] 示例计算机系统200包括被配置用于经由总线208相互通信的一个或者多个处理器202(例如中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、一个或者多个专用集成电路(ASIC)、一个或者多个射频集成电路(RFIC)或者这些各项的任何组合)、 主存储器204和静态存储器206。计算机系统200还可以包括图形显示单元210(例如等离 子体显示屏(PDP)、液晶显示器(LCD)、投影仪或者阴极射线管(CRT))。计算机系统200也 可以包括也被配置用于经由总线208通信的字母数字输入设备212(例如,键盘)、光标控制 设备214(例如,鼠标、跟踪球、操纵杆、运动传感器或者其它指示仪器)、存储单元216和网络接口设备220。 [0035] 存储单元216包括机器可读介质222,在该机器可读介质上存储体现这里描述的方法或者功能中的任何一种或者多种方法或者功能的指令224(例如,软件)。指令224(例 如,软件)也可以完全或者至少部分驻留于主存储器204内或者在计算机系统200执行这 些指令期间驻留于处理器202内(例如,处理器的高速缓存存储器),主存储器204和处理 器202也构成机器可读介质。可以经由网络接口设备220通过网络110传输或者接收指令 224(例如,软件)。 [0036] 尽管在一个示例实施例中示出机器可读介质222为单个介质,但是应当解读术语“机器可读”介质包括能够存储指令(例如,指令224)的单个介质或者多个介质(例如,集 中式或者分布式数据库或者关联高速缓存和服务器)。也应当解读术语“机器可读介质”包括能够存储指令(例如,指令224)的任何介质,这些指令用于由机器执行并且使机器执行 这里公开的方法中的任何一种或者多种方法。术语“机器可读介质”包括但不限于形式为 固态存储器、光介质和磁介质的数据贮存库。 [0037] 网络控制器的系统配置 [0038] 回顾图1,网络控制器140允许网络运营商应用细粒度优化策略以用更低硬件和软件成本基于小区塔拥塞、设备类型、订户简档和服务计划保证高体验质量(QoE)。网络控制器140的架构提供用于“合理网络管理”的网中性方针的优良相配和比依赖于长期高速 缓存的解决方案更佳的版权(DMCA)服从。具有在每订户、每流或者每视频文件基础上监 视网络流量的能力,网络控制器140也有选择地监视和仅优化从优化中受益最多的流量子 集、因此实现用于在有竞争力的价格点优化的可伸缩性和效率二者。网络控制器140的核 心单元落在它的用于拥塞检测和缓解的机制中,这允许以最高效和外科手术式方式利用优 化资源。 [0039] 现在参照图3,它图示用于提供有选择实时网络监视和订户标识的网络控制器140的示例架构的一个实施例。网络控制器140包括流分析器312、策略引擎314、导引设备 接口316、视频优化器重定向器318、流高速缓存322和订户日志324。在其它实施例中,网 络控制器140可以包括用于各种应用的附加、更少或者不同部件。未示出常规部件、比如网络接口、安全功能、故障保护服务器、管理和网络操作控制台等以免模糊系统架构的细节。 [0040] 流分析器312监视网络中的大流、分析收集的流统计量以确定网络吞吐量并且相应地选择将优化的流。流分析器312无需看见所有流以便做出网络状况的准确估计。流分 析器312例如通过关联源IP地址标识的网络流与其当前订户ID或者设备ID标识的移动 订户或者用户来处理在流高速缓存322中存储的流统计量和在订户日志324中存储的用户 信息。用户刘也被映射到在当前子网络(例如用户设备与之关联的小区)的拥塞水平,从 而可以在数据传输的开始时做出优化判决。 [0041] 常规地,用于移动网络的拥塞检测聚焦于经由专用硬件探测从无线电接入网络(RAN)主动地提取网络状态。例如,用于网络的每个子节(例如,移动小区)的探测周期性 地(例如,每2分钟)收集和向一个或者多个网络监视服务器发送网络统计量、比如拥塞的 小区地点、拥塞水平(例如,无、低、中、高)和当前与小区关联的活跃订户。然而,专用硬件解决方案成本高,并且这些硬件探测所收集的网络统计量可能由于隐私策略而不可用于第 三方实体。 [0042] 网络控制器140从核心网络收集关于网络流的实时统计数据而无在RAN网络中部署的探测。存储统计数据和比较统计数据与历史流数据以估计拥塞水平和可用网络带宽。 取代收集用于每个流和每个会话的流量统计量,网络控制器140仅对涉及到在某个大小以 上(例如,在50kB以上)的媒体对象、比如视频和图像的大流进行采样。网络控制器140 可以选择作为直通设备以监视大流以及确定是否优化流。仅测量更大流有利于缓解源服务 器延时和网络假信号引起的破坏。另外,聚焦于大流帮助网络控制器听过去除具有以毫秒 为单位的递送时间的数以百万计的微小或者小流的影响来在带宽测量时减少背景噪声和 增加信噪比。因此,带宽估计和拥塞检测的可靠性高得多。 [0043] 基于收集的统计数据,流分析器312通过考虑比如在上数分钟内累积的所有信息来确定接近实时网络状况。对这一分析的最强大应用来自对在每用户基础上的带宽消耗的 接近实时估计,这允许流分析器312生成特定用户的数据脚印或者行为模式。例如,有可能检测如果用户在小区的边缘或者在建筑物中的墙壁后面从而引起不良连通则用户在附着 到非拥塞塔之时经历困难网络状况这样的情形。 [0044] 此外,在更长期内的历史流数据帮助流分析器312确定某些网络段的模式和热映射并且预测它们何时在拥塞之下。在这一情况下,可以比对流量类别映射在流高速缓存322中存储的流统计量用于分析,例如视频流带宽的长期游动平均值帮助确定用于优化的可持 续性。另外,随时间每用户(或者每小区ID、每塔或者每路由器)的估计带宽可以是流分 析器312计算的度量以便确定用于优化的短期需要。例如,流分析器312可以响应于阈值 数目的高带宽用户连接到与特定小区ID对应的相同小区塔来确定优化与小区ID关联的流 (或者用于小区ID上的标识的高带宽用户的那些流)。流分析器312有选择地监视大流的 原因在于认识用于组成多数web流的小对象的TCP统计量可能有误导和引起吞吐量估计中 的巨大误差。 [0045] 导引设备与外部路由装置、比如导引设备130交互以递送网络流量的部分(例如,大对象网络流)。多数承运商网络中的现有路由装置被设计为处置大量网络流量。然而它 们不是用于操作监视和分析个别流的理想设备。通过导引设备接口316,网络控制器140可 以与外部路由装置、比如导引设备130通信以在满足某些条件时向网络控制器140导引网 络流量的部分。一般而言,让网络控制器140感兴趣的网络流包含更大媒体对象、比如视频和图像。在一个实施例中,未通过导引设备接口316交换更小流、比如网页和文本信息。 [0046] 流高速缓存322存储对于来自导引设备130的具有每个关联事务的流更新的、监视的流信息。在一个实施例中,在按照可以上至64位或者更长的哈希而编索引的映射中存 储流高速缓存中的数据。可以组织流高速缓存映射中的条目为链接列表以允许哈希冲突。 备选地,哈希索引中的更少位也可以用来加速流高速缓存映射中的二叉搜索。例如,取代使用64位哈希索引,该64位哈希索引需要最差64个步骤以发现节点,哈希索引可以被减少 成16-24位。将有更多哈希冲突,因此链接列表更长。其它实施例可以使用其它类型的映 射或者二叉树而不是链接列表以进一步优化哈希冲突搜索。 [0047] 订户日志324存储用户或者订户信息、比如用户或者订户标识及其设备信息。在一个实施例中,订户和设备信息由承运商或者服务提供商网络的管理员或者操作员提供给 订户日志324。在其它实施例中,承运商网络(例如,移动ISP)的订户或者设备信息不可 用于网络控制器140。这使带宽测量更困难,因为多个用户的设备可以使用网络地址翻译 (NAT)协议来共享单个IP地址。因而,对共享IP地址的多个用户进行分离的算法可以由流 分析器312实施以确定可用于个别用户的带宽数量。 [0048] 在流高速缓存322和订户日志324中存储的数据用于流分析器312的带宽监视和用户标识。流分析器312扫掠过流高速缓存映射中的所有条目。由于其它操作、比如添加新流高速缓存条目或者更新流统计量可能与扫掠竞争并且引起数据破坏,所以流分析器312 在执行用户标识和带宽监视之时锁定流高速缓存。为了保持锁定程度最小,可以在预定数 目的操作之后暂停扫掠。流分析器312可以在下一通过时在停顿处恢复。这例如通过保持 扫掠的上个映射定位的迭代器来实现。在另一操作引起对迭代器的改变的情况下,可以相 应地调整迭代器以确保它总是有效。 [0049] 策略引擎314定义用于优化具有媒体对象的大流以缓解网络拥塞的策略。检测和作用于网络中的拥塞,在这一很灵活的策略引擎上构建网络控制器140的设计焦点。策略 引擎314能够取得从HTTP报头和净荷(例如,通过RADIUS/Gx接口)推断的或者网络基础 结构经由API提供的实质上任何输入并且基于这些输入中的个别输入或者组合做出关于 如何应用优化的判决。优化策略可以始终或者在当天时间基础上、在每用户基础上和/或 根据网络状况应用于大流。 [0050] 例如,策略引擎314可以被配置为基于用于网络的不同段的当天时间应用优化。可以使用某些网络段在具体当天或者周时间期间的网络状况和带宽消耗模式的了解基于 在流高速缓存322中存储的历史流统计数据确定当天时间配置。例如,如果网络范围的“高拥塞”每天从下午7点到下午10点出现,则可以设置策略以优化在该时间段期间具有在 255kbps以上的源视频比特率的视频。如果网络范围的“中等拥塞”每天从下午3点到下午 7点出现,则优化具有在300kbps以上的源视频比特率的视频。也有可能在拥塞发生时随时 手动地改写当天时间策略。 [0051] 也有可能策略引擎314不仅基于网络拥塞而且基于总优化容量调整优化策略。根据安装的用于服务于网络的优化容量,可以在优化服务器“过度预订”优化请求。作为一种监视优化容量的手段,在网络控制器140与视频优化器150服务器池之间交换“健康校验” 消息。如果优化器池被全利用,则将通知网络控制器140。随着优化器池迫近全利用,策略引擎314可以动态地调整将优化的流的比特率阈值以仅供给最大流。 [0052] 例如假设网络在拥塞之下并且用于流的目标移动比特率至少为255kbps。通常,策略引擎314优化具有比目标速率多15%或者更高的比特率(例如,约为260kbps)的任何视频流。但是一旦视频优化器150的优化容量达到85%,策略引擎314增加阈值,从而仅优化 具有300kbps和以上的比特率的视频以最大化总带宽节省。随着视频优化器150达到甚至 更高利用,将进一步增加阈值水平,例如将仅优化HD视频,因为最大用户体验受益来自“最繁重”视频。 [0053] 也在策略引擎314支持全地理冗余性和地理负荷分担。例如,如果优化器的本地池被全利用,则可以向远程优化器池传递优化请求。在效果上,策略引擎314允许当前网络状况以及可用容量确定将优化的视频类型或者大小。这敞开用于获取优化资源的可能性, 这些优化资源与预算相配并且保持服务器始终全利用,从而知道网络控制器自动地对视频 区分优先顺序以实现最佳效率。 [0054] 注意用于优化视频的判决最经常是在流发送开始之前做出的,因为流中间优化视频面临显著技术挑战。一旦视频开始用流发送到设备,某些参数不再经由优化可寻址。例 如,不能流中间改变视频分辨率(宽度x高度),因此用于优化的显著技术没有可能。作为 另一示例,在用流发送期间,视频帧仅能通过丢弃帧来改变而不能用不同帧速率对视频重 新编码。因此,帧内信息受影响并且视频质量显著地受影响。另外,在技术上没有可能实现用于主导视频流式格式的流中间适配,该主导视频流式格式比如是用于大多数iOS和安卓 应用的MP4格式。MP4文件格式要求在发送第一字节之前做出所有优化判决。因此,网络控 制器150总是在每个视频流的开始时确定优化水平。优化目标可以被配置为分辨率、帧速 率和带宽的组合以保证订户自始至终得到一致用户体验。 [0055] 如果视频视为被代码转换,则视频优化器重定向器318生成向指向视频优化器150的URL的重定向请求。在一个实施例中,URL可以包含视频分辨率、视频比特率、视频帧速率除数、音频采样率和信道数目、音频比特率、源URL、客户端的用户代理、源域cookie以及视频优化器150的任何其它认证数据。视频优化器重定向器318用HTTP重定向重写原 响应并且向新URL设置位置报头。这使用户设备110向视频优化器150发布新请求。视频 优化器重定向器318也具有用于查找本身生成的传入URL的逻辑,从而它们未被再次解释。 [0056] 网络监视和拥塞检测 [0057] 图4A和图4B各自图示用于提供有选择按照需求的实时网络监视和订户标识的网络控制器的示例工作模式的一个实施例。与网络控制器140示出用户设备110、导引设 备130和源服务器160。网络控制器140通过导引设备接口316耦合到导引设备130。在 一个实施例中,网络控制器140和导引设备130使用因特网内容适配协议(ICAP)来相互通 信。导引设备接口316执行与在导引设备130上运行的ICAP客户端404交互的ICAP服务 器406。相似或者不同协议可以在其它实施例中用于在网络控制器140与导引设备130之 间的通信。 [0058] 因特网内容适配协议是以对HTTP消息执行简单远程过程调用为目标的轻量级协议。ICAP利用基于边缘的设备以帮助使用透明HTTP代理高速缓存来递送增值服务。内容 适配是指执行用于关联HTTP客户端请求/响应的特定增值服务、比如内容操纵或者其它处 理。ICAP客户端向ICAP服务器传递HTTP消息用于变换或者其它处理。ICAP服务器又对 HTTP消息执行它的变换服务并且向ICAP客户端发送回响应。在这一过程的核心是可以代 理所有客户端事务并且通过ICAP服务器处理他们的高速缓存,这些ICAP服务器可以聚焦 于具体功能、比如通报插入、病毒扫掠、内容翻译、语言翻译或者内容过滤。ICAP服务器、比如网络控制器140利用的ICAP服务器处置这些任务以从包括CIAP客户端的网络设备、比 如导引设备130分流增值服务。通过从导引设备130分流增值服务,可以与处置原始HTTP 吞吐量的导引设备独立地伸缩处理基础结构(例如,优化服务和网络控制器)。 [0059] 现在参照图4,网络流量通过导引设备130从用户设备110流动并且通过网络请求路径到达源服务器160。例如用户设备110上的浏览器可以请求来自源服务器160的web 内容。通过网络链路411向导引设备130转发在用户设备110发起的HTTP请求消息。在导 引设备130以内的数据交换机402然后通过网络链路412向源服务器160中继请求消息。 在相反方向上,从源服务器160始发的网络流量通过网络响应路径流过导引设备130回到 用户设备110。例如源服务器160通过网络链路413向导引设备130发送web内容来对用 户请求做出响应,该导引设备通过网络链路416向用户设备110转发web内容。注意网络 链路411和网络链路416是在相同物理链路上的两个相反方向,因此是网络链路对414和 415。在另一方面,网络链路对412和413可以共享或者可以未共享相同网络路径,因为可 以通过一个或者多个路由器不同地路由在相反方向上在导引设备130与源服务器160之间 的流量。 [0060] 在一个实施例中,在导引设备130监视网络响应时,它寻找与用于视频和图像的一个或者多个签名匹配的流。在检测到匹配流时,导引设备130通过ICAP客户端接口404 向网络控制器140转发HTTP请求和HTTP响应的部分。在ICAP服务接口406接收请求和响 应部分之后,网络控制器140的流分析器312执行深度流检查以确定流是否值得带宽监视 和/或用户检测。例如,流分析器312执行的流检查可以确定流是否确实包含大或者中等 对象(例如,大于50kB)和/或流的源IP地址是否来自策略要求监视的用户或者用户组。 流分析器312也可以基于历史流统计数据确定是否需要优化流。 [0061] 如果流视为感兴趣,则通过网络控制器140通知导引设备130导引流。这称为用于带宽监视的“继续”工作模式。在“继续”模式中,网络控制器140与导引设备130进行 接口以按照需求对于视为感兴趣的流作为传统内联网元工作。因此,网络控制器140吸取 网络流用于检查并且在网络响应路径上后续地转发网络流。例如对于这一特定流,源服务 器160通过向导引设备130通过网络链路413发送视频或者图像来对用户请求做出响应, 该导引设备通过网络链路414向网络控制器140转发视频或者图像。在网络控制器140更 新流统计量之后,通过网络链路415向导引设备130返回视频或者图像,该导引设备通过网 络链路416向用户设备110发送视频或者图像。 [0062] 一旦向网络控制器140报告流,在流高速缓存322中为该流创建流高速缓存条目。流高速缓存条目保持对流及其关联带宽的跟踪。对于在“继续”模式中标记的流,每当导引设备130向网络控制器140转发流净荷的下一部分时,流高速缓存322更新用于在流中发 送的字节数目。通过随时间监视每流的字节数目,流分析器312能够确定与流关联的带宽 的估计值。另外,由于导引设备130没有无限分组缓冲器,所以如果拥塞在从导引设备130 到用户设备110的网络链路416上发生,则TCP拥塞控制机制撇开导引设备130,该导引设 备可以减缓和/或最终地停止通过网络链路413从源服务器160接收数据。在拥塞期间, 导引设备130不会向网络控制器140转发任何数据,因为链路416被拥塞并且网络控制器 140将不能向用户设备110发送数据。因此,作为内联单元,网络控制器140可以检测网络 拥塞并且估计与网络控制器140选择的感兴趣的任何流关联的带宽。然而,在“继续”模式中,网络控制器140未修改和变换它通过ICAP接口接收的HTTP消息。网络控制器140简 单地更新流统计量并且向导引设备130返回视频或者图像用于向用户设备110发送。 [0063] 基于在流高速缓存322中存储的流统计量,网络控制器140也可以聚合与用户或者订户关联的流以便估计用户或者订户占用的总可用带宽。在一个实施例中,网络控制器 140跟踪所有流高速缓存条目从而寻找从公共源IP地址或者用户设备标识符始发的流。网 络控制器140的流分析器312然后尝试将这些流一起分组以形成用于用户或者订户的流历 史。网络控制器还使用流高速缓存条目中的两个数据组成来标识用户或者订户:与流关联 的TCP源端口和HTTP cookie。与流历史一起,网络控制器140建立模式并且标识用户或者 订户而且在订户日志324中存储订户信息。以下参照图4B描述流高速缓存和用户映射的 更多细节。 [0064] 图4B图示用于提供有选择按照需求的网络监视的网络控制器140的第二示例工作模式的一个实施例。在图4B中,网络请求路径由从用户设备110到导引设备130的网络 链路421和从导引设备130到源服务器160的网络链路422构成。在相反方向上,网络响 应路径由从源服务器160到导引设备130的网络链路423和从导引设备130回到用户设备 110的网络链路424构成。注意网络链路对421和424共享相同物理链路、因此是网络链路 对425和426。 [0065] 与“继续”模式相似,在接收流的初始HTTP消息并且确定监视流之后,网络控制器140通知导引设备130在用于带宽监视的“计数”模式中工作。与“继续”模式对照,在对于“计数”模式检测到匹配时,导引设备130向用户设备110直接地转发HTTP响应。而在相同 时间,导引设备130通过网络链路425向网络控制器140发送定制的ICAP消息。在一个实 施例中,定制的ICAP消息包含HTTP请求和响应报头以及当前流的净荷大小计数。在更新 流统计量之后,网络控制器140可以通过网络线426向网关确认。在“计数”模式中,网络 控制器140未作为内联网元加入网络响应路径、但是简单地监听流大小计数。“计数”模式的益处是从吸收和在网络响应路径上转发网络流中分流网络控制器140而仍然实现检测 拥塞和估计与感兴趣的流关联的带宽。 [0066] 图5是图示在用户设备110、导引设备130、网络控制器140、视频优化器150和源服务器160之间的“继续”工作模式的示例事件踪迹的框图。该过程在用户设备110发起对 于从源服务器160取回内容的HTTP GET请求512时开始。导引设备130截获从用户设备 110始发的所有请求。在一个实施例中,导引设备130向既定源服务器160转发HTTP GET 请求512并且从源服务器160接收回响应514。导引设备130然后向网络控制器140发送 包括HTTP GET请求头部和响应净荷的部分的ICAP请求消息516,该网络控制器检查消息以 确定是否监视流或者优化视频。在这一情况下,网络控制器140在ICAP响应518中利用用 于优化视频的重定向做出响应。在接收指令时,导引设备130向HTTP重定向响应520重写 响应514从而使得用户设备110请求来自视频优化器150的视频文件。在另一实施例中, 网络控制器140向用户设备110直接地发送HTTP重定向请求520。在流不含视频或者图像 对象或者网络控制器140确定不监视流的情况下,导引设备130将向用户设备110转发响 应。 [0067] 一旦用户设备110接收HTTP重定向请求520,用户设备110通过网络向视频优化器150发送请求。在一个实施例中,网络控制器140监视在HTTP重定向请求520被路由到 视频优化器150时监视来自客户端设备110的流量和/或请求。在这样的配置中,视频优 化器150仅看见用于需要代码转换(例如,优化)的并且与HTTP重定向请求520关联的视 频文件的请求。这样,视频优化器150未被用户设备110生成的所有请求所负累。 [0068] 在接收请求之后,视频优化器150向源服务器160转发视频HTTP GET请求622并且作为回报从源服务器160接收视频文件524。视频优化器150基于可用于用户设备110 的网络带宽将视频文件代码转换成客户端设备110可使用的格式。优化的视频526然后从 视频优化器150发送到导引设备130。在一个实施例中,导引设备130截获优化的视频526。 由于网络控制器140确定在“继续”模式中监视流,所以优化的视频526在它被返回到导引 设备130并且最终发送到用户设备110之前被传递到网络控制器140。这样,客户端接收优 化的视频512用于在用户设备110上执行的应用上基本上实时回放。 [0069] 在一个实施例中,响应于向源服务器160的HTTP GET请求522,视频优化器从源服务器160接收HTTP 404错误,这有别于视频文件。在这样的情况下,视频优化器150向 HTTP重定向请求追加“未代码转换”标志并且返回到用户设备110,该用户设备通过网络向源服务器160重发出该请求。源服务器160通过发送回视频524来对请求适当地做出响应, 该视频被导引设备130和网络控制器140的内联按照需求单元截获用于监视目的。 [0070] 图6是图示在用户设备110、导引设备130、网络控制器140、视频优化器150和源服务器160之间的“计数”工作模式的示例事件踪迹的框图。该过程在用户设备110发起对 于从源服务器160取回内容的HTTP GET请求612时开始。导向设备130截获从用户设备 110始发的所有请求。在一个实施例中,导引设备130向既定源服务器160转发HTTP GET 请求612并且从源服务器160接收回响应614。导引设备130然后向网络控制器140发送 包括HTTP GET请求报头和响应净荷的部分的ICAP请求消息616,该网络控制器检查该消 息以确定是否监视流或者优化视频。在这一情况下,网络控制器140在ICAP响应618中利 用用于优化视频的重定向做出响应。在接收指令时,导引设备130向HTTP重定向响应620 重写响应614从而使得用户设备110请求来自视频优化器150的视频文件。在另一实施例 中,网络控制器140向用户设备110直接地发送HTTP重定向请求620。在流不含需要重定 向的视频或者图像对象的情况下,导引设备130将向用户设备110转发响应。 [0071] 一旦用户设备110接收HTTP重定向请求620,用户设备110通过网络向视频优化器150发送请求。在一个实施例中,网络控制器140在HTTP重定向请求620被路由到视频 优化器150时监视来自客户端设备110的流量和/或请求。在这样的配置中,视频优化器 150仅看见用于需要代码转换(即,优化)的并且与HTTP重定向请求620关联的视频文件 的请求。这样,视频优化器150未被用户设备110生成的所有请求所负累。 [0072] 在接收请求之后,视频优化器150向源服务器160转发视频HTTP GET请求622并且作为回报从源服务器160接收视频文件624。视频优化器150基于可用于用户设备110 的网络带宽将视频文件代码转换成客户端设备110可使用的格式。优化的视频626然后从 视频优化器150被发送到导引设备130。在一个实施例中,导引设备130截获优化的视频 626。导引设备130然后将向网络控制器140发送ICAP请求用于检查。网络控制器140认 为这一个流将被监视并且发送ICAP响应630。导引设备130然后允许流经过去往用户设备 110。导引设备130接着向网络控制器140发送周期性ICAP“计数”更新632直至流完成。 这样,客户端接收优化的视频626用于在用户设备110上执行的应用上基本上实时回放。 [0073] 在一个实施例中,如果视频优化器150从源服务器160取回用户请求的视频文件失败,则视频优化器150向HTTP重定向请求追加“未代码转换”标志并且返回到用户设备 110,该用户设备通过网络向源服务器160重发出请求。源服务器160通过发送回视频624 来对请求适当地做出响应,该视频仅被导引设备130截获。导引设备130向用户设备110 转发视频并且同时向网络控制器140报告流大小用于监视目的。 [0074] 流高速缓存和用户映射 [0075] 图7是图示流高速缓存的内部部件的示例的一个实施例的框图。流高速缓存映射700包括多个流高速缓存条目、比如按照哈希索引的流高速缓存条目710和流高速缓存条 目712。在示例图中未示出在每个流高速缓存条目后面的可能链接列表,该链接列表允许链化用于给定的哈希索引的流高速缓存条目。指向流高速缓存中的哈希可以基于源ID地址、 MAC地址、订户ID或者指示给定的订户、订户组或者订户的设备的其它标识符。 [0076] 示出流高数缓存条目712指向的流高速缓存块720包括关于源ID 722、代表与用户关联的流逻辑组的一个或者多个用户流块、订户或者代表潜在订户的实体的信息。这些 用户流块的示例是默认用户流块724和映射的用户流块726。默认用户流块724存储尚未 与任何特定用户或者订户关联的流。如果订户id或者与特定用户关联的任何其它标识符 预先已知,则与特定用户或者订户关联的所有流将被指派给映射的用户流块726。映射的用户流块726也包括已经或者正在被流分析器312映射到用户或者订户的流。映射的用户流 块726可以使用订户id来编索引。 [0077] 理想地,流可以按照用户的源IP地址而被指派给映射的用户流块726用于用户或者订户。然而,在一些情况下,与IP地址关联的流可以经常与用户或者订户组关联,但是无用于标识特定用户或者订户的足够信息。在这些情况下,可以在默认用户流块724中指派 伪订户id直至在观察更多流时标识实际用户或者订户。 [0078] 可以在默认用户流块724和映射的用户流块726中包括的示例用户流块730包含数据字段、比如订户id 732(伪或者实际)、估计的带宽734、与订户id 732关联的所有流 的列表736和cookie哈希列表738以及其它有关流信息。cookie哈希列表738中的每个 条目包含在流内看见的一个唯一cookie。流列表736包括一个或者多个流统计量块740。 每个流统计量块740包含IP流标识符742(例如,srcIP、dstIP、srcPort、dstPort)、当前 域和cookie 744、在每个方向上看见的字节总数746、截至上次更新748的在每个方向上的 字节总数。在图7中未示出包括与流关联的cookie哈希列表和到期时间。 [0079] 在一个实施例中,流高速缓存映射700可以被拆分成一个逻辑高速缓存映射代表的多个物理高速缓存映射。由于大量条目(例如,数以百万计的条目)和向逻辑高速缓存 的频繁访问(例如,每秒数以千计次),所以每个拆分的物理高速缓存映射需要比对竞赛条 件被它自己的线程管理和保护。将逻辑高速缓存拆分成多个物理高速缓存的益处是大量地 减少资源争用和其它并发事故。可以用各种方式拆分流高速缓存映射700、比如基于来自哈希索引的最低有效位(LSB)中的一个或者多个位选择用于一个或者多个物理流高速缓存 的条目。例如,如果使用哈希索引的最低三位作为索引,则共享相同三个LSB的所有流条目被组织成八个物理流高速缓存映射之一。为了在流高速缓存映射内搜索,使用其余位的哈 希。 [0080] 可以计算用户流块700中的估计的带宽734如下。在一个实施例中,每当在流高速缓存中创建或者更新用户流块730时,用“脏”标志标记它。该标志用作向流分析器312的 指示符,该指示符指示可能需要为该流重新计算带宽,从而流分析器312无需遍历每个用 户流块以找出它是否需要更新。可以在用户流块730中或者在流统计量块740中设置“脏” 标志。可以周期性地(例如,在一秒、十秒或者分钟的间隔中)执行对带宽的重新计算或者 更新。在更新出现时,自从上次更新起的发送(和/或接收)的直接的差值用来测量随时 间的字节、与总带宽比较的消耗带宽的比例、在该间隔期间的接收(rx)方向或者发送(tx) 方向带宽。也可以对于与特定用户关联的所有流聚合在间隔中的发送(和/或接收)的字 节以测量特定用户接收的估计带宽。 [0081] 在带宽计算中,流基于正在传送的对象的大小被分类成桶。小对象可以在带宽计算中未被考虑,因为它们可以在单个间隔中来而又去。例如可以忽略具有小于50kB的净荷 大小的流,因为50kB的传送可能从未达到链路的全潜在吞吐量。尽管更大流可以对于长 时段的时间间隔而达到链路的全吞吐量,但是它们被分组成50-75kB、75-100kB和100kB+ 桶,因为这些流大小的特性可能不同,因此分离地测量和计算用于每个桶的带宽。在其它 实施例中,可以根据发送的对象的网络流量和大小更改桶的流大小范围(例如50-75kB、 75-100kB和100kB+)另外,也可以在向客户端发送之前基于网络拓扑、比如缓冲器大小调 整桶大小。在队列结果中存储每桶的计算的带宽,该队列结构允许计算和更新用于每个桶 的最小值、最大值和/或平均值测量。在一个实施例中,比对用于100kB+桶的平均带宽校 验100kB+桶的当前尾部条目。如果当前条目小于与队列中的条目相乘的平均值,则向用于 当前间隔的带宽计算添加当前条目。这一方案可以从暂时地空闲的流过滤掉大数据突发。 如果带宽超过该值,则将从当前条目减去字节数目(例如,125kB)以考虑网络中的TCP缓冲 器。 [0082] 一旦已经在对应桶中分配与用户关联的所有流,通过组合为每个桶桶中的所有流而发送的测量的数据来计算用于相应的带宽。在一个实施例中,先比较100kB+桶中的流大 小与最大突发值。如果100kB+桶中的流大于最大突发值的某个百分比(例如,25%),则在 估计的带宽中未考虑该流。具体而言,在流已经空闲一段时间时,大量数据可能在网络由于网络缓冲器而备份之前突发。最大突发值保持对于用于给定的用户的100kB流(或者任何 更高带宽的桶)而看见的最大带宽值的跟踪。如果流大小比最大突发值小得多(例如,小 于25%),则向估计的带宽添加它。 [0083] 通过合计从用于当前间隔的每个桶估计的带宽来计算估计的带宽。仅如果有在间隔期间发送的数据、即一个或者多个桶不为空则才更新估计的打开。此外,需要发送最小数目的字节以便更新估计的带宽。这通过加权与桶的字节下限(例如,50kB、75kB或者100kB)相乘的每桶平均带宽以对来自最大桶的数据投入更多权值来完成。仅在来自每个同的组合 权值超过阈值时才更新估计的带宽以便防止更小桶上的小数据突发产生假带宽更新。 [0084] 在一个实施例中,在队列数据结构中存储测量的带宽。每当在间隔中测量非零带宽时,向队列的尾部中推送测量的带宽。可以来自队列的平均值、最大值或者最小值计算估计的带宽。可以调整队列的深度:更多条目可以平花掉估计的带宽的变化、但是对网络的快速改变(例如,快速地下载小到中等大小的文件)更慢做出反应。尽管更少条目实现更快 反应时间,但是减少用于跟踪网络的长期改变(例如,除了一些更小文件之外还下载中到 大的大小的文件)的能力。在一个示例中,队列深度可以被限定在10个与30个条目之间。 在另一示例中,滑动窗技术与更长队列组合用来平滑掉变化以及跟踪快速改变。 [0085] 在观测新流时,如果流的订户id或者其它标识符不可用,则通过匹配源ID地址722来搜索流高速缓存条目。在多个用户共享IP地址的情况下,流分析器312需要发现流 中的模式或者其它标识符以向特定订户映射它们。向在默认用户流726之下的流高速缓存 块添加无标识的订户的流,该默认用户流是用于新流的默认保持地点。流分析器312以后 将扫掠过默认用户流,这些默认用户流包含可以用来确定与流关联的实际用户或者订户的 cookie或者其它标识符。如果流包含与现有实际用户不关联的标识符,则创建新用户或者 订户,并且向新创建(或者映射)的用户或者订户移动用户流块。 [0086] 流分析器312也可以通过匹配cookie哈希、MAC地址(或者任何唯一设备标识符)或者TCP源端口来向流高速缓存条目中的用户(移动或者网络服务的订户)映射流。 例如,如果两个流共享相同UAN端口,则很有可能的是它们属于相同用户,因为TCP端口经 常被个别用户重用、但是未经常在用户之间被重用另外,源端口也可以用来在部署网络地 址翻译(NAT)时映射用户。在具有NAT配置的代理型网络中,向每个用户分配TCP源端口 的块(例如,32)。然后为发起的每个新用户流挑选块内的随机端口号。有了这一了解,可 以在相同用户之下聚合块内的所有源端口。在一些情况下,用户被指派多于一个端口号块,cookie哈希可以用来一起链接块。 [0087] 在一些实施例中,可以从当前用户向更佳匹配的用户迁移用户流块。这仅在从具有更少关联流的用户到具有更多关联流的用户的方向上被完成以防止在两个用户之间来 回移动流(即,振荡)。如果已经从用户去除所有流,则去除用户本身。在迁移流的过程期 间,可以例如通过合计字节计数、组合cookie哈希和将到期时间延展至更晚时间来组合流 性质。订户日志324存储所有映射的用户。在一个实施例中,现有用户被组织成标识符、比如源端口和cookie哈希值编索引的数据库表。在一个实施例中,迁移用户流块可以简单地 通过从当前用户解除链接用户流块并且向新映射的用户链接它来执行。 [0088] 如在表管理的情况下那样,希望防止系统试图在一个来回中跨整个流高速缓存完成用户映射。因此,可以限制每通过而处理的用户数目并且在下一通过上拾取任何附加用 户。如更早指出的那样,标识符可以未被直接地匹配、但是基于其哈希来匹配以节省计算时间。 [0089] 自适应视频编码 [0090] 传统地,使用优化器的自适应视频编码依赖于可以向优化器通知网络状况的客户端侧过程。本发明的实施例支持不计其数的视频优化器。在无客户端模式中,视频优化器 依赖于网络控制器测量多少反压存在于网络中,从而视频优化器可以相应地调整视频比特 率。 [0091] 在一个实施例中,视频优化器充当按照需求的代理,网络控制器用HTTP重定向请求来调用该代理。例如参照图1,网络控制器140向视频优化器150重定向用户设备110以 得到视频优化器150从在重定向消息中指定的源服务器160取回的优化的视频。一旦视频 已经按照需求被视频优化器150代码转换,将向用户设备用流发送优化的视频。这样,视频优化器140可以监视它能够通过网络推送多少数据。 [0092] 为了实现这一点,视频优化器可以包括环形缓冲器,其中产生视频在通过网络发送到用户设备之前存储于该环形缓冲器。视频优化器保持对向环形缓冲器写入和从环形缓 冲器读取的最后数据的音频/视频时间戳的跟踪。如果网络正在备份,则数据将备份在环 形缓冲器中。通过测量环形缓冲器中的第一和最后数据的时间戳差值,可以估计网络的总 延时。视频优化器实时生成音频/视频流,因此在名义上,环形缓冲器应当保持空。如果环形缓冲器中的存储延时超过某个数量(例如,三秒),则视频优化器可以开始减少音频/视 频编码器中的编码器比特率。可以在与延时成比例的速率执行比特率的减少量。因此,如 果缓冲器继续填充,则将更激进地减少缓冲器中的视频的比特率。备选地,如果存储延时在某个数量(例如,一秒)以下,则视频优化器将按照当前比特率的分数增加比特率。 [0093] 视频优化器150的另一模式寻找逃逸比特率。如果从唤醒缓冲器出来的数据速率显著地小于当前编码器比特率,则可以减少编码器比特率。这是有用的,因为给定的音频/视频序列有时无需大量比特来编码。可以增加比特率,因为延时保持低。然而,序列可以改变并且可能需要大量比特,这可能引起编码算法中的过冲。系统又可以每数秒(例如,5秒)更新比特率以防止视频质量的迅速摆动。也调节将上调和下调的比特率的数量以防止突然 质量改变。 [0094] 在另一实施例中,视频优化器150也对代码转换的视频输出定步调,这使带宽测量变复杂,因为平均网络带宽变成定步调速率而不是实际网络容量。为了缓解这一问题,视频优化器150可以通过在向网络输出任何数据之前将输出数据保持数秒和/或数个字节来 在块中突发数据输出。一旦保持时段结束和/或已经达到保持的字节数目,视频优化器150 在最大速度向网络在突发中发送数据。这允许视频优化器和网络控制器正确地测量网络峰 容量。视频优化器150可以跟踪向网络输出的平均带宽而在未发送数据时未对保持时段进 行计数。 [0095] 现场测试已经表明网络控制器140加上视频优化器150解决方案带来可以用毫秒为单位优化几乎任何视频或者图像对象的突破性即时适配引擎。该引擎特征在于格式覆盖 (例如,Flash、MP4和ABR视频)并且递送对视频为平均60%的数据节省而对图像为50% 从而为典型移动网络一起提供总流量平均减少35%。减少35%是在峰网络使用期间计算 的,这与由于网络流量的定步调/节流所致的节省——后者未改变资本开支曲线——相比 降低资本和运营开支。这一解决方案易于通过在网络中混合云计算能力和现有智能路由来 部署、维持和跨广泛网络类型伸缩。 [0096] 作为结论,本发明的实施例提供一种用于检测和缓解移动运营商的网络中的拥塞的方法和系统。为了检测拥塞,该系统利用来自网络的信息和逐个流水平统计量。可以在最需要优化时、即在峰负荷时间和/或基于订户利用网络的特定部分来检测到或者预期不利 网络状况、比如拥塞时在网络的瓶颈点触发它。该系统提供广泛格式和协议覆盖、全代码转换支持以及灵活策略(例如,基于当天时间的优化),这些策略最大化优化效率和体验质量 二者而显著地减少成本和在相同开支装备基础上服务于更多订户。这通过有选择地监视网 络流量并且按照需求优化更大流而未引入附加内联代理来实现,这些内联代理通过固有地 检查每个流来增添不必要的成本和伸缩挑战。跨用于第1层网络的地区采用基于云的优化 技术,在这些网络中“忙碌小时”可以跨时区转变、保证解决方案的可伸缩性和高度地成功的结果。随着网络流量随时间呈指数增长,可以开启更多拥塞触发以处置视频剧增而无大 量新硬件或者软件许可,只要有能力实现越来越有目标的应用于跨网络的瓶颈点和时间。 [0097] 附加配置考虑 [0098] 贯穿本说明书,多个实例可以实施描述为单个实例的部件、操作或者结构。虽然图示和描述一种或者多种方法的个别操作为分离操作,但是可以并行执行个别操作中的一个或者多个操作并且未要求按照所示顺序执行操作。可以实施在示例配置中作为分离部件而 呈现的结构和功能为组合的结构或者部件。相似地,可以实施作为单个部件而呈现的结果 和功能为分离部件。这些和其它变化、修改、添加以及改进落入这里的主题内容的范围内。 [0099] 这里描述某些实施例为包括逻辑或者多个部件、模块或者机制。模块可以构成软件模块(例如,在机器可读介质上或者在传输信号中体现的代码,其中代码由处理器执行) 或者硬件模块。硬件模块是能够执行某些操作的有形单元并且可以用某种方式来配置或者 布置。在示例实施例中,一个或者多个计算机系统(例如,单独客户端或者服务器计算机系统)或者计算机系统的一个或者多个硬件模块(例如,处理器或者处理器组102)可以由软 件(例如,应用或者应用部分)配置为操作用于执行如这里描述的某些操作的硬件模块。 [0100] 在各种实施例中,可以机械地或者电子地实施硬件模块。例如硬件模块可以包括被持久地配置(例如,作为专用处理器、比如现场可编程门阵列(FPGA)或者专用集成电路 (ASIC))用于执行某些操作的专用电路装置或者逻辑。硬件模块也可以包括被软件暂时地 配置用于执行某些操作的可编程逻辑或者电路装置(例如,作为包含于通用处理器或者其 它可编程处理器内)。将理解用于机械地、在专用和持久配置的电路装置中或者在暂时地配置的电路装置(例如由软件配置)的判决可以由成本和时间考虑驱动。 [0101] 这里描述(如用图4A、图4B、图5、图6和图7描述)的示例方法的各种操作可以至少部分由一个或者多个处理器(例如,处理器102)实施,该一个或者多个处理器被暂时 地配置(例如,由软件)或者持久地配置为执行相关操作。无论是暂时地或者持久地配置, 这样的处理器可以构成操作用于执行一个或者多个操作或者功能的由处理器实施的模块。 这里所称的模块可以在一些示例实施例中包括处理器实施的模块。 [0102] 在对作为位或者二进制数字信号存储于机器存储器(例如,计算机存储器104)内的数据的操作的算法或者符号表示方面呈现本说明书的一些部分。这些算法或者符号表示 是数据处理领域普通技术人员用来向本领域其他技术人员传达他们的工作实质的技术的 示例。如这里所用,“算法”是促成所需结果的操作自一致序列或者相似处理。在本文中,算法和操作涉及到对物理数量的物理操控。通常但是并非必需,这样的数量可以采用能够由 机器存储、访问、传送、组合、比较或者以别的方式操控的电、磁或者光信号的形式。主要地出于普遍用法的原因而使用诸如“数据”、“内容”、“位”、“值”、“单元”、“符号”、“字符”、“项”、“数”、“数值”等字眼来指代这些信号有时是便利的。然而这些字眼仅为便利标记并且将与适当物理数量关联。 [0103] 除非另有具体陈述,这里使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等字眼的讨论可以指代机器(例如,计算机)的动作或者过程,该机器操控或者变换在一个或者多个存储器(例如,易失性存储器、非易失性存储器或者其组合)、寄存器或者接收、存储、发送或者显示信息的其它机器部件内表示为物理(例如,电子、磁或者光)数量的数据。 [0104] 如这里所用,对“一个实施例”或者“实施例”的任何引用意味着结合该实施例描述的特定单元、特征、结构或者特性包含于至少一个实施例中。短语“在一个实施例中”出现于说明书中的各处未必都指代相同实施例。 [0105] 可以使用表达“耦合”和“连接”及其派生表达来描述一些实施例。例如可以使用术语“耦合”以指示两个或者更多单元相互直接物理或者电接触来描述一些实施例。然而术语“耦合”也可以意味着两个或者更多单元未相互直接接触、但是仍然相互配合或者交互。实施例在本文中不受限制。 [0106] 如这里所用,术语“包括”、“具有”或者其任何其它变化旨在于覆盖非穷举包括。例如包括要素列表的过程、方法、物品或者装置未必仅限于那些要素、但是可以包括未明确列举的或者这样的过程、方法、物品或者装置固有的其它要素。另外除非相反明示,“或者”指代包括意义的或者而不是穷举意义的或者。例如以下各项中的任一项满足条件A或者B:A为真(或者存在)并且B为假(或者不存在)、A为假(或者不存在)并且B为真以及A和 B均为真(或者存在)。 [0107] 此外,对“一个/一种”的使用用来描述这里的实施例的单元和部件。这样做仅为了方便并且给出本发明的一般意义。应当解读这一描述包括一个或者至少一个,并且单数除非明显的是它另有含义则也包括复数。 [0108] 在阅读本公开内容时,本领域技术人员将理解用于如下系统和过程的更多附加备选结构和功能设计,该系统和过程用于通过这里公开的原理提供具有HTML下层的交互视 频广告。因此,尽管已经图示和描述具体实施例和应用,但是将理解公开的实施例不限于这里公开的精确构造和部件。可以在这里公开的方法和装置的布置、操作和细节上做出本领 域技术人员将清楚的各种修改、改变和变化而未脱离在所附权利要求中定义的精神实质和 范围。 |