(5)具体实施方式
本发明的原理提供了到网络上的数据流准入的控制。一系列测试中的适当判决控制了数据流到网络数据路径上的准入,所述一系列测试从较被动的测试转变为较主动的测试。较被动的测试包括在网络数据路径的发送端数据链路处的杂乱模态测量,根据需要也可以在网络数据路径的接收端数据链路处。当发送端数据链路和/或接收端数据链路没有足够的可用带宽来支持应用数据流时,测试停止,且应用数据流不被发送到网络上。相反,当发送到数据链路和接收端数据链路没有足够的可用带宽来支持应用数据流时,执行较主动的测试,例如分组对测试和/或主动网络探测。
适当时,执行分组对测试来计算网络数据路径的瓶颈带宽。当瓶颈带宽不足以支持应用数据流时,测试停止,且应用数据流不被发送到网络上。另一方面当瓶颈带宽足以支持应用数据流时,执行较主动的测试,例如主动网络探测。
适当时,主动地探测网络数据路径(如通过发送数据分组列)来标识应用数据流在网络数据路径上造成拥塞的似然性,如果应用数据流曾被发送到网络数据路径上。当标识出造成拥塞的增加的似然性时,不把应用数据流传递到网络数据路径上。另一方面当标识出造成拥塞的降低的似然性时,可以把应用数据流传递到网络数据路径上。
本发明范围内的实施例包括计算机可读媒介,所述计算机可读媒介上传递或者在其上存储计算机可执行指令或数据结构。这种计算机可读媒介可以是任何可用的媒介,它可由通用或专用计算机系统来访问。例如但非限制,这种计算机可读媒介可以包括像RAM、ROM、EPROM、CD-ROM这样的物理存储媒介,或其他光盘存储器、磁盘存储器或其他磁性存储设备,或者可用于传递或存储期望的程序代码装置的任何其他媒介,所述期望程序代码装置的形式为:计算机可执行指令、计算机可读指令或数据结果,它们可由通用或专用计算机系统所访问。
在该描述和所附权利要求中,“网络”被定义为允许在计算机系统和/或模块间传输电子数据的一条或多条数据链路。当在网络或另一通信连接(或硬线、或是硬线或无线的组合)上向计算机系统传递或提供信息时,连接被适当地视为计算机可读媒介。这样,任何这样的连接都被适当地称为计算机可读媒介。上述的组合也应被包括在计算机可读媒介的范围内。计算机可读指令包括例如:使通用计算机系统或专用计算机系统执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如像汇编语言这样的二进制、中间格式,或甚至是源代码。
在该描述和所附权利要求中,“计算机系统”被定义为一个或多个软件模块、一个或多个硬件模块、或者它们的组合,它们一起工作以执行对电子数据的操作。例如,计算机系统的定义包括个人电脑的硬件组件、以及软件模块、以及个人电脑的操作系统。模块的物理布局并不重要。计算机系统可以包括通过网络耦合的一个或多个计算机。同样,计算机系统可以包括单个物理设备(比如移动电话或个人数字助理“PDA”),其中内部模块(比如存储器和处理器)工作在一起以执行对电子数据的操作。
在该描述和所附权利要求中,“数据流”被定义为在稳定和连续的流内被传输的数据,以使部分被传输的数据可以在它们被接收时被输出(即使在数据流完成前被接收)。数据流可以是音频和/或视频数据流(如音频/视频“A/V”数据流),它从发送计算机系统被传递,用于在接收计算机系统处输出。数据流可以是实况数据流,比如实况无线电或电视广播数据的数据流。同样,当把发送计算机系统处存储的文件传递至接收计算机系统时会产生数据流,比如当选择存储的运动图像专家组(“MPEG”)文件时产生的数据流。在输出数据后,包括在数据流内的数据可以被保存在接收计算机系统处,或者不被保存。数据流可以用多种协议或协议的组合来传输,比如用户数据报协议(“UDP”)、实时传输协议(“RTP”)以及实时流化协议(“RTSP”)。
在该描述和所附权利要求中,“数据传输速率”被定义为数据被传输到(或被传递到)网络上、通过数据链路、或从数据链路被接收的速度。数据传输速率可以以多种不同的单位被测量,例如兆比特每秒(“Mbps”)或兆字节每秒(“MBps”)例如,应用模块202可以以2Mbps的数据传输速率把音频数据流(经过数据链路272和271)发送到计算机系统221。在把数据流发送到数据链路上之前,应用模块可以指出数据流到网络探测模块的所估计的峰值数据传输速率。
在该描述和所附权利要求中,“数据集线器”被定义为一计算机系统,它作为其他计算机系统的公共连接点(或有线或无线)而工作,并且通过把接收到的数据分组发出集线器的所有端口而在相连的计算机系统间传输电子数据。也就是,当在数据集线器的一个端口处接收端数据分组时,数据集线器就把该分组复制到数据集线器的所有其他端口。结果,从与数据集线器相连的一条数据链路接收到的数据分组随后被传递至与数据集线器相连的所有其他数据链路。例如,通过数据链路271在数据集线器250处接收到的数据分组会随后被发送到数据链路271、272、273和277。
在该描述和所附权利要求中,“数据转换器”被定义为一计算机系统,它作为其他计算机系统的公共连接点(或有线或无线)而工作,并且通过从对应于数据分组内包括的目标地址的端口中发出接收到的数据分组而在相连的计算机系统间传输电子数据。也就是,当在数据转换器的一个端口处接收到的数据分组时,数据转换器就读取该数据分组的目标地址(如因特网协议(“IP”)),并把该数据分组发送到对应于目标地址的端口。结果,从一条数据链路接收到的数据分组随后被传递到与目标地址相关的目标计算机系统较近的数据链路。
与目标计算机系统较近的数据链路可以是连接到目标计算机系统的数据链路。例如,数据转换器255可以接收一数据分组,该数据分组具有对应于计算机系统251的目标地址。因而,数据转换器255可以把该数据分组发送到数据链路279上。另一方面与目标计算机系统较近的数据链路可以是发送计算机系统和目标计算机系统之间的中间数据链路。例如,计算机系统211可以向与计算机系统241相关的目标地址发送一数据分组。因而,数据集线器250把该数据分组重复到数据链路277(以及数据链路271、272和273)上。数据转换器255可以从数据链路277接收数据分组,并且读取数据分组的目标地址。因而,数据转换器255可以向数据链路278发送数据分组(在数据转换器260可以从数据链路278接收数据分组并把数据分组发送到数据链路276之后)。
本领域的技术人员会理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实现,包括:个人电脑、膝上型电脑、手提设备、多处理器系统、基于微处理器的或可编程的用户电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机等等。本发明还可以在分布式系统环境中实现,其中通过网络相连的(或通过硬线数据链路、无线数据链路、或通过硬线和无线数据链路的组合)本地和远程计算机都执行任务。在分布式系统环境中,程序模块可以位于本地和远程地存储设备中。
图1和下列讨论视图提供对其中可实现本发明的适当计算环境的简要、通用的描述。尽管不需要,然而本发明会以计算机可执行指令的一般上下文来描述,比如被计算机系统执行的程序模块。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。计算机可执行指令、相关数据结构和程序模块代表用于执行这里公开方法行为的程序代码装置。
参照图1,用于实现本发明的示例性系统包括形式为计算机120的通用计算设备,包括:处理单元121、系统存储器122、及把包括系统存储器122在内的各种系统组件耦合至处理单元121的系统总线123。处理单元121可以执行为实现计算机系统120的特征而被设计的计算机可执行指令,所述特征包括本发明的特征。系统总线123可能是多种类型总线结构的任一种,包括存储器总线或存储控制器、外围设备总线、及使用任一多种总线结构的本地总线。系统存储器包括只读存储器(“ROM”)124和随机存取存储器(“RAM”)125。基本输入/输出系统(“BIOS”)126可以被存储在ROM 124内,该系统126包含帮助在计算机系统120内的元件间传递信息的基本例程。
计算机系统120还可以包括:磁性硬盘驱动器127,用于在磁性硬盘139间读写;磁盘驱动器128,用于在可移动磁盘129间读写;以及光盘驱动器130,用于在可移动光盘131间读写,可移动光盘131如CD-ROM或其他光学媒介。磁性硬盘驱动器127、磁盘驱动器128和光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光盘驱动器接口134与系统总线123相连。驱动器及其相关的计算机可读媒介为计算机系统120的计算机可执行指令、数据结构、程序模块以及其他数据提供非易失性的存储。尽管这里所述的示例环境采用了磁性硬盘139、可移动磁盘129和可移动光盘131,然而也可以使用其他类型的计算机可读媒介来存储数据,包括磁带、闪存卡、数字化视频光盘、贝努力(Bernoulli)盒带、RAM、ROM等等。
程序代码装置包括可被存储在硬盘139、磁盘129、光盘131、ROM 124或RAM125上的一个或多个程序模块,包括操作系统135、一个或多个应用程序136、其他程序模块137和程序数据138。用户可以通过键盘140、指示设备142或其他输入设备(未示出)把指令或信息输入到计算机系统120中,其他输入设备如:麦克风、游戏杆、扫描仪等等。这些及其他输入设备可以通过与系统总线123耦合的输入/输出接口146而连接到处理单元121。输入/输出接口146逻辑地表示多种不同接口的任一种,比如串行端口接口、PS/2接口、并行端口接口、通用串行总线(“USB”)接口、或者电气和电子工程师协会(“IEEE”)1394接口(即FireWire接口)、或者甚至可以逻辑地表示不同接口的组合。
监视器147或其他显示设备也通过视频接口148连接到系统总线123。扬声器169或其他音频输出设备也通过音频接口149连接到系统总线123。其他外部输出设备(未示出),比如打印机,也可以连接到计算机系统120。
计算机系统120可连接到网络,比如办公室或企业计算机网络、本地网络、内联网和/或因特网。计算机系统120可以在这种网络上与外部源交换数据,比如远程计算机系统、远程应用程序和/或远程数据库。
计算机系统120包括网络接口153,计算机系统120通过该接口从外部源接收数据以及/或者把数据发送到外部源。如图1所示,网络接口153便于通过数据链路151与远程计算机系统的数据交换。网络接口153可以逻辑地表示一个或多个软件和/或硬件模块,比如网络接口和相应的网络驱动器接口规范(“NDIS”)栈。数据链路151表示网络的一部分(如以太网分段),远程计算机183表示网络的一个节点。例如,远程计算机183可以是向计算机系统120发送数据流的发送计算机系统。另一方面远程计算机系统183可以是接收从计算机系统120发出的数据流的接收计算机系统。
同样,计算机系统120包括输入/输出接口146,计算机系统120通过该接口从外部源接收数据以及/或者向外部源发送数据。输入/输出接口146通过数据链路159耦合到调制解调器154(如标准调制解调器、电缆调制解调器或数字用户线(“DSL”)调制解调器),计算机系统120通过数据链路159从外部源接收时间以及/或者向外部源发送数据。如图1所示,输入/输出接口146和调制解调器154便于通过数据链路152与远程计算机系统193交换数据。数据链路152表示网络的一部分,远程计算机系统193表示网络的一个节点。例如,远程计算机系统193可以是向计算机系统120发送数据流的发送计算机系统。另一方面远程计算机系统193可以是接收从计算机系统120发出的数据流的接收计算机系统。
尽管图1表示出本发明的适当工作环境,然而可以在能实现本发明的任何系统中采用本发明的原理,所述系统根据需要可作适当修改。图1所述的环境仅仅是说明性的,决不是表示其中可实现本发明原理的多种环境的一小部分。
按照本发明,应用模块、网络接口模块和探测模块以及相关的数据可以被存储在与计算机系统120相关的任一计算机可读媒介上,或从该媒介被访问,所述相关数据包括数据分组、传输参数和数据流。例如,这种模块的部分以及相关程序数据的部分可以被包括在操作系统135、应用程序136、程序模块137和/或程序数据138内,用于存储在系统存储器122中。
当如磁性硬盘139这样的大容量存储设备耦合到计算机系统120时,这些程序模块和相关的程序数据也可以被存储在大容量存储设备中。在网络化环境中,关于计算机系统120描述的程序模块或其部分可以被存储在远程存储设备中,比如与远程计算机系统183和/或远程计算机系统193相关的系统存储器和/或大容量存储设备。这种模块的执行可以在前述的分布式环境中执行。
图2说明了便于控制到网络上的数据流准入的网络结构200的示例。网络结构200内包括计算机系统201、211、221、231、241和251。计算机系统201、211和221分别通过相应的数据链路272、273和271连接到数据集线器250。计算机系统201、211和221包括相应的网络接口模块203、213和223,分别用于发送电子数据和接收电子数据。
数据集线器250通过数据链路277连接到数据转换器255。同样,计算机系统251通过数据链路279连接到数据转换器255。计算机系统251包括用于发送电子数据和接收电子数据的网络接口模块253。数据转换器255通过数据链路278连接到数据转换器260。计算机系统231和241分别通过相应的数据链路275和276连接到数据转换器260。计算机系统231和241包括相应的网络接口模块233和243,分别用于把电子数据发送到数据转换器260和从数据转换器260接收电子数据。
数据流(如UDP数据流)可以在网络结构200内的计算机系统间被传递,以及在网络结构200内的计算机系统和网络结构200外的计算机系统(未示出)之间被传递。网络结构200内的计算机系统可以由于一个计算机系统处的发送应用程序请求把数据流传输到另一计算机系统处的相应接收应用程序而传输数据流。例如,应用模块212可以请求把应用数据流传递到应用模块242。因而,网络接口模块213可以把一数据流发送到数据链路273上,所述数据流包含适当的应用数据并且具有对应于计算机系统241的目标地址(如IP地址)。网络接口模块243可以从数据链路276接收所发出的数据流,并且使所包含的应用数据被传递至应用242。
非流化数据也可以在网络接口200内的计算机系统间被传递,以及在网络结构200内的计算机系统和网络结构200外的计算机系统间被传递。例如,计算机系统251可以是以非流化方式把数据传递到其他计算机系统的服务器。当另一计算机系统请求存储在计算机系统251处的文件时,网络接口模块253可以通过发送数据分组而进行应答,所述数据分组包含所请求的文件并且具有请求计算机系统的目标地址。例如,应用模块222可以是请求存储在计算机系统251处存储的Web页面的Web浏览器。因而,计算机系统251可以通过把所请求的Web页面发送到数据链路279上用于传递至计算机系统221而进行应答。通过向计算机系统221发送包括Web页面的HTTP消息(如,作为一个或多个传输控制协议(“TCP”)分段),网络接口模块253可以便于所请求Web页面的传输。网络接口模块223可以从数据链路271接收该Web页面,并且把该Web页面传递至应用模块222。
因而,网络结构200内的数据链路会经受由于在数据链路间传递流化和非流化数据而产生的变化的数据负载。当数据被发送到数据链路上时,消耗了某部分数据链路的带宽,从而减少了数据链路的可用带宽。另一方面当从数据链路删除数据时(如在文件传输完成或数据流结束后),适当某部分数据链路的带宽,从而增加了数据链路的可用带宽。
图3A和3B说明了方法300的示例流程图,该方法300用于估计发送计算机系统可以把应用数据流传递至结束计算机系统而不使网络数据路径拥塞。方法300会参照网络结构200内所述的计算机系统来描述。
方法300包括接收所请求的应用数据传输速率的行为(行为301)。行为301包括从一应用接收所请求的应用数据传输速率,所述应用请求把应用数据流从发送计算机系统传递至接收计算机系统。例如,探测模块204可以接收应用数据流的应用数据传输速率,使得应用模块202正在请求从计算机系统201被传递至计算机系统221或计算机系统231。所请求的应用数据传输速率可以是在数据流传输期间所使用的峰值数据传输速率。
方法300包括用于执行杂乱模态测量的功能性面向结果的步骤(步骤312)。步骤312可以包括用于实现执行杂乱模态测量的结果的任何相应行为。然而,在所述的图3示例中,步骤312包括被动地检测发送端数据负载的相应行为(行为302)。行为302可以包括被动地检测发送端数据链路上的发送端数据负载。
发送端计算机系统可以是要发送数据流的发送计算机系统。例如,响应于从应用模块202接收所请求的应用数据速率,探测模块204可以配置网络接口模块203来接收通过数据链路272传输的所有数据分组。至少根据接收数据分组的频率以及所接收数据分组的大小,探测模块204可以估计数据链路272上的数据负载。由于计算机系统201连接到数据集线器250,因此从数据链路271、272、273和277上发送的所有数据分组中计算出数据链路272上的数据负载。例如,计算机系统211可以以3Mbps向计算机系统211传输第一数据流,并且以2Mbps向数据转换器传输第二数据流(如用于传递至计算机系统231)。因而,数据链路272上的数据负载至少会是5Mbps。
或者,发送端计算机系统可以是与发送计算机系统一起连到公共数据集线器的计算机系统。例如,当计算机系统201(发送计算机系统)要通过数据路径291向计算机系统231发送一数据流时,探测模块204可以向探测模块224发送一指令,以被动地检测发送端数据负载。因而,探测模块224可以配置网络接口模块223来接收通过数据链路271传输的所有数据分组。由于数据集线器250从所有连接的数据链路向所有其他连接的数据链路(数据链路271、272、273和277)发送数据分组,因此数据链路271上的数据负载会类似于数据链路272上的数据负载。
数据负载的被动检测可以发生,而无须把任何数据分组发送到数据链路上。例如,探测模块240可以检测数据链路272上的数据负载,而不把任何数据分组发送到数据链路272上。因而,大大减少了数据链路272上数据负载的被动检测会使通过数据集线器250传递的其他数据降级的机会。
步骤312还包括计算发送端数据链路上的可用带宽容量为足够的相应行为(行为303)。行为303可以包括:根据所检测的发送端数据负载计算发送端数据链路上的可用带宽容量足以以所请求的应用数据传输速率接收数据流。数据链路的可用带宽容量可以按照公式1计算:
Available_Link_Bandwidth=[(Acceptable_Loading)·(Link_Capacity)]-Data_Link_Load
公式1
Acceptable_Loading是可以按照网络管理员或用户的希望而选择的值,用于表示数据流会消耗的可用带宽百分比。当希望允许数据流的降低的可用带宽时,可以降低Acceptable_Loading值。例如,当希望为数据流使用30%的数据链路容量时,可以选择值为“.3”的Acceptable_Loading。另一方面当希望允许数据流增加的可用带宽时,可以增加Acceptable_Loading值。例如,当希望为数据流使用90%的数据链路容量时,可以把Acceptable_Loading值设为“.9”。当希望为数据流利用数据链路的全部容量时,可以把Acceptable_Loading值设为“1”。可以选择Acceptable_Loading值为数据流使用尽可能多的数据链路容量,而不使数据链路变得拥塞。另一方面可以选择Acceptable_Loading值来保存某些数量的可用带宽,用于非流化数据的传输。
Link_Capacity是表示数据链路(如数据链路272)的额定数据容量(如单位为Mbps)的值。Link_Capacity可以根据用于实现数据链路的技术而改变,比如,以太网(IEEE 802.3标准)或无线(IEEE 802.11标准)。而且,特定技术的实现会有不同的额定数据容量。以太网数据链路会有10Mbps、100Mbps或1000Mbps(千兆比特)的额定数据容量。类似地,IEEE 802.11数据链路会有11Mbps、5.5Mbps、2Mbps或1Mbps的额定数据容量。然而应该理解,本发明不限于所述的网络技术和额定数据容量。对于本领域技术人员显而易见的是,在审阅了本说明后,除了所述的那些以外,在实践本发明时可以使用多种网络技术和额定数据容量。
Data_Link_Load是表示数据链路上的数据负载的值,例如发送(或接收)端数据链路上被动检测到的发送(接收)端数据负载。
公式1的值可以按照公式1的算术运算被组合以计算Available_Link_Bandwidth值。也就是,从Acceptable_Loading值与Link_Capacity值的乘积中减去Data_Link_Load值。例如,数据链路272可以有10Mbps的Link_Capacity以及2Mbps的Data_Link_Load值。而且,网络结构200的网络管理员或用户也许已经为数据链路272选择Acceptable_Loading值“7”。因此在该例中,数据链路272的Available_Link_Bandwidth值会等于[(.7)·(10Mbps)]-2Mbps,即5Mbps。
当为发送端数据链路计算的Available_Link_Bandwidth值小于所请求的应用数据传输速率时,发送端数据链路被视为没有足够的可用带宽容量支持所请求的应用数据速率下的应用数据流。参照刚才的例子,数据链路272不会被视为具有足够的可用带宽以任何大于5Mbps的数据速率来接收应用数据流。允许数据以大于数据链路链路容量的总数据传输速率(即数据链路上所有数据负载的总和)被传输通过数据链路大大增加了在数据链路上造成拥塞的似然性。因而,当数据链路没有足够的可用带宽容量来支持所请求的应用数据速率时,应用数据流不被发送到数据链路上并且会终止测试。作为有利的结果,防止会增加拥塞数据链路似然性的数据流被发送到数据链路上。
另一方面当为发送端数据链路计算的Available_Link_Bandwidth值大于(或等于)所请求的应用数据传输速率时,发送端数据链路被视为具有足够的可用带宽容量来支持所请求的应用数据速率下的应用数据流。参照刚才的例子,数据链路272会被视为具有足够的可用带宽来支持小于或等于5Mbps的任何应用数据速率下的应用数据流。允许数据以小于或等于数据链路链路容量的总数据传输速率被传输通过数据链路大大降低了在数据链路上造成拥塞的似然性。因而,当数据链路可以支持所请求的应用数据速率时,可以执行较主动的测试,比如分组对测试和/或主动网络探测,来更准确地确定应用数据流在网络数据路径上造成拥塞的似然性。
根据网络配置,发送端计算机系统还可以向接收端计算机系统发送指令,以被动地检测接收端数据负载(行为304)。发送端数据链路(如数据链路272)和接收端数据链路(如数据链路271)连接到相同的数据集线器(如数据集线器250)并且具有相同的Link_Capacity和Acceptable_Loading值。因而,为发送端数据链路和接收端数据链路两者计算Available_Local_Bandwidth会被视为是冗余的。因此在这些网络配置中,发送计算机系统不会向接收端计算机系统发送指令。例如,当应用模块202请求把数据流发送到应用模块222时,探测模块204不会向探测模块224发送指令。
另一方面发送端数据链路(如数据链路272)和接收端数据链路(如数据链路271)处在由转换器分开的网络数据路径(如数据路径291)的端点处并且/或者具有不同的Link_Capacity和/或具有不同的Acceptable_Loading值。因而,为发送端数据链路和接收端数据链路两者计算Available_Local_Bandwidth不会被视为是冗余的。因此在这些网络配置中,发送计算机系统可以向接收端计算机系统发送指令。例如,当应用模块202请求把数据流发送到应用模块232时,探测模块204可以向探测模块234发送指令。
适当时,方法300包括使接收计算机系统参与杂乱模态测量的功能性面向结果的步骤(步骤324)。步骤324可以包括实现参与杂乱模态测量的结果的任何相应行为。然而,在图3所述的示例中,步骤324包括接收端计算机系统被动地检测接收端数据负载的相应行为(行为314)。行为314可以包括被动地检测接收端数据链路上的接收端数据负载。接收端计算机系统可以是要接收数据流的接收计算机系统。例如,当计算机系统231要通过数据路径291从计算机系统201接收数据流时,探测模块232可以配置网络接口模块233来接收通过数据链路275传输的所有数据分组。
或者,接收端计算机系统可以是与接收计算机系统一起连到公共数据集线器的计算机系统。例如,当计算机系统231(发送计算机系统)要通过数据路径291向计算机系统201(接收计算机系统)发送数据流时,探测模块234可以向探测模块224发送一指令来被动地检测接收端数据负载。因而,探测模块224可以配置网络接口模块223来接收通过数据链路271传输的所有数据分组。由于数据集线器250把数据分组从所有相连的数据链路复制到所有其他相连的链路(数据链路271、272、273和277),因此271上的数据负载会类似于数据链路272上的数据负载。
步骤324包括计算可用的接收端带宽容量的相应行为(行为315)。行为315可以包括接收端计算机系统根据所检测的接收端数据负载来计算接收端数据链路上可用的带宽容量。接收端计算机系统可以按照公式1来计算接收端数据负载。方法300包括向发送计算机系统指出可用的接收端带宽容量的行为(行为316)。行为316可以包括接收端计算机系统向发送计算机系统指出接收端数据链路的可用带宽。例如,当计算机系统231要从计算机系统201接收数据流时,计算机系统231可以向计算机系统201指出数据链路275的可用带宽容量。
方法300包括发送端计算机系统接收一指示的行为,该指示指明接收端数据链路上的可用带宽容量是足够的(行为305)。行为305可以包括从接收端计算机系统接收对接收端数据链路上的可用带宽容量的指示。当为接收端数据链路计算的Available_Link_Bandwidth值(如按照公式1)小于所请求的应用数据传输速率时,接收端数据链路被视为没有足够的可用带宽容量指示所请求应用数据速率下的应用数据流。因而,适当时,不发送应用数据流并且终止测试。另一方面当为接收端数据链路计算的Available_Link_Bandwidth值大于(或等于)所请求的应用数据传输速率时,接收端数据链路被视为有足够的可用带宽容量指示所请求应用数据速率下的应用数据流。因而,适当时,执行较主动的测试,比如分组对测试和/或主动网络探测,以更准确地确定在网络数据路径上造成拥塞的应用数据流的似然性。
方法300包括用于启动分组对测试的功能性面向结果的步骤(步骤313)。步骤313可以包括用于实现启动分组对测试的结果的任何相应的行为。然而,在图3所述的示例中,步骤313包括发送第一分组对数据分组的相应行为(行为306)。行为306可以包括:发送端计算机系统把第一分组对数据分组发送到网络数据路径上,用于传递至接收端计算机系统。例如,计算机系统201启动与计算机系统231的分组对测试。因而,计算机系统201可以把第一分组对数据分组发送到数据路径291上,用于传递至计算机系统231。
步骤313还包括随后发送第二分组对数据分组的相应行为(行为307)。行为307可以包括:发送端计算机系统把相应的第二分组对数据分组发送到网络数据路径上,用于传递至接收端计算机系统。第二分组对数据分组与第一分组对数据分组的大小类似,或甚至大小相同。传输时间间隔(如异步发送指令之间的时间间隔)会分开第一分组对数据分组和第二分组对数据分组的传输。传输时间间隔的值可以足够小,以便大大增加分组对数据分组在网络数据路径的瓶颈处排队的似然性。
或者,可以从中间发送计算机系统发出分组对数据分组。例如,发送端杂乱模态测量的结果可以指示,发送端数据链路具有足够的可用带宽容量来支持应用数据流。这样,经过发送端数据链路发送分组对数据分组可能是冗余的。例如,当指明数据链路272(并因此数据链路277)具有足够的可用容量带宽来支持应用数据流时,可以从数据转换器255发出分组对数据分组。
方法300包括使接收端计算机系统参与分组对测试的功能性面向结果的步骤(步骤325)。步骤325可以包括用于实现参与分组对测试的结果的相应行为。然而,在图3所述的示例中,步骤325包括接收第一分组对数据分组的相应行为(步骤317)。步骤317可以包括:接收端计算机系统在第一接收时间从网络数据路径接收第一分组对数据分组。步骤325还包括接收第二分组对数据分组的相应行为(行为318)。行为318可以包括:接收端计算机系统在第二接收时间从网络数据路径接收第二分组对数据分组。
或者,可以在中间接收计算机系统处接收分组对数据分组。例如,接收端杂乱模态测量的结果可以指出接收端数据链路具有足够的可用带宽来接收应用数据流。这样,经过接收端数据链路接收分组对数据分组会是冗余的。例如,当指出数据链路275具有足够的可用带宽来接收应用数据流时,可以在数据转换器260处接收分组对数据分组。
步骤325包括计算瓶颈链路的可用带宽容量的相应行为(行为319)。行为319可以包括至少根据第一接收时间和第二接收时间之间的差异,计算网络数据路径的瓶颈数据链路上可用的带宽容量。尽管方法300中所述的发生在接收端,然而接收端或中间接收计算机系统可以向发送端或中间发送计算机系统发送瓶颈数据(包括第一和第二接收时间),后者根据接收到的瓶颈数据来计算瓶颈带宽。
网络数据路径的瓶颈带宽可以通过公式2来估计:
Bottleneck_Bandwidth=Packet_Size/(Second_Recept_Time-First_Recept_Time)
公式2
Packet_Size是表示第一分组对数据分组和第二分组对数据分组的大小的值。当第一分组对数据分组和第二分组对数据分组大小不同时,该值可以表示第一分组对数据分组的大小和第二分组对数据分组大小的平均。First_Recept_Time是表示在接收端或中间接收计算机系统处接收到第一数据对数据分组的时间的值。类似地,Second_Recept_Time是表示在接收端或中间接收计算机系统处接收到第二数据对数据分组的时间的值。
公式2的值可以按照公式2的算术运算被组合以计算Bottleneck_Bandwidth值。也就是,Packet_size值被除以First_Recept_Time值与Second_Recept_Time值之差。例如,计算机系统231可以在09:56:05.234(First_Recept_Time值)通过数据路径291接收第一数据对分组数据,其Packet_Size值为32768比特(4096字节)。随后,计算机系统231可以在09:56:05.250(Second_Recept_Time值)通过数据路径291接收第二数据对分组数据,其Packet_Size值为32768比特。因此在该例中,所估计的Bottleneck_Bandwidth值会等于32768比特/(.250秒-.234秒),即约为2Mbps。
发送端或中间发送计算机系统在恒定大小的、背对背数据分组(每个分组都隔开恒定的分组对传输时间间隔)的分组对的列内包括第一和第二分组对数据分组,该分组对的列在网络数据路径上被发送到接收端或中间接收计算机系统。分组对列的传输可以用来实现多种不同分组对算法的任一种,比如仅有接收机的分组对(“ROPP”)算法、基于接收机的分组对(“RBPP”)算法、以及基于发送方的分组对(“SBPP”)算法,用于计算网络数据路径的瓶颈带宽。可以实现这些分组对算法(或任何其他分组对算法)的任一种来计算数据路径291的瓶颈带宽值。探测模块,比如探测模块204、224和/或234可以用适当的功能来配置,用于实现分组对算法。可以使用分组对滤波技术,比如直方图,来提高分组对算法的准确性。
在某些实施例中,中间发送计算机系统向中间接收计算机系统发送至少第一和第二分组对数据分组。例如,杂乱模态测量的结果可以指出,发送端数据链路和接收端数据链路两者都有足够的可用带宽容量来支持应用数据流。这样,在这些数据链路上发送和接收分组对数据分组会是冗余的。例如,当指出数据链路271和数据链路276有足够的可用带宽容量来支持应用数据流时,分组对数据分组可以从数据转换器255被发送到数据转换器260。因而,数据转换器255或数据转换器260可以计算数据链路278的瓶颈带宽。
方法300包括向发送计算机系统支持可用的瓶颈带宽的行为(行为320)。行为320可以包括:接收端或中间接收计算机系统向发送端或中间发送计算机系统支持可用的瓶颈带宽容量。方法300包括接收一指示的行为,指明瓶颈数据链路上的可用带宽容量是足够的(行为308)。行为308可以包括:发送端或中间发送计算机系统接收一指示,指明瓶颈数据链路的可用的带宽容量足以支持所请求的应用数据传输速率下的数据流。
在某些实施例中,特定的瓶颈负载值(如.2,.7等)限制了数据流可以消耗的瓶颈带宽容量。可以按照网络管理员或用户的需求来选择特定的瓶颈负载值。当希望允许数据流减少的瓶颈带宽时,可以降低特定的瓶颈负载值。例如,为了允许数据流的20%的网络数据路径的瓶颈带宽,Bottleneck_Bandwidth值可以与特定的瓶颈负载值“.2”相乘以计算Available_Bottleneck_Bandwidth值。
另一方面当希望允许数据流的增加的瓶颈带宽时,可以增加特定的瓶颈负载值。例如,为了允许数据流的70%的网络数据路径的瓶颈带宽,Bottleneck_Bandwidth值可以与特定的瓶颈负载值“.7”相乘以计算Available_Bottleneck_Bandwidth值。当希望允许数据流的全部网络数据瓶颈带宽时,可以把特定的瓶颈负载值设为“1”。可以选择特定的瓶颈负载值来使用尽可能多的瓶颈带宽,而不使网络数据路径变得拥塞。另一方面可以选择特定的瓶颈负载值来保存一定数量的瓶颈带宽,用于非流化数据的传输。
当所计算的Bottleneck_Bandwidth值(或者适当时所计算的Available_Bottleneck_Bandwidth值)小于所请求的应用数据传输速率时,网络数据路径被视为没有足够的可用带宽容量来支持所请求应用数据传输速率下的应用数据流。因而,应用数据流不被发送到网络数据路径上,并且终止测试。作为有利的结果,防止具有拥塞网络数据路径的增加的似然性的数据流被发送到网络数据路径上。
另一方面当为网络数据路径计算的Bottleneck_Bandwidth值(或者适当时所计算的Available_Bottleneck_Bandwidth值)大于(或等于)所请求的应用数据传输速率时,网络数据路径被视为有足够的可用带宽容量来支持所请求应用数据传输速率下的应用数据流。因而,可以执行较主动的测试,比如主动网络探测,以更准确地确定应用数据流在网络数据路径上造成拥塞的似然性。
方法300包括用于主动探测网络数据路径的功能性面向结果的步骤(步骤314)。步骤314可以包括用于实现主动探测网络数据路径的结果的任何相应行为。然而,在图3所述的示例中,步骤314包括标识传输参数来模拟应用数据流的相应行为(行为309)。行为309可以包括标识传输参数的发送计算机系统,用于配置数据分组的列,来模拟以所请求的应用数据传输速率发送应用数据流。
例如,发送计算机系统可以标识探测数据分组大小值、每列分组值、探测数据分组间隔值、以及探测列间隔值。探测数据分组大小值表示包括在探测数据分组列内的探测数据分组的大小(如,以比特或字节为单位)。例如,4096的探测数据分组大小值会表示探测数据分组列内包括的探测数据分组要具有4096比特或4096字节(32768比特)的大小。每列分组值表示要包括在一列探测数据分组内的探测数据分组的数目。例如,每列分组值10会表示在一列探测数据分组内要包括10个探测数据分组。探测数据分组间隔值表示一列探测数据分组内的连续探测数据分组传输间的时间间隔(如,以毫秒为单位)。例如,探测数据分组间隔值1会表示一列探测数据分组内的探测数据分组要每1毫秒被发送一次。
探测列间隔值表示一系列探测数据分组列的连续列之间的时间间隔(如,以毫秒为单位)。例如,探测列间隔值90会表示探测数据分组的连续列要每90毫秒被发送一次。把探测数据分组的连续列隔开一个探测列间隔值会潜在地降低数据集线器和数据转换器处的捕获效应(因为允许排队的数据分组在最少的探测列间隔时间被传递)。这降低了使其他数据(或是数据流或是非流化数据)降级的任何探测数据分组列被发送到网络数据路径上的似然性。
步骤314包括按照所标识的传输参数临时发出一列分组的相应行为(行为310)。行为310可以包括:发送计算机系统按照所标识的传输参数临时发出一列探测数据分组,以模拟应用数据流到网络数据路径上的传输。例如,探测模块204可以临时把一列探测数据分组发送到数据路径291上,以模拟以所请求的应用数据传输速率发送应用数据流。
方法300包括用于参与网络数据路径的主动探测的功能性面向结果的步骤(步骤326)。步骤326可以包括用于实现参与网络数据路径的主动探测的结果的任何相应行为。然而,在图3所述的示例中,步骤326包括从一列探测分组接收探测分组,模拟应用数据传输速率下的应用数据流的相应行为(行为321)。行为321可以包括:接收计算机系统至少接收发送计算机系统曾发送到网络数据路径上的一列探测数据分组内的某些探测数据分组,以模拟所请求应用数据传输速率下的应用数据流。例如,探测模块234可以从探测模块204发出的一列探测数据分组接收探测数据分组。
步骤326包括计算一列探测数据分组未造成网络数据路径拥塞的相应行为(行为322)。行为322可以包括:计算端计算机系统计算出该列探测数据分组未使网络数据链路的任一数据链路转变为拥塞状态。例如,探测模块234可以计算:从探测模块204接收到的一列探测分组未使数据路径291的任何数据链路(即数据链路272、277、278和275)转变为拥塞状态。
方法300包括向发送计算机系统支持该列探测分组未造成网络数据路径拥塞的行为(行为323)。行为323可以包括:接收端计算机系统向发送端计算机系统指示探测数据分组列未造成网络数据路径的任何数据链路转变为拥塞状态。例如,探测模块234可以向探测模块204指示,数据路径291上接收到的一列探测数据分组未使数据路径291拥塞。
方法300包括接收一指示的行为,该行为指明探测数据分组列未造成网络数据路径拥塞(行为311)。行为311可以包括:发送端计算机系统从接收端计算机系统接收一指示,指明了探测数据分组列未造成网络数据路径的任何数据链路转变成拥塞状态。例如,探测模块204可以从探测模块234接收一指示,指明探测数据分组列未使数据路径291拥塞。
在某些实施例中,通过比较与变化的数据传输速率下发送的数据分组列相关的排队延迟,确定了数据流使网络数据路径拥塞的似然性。图4说明了用于根据所标识的排队延迟估计拥塞似然性的方法400的示例流程图。图5说明了在10Mbps以太网链路上,排队延迟相对所提供的负载的示例图500。图6A说明了接收到的数据分组百分比相对与接收时间延迟阈值的偏差的示例图600,指明了数据流会造成被探测的网络数据路径转变为拥塞状态的减少的似然性。图6B说明了接收到的数据分组百分比相对与接收时间延迟阈值的偏差的示例图650,指明了数据流会造成被探测的网络数据路径转变为拥塞状态的增加的似然性。方法400会参照网络结构200以及图500、600和650中描述的计算机系统来进行描述。
在示例图500中,排队延迟在纵轴(“Y轴”)上表示,所提供的负载在横轴(“X轴”)上表示。图500说明了在特定的所提供的负载(如4Mbps)下,在链路容量为10Mbps的以太网链路上传播的数据分组会遭受特定的排队延迟(如小于2毫秒)。随着所提供负载的增加,排队延迟保持相对恒定,直到所提供的负载转变到拐点区域501内。然后在拐点区域501内的某些所提供的负载处,排队延迟开始显著增加。
例如,排队延迟在所提供的负载为7Mbps(排队延迟小于2毫秒)和9Mbps(排队延迟约为10毫秒)之间增加了不止5倍。因此图500说明了,即使当所提供的负载低于链路容量时也会发生增加的排队延迟。当增加了排队延迟时,数据分组在以太网链路上保持增加的时间段,可能使以太网链路转变为拥塞状态。因而,以太网链路不适用于数据流,即使所提供的负载低于链路容量。应该理解,尽管图5说明了10Mbps以太网链路上的排队延迟相对所提供的负载,然而随着所提供的负载增加,多种其他类型的数据链路,比如100Mbps以太网链路和IEEE 802.11链路,会遭受类似的排队延迟的增加。
参照图4,方法400包括发送一列诊断数据分组的行为(行为401)。行为401可以包括:发送计算机系统在瓶颈带宽值(如由分组对测试所估计的)的特定小部分(如百分之一)把一列诊断分组发送到网络数据路径上。例如,探测模块204可以在数据路径291的瓶颈带宽的一小部分(如一百分之一或五十分之一)把一列诊断数据分组发送到数据路径291上。瓶颈带宽的特定小部分表示了一个诊断数据速率,它显著地降低了使网络数据路径拥塞或者使网络数据路径上发送的数据降级的似然性。例如,在瓶颈带宽为5Mbps的网络数据路径上发送一列诊断数据分组时可以使用50千比特每秒(“Kbps”)的诊断数据速率。发送计算机系统可以在每个诊断数据分组内包括一个时标,指示发送该诊断数据分组的时间。
方法400包括至少接收某些诊断数据分组的行为(行为404)。行为404可以包括:接收计算机系统至少接收某些诊断数据分组,这些诊断数据分组包括在从发送计算机系统被发送到接收计算机系统的一列诊断数据分组内。例如,探测模块234可以接收从探测模块204发送的一列诊断数据分组内的至少某些诊断数据分组。
方法400包括从接收到的诊断数据分组中标识被延迟的诊断数据分组的数目的行为(行为405)。例如,探测模块可以从自探测模块204接收到的诊断数据分组中标识出被延迟的诊断数据分组。当为数据分组计算的排队延迟大于特定的接收时间延迟阈值时,数据分组被视为“被延迟的”。排队延迟可以按照公式3计算:
QDi=Transit_Time_For_Packeti-Minimum_Tran_Time_Over_All_Received_Packets
公式3
Transit_Time_For_Packeti是表示特定的接收到的数据分组的通过(即在电线上)时间的值。Transit_Time_For_Packeti等于接收到数据分组的时间减去发出数据分组的时间之差。当接收到数据分组时,RTime_Pack是可用于表示接收时间的值。发出数据分组的时间可以从数据分组内包括的时标来标识。当接收到来自一列数据分组的数据分组时,标识并适当地表示每个接收到的数据分组的发送时间和接收时间。为每个接收到的数据分组计算通过时间Transit_Time_For_Packet,Minimum_Tran_Time_Over_All_Received_Packets是表示所有计算的通过时间中最小通过时间的值。
公式3内的值可以按照公式3的算术运算被组合以计算QDi值,该值表示特定数据分组的排队延迟。减去Minimum_Tran_Time_Over_All_Received_Packets值使QDi值标准化,并且补偿了发送和接收端计算机系统处时钟值之差。因而,即使数据分组的通过时间由于时钟的不准确性而不准确或是否定的,仍然可以使用公式3。表1说明了八个数据分组的可能的发送和接收时间(作为小时:分钟:秒)的示例:
数据分组# 发送计算机处的发送时间 接收计算机处的接收时间 视在通过时间
1 12:10:01.004 12:10:06.057 00:05.053秒
2 12:10:01.006 12:10:06.059 00:05.053秒
3 12:10:01.008 12:10:06.060 00:05.052秒
4 12:10:01.010 12:10:06.063 00:05.053秒
5 12:10:01.012 12:10:06.068 00:05.056秒
6 12:10:01.014 12:10:06.068 00:05.054秒
7 12:10:01.016 12:10:06.070 00:05.054秒
8 12:10:01.018 12:10:06.073 00:05.055秒
表1
如表1所示,对于八个数据分组而言,数据分组3与Minimum_Tran_Time_Over_All_Received_Packets值5.052秒相关联。通过时间的列被标为“视在通过时间”,这是因为时钟不准确性使通过时间看上去与实际通过时间很不同。接收延迟阈值实际上可以是管理员或用户适当选择的任何阈值。在某些实施例中,接收延迟阈值等于发送时间间隔(如在异步发送之间)。表1中,发送时间间隔为2毫秒。
按照公式3,通过得到分组的视在通过时间减去5.052之差,可以计算每个数据分组的QDi。例如,分组7的QDi会是5.054秒-5.052秒,即2毫秒。分组7不会被视为被延迟的分组,因为2毫秒的QDi小于或等于2毫秒的发送时间间隔。相反,分组5的QDi会是4毫秒,并且会被视为被延迟的分组,因为4毫秒大于2毫秒。
方法400包括至少接收某些目标数据分组的行为(行为406)。行为406可以包括:接收计算机系统至少接收某些数据分组,这些数据分组被包括在从发送计算机系统被发送到接收计算机系统的目标数据分组列中。例如,探测模块234可以接收从探测模块204发送的一列目标数据分组中的至少某些目标数据分组。
方法400包括从接收到的目标数据分组中标识出被延迟的目标数据分组的行为(行为407)。例如,探测模块234可以从自探测模块204接收到的目标数据分组中标识出被延迟的目标数据分组。探测模块234可以按照公式3标识出被延迟的目标数据分组。
方法400包括把被延迟的目标数据分组数目与被延迟的诊断数据分组数目相比较的行为(行为408)。行为408可以包括:接收计算机系统把被延迟的目标数据分组数目与被延迟的诊断数据分组数目相比较以确定目标数据分组列是否在网络数据路径上造成拥塞。例如,探测模块234可以把从探测模块204发送的多个被延迟的目标数据分组与从探测模块204发送的多个被延迟的诊断数据分组相比较。
当被延迟的目标数据分组数目在被延迟的诊断数据分组数目的特定延迟分组阈值内时,应用数据流的传递会造成被探测网络数据路径转变为拥塞状态的似然性降低。延迟分组阈值可以是多个数据分组或是数据分组的百分比,并且可以变化以表示应用数据流使网络拥塞的较保守或较不保守的估计。
例如,当希望数据流不会造成网络拥塞的较保守的估计时,可以设定较小的延迟分组阈值,比如3%。因而,为了一列目标数据分组指示网络数据路径拥塞降低的似然性,在接收延迟阈值内接收到的目标数据分组数目只能比在接收延迟阈值内接收到的诊断数据分组数目少3%。另一方面当希望数据流不会造成网络拥塞的较不保守的估计时,可以设定较大的延迟分组阈值,比如12%。因而,为了一列目标数据分组指示网络数据路径拥塞降低的似然性,在接收延迟阈值内接收到的目标数据分组数目只能比在接收延迟阈值内接收到的诊断数据分组数目少12%。
参照图6A,示例图600说明了在被探测网络数据路径的延迟阈值601内接收到的目标数据分组和诊断数据分组的百分比。被延迟小于延迟阈值601的数据分组(诊断和目标两者)被视为具有可接受的延迟。另一方面被延迟大于接收时间阈值601的数据分组被视为具有不可接受的延迟。在示例图600中,接收到的分组的百分比表示在纵轴(“Y轴”)上,与接收延迟阈值601的时间差表示在横轴(“X轴”)上。示例图600说明了以下步骤的结果:主动地探测数据负载为4Mbps的网络数据路径(如数据路径291)以确定所估计的数据传输速率为2Mbps的数据流是否会使网络数据路径转变为拥塞状态。
诊断列的Y截距表示在接收延迟阈值601内接收到的诊断数据分组的百分比。如图所示,在可接受的延迟内接收到约百分之九十的诊断数据分组。目标列的Y截距表示在接收延迟阈值601内接收到的目标数据分组的百分比。如图所示,在可接受的延迟内接收到约百分之九十的目标数据分组。由于在可接受的延迟内接收到近似的目标数据分组和诊断数据分组的百分比,因此目标数据分组的百分比大概被视为在诊断数据分组百分比的延迟分组阈值内。因此,示例图600指明,应用数据传输速率为2Mbps的数据流大概不会使被探测的网络数据路径拥塞。因而,可以允许把2Mbps数据流发送到被探测的网络数据路径上。
当被延迟的目标数据分组数目不在被延迟的诊断数据分组数目的特定延迟分组阈值内时,应用数据流的传递使被探测的网络数据路径转变为拥塞状态的似然性增加。参照图6B,示例图650说明了从被探测的网络数据路径在接收延迟阈值601内接收到的目标数据分组和诊断数据分组的百分比。被延迟小于延迟阈值601的数据分组(诊断和目标两者)被视为具有可接受的延迟。另一方面被延迟大于接收时间阈值601的数据分组被视为具有不可接受的延迟。在示例图650中,接收到的分组的百分比表示在纵轴(“Y轴”)上,与接收延迟阈值601的时间差表示在横轴(“X轴”)上。示例图650说明了以下步骤的结果:主动地探测数据负载为4Mbps的网络数据路径(如数据路径291)以确定所估计的数据传输速率为7Mbps的数据流是否会使网络数据路径转变为拥塞状态。
诊断列的Y截距表示在接收延迟阈值601内接收到的诊断数据分组的数目。如图所示,在延迟阈值601内接收到约百分之九十的诊断数据分组。目标列的Y截距表示在延迟阈值601内接收到的目标数据分组的数目。如图所示,在延迟阈值601内接收到约百分之五十的目标数据分组。由于在可接受的延迟内接收到目标数据分组百分比和诊断数据分组百分比显著地不同,因此目标数据分组的百分比大概不被视为在诊断数据分组百分比的延迟分组阈值内。因此,示例图650指明,应用数据传输速率为7Mbps的数据流大概会使被探测的网络数据路径拥塞。因而,防止把使网络数据路径拥塞的似然性增加的数据流发送到网络数据路径上。
根据网络数据路径(如数据链路为10Mbps、100Mbps等)的配置,在可接受延迟内(如在接收延迟阈值601之前)接收到的目标数据分组的特定百分比,在独立观察时,可以不必要提供可靠的拥塞指示。例如,在10Mbps网络数据链路上,在延迟阈值内接收75%的目标数据分组会被视为不指示拥塞的接收百分比。另一方面在100Mbps的网络数据链路上,在延迟阈值内接收75%的目标数据分组会被视为指示拥塞的接收百分比。然而,发送和/或接收端计算机系统也许不能在发送一列目标数据分组之前得知网络数据路径的配置。例如,发送端和接收端计算机系统可以由一条或多条中间数据链路(包括瓶颈链路)分开。
如前所述,可以在显著降低使网络数据路径拥塞的似然性的数据速率下发送诊断分组列。因而,当网络数据路径大概不拥塞时,可以使用一列诊断分组来标识网络数据路径的被延迟分组的可接受阈值。而且,即使当发送端和接收端计算机系统事先不知道网络数据路径的配置时也可以标识被延迟分组的可接受阈值。结果,不需要发送端和接收端计算机系统在确定是否可以把数据流发送到网络数据路径上之前知道网络数据路径配置。而且,通过把被延迟的目标数据分组的百分比与被延迟分组的可接受阈值相比较(与仅根据网络数据路径的配置作出判决相反),可以作出更可靠的判决。
方法400包括发送比较结果的行为(行为409)。行为409可以包括:接收计算机系统向发送计算机系统发送目标数据分组与诊断数据分组的排队延迟的比较结果。例如,探测模块234可以向探测模块234发送比较结果。方法400包括接收比较结果的行为(行为403)。行为403可以包括:发送计算机系统从接收计算机系统接收目标数据分组与诊断数据分组的排队延迟的比较结果。例如,探测模块204可以从探测模块234接收比较结果。当结果适当时,应用模块202就以所请求的应用数据速率把应用数据流发送到应用232。
在某些实施例中,在发出一列诊断数据分组后,从发送计算机系统向接收计算机系统发送一列中间诊断数据分组。该列中间诊断数据分组以中间诊断数据速率被发送,所述中间诊断数据速率大于诊断数据速率但小于所请求的应用数据速率。当所请求的应用数据速率与诊断数据速率相比较大时,在诊断数据速率和所请求的应用数据速率之间的某一中间诊断数据速率处确定可能的拥塞是有利的。例如,网络数据路径的Available_Bottleneck_Bandwidth值会使70Mbps。因而,可以选择700Kbps的诊断数据速率。当所请求的应用数据传输速率为60Mbps时,在700Kbps和60Mbps之间的中间诊断数据速率处确定可能的拥塞是有利的,例如在20或30Mbps处。
接收到的中间诊断数据分组的排队延迟与接收到的诊断分组的排队延迟相比较。当被延迟的中间诊断数据分组的数目不在被延迟的诊断数据分组数目的特定延迟分组阈值内时,以中间诊断数据速率传递数据流会使被探测的网络数据路径转变为拥塞状态的似然性增加。结果,较高所请求应用数据速率下的数据流大概也会使被探测的网络数据路径转变为拥塞状态。因而,主动探测会终止,而不以所请求的应用数据传输速率进行主动探测。作为有利的结果,防止使被探测网络数据路径拥塞的似然性增加的数据被发送到被探测的网络数据路径上。
另一方面,当被延迟的中间诊断数据分组的数目在被延迟的诊断数据分组的特定延迟分组阈值内时,以中间诊断数据速率传递数据流会使被探测的网络数据路径转变为拥塞状态的似然性减小。因而,主动探测会以所请求的应用数据传输速率继续。
可能发送一系列数据分组(诊断、中间诊断或目标)列来主动地探测网络数据路径,以便提高关于潜在网络路径拥塞的判决可靠性。起初,发送一个序列的诊断分组列,以标识与显著降低拥塞网络数据路径的似然性的数据传输速率相关联的排队延迟。随后,在适当时,发送一个序列的中间诊断数据分组列,以标识与中间诊断数据传输速率相关联的排队延迟。然后,发送一个序列的目标数据分组列,以标识与所请求的应用数据传输速率相关联的排队延迟。
序列内的每个数据分组列都可以由一个探测列间隔来分开。可以选择探测列间隔来减少被探测网络数据路径上的捕获效应。例如,以1毫秒探测数据分组间隔发送的10个数据分组的列(即,总发送时间为10毫秒)可以由90毫秒的探测列间隔分开。这样,100毫秒的间隔分开了数据分组列的一个序列内连续列的发送起始。这有效地把用于探测网络数据路径的负载降低到所请求的应用数据速率的10%。
网络管理员或用户可以按照期望的可靠性和效率在一个序列的列内选择列数目。当期望较高的可靠性时,可以增加序列内的列数目,从而为排队延迟的计算提供了附加采样。另一方面,当期望较高的效率时,可以减少序列内的列数目,从而减少用于完成对网络数据路径的探测的时间。
在某些实施例中,探测模块(如探测模块204、224或234)在计算机系统处提供了一个用户界面,使得网络管理员或用户可以为这里描述的参数选择并且/或者输入期望的值。用户界面可能提供参数值列表,它们可以由网络管理员或用户用输入设备来选择。类似地用户界面可能提供标记的字段,其中网络管理员或用户可以用输入设备输入值。例如,网络管理员或用户可以通过用户界面来选择或输入期望的Acceptable_Loading值,用于使发送端和/或接收端数据链路以及期望的指定瓶颈负载限制对数据流可用的带宽。同样,网络管理员或用户可以选择或输入参数,用于配置数据分组列和数据分组列的序列,用于主动地探测网络数据路径。
本发明可以包含在其他特定形式中,而不背离其精神或基本特征。所述实施例要被视为仅仅是说明性的而不是限制性的。因此,本发明的范围是由所附权利要求指出,而不是由上述描述指出。在权利要求的等价物的意义和范围内的所有变化都被包含在其范围内。