本申請是申請日為2010年2月16日、申請?zhí)枮?01080007339.4、發(fā)明名稱為“用于測量可用帶寬的有效和容損失方法和機制”的申請的分案申請。本發(fā)明涉及確定網(wǎng)絡(luò)中的帶寬。更具體地,本發(fā)明涉及使用包括一個或多個網(wǎng)絡(luò)接口的任何設(shè)備確定帶寬。
背景技術(shù):
:測量網(wǎng)絡(luò)性能的標(biāo)準(zhǔn)可以是其帶寬。在網(wǎng)絡(luò)中,帶寬通常定義為在給定時間段(例如秒)從一點可以傳送到另一點的數(shù)據(jù)量。帶寬可以以每秒比特(bps)或每秒字節(jié)(bps)來表示。具有高帶寬的鏈路例如能夠傳送足夠多的信息以在視頻呈現(xiàn)中維持圖像連續(xù)。未使用的容量或可用帶寬可以指示網(wǎng)絡(luò)的性能。具體地,關(guān)于網(wǎng)絡(luò)中路徑的可用帶寬的信息可以有助于主機在給定位置可用的多個候選網(wǎng)絡(luò)中選擇合適的網(wǎng)絡(luò)來使用。已知測量可用帶寬的幾個方法。然而這些方法可能具有以下缺陷。例如,一個問題可能是測量的延遲性。使用傳輸控制協(xié)議(tcp)的可用帶寬測量方法由于tcp的“慢啟動”流控制行為而顯示出高的測量延遲性,例如多于10秒?,F(xiàn)有的可用帶寬測量方法具有高測量延遲性的另外的原因是因為這些方法盡可能準(zhǔn)確的測量可用帶寬。這些方法沒有關(guān)注減少測量延遲性或傳輸?shù)臄?shù)據(jù)量。例如,iperf(tcp/udp帶寬測量工具)測試?yán)^續(xù)直到預(yù)定時間段過去或直到傳輸?shù)陌宋蛔止?jié)量達(dá)到預(yù)定值。即使通過更短時間段或要發(fā)送的更少數(shù)量的數(shù)據(jù)可以達(dá)到測量準(zhǔn)確度的充分級別,發(fā)生了測試。然而,確定更多的優(yōu)化的參數(shù)值需要調(diào)整過程。而iperf沒有調(diào)整過程。pathchirp(一種udp帶寬測量工具)具有調(diào)整過程,其需要幾個測試循環(huán)來調(diào)整測試分組的內(nèi)部傳輸間隔。這造成更高的測量延遲性和更長的測試周期。另一個問題是一些可用帶寬測量方法需要從用戶輸入?yún)?shù)來提高測量精度,或減少延遲或測量需要的數(shù)據(jù)的數(shù)量。例如,上述pathchirp中的調(diào)整過程可能希望測量的可用帶寬的上限和下限以及分組大小作為輸入?yún)?shù)。上述的iperf工具允許發(fā)送測量周期或八位字節(jié)的數(shù)目,但是最大傳輸速率和分組大小由用戶指定。當(dāng)這些參數(shù)沒有由用戶指定時,可使用預(yù)配置的缺省值。然而預(yù)配置的缺省值可造成測量精度降低,測量延遲或發(fā)送的數(shù)據(jù)的數(shù)量增加。另外的問題是實際上不存在對于分組損耗是健壯的可用帶寬測量方法。基于tcp的方法對于分組損耗可以是健壯的,但是其基本測量基于tcp應(yīng)用的吞吐量。然而,由于tcp窗口流控制,基于tcp的方法不測量大于該吞吐量的可用帶寬。因此,已知的方法和處理不能夠測量或及時提供網(wǎng)絡(luò)的帶寬信息。如上所述,這些方法和處理包括測量延遲或需要用戶輸入。技術(shù)實現(xiàn)要素:為了克服上述問題,公開的實施例提供稱為單脈沖方法的新的可用帶寬方法。公開的實施例的單脈沖方法減少了測量延遲和發(fā)送的數(shù)據(jù)的數(shù)量,而不需要從用戶輸入?yún)?shù)。公開的單脈沖方法還設(shè)計來對于分組損耗是健壯的。使用設(shè)計來對于分組損耗是健壯的算法來確定測試分組的數(shù)量。公開的實施例使用分組簇來避免在計算中計算丟失的分組。分組簇排除了丟失的分組之間的時間段。因此,公開的實施例介紹了一種用于確定網(wǎng)絡(luò)環(huán)境中的可用帶寬的方法。該方法包括發(fā)送多個測試分組。每個測試分組包括序列號。該方法還包括接收與所述多個測試分組對應(yīng)的多個測試接收分組。每個測試接收分組包括所對應(yīng)的測試分組的所述序列號。該方法還包括根據(jù)多個成功傳送的測試分組形成至少一個分組簇。該方法還包括基于所述至少一個分組簇和在所述至少一個分組簇中的第一測試分組和最后一個測試分組之間的內(nèi)部到達(dá)時間確定可用帶寬。根據(jù)公開的實施例,介紹了一種用于在無需用戶輸入的情況下確定網(wǎng)絡(luò)中的可用帶寬的方法。該方法包括動態(tài)確定從發(fā)送節(jié)點要發(fā)送的測試分組的數(shù)量。每個測試分組包括序列號。該方法還包括向接收節(jié)點發(fā)送所述數(shù)量的測試分組。該方法還包括從接收節(jié)點接收與所述測試分組對應(yīng)的多個測試接收分組。每個測試接收分組包括其相應(yīng)的測試分組的所述序列號。該方法還包括基于至少一個網(wǎng)絡(luò)參數(shù)設(shè)置測試分組大小或傳輸速率的值。該方法還包括通過單脈沖算法使用至少一個分組簇確定所述發(fā)送節(jié)點和接收節(jié)點之間的可用帶寬,所述分組簇包括所述多個的測試接收分組和所述值。根據(jù)公開的實施例還提供一種用于確定網(wǎng)絡(luò)環(huán)境中的可用帶寬的單脈沖方法。該單脈沖方法包括從發(fā)送節(jié)點向接收節(jié)點發(fā)送具有序列號的測試分組。單脈沖方法還包括在所述發(fā)送節(jié)點接收具有所述序列號的測試接收分組。單脈沖方法還包括在分組簇中放置至少兩個傳送的測試分組,從而傳送的測試分組中的序列號是連續(xù)的。單脈沖方法還包括使用單脈沖算法中的分組簇來確定所述發(fā)送節(jié)點和接收節(jié)點之間的可用帶寬。附圖說明包括附圖來提供本發(fā)明的另外的理解,該附圖組成說明書的一部分。下面列出的附圖例示了本發(fā)明的實施例,以及該說明書用于解釋在權(quán)利要求書中公開的本發(fā)明的原理,其中:圖1例示了根據(jù)公開的實施例的具有節(jié)點的網(wǎng)絡(luò)環(huán)境;圖2例示了根據(jù)公開的實施例的用于實施單脈沖方法來確定可用帶寬的流程圖;圖3例示了根據(jù)公開的實施例的用于分組簇算法以形成分組簇的狀態(tài)機;圖4例示了根據(jù)公開的實施例的測量往返路徑的可用帶寬的實例性單脈沖序列圖;圖5例示了根據(jù)公開的實施例的測量前向路徑的可用帶寬的實例性單脈沖序列圖;圖6例示了根據(jù)公開的實施例的測量后向路徑的可用帶寬的實例性單脈沖序列圖;圖7例示了根據(jù)公開的實施例的單脈沖協(xié)議分組的框圖;圖8例示了根據(jù)公開的實施例的開始消息分組的框圖;圖9例示了根據(jù)公開的實施例的數(shù)據(jù)消息分組的框圖;圖10例示了根據(jù)公開的實施例的回聲或回聲應(yīng)答消息分組的框圖;以及圖11例示了根據(jù)公開的實施例的報告消息分組的框圖。具體實施方式現(xiàn)在詳細(xì)介紹本發(fā)明的優(yōu)選實施例。在附圖中例示了本發(fā)明的優(yōu)選實施例的實例。圖1示出網(wǎng)絡(luò)環(huán)境100具有節(jié)點102、104和106。因為節(jié)點可位于多于一個的網(wǎng)絡(luò)中,因此網(wǎng)絡(luò)環(huán)境100稱為“環(huán)境”。從而多于一個的網(wǎng)絡(luò)可在網(wǎng)絡(luò)環(huán)境100中可用。節(jié)點102可以是源節(jié)點,因為它承擔(dān)主動的角色來沿網(wǎng)絡(luò)環(huán)境100中的路徑啟動可用帶寬測試。節(jié)點104可是目標(biāo)節(jié)點,因為它承擔(dān)被動的角色來根據(jù)公開的實施例啟動可用帶寬測試。節(jié)點102包括以傳輸速率發(fā)送分組的網(wǎng)絡(luò)接口1021。節(jié)點104包括以傳輸速率發(fā)送分組的網(wǎng)絡(luò)接口1041。前向路徑110是從源節(jié)點102到目標(biāo)節(jié)點104的路徑。后向路徑112是從目標(biāo)節(jié)點104到源節(jié)點102的路徑。往返路徑114是前向路徑110和后向路徑112的連接,其起始和終止于源節(jié)點102。節(jié)點106也可以使用上述指定給節(jié)點102和104的路徑。實際上,術(shù)語“源節(jié)點”和“目標(biāo)節(jié)點”僅用于參考,網(wǎng)絡(luò)環(huán)境100中的任何節(jié)點可用作源節(jié)點或目標(biāo)節(jié)點來測量可用帶寬。根據(jù)公開的實施例,定向可用帶寬可指前向路徑110或后向路徑112的可用帶寬。在確定定向可用帶寬中,也可使用術(shù)語最大傳輸單元(mtu)和往返時間(rtt)。圖2例示了根據(jù)公開的實施例實施單脈沖(burst)方法來確定可用帶寬的流程圖。單脈沖算法或方法可測量往返可用帶寬、前向路徑可用帶寬和后向路徑可用帶寬。通過從發(fā)送節(jié)點向接收節(jié)點發(fā)送測試分組以及在發(fā)送節(jié)點接收測試接收分組來執(zhí)行步驟202。下面將更詳細(xì)公開這些步驟。返回圖1,當(dāng)確定前向路徑可用帶寬時,源節(jié)點102向目標(biāo)節(jié)點104以傳輸速率rt(bps)發(fā)送大小為l(八位字節(jié))的一個或多個測試分組116,其包括因特網(wǎng)協(xié)議(ip)標(biāo)頭。于是源節(jié)點102等待從目標(biāo)節(jié)點104的測試接收分組118。對于后向路徑可用帶寬,目標(biāo)節(jié)點104向源節(jié)點102發(fā)送一個或多個測試分組120。目標(biāo)節(jié)點104于是等待來自源節(jié)點102的測試接收分組122。作為定向可用帶寬測試,前向和后向可用帶寬分析可以是已知的。往返路徑可用帶寬測試可以使用測試分組124和測試接收分組126。測試分組和相應(yīng)的測試接收分組通過承載在每個分組中的序列號來標(biāo)識。測試分組的發(fā)送方和接收方以及計算可用帶寬的實體依據(jù)如下所述的執(zhí)行的測試的類型來確定。在往返路徑可用帶寬測試的情況下,測試接收分組126可包括與測試分組124相同數(shù)量的有效載荷以在前向和后向路徑中裝載瓶頸鏈路。在定向可用帶寬測試的情況下,測試接收分組不包括有效載荷來裝載瓶頸鏈路。測試分組中的發(fā)送的八位字節(jié)的數(shù)目具有分別表示為nmin和nmax的下限和上限。在執(zhí)行公開的實施例的操作時,源節(jié)點102作為發(fā)送方,至少發(fā)送nmin個八位字節(jié)的測試分組,以及當(dāng)在發(fā)送nmin個八位字節(jié)或發(fā)送nmax個八位字節(jié)之后接收測試接收分組時停止發(fā)送。因此,發(fā)送的測試分組的數(shù)量基于往返時間或rtt以及可用帶寬來動態(tài)確定。此外,測量延遲取決于rtt、可用帶寬和傳輸速率。返回圖2,通過基于測試分組和測試接收分組形成分組簇來執(zhí)行步驟206。根據(jù)公開的實施例,分組簇定義為具有連續(xù)的序列號的至少兩個測試分組的傳送時間的集合。對于往返路徑可用帶寬測試,當(dāng)相應(yīng)的測試接收分組由源節(jié)點102接收時測試分組看作是傳送的。對于前向路徑可用帶寬測試,當(dāng)測試分組由目標(biāo)節(jié)點104接收時測試分組看作是傳送的。對于后向路徑可用帶寬測試,當(dāng)測試分組由源節(jié)點102接收時測試分組看作是傳送的。在每個簇中分組簇可以以最小序列號的升序來排列。pi可以表示具有序列號為i的測試分組,以及ck可以表示第k個分組簇。如果測試分組p1、p3、p2、p5、p6、p8、p10和p11以所列出的順序接收,則分組簇將是c1=[p1,p3,p2]、c2=[p5,p6]、和c3=[p10,p11]。分組p8沒有形成分組簇。公開的實施例公開了根據(jù)步驟202和204中編輯的測試分組傳送時間的陣列形成分組簇的列表的算法。該算法的復(fù)雜性可以與不需要重新對測試分組排序的測試分組的數(shù)目相關(guān)。對于往返路徑和后向路徑可用帶寬測試,分組簇算法通過源節(jié)點102執(zhí)行。對于前向路徑可用帶寬測試,分組簇算法通過目標(biāo)節(jié)點104執(zhí)行。讓a[]表示整數(shù)陣列,其中a[i]存儲第(i-1)個測試分組的傳送時間,其中i表示陣列的索引。陣列中的0的傳送時間指示相應(yīng)的測試分組沒有傳送。測試接收分組看作往返可用帶寬測試的測試分組。陣列的大小由最大序列號減1來限定。術(shù)語last表示最后一個測試分組的序列號,術(shù)語add_cluster(intmin_a,intmax_a,intn)可以是創(chuàng)建新的分組簇的過程,該分組簇的最小傳送時間、最大傳送時間和簇中的分組的數(shù)目分別通過min_a、max_a和n給出。術(shù)語min(x,y)和max(x,y)可分別代表返回x和y之間的最小值和最大值的函數(shù)。一旦完成測試分組的發(fā)送和接收測試接收分組,就調(diào)用分組簇算法。在往返路徑可用帶寬測試的一個實施例中,當(dāng)在步驟204中已經(jīng)傳送了最后一個發(fā)送的測試分組時,即當(dāng)源節(jié)點102接收最后發(fā)送的測試分組的測試接收分組時,測試分組的發(fā)送和測試接收分組的接收可看作結(jié)束了。在另外的往返路徑可用帶寬測試的實施例中,源節(jié)點102在步驟202發(fā)送最后的測試分組之后發(fā)送明確的完成指示分組。當(dāng)源節(jié)點102在步驟202接收到來自目標(biāo)節(jié)點104的明確的完成指示接收分組時,發(fā)送測試分組和接收測試接收分組可看作結(jié)束。在前向路徑可用帶寬測試的一個實施例中,源節(jié)點102在步驟202發(fā)送最后的測試分組之后發(fā)送明確的完成指示分組。當(dāng)目標(biāo)節(jié)點104在步驟202接收到來自源節(jié)點102的明確的完成指示分組時,發(fā)送測試分組和接收測試接收分組可看作結(jié)束。在后向路徑可用帶寬測試的一個實施例中,目標(biāo)節(jié)點104在步驟202發(fā)送最后的測試分組之后發(fā)送明確的完成指示分組。當(dāng)源節(jié)點102在步驟202接收到來自目標(biāo)節(jié)點104的明確的完成指示分組時,發(fā)送測試分組和接收測試接收分組可看作結(jié)束。分組簇算法遵循圖3中所示的狀態(tài)機。狀態(tài)機包括3個狀態(tài):簇外、合格簇以及簇內(nèi),其中簇外的狀態(tài)是初始狀態(tài)。狀態(tài)簇外指示與a[i]對應(yīng)的測試分組沒有傳送。狀態(tài)簇內(nèi)指示與a[i]對應(yīng)的測試分組輸入當(dāng)前簇。狀態(tài)合格簇指示當(dāng)且僅當(dāng)與a[i]和a[i+1]對應(yīng)的測試分組被傳送,以及與a[i-1]對應(yīng)的測試分組沒有傳送時,與a[i]對應(yīng)的測試分組屬于新的簇。在圖3中,每個箭頭表示狀態(tài)遷移,其中與箭尾和箭頭關(guān)聯(lián)的狀態(tài)分別表示源和目的狀態(tài)。沒有源狀態(tài)的狀態(tài)遷移指示開始狀態(tài)機的初始狀態(tài)遷移。沒有目的狀態(tài)的狀態(tài)遷移指示結(jié)束狀態(tài)機的最終狀態(tài)遷移。與每個遷移關(guān)聯(lián)并由字符“/”分隔的標(biāo)簽指示一對條件和動作,其中標(biāo)簽中的“/”的左側(cè)文字和右側(cè)文字分別指示條件和動作。如果當(dāng)狀態(tài)遷移的源狀態(tài)是當(dāng)前狀態(tài)時保持與該遷移關(guān)聯(lián)的條件,則在進入目的狀態(tài)之前采取與該狀態(tài)遷移關(guān)聯(lián)的動作。具有空條件的狀態(tài)遷移指示無條件發(fā)生狀態(tài)遷移。具有空動作的狀態(tài)遷移指示對于該狀態(tài)遷移不采取任何動作。到狀態(tài)簇外的初始狀態(tài)遷移具有動作i=0;當(dāng)i<last&&a[i]>0,則發(fā)生從簇外狀態(tài)到合格簇狀態(tài)的狀態(tài)遷移,以及在該遷移中采取動作n=1;min_a=max_a=a[i];i++;。當(dāng)i<last并且a[i]==0,則發(fā)生從簇外狀態(tài)到相同狀態(tài)的狀態(tài)遷移,并在該狀態(tài)遷移中采取i++;動作。當(dāng)i==last以及在該遷移中不采取任何動作,則發(fā)生從簇外的狀態(tài)的最終的狀態(tài)遷移。當(dāng)i<last&&a[i]>0發(fā)生從合格簇狀態(tài)到簇內(nèi)狀態(tài)的狀態(tài)遷移,以及在該遷移中采取n++;min_a=min(min_a,a[i]);max_a=max(max_a,a[i]);i++;的動作。當(dāng)i<last&&a[i]==0,則發(fā)生從狀態(tài)合格簇到狀態(tài)簇外的狀態(tài)遷移,以及在該遷移中采取i++;的動作。當(dāng)i==last則發(fā)生從狀態(tài)合格簇的最終的狀態(tài)遷移,以及在該遷移中沒有采取任何動作。當(dāng)i<last&&a[i]>0則發(fā)生從狀態(tài)簇內(nèi)到相同的狀態(tài)的狀態(tài)遷移,以及在該遷移中采取n++;min_a=min(min_a,a[i]);max_a=max(max_a,a[i]);i++;的動作。當(dāng)i<last&&a[i]==0則發(fā)生從狀態(tài)簇內(nèi)到狀態(tài)簇外的狀態(tài)遷移,以及在該遷移中采取add_cluster(min_a,max_a,n);i++;的動作。當(dāng)i==last則發(fā)生從狀態(tài)簇內(nèi)的最終的狀態(tài)遷移,以及在該遷移中采取add_cluster(min_a,max_a,n);的動作。傳送的測試分組于是給予上述的標(biāo)準(zhǔn)從簇外移動到簇內(nèi)。測試分組可以不移動到分組簇,以及從可用帶寬分析中退出。因此,使用圖3中所示的狀態(tài)機,可以根據(jù)如上所述的傳送的測試分組來形成分組簇。通過設(shè)置值以便執(zhí)行單脈沖方法來確定可用帶寬來執(zhí)行步驟208。用戶可以經(jīng)由輸入或其他接口設(shè)置這些值。然而,可不接收輸入,以及可以不需要其來設(shè)置這些值。在公開的實施例中,設(shè)置一對值l和rt。如上所述,l可以表示測試分組的大小(以八位字節(jié)為單位)。如上所述,rt可以表示傳輸速率(以每秒比特為單位(bps))。如果用戶沒有指定,則l和rt可以如下來確定。如果路徑mtu是已知的,則l設(shè)置為路徑mtu。否則,l設(shè)置為最小mtu。例如,對于ipv4網(wǎng)絡(luò),l可設(shè)置為576個八位字節(jié),而對于ipv6網(wǎng)絡(luò),l可設(shè)置為1280個八位字節(jié)。rt可設(shè)置為大約或等于測試分組的輸出接口的最大速度的值。如圖1所示,節(jié)點102包括網(wǎng)絡(luò)接口1021,節(jié)點104包括網(wǎng)絡(luò)接口1041。在后向路徑可用帶寬測試的情況下,rt可以由源節(jié)點102指定為源的輸入接口的最大速度,并傳送到目標(biāo)節(jié)點。優(yōu)選地,諸如節(jié)點104的目標(biāo)節(jié)點,應(yīng)該具有最大速度大于用于源節(jié)點102的網(wǎng)絡(luò)接口1021的網(wǎng)絡(luò)接口1041。通過使用單脈沖方法或算法確定可用帶寬來執(zhí)行步驟210。根據(jù)公開的實施例的可用帶寬,可以使用下面的公式1來確定:其中mk表示第k個分組簇中測試分組的數(shù)目(mk≥2),dk表示第k個分組簇中第一和最后一個測試分組之間的以秒為單位的內(nèi)部傳送時間,以及c表示分組簇的總數(shù)目。因為測試分組可以不按順序傳送,簇的第一傳送的測試分組可以不具有簇中的最小序列號。類似地,簇中的最后的傳送的測試分組可以不具有簇中的最大的序列號。更詳細(xì)公開每個度量的單脈沖方法和算法。為了簡要,在所有測量算法中,如果在時間段dmax[秒](dmax大于在正常運行的網(wǎng)絡(luò)中的最大的可能rtt值,例如5秒)中單脈沖測試沒有完成或序列號超出其最大值,則源節(jié)點102和目標(biāo)節(jié)點104可立即刪除其狀態(tài)以及該測試被看作失敗。此外,當(dāng)甚至在接收第一測試接收分組之前發(fā)送的八位字節(jié)的總數(shù)目達(dá)到閾值nmax時,測試分組的發(fā)送方停止發(fā)送測試分組。nmax可這樣設(shè)置,從而nmax/l不大于在序列號超出其最大值之前發(fā)送的測試分組的最大數(shù)目。圖4例示了根據(jù)公開的實施例的測量往返路徑可用帶寬的實例性單脈沖序列圖400。在這種情況下,如線402所示的回聲分組和如線404所示的回聲應(yīng)答分組分別用作測試分組和測試接收分組。回聲和回聲應(yīng)答消息的大小為l。源節(jié)點102至少發(fā)送nmin個八位字節(jié)的回聲消息402(以速率rt),以及當(dāng)在發(fā)送nmin八位字節(jié)之后接收到回聲應(yīng)答消息時或當(dāng)發(fā)送nmax八位字節(jié)時停止發(fā)送。在計算可用帶寬時,源節(jié)點102使用回聲消息402的到達(dá)時間作為測試分組的傳送時間。在圖4中,丟失第4個回聲應(yīng)答消息4040,創(chuàng)建2個分組簇c1={p1,p2,p3}和c2={p5,p6}。因此,這些分組簇可用在使用如上所述的單脈沖方法確定可用帶寬中。在往返路徑可用帶寬測試的另外的實施例中,源節(jié)點102可在發(fā)送具有非零序列號的回聲消息之前,通過發(fā)送一個或多個可達(dá)性測試分組以及等待從目標(biāo)節(jié)點104響應(yīng)于可達(dá)性測試消息返回的可達(dá)性測試接收分組來首先檢查目標(biāo)節(jié)點104是否支持單脈沖方法。在這種情況下,具有零(0)序列號的回聲或數(shù)據(jù)消息用作可達(dá)性測試消息以及具有零(0)序列號的回聲應(yīng)答或數(shù)據(jù)確認(rèn)消息用作可達(dá)性測試接收分組。可達(dá)性測試和可達(dá)性測試接收分組不用于形成分組簇??蛇_(dá)性測試分組可包含空有效載荷。在往返路徑可用帶寬測試的另外的實施例中,源節(jié)點102可作為明確完成指示分組發(fā)送結(jié)束消息,以及目標(biāo)節(jié)點104可響應(yīng)于從源節(jié)點102接收的結(jié)束消息返回作為明確的完成指示接收分組的結(jié)束消息。圖5例示了根據(jù)公開的實施例的測量前向路徑可用帶寬的實例性單脈沖序列圖500。在這種情況下,數(shù)據(jù)消息502和數(shù)據(jù)確認(rèn)消息504分別用作測試分組和測試接收分組。數(shù)據(jù)消息502的大小為l。數(shù)據(jù)確認(rèn)消息不包含有效載荷。源節(jié)點102至少發(fā)送nmin個八位字節(jié)的數(shù)據(jù)消息502,以及當(dāng)在發(fā)送nmin八位字節(jié)之后接收到數(shù)據(jù)確認(rèn)消息504時或當(dāng)發(fā)送nmax八位字節(jié)時停止發(fā)送,發(fā)送結(jié)束消息508以及之后等待報告消息510。目標(biāo)節(jié)點104等待直到接收到結(jié)束消息508以及之后返回報告消息510。在圖5中,丟失了第3個數(shù)據(jù)確認(rèn)消息506。目標(biāo)節(jié)點104使用數(shù)據(jù)消息502作為測試分組來計算可用帶寬,以及僅存在一個形成的表示為c1的分組簇,即c1={p1,p2,p3,p4,p5}。該分組簇于是可用于確定可用帶寬。在前向路徑可用帶寬測試的另外的實施例中,源節(jié)點102可在發(fā)送具有非零序列號的數(shù)據(jù)消息之前,通過發(fā)送一個或多個可達(dá)性測試分組以及等待從目標(biāo)節(jié)點104響應(yīng)于可達(dá)性測試消息返回的可達(dá)性測試接收分組來首先檢查目標(biāo)節(jié)點104是否支持單脈沖方法。在這種情況下,具有零(0)序列號的回聲或數(shù)據(jù)消息用作可達(dá)性測試消息以及具有零(0)序列號的回聲應(yīng)答或數(shù)據(jù)確認(rèn)消息用作可達(dá)性測試接收分組??蛇_(dá)性測試和可達(dá)性測試接收分組不用于形成分組簇??蛇_(dá)性測試分組可包含空有效載荷。在前向路徑可用帶寬測試的另外的實施例中,源節(jié)點102可在發(fā)送具有非零序列號的數(shù)據(jù)消息之前,通過向目標(biāo)節(jié)點104發(fā)送一個或多個具有零(0)序列號的數(shù)據(jù)消息以及等待從目標(biāo)節(jié)點104響應(yīng)于具有零(0)序列號的數(shù)據(jù)消息返回的數(shù)據(jù)確認(rèn)消息來首先檢查目標(biāo)節(jié)點104是否支持單脈沖方法。在前向路徑可用帶寬測試的另外的實施例中,目標(biāo)節(jié)點104可分別返回或發(fā)送數(shù)據(jù)確認(rèn)消息,代替對于每個數(shù)據(jù)消息返回數(shù)據(jù)確認(rèn)消息。例如,目標(biāo)節(jié)點104可對于每10個數(shù)據(jù)消息發(fā)送數(shù)據(jù)確認(rèn)消息,以及發(fā)送節(jié)點102因此接收數(shù)據(jù)確認(rèn)消息。具有零(0)序列號的數(shù)據(jù)和數(shù)據(jù)確認(rèn)消息不用于形成分組簇。具有零(0)序列號的數(shù)據(jù)消息可包含空有效載荷。圖6例示了根據(jù)公開的實施例的測量后向路徑可用帶寬的實例性單脈沖序列圖600。在這種情況下,數(shù)據(jù)消息602和數(shù)據(jù)確認(rèn)消息604分別用作測試分組和測試接收分組。數(shù)據(jù)消息602的大小為l。數(shù)據(jù)確認(rèn)消息604不包含有效載荷。源節(jié)點102可發(fā)送開始消息以啟動測試。開始消息606可包含由源節(jié)點102指定的rt。如果開始消息606沒有包含rt,則目標(biāo)節(jié)點104將確定rt的值。.目標(biāo)節(jié)點104至少發(fā)送nmin個八位字節(jié)的數(shù)據(jù)消息602(以速率rt),以及當(dāng)在發(fā)送nmin八位字節(jié)之后接收到數(shù)據(jù)確認(rèn)消息604時或當(dāng)發(fā)送nmax八位字節(jié)時停止發(fā)送,以及發(fā)送結(jié)束消息608。源節(jié)點102等待直到接收到結(jié)束消息608。在圖6中,丟失了第3個數(shù)據(jù)確認(rèn)消息610,從而創(chuàng)建兩個分組簇c1={p1,p2}和c2={p4,p5}。于是使用這些分組簇來使用如上所述的單脈沖方法或算法確定計算可用帶寬。在后向路徑可用帶寬測試的另外的實施例中,目標(biāo)節(jié)點104可在發(fā)送具有非零序列號的數(shù)據(jù)消息之前,通過發(fā)送一個或多個可達(dá)性測試分組以及等待從目標(biāo)節(jié)點104響應(yīng)于可達(dá)性測試消息返回的可達(dá)性測試接收分組來首先檢查源節(jié)點102是否支持單脈沖方法。在這種情況下,具有零(0)序列號的回聲或數(shù)據(jù)消息用作可達(dá)性測試消息以及具有零(0)序列號的回聲應(yīng)答或數(shù)據(jù)確認(rèn)消息用作可達(dá)性測試接收分組。可達(dá)性測試和可達(dá)性測試接收分組不用于形成分組簇??蛇_(dá)性測試分組可包含空有效載荷。當(dāng)具有零(0)序列號的回聲和回聲應(yīng)答消息分別用作可達(dá)性測試和可達(dá)性測試接收分組,該消息可在有效載荷中包含隨機生成的值以確保開始消息的發(fā)送方是與可達(dá)性測試接收分組的發(fā)送方相同。在后向路徑可用帶寬測試的另外的實施例中,源節(jié)點102可分別返回或發(fā)送數(shù)據(jù)確認(rèn)消息,代替對于每個數(shù)據(jù)消息返回數(shù)據(jù)確認(rèn)消息。例如,源節(jié)點102可對于每10個數(shù)據(jù)消息發(fā)送數(shù)據(jù)確認(rèn)消息。下面的分析可用于單脈沖方法或算法的值和特征,具體地,用在確定所示的公式1中使用的值。br,bf和bb表示往返可用帶寬、前向路徑可用帶寬和后向路徑可用帶寬。b取決于使用的可用帶寬測量類型表示br,bf或bb(b≤rt)。如果當(dāng)測量br時瓶頸鏈路正在共享上行鏈路和下行鏈路之間的帶寬,并且包括在前向路徑和后向路徑中,則保持如下公式2所示的關(guān)系:min(bf,bb)/2≤br≤min(bf,bb).(2)否則,保持如下公式3的關(guān)系:br=min(bf,bb).(3)應(yīng)該注意,測量br時的瓶頸鏈路和測量bf或bb時的瓶頸鏈路可以是不同的。trtt表示第一測試分組和測試接收分組交換(即,在往返路徑可用帶寬測試情況下具有非零序列號的第一回聲和回聲應(yīng)答交換以及在定向可用帶寬測試情況下具有非零序列號的第一數(shù)據(jù)和數(shù)據(jù)確認(rèn)交換)的rtt。n、nt和nr分別表示發(fā)送的八位字節(jié)的總數(shù)目、測試分組的八位字節(jié)的總數(shù)目和測試接收分組的總數(shù)目。術(shù)語表示返回其值為不小于x的最小整數(shù)的整數(shù)的取底函數(shù)。在該分析中,公開的實施例假定nmin≤nt≤nmax以及nmax/l不大于在序列號超出其最大值之前發(fā)送的測試分組的最大數(shù)目。nt通過如下來給出:術(shù)語d表示以秒為單位的測量延遲。假定沒有分組損耗或亂序的分組,下述說明獲得單脈沖的三種測試類型中的每個的n和d。在這種情況下,c=1,因此如下來計算可用帶寬:b=8(m1-1)l/d1.(5)因為m1=nt/l,則如下所示:d1=8(nt-l)/b(6)針對往返路徑可用帶寬測試,僅適用回聲和回聲應(yīng)答消息。因此,n=nt+nr.(7)因為回聲和回聲應(yīng)答消息具有相同的消息長度,則:nr=nt.(8)因為公式6和7導(dǎo)出如下:因此,針對前向路徑可用帶寬測試,示出如下分析。la、ls和lr分別表示包括udp和ip標(biāo)頭的數(shù)據(jù)確認(rèn)消息、開始消息和報告消息的長度。因為數(shù)據(jù)確認(rèn)消息沒有包含有效載荷,因此如下所示:nr=ntla/l.(11)因為除了數(shù)據(jù)和數(shù)據(jù)確認(rèn)消息使用之外,還使用了開始和報告消息,則n=nr+nt+ls+lr.(12)因此,td、ta和tr分別表示第一數(shù)據(jù)消息和報告消息的消息傳送延遲。因為trtt=td+ta,則針對后向路徑可用帶寬測試,可示出如下的分析。lf表示包括udp和ip標(biāo)頭的結(jié)束消息的長度。數(shù)據(jù)確認(rèn)消息不包含有效載荷。除了數(shù)據(jù)和數(shù)據(jù)確認(rèn)消息之外,還使用了開始和結(jié)束消息。因此:nr=ntla/l.(15)使用上述關(guān)系,則因此,錯<trtt(2+rt/b).誤!沒有找到參考源。表1總結(jié)了關(guān)于發(fā)送的八位字節(jié)的總數(shù)目以及測量延遲的數(shù)學(xué)分析。在表1中和分別表示n和d的上限。表1因為trtt與rt獨立,rt越接近b,和就越小。當(dāng)rt=b時給出最小的和值。公開的實施例還提供了單脈沖協(xié)議來執(zhí)行單脈沖方法。sbp使用udp作為傳輸協(xié)議。一對源和目標(biāo)節(jié)點通過ip源和目的地址以及源和目的udp端口號來標(biāo)識。對于測量往返路徑可用帶寬測量,可能使用udp端口7(udp回聲協(xié)議)來承載回聲、回聲應(yīng)答和結(jié)束消息。對于無需使用明確的完成指示的結(jié)束消息來測量往返路徑可用帶寬,因為icmp回聲和回聲應(yīng)答消息承載包含在單脈沖回聲和回聲應(yīng)答消息中的相應(yīng)的信息,還可能使用icmp回聲。在圖7中例示了sbp分組700的示例性格式。sbp標(biāo)頭中的所有無符號整數(shù)字段和有效載荷作為網(wǎng)絡(luò)字節(jié)順序來編碼。sbp消息700包括可變長度有效載荷之前的4個八位字節(jié)標(biāo)頭。該標(biāo)頭包括4比特類型字段702、之后的8比特會話標(biāo)識符字段704和之后的20比特?zé)o符號整數(shù)序列號字段706。對于trtt=5秒和l=576個八位字節(jié),通過8(220-1)l/trtt=966366720bps來給出tr的最大值(以及因此最大可測量可用帶寬)。有效載荷708可以是空。根據(jù)udp標(biāo)頭已知sbp分組大小。類型字段702指示消息類型。錯誤!沒有發(fā)現(xiàn)參考源。表2示出了消息類型。類型消息名稱0x0開始0x1結(jié)束0x2報告0x3數(shù)據(jù)0x4數(shù)據(jù)確認(rèn)0x5回聲0x6回聲應(yīng)答表2會話標(biāo)識符字段704是源節(jié)點102分配的隨機值。在整個相同測試運轉(zhuǎn)中使用相同的會話標(biāo)識符。將序列號字段706設(shè)置為零(0)用于開始、結(jié)束和報告消息。這些消息可在最多重轉(zhuǎn)兩次以對于分組丟失是健壯的。數(shù)據(jù)和回聲消息具有從一(1)開始的序列號。相應(yīng)的數(shù)據(jù)確認(rèn)和回聲應(yīng)答消息分別具有與數(shù)據(jù)和回聲消息相同的序列號。在一些實施例中,其中使用具有零(0)序列號的回聲(和回聲應(yīng)答)以及數(shù)據(jù)(和數(shù)據(jù)確認(rèn))消息,在發(fā)送具有非零序列號的回聲和數(shù)據(jù)消息之前來檢查回聲和數(shù)據(jù)消息的接收節(jié)點是否支持單脈沖方法。有效載荷708對于結(jié)束消息總是為空。圖8例示了根據(jù)公開的實施例的開始消息分組800的框圖??蛇x的4八位字節(jié)最大傳輸速率字段802包含32比特?zé)o符號整數(shù),其包括源節(jié)點102請求的以kbps為單位的最大傳輸速率。如上公開了其他字段。圖9例示了根據(jù)公開的實施例的數(shù)據(jù)消息分組900的框圖??勺冮L度數(shù)據(jù)字段902包含零或更多八位字節(jié)。如上公開了其他字段。圖10例示了根據(jù)公開的實施例的回聲或回聲應(yīng)答消息分組1000的框圖??勺冮L度數(shù)據(jù)字段1002包含零或多個八位字節(jié)?;芈晳?yīng)答消息的可變長度數(shù)據(jù)字段1002必須從相應(yīng)的回聲消息中復(fù)制。如上公開了其他字段。圖11例示了根據(jù)公開的實施例的報告消息分組1100的框圖。測試持續(xù)時間字段1102是包含以秒為單位的最大測試持續(xù)時間的32比特?zé)o符號整數(shù)。接收的總的八位字節(jié)字段1104是包含接收的八位字節(jié)的總數(shù)目的32比特?zé)o符號整數(shù)。成功的分組的數(shù)目1106是包含成功傳送的測試分組的數(shù)目的32比特?zé)o符號整數(shù)。本領(lǐng)域技術(shù)人員可以理解,在本發(fā)明的公開的實施例中可以進行修改和改變而不偏離本發(fā)明的精神和范圍。因此,本發(fā)明旨在涵蓋上述公開的實施例的修改和改變,只要他們落入任意權(quán)利要求和其等同物的范圍中。當(dāng)前第1頁12