CN110915168A - 预测性覆盖网络体系结构 - Google Patents
预测性覆盖网络体系结构 Download PDFInfo
- Publication number
- CN110915168A CN110915168A CN201880040442.5A CN201880040442A CN110915168A CN 110915168 A CN110915168 A CN 110915168A CN 201880040442 A CN201880040442 A CN 201880040442A CN 110915168 A CN110915168 A CN 110915168A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- overlay network
- topology
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 68
- 230000003044 adaptive effect Effects 0.000 claims description 61
- 238000009826 distribution Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 7
- 238000012549 training Methods 0.000 description 56
- 230000008569 process Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 34
- 239000000523 sample Substances 0.000 description 22
- 230000006870 function Effects 0.000 description 20
- 238000013461 design Methods 0.000 description 17
- 230000000694 effects Effects 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 15
- 238000011144 upstream manufacturing Methods 0.000 description 14
- 238000013459 approach Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 12
- 238000011156 evaluation Methods 0.000 description 12
- 238000005457 optimization Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 11
- 239000012634 fragment Substances 0.000 description 11
- 235000008694 Humulus lupulus Nutrition 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 9
- 230000001934 delay Effects 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 230000007704 transition Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000000844 transformation Methods 0.000 description 8
- 230000011664 signaling Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 210000002569 neuron Anatomy 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000005304 joining Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 2
- 101150014732 asnS gene Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008846 dynamic interplay Effects 0.000 description 1
- 230000003090 exacerbative effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
- H04L41/122—Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/147—Network analysis or design for predicting network behaviour
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0882—Utilisation of link capacity
-
- 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/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/127—Avoiding congestion; Recovering from congestion by using congestion prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1076—Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
- H04L41/5019—Ensuring fulfilment of SLA
- H04L41/5025—Ensuring fulfilment of SLA by proactively reacting to service quality change, e.g. by reconfiguration after service quality degradation or upgrade
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- 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/64—Routing or path finding of packets in data switching networks using an overlay routing layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的预测性覆盖网络体系结构通过建立和重新配置相关内容项分发在其上的覆盖网络拓扑,提高了在诸如因特网的底层网的节点之间分发数字内容的应用的性能。本发明不仅解决了频繁变化的网络拥塞,还解决了预期覆盖网络拓扑的节点和链路之间的相互依赖性。本发明提供了一种预测引擎,其监视指标并预测各个节点和链路随时间的中继能力(以及目的地节点的需求),以反映覆盖网络的节点之间的内容中继将受到(当前或未来)底层网拥塞影响的程度。本发明还提供了一种拓扑选择器,其解决节点和链路的相互依赖性,同时重新分配过剩能力以确定满足特定于应用的性能标准的覆盖网络拓扑。
Description
相关申请的交叉引用
本申请要求2017年4月21日提交的美国临时专利申请第62/488,502号和2018年4月10日提交的美国临时专利申请第62/655,703号的优先权,所述申请的公开内容通过引用并入本文,如同已在本文中进行完整阐述。
技术领域
本发明总体上涉及在诸如因特网的底层网上构建的覆盖网络的节点之间的数字内容分发,更具体地,涉及一种预测性覆盖网络体系结构,该体系结构通过在覆盖网络的节点和链路之间的性能相互依赖的背景下解决频繁变化的底层网拥塞来确定满足定义的特定于应用的性能标准的覆盖网络拓扑。
背景技术
A.网络拥塞问题
在其最基本的层面上,计算机网络由多个网络设备(节点)组成,这些网络设备(节点)直接或间接地互连,目的是交换数据或信息(本文中可互换使用)并共享由网络节点提供的资源。例如,两台计算机和一台连接到网络交换机的网络打印机组成一个简单的“局域网”(LAN),使两台计算机的用户能够共享网络打印机提供的打印资源。
在这个简单的网络中,虽然计算机和网络打印机都直接连接到网络交换机,但彼此间只是间接连接,其全部被认为是局域网上的节点。无论连接是通过有线还是无线媒介进行,情况都是如此。
即使在这个简单的局域网中,当一台或两台计算机在给定的时间段内向网络打印机发送足够多的信息时,也会发生网络拥塞,导致打印延迟和单个打印作业的潜在故障(例如,如果网络打印机的内存缓冲区过载,网络流量超过打印机的设计容量)。为了解决网络拥塞的问题,特别是当更多的计算机被添加到局域网时,可以引入额外的网络打印机和软件来在共享网络打印机之间“负载平衡”来自计算机的打印请求,即增加供应并分配需求。
显而易见的是,随着底层计算机网络规模和范围的扩大,提供共享资源的网络节点处的网络拥塞问题的复杂度呈指数增长。例如,除了支持网络打印,局域网上的设备还可以提供额外的网络功能,如文件传输、电子邮件、视频会议和其它网络应用和服务。网络节点对这种附加功能的共享使用不可避免地加剧了网络拥塞问题,因为使用这种共享功能的节点的“需求”通常会超过单个节点提供和分发这种功能的“供应量”或能力。
当底层网扩展到局域网之外,包括位于不同物理位置的更多节点(例如,由各种个人、商业、政府和其他实体运营)时,将部署网络路由器,以实现多个计算机网络的互连,从而形成“广域网”(WAN)。因特网是最受欢迎和使用最多的广域网(即网中网),它将全球数十亿个设备互连起来,并提供支持大量共享网络应用和服务(本文简称为“应用”)的底层基础设施。
由于其作为一个很少或没有集中控制的自组网的历史演变,因特网充斥着难以整体解决的网络拥塞问题。特别是,网络节点之间的信息路由是分散的。路由决策由“中间路由节点”(由多个不同实体提供的路由器、交换机、网桥、网关、防火墙等)以分发式方式做出,所述“中间路由节点”实现各种分布式路由算法。
结果,当每个路由器或其它中间路由节点确定将向其传输信息的“下一跳”节点时,没有中央实体确定信息从“源”节点到“目的地”节点的整个路径(即两个节点之间的单个“跳”的集合)。此外,目前,因特网上网络节点的整个拓扑结构,包括它们的互连,不可能由任何这样的实体来确定。
为了在因特网上分发信息(本文也称为“数字内容”),信息被分成更小的数据包,这些数据包根据“因特网协议”(IP)寻址方案被单独路由,该方案通过唯一的IP地址识别每个网络节点。当一个网络节点(节点A)向另一个网络节点(节点B)发送信息时,该信息通常被分成多个IP数据包,每个IP数据包用目的地节点(节点B)的目的地IP地址寻址,但是每个IP数据包可能穿过从节点A到节点B的另一不同路径(各个中间路由节点之间的跳),在此处这些数据包被重组。
因为这些中间路由节点是在任何给定时间被参与多种应用(例如,包括网页浏览、文件传输、电子邮件、电话、视频流等)的许多其它网络节点利用的共享资源,这些共享中间路由节点中的一个或多个处的网络拥塞非常常见。结果,源节点向目的地节点传输信息的能力受到这种网络拥塞的负面影响,因为信息在通过这些共享的中间路由节点分发时会遇到延迟。当信息通过这些共享的中间路由节点分发时,这种网络拥塞可能是由于设备或电缆故障、过多的带宽需求以及限制“性能”的各种其它因素造成的。
为了理解这些共享中间路由节点处网络拥塞的性质,将这些中间路由节点与负责“使用”数字内容(即,目的地节点)或生成数字内容或将数字内容插入到与应用相连的网络(即,源节点)的“用户”节点区分开来是有帮助的。虽然上面提到的网络打印机(目的地节点)是使用信息时会经历拥塞的共享网络资源,但是在共享中间路由节点处会出现更严重的网络拥塞形式,该共享中间路由节点是为了在全球因特网上分发信息而存在的。
应该注意,单个网络节点可以同时执行源节点和目的地节点的功能。这种节点包括计算机服务器以及客户端节点(例如,台式和膝上型计算机、智能手机、电视、流媒体盒、传感器和各种其它连接的设备),无论其互连的网络拓扑是何类型(例如,星形、环形、树形、网格以及实际上任何类型的图形或其它物理或逻辑拓扑)。
虽然所有网络设备都可以被视为底层网(如因特网)的网络节点,但参与特定应用的用户节点通常被称为“覆盖节点”,其形成构建在底层网之上的“覆盖网络”。换句话说,从应用的高级“逻辑”角度来看,只有覆盖节点被包括在这些覆盖节点之间的信息的“覆盖分布”中(即使信息最终穿过任何给定覆盖节点对之间的中间路由节点)。
例如,给定覆盖节点A、B和C,从节点A到节点C的路径可以表示为一组两个逻辑覆盖路径或“链路”-从节点A到节点B的第一链路和从节点B到节点C的第二链路。然而,从底层网的角度来看,一对覆盖节点之间的每个逻辑链路包括通过各个中间路由节点的一个或多个低级跳,其中的任何一个或多个都可能造成显著的延迟(例如,由于由其它应用服务提供商实现的不同覆盖网络之间共享此类中间路由节点导致的网络拥塞)。
因此,重要的是将覆盖网络的覆盖节点之间的覆盖路径或链路集与中间路由节点之间的低级路径或跳集区分开来,作为确定每个链路的结果,信息遍历这些中间路由节点。每个逻辑链路的创建者并不明确地确定信息将沿该链路穿过的低级路径。事实上,即使在链路被确定之后,此类低级路径也是事先未知的。
相反,这些低级路径是由中间路由节点自身内实现的分布式路由算法动态确定的。因此,一对用户节点之间的每条链路的确定会导致(对于每一个数据包)沿该链路的中间路由节点之间的多个不同的低级路径之一,其中每个低级路径都可能经历不同程度的网络拥塞。
还应当注意,信息的分发本质上涉及将该信息从一个节点“中继”到另一个节点,即从“父”节点到“子”节点,无论这些节点是覆盖节点还是中间路由节点(或者无线连接或通过物理电缆连接)。例如,上面提到的覆盖路径(从节点A到节点C)涉及通过节点B中继信息。类似地,节点A和节点B之间的单独链路导致底层网上的各个中间路由节点沿A→B链路中继信息。
实际上,为了中继信息,一个节点首先接收该信息,然后在将其传输到其它节点之前复制该信息,这一过程本来就需要一定的时间来完成,因此会造成一段时间的延迟。由于网络拥塞的变化,包括节点本身的内部拥塞,这一延迟时间可能会随着时间的推移而增加或减少。例如,当节点执行对其处理器、存储器和其它计算资源提出要求的多个内部任务(例如,玩游戏或重新计算电子表格)时,可能会造成延迟,这反过来影响其将信息中继到其它节点的能力。中间路由节点特别容易造成延迟,因其通常在多个应用之间共享。
在因特网上路由数据包的情况下,节点之间的物理距离(或地理邻近度)不会显著影响性能,因为数据包以接近光速的速度传输。但是,一条路径上的平均速度或总吞吐量会受到该路径上遇到的停靠点或路障数量的影响,或者在这种情况下,会受到将信息从源节点中继到目的地节点的中间路由节点上遇到的跳数的影响。因此,如果两个节点相距仅几跳,则可以说它们彼此“邻近”(“网络邻近”),而不管其地理邻近度如何。
虽然网络邻近度可能是决定两个用户节点之间链路吞吐量的一个因素,但由于多种原因,它不是决定性的。例如,源节点或目的地节点,或沿该链路的任何中间路由节点,可能会遇到拥塞或其它造成可变量的延迟的问题。同时参与多个独立应用或网络应用的用户节点可能会变得拥塞,影响其接收、使用和中继信息的性能。延迟也可能是由于沿该链路互连节点的物理电缆故障造成的。
因此,网络拥塞(特别是在一个或多个中间路由节点处)可能会显著影响任何一对源节点和目的地节点之间的总传输时间或吞吐量。例如,由于仅沿4跳路径遇到的中间路由节点处的网络拥塞造成的延迟,一对用户节点之间的链路上的6跳路径可能比4跳路径更快。
简而言之,网络拥塞有多种原因。如上所述,任何网络节点或一对互连节点(包括用户节点以及中间路由节点)的性能都可能受到网络拥塞的影响,无论是由于内部需求、节点内的操作延迟或故障、进出其它节点的流量导致的拥塞,还是其它原因。此外,由于底层网(如因特网)上的拥塞会随着网络流量的起伏而发生很大的波动,因此很难在任何给定时间隔离和测量这种拥塞,甚至在短期内也特别难以预测。
当一家公司(例如Netflix)占因特网高峰流量的三分之一以上时,其他通过因特网发布数字信息的公司如果希望实现其可靠一致的性能目标(无论其如何定义这些目标),就必须以某种方式解决愈发不稳定的因特网拥塞问题。同样,随着移动语音和数据使用的激增,开发高带宽移动应用的公司尤其关注受管制射频频谱的有限可用性。
预测网络拥塞的问题类似于预测人口日益增多的地区共享道路和高速公路交叉路口的交通拥堵问题。虽然现有的GPS导航和交通控制系统可测量这些路口当前的拥堵情况,并计算替代路径改变驾驶员的路线以绕过拥堵,但其预测任何特定驾驶员所需路径的能力受到交通拥堵的不稳定性的阻碍。
如下所述,从备选路径中进行选择的问题(以减少网络拥塞的负面影响)不一定需要对网络拥塞的诸多原因中的每一个原因的性质和位置有充分的了解。确定网络拥塞对备选路径或其组成部分(如单个节点或链路)性能的影响就足够了。
在研究不同的现有覆盖网络体系结构如何解决网络拥塞问题之前,了解因特网的底层体系结构如何在加剧该问题方面发挥作用是很有帮助的。
B.底层因特网体系结构
从早期的ARPANET(最早实现因特网协议组,或称TCP/IP的分组交换网),到后来的NSFNET,因特网“主干”被设计成冗余的“网中网”(即因特网),其通过分散控制和提供信息到达其期望目的地的替代通信路径来提供可靠性和“弹性”。然而,由于数据包通过共享网络资源(如中间路由节点)遵循不同的路径,应用保持其一致性能的能力仍然是一个巨大的难题。
分散路由控制所提供的弹性和对一致性能的需求之间的这种基本权衡是因特网网络拥塞问题的核心,因特网拓扑结构随着时间的推移而演变就是证明。这种拓扑结构可以最好地描述为包含多种不同类型网络的路由层次结构。
这种路由层次结构的核心是一组互连网络,每个网络通常被称为“自治系统(AS)”。如维基百科所述,每个AS由一组相连的IP路由前缀(IP地址范围)组成,“在一个或多个网络运营商的控制下,代表一个管理实体或域,其向因特网提供一个通用的、明确定义的路由策略。”每个AS都被分配一个“自治系统号(ASN)”,通过这个号码,该AS可以在因特网上被唯一地标识出来,以进行路由选择。
这些核心网络中的每一个在本文中可互换地称为AS或ASN。近年来,这些网络的数量急剧增加,从15年前的大约5000个增加到今天全世界有50,000多个。这些网络可以说共同构成了因特网的“主干”,因其存在主要是为了相互之间传播或中继大量信息,并最终将这些信息传播或中继到世界上几乎每个国家的各个目的地用户节点。
因为不同的公司拥有这些核心网络,所以它们经常相互签订“对等”协议,以促进因特网流量在这些网络和全球因特网上的路由。每个AS网络使用一组路由器(中间路由节点),其通常称为“对等点”,采用称为“边界网关协议(BGP)的路由协议(不同于“AS内”中间路由节点采用的各种路由协议)来控制对另一个AS网络的访问。任何给定的AS都可以使用多个对等点来连接到一个或多个其它AS网络。互连的AS网络可以在地理上相邻,也可以相隔很远,通过跨越很远距离(例如,跨越国家甚至海洋)的长光纤干线连接。
由于因特网上的大部分网络流量都通过最大的互连AS网络的交叉点或“交汇点”,这些AS网络的对等点会经历大量的网络拥塞,这与高峰时段主要高速公路交汇点的交通堵塞没有什么不同。然而,应该注意的是,在这些网络中的AS内中间路由节点处也出现了严重的网络拥塞。
除了提供执行AS间和AS内路由的中间路由节点,多个AS网络还包括一种特殊类型的AS内“网关”中间路由节点,其由被称为“因特网服务提供商”(ISP)的实体提供。这些因特网服务提供商网关中间路由节点为用户节点的各种网络提供了通往因特网的网关,这些用户节点分发和使用与因特网上可用的各种应用相关联的数字内容。当用户节点通过其因特网服务提供商提供的网关节点连接到因特网时,可以说该用户节点在包含其网关中间路由节点的AS网络中具有“网络位置”。
不包括这种网关节点的网络通常被称为“私有主干”网络,而不是服务于(用户节点)客户的“公共”网络。许多大型公共网络运营商(如主要因特网服务提供商)也拥有私有主干网络(连接到他们自己的公共网络和/或其他人拥有的网络),以便于其路由大量因特网流量。
但是,需要注意的是,由AS网络提供的中间路由节点(例如,AS内路由器,包括网关路由器和AS间BGP路由器)不是由用户源节点和目的地节点生成并分发在用户源节点和目的地节点之间的信息的原始源或最终目的地。相反,这些中间路由节点是“导管”,其被设计成在其间中继大量信息,最终目的是在位于因特网上的各个目的地用户节点之间分发由各个源用户节点提供的信息。这些区别在下图1A中示出。
图1A中的100a示出了由一组公共AS网络110a组成的因特网的架构视图。每个AS网络(110a-1至110a-8)包含两组中间路由节点,包括在AS网络110a之间互连和中继信息的AS间路由器(BGP路由器)115a,以及在每个AS网络110a内中继信息的AS内路由器125a(包括由因特网服务提供商提供的网关路由器)。
用户节点130a通过被称为网关路由器的AS内路由器125a的子集连接到因特网。用户节点130a代表参与(和/或提供其底层功能)在因特网上运行的各个共享应用的源节点和目的地节点。对于特定应用,此类用户节点130a可以被认为是构成与该特定应用相关联的覆盖网络的覆盖节点(也称为“应用节点”)。该覆盖网络运行在因特网的底层基础设施之上,即,各个AS网络110a内并经常跨越各个AS网络110a的两组中间路由节点115a和125a。
如上所述,用户节点130a可以与中间路由节点115a和125a区分开来,中间路由节点115a和125a既不使用也不提供内容作为任何这样的应用的一部分。并且,如下所述,一种类型的覆盖网络体系结构(“基于边缘的”)由节点组成,这些节点虽然在技术上不是因特网底层体系结构的一部分,但是执行的角色更类似于中间路由节点,而不是本文提到的用户节点。
C.覆盖网络体系结构
如上所述,覆盖网络建立在底层网,例如因特网之上。覆盖网络的一个目的是解决底层网拥塞。例如,沿两个覆盖节点之间的特定链路的中间路由节点处的网络拥塞可以通过重新配置覆盖网络以有效地绕过这种拥塞来解决(例如,通过替换该链路的父节点或子节点)。
由于底层网拥塞,多个应用会经历中断和延迟,这会对用户的“体验质量(QoE)”,即对应用性能质量的以用户为中心或应用层面的评价产生负面影响。例如,在广播视频应用中,诸如丢帧和重缓冲事件等因素可能对用户的QoE产生影响。此外,QoE的下降通常在很大程度上是由于因特网的底层共享基础设施无法提供一致的“服务质量”(QoS),即基于以网络为中心的指标(如吞吐量、延迟和抖动)的性能度量。
无论性能是在以网络为中心的抽象层面和/或反映应用用户体验的更高(特定于应用的)抽象层面进行评估,数据沿覆盖网络内任何特定路径穿过的节点和链路的各种属性都可以随着时间的推移进行测量。我们在本文中通常将这些属性称为指标。
在这种情况下,指标还包括由底层网上的其它应用和事件(例如,由于“超级碗”或其它流行的带宽密集型事件而增加的流量和延迟、网络特定区域的网络中断等)对这些节点和链路的影响的“外部”指示。这种信息可以例如通过随时间监视网络流量而直接获得,或者间接地从监视因特网流量并且偶尔构建区域或全球因特网“流量图”以揭示随时间的特定流量模式的第三方获得。
在任何给定的时间段内,对于结合应用分发的特定“内容项”,相关联的“覆盖网络拓扑”可以被定义为覆盖节点集以及将其互连的链路集,内容项(或其一部分)在该覆盖节点集上分发和使用。此外,覆盖网络拓扑(及其组成节点和链路)的性能可以表示为一组指标的特定于应用的函数。
在这段时间内,当前覆盖网络拓扑的性能可能满足也可能不满足定义的“性能标准”,这可以表示为一组特定于应用的性能约束。在不满足性能标准的情况下(例如,由于底层网拥塞),人们可以选择通过改变一个或多个其链路来重新配置覆盖网络拓扑,这反过来将导致内容项将穿过的低层路径的改变(可能绕过网络拥塞)。
虽然存在多种不同的方法来解决因特网上的网络拥塞问题,这些方法可以大致分为两种不同类型的覆盖网络体系结构。
1.基于边缘的覆盖网络
一种这样的体系结构包括本文所称的“基于边缘的”覆盖网络,其涉及使用不同于发起和使用应用内容的用户节点的附加专用硬件(称为边缘路由器或边缘服务器,本文中可互换使用)。换句话说,用户(源和目的地)节点不被认为是基于边缘的覆盖网络的一部分。相反,覆盖节点是边缘服务器本身,作为通常称为“内容传递网络(CDN)”的组件。
应用可以利用CDN的边缘服务器沿任何给定链路(从源用户节点到目的地用户节点)提供替代的“CDN路径”,以解决该链路上低级中间路由节点的网络拥塞。然而,以下将显而易见的是,这些替代CDN路径仅针对通过CDN的链路解决网络拥塞。
假设应用的用户节点可能广泛分布在因特网上,并且网络拥塞实际上可能发生在任何地方,则CDN的边缘服务器通常战略性地位于整个因特网上的AS网络的“边缘”,从而有助于到用户节点的替代CDN路径“靠近”(网络邻近)由CDN提供的一个或多个边缘服务器。此外,CDN经常在这些边缘服务器上“缓存”内容,以减少沿重叠CDN路径所需的链路数量。
例如,图1B的图100b示出了基于边缘的覆盖网络的体系结构视图,示出了该覆盖网络运行在因特网的底层体系结构之上,包括单独的AS网络110b-1、110b-2和110b-3。为简单起见,图100b中未示出每个AS网络110b内的AS间和AS内中间路由器节点。
节点120b(在AS网络110b-1中)代表一个“源”节点,内容项从该“源”节点产生,并通过因特网(经由CDN基础设施)分发到各个用户节点130b。在利用(通常共享的)CDN基础设施的特定应用的情况下,应用依赖于CDN内的功能来确定内容项将从源节点120b到每个用户节点130b的CDN路径。
应当注意,在从源节点120b(经由CDN基础设施)分发到各个用户节点130b之前,内容项可以被分成“片段”(即,组成部分)。在某些情况下,使用多个源节点来分发不同的内容项或单个内容项的片段。如上所述,甚至内容项的单个片段也可以进一步被划分为通过各个中间路由节点沿不同的低级路径路由的IP数据包。
在任何情况下,因为源节点120b直接将内容分发到每个不同的用户节点130b是低效的,所以基于边缘的覆盖网络(即,CDN边缘服务器覆盖节点125b)的CDN基础设施内的功能被用来经由那些覆盖节点125b将内容从源节点120b中继到用户节点130b。换句话说,对于每个目的地用户节点130b(例如目的地用户节点130b-DEST),CDN确定到该目的地用户节点130b-DEST的CDN路径,该路径由成对的单个CDN边缘服务器覆盖节点125b(标记为A到I)之间的一组父子“CDN链路”组成。
例如,图100b中的虚线箭头示出了从源节点120b到一个特定目的地用户节点130b,即节点130b-DEST的当前CDN路径。该CDN路径包括以下5个父子CDN链路(包括源节点120b和目的地用户节点130b):120b→A、A→B、B→F、F→H,最后是H→130b-DEST。
如果CDN检测到沿当前CDN路径的拥塞(例如,由于沿B→F CDN链路的拥塞,包括沿该链路的低级中间路由节点),那么CDN可以生成替代CDN路径来绕过检测到的拥塞。
例如,替代CDN路径(用实线箭头表示)由以下8个父子CDN链路组成(也包括源节点120b和目的地用户节点130b):120b→A、A→B、B→C、C→D、D→E、E→G、G→H,最后是H→130b-DEST。与当前的5链路CDN路径相比,所述替代8链路CDN路径可能产生从源节点120b到目的地节点130b-DEST的更快吞吐量(例如,因其绕过了有问题的B→F CDN链路)。
虽然CDN可能能够检测各种替代CDN路径的总吞吐量,但应该注意的是,CDN可能无法检测导致网络拥塞的确切原因。例如,当前CDN路径中的网络拥塞可能是由单个B或F覆盖节点125b本身引起的,或者是由沿有问题的B→F CDN链路的特定中间路由节点(由沿B→F链路的低级分布式路由算法选择)引起的。
无论如何,替代CDN路径可以实现更大的吞吐量,因其不包括(因此绕过)有问题的B→F CDN链路,即使CDN功能“不知道”这样的事实(更不用说原因),即沿B→F链路的特定覆盖节点125b或中间路由节点是造成网络拥塞的原因。
在上面的示例中,替代CDN路径的总吞吐量是这些CDN路径性能的一个度量。然而,在比较多个CDN路径之间的性能时,它也作为网络拥塞对这种性能影响的间接指示。在本示例中,总吞吐量可能足以使CDN选择替代8链路CDN路径,因其比当前的5链路CDN路径产生更好的性能。在其它情况下,网络拥塞的性能影响的附加间接指示(即,其它指标)可以被用来促进替代CDN路径的这种比较。
此外,通过在各个单独的边缘服务器上缓存内容,CDN可以通过利用该缓存的内容(例如,通过利用内容被缓存在CDN边缘服务器覆盖节点125b中的一个之上这个事实,从而不需要一组源自源节点120b的CDN链路),来生成通往特定目的地用户节点130b的具有较少总CDN链路的多个重叠CDN路径(来自源用户节点的)。
简而言之,基于边缘的覆盖网络包括一组覆盖节点(边缘服务器125b),该组覆盖节点(边缘服务器125b)使得CDN路由功能能够通过定义其覆盖节点对125b之间的替代CDN链路组来定义基于边缘的替代CDN路径(到目的地用户节点130b)(例如由图100b中相应的虚线和实线箭头组示出的替代CDN路径)。然而,应用对基于边缘的共享覆盖网络的依赖导致了多种缺点。
例如,购买或租赁额外物理基础设施(CDN边缘服务器覆盖节点125b)的成本可能过高。边缘服务器通常是昂贵的计算机服务器,其需要在各个AS网络110b的“边缘”的多个战略位置放置高带宽连接(例如,在整个因特网上容纳大量用户节点130b)。
为了使基于边缘的覆盖网络更具成本效益,边缘服务器通常由多个实体提供的各种应用共享。结果,这些应用必须共享边缘服务器125b(彼此共享,甚至在单个应用的用户节点130b之间共享),以适应到各个目的地用户节点130b的重叠CDN路径。因此,基于边缘的覆盖网络实际上可能会导致网络拥塞,并加剧其原本要解决的问题。
此外,因为基于边缘的覆盖网络不使用用户节点130b作为覆盖节点,所以它们的替代CDN路径依赖于不使用内容的CDN边缘服务器覆盖节点125b(目的地用户节点130b也是如此)。例如,目的地为任何用户节点130b的内容必须通过CDN(及其边缘服务器覆盖节点125b),以利用CDN的功能。
换句话说,CDN提供的附加基础设施(边缘服务器)本质上是为了“路由”(而非使用)内容,更类似于作为因特网底层体系结构一部分的低级中间路由节点。结果,基于边缘的覆盖网络需要额外的计算资源来在用户节点130b之间分发内容,这本身可能造成延迟和其它低效。
本质上,基于边缘的覆盖网络提供了比“基于对等”的覆盖网络(下面讨论)更不直接的解决网络拥塞的方法,并且由于向因特网生态系统添加不直接参与内容使用的共享资源,实际上导致了网络拥塞。
2.基于对等的覆盖网络
一种替代体系结构,包括本文所称的“基于对等”的覆盖网络,采用与基于边缘的体系结构明显不同的方法。基于对等的方法利用现有目的地用户节点(接收和使用内容)的资源在其间中继内容,而不是依赖附加的基础设施(边缘服务器)来将内容分发到目的地用户节点。换句话说,在基于对等的覆盖网络中,目的地用户节点是覆盖节点。
因此,“对等”(P2P)方法利用所选目的地用户节点的资源(现有“能力”),不仅接收和使用内容,而且将该内容中继到其它目的地用户节点。我们在此将这些类型的覆盖节点称为“对等节点”(属于基于对等的覆盖网络),因为它们可以将内容中继到其它这样的对等节点。如上所述,这种节点有时也被称为“应用节点”,因为它们使用与特定应用(或单个内容项)相关的内容。
基于对等的覆盖网络可以在多种不同类型的物理和逻辑网络拓扑中实现(包括星形、环形、树形、网格和几乎任何类型的图形)。现有的基于对等的覆盖网络已经被用于多种不同类型的应用,例如文件传输、“视频点播”(VOD)、音频和视频流、直播和各种其它内容分发应用。
例如,图1C中的100c示出了树状拓扑,其中来自源节点120c的内容从一个对等节点(用户节点130c)定向分发到另一个对等节点,使得所有用户节点130c(位于整个因特网,包括单独示为110c-1至110c-3的AS网络110c)最终接收和使用该内容。与图1B所示的基于边缘的覆盖网络不同,图100c中的覆盖节点是用户节点130c本身,即接收和使用内容的节点。
此外,这些用户节点130c中的多个还将内容中继到其它用户节点130c(与仅接收和使用内容的“叶节点”不同)。图1C中的各个父子链路是用户节点对130c之间的链路,与图1B中的链路不同,图1B中的链路是边缘服务器对之间的CDN链路或者不是应用本身一部分的其它附加基础设施。通过利用用户节点130c自身(基于对等的覆盖节点)的资源来中继内容,基于对等的网络便于在使用该内容的目的地用户节点130c之间分发该内容,而不需要任何额外的外部带宽或其它资源,例如由基于边缘的覆盖网络(CDN)的共享边缘服务器提供的那些资源。
例如,从源节点120c到用户节点130c-DEST的基于对等的覆盖路径(由虚线箭头示出)包括以下三个父子链路:120c→A、A→B,最后是B→130c-DEST。该相同的基于对等的覆盖路径的子集(例如,来自A→B的单个链路)也可以被用来分发供其它用户节点130c(例如,节点B)使用的内容,而不需要来自源节点120c的替代覆盖路径,或者用户节点130c自身之外的任何附加基础设施。
剩余的用户节点130c由其它基于对等的覆盖路径及其子集链路(用实线箭头示出)服务,其中“对等”中继被用来利用那些单独对等用户节点130c的其它未使用的资源,例如,临时缓存内容并将该内容中继到其它对等节点,作为基于对等的替代覆盖路径的一部分。结果,基于对等的覆盖网络比基于边缘的覆盖网络更有弹性和可伸缩性,因为它们的分布式特性有助于从各个拥塞点(包括设备或电缆故障)恢复,例如,通过经由其它对等节点分发内容以绕过这种拥塞。
基于对等的网络的可靠性和性能实际上随着更多节点的添加和更多更好的替代覆盖路径的获得而提高,与基于边缘的网络形成对比,在基于边缘的网络中,额外的物理基础设施(边缘服务器)必须是“负载平衡的”,以适应不断变化的带宽需求(例如,随着用户节点的添加和移除,以及不同类型的内容项部署在各种应用中)。
虽然基于对等的覆盖网络避免了对基于边缘的体系结构来说必不可少的昂贵的附加基础设施的需求,但是现有的基于对等的解决方案还没有有效地绕过底层网络拥塞。当大量对等节点试图在同一时间段内访问受欢迎的内容项(或者甚至各种不同的内容项)时,这个问题尤其普遍。
现有的基于对等的覆盖网络通常仅被重新配置到处理节点的添加或移除所必需的程度,即,适应对等节点的“当前”集合。创建新链路以向系统添加新节点,并解决节点离开系统导致的链路“断开”。如果离开的节点是叶节点,通向该节点的链路将被删除。但是如果该离开节点是先前将内容中继到子节点的父节点,则该子节点变成需要新的父节点的“孤”子节点,这就需要创建新的链路。
然而,期望的是,不仅在添加或移除对等节点时,而且在网络拥塞对基于对等的覆盖网络拓扑(包括其单个节点和链路)的性能产生负面影响时(理想情况下在此之前),都要重新配置拓扑(无论是通过进行部分修改还是有效地确定新拓扑)。换句话说,为了限制网络拥塞对性能的影响,需要重新配置基于对等的覆盖网络拓扑,以有效地绕过检测到的(以及预期的)网络拥塞,同时满足应用的性能标准。
D.对预测性覆盖网络体系结构的需求
但是确定哪些用户节点应该将内容中继到哪些其它用户节点(以满足定义的特定于应用性能标准)的任务是一项艰巨的任务,尤其是当置换的数量随着添加到覆盖网络的用户节点的数量呈指数级增长时。要理解这项任务的难度,重要的是要认识到,如上所述,随着时间的推移收集的指标仅作为网络拥塞对覆盖网络拓扑性能影响的间接指示。
换句话说,指标不是网络拥塞的直接度量。相反,它们反映网络拥塞对网络流量的影响。虽然网络拥塞会影响覆盖网络拓扑(及其组成节点和链路)的性能,但正是网络拥塞对该性能的影响决定了该覆盖网络拓扑是否满足定义的性能标准。历史指标提供了可以测量和预测影响的数据。现有的覆盖网络体系结构还没有以将指标与替代覆盖网络拓扑的性能相关联的方式来解决网络拥塞。
应该注意的是,网络拥塞只是评估覆盖网络拓扑潜在性能的一个障碍。另一个(经常被忽视的)障碍是覆盖网络拓扑的节点和链路之间“相互依赖性”的存在。这些相互依赖加剧了这个问题,即使不考虑频繁变化的网络拥塞的影响。
即使假设静态网络拥塞,任何特定覆盖网络拓扑的单个节点和链路的预期性能也取决于“上游”节点和链路的性能。具体而言,从父节点到子节点的链路性能取决于到该父节点的链路的上游性能。例如,如果节点以特定速率(例如,500kbps)从其父节点接收内容,则它不能以更高的速率(例如,1mbps)将该内容中继到其子节点。然而,如下面更详细讨论的,它可能具有同时复制和中继内容到多个子节点的“能力”(中继到每个所述子节点的速率高达500kbps)。
当前基于对等的方法(以及基于边缘的方法)还没有解决内容项在其上分发和使用的覆盖网络拓扑的单个用户节点和链路之间的这些相互依赖性。它们也未能以促进覆盖网络拓扑的重新配置的方式有效地解决底层网拥塞的问题,即,确定替代的覆盖网络拓扑是否满足应用对内容项的分发和使用施加的性能标准约束。
现有的基于对等的覆盖网络(如GPS导航系统)倾向于依赖地理上的邻近性来选择对等中继节点,并且响应于检测到的网络拥塞,“仅在事后”重新路由流量。基于边缘的覆盖网络依赖于昂贵的外部物理基础设施(类似于构建高速公路网络以提供更高速的替代路线),这也不能以满足在底层网(例如因特网)的共享基础设施之上运行的各种应用所定义的性能标准的方式充分解决频繁变化的网络拥塞问题。
因此,在根据应用的性能标准评估替代覆盖网络拓扑时,需要考虑这种依赖性,无论是反应性评估还是前瞻性评估网络拥塞。
简而言之,所需要的是一种预测性覆盖网络体系结构,其以反映单个节点和链路的预期性能依赖于上游节点和链路的事实的方式来解决频繁变化的网络拥塞,并且确定将满足定义的特定于应用的性能标准的覆盖网络拓扑——不仅在添加和移除节点时,而且在网络拥塞对目的地用户节点所经历的性能产生负面影响时(理想地在此之前)。
发明内容
如上所述,众所周知,整个因特网的底层网拥塞会影响通过覆盖网络分发数字内容的应用的性能。本发明提供了一种预测性覆盖网络体系结构,其通过解决以下问题克服了现有方法的缺陷:在任何给定时间段内,覆盖网络拓扑(及其各个节点和链路)的性能不仅取决于底层网拥塞,还取决于在该时间段内采用的特定覆盖网络拓扑的配置(这在该覆盖网络拓扑的节点和链路之间产生上游和下游依赖性)。本发明随着时间的推移重新配置当前覆盖网络拓扑,不仅为了适应已经添加到网络和从网络移除的节点,而且为了在满足定义的性能标准的同时提高性能。
在一个实施例中,本发明部分通过测量网络拥塞对覆盖网络拓扑的单个节点和链路的性能的影响来解决频繁变化的网络拥塞。它使用这种测量来预测预期覆盖网络拓扑的指定节点和链路中继内容的能力。特别地,预期父节点的“节点中继能力”反映了节点同时满足来自一个或多个子节点的需求的能力,而指定链路的“链路中继能力”反映了链路满足来自该链路的指定子节点的需求的能力。
例如,其中父节点A将内容中继到子节点B的链路(A→B)的性能可能会受到底层网拥塞的影响,例如由沿从父节点A到子节点B的链路的中间路由节点引起的拥塞。假设子节点B的需求为5mbps,如果父节点A满足该需求(即以5mbps的速率向子节点B传送内容),则可以说A→B链路表现出了5mbps的链路中继性能(链路中继能力的指示)。或者,如果父节点A不能满足该需求(例如,以3mbps的速率向子节点B传送内容),则可以说A→B链路表现出3mbps的链路中继性能。
应该注意的是,在后一种情况下,父节点A不能满足特定子节点(子节点B)的需求可能是由各种因素单独或组合造成的。例如,这种故障可能是由下游依赖性造成的,例如沿A→B链路的网络拥塞。它也可能是由父节点A自身内的因素(例如,节点A执行其它活动,例如玩带宽密集型游戏的性能)造成的。此外,这种故障可能是由上游依赖性(例如,节点A的父节点以3mbps的速率向节点A传送内容)导致的。
为了便于评估预期覆盖网络拓扑的节点和链路之间的这种相互依赖性,本发明还考虑了预期父节点的节点中继能力。例如,在一个实施例中,如果父节点A当前同时将内容中继到三个子节点(沿A→B链路、A→C链路和A→D链路),那么父节点A可以说表现出等于这三条链路的链路中继性能之和的节点中继性能。如下文更详细讨论的,父节点A的实际链路中继能力甚至可能更高。
如上所述,因为节点可以同时复制和中继内容到多个子节点,所以以5mbps的速率接收内容的节点可以具有同时中继内容到多个子节点(以每个5mbps的速率)的能力。然而,各种因素可能会限制节点的节点中继能力。例如,一个节点的上行链路速率可以是10mbps,防止该节点同时向两个以上的子节点中继内容(以每个5mbps的速率)。
然而,应该注意的是,具有10mbps节点中继能力的节点可能不能同时(以每个5mbps的速率)将内容中继到任何两个子节点。例如,如果节点A具有10mbps的节点中继能力,但是A→B链路具有3mbps的链路中继能力,那么节点A仍然只能以3mbps的速率将内容中继到子节点B(例如,由于沿A→B链路的下游依赖性)。
如下文更详细讨论的,本发明依赖于预期覆盖网络拓扑的节点和链路的节点中继能力和链路中继能力来识别满足定义的性能标准(例如来自每个目的地节点的5mbps需求)的覆盖网络拓扑。这样,本发明解决了频繁变化的网络拥塞以及任何预期覆盖网络拓扑的节点和链路之间的相互依赖性。
在这点上,本发明利用实时指标的监视和处理,该实时指标反映内容项沿其传播的覆盖网络拓扑的节点和链路的性能。如上所述,在任何给定的时间段内,当前实时指标作为网络拥塞对当前覆盖网络拓扑的单个节点和链路的性能的影响的间接指示。所述指标也间接反映由当前覆盖网络拓扑的配置产生的上游和下游依赖性的结果(以及节点和链路本身固有的属性)。
在一个实施例中,“指标处理器”处理与覆盖网络拓扑的预期节点和链路相关联的原始指标,并将所述处理后的指标提供给“预测引擎”(连同反映观察和收集所述原始指标的时间段的指标“时间戳”)。预测引擎包括预测特定预期父节点的节点中继能力的“节点中继分类器”和预测预期链路的链路中继能力的“链路中继分类器”。
指标处理器生成一个或多个“节点指标”作为节点中继分类器的输入,这些“节点指标”表示预期父节点的节点中继属性,即节点向一个或多个子节点中继内容的能力的指示。在一个实施例中,节点指标包括CPU负载、存储器使用、操作系统、连接类型、上行链路和下行链路速度、IP地址、ISP、ASN和预期父节点的各种其它节点中继属性。在其它实施例中,节点指标包括各种附加的QoS和QoE指标(例如,丢帧和重缓冲事件等),其程度为反映(甚至间接地)预期父节点的节点中继性能。对于本领域技术人员来说显而易见的是,在不脱离本发明精神的情况下,可以使用更少或更多的指标。
结合节点中继分类器的训练,指标处理器还生成关于预期父节点的相应输出(例如,在每个采样时间段期间),该输出反映该父节点的当前观察到的节点中继性能。例如,如果父节点(节点A)在特定时间段内同时向子节点B传送5mbps和向子节点C传送3mbps,那么关于父节点A的“训练样本”将包括(作为节点中继分类器的输入)与节点A相关联的节点指标(连同反映获得这些节点指标的时间段的时间戳)和(作为节点中继分类器的输出)节点A的观察到的节点中继性能的总和(例如,8mbps)。在其它实施例中,为每组输入(节点指标)提供多个输出,并且使用预定义函数(在一个实施例中)来计算表示父节点当前节点中继性能的单个值。在另一个实施例中(下面将更详细地讨论),只有观察到的训练样本的特定子集被提供给节点中继分类器。
如下所述,通过将每个选定训练样本的观察到的输出与由节点中继分类器生成的预测节点中继能力进行比较来训练节点中继分类器。随着时间的推移,这些预测值和观察值之间的“误差”被用于调整加权参数,以利于更精确的预测,因为节点中继分类器学习父节点的节点指标与其相对于其子节点的节点中继性能之间的关系。以这种方式,节点中继分类器可以预测指定的预期父节点的节点中继能力,即使该父节点当前不具有或者可能从未具有任何子节点。
类似地,指标处理器生成一个或多个“链路指标”作为链路中继分类器的输入,所述一个或多个“链路指标”表示预期链路的链路中继属性,即链路向该链路的子节点传送内容的能力的指示。在一个实施例中,链路指标包括沿链路的往返“ping”时间、各种QoE和QoS指标(延迟、抖动等),以及链路的其它链路中继属性。在其它实施例中,链路指标包括关于链路的父节点和子节点的相对节点指标,例如它们的相对连接类型、上行链路和下行链路速度、IP地址、ISP和ASN。
结合链路中继分类器的训练,指标处理器还生成关于给定链路的相应输出(例如,在每个采样时间段期间),该输出反映该链路的当前观察到的链路中继性能。在上面提到的示例中,其中父节点(节点A)同时向子节点B传送5mbps,向子节点C传送3mbps,那么与A→C链路相关联的训练样本输出将是3mbps,反映该链路的当前链路中继性能。请注意,相应的链路指标输入集包括与该A→C链路相关联的链路指标。在该示例中,附加训练样本将包括与A→B链路相关联的链路指标输入,以及与该A→B链路的当前链路中继性能相关联的相应输出(在该示例中为5mbps)。在一个实施例中(下面将更详细地讨论),只有观察到的训练样本的特定子集被提供给链路中继分类器。
预测引擎的链路中继分类器以类似于节点中继分类器的方式被训练,即将链路中继分类器生成的预测链路中继能力与每个训练样本的观察到的输出进行比较(两者之间的误差用于随着时间调整加权参数,以利于更精确的预测)。这里,链路中继分类器也可以预测指定预期链路的链路中继能力,即使该链路的指定父节点当前没有向该链路的指定子节点中继内容(或者从未中继内容)。
通过学习节点和链路指标之间的关系以及这些节点和链路随时间的“中继性能”,预测引擎以越来越高的准确度预测预期父节点向一个或多个子节点中继内容的能力,以及预期链路向该链路的子节点传送内容的能力,无论是在当前还是未来网络拥塞的情况下。
然而,如上所述,单个节点和链路的实际性能取决于其在特定覆盖网络拓扑中的“位置”。本发明通过提供“拓扑选择器”来考虑替代覆盖网络拓扑的节点和链路之间的这些性能相关性,该“拓扑选择器”将指定节点和链路的“局部”节点中继能力和链路中继能力作为输入,并生成满足定义的性能标准的覆盖网络拓扑作为输出。
在一个实施例中,拓扑选择器从已知因素中提取由目的地节点施加的需求,例如定义的性能标准和当前覆盖网络(在节点加入和离开网络时从监视节点获得)。在其它实施例中,这种需求由预测引擎预测。
在获得了这些预期节点和链路的能力和需求值之后,拓扑选择器计算现有和预期父节点的“过剩能力”(即过剩中继能力),并在覆盖网络拓扑中在“全局”基础上重新分配这种过剩能力以满足未满足的需求,从而生成满足定义的性能标准的覆盖网络拓扑。如下文更详细讨论的,拓扑选择器(在一个实施例中)基于预期覆盖网络拓扑将过剩能力有效地重新分配给需要新的或更好的父节点的的子节点的程度来评估预期覆盖网络拓扑,即,转移网络流量以满足性能标准。
在一个实施例中,拓扑选择器执行各种转换,以实现网络流量的转移以及由此导致的过剩能力的重新分配。例如,高能力节点转移到覆盖网络拓扑的高层,而低能力节点转移到低层。能力过剩的高能力节点会添加子节点,在某些情况下会替换不能满足子节点需求的父节点。如下文更详细讨论的,各种转换被单独地、组合地和以多种不同的顺序应用,以实现相同的目标,即识别满足性能标准的覆盖网络拓扑。
在一个实施例中,拓扑选择器选择满足性能标准的任何覆盖网络拓扑。在其它实施例中,拓扑选择器确定“最佳”拓扑,即“最”满足性能标准的拓扑(或者在另一实施例中,“最接近”满足性能标准的拓扑)。如下文更详细讨论的,在不脱离本发明精神的情况下,可以采用各种线性、非线性和多维优化技术。
在其它实施例中,拓扑选择器将评估预期覆盖网络拓扑和/或实现特定选择的覆盖网络拓扑的某些非预期的“系统级”后果考虑在内。换句话说,尽管拓扑选择器可以识别期望的覆盖网络拓扑,但是其在执行该任务中使用各种资源本身可能会产生负面后果。
例如,在一个实施例中,从当前覆盖网络拓扑同时改变多个链路的负担是影响覆盖网络拓扑选择的一个因素。在其它实施例中,当前覆盖网络拓扑被重新配置的频率是另一个因素(因为实现重新配置的时间本身可能影响网络性能)。在其它实施例中,尽管拓扑选择器识别出“足够”或“更好”的拓扑,但是由于时间、性能、存储器和其它资源的各种权衡,它不会替换当前的覆盖网络拓扑。对于本领域技术人员来说显而易见的是,在不脱离本发明精神的情况下,可以采用各种其它权衡、优化和其它技术。
此外,拓扑选择器执行其对预期覆盖网络拓扑的评估的频率也可以变化,这取决于特定的应用(或者甚至内容项或者内容项的类型)。在一些实施例中,导致拓扑选择器评估预期覆盖网络拓扑的“触发”是基于时间的,并且与收集指标的时间段相关联。例如,在每个一秒钟的时间段内,指标被收集,拓扑选择器确定哪个覆盖网络拓扑(如果有的话)将替换当前的覆盖网络拓扑。在其它实施例中,该时间段不如收集指标的时间段频繁。
在其它实施例中,触发是基于事件的。例如,拓扑选择器仅在满足某些特定的性能阈值时,例如当前覆盖网络拓扑不再满足的性能标准的点时评估覆盖网络拓扑。
如上所述,预测引擎生成的节点中继能力和链路中继能力预测反映“当前”或“未来”网络拥塞的性能影响。在一个实施例中,预测引擎预测未来多个时间段的节点中继能力和链路中继能力。例如,如果每秒收集指标,节点中继能力和链路中继能力预计在未来十秒内。在其它实施例中,这种预测基于“当前”网络拥塞,并且节点中继能力和链路中继能力被预测为未来“零”秒。
如果拓扑选择器选择用另一个覆盖网络拓扑替换当前覆盖网络拓扑,则当前内容项的后续片段将根据新选择的覆盖网络拓扑进行分发,直到“新的当前”覆盖网络拓扑被替换。
下面将更详细地解释本发明的各种替代实施例,包括由设计和工程实现权衡产生的实施例,例如,将更好或最佳的解决方案与诸如成本、性能、时间和其它资源的因素相平衡。在一个实施例中,拓扑选择器识别需要新的父节点的各个子目的地节点(基于阈值性能“下限”),然后为这些节点选择新的父节点,有效地重新配置当前覆盖网络拓扑的一部分,而不是确定“完整的”覆盖网络拓扑替换物。
总之,本发明提供:
1.一种用于确定满足关于内容项的一个或多个片段沿覆盖网络的分发的一组一个或多个特定于应用的性能标准的覆盖网络拓扑的方法,所述覆盖网络拓扑包括所述覆盖网络的多个节点和多个链路,每个链路与所述多个节点中的一对逻辑互连,以促进所述一个或多个片段沿所述链路在所述一对节点之间的分发,所述方法包括:
(a)在连续的时间段内周期性地测量和处理多个指标,对于每个时间段,每个指标反映与在所述时间段内使用的当前覆盖网络拓扑的节点或链路相关联的属性,其中所述处理后的指标反映所述当前覆盖网络拓扑的节点中继属性和链路中继属性;
(b)基于与预期覆盖网络拓扑的节点和链路相关联的所述处理后的指标,预测所述节点和链路的节点中继能力和链路中继能力;以及
(c)至少部分基于所述节点和链路的所述预测节点中继能力和链路中继能力,确定所述预期覆盖网络拓扑是否满足所述性能标准。
2.一种用于重新配置内容项分发在其上的覆盖网络拓扑的方法,其中每个覆盖网络拓扑包括多个网络节点和与所述多个网络节点互连的多个链路;所述方法包括以下步骤:
(a)生成关于当前覆盖网络拓扑的多个指标;
(b)基于所述多个指标,生成关于一组指定节点和链路的多个预测;以及
(c)基于所述多个预测识别预期覆盖网络拓扑。
3.根据权利要求2所述的方法,其中所述预期覆盖网络拓扑满足代表对所述指定节点和链路的性能的一个或多个约束的性能标准。
4.根据权利要求2所述的方法,其中每个覆盖网络拓扑是基于对等的覆盖网络拓扑。
5.根据权利要求2所述的方法,进一步包括生成观看者指示预测的步骤,所述观看者指示预测指示每个网络节点是否将是所述预期覆盖网络拓扑的一部分。
6.根据权利要求5所述的方法,进一步包括生成会话持续时间预测的步骤,所述会话持续时间预测指示将成为所述预期覆盖网络拓扑的一部分的那些网络节点将保持为所述预期覆盖网络拓扑的一部分的持续时间。
7.根据权利要求2所述的方法,其中所述多个预测包括对所述指定节点的所述节点中继能力和所述指定链路的所述链路中继能力的预测。
8.根据权利要求2所述的方法,其中所述多个指标包括节点指标、链路指标和时间戳,在所述时间戳期间获得所述节点指标和链路指标。
9.一种用于重新配置内容项分发在其上的覆盖网络拓扑的自适应拓扑服务器,其中每个覆盖网络拓扑包括多个网络节点和与所述多个网络节点互连的多个链路;所述自适应拓扑服务器包括:
(a)指标处理器,其生成关于当前覆盖网络拓扑的多个指标;
(b)预测引擎,其基于所述多个指标生成关于一组指定节点和链路的多个预测;以及
(c)拓扑选择器,其从所述预测引擎获得关于所述一组指定节点和链路的多个预测,并基于所述多个预测识别预期覆盖网络拓扑。
10.根据权利要求9所述的自适应拓扑服务器,其中所述拓扑选择器识别满足代表一个或多个性能约束的性能标准的预期覆盖网络拓扑。
11.根据权利要求9所述的自适应拓扑服务器,其中每个覆盖网络拓扑是基于对等的覆盖网络拓扑。
12.根据权利要求9所述的自适应拓扑服务器,其中所述预测引擎生成观看者指示预测,所述观看者指示预测指示每个网络节点是否将是所述预期覆盖网络拓扑的一部分。
13.根据权利要求12所述的自适应拓扑服务器,其中所述预测引擎生成会话持续时间预测,所述会话持续时间预测指示将成为所述预期覆盖网络拓扑的一部分的那些网络节点将保持为所述预期覆盖网络拓扑的一部分的持续时间。
14.根据权利要求9所述的自适应拓扑服务器,其中所述预测引擎生成所述指定节点的所述节点中继能力和所述指定链路的所述链路中继能力。
15.根据权利要求9所述的自适应拓扑服务器,其中由所述指标处理器生成的所述多个指标包括节点指标、链路指标和时间戳,在所述时间戳期间获得所述节点指标和链路指标。
16.一种用于沿各自的覆盖网络拓扑同时分发多个内容项的方法,其中每个覆盖网络拓扑包括多个网络节点和与所述多个网络节点互连的多个链路;所述方法包括以下步骤:
(a)沿第一覆盖网络拓扑分发第一内容项;
(b)沿第二覆盖网络拓扑分发第二内容项,其中所述第一内容项和第二内容项沿其各自的覆盖网络拓扑同时分发;
(c)沿所述第一覆盖网络拓扑向网络节点分发所述第一内容项,其中所述网络节点包括在所述第一覆盖网络拓扑和所述第二覆盖网络拓扑中,并且其中所述网络节点使用所述第一内容项;以及
(d)沿所述第二覆盖网络拓扑将所述第二内容项分发到所述网络节点,其中所述网络节点将所述第二内容项中继到所述第二覆盖网络拓扑的另一个网络节点。
附图说明
图1A是示出本发明底层网(即因特网)的网络体系结构的一个实施例的图,其包括参与特定网络应用的一组用户节点;
图1B是示出基于边缘的覆盖网络(内容传送网络或“CDN”)的网络体系结构的一个实施例的图,该覆盖网络建立在图1A的底层网之上,其中内容沿基于边缘的覆盖网络的覆盖节点(边缘服务器)之间的CDN路径被分发到目的地用户节点;
图1C是示出基于对等的覆盖网络的网络体系结构的一个实施例的图,该覆盖网络建立在图1A的底层网之上,其中内容沿基于对等的覆盖网络的覆盖节点(“对等”目的地用户节点)之间的覆盖路径被分发到目的地用户节点;
图2A是示出本发明的基于对等的覆盖网络的覆盖网络拓扑的一个实施例的图,包括仅是“子”目的地节点的对等节点,以及将内容中继到其它对等节点的“父”节点的对等节点;
图2B是示出本发明的多个互连的基于对等的覆盖网络拓扑的一个实施例的图,包括至少一个对等节点,该对等节点将第一覆盖网络的内容中继到该第一覆盖网络的其它对等节点,但不使用该内容;
图2C是示出本发明的基于对等的覆盖网络拓扑的子集的一个实施例的“快照之前和之后”的图,其中当前覆盖网络拓扑部分基于监视的指标被重新配置;
图3A是示出本发明的关键客户端-服务器组件的一个实施例的系统图;
图3B是示出本发明的用户节点设备的关键客户端组件的一个实施例的框图;
图3C是示出本发明的自适应拓扑服务器的关键服务器端组件的一个实施例的框图;
图4A是示出图3C所示的“覆盖网络拓扑管理器”的“预测引擎”和“拓扑选择器”组件的高级实施例的图;
图4B是示出图3C所示的“覆盖网络拓扑管理器”的“指标处理器”、“预测引擎”和“拓扑选择器”组件之间的动态交互的高级实施例的流程图;
图5是本发明关键过程的一个实施例的系统级流程图,其响应于底层网拥塞的影响以及当前覆盖网络拓扑的节点和链路的相互依赖性的变化指标指示,确定满足特定于应用的性能标准的覆盖网络拓扑;
图6A是本发明的节点中继分类器的神经网络实现的输入和输出节点的一个实施例的图,该分类器预测指定父节点向一个或多个子节点中继内容的节点中继能力;
图6B是本发明的链路中继分类器的神经网络实现的输入和输出节点的一个实施例的图,该分类器预测指定链路将内容从该链路的父节点中继到该链路的指定子节点的链路中继能力;
图7A是示出在图3C所示的覆盖网络拓扑管理器的拓扑选择器组件进行初始配置之后覆盖网络拓扑状态的一个实施例的图;
图7B是示出在由图3C所示的覆盖网络拓扑管理器的拓扑选择器组件进行“低性能”转换之后的覆盖网络拓扑状态的一个实施例的图;
图7C是示出在由图3C所示的覆盖网络拓扑管理器的拓扑选择器组件进行“级别移动”转换之后的覆盖网络拓扑状态的一个实施例的图;
图7D是示出在由图3C所示的覆盖网络拓扑管理器的拓扑选择器组件进行“过剩能力再分配”转换之后的覆盖网络拓扑状态的一个实施例的图;
图7E是示出由图3C所示的覆盖网络拓扑管理器的拓扑选择器组件执行的初始配置和重新配置转换的一个实施例的流程图;
图7F是示出由图3C所示的覆盖网络拓扑管理器的拓扑选择器组件的关键步骤的替代实施例的流程图,其中新的、低性能的“孤”节点被识别为需要新的父节点,以促进当前覆盖网络拓扑的“局部”重新配置。
具体实施方式
A.引言
如下文更详细讨论的,本发明针对在诸如因特网的底层网的节点之间分发内容项。虽然本发明的预测性覆盖网络体系结构的实施例在本文是在建立在因特网之上的基于对等的覆盖网络的环境中描述的,但是应该强调的是,本发明不限于基于对等的覆盖网络,或者甚至不限于因特网。显而易见的是,本发明可以集成到基于边缘和其它覆盖体系结构中,所述体系结构建立在几乎任何在中间路由节点和其它共享资源处经历网络拥塞的底层网之上。
如上所述,使用应用内容的用户节点集(与底层网的中间路由节点不同)代表覆盖节点,它们一起定义了应用内容项分发在其上的覆盖网络。对于任何给定的内容项(或其片段),本发明定义了相应的覆盖网络拓扑,该拓扑包括使用该内容项的覆盖节点集(覆盖网络),以及内容项片段将沿其传播的链路集(覆盖节点对)(直到本发明重新配置覆盖网络拓扑为止)。
在下面更详细讨论的一个实施例中,一个或多个用户节点是多个覆盖网络的一部分,因此可以中继但不使用特定内容项。然而,在该实施例中,所述用户节点经由其所在的重叠覆盖网络拓扑来使用其它内容项。对于本领域技术人员来说显而易见的是,本发明的范围包括与一个或多个应用相关联的多个内容项(每个内容项具有相应的覆盖网络拓扑)的同时分发。
下面描述的本发明的预测性覆盖网络体系结构的实施例识别满足一组特定于应用的性能标准的覆盖网络拓扑。因为每个应用(可能每个内容项或其片段)可以具有其自己相关联的覆盖网络拓扑,所以本发明可以定义不同的(可能重叠)覆盖网络拓扑,其中每个覆盖网络拓扑与具有其自己定义的性能标准的特定应用(或其内容项或片段)相关联。例如,出于本发明的目的,视频内容项的不同分辨率可以被认为是不同的内容项。
然而,为了简单起见,本文描述的大多数实施例确定与分发单个内容项的片段的单个应用相关联的单个覆盖网络拓扑。然而,对于本领域技术人员来说显而易见的是,在不脱离本发明精神的情况下,任何给定的覆盖网络拓扑都可以容纳同时分发多个内容项的多个应用,并且可以为每个应用(或其内容项或片段)定义不同的覆盖网络拓扑。
虽然本文提供的多个示例是在通过因特网向大量并发用户传送流式视频的背景下描述的,但是本发明的原理同样适用于分发任何类型数字内容的几乎任何类型的应用。应用的示例包括广播视频、视频点播、网络电话和其它形式的视频会议、音频和视频流、虚拟现实(VR)、单人和多人游戏、大文件传输和各种其它内容分发(通常相对带宽密集型)应用。数字内容项的示例包括文本、图像、音频和/或视频文件、3D模型、VR游戏、医学数据和几乎任何其它形式的数字内容。
还应当注意,本发明不限于在预定时间分发的内容项。例如,视频内容可以在事件发生时实况流式传输(无论是实时流式传输还是有一段延迟),或者可以预先录制并在稍后流式传输。事件本身可能会也可能不会提前安排。此外,应用及其相关联的性能标准将确定目的地节点是否必须“同时”(即,在预定的阈值时间段内)接收内容项,或者可以在不同时间接收相同的内容。
如下文将变得显而易见的,本发明不能“治愈”因特网的网络拥塞问题,或者覆盖网络的节点和链路根据特定于应用的性能标准分发内容的有限能力。相反,随着时间的推移,它定义了覆盖网络拓扑,这些拓扑有效地利用上述有限能力,并减少底层网拥塞对这些覆盖网络拓扑性能的负面影响(通过“绕过”它进行路由,并将流量分散到因特网中利用率较低或拥塞程度较低的区域,从而有效地减少网络拥塞),同时满足定义的性能标准。
本发明的一个关键优点是降低带宽成本和对插入点(POI),即作为内容来源的网络节点(或外部网络)的影响。例如,通过利用目的地对等节点在其间传递内容项,本发明避免了对用于分发内容项的昂贵的基于边缘的路由器和服务器的需求。相关的优点包括增加服务覆盖范围和性能质量,甚至对于远超出POI直接到达范围的用户节点(例如,网络上不邻近POI或者可能不邻近任何相对高带宽的用户节点)也是如此。结合本发明各种实施例的以下描述,其它优点将变得显而易见。
最后,应该强调的是,以下实施例代表硬件和软件组件之间的功能分配,这是各种设计和工程权衡(包括时间、性能、存储器和其它因素)的结果。在不脱离本发明的精神和范围的情况下,该功能可以在硬件和软件、客户端和服务器端模块之间重新分配,组合成单个组件或者在多个组件之间拆分,并且用标准和定制网络协议的组合来实现。
B.基于对等的覆盖网络拓扑
参考图2A,其中200a示出了本发明的基于对等的覆盖网络拓扑的一个实施例。源节点220a表示内容项开始的POI或点,并被插入覆盖网络。在其它实施例中,内容可以源自多个不同的节点,无论是覆盖网络本身内部的还是外部的。外部“源”网络或节点(即不属于覆盖网络并且不使用内容项的节点)也可以将内容项分发到覆盖网络的一个或多个对等用户节点。
在图2A所示的实施例中,源节点220a表示外部节点,该外部节点最初(根据当前覆盖网络拓扑200a的定义)将内容片段直接分发到多个对等节点230a。对等节点230a包括仅是子节点的对等节点(例如使用内容但不将该内容中继到任何其它对等节点的“叶”节点230a-2)以及作为父节点的对等节点(例如不仅使用内容并且将该内容中继到其它对等节点的“中继”节点230a-1)。
参考图2B,其中200b示出了本发明的多个重叠或互连的基于对等的覆盖网络拓扑的一个实施例。在本实施例中,第一内容项从源节点220b-1分发到使用第一内容项片段的多个对等节点230b-1的第一覆盖网络中。类似地,第二内容项从源节点220b-2分发到使用第二内容项片段的多个对等节点230b-2的第二覆盖网络中。
然而,在本实施例中,第二覆盖网络的节点中的一个(对等节点240b-2)不仅使用第二内容项的片段并且将这些片段中继到第二覆盖网络的其它对等节点230b-2,还将第一内容项的片段中继到第一覆盖网络的其它对等节点230b-1。换句话说,在本实施例中,对等节点240b-2在各个方面来说都是一个不寻常的节点(与其它对等节点230b-1和230b-2相比)。
对等节点240b-2具有多个(两个)父节点,并且中继其不使用的内容项(第一内容项)的片段(因为它只使用第二内容项的片段)。因此,在这种情况下,对等节点240b-2是多个不同的基于对等的覆盖网络的一部分。
本实施例的一个目的是说明本发明如何利用不使用正在分发的内容的对等节点的未使用或过剩“中继能力”,以便“生成”更有效的覆盖网络拓扑。然而,应当注意,与边缘服务器节点不同,对等节点240b-2不需要购买或租赁额外的物理基础设施。相反,对等节点240b-2是已经被部署使用(第二覆盖网络的)内容项的用户节点。
如下文更详细解释的,本发明监视各个指标,包括那些涉及随着时间在用户节点之间(可能跨越多个覆盖网络拓扑)的内容分发的指标,并且因此可以通过将节点240b-2包括在覆盖网络拓扑中来检测(或预测)和利用这种过剩中继能力,用于在第一覆盖网络的对等节点之间分发的内容项片段。重叠覆盖网络拓扑(包括集成CDN和其它基于边缘的覆盖网络的混合网络体系结构)的概念的各种变型对于本领域技术人员来说是显而易见的。
最后,应该注意,图2A和2B所示的覆盖网络拓扑表示在给定时间点由本发明定义的覆盖网络拓扑。换句话说,随着指标随时间的变化,本发明可以确定新的或修改后的覆盖网络拓扑来代替当前的覆盖网络拓扑。
参考图2C,其中200c示出了本发明的基于对等的覆盖网络拓扑的子集的一个实施例的“快照之前和之后”,其中当前覆盖网络拓扑210c基于监视的指标被重新配置(部分或全部),产生新的“替换”覆盖网络拓扑220c,内容项的未来片段将沿该拓扑传播。如下文更详细讨论的,重新配置可能由于各种原因而发生。
例如,指标可能会随着时间的推移而变化,表明特定节点或链路的性能正在(或将)下降。然而,如上所述,如果不考虑上游节点和链路的相互依赖性的影响,仅仅替换“性能差”的父节点或链路可能无法获得期望的结果(即,满足定义的性能标准)。
暂时抛开本发明解决这些问题的方式(解决这些相互依赖性以及当前或未来底层网拥塞的影响),图2C示出了重新配置过程的“之前和之后”的影响(至少对节点和链路的子集的影响)。与重新配置的覆盖网络拓扑220c中的“之后”链路225c的集合相比,这些影响由当前覆盖网络拓扑210c中的“之前”链路215c的集合来说明。
在图2C所示的实施例中,对等节点X在某个时间点发起加入应用并接收特定内容项的请求。此时,节点X将被分配一个父对等节点,以接收所请求的内容项(尽管,在下面讨论的一些实施例中,节点X在220c中立即开始从POI-SRC节点接收内容,直到分配一个父对等节点)。
如下文更详细解释的,本发明不需要随机地或者甚至仅仅基于相对地理位置向节点X分配新的父节点。相反,它在为节点X选择父节点时考虑各种指标,使得所得覆盖网络拓扑的整体性能(或者,在一些实施例中,仅仅是到节点X的链路的性能)满足所定义的特定于应用的性能标准。无论如何,作为该过程的结果,新节点X被分配给父节点A,如225c中和重新配置的覆盖网络拓扑220c中所示的A→X链路所示。
除了加入应用的新节点之外,本发明必须适应离开应用的节点(特别是,离开“孤”子节点的父节点)。在本示例中,节点F离开应用,留下孤节点N和O。这里,也如下面更详细解释的,本发明在为孤节点选择新的父节点时考虑各种指标。因此,215c(以及当前覆盖网络拓扑210c)中所示的链路F→N和F→O被225c中以及重新配置的覆盖网络拓扑220c中所示的链路G→N和G→O有效地替代。结果,父节点G现在有三个子节点:孤节点N和O,以及现有的子节点P。
需要强调的是,即使在为新节点和孤节点选择父节点的情况下,本发明也考虑改变指标来确定是否以及如何重新配置当前覆盖网络拓扑。换句话说(如下面更详细解释的),本发明解决了频繁改变的底层网拥塞的后果以及覆盖网络拓扑的节点和链路之间的相互依赖性。
因此,除了容纳新节点和孤节点之外,本发明还通过在满足定义的性能标准的同时重新配置当前覆盖网络拓扑来解决(观察到的和/或预期的)“低性能”节点和链路。在图2C所示的示例中,215c(和当前覆盖网络拓扑210c)中的H→R和K→V链路表现出(或预计表现出)“低性能”,例如,低于预定阈值或低于定义的性能标准所需的性能水平。
如上所述,低性能的原因可能是内部问题或节点(节点R或节点V)自身内部的拥塞,或者是沿到这些节点的链路(H→R或K→V)的中间路由节点处的上游网络拥塞。如下文更详细解释的,即使不知道问题的确切原因,本发明也能识别满足性能标准的覆盖网络拓扑,从而有效地“绕过”并减少底层网拥塞。
因此,在本示例中,无论“低性能”问题的原因是现有节点R和/或V(还是现有链路H→R和/或K→V),如215c(以及当前覆盖网络拓扑210c)中所示,本发明通过识别新的覆盖网络拓扑220c来重新配置当前覆盖网络拓扑210c,进而为子节点R提供新的父节点I,为子节点V提供新的父节点M,也如225c所示。
在一些实施例中(下面讨论),本发明首先明确地识别“低性能”节点(因为需要新的父节点),而在其它实施例中,新的父节点的分配是满足性能标准的覆盖网络拓扑的识别结果(而没有明确地识别特定的“低性能”节点)。
C.客户端-服务器体系结构和关键功能组件
在本发明的预测性覆盖网络体系结构的一个实施例中,如图3A中的系统图300a所示,采用客户端-服务器体系结构。在本实施例中,自适应拓扑服务器310a是底层网325a(因特网)上的一个节点(或者在其它实施例中是多个节点),其集中了本发明的大部分功能。
例如,自适应拓扑服务器310a负责管理同时运行的一个或多个应用,以及用于用户节点设备320a之间交换信息的覆盖网络拓扑。每个用户节点设备320a也作为因特网325a的底层节点连接。
每个应用都涉及用户节点设备320a的子集的参与,这些用户节点设备320a被共同示出为逻辑互连的覆盖网络拓扑320a-1。320a-1中所示的“SRC”节点在技术上不是覆盖网络拓扑的一部分。它代表每个内容项的POI或来源。尽管在图3A中未另外示出,但是在一个实施例中,一个或多个POI(跨多个应用和内容项)被部署为底层网(因特网325a)上的外部节点,适于与自适应拓扑服务器310a以及用户节点设备320a通信。在本实施例中,自适应拓扑服务器310a管理每个内容项的片段从其POI到每个覆盖网络拓扑320a-1的“根”节点的分发(在这一点上,这些片段进一步沿覆盖网络拓扑320a-1分发到其它用户节点设备320a,如下面更详细描述的)。
在一个实施例中,覆盖网络拓扑320a-1被用于相对于多个应用分发内容,每个应用涉及一个或多个内容项的同时分发。在其它实施例中,每个单独内容项的每个片段可以沿不同的覆盖网络拓扑分发。
覆盖网络拓扑320a-1与单个片段、内容项和应用的这种相关性的粒度是在实现本发明的过程中进行的设计和工程权衡的结果。为简单起见,覆盖网络拓扑320a-1在此上下文中以低粒度级别参考用户节点设备320a的子集来描述,用户节点设备320a的子集参与特定应用的内容项的片段的分发。
在本实施例中,用户节点设备320a随时间收集指标,并通过因特网325a将其连续传送到自适应拓扑服务器310,自适应拓扑服务器310(至少部分基于所述指标)做出是否重新配置任何特定覆盖网络拓扑320a-1的决定。每当自适应拓扑服务器310a重新配置特定的覆盖网络拓扑320a-1时,它向每个父用户节点设备320a(在拓扑320a-1中)传送其子用户节点设备320a的标识,并将当前内容项的后续片段“推送”到该子用户节点设备320a。
每个子用户节点设备320a包括接收和使用内容项的片段的功能,例如,接收和观察流式视频内容的片段、接收和处理图像文件、接收和处理交互式游戏数据等。如果用户节点设备320a也是父节点,则它不仅接收和使用内容项的片段,并且将这些片段中继到由自适应拓扑服务器310a指定的特定用户节点设备320a。换句话说,用户节点设备320a实现由自适应拓扑服务器310a确定并随时间重新配置的覆盖网络拓扑320a-1上的内容分发。
图3B示出了用户节点设备300b中的功能组件的更详细描述。在一个实施例中,每个用户节点设备300b包括标准硬件和软件组件310b,包括CPU 312b、存储器314b和操作系统315b,以及网络适配器316b,以用于实现独立和网络应用的功能。在其它实施例中,该功能可以完全在硬件中实现,或者使用一个或多个专用微控制器而不是通用CPU 312b和操作系统315b,以及多个(单核或多核)CPU 312b来实现。在一些实施例中,某些用户节点设备300b还包括I/O设备318b,例如显示器、键盘、摄像机等。
这些标准硬件和软件组件310b的功能被本发明的预测性覆盖网络体系结构所利用,同时也被用户节点设备300b本身用于通用目的。例如,在一些实施例中,存储器314b还被用来存储实现本发明的某些客户端功能的定制软件(例如,从自适应拓扑服务器310a接收的Javascript代码),例如收集指标并与自适应拓扑服务器310a通信,自适应拓扑服务器310a与内容项片段的接收、使用和中继相关。在其它实施例中,用户节点设备300b包括不同的存储组件用于存储数据和软件以促进该功能。
在任何情况下,本发明的客户端功能,在没有用硬件实现的程度上,被包含在非暂时性计算机可访问存储介质(例如存储器314b或其它形式的数据存储)中,并由处理设备(例如CPU 312b)执行。在其它实施例中,该客户端功能包含在下载到用户节点设备300b中的桌面应用和移动应用程序中。
标准库模块320b也有助于实现这种定制客户端功能(在一些实施例中),标准库模块320b包括用于与自适应拓扑服务器310a通信以及接收、使用和中继内容项片段的标准协议和库。这种协议和库的例子包括HTTP、WebSocket、STUN、WebRTC和MPEG-DASH等。标准库模块320b中特定标准协议和库(以及非标准协议和库)的选择是本发明范围内各种设计和工程权衡的结果。
如上所述,在一些实施例中,用户节点设备300b可以是分发到其它用户节点设备300b的特定内容项的源。在这种情况下,上传器380b实现流式传输或以其它方式将内容项的每个片段分发到由自适应拓扑服务器310a指定的客户端用户节点设备300b的功能。在一个实施例中,节点设备300b除了作为内容项的源之外,还使用和中继其它内容项的片段(利用接收器350b和中继器360b)。
在这种情况下,所得到的覆盖网络拓扑(沿该拓扑分发所述内容项的任何片段)不包括“源”用户节点设备300b,因为它是内容项的POI或源。但是,如上所述,相同的用户节点设备300b可以是不同(并且可能重叠)的覆盖网络拓扑的一部分,不同的内容项分发在该覆盖网络拓扑上(例如,如上面讨论的图2B中的用户节点240b-2所示)。
与自适应拓扑服务器310a的通信由通信器模块330b实现。例如,通信器330b将指标监视器340b收集的指标传输到自适应拓扑服务器310a,用于确定覆盖网络拓扑。通信器330b还从自适应拓扑服务器310a接收子节点的规格(如果有的话),用户节点设备300b将向子节点中继内容项的后续片段(例如,当自适应拓扑服务器310a重新配置覆盖网络拓扑时)。此外,通信器330b处理用户节点设备300b加入或离开特定应用的请求,以及其它与通信相关的功能。
在一个实施例中,指标监视器340b被实现为各种指标的分布式收集器。例如,在任何给定时间段(例如每秒),每个用户节点设备300b收集原始指标,包括例如节点指标和链路指标,然后将这些指标传递给自适应拓扑服务器310a。如下文更详细讨论的,自适应拓扑服务器310a组织并处理其从所有用户节点设备300b接收的指标,并使用这些指标来促进其确定覆盖网络拓扑(跨段、内容项和应用)。
在替代实施例中,用户节点设备300b比其向自适应拓扑服务器310a报告指标更频繁地收集指标。在另一个实施例中,某些指标的收集不太频繁,或者仅当它们改变时才提供给自适应拓扑服务器310a。在另一个实施例中,父节点收集链路指标(替代地或附加地,依赖子节点来收集所述链路指标)。在其它实施例中,除了节点指标和链路指标(或者甚至那些直接与内容项片段的传输相关的指标)之外,还收集(并且向自适应拓扑服务器310a报告)额外的指标,例如到已知URL的周期性ping以及网络拥塞和其它变化环境的各种其它间接指示。
如上所述,在一个实施例中,节点指标包括用户节点设备300b固有的节点中继属性,例如其连接类型(LAN、WiFi、LTE、4G等)、IP地址/前缀、ISP、ASN、设备类型、CPU和内存负载、操作系统、地理位置、到其网关的上行和下行速度等)。链路指标包括与特定链路相关的链路中继属性,如沿链路的往返ping时间、延迟、抖动和其它以网络为中心的指标,以及与链路的父节点和子节点相关的节点指标(如它们的IP地址/前缀、ISP和ASN)。
在其它实施例中,反映应用性能质量的以用户为中心或应用层面的评价的QoE指标(例如,丢帧、重缓冲事件等)也作为指标包括在内。当然,所述QoE指标是特定于应用的,并且在一个实施例中被自适应拓扑服务器310a使用(与其它指标一起)来定义其特定于应用的性能标准。在不脱离本发明精神的情况下,可以采用各种不同的或其它节点指标、链路指标和其它指标。
每个用户节点设备300b内的接收器350b管理协议,通过该协议,从其父节点接收内容项的片段。在一个实施例中,标准WebRTC API和协议被用来促进内容项的一个或多个片段从父节点到其每个子节点的对等传输。在其它实施例中,采用不同的标准或定制协议。在其它实施例中,某些用户节点设备300b支持多种不同的协议。协议的选择是设计和工程权衡的结果,可因应用而异。
类似地,如果用户节点设备300b是父节点,则中继器360b管理接收到的内容项片段到其指定子节点的中继。仅当用户节点设备300b具有当前指定的子节点时,才使用中继器360b。例如,在自适应拓扑服务器310a对覆盖网络拓扑进行重新配置之后,可以通知用户节点设备300b它不再具有任何指定的子节点,但是随后可以通知(在后续重新配置之后)它确实具有一个或多个指定的子节点,用于内容项的后续片段的分发。
内容阵列管理器370b管理内容项片段的接收和中继。例如,当接收到片段时,内容阵列管理器370b在接收阵列372b中缓冲这些片段,所述接收阵列372b用于内容播放器325b根据与这些片段相关联的应用对这些片段进行使用的过程(例如,观看广播视频)。
内容播放器325b例如可以是流式HTML5视频播放器,其播放视频内容项的接收片段,以供用户节点设备300b的用户观看。如果应用通过内容播放器325b提供30fps回放,则内容阵列管理器370b运行所接收片段的缓冲器(在接收阵列372b中),这有助于其以适当的速率将视频帧(例如,多个视频片段)传送到内容播放器325b。在一些实施例中,内容播放器325b可以包括不同的帧缓冲器,以促进视频内容项的平滑回放。
在一个实施例中,内容播放器325b被实现为内置于(或通常安装在)用户节点设备300b上的网络浏览器的标准组件,例如标准Safari、Chrome或IE浏览器。通过利用标准功能,本发明避免了在每个用户节点设备300b上安装附加定制软件的需要,并因此确保了跨用户节点的更大兼容性。在其它实施例中,内容播放器325b被实现为定制网络浏览器或独立播放器。
如果用户节点设备300b是父节点,则内容阵列管理器370b还运行所接收片段的中继阵列374b,这有助于片段的缓冲,以便由中继器360b传输到由自适应拓扑服务器310a指定的每个子用户节点设备300b。换句话说,内容阵列管理器370b运行不同的片段缓冲器,用于向这些子用户节点设备300b中的每一个中的接收器350b进行外部传输。在其它实施例中,该缓冲器被用于促进VOD应用,其中一组子用户节点设备300b必须接收相同的片段,但是在不同的时间。
因为一个用户节点设备300b中的中继器360b直接与其它用户节点设备300b中的接收器350b通信(在一个实施例中),所以它们必须实施兼容的协议(例如上述的WebRTCAPI和协议)。在不脱离本发明精神的情况下,不同的用户节点设备300b可以采用不同的(但是兼容的)标准或定制协议(或者甚至同一用户节点设备300b的接收器350b和中继器360b内的不同协议)。
虽然本发明(在一个实施例中)利用了用户节点设备300b中的某些标准功能(例如,在标准库320b、内容播放器325b以及由接收器350b和中继器360b实现的协议中),但是也依赖于存在于用户节点设备300b上的定制功能(如上所述)。例如,通信器330b用于管理与自适应拓扑服务器310a的通信。指标监视器340b被用来随着时间监视某些指标,并将其提供给自适应拓扑服务器310a。接收器350b和中继器360b被用来管理从指定父节点接收内容项片段的过程(当覆盖网络拓扑被重新配置时,该过程可能改变)。最后,上传器380b被用来使用户节点设备300b成为沿本发明的覆盖网络拓扑分发的内容项的源(例如,从其摄像机流式传输直播或记录的视频,以及内部生成或从外部源获得的其它内容项)。
在一个实施例中,当用户节点设备300b首次向自适应拓扑服务器310a发起加入应用(例如,观看流式视频或交换大文件)的请求时,该定制功能被自适应拓扑服务器310a下载到用户节点设备300b。之后的加入其它应用或接收其它内容项的请求不需要再次下载该功能。
自适应拓扑服务器310a还与相关POI(在一个实施例中)通信,以指示其向“新加入的”用户节点设备300b提供所请求内容项的初始片段,直到选择父节点用于将后续片段直接传递给用户节点设备300b。如上所述,POI还将向每个覆盖网络拓扑320a-1的根节点传送内容项的所有片段。在其它实施例中,其中用户节点设备300b是内容项的源,自适应拓扑服务器310a指示上传器380b此时充当POI(相对于向新加入的节点发送初始片段和向指定的根节点发送所有片段)。
现在转向实现本发明的预测性覆盖网络体系结构的大部分功能的服务器端组件,图3C示出了自适应拓扑服务器300c的关键组件的一个实施例。如上所述,自适应拓扑服务器300c的功能可以在一个或多个物理服务器上实现,功能的一部分可以完全在硬件中或者在硬件和软件中实现,并且可以组合成单个概念软件模块或者在多个模块上分割(如各种设计和工程权衡所规定的)。
在图3C所示的实施例中,自适应拓扑服务器300c被示为单个物理服务器,其包括标准硬件和软件组件310c,例如CPU 312c、存储器314c和操作系统315c,以及网络适配器316c。与用户节点设备300b一样,该标准服务器端硬件和软件功能可以通过使用一个或多个专用微控制器而不是通用CPU 312c和操作系统315c以及多个(单核或多核)CPU 312c来实现。在一些实施例中,自适应拓扑服务器300c还包括I/O设备318c,例如显示器、键盘、摄像机等。虽然自适应拓扑服务器300c内的不同数据库在图3C中示出(并且在下面讨论),但是在一些实施例中,存储器314c也被用来存储定制数据和功能。
在一个实施例中,还采用标准库320c来促进与用户节点设备300b(以及内容项的各种POI源)的通信。在这里,设计和工程权衡决定使用哪些标准API和协议,以及专有软件的部署程度。与用户节点设备300b的情况一样,本发明的服务器端功能(在没有用硬件实现的程度上)被包含在非暂时性计算机可访问存储介质(例如存储器314c或其它形式的数据存储,例如下面讨论的数据库375c和385c)中,并由处理设备(例如CPU 312c)执行。
信令服务器330c处理与用户节点设备300b的通信,例如,用于接收指标并指示父用户节点设备300b将内容项的后续片段“推送”到指定的子节点(无需来自信令服务器330c的进一步交互)。在一个实施例中,信令服务器330c还促进在成对的用户节点设备300b之间创建初始“对等连接”。
在另一个实施例中,信令服务器330c还负责与用户节点设备300b的其它通信。例如,信令服务器330c从用户节点设备300b接收加入应用(和/或单个内容项)的请求。它还监视来自用户节点设备300b的“心跳”和其它信号,这些信号指示用户节点设备300b是否已经失去其网络连接或者停止观看一个或多个内容项,如果是,该用户节点设备300b将从当前覆盖网络拓扑中移除。此外,信令服务器330c处理与POI节点或其它内容源的通信,以利于内容项的流式传输或将其分发到由自适应拓扑服务器300c标识的覆盖网络拓扑中。
在一个实施例中,内容管理器360c管理由多个内容提供商针对各种应用提供的内容项。内容管理器360c确保每个内容项被流式传输或以其它方式分发到当前覆盖网络拓扑的根节点。换句话说,在当前覆盖网络拓扑(与给定内容项相关联)的重新配置改变那些根节点的程度上,内容管理器360c与相关POI通信(经由信令服务器330c),以确保POI将内容项的后续片段传递给那些更新的根节点。
内容管理器360c还获得或生成与每个应用的内容项相关联的特定于应用的性能标准(或者,在其它实施例中,与单个内容项相关联)。内容管理器360c将性能标准存储在存储器314c中,或者在其它实施例中,存储在它自己的其它数据库中。如上所述,对于任何特定的应用或内容项,当前覆盖网络拓扑(及其各个节点和链路)的性能被定义为各种指标的函数,并且性能标准被定义为一组阈值或对该性能的其它约束。在一个实施例中,这种性能标准是为每个内容项预定义的。在其它实施例中,性能标准随时间动态生成和修改。
覆盖网络拓扑管理器350c提供本发明的预测性覆盖网络体系结构的主要组件。下面的大部分讨论集中在特定内容项的分发以及覆盖网络拓扑随时间的重新配置上,该内容项的后续片段将沿该覆盖网络拓扑分发(在每次重新配置之后)。然而,如上所述,本发明的预测性覆盖网络体系结构支持跨多个应用同时分发多个内容项。
在每个定义的时间段内,指标处理器352c主要从用户节点设备300b接收原始指标,但是(在一个实施例中)也从外部源接收原始指标,无论是通过监视随时间变化的因特网流量直接获得,还是间接地从监视因特网流量并偶尔构建揭示特定流量模式随时间变化的区域或全球因特网“流量图”的第三方获得。如下文更详细解释的,指标处理器352c将该原始指标数据转换成可被预测引擎355c和拓扑选择器358c用来识别满足特定于应用的性能标准的覆盖网络拓扑的形式。
在一个实施例中,指标处理器353在每个连续的时间段内将这些原始指标组织成“训练样本”,其有助于预测引擎355c的节点中继能力和链路中继能力预测。例如,指标处理器353量化原始指标,并且(在一个实施例中)对其进行缩放和加权,以生成到节点中继和链路中继分类器的训练样本输入和输出。
此外,如下文更详细解释的,指标处理器353合并某些指标以生成到节点中继分类器的训练样本输出(例如,合并关于来自单个父节点的多个链路的性能的观察指标)。对本领域技术人员来说,原始指标的其它转换是显而易见的。
在一个实施例中,由指标处理器352c在每个连续时间段内处理的指标(以及由自适应拓扑服务器300c获得的其它指标)被存储在历史性能数据库385c中。在一个实施例中,预测引擎355c利用这些历史指标(以原始和处理后形式)。
覆盖网络数据库375c用于存储定义不同覆盖网络拓扑的节点和链路集合的标识符。此外,在另一个实施例中,它被用来存储那些覆盖网络拓扑的节点和链路之间的相互依赖性和/或反映相关历史指标的其它数据。
如下文更详细解释的,在一个实施例中,拓扑选择器358c采用非线性多维优化和/或启发式算法,该算法基于由预测引擎355c生成的指定节点中继能力和链路中继能力预测(以及在一个实施例中,需求预测,即网络中存在的节点及其持续时间的预测),识别满足适用于当前内容项的定义的特定于应用的性能标准的覆盖网络拓扑。拓扑选择器358c采用这些算法,基于其将过剩能力重新分配给需要新的或更好的父节点的程度,来促进其对覆盖网络拓扑的评估,即转移网络流量以满足性能标准。
此外,这些算法考虑了覆盖网络拓扑的全局背景下节点和链路之间的相互依赖性。如上所述,在任何特定覆盖网络拓扑的背景下,每个节点和链路的性能取决于上游节点和链路的性能。
在一个实施例中,拓扑选择器358c通过添加新发现的节点和移除不再接收当前内容项的节点来更新当前覆盖网络的节点。更重要的是,拓扑选择器358c还利用预测引擎455a为指定的节点和链路生成节点中继能力和链路中继能力预测,然后分析包括这些节点和链路的预期覆盖网络拓扑,同时考虑这些节点和链路之间的相互依赖性。在另一个实施例中,包括额外的节点,即使这些节点不使用当前内容项(如上面图2B中的节点240b-2所示)。
在其它实施例中,拓扑选择器358c采用算法来减少识别满足性能标准的覆盖网络拓扑(以及,在一些实施例中,最优覆盖网络拓扑)所需的时间量(以及其它网络资源)。例如,拓扑选择器358c采用算法来减少(1)其使用预测引擎455a生成的节点中继能力和链路中继能力预测的数量,和/或(2)其根据性能标准评估的预期覆盖网络拓扑的数量。
在一个实施例中(下面参考图7F更详细地讨论),拓扑选择器358c识别(除新节点和孤节点之外)需要新的父节点的“低性能”节点的阈值数量。这极大地减少了节点中继能力和链路中继能力预测的数量,因为只需要考虑到这些节点(需要新的父节点)的链路。在任何新配置的覆盖网络拓扑中,其它链路将保持不变。
在其它实施例中,拓扑选择器358c通过识别受链路变化影响最大的覆盖网络拓扑的区域(例如,更靠近树的根部或特定“分支”或级别),实现指定节点中继能力和链路中继能力预测数量的额外减少。在其它实施例中,拓扑选择器358c通过基于那些预测选择性地考虑预期覆盖网络拓扑排列数量的子集来实现类似的减少。例如,在一个这样的实施例中,拓扑选择器358c识别“高性能”节点,并将其用作树的较高“分支”处的父节点。各种其它算法、转换以及设计和工程权衡对于本领域技术人员来说是显而易见的。
无论采用何种特定算法,拓扑选择器358c都会生成满足性能标准的覆盖网络拓扑作为输出。如上所述,在不脱离本发明精神的情况下,可以采用多种不同的算法,即使所识别的覆盖网络拓扑不是最佳的,因为可以优先考虑其它因素(例如生成解决方案所需的时间)。
参考图4A,图400a示出了自适应拓扑服务器300c的预测引擎455a和拓扑选择器458a组件之间的关系的高级实施例。如上所述,预测引擎455a在每个连续时间段453a期间接收各种已处理指标445a作为输入(在一个实施例中,除了先前从历史性能数据库485a获得或观察到的历史指标之外)。基于这些输入,预测引擎455a生成节点中继能力456a和链路中继能力457a预测(在一个实施例中,需求预测),所述预测随着时间的推移而改善,因为它是用更多样的训练样本来训练的,如下面更详细讨论的。
在一个实施例中,拓扑选择器458a请求(来自预测引擎455a)指定的节点中继能力456a和链路中继能力457a预测。如下文更详细讨论的,它利用这些预测来识别满足性能标准的覆盖网络拓扑460b。
图4B中的流程图400b提供了图4A的组件的高级动态图示。对于每个连续的时间段(由拓扑选择器458b和指标处理器452b之间的迭代循环示出),指标处理器452b接收并处理与单个节点和链路相关的原始指标数据451b。指标处理器452b处理原始数据以生成时间戳样本453b,时间戳样本453b被设计成训练预测引擎455b以了解输入节点中继属性如何与输出节点中继性能值相关联(以生成节点中继能力预测),以及输入链路中继属性如何与输出链路中继性能值相关联(以生成链路中继能力预测)。
在一个实施例中,拓扑选择器458b使用预测引擎455b(一旦被充分训练)来提供指定的节点中继能力和链路中继能力预测456b(以及在另一个实施例中,需求预测),这有助于拓扑选择器458b识别满足性能标准的覆盖网络拓扑460b。使用“训练阈值”来确定预测引擎455b何时被充分训练以被拓扑选择器458b依赖。在另一个实施例中,预测引擎455b连续生成节点中继能力和链路中继能力预测456b(供拓扑选择器458b使用),所述预测随着时间的推移逐渐改善。
D.覆盖网络拓扑的重新配置
图5的流程图500提供了“覆盖网络拓扑重新配置过程”的稍微更详细的系统级视图的一个实施例。该过程将在下面针对预测引擎455b的关键组件(在下面的图6A和6B中)和拓扑选择器458b的关键组件(在下面的图7A-7E中)的特定实施例进行更详细的讨论。
在步骤505中,内容管理器360c针对系统支持的每个应用(或者,在另一个实施例中,每个内容项)定义特定于应用的性能标准。关于在当前覆盖网络拓扑上分发的当前内容项,性能标准表示对当前覆盖网络拓扑(及其单个节点和链路)的性能施加的约束。在一个实施例中,所述性能被定义(在任何指定的时间段内)为指标处理器452b可用的指标的函数,便于拓扑选择器458b确定性能标准是否被满足。
指标处理器452b在步骤507中处理原始指标,以生成用于连续训练预测引擎455b的时间戳样本。如上所述,给定所需的时间和资源,拓扑选择器458b在收集和处理指标(步骤507)的每个时间段重新评估当前覆盖网络拓扑的状态可能是不可行的。
因此,覆盖网络拓扑管理器350c执行步骤510来确定是否触发该重新评估。在一些实施例中,该触发是基于时间的,并且以与指标收集过程相同或更少的频率来执行。在其它实施例中,触发是基于事件的。例如,在一个实施例中,针对当前覆盖网络拓扑(及其各个节点和链路)的性能建立阈值性能水平。如果所述性能在未能满足性能标准的预定阈值百分比内,则步骤510从步骤515开始触发对当前覆盖网络拓扑的重新评估。
一旦触发(无论是通过基于时间、基于事件还是其它触发),拓扑选择器458b在步骤515中利用预测引擎455b来生成指定的节点中继能力和链路中继能力预测。在一个实施例中,为每个父节点生成这样的预测,以包括在拓扑选择器458b考虑的任何覆盖网络拓扑中。在其它实施例中,非线性和多维优化和/或启发式算法被用来减少所考虑的预期覆盖网络拓扑的数量,从而减少所需节点中继能力和链路中继能力预测的数量。
拓扑选择器458b在步骤520中利用这种预测来确定满足性能标准的覆盖网络拓扑。如上所述,在其它实施例中,拓扑选择器458b确定“最佳”覆盖网络拓扑,即最满足(或最接近满足)性能标准的拓扑。
一旦拓扑选择器458b确定满足性能标准的覆盖网络拓扑,覆盖网络拓扑管理器350c在步骤525中确定它是否将用拓扑选择器458b确定的覆盖网络拓扑替换当前覆盖网络拓扑。如上所述,即使存在更好(或最优)的覆盖网络拓扑,过于频繁地改变拓扑(例如,一次改变过多链路)的负担可能会超过益处。在一个实施例中,改变的链路数量的预定义阈值被用来减轻所述负担。在其它实施例中,采用基于时间的阈值(例如,限制当前覆盖网络拓扑在给定时间段内改变的次数)。在不脱离本发明精神的情况下,可以采用各种其它优化和技术。
在转向预测引擎455b和拓扑选择器458b的详细实施例之前,如上所述,认识到网络拥塞本质上是需求超过供应的结果是有帮助的。为了减少网络拥塞对当前覆盖网络拓扑性能的影响,预测引擎455b和拓扑选择器458b一起工作,以满足特定于应用的性能标准的方式重新配置覆盖网络拓扑,从而减少需求超过供应的程度(根据当前或预期的网络拥塞)。
虽然预测引擎455b在局部(节点和链路)层面处理网络拥塞和其它性能限制因素,以预测节点中继能力和链路中继能力,但是拓扑选择器458b在全局(拓扑)层面处理单个节点和链路之间的相互依赖性,以识别覆盖网络拓扑,该覆盖网络拓扑有效地将过剩能力重新分配给需要新的或更好父节点的节点,即转移网络流量以满足性能标准。
1.预测引擎
a.节点中继和链路中继分类器
图6A和6B示出了预测引擎455b的一个实施例,其中使用两个神经网络分类器,即节点中继分类器600a和链路中继分类器600b来生成(在局部节点和链路层面)相应的节点中继能力和链路中继能力预测。图6A中的节点中继分类器600a生成节点中继能力预测,图6B中的链路中继分类器600b生成链路中继能力预测。在其它实施例中,预测引擎455b仅生成节点中继能力或链路中继能力预测,而不是两者都生成。在其它实施例中(下面讨论),预测引擎455b生成“需求预测”。
在图6A和6B所示的实施例中,神经网络分类器600a和600b都实现了一种形式的监督机器学习。在其它实施例中,无监督机器学习(例如,基于节点的各种属性的相似性对节点进行聚类)也被用于向该过程提供额外的输入。例如,覆盖网络拓扑管理器350c利用聚类算法基于多个“维度”(即,包括时间指标的多个指标,将在下面更详细地讨论)将覆盖网络的节点分类成多个集群。通过包括其中节点被分类为网络分类器600a和600b的附加输入的集群ID,该集群ID促进输入与输出的关联(特别是关于长期依赖时间的循环模式,如下所述)。
本发明的神经网络特别用于将覆盖网络的节点和链路的属性与观察到的这些节点和链路的性能相关联。在一个实施例中,这些神经网络将节点中继和链路中继属性(例如,输入节点指标和链路指标)与相应的节点中继和链路中继性能值(反映子目的地节点经历的结果性能)相关联(在连续的时间段内),以促进相应的节点中继能力和链路中继能力预测。
具体而言,节点中继分类器将节点中继属性(节点指标)与观察到的节点中继性能值相关联,以预测预期父节点将内容中继到一个或多个子节点的“能力”。例如,假设来自每个子节点的5mbps需求,预测的13mbps节点中继能力指示预期父节点能够同时向两个子节点中继内容(并满足来自两个子节点的需求)。低于5mbps的预测节点中继能力表示指定的父节点不能满足即使单个子节点的需求,因此应该是“叶”节点。
链路中继分类器将链路中继属性(链路指标)与观察到的链路中继性能值相关联,以预测预期链路的能力,即链路向该链路的子节点传送内容的能力。例如,再次假设来自每个子节点的5mbps需求,预测的5mbps链路中继能力指示指定链路能够向该链路的指定子节点传送内容(并满足来自该节点的需求)。低于5mbps的预测链路中继能力表明该链路不能满足指定子节点的需求,因此不应该是覆盖网络拓扑中的链路。
这种相关性和“中继能力”预测是更大过程(下面针对拓扑选择器458b进行描述)的一部分,该过程涉及解决(覆盖网络拓扑的预期节点和链路之间的)相互依赖性,并重新分配过剩中继能力(到需要新的或更好父节点的节点),以识别满足定义的性能标准的覆盖网络拓扑。
如下文更详细讨论的,拓扑选择器458b不是通过提供节点A的节点ID,而是通过提供与节点A相关联的当前节点中继属性(节点指标),将预期父节点(例如节点A)指定给节点中继分类器600a,节点中继分类器600a生成预期父节点A的预测节点中继能力值(例如13mbps),并将其传递回拓扑选择器458b。
类似地,拓扑选择器458b不是通过提供A→B链路的链路ID,而是通过提供与A→B链路相关联的当前链路中继属性(链路指标)来指定到链路中继分类器600b的预期链路(例如,A→B),链路中继分类器600b生成预期A→B链路的预测链路中继能力值(例如,5mbps),并将其传递回拓扑选择器458b。
b.节点中继和链路中继分类器的训练
需要认识到,神经网络分类器被训练成将观察到的输入与观察到的输出相关联,以基于分类器可能从未观察到的输入预测输出。换句话说,分类器从特定的观察数据中进行归纳。
例如,如果节点A从来不是父节点,节点中继分类器600a将永远不会观察到与从节点A沿链路传输的内容相关的指标。然而,如果拓扑选择器458b请求节点A的节点中继能力预测,节点中继分类器600a仍将生成这样的预测。如下面关于训练过程的细节所解释的,该预测的准确性本质上取决于随着时间的推移,与节点A相关联的当前输入指标与提供给节点中继分类器600a的与其它节点(可能包括节点A)相关联的那些指标(即,来自实际父节点的观察指标)的相似程度。
换句话说,随着时间的推移,其属性已经被观察到的实际父节点有效地充当具有相似属性的潜在父节点的“代理”。两者都可以被认为是节点中继分类器600a学会将其与该类父节点的子节点所经历的节点中继性能值相关联的同一“类”父节点的一部分。对于神经网络领域的技术人员来说显而易见的是,将多个输入属性与多个输出属性相关联当然是一项相对复杂的任务,但同时也非常适合受监督的机器学习。
类似地,如果A→K链路从来不是任何覆盖网络拓扑的链路,链路中继分类器600b将永远不会观察到与沿A→K链路传输的内容相关的指标。然而,如果拓扑选择器458b请求对A→K链路进行链路中继能力预测,链路中继分类器600b仍将生成这样的预测。
在这里,该预测的准确性基本上取决于随着时间的推移,与A→K链路相关联的当前输入链路指标与提供给链路中继分类器600b的与其它链路(可能包括A→K链路)相关联的指标(即,来自实际父子链路的观察指标)的相似程度。类似于节点中继分类器600a的情况,其属性已经被链路中继分类器600b随着时间观察到的实际链路有效地充当具有相似属性的预期链路的代理。
因此,在一个实施例中,节点中继分类器600a和链路中继分类器600b都是通过将节点和链路属性与其各自的节点中继和链路中继性能值相关联来训练的,而不考虑观察到的父节点和子节点的具体身份。
例如,参考图6A,考虑提供给节点中继分类器600a的关于父节点A的训练样本(其当前同时将内容中继到子节点B和C)。在本示例中,链路A→B和A→C是当前覆盖网络拓扑的一部分,每个目的地节点的需求假设为5mbps。
输入610a包括特定于节点A的节点指标612a,例如节点A的连接类型、上行链路和下行链路速度等。输入610a还包括指标时间戳614a,其表示收集该训练样本的指标的时间段(将在下面更详细地解释)。
该训练样本的输出630a与相应的A→B和A→C链路的子节点B和C相关。在本示例中,沿A→B和A→C链路的实际观测性能(例如,总共8mbps,包括沿A→B链路的5mbps和沿A→C链路的3mbps)与预测的节点中继能力632a进行比较。在一个实施例中,节点中继分类器600a计算预测的节点中继能力632a(以及实际观察到的性能)作为一个或多个指标的函数,产生单个值。在其它他实施例中,生成多个输出值。
在一个实施例中,包括到节点中继分类器600a的所有训练样本,无论实际观察到的性能反映“能力受限”(需求超过能力)还是“需求受限”(能力等于或超过需求)。在其它实施例中,为了更准确地预测中继能力,对节点中继分类器600a的训练样本进行过滤,以排除需求受限的观察。换句话说,因为观察受到子节点的总需求的限制,所以它被排除在外,因其可能不能准确地反映父节点的实际节点中继能力。
例如,如果父节点满足其一个或多个子节点的总需求(例如,一个子节点为5mbps,两个子节点为10mbps等),则排除需求受限的培训样本。相反,如果父节点未能满足其任何子节点的需求(如上面的示例中,节点A具有8mbps的节点中继能力,但是仅沿A→C链路传送3mbps),则包括其能力受限的训练样本。
在另一个实施例中,在能力明显受限是上游依赖性(例如,如果节点A的父节点仅向节点A传送3mbps)或沿链路本身施加的限制(例如沿A→C链路拥塞的中间路由节点)所造成的情况下,某些能力受限的训练样本也被排除。在一个实施例中,这两个条件都是通过获得关于相关链路的链路中继能力预测来确定的。
不管包含或排除特定的训练样本,节点中继分类器600a连续生成节点中继能力预测。换句话说,在本实施例中,它是连续训练的(即使拓扑选择器在节点中继分类器600a被认为“充分”训练之前不会从节点中继分类器600a请求节点中继能力预测)。预测的节点中继能力632a输出值和实际观察到的输出值(未示出)之间的差异表示随着时间的推移用于训练节点中继分类器600a的“误差”(如下所述)。
注意,关于节点A的这个训练样本只是在每个时间段提供给节点中继分类器600a的多个训练样本中的一个。其它训练样本当然涉及其它节点和链路,以及在连续时间段内的相同节点和链路(包括重复提交相同的训练数据集)。
如上所述,节点中继分类器600a随时间学习节点中继属性和节点中继性能值之间的相关性。例如,如果节点A具有接入因特网的3G蜂窝连接,并且相对缓慢地将内容传送到其子节点,则节点中继分类器600a并不具体了解节点A是“不良”父节点,而只是大致了解具有3G蜂窝连接的潜在父节点是不良父节点。这个过程当然更复杂,因为考虑了更多的属性(指标),并且它们的值随着时间的推移会频繁变化。
当拓扑选择器458b使用节点中继分类器600a来预测预期父节点的节点中继能力632a时,它被提供与指定的预期父节点相关的输入610a(当前节点指标612a和当前时间戳614a),甚至可能是从未成为父节点的输入。基于这些输入610a,节点中继分类器600a生成该指定的预期父节点的节点中继能力632a的预测,该预测反映了其向一个或多个(未指定的)子节点中继内容的能力。
在一个实施例中,使用一个或多个隐藏层620a来促进多个输入610a和输出630a之间更复杂的相关性。在本实施例中,单个隐藏神经元621a代表“中间状态”值(计算为对这些神经元621a的输入的加权和或其它更复杂的函数)。在训练期间采用“正向传播”过程,输入610a的值通过这些中间状态被转换以生成预测输出值,该预测输出值与每个训练样本中提供的实际输出值进行比较。
如上所述,这些生成的和实际观察到的输出值之间的差异表示由节点中继分类器600a生成的预测中的“误差”。这些误差用于在“反向传播”过程(即一种统计回归形式)中训练节点中继分类器600a,该过程调整隐藏神经元621a用来计算其中间状态值的权重。随着时间的推移,更具代表性的训练样本被提供,节点中继分类器600a逐渐减小误差,从而提高其预测能力。对于神经网络和受监督的机器学习领域的技术人员来说显而易见的是,在不脱离本发明精神的情况下,可以采用各种不同的算法(包括单个隐藏层或多个“深度学习”隐藏层,以及各种无监督机器学习算法)。
如上所述,除了与指定父节点相关的节点指标612a之外,指标时间戳614a也包括在输入610a中。在节点中继分类器600a的训练期间,时间戳614a表示收集每个训练样本的指标的时间段。在使用节点中继分类器600a期间(由拓扑选择器458b使用以生成关于指定的预期父节点的节点中继能力632a预测),时间戳614a表示获得与该指定的预期父节点相关的节点指标612a的时间段。
然而,更重要的是,时间戳614a有助于相对于“时间”指标,即相对于重复的时间相关模式,将节点指标与节点中继性能值相关联。例如,在其它指标反映随时间重复出现的模式的程度上(例如晚上比早上更大的流量延迟,或者周末比工作日更大的流量延迟,或者恶劣天气期间在乡下某些地方有更大的流量延迟),时间戳614a提供有价值的信息,使得节点中继分类器600a能够反映时间指标在用于预测任何特定时间段内的节点中继能力632a时的相对影响。在一个实施例中,时间戳614a包括多个值来区分一周中的几天和一天中的时间(无论是基于全球参考时间例如GMT还是本地时区),以及节假日、特殊事件和各种其它值,而不是单个精确的日期/时间值,或者除了单个精确的日期/时间值之外。
正如时间戳614a将“时间”的维度添加到各种节点指标,在其它实施例中使用附加指标来反映当前覆盖网络拓扑的特定节点和链路“外部”的间接因素。例如,如上所述,底层网上的其它应用和事件对这些节点和链路的影响的外部指示也作为预测引擎455b的输入被包括在内。
此类外部指示包括定期流行或其它带宽密集型事件,如“超级碗”和流行电视剧季末剧集。这些事件通常会导致流量增加和延迟,影响因特网的重要部分,包括当前覆盖网络拓扑的节点和链路。在其它实施例中,扩展的网络中断和设备故障(无论是由恶劣天气还是其它因素引起的)也包括在预测引擎455b的输入中。如上所述,这种信息可以通过随时间监视网络流量而直接获得,或者间接地从监视因特网流量并且偶尔构建区域或全球因特网“流量图”以揭示随时间的特定流量模式的第三方获得。
参考图6B,链路中继分类器600b以与节点中继分类器600a非常相似的方式执行,包括在其训练方面以及由拓扑选择器458b使用来生成预测方面。然而,如上所述,链路中继分类器600b生成关于链路向指定子节点传送内容片段的能力的预测,而节点中继分类器600a生成关于指定父节点向一个或多个未指定子节点中继内容片段的能力的预测。虽然这种区别可能看起来很微妙,但是在拓扑选择器458b识别满足定义的性能标准的覆盖网络拓扑的情况下,这是非常重要的,如下面参考图7A-7E更详细讨论的。
考虑上面参考图6A讨论的示例,其中父节点A当前同时向子节点B和C中继内容,因此链路A→B和A→C是当前覆盖网络拓扑的一部分。与为节点中继分类器600a生成的单个训练样本不同,在本示例的情况下,将为链路中继分类器600b生成两个训练样本:一个针对A→B链路,另一个针对A→C链路。
对于与任一训练样本相关联的链路,链路中继分类器600b的输入610b包括链路指标612b,例如沿链路的往返ping时间、关于链路的父节点和子节点的相对节点指标、特定的QoS和QoE指标以及其它链路中继属性。输入610b还包括指标时间戳614b,其表示收集链路指标612b的时间段(如上面关于节点中继分类器600a和节点指标612a所讨论的)。
链路中继分类器600b的输出630b表示单个链路的观察性能或预测能力(与节点中继分类器600a的输出630a形成对比,后者潜在地反映了多个链路的同时性能)。在上述示例中,关于A→B链路的训练样本输出630b等于5mbps,而关于A→C链路的训练样本输出等于3mbps。在一个实施例中(如同节点中继分类器600a一样),链路中继分类器600b生成预测的链路中继能力632b(和实际观察到的性能)作为一个或多个指标的函数,产生单个值。在其它实施例中,生成多个输出值。
如同节点中继分类器600a的情况,包括(在一个实施例中)到链路中继分类器600b的所有训练样本,无论实际观察到的性能反映“能力受限”(需求超过能力)还是“需求受限”(能力等于或超过需求)。在其它实施例中,为了更好地预测中继能力,基于其为能力受限还是需求受限来分离到链路中继分类器600b的训练样本。结果(不管这种分离是在多个分类器中实现还是在单个分类器的单独组件中实现),当针对预期链路请求链路中继能力预测时,链路中继分类器600b首先确定预测能力是否满足子节点的需求。在一个实施例中,链路中继分类器600b仅生成二进制(“是”或“否”)结果。在另一个实施例中,如果未满足这种需求,链路中继分类器600b进一步生成预测能力(例如,4mbps、3mbps等)。取决于性能标准和其它因素,拓扑选择器458b仍然可以使用这样的链路(例如,如果没有更好的链路可用,或者如果性能标准平均施加5mbps的需求,而不是针对每个单独的子节点)。
如同节点中继分类器600a一样,链路中继分类器600b连续生成预测(在这种情况下是链路中继能力632b的预测),将其与实际观察到的输出值进行比较,以随着时间的推移逐渐减少误差。它还依赖于在每个时间段内以及在连续时间段内(包括重复提交同一组训练数据)与实际观察到的链路相关联的训练样本,从而消除了记忆特定节点和链路的属性的需要。
当拓扑选择器458b使用链路中继分类器600b来预测预期链路的链路中继能力632b时,其被提供与指定预期链路相关的输入610b(当前采样的链路指标612b和时间戳614b),甚至可能是从未成为实际观察到的覆盖网络拓扑的一部分的输入。基于这些输入610b,链路中继分类器600b生成该指定链路的链路中继能力632b的预测,该预测反映该链路向该链路的指定子节点传送内容的能力。
如同节点中继分类器600a的情况,使用一个或多个隐藏层620b来促进链路中继分类器600b的多个输入610b和输出630b之间更复杂的相关性。这里,单个隐藏神经元621b也代表中间状态值(作为对这些神经元621b的输入的加权和或其它更复杂的函数来计算)。在本实施例中,在训练期间采用正向传播过程,通过这些中间状态转换输入610b的值,以生成预测的链路中继能力632b值,该预测的链路中继能力632b值与每个训练样本中提供的实际输出值进行比较。采用反向传播过程来调整隐藏神经元621b使用的权重,以计算其中间状态值。
这里,时间戳614b也代表在拓扑选择器458b使用链路中继分类器600b来生成关于指定的预期链路的链路中继能力632b预测期间收集每个训练样本的指标的时间段(包括当前时间段)。此外,与节点中继分类器600a一样,时间戳614b有助于链路指标与链路中继性能相对于时间指标,从而相对于如上所述重复的时间相关模式(包括使用额外的外部指示)的相关性。
在一个实施例中,预期父节点的节点中继能力632a和预期链路的链路中继能力632b被定义为一个或多个指标(例如,最能代表用户体验的QoE指标)的特定于应用的功能。一个简单的函数可能只包含一个以mbps为单位的吞吐量指标。
在其它实施例中,节点中继能力632a和链路中继能力632b被定义为多个指标的更复杂的函数,其可能包括自适应拓扑服务器300c收集或获得的任何或所有指标。对于本领域技术人员来说显而易见的是,针对特定应用(或内容项)采用的特定功能是设计和工程权衡的结果,目的在于根据(当前或未来)底层网拥塞来区分特定节点和链路的相对性能。
如上所述,无论如何计算和量化,节点中继能力632a表示预期父节点将内容片段中继到一个或多个未指定子节点的能力,而链路中继能力632b表示预期链路将内容片段传递到该链路的指定子节点的能力。
在一个实施例中,在预定的“历史持续时间”(通常是相对较长的几个月或几年)内生成一组代表性的训练样本。重复使用每组训练样本来训练节点中继分类器600a和链路中继分类器600b。例如,在一个实施例中,收集指标的每个时间段的持续时间是一秒,而历史持续时间是两年。在其它实施例中,使用无限的历史持续时间。
在每一秒钟的时间周期内收集、处理和提交指标作为训练样本时,在历史持续时间内获得的一组指标也会重复提交(在多个“时期”或之前提交的训练样本的迭代中)。以这种方式,节点中继分类器600a和链路中继分类器600b用相对较新的指标连续地“重新训练”。在一个实施例中,在任何历史持续时间内接收到足够多样化的训练样本集时,节点中继分类器600a和链路中继分类器600b被认为是“充分训练的”,以根据拓扑选择器458b的请求生成相应的节点中继能力632a和链路中继能力632b预测。
如上所述,节点中继分类器600a和链路中继分类器600b分别生成关于未来和当前网络拥塞的节点中继能力632a和链路中继能力632b预测。在一个实施例中,由于节点中继分类器600a和链路中继分类器600b使用相对于相应的训练样本输入在时间上滞后的训练样本输出,这样的预测反映了未来的网络拥塞。
例如,如果在“时间n”收集输入指标,则提交给分类器的实际观察到的输出指标是在稍后时间(例如,“时间n+5”或5秒后)收集的指标。通过用滞后的输出指标训练分类器,后续的节点中继能力632a和链路中继能力632b预测反映了未来网络拥塞对这些预测的影响。在另一个实施例中,输出指标没有滞后(即滞后0秒),反映了当前网络拥塞对这些预测的影响。对于本领域技术人员来说显而易见的是,用于充分反映网络拥塞随时间显著变化的频率的滞后量是特定于应用的,并且是通过各种众所周知的专有统计技术来确定的。
c.预测流量需求
在一个实施例中,目的地节点的需求由应用定义(例如,来自每个子节点的5mbps需求)。自适应拓扑服务器300c知道覆盖网络上存在这样的目的地节点,并监视所述目的地节点何时加入或离开覆盖网络。
此外,不同的目的地节点可能有不同的流量需求(无论是测量的还是预测的)。例如,在广播视频场景中,某些观看节点可能能够流式传输HD视频,而其它节点可能仅限于SD视频。对这种不同需求的了解有助于拓扑选择器458b确定覆盖网络拓扑,该覆盖网络拓扑重新分配过剩能力以满足这种不同需求(根据定义的性能标准)。
在其它实施例中,预测引擎455b被用来预测特定目的地节点作为观看者(例如,由二进制“观看者指示”因变量表示)的存在。换句话说,预测引擎455b被用来基于例如由各种指标反映的所述观察节点的先前行为来预测哪些观察节点将是覆盖网络拓扑的一部分。
此外,预测引擎455b也被用来(根据先前的行为)预测所述观察节点的“会话持续时间”。例如,在一个实施例中,具有较长会话持续时间的观察节点被放置在覆盖网络拓扑的较高层,以促进拓扑的稳定性(因为覆盖网络拓扑的较高层的变化具有更大的影响并导致相对更多的链路变化)。
随着时间的推移,目的地节点加入网络又离开网络。通过使用预测引擎455b将这些决策与观察到的指标(包括目的地节点参与网络以使用内容项的时间量)相关联,它可以预测特定节点在任何给定时间是否将是网络的一部分(以及提供预测在任何给定时间覆盖网络中节点总数的累积信息)。
将可能留在网络上的节点与经常断开网络连接的节点区分开来具有显著优势。例如,经常断开网络连接的节点(无论是由于观看者的意图还是设备问题)会导致严重的中断,特别是如果其被配置在相对较高的覆盖网络拓扑级别。每当这些节点从网络中消失时,覆盖网络拓扑必须至少部分重新配置,从而在这些节点的下游产生“波纹”效应。通过将这样的节点放置在覆盖网络拓扑的较低层,这样的影响被减少。相反,将具有更长会话持续时间的节点放置在覆盖网络拓扑的更高层上,通过最小化重新配置的频率和由此导致的中断,提供了更大的稳定性。
预先知道这种低持续时间或高持续时间节点是否可能加入网络(例如,通过观看者指示预测)能够实现预先规划,这又最小化了实现覆盖网络拓扑的重新配置所需的时间。此外,在一个实施例中,基于观看者指示和会话持续时间预测来确定观看者的累积数量,这使得拓扑选择器458b能够配置针对累积观看者的预测数量优化的覆盖网络拓扑。对本领域技术人员来说,基于观看者的累积数量及其单独或平均会话持续时间的覆盖网络拓扑的各种优化(包括启发式算法的使用)将是显而易见的。
2.拓扑选择器
在高层,拓扑选择器458b确定满足定义的特定于应用的性能标准的覆盖网络拓扑。拓扑选择器458b使用某些关键资源来促进这一任务。在一个实施例中,它使用预测引擎455b来为指定的预期节点和链路生成中继能力预测,并且依赖于由应用定义的已知需求以及对加入和离开网络的节点的监视。在其它实施例中,预测引擎455b生成观看者指示和会话持续时间预测,以便于拓扑选择器458b确定满足性能标准的覆盖网络。
在一个实施例中,拓扑选择器458b确定现有和预期父节点的过剩能力(如果有的话),以便转移流量(例如,通过将附加节点连接为所述父节点的子节点)来重新分配这样的过剩能力。为了计算这种过剩能力,拓扑选择器458b利用已知或预测的流量需求以及已知或预测的中继能力信息。
在一个实施例中,拓扑选择器458b基于其各自的相对中继能力对节点进行分类。局部节点中继能力632a和链路中继能力632b预测提供这种中继能力信息,尽管仅在局部节点和链路级别。
例如,A→B和A→C链路的预测链路中继能力632b值可能足以指示节点A是节点B或节点C的合适父节点,但是不足以确定节点A是否具有足够的过剩中继能力来同时向节点B和节点C中继内容。拓扑选择器458b可以通过从预测引擎455b请求节点A的节点中继能力632a值来获得这样的信息。
然而,拓扑选择器458b也考虑任何预期覆盖网络拓扑的节点和链路之间的相互依赖性。例如,除非到节点A的链路足以满足来自节点A的需求(例如,5mbps),否则节点A不能满足节点B或节点C的需求,尽管在其它方面有足够的中继能力预测。因此,当拓扑选择器458b利用由预测引擎455b生成的局部节点中继能力632a和链路中继能力632b预测时,它还执行任何预期覆盖网络拓扑是否满足定义的性能标准的全局评估。
如上所述,即使节点A当前没有子节点,它也可能有过剩能力将内容中继到一个或多个子节点。例如,如果节点A(或具有相似属性的“代理”节点)历史上同时将内容中继到多个子节点,则预测引擎455b可以生成超过节点A的子节点(如果有的话)的当前总需求的节点中继能力。
应当注意,预期的父节点(无论是添加第一子节点还是附加的子节点)可能仅相对于特定的子节点具有过剩能力(例如,由于沿到其它子节点的链路的拥塞)。拓扑选择器458b利用链路中继能力632b预测来识别这方面合适的子节点。
如下文更详细讨论的,拓扑选择器458b除了考虑网络拥塞(在全局拓扑级别以及局部节点和链路级别)对任何给定覆盖网络拓扑及其组成节点和链路的预期性能的影响之外,还考虑了覆盖网络拓扑的情况下上游节点和链路的相互依赖性。
本质上,拓扑选择器458b基于预期覆盖网络拓扑将过剩能力重新分配给需要新的或更好的父节点的程度来评估预期覆盖网络拓扑,即,转移网络流量以满足性能标准,从而执行识别满足性能标准的覆盖网络拓扑的任务。拓扑选择器458b实现该功能以识别满足所定义的性能标准的覆盖网络拓扑的方式将在下面参考图7A-7E(执行全局拓扑级别分析)和图7F(执行局部或部分拓扑级别分析)进行更详细的描述。
应当注意,在一个实施例中,拓扑选择器458b采用非线性和多维优化技术来生成满足性能标准的最优覆盖网络拓扑。在其它实施例中(下面讨论),采用了各种启发式和其它转换。对于本领域技术人员来说显而易见的是,在本发明的范围内,这些转换的任何子集都可以以各种不同的顺序使用。
拓扑选择器458b还(在一个实施例中)从预测引擎455b请求需求预测(包括观看者指示和会话持续时间预测),以便于其对预期覆盖网络拓扑的评估。例如,拓扑选择器458b通过选择某些“超节点”作为预期的父节点并将它们放置在覆盖网络拓扑的相对较高的级别上来赋予它们优先级。这种超节点包括用户已经为优质服务付费的“订户”节点,以及具有相对高的节点中继能力和相对长的预测会话持续时间的节点(例如,永远开启的机顶盒)。如下文更详细时论的,拓扑选择器458b有效地平衡了过剩能力和会话持续时间,以最小化当节点频繁离开网络时引起的中断。
a.全局拓扑级别分析
参考图7A,700a示出了拓扑选择器458b进行初始配置后覆盖网络拓扑状态的一个实施例。从POI或源节点710a开始,拓扑选择器458b随时间将节点添加到覆盖网络(例如,响应于“加入”请求)并从覆盖网络中移除节点(例如,当它们离开网络或变得无响应时),这需要通过添加、移除和以其它方式修改现有链路来对覆盖网络拓扑进行某种程度的重新配置(甚至除重新配置覆盖网络拓扑以解决性能问题并满足性能标准之外,这将在下文中更详细地讨论)。
图700a示出了添加了少量节点(A-V)后的初始配置。如上所述,基于对等的覆盖网络拓扑的使用使得拓扑选择器458b能够利用对等节点自身的过剩能力,并且通过将这种过剩能力重新分配给能力受限的链路来转移流量。
最初,拓扑选择器458b只有很少或没有可用的性能数据来确定如何互连加入网络的初始节点。在一个实施例中,拓扑选择器458b依赖于局部中继能力预测来建立初始覆盖网络拓扑。例如,第一节点A连接到源节点710a。但是第二节点B也可以连接到源节点710a,或者可以作为节点A的子节点连接。
这种初始决策不是任意的,尽管性能数据相对较少,因其基于提供给预测引擎455b的初始节点的已知属性(例如节点的上行链路速度),以及“代理”节点和链路的类似属性(如上所述)。随着时间的推移,拓扑选择器458b获得逐渐更准确的中继能力信息(基于来自预测引擎455b的中继能力预测),以便识别具有过剩能力的节点来将内容中继到一个或多个子节点,如图700a所示。
虽然图示的类别720a包括低、中和高中继能力,但是提供这三个类别是为了简化对图表700a的解释。在其它实施例中,可使用更少或更多的类别。在又一实施例中,拓扑选择器458b利用覆盖网络中每个节点的节点中继能力632a。
图700a示出了被配置为加入覆盖网络的初始节点集的4级覆盖网络拓扑,其中节点A-E在“最高”级别730a(离源节点710a最近),接下来是下一级别740a的节点F-N、第三级别750a的节点O-U,最后是第四和“最低”级别760a的节点V。
改进765a总结了初始配置过程的主要结果。例如,虽然父节点E具有“低”中继能力,但是在这种情况下,来自预测引擎455b的节点中继能力632a值足以满足来自节点N的流量需求。
此外,节点N(具有“中等”中继能力)也同时满足来自子节点T和U的流量需求。类似地,节点B(具有“高”中继能力)同时满足来自子节点G、H、I、J和K的流量需求。如下文更详细讨论的,拓扑选择器458b不仅确定(例如,通过分析局部节点中继能力632a预测)父节点B和N是否具有足够的过剩中继能力来同时向多个子节点中继内容,还确定这样的子节点的数量和特定合适子节点的标识。例如,如上所述,诸如节点N的父节点可以具有足够的过剩能力来同时将内容中继到2个子节点(诸如节点T和U),但是不将内容中继到2个其它子节点(例如,由于沿到这些节点的链路的拥塞,如链路中继能力632b预测较低或不足所证明的)。
尽管拓扑选择器458b迄今为止在生成如图700a所示的初始覆盖网络拓扑时起到了作用,但是仍然存在各种问题,如存在问题775a所示。应当注意,在一个实施例中,拓扑选择器458b在决定是否重新配置当前覆盖网络拓扑(例如,改善或优化覆盖网络拓扑,无论其当前是否满足性能标准)之前,确定在该过程的每个阶段是否满足性能标准。
假设拓扑选择器458b解决了这种情况下的存在问题775a,它确定节点G当前未满足来自其四个子节点O、P、Q和R的累积流量需求。例如,关于这四条链路的一个或多个链路中继能力632b预测可以指示该特定链路上的流量需求没有得到满足。关于P→V链路的类似预测也表明该链路的流量需求未得到满足。下面参照图7B讨论拓扑选择器458b对这些问题的响应。
其它更普遍的问题包括相对较低中继能力的节点(例如,节点A、C和E)存在于覆盖网络拓扑的较高层。上游对相对较低中继能力节点的依赖可能导致无法满足性能标准,从而“波及”覆盖网络拓扑的级别。
此外,在这种情况下,当来自多个节点的流量需求由其父节点满足时,这些父节点的过剩能力不会分发在当前覆盖网络拓扑的能力受限链路上。因此,未来更有可能出现能力受限的问题。在理想的情况下,流量将被转移以重新分配过剩能力,以满足能力受限链路的需求,而额外的过剩能力仍可用于解决类似的未来问题。
下面参照图7C和7D讨论拓扑选择器458b对这些更一般问题的响应。应当注意,在一个实施例中,图7B-7E中描述的解决方案作为单个重新配置过程的一部分并行执行。在其它实施例中,这些过程的子集以特定顺序执行,并且可以在拓扑选择器458b识别出满足性能标准的替换覆盖网络拓扑时在任意点终止。然而,为了说明拓扑选择器458b如何改进当前覆盖网络拓扑,不管是作为识别最佳覆盖网络拓扑的过程的一部分,还是仅仅是满足性能标准的过程的一部分,下面单独描述这些过程中的每一个。
参考图7B,700b示出了在拓扑选择器458b执行某些“低性能”转换之后,图7A所示的覆盖网络拓扑的修改状态(从源节点710b馈送)。如上所述,拓扑选择器458b可以选择不执行这种转换(例如,如果性能标准已经满足),或者可以选择以任何顺序执行图7A-7E所示的任何转换(或者图7F所示的局部拓扑分析)。对于本领域技术人员来说,显然可以在不脱离本发明精神的情况下实现这种设计和工程权衡。
如改进765b所示,拓扑选择器458b通过将节点V分配给不同的父节点(节点I)来解决P→V链路的低性能,从而创建I→V链路。在一个实施例中,部分基于关于父节点I的节点中继能力632a预测和关于I→V链路的链路中继能力632b预测来选择节点I。例如,节点I和节点M都是“中等”能力节点(根据图例720b),没有子节点,因此具有潜在的更大的过剩能力。在这种情况下,关于I→V链路的链路中继能力632b预测超过M→V链路的预测。
在其它实施例中,基于父节点I的级别740b(比前父节点P的级别750b高一个级别)来选择父节点I,以努力减少等待时间(例如,通过减少跳数)。在本实施例中,从更高的级别(例如,730b)选择父节点被认为太具有破坏性,因为这种变化的影响将“波及”更多的覆盖网络拓扑,从而具有更多的(潜在的破不良性)下游影响。最小化这种破坏水平的决定只是拓扑选择器458b的功能实现中进行的设计和工程权衡的一个例子。
类似地,拓扑选择器458b将节点R与“过载”的父节点G断开,并选择新的父节点J来形成J→R链路。在这种情况下,子节点R基于其相对较低的链路中继能力632b预测(与父节点G的其它子节点O、P和Q相比)被断开。此外,拓扑选择器458b基于父节点J的节点中继能力632a以及J→R和J→S链路的链路中继能力632b(以及其它因素),确定父节点J具有足够的过剩能力来同时向节点R和节点S中继内容。
注意,虽然节点M(也具有“中等”中继能力)没有当前子节点(因此可能具有过剩能力),但是在该场景中的节点中继能力632a预测(关于节点M)和链路中继能力632b预测(关于M→R链路)不足以“超出”潜在父节点J(尽管节点J已经具有现有子节点S)。这里,在不脱离本发明的精神的情况下,各种设计和工程权衡(为断开的节点R选择足够或最佳的父节点)对于本领域技术人员来说也是显而易见的。
尽管在“低性能”链路方面有这些改进765b,但存在问题775b仍有待解决。在一个实施例中,如果满足性能标准,拓扑选择器458b选择图700b所示的重新配置的覆盖网络拓扑作为当前覆盖网络拓扑的潜在替代。在其它实施例中,拓扑选择器458b寻求进一步改善(或者,在一个实施例中,优化)覆盖网络拓扑。
例如,具有相对较低中继能力的节点(例如节点A、C和E)仍然存在于覆盖网络拓扑的高层730b。如上所述,依赖这种节点的下游效应会导致在覆盖网络拓扑的较低层满足流量需求的各种失败,这又导致满足性能标准的失败。此外,在这种情况下,额外的能力受限链路仍需通过从节点(如节点M和其它节点)重新分配过剩能力来解决。下面参照图7C讨论拓扑选择器458b解决这些存在问题775b的方式。
图7C中的700c示出了在拓扑选择器458b执行某些“级别移动”转换之后,图7B中示出的覆盖网络拓扑的修改状态。如上所述,关于图7A-7E示出的转换的顺序和程度(包括关于除启发式技术之外或者代替启发式技术是否采用非线性和多维优化的决定)是本发明范围内的设计和工程权衡的结果。
如改进765c所示,拓扑选择器458b通过将节点A、C和E从级别730c向下移动到级别740c,同时将节点G、J和N从级别740c向上提升到级别730c,解决了存在于覆盖网络拓扑的相对较高级别的相对较低中继能力节点(根据图例720c)的问题。节点B(具有高中继能力)仍在向5个子节点中继内容。但是节点B现在正在将内容中继到节点A和节点C(除节点H、节点I和节点K之外),因为节点G和节点J已经被提升到级别730c。由于这种“级别移动”转换,在覆盖网络拓扑的较高层可能存在较少的能力受限链路。
此外,相对较高的中继能力节点(如G、J和N)现在将内容中继到较高级别的子节点,最终导致较低的延迟。例如,当节点G(现在在730c级)仍然将内容中继到子节点O、P和Q(现在在740c级)时,这些节点在网络上更接近源节点710c,在覆盖网络拓扑的最低级别750c留下更少的节点(因此总跳数更少)。如上所述,来自源节点710c的跳数是整体性能中的相关因素(尽管不是决定性因素)。
最后,应该注意,节点K现在被归类为具有中等中继能力(而不是其先前的低中继能力)。这说明节点的中继能力不仅相对于其预期的子节点而变化,而且基于性能指标的变化而随时间变化。如上所述,这种变化可能是各种因素的结果。例如,节点K的上行链路速度可能在给定的时间段内增加。或者从节点K到其现有子节点的链路在该时间段内可能不那么拥塞。不管这些变化的原因是什么,拓扑选择器458b适应这些变化,如下面参照图7D所讨论的。
在一个实施例中,拓扑选择器458b采用会话持续时间预测来帮助将节点放置在覆盖网络拓扑的相对较高或较低的级别,即,在能力与会话持续时间之间进行权衡。例如,将具有低预测会话持续时间的高能力节点放置在覆盖网络拓扑的高层次上可能导致每当该节点离开网络时频繁且显著的中断,包括覆盖网络拓扑的额外耗时的重新配置,这反过来将负面影响自适应拓扑服务器300c随时间持续满足性能标准的能力。
尽管这些“级别移动”转换导致了改进765c,但是仍然存在尚未解决的存在问题775c。这里,同样,如果满足性能标准,拓扑选择器458b(在一个实施例中)选择图700c所示的重新配置的覆盖网络拓扑作为当前覆盖网络拓扑的潜在替代。在其它实施例中,拓扑选择器458b寻求进一步改善(或者,在一个实施例中,优化)覆盖网络拓扑,如下面参照图7D所讨论的。
存在问题775c包括能力受限链路的存在,这些链路尚未通过从覆盖网络拓扑中的其它地方重新分配过剩能力来解决。例如,在这种情况下,链路B→A、A→F、G→Q和C→L仍然是能力受限的,如从预测引擎455b获得的其各自的链路中继能力632b预测所示。下面参照图7D讨论拓扑选择器458b解决这些存在问题775c的方式。
图7D中的700d示出了在拓扑选择器458b执行某些“过剩能力的再分配”转换之后,图7C中示出的覆盖网络拓扑的修改状态。如上所述,关于图7A-7E示出的转换的顺序和程度(包括关于除启发式技术之外或者代替启发式技术是否采用非线性和多维优化的决定)是本发明范围内的设计和工程权衡的结果。
如改进765d所示,拓扑选择器458b通过进行各种链路改变来将这些链路的子节点重新分配给具有过剩能力的父节点(并且在一个实施例中,具有足够高的会话持续时间预测),从而解决了能力受限链路B→A、A→F、G→O和C→L的问题。
例如,拓扑选择器458b通过将节点A从节点B(根据图例720d具有高中继能力)断开,节点Q从节点G断开来释放最高级别730d(离源节点710d最近)的过剩能力(用于将来)。它还将节点F从能力受限的A→F链路断开,并将节点L从能力受限的C→L链路断开。
拓扑选择器458b先前将节点N提升到级别730d(基于对其过剩能力的评估),将断开的节点F分配为节点N的第二子节点(加入子节点E)。请注意,节点N之前已经证明有足够的能力将内容中继到多个子节点(T和U)。然而,如上所述,仅这一事实不足以证明沿N→F链路的过剩能力。然而,在这种情况下,节点中继能力632a预测(关于节点N)和链路中继能力632b预测(关于N→F链路)提供了这种过剩能力的充分证据。
此外,拓扑选择器458b将断开的节点O作为第二子节点分配给父节点I(具有中等中继能力),加入子节点V。它还将断开的节点A和L分配给父节点K(刚刚提升到中等中继能力)。这些父节点分配(从级别740d到750d)有效地将过剩能力重新分配给以前能力受限链路的各个子节点。
因此,没有重大的存在问题775c,拓扑选择器458b确认满足性能标准(至少目前如此)。通过在覆盖网络拓扑的较高层释放过剩能力,拓扑选择器458b提供了用于在相对较高层(距源节点710d的跳数较少)解决未来能力受限问题的选项。
参考图7E,流程图700e示出了拓扑选择器458b执行的各种初始配置和重新配置转换的一个实施例。如上所述,在其它实施例中,拓扑选择器458b识别最佳覆盖网络拓扑或者以不同的顺序执行这些转换的子集,直到满足性能标准。对于本领域技术人员来说显而易见的是,在不脱离本发明精神的情况下,该功能可以以多种不同的方式组合以满足性能标准。
从步骤710e开始,拓扑选择器458b识别新节点和孤节点。如上所述,在一个实施例中,新节点向自适应拓扑服务器300c发起请求,而孤节点在其父节点明确离开网络或在预定阈值时间段内未能响应时由覆盖网络拓扑管理器350c识别。在其它实施例中,预测引擎455b生成观看者指示和会话持续时间预测,这有助于拓扑选择器458b的这种确定。拓扑选择器458b因其需要新的父节点而识别这些新节点和孤节点,完全不考虑基于性能的重新配置。
除了这些新节点和孤节点,拓扑选择器458b还在一个实施例中识别“低性能”节点(即能力受限链路的子节点),并将它们与其当前的父节点断开(如上面参考图7B所讨论的)。在本实施例中,这些新的、孤的和断开的节点具有分配给新的父节点的优先权。
在步骤720e中,拓扑选择器458b确定当前和预期父节点的节点中继能力632a,并相应地对这些节点进行排序(如上面参考图7A所讨论的)。如上所述,在一个实施例中,这样的节点按类别排序,而在其它实施例中,这样的节点根据其各自的节点中继能力632a排序。
在步骤730e中,拓扑选择器458b执行低性能转换(如上面参考图7B所讨论的,以及下面参考图7F所讨论的),以将新的父节点分配给先前识别的新的、孤的和断开的节点。在步骤740e中,拓扑选择器458b执行级别移动转换(如上面参考图7C所讨论的),以将具有相对较高中继能力的节点提升到覆盖网络拓扑的较高级别(并将具有相对较低中继能力的节点降级到覆盖网络拓扑的较低级别)。在另一个实施例中,拓扑选择器458b还对到任何目的地节点的跳数施加预定义的限制。如上所述,这种决策考虑了节点和链路的相互依赖性,以及节点中继能力632a和链路中继能力632b的预测。
在步骤750e中,拓扑选择器458b执行过剩能力再分配转换(如上面参考图7D所讨论的)。如上所述,通过在需要的地方转移流量来重新分配一些过剩能力,同时释放剩余的过剩能力(特别是在覆盖网络拓扑的更高层),以解决未来能力受限的问题。如同上面的步骤740e,这样的决定考虑了节点和链路的相互依赖性,以及节点中继能力632a和链路中继能力632b的预测。
在一个实施例中,拓扑选择器458b重复执行步骤730e、740e和750e。这些步骤中的每一个被依次执行,或者在另一个实施例中,被同时执行(例如,在非线性和多维优化的环境中),直到所得到的覆盖网络拓扑满足每个步骤775e的性能标准(或者在其它实施例中,直到生成最优的覆盖网络拓扑)。在步骤780e中,为当前覆盖网络拓扑的潜在重新配置选择最终覆盖网络拓扑(满足或最接近满足性能标准)。
虽然图7A-7D示出了具有相对少量节点的覆盖网络拓扑,但是这些概念同样适用于显著更大的覆盖网络拓扑,该覆盖网络拓扑实际上包括任何类型的图中的任何数量的节点和互连链路。在一个实施例中,拓扑选择器458b采用预测引擎455b来获得节点中继能力632a和链路中继能力632b的预测,而需求是基于定义的性能标准和观察节点的监视活动已知的。在另一个实施例中,如上所述,预测引擎455b预测需求(基于观看者指示和会话持续时间预测)。在其它实施例中,测量而不是预测这些能力相关和需求相关值中的一些或全部。
在一个实施例中,如上所述,一旦拓扑选择器458b识别出满足性能标准的预期覆盖网络拓扑,它就停止处理并传递该覆盖网络拓扑,用于当前覆盖网络拓扑的潜在替换。在其它实施例中,拓扑选择器458b评估所有预期覆盖网络拓扑,并选择“最佳”拓扑。在另一个实施例中,最佳拓扑是“最满足”(或最接近满足)性能标准的拓扑。
在其它实施例中,拓扑选择器458b通过限制其向预测引擎455b请求链路中继能力632b预测的预期链路的数量,即通过减少或过滤掉最不可能是合格父节点的节点,来限制预期覆盖网络拓扑的数量。例如,在一个实施例中,拓扑选择器458b选择“性能最低”的节点,并将这些节点排除在考虑范围之外。
在又一实施例中,拓扑选择器458b首先从预测引擎455b获得节点中继能力632a预测,并且仅将那些具有最高预测能力的节点视为潜在父节点。例如,仅选择节点中继能力632a预测的前20%中的那些节点,以消除80%的潜在父节点。结果,预期链路中继能力632b预测的数量显著减少,因为只有前20%中的节点是指定预期链路的父节点。对于本领域技术人员来说显而易见的是,确定适当数量或百分比的被排除的节点和/或链路是各种特定于应用的设计和工程权衡的结果。
在拓扑选择器458b不考虑节点(以及链路)的这些实施例中,仍然必须考虑被排除的节点和链路,因为它们仍然必须接收作为所识别的(重新配置的)覆盖网络拓扑的一部分的内容。如果这些节点当前不是父节点,它们的内容(作为叶节点)没有下游影响。然而,如果这些节点是当前父节点,则拓扑选择器458b在完成上述过程后执行附加步骤(在一个实施例中)。在这个附加步骤中,这些被排除的父节点被重新分配为“新”节点,它们的子节点被重新分配为“孤”节点。拓扑选择器458b使用下面参考图7F描述的方法,有效地重新配置其选择的覆盖网络拓扑,以集成这些新节点和孤节点。
b.局部(节点和链路级别)分析
除了上述的全局“拓扑级别”方法,包括那些预期覆盖网络拓扑以及组件链路和节点的排列减少的方法,拓扑选择器458b还在其它实施例中采用局部(节点和链路级别)方法,包括局部优化。在一个实施例中,拓扑选择器458b选择当前覆盖网络拓扑的子集,拓扑选择器458b在其上执行如上述图7A-7E所描述的分析。例如,鉴于上面讨论的上游依赖关系的性质,树状拓扑的较低层的变化不太可能产生显著的下游影响。
在一个实施例中,拓扑选择器458b以“自下而上”的方法分析当前覆盖网络拓扑的“较低”部分,而不是识别满足性能标准的完全独立的“新”覆盖网络拓扑。换句话说,拓扑选择器458b从最低级别(最接近“叶”节点)开始分析树的每个“级别”。拓扑选择器458b分析树的每一个连续的更高级别,直到达到预定的“百分比改进”(并且满足性能标准),此时重新配置过程终止。
在其它实施例中,拓扑选择器458b基于通过对当前覆盖网络拓扑的各种组件区域执行定期性能评估而识别的“故障区域”,对当前覆盖网络拓扑的选定级别执行局部优化。换句话说,拓扑结构中表现出“性能下降”的部分被重新配置,但没有明确考虑这种重新配置的下游影响(这些影响由上面讨论的全局方法来考虑)。
在图7F的流程图700f所示的一个实施例中,拓扑选择器458b采用替代的“以子节点为中心”(而不是“以父节点为中心”)的方法。拓扑选择器458b不是限制要分析的父节点(并因此限制链路)的数量,而是识别“需要”新的父节点的子节点,然后为这些节点识别“足够的”或“最佳的”父节点,与整体识别满足性能标准的覆盖网络拓扑相反。
换句话说,只修改到该节点子集的链路。一旦为这些节点分配了新的父节点,当前覆盖网络拓扑中的剩余链路将不受干扰(直到重新评估重新配置的覆盖网络拓扑)。
例如,在步骤710f中,覆盖网络拓扑管理器350c识别需要新的父节点的三组对等节点。第一组包括自拓扑选择器458b上次重新评估当前覆盖网络拓扑以来请求观察(使用)内容项的新节点。第二组包括孤节点,其父节点离开网络或停止观看或使用内容项。
如上所述,在一个实施例中,这些新节点和孤节点还包括在上面参照图7A-7E描述的全局方法期间被排除在考虑之外的节点。在本实施例中,上面描述的排除或过滤过程先于参考流程图700f描述的过程。
第三组包括“低性能”节点,即其性能未能满足规定的性能标准或低于性能阈值水平,因此被认为在不久的将来有未能满足性能标准的危险的节点。在一个实施例中,基于相对于预期“低性能”节点的父节点获得的节点中继能力632a预测来确定阈值性能水平。例如,那些其父节点的预测值低于阈值性能水平的节点被认为是“低性能”节点。
在一个实施例中,在每个时间段识别低性能节点的最大数量(或上限)。在另一个实施例中,基于低性能节点的下限(以及上限),阈值性能水平是可变的。
一旦这些“目标”新的、孤的和低性能节点被识别为需要新的父节点,拓扑选择器458b在步骤720f中请求来自预测引擎455b的节点中继能力632a预测。因为节点中继能力632a预测只需要指定与父节点相关联的节点指标,所以步骤720f对于每个预期父节点只执行一次(在本实施例中),因为相同的节点中继能力632a预测适用于所有目标子节点。
在一个实施例中,对使用内容项的所有节点请求节点中继能力632a预测,因为所有这些节点都是任何给定目标节点的预期父节点。在其它实施例中,仅针对预期父节点的子集请求节点中继能力632a预测(例如,基于如上所述的历史“不良父节点”指标)。
在获得所有相关的节点中继能力632a预测之后,步骤730f启动识别目标节点的“合适”父节点的过程(对每个目标节点重复)。拓扑选择器458b在步骤740f中从预测引擎455b请求针对到正在处理的当前目标节点的每个预期链路的链路中继能力632b预测(以及在另一个实施例中,观看者指示和会话持续时间预测)。换句话说,对于正在考虑的每个预期父节点(在上面的步骤720f中确定),为从该父节点到正在处理的当前目标节点的链路请求链路中继能力632b预测。在一个实施例中,基于(目标子节点的)预期父节点被排除为“不良父节点”,基于关于以上步骤720f描述的相同考虑,某些链路被排除。
拓扑选择器458b然后在步骤750f中基于来自上述步骤720f的节点中继能力632a预测和来自上述步骤740f的链路中继能力632b预测来确定当前目标的父节点。在一个实施例中,对于每个给定的目标节点,基于性能标准选择最佳父节点,即“最符合”(或最接近符合)性能标准的父节点。在其它实施例中,一旦识别出任何“合适的”父节点,即满足性能标准的父节点,该过程就完成了。
在另一个实施例中,如果多个父节点具有足够的到目标子节点的链路中继能力632b(以及足够的过剩能力以将目标子节点添加到其现有子节点,如果有的话),则选择具有最高过剩能力的父节点。在其它实施例中,选择具有最低(但足够)过剩能力的父节点。对于本领域技术人员来说,为目标节点选择合适的父节点的各种其它算法将是显而易见的。
如果目标节点仍然存在(根据步骤775f),则该过程从步骤730f重复,因为(如上所述)已经为(任何预期目标子节点的)所有预期父节点获得了节点中继能力632a预测。一旦为所有目标节点选择了合适的(或最佳的)父节点,该过程在步骤790f结束。
3.其它实施例
如上参考图2B所述,节点可以被用来中继它不使用的内容项的片段(例如,因为它使用另一个内容项的片段)。在这种情况下,目的是利用不属于当前覆盖网络的对等节点的未使用或过剩的中继能力。
其中使用这些“外部”节点的一个这样的场景的示例是视频直播事件,其中多个分辨率(例如,视频内容项的480p和1080p版本)可用于分发。本质上,视频的480p版本是通过第一覆盖网络拓扑传送的一个内容项,而视频的1080p版本是通过第二覆盖网络拓扑“同时”传送的第二不同内容项。
当前正在使用480p或1080p内容的观看者可被识别为具有过剩中继能力。然后,这样的观看者被添加到另一个覆盖网络拓扑(用于中继,而不是使用),并且因此是两个不同(尽管重叠)覆盖网络拓扑的一部分。
在这种情况下,目的是向不能使用和/或中继1080p内容的节点传送480p内容。这些节点形成480p覆盖网络拓扑。但是,被识别为具有过剩中继能力的中继1080p内容的节点充当用于改善480p覆盖网络的性能的宝贵资源(即,通过利用该过剩中继能力)。
使用这些“外部”节点的另一种情况涉及空闲的设备。例如,在一个实施例中,客户端软件(在图3B中示出)安装在持续连接到互联网的“永远开启的”机顶盒中,但是通常不使用任何内容项。在这种情况下,这种设备通常具有过剩中继能力,因为它们大多空闲。因此,它们是将内容项的片段中继到需要额外中继节点的覆盖网络拓扑的目的地节点的最佳候选。
在确定当前覆盖网络拓扑可以受益于这种空闲节点时,覆盖网络拓扑管理器350c通知拓扑选择器358c这种节点的身份。拓扑选择器358c然后将这样的节点(即,作为“新节点”)添加到现有的覆盖网络拓扑中,如上所述。在这种情况下,覆盖网络拓扑管理器350c基于一个或多个当前覆盖网络拓扑的状态(即,在最需要这种空闲节点的地方),而不是基于决定开始观看或停止观看内容项的用户的突发奇想来添加和移除这种节点。
在其它实施例中,采用非树状拓扑,使得节点能够同时从多个父节点接收内容片段。例如,在这种情况下,体育赛事的观看者接收多个不同的广播并在其中切换(例如,在不同的直播解说员之间切换,包括其本地喜好)。在该场景的其它实施例中,为了克服吞吐量限制,例如任何单个源的上行链路限制,从多个不同的源接收大型医疗或其它数据文件。
在另一个实施例中,覆盖网络拓扑管理器350c为节点分配“时隙”,以便于为该节点分配多个子节点(或者,在另一个实施例中,多个父节点)。例如,覆盖网络拓扑管理器350c基于节点的初始指标(例如,连接类型、上行链路和下行链路速度等)向节点分配默认固定数量的中继时隙。然后,它基于随时间识别的过剩能力来确定是增加还是减少节点的当前中继时隙数量。以这种方式,具有更大过剩能力的节点被分配更多的子节点。在允许一个节点具有多个父节点的其它实施例中,对于“输入”时隙采用相同的概念。
如上所述,本发明实际上可以用于涉及在多个用户节点之间分发数字内容的任何类型的应用。例如,在VOD场景中,不同于广播视频场景,节点在不同时间接收内容项的片段。在这种情况下,如上所述,每个用户节点设备300b中的内容阵列管理器370b利用其缓冲器来促进片段的长时间存储(例如,5-10分钟,而广播视频的典型时间是30秒)。随着缓冲器大小的增加,更多的节点可用于广播其当前不使用的内容。
覆盖网络拓扑管理器350c跟踪这些不同的时间段,并动态调整分配给各个父节点的缓冲器的大小,而不是在用户请求内容项的每个不同时间段运行不同的覆盖网络拓扑。例如,如果100个用户在100个稍微偏移的时间段请求观看内容项,覆盖网络拓扑管理器350c不运行100个不同的覆盖网络拓扑,因为每个覆盖网络将具有单个节点(或者至少非常少的节点)。
相反,通过增加专用于内容项的缓冲器的大小,节点有效地沿数量少得多的不同(但是重叠的)覆盖网络拓扑来分发内容,每个覆盖网络拓扑都具有精准同步的缓冲器大小,以在不同时间向不同用户提供片段(全部由覆盖网络拓扑管理器350c管理)。例如,在一个实施例中,使用10分钟的缓冲器来允许通过十几个重叠的覆盖网络拓扑来分发两小时的视频。在其它实施例中,附加特征(暂停、倒回等)是通过在不同的覆盖网络拓扑中有效地移动节点来实现的。
本文已经参照附图所示的具体实施例描述了本发明。应当理解,根据本公开,本领域技术人员可以在本发明的范围内设想并实施本文公开的概念的附加实施例。
Claims (16)
1.一种用于确定满足关于内容项的一个或多个片段沿覆盖网络的分发的一组一个或多个特定于应用的性能标准的覆盖网络拓扑的方法,所述覆盖网络拓扑包括所述覆盖网络的多个节点和多个链路,每个链路与所述多个节点中的一对逻辑互连,以促进所述一个或多个片段沿所述链路在所述一对节点之间的分发,所述方法包括:
(a)在连续的时间段内周期性地测量和处理多个指标,对于每个时间段,每个指标反映与在所述时间段内使用的当前覆盖网络拓扑的节点或链路相关联的属性,其中所述处理后的指标反映所述当前覆盖网络拓扑的节点中继属性和链路中继属性;
(b)基于与预期覆盖网络拓扑的节点和链路相关联的所述处理后的指标,预测所述节点和链路的节点中继能力和链路中继能力;以及
(c)至少部分基于所述节点和链路的所述预测节点中继能力和链路中继能力,确定所述预期覆盖网络拓扑是否满足所述性能标准。
2.一种用于重新配置内容项分发在其上的覆盖网络拓扑的方法,其中每个覆盖网络拓扑包括多个网络节点和与所述多个网络节点互连的多个链路;所述方法包括以下步骤:
(a)生成关于当前覆盖网络拓扑的多个指标;
(b)基于所述多个指标,生成关于一组指定节点和链路的多个预测;以及
(c)基于所述多个预测识别预期覆盖网络拓扑。
3.根据权利要求2所述的方法,其中所述预期覆盖网络拓扑满足代表对所述指定节点和链路的性能的一个或多个约束的性能标准。
4.根据权利要求2所述的方法,其中每个覆盖网络拓扑是基于对等的覆盖网络拓扑。
5.根据权利要求2所述的方法,进一步包括生成观看者指示预测的步骤,所述观看者指示预测指示每个网络节点是否将是所述预期覆盖网络拓扑的一部分。
6.根据权利要求5所述的方法,进一步包括生成会话持续时间预测的步骤,所述会话持续时间预测指示将成为所述预期覆盖网络拓扑的一部分的那些网络节点将保持为所述预期覆盖网络拓扑的一部分的持续时间。
7.根据权利要求2所述的方法,其中所述多个预测包括对所述指定节点的所述节点中继能力和所述指定链路的所述链路中继能力的预测。
8.根据权利要求2所述的方法,其中所述多个指标包括节点指标、链路指标和时间戳,在所述时间戳期间获得所述节点指标和链路指标。
9.一种用于重新配置内容项分发在其上的覆盖网络拓扑的自适应拓扑服务器,其中每个覆盖网络拓扑包括多个网络节点和与所述多个网络节点互连的多个链路;所述自适应拓扑服务器包括:
(a)指标处理器,其生成关于当前覆盖网络拓扑的多个指标;
(b)预测引擎,其基于所述多个指标生成关于一组指定节点和链路的多个预测;以及
(c)拓扑选择器,其从所述预测引擎获得关于所述一组指定节点和链路的多个预测,并基于所述多个预测识别预期覆盖网络拓扑。
10.根据权利要求9所述的自适应拓扑服务器,其中所述拓扑选择器识别满足代表一个或多个性能约束的性能标准的预期覆盖网络拓扑。
11.根据权利要求9所述的自适应拓扑服务器,其中每个覆盖网络拓扑是基于对等的覆盖网络拓扑。
12.根据权利要求9所述的自适应拓扑服务器,其中所述预测引擎生成观看者指示预测,所述观看者指示预测指示每个网络节点是否将是所述预期覆盖网络拓扑的一部分。
13.根据权利要求12所述的自适应拓扑服务器,其中所述预测引擎生成会话持续时间预测,所述会话持续时间预测指示将成为所述预期覆盖网络拓扑的一部分的那些网络节点将保持为所述预期覆盖网络拓扑的一部分的持续时间。
14.根据权利要求9所述的自适应拓扑服务器,其中所述预测引擎生成所述指定节点的所述节点中继能力和所述指定链路的所述链路中继能力。
15.根据权利要求9所述的自适应拓扑服务器,其中由所述指标处理器生成的所述多个指标包括节点指标、链路指标和时间戳,在所述时间戳期间获得所述节点指标和链路指标。
16.一种用于沿各自的覆盖网络拓扑同时分发多个内容项的方法,其中每个覆盖网络拓扑包括多个网络节点和与所述多个网络节点互连的多个链路;所述方法包括以下步骤:
(a)沿第一覆盖网络拓扑分发第一内容项;
(b)沿第二覆盖网络拓扑分发第二内容项,其中所述第一内容项和第二内容项沿其各自的覆盖网络拓扑同时分发;
(c)沿所述第一覆盖网络拓扑向网络节点分发所述第一内容项,其中所述网络节点包括在所述第一覆盖网络拓扑和所述第二覆盖网络拓扑中,并且其中所述网络节点使用所述第一内容项;以及
(d)沿所述第二覆盖网络拓扑将所述第二内容项分发到所述网络节点,其中所述网络节点将所述第二内容项中继到所述第二覆盖网络拓扑的另一个网络节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310779158.2A CN116827850A (zh) | 2017-04-21 | 2018-04-20 | 用于预测性覆盖网络体系结构的设备及其方法 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762488502P | 2017-04-21 | 2017-04-21 | |
US62/488,502 | 2017-04-21 | ||
US201862655703P | 2018-04-10 | 2018-04-10 | |
US62/655,703 | 2018-04-10 | ||
PCT/EP2018/060169 WO2018193082A1 (en) | 2017-04-21 | 2018-04-20 | Predictive overlay network architecture |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310779158.2A Division CN116827850A (zh) | 2017-04-21 | 2018-04-20 | 用于预测性覆盖网络体系结构的设备及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110915168A true CN110915168A (zh) | 2020-03-24 |
CN110915168B CN110915168B (zh) | 2023-07-18 |
Family
ID=62116829
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880040442.5A Active CN110915168B (zh) | 2017-04-21 | 2018-04-20 | 预测性覆盖网络体系结构 |
CN202310779158.2A Pending CN116827850A (zh) | 2017-04-21 | 2018-04-20 | 用于预测性覆盖网络体系结构的设备及其方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310779158.2A Pending CN116827850A (zh) | 2017-04-21 | 2018-04-20 | 用于预测性覆盖网络体系结构的设备及其方法 |
Country Status (8)
Country | Link |
---|---|
US (5) | US10735268B2 (zh) |
EP (1) | EP3613177A1 (zh) |
JP (1) | JP7229936B2 (zh) |
KR (2) | KR102569433B1 (zh) |
CN (2) | CN110915168B (zh) |
BR (1) | BR112019022012A2 (zh) |
MX (2) | MX2019012502A (zh) |
WO (1) | WO2018193082A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014544A (zh) * | 2021-01-25 | 2021-06-22 | 阳光凯讯(北京)科技有限公司 | 基于webRtc无中心媒体链路建立方法及装置 |
CN113747473A (zh) * | 2021-09-01 | 2021-12-03 | 苏州佩林软件技术有限公司 | 一种自组网的方法和自组网系统 |
CN113904974A (zh) * | 2021-10-09 | 2022-01-07 | 咪咕文化科技有限公司 | 智能路由方法、装置及设备 |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9769536B2 (en) | 2014-12-26 | 2017-09-19 | System73, Inc. | Method and system for adaptive virtual broadcasting of digital content |
TWI602064B (zh) * | 2016-11-23 | 2017-10-11 | 財團法人工業技術研究院 | 資料傳輸系統,以及其所使用的拓樸架構建立方法與拓樸架構修復方法 |
US10735268B2 (en) | 2017-04-21 | 2020-08-04 | System73 Ltd. | Predictive overlay network architecture |
US11018949B2 (en) * | 2017-07-14 | 2021-05-25 | Accenture Global Solutions Limited | System for generating an architecture diagram |
US11057294B2 (en) * | 2017-08-04 | 2021-07-06 | Nippon Telegraph And Telephone Corporation | Route control method and route setting device |
US11126533B2 (en) | 2017-08-18 | 2021-09-21 | Vmware, Inc. | Temporal analysis of a computing environment using event data and component relationship data |
EP3673372A1 (en) * | 2017-08-22 | 2020-07-01 | Convida Wireless, LLC | Overlay resource trees in a communications network |
US20190312810A1 (en) * | 2018-04-10 | 2019-10-10 | System73 Ltd | Adaptive overlay network architecture |
US11488044B2 (en) * | 2018-04-27 | 2022-11-01 | P44, Llc | Classification and transformation of sequential event data |
US10892959B2 (en) * | 2018-07-11 | 2021-01-12 | International Business Machines Corporation | Prioritization of information technology infrastructure incidents |
US20200036639A1 (en) * | 2018-07-26 | 2020-01-30 | Cable Television Laboratories, Inc. | Methods for predicting future network traffic |
US11196797B2 (en) * | 2018-08-21 | 2021-12-07 | International Business Machines Corporation | Transferring files between computer nodes on different networks |
US20200134421A1 (en) * | 2018-10-27 | 2020-04-30 | Cisco Technology, Inc. | Assurance of policy based alerting |
US11265235B2 (en) * | 2019-03-29 | 2022-03-01 | Intel Corporation | Technologies for capturing processing resource metrics as a function of time |
US11899786B2 (en) * | 2019-04-15 | 2024-02-13 | Crowdstrike, Inc. | Detecting security-violation-associated event data |
US11675563B2 (en) * | 2019-06-01 | 2023-06-13 | Apple Inc. | User interfaces for content applications |
US11032150B2 (en) * | 2019-06-17 | 2021-06-08 | International Business Machines Corporation | Automatic prediction of behavior and topology of a network using limited information |
CN112511325B (zh) | 2019-09-16 | 2022-03-11 | 华为技术有限公司 | 网络拥塞控制方法、节点、系统及存储介质 |
US11677768B2 (en) * | 2019-10-22 | 2023-06-13 | Honeywell International Inc. | Apparatuses, methods, and computer program products for automatic improved network architecture generation |
US11863428B2 (en) * | 2019-11-22 | 2024-01-02 | Vmware, Inc. | Dynamic route configuration and load balancing for edge gateways |
US11368525B2 (en) | 2019-12-02 | 2022-06-21 | Red Hat, Inc. | Relaying network management tasks using a multi-service receptor network |
US11238041B2 (en) | 2020-03-25 | 2022-02-01 | Ocient Holdings LLC | Facilitating query executions via dynamic data block routing |
US11212202B2 (en) | 2020-04-08 | 2021-12-28 | Subspace Inc. | Network performance enhancement system |
US11700671B2 (en) * | 2020-06-30 | 2023-07-11 | Arris Enterprises Llc | Client-specific mesh paths to root access points in a mesh network |
US11895035B2 (en) * | 2020-08-10 | 2024-02-06 | T-Mobile Usa, Inc. | Quality of experience (QoE) optimization of device and network configuration |
US11895004B2 (en) * | 2020-08-20 | 2024-02-06 | Jpmorgan Chase Bank, N.A. | Systems and methods for heuristics-based link prediction in multiplex networks |
US11323312B1 (en) * | 2020-11-25 | 2022-05-03 | Juniper Networks, Inc. | Software-defined network monitoring and fault localization |
CN112491712B (zh) * | 2020-11-30 | 2021-08-17 | 复旦大学 | 一种基于多智能体深度强化学习的数据包路由算法 |
US20220182444A1 (en) * | 2020-12-04 | 2022-06-09 | Kollective Technology, Inc. | Peer-managed content distribution network |
US20210117807A1 (en) * | 2020-12-23 | 2021-04-22 | Intel Corporation | Methods and appartus to construct program-derived semantic graphs |
WO2022165279A1 (en) | 2021-01-29 | 2022-08-04 | Apple Inc. | User interfaces and associated systems and processes for sharing portions of content items |
US11632327B2 (en) * | 2021-05-27 | 2023-04-18 | Cisco Technology, Inc. | Estimating the efficacy of predictive routing for prospective deployments |
US11632305B2 (en) * | 2021-06-02 | 2023-04-18 | Jpmorgan Chase Bank, N.A. | Method and system for link prediction in large multiplex networks |
US11252036B1 (en) * | 2021-06-10 | 2022-02-15 | Bank Of America Corporation | System for evaluating and tuning resources for anticipated demands |
WO2023014722A1 (en) * | 2021-08-05 | 2023-02-09 | Arista Networks, Inc. | Systems and methods for constructing application-aware virtual topologies in wide area networks |
US12003401B2 (en) | 2021-08-05 | 2024-06-04 | Arista Networks, Inc. | Systems and methods for constructing application-aware virtual topologies in wide area networks |
US11729256B2 (en) * | 2021-10-15 | 2023-08-15 | Netflix, Inc. | Predetermining network route for content steering |
US12119989B2 (en) * | 2021-10-29 | 2024-10-15 | Keysight Technologies, Inc. | System and method for configuring network elements in a design network topology |
US11916791B2 (en) | 2021-12-22 | 2024-02-27 | Cloudbrink Inc. | Modifying data packet transmission strategy based on transmission control protocol stage |
US11943144B1 (en) * | 2022-03-16 | 2024-03-26 | Amazon Technologies, Inc. | Dynamic traffic management of microservices |
KR102606904B1 (ko) * | 2022-06-30 | 2023-11-29 | 씨제이올리브네트웍스 주식회사 | 실시간 영상통화 서비스 지원 방법 및 이를 위한 영상통화 지원 장치 |
US12034629B2 (en) * | 2022-09-01 | 2024-07-09 | Cloudbrink Inc. | Overlay network modification |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015511A1 (en) * | 2003-07-02 | 2005-01-20 | Nec Laboratories America, Inc. | Accelerated large data distribution in overlay networks |
US20050083848A1 (en) * | 2003-10-20 | 2005-04-21 | Huai-Rong Shao | Selecting multiple paths in overlay networks for streaming data |
CN1726735A (zh) * | 2002-12-17 | 2006-01-25 | 基奥赛拉无线公司 | 用于确定何时退出当前的无线通信覆盖网络的系统和方法 |
US20060218301A1 (en) * | 2000-01-25 | 2006-09-28 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
CN102413021A (zh) * | 2011-12-27 | 2012-04-11 | 北京邮电大学 | 一种基于探针预测的覆盖网络性能监测方法 |
US20140223562A1 (en) * | 2008-09-26 | 2014-08-07 | Oracle International Corporation | System and Method for Distributed Denial of Service Identification and Prevention |
EP3038323A1 (en) * | 2014-12-26 | 2016-06-29 | Mattias Bergstorm | Method and system for adaptive virtual broadcasting of digital content |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7086077B2 (en) | 1999-04-01 | 2006-08-01 | Sedna Patent Services, Llc | Service rate change method and apparatus |
US6275470B1 (en) | 1999-06-18 | 2001-08-14 | Digital Island, Inc. | On-demand overlay routing for computer-based communication networks |
US7240124B2 (en) | 2001-06-20 | 2007-07-03 | Silver Beech Networks, Inc. | System and method for transferring data on a network using a single route optimizer to define an explicit route and transfer the information related to the explicit route to a plurality of routers and a plurality of optimized routers on the network |
US7613796B2 (en) | 2002-09-11 | 2009-11-03 | Microsoft Corporation | System and method for creating improved overlay network with an efficient distributed data structure |
US9325805B2 (en) | 2004-08-02 | 2016-04-26 | Steve J Shattil | Content delivery in wireless wide area networks |
JP4606333B2 (ja) * | 2005-09-20 | 2011-01-05 | 富士通株式会社 | ルーティング制御方法 |
US20070150498A1 (en) | 2005-12-23 | 2007-06-28 | Xerox Corporation | Social network for distributed content management |
US8509098B2 (en) | 2006-04-28 | 2013-08-13 | Alcatel Lucent | Method and apparatus for identifying network connectivity changes in dynamic networks |
US20080059631A1 (en) | 2006-07-07 | 2008-03-06 | Voddler, Inc. | Push-Pull Based Content Delivery System |
US8000239B2 (en) | 2006-12-14 | 2011-08-16 | Oracle America, Inc. | Method and system for bandwidth allocation using router feedback |
US9015342B2 (en) * | 2007-01-22 | 2015-04-21 | Xerox Corporation | Two-level structured overlay design for cluster management in a peer-to-peer network |
US20080244042A1 (en) | 2007-03-26 | 2008-10-02 | Sugih Jamin | Method and system for communicating media over a computer network |
US20080263130A1 (en) | 2007-04-23 | 2008-10-23 | Nir Michalowitz | Apparatus, system and method of digital content distribution |
KR100748187B1 (ko) | 2007-06-01 | 2007-08-10 | 인하대학교 산학협력단 | 노드 가용도 예측 기반의 그리드 네트워크 혼잡 제어 장치및 방법 |
JP4893828B2 (ja) | 2007-06-29 | 2012-03-07 | 富士通株式会社 | ネットワーク障害検知システム |
EP2215770B1 (en) * | 2007-10-18 | 2013-03-20 | Telefonaktiebolaget L M Ericsson (publ) | Merging of overlay networks in distributed data structures |
US8565218B2 (en) | 2008-06-05 | 2013-10-22 | Hewlett-Packard Development Company, L.P. | Flow path discovery in network to guarantee multiple metric QoS constraints |
US20100027442A1 (en) | 2008-07-31 | 2010-02-04 | International Business Machines Corporation | Constructing scalable overlays for pub-sub with many topics: the greedy join-leave algorithm |
US8848513B2 (en) | 2009-09-02 | 2014-09-30 | Qualcomm Incorporated | Seamless overlay connectivity using multi-homed overlay neighborhoods |
US8170016B2 (en) | 2009-11-30 | 2012-05-01 | At&T Intellectual Property I, Lp | Packet flow offload to remote destination with routing bypass |
US10158554B1 (en) | 2012-02-29 | 2018-12-18 | The Boeing Company | Heuristic topology management system for directional wireless networks |
US9654329B2 (en) | 2012-05-04 | 2017-05-16 | The Hong Kong University Of Science And Technology | Content distribution over a network |
AU2014257769B2 (en) | 2013-04-25 | 2017-05-11 | Hive Streaming Ab | Method and device for centralized peer arrangement in P2P overlay networks |
US8972992B2 (en) | 2013-04-30 | 2015-03-03 | Splunk Inc. | Proactive monitoring tree with state distribution ring |
US9537719B2 (en) * | 2014-06-19 | 2017-01-03 | Palo Alto Research Center Incorporated | Method and apparatus for deploying a minimal-cost CCN topology |
US10374900B2 (en) | 2014-12-03 | 2019-08-06 | Hewlett Packard Enterprise Development Lp | Updating a virtual network topology based on monitored application data |
US10735268B2 (en) | 2017-04-21 | 2020-08-04 | System73 Ltd. | Predictive overlay network architecture |
US10705881B2 (en) | 2017-05-12 | 2020-07-07 | Red Hat, Inc. | Reducing overlay network overhead across container hosts |
US20190312810A1 (en) | 2018-04-10 | 2019-10-10 | System73 Ltd | Adaptive overlay network architecture |
-
2018
- 2018-04-19 US US15/956,927 patent/US10735268B2/en active Active
- 2018-04-20 KR KR1020197034402A patent/KR102569433B1/ko active Application Filing
- 2018-04-20 KR KR1020237027968A patent/KR20230124112A/ko active Application Filing
- 2018-04-20 MX MX2019012502A patent/MX2019012502A/es unknown
- 2018-04-20 CN CN201880040442.5A patent/CN110915168B/zh active Active
- 2018-04-20 WO PCT/EP2018/060169 patent/WO2018193082A1/en active Application Filing
- 2018-04-20 EP EP18722921.6A patent/EP3613177A1/en active Pending
- 2018-04-20 JP JP2019557463A patent/JP7229936B2/ja active Active
- 2018-04-20 CN CN202310779158.2A patent/CN116827850A/zh active Pending
- 2018-04-20 BR BR112019022012-7A patent/BR112019022012A2/pt unknown
-
2019
- 2019-10-18 MX MX2023012783A patent/MX2023012783A/es unknown
-
2020
- 2020-06-29 US US16/915,255 patent/US11212184B2/en active Active
- 2020-08-12 US US16/991,997 patent/US11418404B2/en active Active
-
2022
- 2022-08-15 US US17/888,093 patent/US11700184B2/en active Active
-
2023
- 2023-06-29 US US18/344,609 patent/US12058049B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060218301A1 (en) * | 2000-01-25 | 2006-09-28 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
CN1726735A (zh) * | 2002-12-17 | 2006-01-25 | 基奥赛拉无线公司 | 用于确定何时退出当前的无线通信覆盖网络的系统和方法 |
US20050015511A1 (en) * | 2003-07-02 | 2005-01-20 | Nec Laboratories America, Inc. | Accelerated large data distribution in overlay networks |
US20050083848A1 (en) * | 2003-10-20 | 2005-04-21 | Huai-Rong Shao | Selecting multiple paths in overlay networks for streaming data |
US20140223562A1 (en) * | 2008-09-26 | 2014-08-07 | Oracle International Corporation | System and Method for Distributed Denial of Service Identification and Prevention |
CN102413021A (zh) * | 2011-12-27 | 2012-04-11 | 北京邮电大学 | 一种基于探针预测的覆盖网络性能监测方法 |
EP3038323A1 (en) * | 2014-12-26 | 2016-06-29 | Mattias Bergstorm | Method and system for adaptive virtual broadcasting of digital content |
Non-Patent Citations (1)
Title |
---|
黄效文: ""基于Wardrop均衡的服务覆盖网络资源分配问题研究"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014544A (zh) * | 2021-01-25 | 2021-06-22 | 阳光凯讯(北京)科技有限公司 | 基于webRtc无中心媒体链路建立方法及装置 |
CN113014544B (zh) * | 2021-01-25 | 2023-02-10 | 阳光凯讯(北京)科技有限公司 | 基于webRtc无中心媒体链路建立方法及装置 |
CN113747473A (zh) * | 2021-09-01 | 2021-12-03 | 苏州佩林软件技术有限公司 | 一种自组网的方法和自组网系统 |
CN113904974A (zh) * | 2021-10-09 | 2022-01-07 | 咪咕文化科技有限公司 | 智能路由方法、装置及设备 |
CN113904974B (zh) * | 2021-10-09 | 2023-08-15 | 咪咕文化科技有限公司 | 智能路由方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
US20220393947A1 (en) | 2022-12-08 |
US11212184B2 (en) | 2021-12-28 |
CN110915168B (zh) | 2023-07-18 |
MX2019012502A (es) | 2020-07-14 |
KR20200015492A (ko) | 2020-02-12 |
US11700184B2 (en) | 2023-07-11 |
US20200328946A1 (en) | 2020-10-15 |
BR112019022012A2 (pt) | 2020-05-12 |
US11418404B2 (en) | 2022-08-16 |
JP7229936B2 (ja) | 2023-02-28 |
KR102569433B1 (ko) | 2023-08-23 |
MX2023012783A (es) | 2023-11-08 |
US20200374200A1 (en) | 2020-11-26 |
WO2018193082A1 (en) | 2018-10-25 |
US12058049B1 (en) | 2024-08-06 |
US10735268B2 (en) | 2020-08-04 |
US20180309636A1 (en) | 2018-10-25 |
JP2020518179A (ja) | 2020-06-18 |
EP3613177A1 (en) | 2020-02-26 |
KR20230124112A (ko) | 2023-08-24 |
CN116827850A (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110915168B (zh) | 预测性覆盖网络体系结构 | |
US20210273884A1 (en) | Adaptive overlay network architecture | |
US10992998B2 (en) | Method and system for adaptive virtual broadcasting of digital content | |
Alzoubi et al. | A practical architecture for an anycast CDN | |
Budhkar et al. | An overlay management strategy to improve QoS in CDN-P2P live streaming systems | |
US20100135168A1 (en) | Method for automatically determining a group of pairs located close to another pair in a communication network and associated server, analysis device and communication device | |
Selimi et al. | Integration of an assisted p2p live streaming service in community network clouds | |
Taha | An efficient software defined network controller based routing adaptation for enhancing QoE of multimedia streaming service | |
Paramasivam et al. | Quality of service aware routing in software defined video streaming: a survey | |
Padmanabhan et al. | Modeling and Simulation of Content-Based Video Streaming Using ns2 | |
Miers et al. | An architecture for P2P locality in managed networks using hierarchical trackers |
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 |