ESI (1320);和一個或多個編碼符號(1325)。(編碼符號有時還被稱為編碼單元)。FID (1305)標(biāo)識這個分組將被發(fā)送到的路徑流,并且針對FID的SEQN(1310)是針對被發(fā)送到這個流的每個分組來遞增I后的數(shù)量,因而針對FID的SEQN(1310)的范圍由FID (1305)來界定。
[0143]SBN(1315)標(biāo)識在這個分組中攜帶的編碼符號(1325)是根據(jù)哪個源塊生成的,其中,SBN通常是針對要發(fā)送的每個后續(xù)的源數(shù)據(jù)塊來遞增I后的數(shù)量。SBL(1318)標(biāo)識該源塊中的源符號的數(shù)量。當(dāng)分組攜帶源符號時,可以省略SBL(1318),并且對于一些應(yīng)用而言,這是優(yōu)選的,這是由于可能是如下情況:例如參見下面的開放源塊的描述,在發(fā)送源塊的源符號中的至少一些源符號的時間,源塊中的源符號的數(shù)量是未知的,即,開放源塊。
[0144]或者,可以在全部數(shù)據(jù)分組中攜帶SBL(1318),但是針對在確定源塊的大小之前所發(fā)送的攜帶源符號的分組,可以將SBL(1318)的值設(shè)置成零,或者針對攜帶源符號的全部分組,可以將SBL(1318)設(shè)置成零,或者可以在發(fā)送攜帶源符號的分組時,將SBL(1318)設(shè)置成源塊中的源符號的當(dāng)前數(shù)量。針對攜帶修復(fù)符號的全部分組,優(yōu)選地將SBL(1318)設(shè)置成源塊中的源符號的數(shù)量。還可以將SBL(1318)劃分成兩個子字段,一比特的標(biāo)志指示該源塊是開放的還是閉合的,即,如果在發(fā)送該分組時,沒有確定該源塊大小,則將該標(biāo)志設(shè)置成零(開放源塊),而如果在發(fā)送該分組時,確定了該源塊大小,則將該標(biāo)志設(shè)置成一(閉合源塊),并且SBL(1318)的剩余部分提供該源塊中的源符號的數(shù)量。
[0145]除了在攜帶針對這個源塊的修復(fù)符號的全部分組中,利用這個SBL標(biāo)志來指示該源塊是閉合的之外,發(fā)送方反饋邏輯單元(1420)可以設(shè)置這個SBL標(biāo)志,以便在攜帶源塊的最后源符號的分組中指示該源塊是閉合的,并且在該標(biāo)志指示該源塊是閉合的每個分組中,將SBL大小設(shè)置成該閉合源塊中的源符號的實際數(shù)量。ESI (1320)標(biāo)識在這個分組中攜帶了針對由SBN(1315)所標(biāo)識的源塊的哪些編碼單元,因而ESI (1320)的范圍由SBN(1315)來界定。在每次沿著特定路徑流來發(fā)送新的數(shù)據(jù)分組時,將該路徑流的FID放置在該分組中,將針對該FID的SEQN遞增一,并放置在該分組中,將要發(fā)送其編碼符號的活動源塊的SBN放置在該分組中,將這些編碼符號的相應(yīng)ESI放置在該分組中,以及將這些編碼符號放置在該分組中,上述全部操作在發(fā)送該分組之前完成。
[0146]接收方傳輸協(xié)議(1225)生成用于向發(fā)送方傳輸協(xié)議(1215)發(fā)送的反饋。在圖13的底部示出了一種可能的接收方反饋信息格式。如圖所示,接收方傳輸協(xié)議(1225)針對每個FID (1350 (I)、1350 (2)),反向報告針對該FID的接收的相應(yīng)的最高SEQN(1355 (I)、1355(2))。另外,接收方傳輸協(xié)議(1225)針對每個活動源塊,反向報告該源塊的SBN (1360 (I)、1360 (2))以及迄今為止針對該源塊的接收的編碼符號(1365 (I))、1365 (2))的數(shù)量。
[0147]另外,接收方傳輸協(xié)議(1225)反向報告最低活動源塊的源塊編號(1370)。當(dāng)接收方傳輸協(xié)議(1225)以足夠的確定性認(rèn)為具有最低源塊編號的當(dāng)前活動源塊是可恢復(fù)的,并且不需要針對當(dāng)前源塊的另外的編碼符號時,接收方傳輸協(xié)議(1225)通常增加接收方傳輸協(xié)議(1225)反向報告的最低活動源塊編號(1370),因而接收方傳輸協(xié)議(1225)將該源塊指定成不活動的。在沒有以足夠及時的方式接收足夠的編碼符號的環(huán)境中,也有可能是,即使當(dāng)存在接收方傳輸協(xié)議尚未恢復(fù)的具有更低源塊編號的源塊時,接收方傳輸協(xié)議(1225)也增加最低活動源塊編號(1370)。
[0148]在閱讀完本公開內(nèi)容時,應(yīng)當(dāng)顯而易見的是,其它變型也是可能的??梢詫υ撓到y(tǒng)進(jìn)行擴(kuò)增以允許發(fā)送方傳輸協(xié)議(1215)在如圖13的頂部所示的發(fā)送方多徑數(shù)據(jù)分組格式中以信號的形式發(fā)送最低活動源塊編號。例如,可以向如圖13的頂部所示的多徑數(shù)據(jù)分組格式添加另外的參數(shù)“最低活動源塊編號”,以便允許從發(fā)送方傳輸協(xié)議(1215)到接收方傳輸協(xié)議(1225)的這種信令。然后,這種功能允許發(fā)送方傳輸協(xié)議(1215)發(fā)送信號跳過一些源塊,其中對于這些源塊而言,不可能以滿足該系統(tǒng)的端到端延時要求的方式來完成這些源塊的發(fā)送和恢復(fù)。
[0149]存在上面內(nèi)容的很多變型。例如,可以使用字節(jié)范圍來替代ESI,以指示在分組有效載荷中攜帶什么源數(shù)據(jù)。作為另一例子,可以使用整個數(shù)據(jù)流內(nèi)的塊的字節(jié)范圍來替代SBN和SBL,以指示使用什么源塊來生成在該分組有效載荷中發(fā)送的任何FEC數(shù)據(jù),并結(jié)合ESI來指示在該分組有效載荷中發(fā)送什么特定數(shù)據(jù)。作為另一變型,根據(jù)不同塊的編碼符號可以包括在相同的數(shù)據(jù)分組內(nèi),并且SBN、SBL和ESI (或者它們的等同物)的多元組可以包括在分組報頭中,以標(biāo)識在該數(shù)據(jù)分組中攜帶的編碼符號。例如,可以對針對各個活動源塊的分組中所攜帶的符號的比例進(jìn)行選擇,以便與當(dāng)前針對每個這樣的源塊所發(fā)送的符號的數(shù)量成比例,即,對將針對活動塊i發(fā)送的分組中的符號的比例進(jìn)行選擇,以便與L_i+X_1-U_i的當(dāng)前值成比例。
[0150]圖14以更詳細(xì)的方式示出了多徑流式傳輸發(fā)送方的框圖。圖1的發(fā)送方端系統(tǒng)100中的任何一個或者全部可以包括類似于圖14的多徑流式傳輸發(fā)送方的組件。如圖14中所示,由視頻生成器(1205)生成的視頻流(1210)臨時地存儲在發(fā)送方傳輸協(xié)議(1215)內(nèi)的源數(shù)據(jù)緩沖區(qū)(1405)內(nèi)。FEC編碼器(1410)生成針對已經(jīng)形成的源塊的FEC修復(fù)符號,并將獲得的FEC修復(fù)符號放置到修復(fù)符號緩沖器(1415)中,直到需要對它們進(jìn)行傳輸為止。FEC編碼器(1410)可以在按需的基礎(chǔ)上操作,當(dāng)需要對修復(fù)符號進(jìn)行傳輸時,生成針對活動源塊的修復(fù)符號?;蛘?,F(xiàn)EC編碼器(1410)可以預(yù)先生成針對活動源塊的多個修復(fù)符號,使得它們準(zhǔn)備好只要需要就被發(fā)送,以及減少調(diào)用FEC編碼器(1410)的開銷。
[0151]FEC編碼器(1410)生成針對源塊的另外的修復(fù)符號的觸發(fā)事件可以由來自發(fā)送方反饋邏輯單元(1420)的信號來觸發(fā),其中每當(dāng)可能發(fā)送另外的編碼符號時,發(fā)送方反饋邏輯單元(1420)確定要發(fā)送哪些另外的編碼符號。因而,這些步驟表示一種方法的步驟的例子,該方法包括:為服務(wù)器設(shè)備計算該塊需要的另外的編碼單元的數(shù)量;以及向發(fā)送設(shè)備(例如服務(wù)器設(shè)備)發(fā)送用于表示該另外的編碼單元的數(shù)量的數(shù)據(jù)。
[0152]當(dāng)源塊的起始邊界和結(jié)束邊界二者都已經(jīng)被確定時,認(rèn)為該源塊是閉合的,S卩,當(dāng)源塊是閉合的時,該源塊內(nèi)的數(shù)據(jù)的范圍已經(jīng)確定,并且其具有位于該視頻數(shù)據(jù)流的上下文內(nèi)的起始字節(jié)索引和結(jié)束字節(jié)索引。例如,第一源塊可以開始于視頻數(shù)據(jù)流內(nèi)的字節(jié)索引0,并且結(jié)束于字節(jié)索引4,432,在該情況下,在該源塊內(nèi)存在包括索引O到4,431的字節(jié)索引的4,432個數(shù)據(jù)字節(jié)。繼續(xù)這個例子,第二源塊開始于字節(jié)索引4,432,但其結(jié)束字節(jié)索引可能沒有被確定,直到源塊生成器單元(1425)在某個稍后的時間點進(jìn)行確定為止,以及直到針對第二源塊的結(jié)束字節(jié)索引已經(jīng)被確定為止,第二源塊被視作為是開放的。
[0153]因而,通常,可以將視頻數(shù)據(jù)流視作為閉合源塊序列跟著至多一個開放源塊,其中該開放源塊處于被確定的過程之中。此外,該源塊序列包括零個或多個不活動源塊,其跟著一個或多個活動源塊(除非在傳送的結(jié)束位置,此時已經(jīng)成功地傳送了完整的視頻流),其中不活動源塊是那些已成功經(jīng)成功傳送給接收方傳輸協(xié)議(1225),并基于從接收方傳輸協(xié)議(1225)發(fā)送的反饋而確認(rèn)已經(jīng)成功傳送到發(fā)送方傳輸協(xié)議(1215)的那些源塊,或者是已經(jīng)被認(rèn)為太晚以至于沒有傳送,并因而不在要求在接收方處進(jìn)行恢復(fù)的那些源塊。源塊生成器單元(1425)確定何時關(guān)閉最近的活動源塊,從而開始新的活動開放源塊。當(dāng)使用系統(tǒng)性FEC編碼時,S卩,當(dāng)源塊的源符號處于可以被FEC解碼器用于恢復(fù)該源塊的編碼符號當(dāng)中時,則可能的并且優(yōu)選的是,允許發(fā)送針對活動開放源塊的編碼符號,特別是源符號。
[0154]很多眾所周知的FEC編碼都是系統(tǒng)性的,例如,如IETF RFC 5510中所詳細(xì)說明的里德-所羅門編碼,或者如IETF RFC 6330中所詳細(xì)說明的RaptorQ編碼,或者IETF RFC5053中詳細(xì)說明的Raptor編碼。發(fā)送針對活動開放源塊的源符號是優(yōu)選的,這是因為這可以減少視頻流的傳送的端到端延時,以及在相同的端到端延時預(yù)算內(nèi),提供更高質(zhì)量和更可靠的傳送。存在優(yōu)點的一個原因在于,甚至在整個源塊可用或者知道其大小之前,就可以開始傳送該源塊。一旦源塊生成器單元(1425)關(guān)閉了該活動開放源塊,F(xiàn)EC編碼器(1410)就可以生成針對這個源塊的修復(fù)符號,并將其存儲在修復(fù)符號緩沖區(qū)(1415),并根據(jù)發(fā)送方反饋邏輯單元(1420)方法,當(dāng)要發(fā)送針對該源塊的另外的編碼符號時,可以發(fā)送這些修復(fù)符號。
[0155]或者,可以不存在修復(fù)符號緩沖區(qū)(1415),并且當(dāng)根據(jù)發(fā)送方反饋邏輯單元(1420)方法,要發(fā)送針對這個源塊的另外的編碼符號時,F(xiàn)EC編碼器(1410)可以飛速生成修復(fù)符號以立即進(jìn)行傳輸。圖16描述了不活動源塊和活動源塊,以及閉合源塊(不活動源塊和活動源塊的混合)和至多一個開放源塊(其是活動的)。
[0156]源塊生成器單元(1425)可以使用各種方法來確定何時關(guān)閉當(dāng)前活動開放源塊,并開始下一個活動開放源塊。例如,當(dāng)源塊生成器單元(1425)從發(fā)送方反饋邏輯單元(1420)接收到信息時,源塊生成器單元(1425)可以決定關(guān)閉當(dāng)前活動開放源塊,該信息指示發(fā)送方反饋邏輯單元(1420)已經(jīng)從接收方反饋單元(1525)接收到指示在發(fā)送包含針對當(dāng)前活動開放源塊的編碼符號的第一分組的時間點或該時間點之后發(fā)送的分組已經(jīng)被接收的反饋。這個時間點可以由發(fā)送方反饋邏輯單元(1420)通過以下方式來確定:在發(fā)送包含根據(jù)當(dāng)前活動源塊的編碼符號的第一分組的時間,記錄針對各個流的當(dāng)前序列號,然后確定只要發(fā)送方反饋邏輯單元(1420)從接收方反饋邏輯單元(1525)接收到反饋,就提供對源塊生成器單元(1425)的指示,其中針對流的最高序列號至少與該流在所述記錄的時間的當(dāng)前序列號一樣高。
[0157]使用這種方法,在當(dāng)前活動開放源塊閉合時,并且在確定該源塊的大小時,該源塊的大小近似是數(shù)據(jù)的RTT量。或者,在固定時間量之后(例如,前一個源塊被關(guān)閉之后一秒),源塊生成器單元(1425)可以確定關(guān)閉當(dāng)前活動源塊。在這種情況下,如果發(fā)送速率是可變的,則很可能每個源塊將具有不同的大小,而如果發(fā)送速率是固定的時,則很可能源塊將具有近似相等的大小。作為另一種選擇,只要開放源塊的大小達(dá)到預(yù)定的大小(例如,100,000字節(jié)),源塊生成器單元(1425)就可以關(guān)閉當(dāng)前活動開放源塊。
[0158]作為其它替代方案,源塊生成器單元(1425)可以使用上述方法的組合來關(guān)閉當(dāng)前活動開放源塊,例如,只要其大小已經(jīng)達(dá)到預(yù)定的大小,或者自從前一個源塊被關(guān)閉之后經(jīng)過了預(yù)定的時間量(無論哪一個先發(fā)生),就關(guān)閉該源塊。作為另一例子,當(dāng)針對該源塊的反饋的指示第一次從發(fā)送方反饋邏輯單元(1420)向源塊生成器單元(1425)指示時,或者自從前一個源塊關(guān)閉之后經(jīng)過了固定的時間量之后(無論哪一個先發(fā)生),源塊生成器單元(1425)可以關(guān)閉當(dāng)前活動開放源塊。
[0159]圖14的發(fā)送方反饋邏輯單元(1420)處置從圖15的接收方反饋邏輯單元(1525)接收的反饋,其中該反饋以圖13的底部所示出的格式來提供。發(fā)送方反饋邏輯單元(1420)基于所接收的最低活動SBN(1370)來更新活動源塊的集合。發(fā)送方反饋邏輯單元(1420)確定何時發(fā)送該視頻流的下一個數(shù)據(jù)分組,用于發(fā)送下一個數(shù)據(jù)分組的路徑流,以及在該數(shù)據(jù)分組內(nèi)發(fā)送的編碼符號所根據(jù)的活動源塊(或者多個源塊)。發(fā)送方反饋邏輯單元(1420)可以確定發(fā)送下一個編碼符號所根據(jù)的活動源塊,如下所述。
[0160]使用與先前所使用的類似的符號,針對SBN= I的每個活動源塊,使BI是為了以某種期望水平的確定性來恢復(fù)源塊I而需要進(jìn)行接收的編碼符號的數(shù)量。例如,使用里德-所羅門FEC編碼(例如,如IETF RFC 5510中所描述的),BI的值可以等于源塊的源符號的數(shù)量,并且整個源塊的恢復(fù)具有完全的確定性,而對于其它編碼(例如,IETF RFC 6330中所描述的RaptorQ編碼)而言,BI的值可以等于源塊的源符號的數(shù)量,其具有幾乎的確定性,并且BI的較大值允許提高的確定性。
[0161]發(fā)送方反饋邏輯單元(1420)可以基于使用的FEC編碼的屬性,并基于源塊I中的源符號的數(shù)量,來計算BI的值。發(fā)送方反饋邏輯單元(1420)可以將RI計算成發(fā)送方反饋邏輯單元(1420)已經(jīng)從接收方反饋邏輯單元(1525)接收的針對源塊I的已接收編碼符號(1365)的數(shù)量的最高值。發(fā)送方反饋邏輯單元(1420)可以計算LI =B1-RI,其是為了以某種指定程度的確定性來恢復(fù)源塊I,除了發(fā)送方知道的接收方已經(jīng)接收的數(shù)量之外,接收方必須接收的另外的編碼符號的數(shù)量。
[0162]假設(shè)UI是針對源塊I已經(jīng)發(fā)送的、但在發(fā)送方處尚未從接收方接收到確認(rèn)的編碼符號的數(shù)量。發(fā)送方反饋邏輯單元(1420)可以如下所述地基于從接收方反饋邏輯單元(1525)接收的反饋來計算UI。發(fā)送方反饋邏輯單元(1420)可以針對每個流ID值J,確定針對源塊I所發(fā)送的位于FID = J的序列號范圍之內(nèi)、并且發(fā)送方反饋邏輯單元(1420)已經(jīng)從接收方反饋邏輯單元(1525)接收到采用圖13的底部所示出的反饋信息格式的編碼符號的數(shù)量,其中該范圍位于發(fā)送方針對FID = J所發(fā)送的當(dāng)前序列號C與用于FID = J的最高序列號S之間。發(fā)送方反饋邏輯單元(1420)可以通過以下方式來執(zhí)行這個計算:針對處于FID = J的S到C的范圍中的每個序列號K,保存在具有FID = J和序列號K的分組中攜帶多少針對源塊I的編碼符號。
[0163]基于此,發(fā)送方反饋邏輯單元(1420)可以將發(fā)送給路徑流J的位于序列號S+1到C-1的范圍之內(nèi)的針對源塊I的這樣的編碼符號的數(shù)量進(jìn)行求和。然后,發(fā)送方反饋邏輯單元(1420)可以將不同的路徑流上的這些量進(jìn)行求和,以確定針對源塊I,總共發(fā)送了多少還沒有被確認(rèn)的編碼符號UI。應(yīng)當(dāng)注意的是,使用用于各個流或路徑的流標(biāo)識符和流序列號以及本文所描述的方法在數(shù)據(jù)分組和在反饋信息中提供的信息使發(fā)送方得以針對每個路徑準(zhǔn)確地計算已發(fā)送但尚未被確認(rèn)(丟失或者已接收)的編碼符號的數(shù)量,因而使發(fā)送方得以準(zhǔn)確地估計在所有路徑上已發(fā)送但尚未被確認(rèn)的編碼符號的聚合數(shù)量。如果在分組被發(fā)送到一個路徑的順序和從該路徑接收到該分組(如果沒有丟失的話)的順序之間的差值很小,則發(fā)送方估計準(zhǔn)確性較高,通常都是這種情況。如先前所提及的,在不考慮在其上發(fā)送分組的路徑的情況下,在多個路徑上發(fā)送的分組的聚合的發(fā)送順序和接收順序可能是非常不同的。因而,提供和使用每一路徑信息和反饋的益處之一是使發(fā)送方得以更準(zhǔn)確地估計總共要發(fā)送多少數(shù)據(jù),以使發(fā)送冗余數(shù)據(jù)最小化,并使該流的塊恢復(fù)的端到端延時最小化。因而,當(dāng)在多個并行網(wǎng)絡(luò)路徑上可靠地流式傳輸數(shù)據(jù)時,發(fā)送方反饋邏輯單元所接收的數(shù)據(jù)表示跟蹤、報告和使用路徑特定信息的例子,其中這些網(wǎng)絡(luò)路徑可能承受分組丟失和變化的數(shù)據(jù)吞吐量和路徑延時。
[0164]如前所述,假設(shè)XI是發(fā)送方反饋邏輯單元(1420)已確定能主動針對源塊I發(fā)送的編碼符號的數(shù)量。發(fā)送方可以基于指定的規(guī)則(例如,XI是BI的某個固定部分,如XI=0.05*BI,或者類似于先前所描述的那些規(guī)則的其它規(guī)則),計算XI的值。然后,如果LI+X1-UI>0,則發(fā)送方反饋邏輯單元(1420)確定可以發(fā)送針對活動閉合源塊I的另一編碼符號。
[0165]數(shù)據(jù)速率調(diào)整器單元(1430)針對每個流,確定何時可以發(fā)送針對該流的下一個數(shù)據(jù)分組。數(shù)據(jù)速率調(diào)整器單元(1430)與各個發(fā)射機(jī)(1220(1)、1220 (2)等)進(jìn)行通信以進(jìn)行這個確定。例如,如果使用Linux或者其它類似于Unix的操作系統(tǒng),則當(dāng)發(fā)送UDP數(shù)據(jù)分組時,發(fā)射機(jī)(1220(1))可以利用T10C0UTQ 1ctl O來確定其UDP發(fā)送隊列的大小。通過監(jiān)測發(fā)送隊列大小,發(fā)射機(jī)(1220(1))可以避免在發(fā)射機(jī)(1220(1))中進(jìn)行過度緩沖,并且僅僅當(dāng)發(fā)射機(jī)(1220(1))內(nèi)部發(fā)送方隊列較低時,才排隊新的輸出分組,因而避免了發(fā)射機(jī)(1220(1))累積太多的尚未被發(fā)送的數(shù)據(jù)。如果發(fā)射機(jī)(1220(1))發(fā)送隊列保持為非空,但很小,則可以實現(xiàn)滿額的發(fā)送吞吐量。因而,用于各個流的各發(fā)射機(jī)(1220(1))向數(shù)據(jù)速率調(diào)整器單元(1430)指示其何時可以接受另個數(shù)據(jù)分組以進(jìn)行傳輸,其中在該時間點,數(shù)據(jù)速率調(diào)整器單元(1430)確定可以向與該發(fā)射機(jī)(1220(1))相關(guān)聯(lián)的流發(fā)送數(shù)據(jù)分組。數(shù)據(jù)速率調(diào)整器單元(1430)從可能的發(fā)射機(jī)(1220(1)、1220 (2)等)中的每個發(fā)射機(jī)接收指示,并使用上述方法,針對每個可能的流,確定何時可以發(fā)送針對該流的下一個數(shù)據(jù)分組。
[0166]替代地或另外地,發(fā)射機(jī)(1220(1))可以使用S0_SNDBUF值,將發(fā)送方窗大小設(shè)置為足夠小的值。然后,可以進(jìn)行等待以便可以例如通過使用select O或poll O系統(tǒng)調(diào)用重寫UDP套接字,以確定其何時可以發(fā)送與該發(fā)射機(jī)(1220(1))相關(guān)聯(lián)的流的另一數(shù)據(jù)分組。以這種方式,不需要經(jīng)常地輪詢發(fā)射機(jī)發(fā)送方隊列的大小。
[0167]所有發(fā)射機(jī)(1220(1)、1220 (2)等)可以與數(shù)據(jù)速率調(diào)整器單元(1430)進(jìn)行通信,其中當(dāng)發(fā)射機(jī)已經(jīng)指出其具有容量來發(fā)送與該發(fā)射機(jī)相關(guān)聯(lián)的流的另一個數(shù)據(jù)分組時,數(shù)據(jù)速率調(diào)整器單元(1430)確定向各個發(fā)射機(jī)(1220(1)、1220 (2)等)發(fā)送哪些數(shù)據(jù)分組。發(fā)射機(jī)(1220(1)、1220 (2)等)和數(shù)據(jù)速率調(diào)整器單元(1430)之間的通信可以發(fā)生在具有高帶寬、低延時和低分組丟失率的局域網(wǎng)絡(luò)上,因此如果該通信使用TCP,則其也能夠完全地滿足。在這樣的設(shè)置下,發(fā)射機(jī)然后運(yùn)行以下循環(huán):
[0168]無限地重復(fù):
[0169]1、進(jìn)行等待,直到發(fā)射機(jī)發(fā)送隊列較低(通過監(jiān)測T10C0UTQ)或者通過使用低發(fā)送緩沖區(qū),如上面所解釋的select O,或者二者。
[0170]2、向數(shù)據(jù)速率調(diào)整器單元(1430)發(fā)送針對新分組的請求(例如,針對數(shù)據(jù)速率調(diào)整器單元(1430)的 send O 或 write O)。
[0171]3、等待來自數(shù)據(jù)速率調(diào)整器單元(1430)的響應(yīng),其包括要發(fā)送的數(shù)據(jù)分組。(例如,使用select O)
[0172]4、通過UDP向網(wǎng)絡(luò)(1222)發(fā)送該數(shù)據(jù)分組(例如,通過使用send()或write O系統(tǒng)調(diào)用)
[0173]數(shù)據(jù)速率調(diào)整器單元(1430)執(zhí)行以下操作:
[0174]無限地重復(fù):
[0175]1、等待來自任何發(fā)射機(jī)的請求。(使用例如selectO)
[0176]2、針對請求發(fā)送新數(shù)據(jù)分組的每