本發(fā)明大體涉及設(shè)備輔助通信,且更具體地,涉及用于有損通信網(wǎng)絡(luò)的設(shè)備輔助通信協(xié)議。
背景技術(shù):
在有損網(wǎng)絡(luò)通信(例如,無線網(wǎng)絡(luò)通信)中,數(shù)據(jù)分組丟失是常見現(xiàn)象。例如,噪聲和/或干擾可以改變或擦除部分發(fā)送的數(shù)據(jù)分組??梢詸z測(cè)到損壞的數(shù)據(jù)分組并將其視為丟失的分組。已經(jīng)構(gòu)思出若干種技術(shù)來恢復(fù)損壞的數(shù)據(jù)分組,包括前向糾錯(cuò)和線性網(wǎng)絡(luò)編碼。對(duì)于許多實(shí)際的應(yīng)用,已經(jīng)發(fā)現(xiàn)線性網(wǎng)絡(luò)編碼相對(duì)于單播和多播網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)具有吞吐量增益。
可以通過使用隨機(jī)線性網(wǎng)絡(luò)編碼(rlnc)來實(shí)現(xiàn)對(duì)于許多場(chǎng)景具有分組丟失的網(wǎng)絡(luò)容量。在典型的rlnc方案中,源節(jié)點(diǎn)發(fā)送輸入分組的隨機(jī)線性組合,一個(gè)或多個(gè)中間節(jié)點(diǎn)發(fā)送其接收到的分組的隨機(jī)線性組合,且目的節(jié)點(diǎn)一旦接收到具有線性無關(guān)編碼向量的足夠編碼分組就可以對(duì)輸入分組進(jìn)行解碼。由于網(wǎng)絡(luò)編碼自身可以扮演端到端糾刪碼(erasurecode)的角色,所以不要求針對(duì)每個(gè)鏈路的糾刪碼。
然而,當(dāng)在實(shí)際中實(shí)現(xiàn)rlnc方案時(shí),要考慮若干問題。例如,編碼和解碼的計(jì)算成本、在中間節(jié)點(diǎn)處的存儲(chǔ)和計(jì)算成本、以及用于系數(shù)向量的開銷等。解決這些問題的常規(guī)嘗試是無效的、低效的和/或非最優(yōu)的。
技術(shù)實(shí)現(xiàn)要素:
在具有突發(fā)或相關(guān)型丟失的網(wǎng)絡(luò)中,bats協(xié)議可以被用于高效通信。在重新編碼期間,在中間網(wǎng)絡(luò)節(jié)點(diǎn)處可以利用系統(tǒng)重新編碼(systematicrecoding)來減少計(jì)算成本。可以利用基于塊交織器的bats協(xié)議來處理突發(fā)丟失,其中將各批次重新編碼為同樣數(shù)量的分組。自適應(yīng)重新編碼可以被用于提高吞吐量,其中,具有更高秩的批次被重新編碼成更大數(shù)量的分組。使用自適應(yīng)重新編碼,可以利用基于非塊交織器的bats協(xié)議。
本專利中使用的術(shù)語“發(fā)明”、“所述發(fā)明”、“該發(fā)明”和“本發(fā)明”旨在廣泛地指代本專利的所有主題和以下的專利權(quán)利要求。包含這些術(shù)語在內(nèi)的聲明應(yīng)當(dāng)被理解為不限制本文描述的主題或不限制以下專利權(quán)利要求的含義或范圍。由本專利所覆蓋的本發(fā)明的實(shí)施例是由以下權(quán)利要求而不是本概要所定義。本概要是本發(fā)明各方案的高度概述并介紹了一些將在以下具體實(shí)施方式部分中進(jìn)一步描述的概念。本概要不意圖標(biāo)明所請(qǐng)求保護(hù)主題的關(guān)鍵特征或基本特征,也不意圖單獨(dú)用于確定所請(qǐng)求保護(hù)主題的范圍。該主題應(yīng)當(dāng)通過參考本專利的全部說明書的適當(dāng)部分、任何或全部附圖以及每一項(xiàng)權(quán)利要求來理解。
附圖說明
參考以下附圖,將在下文詳細(xì)描述本發(fā)明的說明性實(shí)施例:
圖1是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的示例通信環(huán)境的方案的示意圖。
圖2是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的另一個(gè)示例通信環(huán)境的方案的示意圖。
圖3是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的與網(wǎng)絡(luò)節(jié)點(diǎn)的bats協(xié)議模塊對(duì)應(yīng)的方案的示意圖。
圖4是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的并入了bats協(xié)議模塊的示例通信設(shè)備的方案的示意圖。
圖5是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的由bf模塊執(zhí)行的示例過程的方案的流程圖。
圖6是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的示例塊交織方案的方案的示意圖。
圖7是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的作為交織batspro-1通信協(xié)議的一部分執(zhí)行的示例過程的方案的流程圖。
圖8是根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的表示用于優(yōu)化每個(gè)批次中多個(gè)數(shù)據(jù)分組的示例算法的偽代碼列表。
圖9是根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的表示用于優(yōu)化每個(gè)批次中多個(gè)數(shù)據(jù)分組的另一個(gè)示例算法的偽代碼列表。
圖10是根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的表示用于優(yōu)化每個(gè)批次中多個(gè)數(shù)據(jù)分組的又一個(gè)示例算法的偽代碼列表。
圖11是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的示例batspro-2數(shù)據(jù)分組格式的方案的示意圖。
圖12是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的batspro-2bf模塊的示例子模塊結(jié)構(gòu)的方案的示意圖。
圖13是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的用于重新編碼的示例操作的流程圖。
圖14是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的示例數(shù)據(jù)流狀態(tài)的方案的示意圖。
圖15是示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的用于重新編碼的示例操作的流程圖。以及
圖16是示出了根據(jù)本發(fā)明的一些實(shí)施例的示例計(jì)算設(shè)備的方案的示意圖。
注意,貫穿本公開和附圖,相同的數(shù)字用于引用相似的組件和特征。
具體實(shí)施方式
本文描述的本發(fā)明的實(shí)施例的主題的特性滿足法定要求,但本說明書不一定意在限制權(quán)利要求的范圍。所要求保護(hù)的主題可以用其它方式來體現(xiàn),可以包括不同的元素或步驟,并可以結(jié)合其它現(xiàn)有的或未來的技術(shù)使用。除了當(dāng)各個(gè)步驟的順序或元素排列是顯式描述時(shí)之外,本說明書不應(yīng)被解釋為在各種步驟或元素間暗示任何特定的順序或排列。
bats碼是相對(duì)低復(fù)雜度的隨機(jī)線性網(wǎng)絡(luò)編碼方案,其可以漸近實(shí)現(xiàn)非常接近具有分組丟失的分組網(wǎng)絡(luò)的容量。在實(shí)際中采用bats碼要求基于bats碼的網(wǎng)絡(luò)傳輸協(xié)議(bats協(xié)議)。根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,在具有突發(fā)或相關(guān)型丟失的網(wǎng)絡(luò)中,bats協(xié)議被用于高效通信。例如,這些丟失類型發(fā)生在許多無線通信信道(包括wi-fi、水下和衛(wèi)星通信)中。在整個(gè)描述中,雖然線性網(wǎng)絡(luò)拓?fù)浔挥米魇纠?,但本領(lǐng)域技術(shù)人員將理解,線性網(wǎng)絡(luò)是更一般的拓?fù)涞臉?gòu)成單元(buildingblock),且概念是更廣泛適用的。
根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,在重新編碼期間,可以利用中間網(wǎng)絡(luò)節(jié)點(diǎn)處的系統(tǒng)重新編碼來減少計(jì)算成本??梢岳没趬K交織器的bats協(xié)議來處理突發(fā)丟失,其中將各批次重新編碼為同樣數(shù)量的分組。自適應(yīng)重新編碼可以被用于提高吞吐量,其中,具有更高秩的批次被重新編碼成更大數(shù)量的分組。使用自適應(yīng)重新編碼,可以利用基于非塊交織器的bats協(xié)議。
術(shù)語“數(shù)字?jǐn)?shù)據(jù)分組”、“數(shù)據(jù)分組”和“分組”在整個(gè)描述中可以互換使用。這樣的分組可以攜帶任何合適類型的數(shù)字?jǐn)?shù)據(jù),包括(但不限于):音頻、視頻或多媒體數(shù)據(jù)文件或流。
圖1示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的示例網(wǎng)絡(luò)100。該網(wǎng)絡(luò)100是三跳線性網(wǎng)絡(luò)。節(jié)點(diǎn)r0是一個(gè)或多個(gè)輸入數(shù)據(jù)分組和/或輸入數(shù)據(jù)流的源節(jié)點(diǎn),節(jié)點(diǎn)r3是希望接收(經(jīng)解碼的)輸入數(shù)據(jù)分組的目的節(jié)點(diǎn),且節(jié)點(diǎn)r1和r2是不一定希望探查經(jīng)解碼的輸入分組的中間節(jié)點(diǎn)。在網(wǎng)絡(luò)100中,網(wǎng)絡(luò)鏈路僅存在于兩個(gè)相鄰節(jié)點(diǎn)之間,并假定每條鏈路每個(gè)時(shí)隙發(fā)送一個(gè)分組。在圖1的節(jié)點(diǎn)r0、r1、r2、r3之間的箭頭的方向指示了輸入數(shù)據(jù)分組的數(shù)據(jù)流的主方向,但不排除相反方向的數(shù)據(jù)流,例如,信令數(shù)據(jù)流。
在網(wǎng)絡(luò)100中,每個(gè)節(jié)點(diǎn)向線路上的下一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)分組(例如,r0到r1、r1到r2、r2到r3)。假設(shè)在網(wǎng)絡(luò)鏈路上發(fā)送的分組以概率p被獨(dú)立擦除(例如,損壞)。如果中間節(jié)點(diǎn)僅應(yīng)用轉(zhuǎn)發(fā)(例如,使用前向糾錯(cuò)),則在l跳之后網(wǎng)絡(luò)吞吐量的上界為(1-p)l。當(dāng)每個(gè)時(shí)隙網(wǎng)絡(luò)容量是(1-p)個(gè)分組時(shí),網(wǎng)絡(luò)吞吐量隨l以指數(shù)方式減少。根據(jù)本發(fā)明的實(shí)施例,提供了解決這些問題的分批稀疏(bats)碼。雖然,為了清楚起見,本說明書經(jīng)常引用圖1的線性網(wǎng)絡(luò)100,本文描述的bats碼和對(duì)應(yīng)的bats協(xié)議可以在具有多個(gè)源節(jié)點(diǎn)和/或目的節(jié)點(diǎn)的網(wǎng)絡(luò)中使用(如圖2中示出的示例網(wǎng)絡(luò)200)。
圖2示出了具有多播鏈路的示例樹形無線網(wǎng)絡(luò)200。節(jié)點(diǎn)r0是源節(jié)點(diǎn),節(jié)點(diǎn)r3,1、r3,2、r3,3和r3,4是目的節(jié)點(diǎn),且節(jié)點(diǎn)r1、r2,1和r2,2是不一定希望探查經(jīng)解碼的輸入分組的中間節(jié)點(diǎn)。在這個(gè)示例中,來自每個(gè)節(jié)點(diǎn)r1、r2,1和r2,2的兩條出局鏈路共享對(duì)應(yīng)的公共無線信道。此外,圖2中箭頭的方向指示數(shù)據(jù)流的主方向,但不排除相反方向的數(shù)據(jù)流。
為了在實(shí)際網(wǎng)絡(luò)中實(shí)現(xiàn)bats碼,建立用于在節(jié)點(diǎn)間通信的bats協(xié)議。bats碼包括實(shí)現(xiàn)bats協(xié)議的三種類型的分組數(shù)據(jù)處理模塊中的一個(gè)或多個(gè):編碼模塊、批次轉(zhuǎn)發(fā)(bf)模塊、和解碼模塊。圖3示意性地示出了與圖1的節(jié)點(diǎn)r0、r1、r2、r3相對(duì)應(yīng)的bats協(xié)議模塊300的示例布置。源節(jié)點(diǎn)302(本文也稱為“第一節(jié)點(diǎn)”)運(yùn)行對(duì)輸入數(shù)據(jù)(例如,離散數(shù)據(jù)文件或連續(xù)數(shù)據(jù)流)進(jìn)行編碼的編碼模塊,匯聚(sink)節(jié)點(diǎn)308(本文也稱為“最后一個(gè)節(jié)點(diǎn)”)運(yùn)行對(duì)已編碼的輸入數(shù)據(jù)進(jìn)行解碼以產(chǎn)生與輸入數(shù)據(jù)相對(duì)應(yīng)的輸出數(shù)據(jù)的解碼模塊,且每個(gè)中間節(jié)點(diǎn)304、306運(yùn)行轉(zhuǎn)發(fā)已編碼的輸入數(shù)據(jù)的bf模塊。
圖4是根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的并入了bats協(xié)議模塊的示例通信設(shè)備400的示意圖。通信設(shè)備400可以實(shí)現(xiàn)利用bats協(xié)議模塊來進(jìn)行通信的應(yīng)用402。例如,應(yīng)用402可以與編碼模塊404進(jìn)行交互以對(duì)數(shù)據(jù)流(例如,源或輸入數(shù)據(jù)流)編碼,且編碼模塊404可以利用網(wǎng)絡(luò)接口408通過網(wǎng)絡(luò)來發(fā)送bats編碼數(shù)據(jù)流。通信設(shè)備400也可以接收已編碼的數(shù)據(jù)分組和/或流。例如,通信設(shè)備400可以使用網(wǎng)絡(luò)接口408來接收已編碼的數(shù)據(jù)流并向解碼模塊406提供已編碼的數(shù)據(jù)流以產(chǎn)生解碼數(shù)據(jù)流(例如,匯聚或輸出數(shù)據(jù)流),解碼數(shù)據(jù)流被傳遞到應(yīng)用402以做進(jìn)一步處理(例如,用于呈現(xiàn)給用戶)。示例通信設(shè)備400也包括批次轉(zhuǎn)發(fā)模塊410。這樣,通信設(shè)備400可以充當(dāng)網(wǎng)絡(luò)中的中間節(jié)點(diǎn)(例如圖1描繪的網(wǎng)絡(luò)100)。然而,根據(jù)本發(fā)明的備選實(shí)施例,且如圖4中虛線樣式所示,利用bats協(xié)議的通信設(shè)備不需要并入批次轉(zhuǎn)發(fā)模塊410和/或擔(dān)當(dāng)網(wǎng)絡(luò)中的中間節(jié)點(diǎn)。根據(jù)其他備選實(shí)施例,通信設(shè)備可以包括批次轉(zhuǎn)發(fā)模塊410,但不包括編碼模塊404或解碼模塊406。在這樣的實(shí)施例中,通信設(shè)備可以被限制為充當(dāng)中間節(jié)點(diǎn)。
諸如圖1中的節(jié)點(diǎn)r0之類的源節(jié)點(diǎn)包括編碼模塊404。在高級(jí)別上,編碼模塊可以執(zhí)行如下操作:
1)讀取數(shù)據(jù)文件和/或數(shù)據(jù)流作為輸入(本文中有時(shí)被稱為“輸入文件”或“輸入數(shù)據(jù)”);
2)使用bats編碼算法來產(chǎn)生批次;以及
3)以協(xié)議特定順序來輸出所產(chǎn)生的批次的已編碼的數(shù)據(jù)分組。
由bats編碼算法產(chǎn)生的分組可以表示為在大小為q的有限域f上的列向量。這里,術(shù)語“域”在抽象代數(shù)意義上使用。每個(gè)分組包含來自f的t個(gè)符號(hào)。輸入文件被分成k個(gè)輸入分組??梢酝ㄟ^將分組集合加以并置,使用矩陣來表示分組集合。固定度分布(degreedistribution)ψ=(ψ0,ψl,...,ψd),其中d是最大度。
可以通過以下操作來產(chǎn)生批次:
1)對(duì)度分布ψ取樣并取得具有概率ψd的度d。
2)以均勻隨機(jī)的方式選擇d個(gè)輸入分組并通過并置這d個(gè)分組來形成矩陣b;以及
3)產(chǎn)生批次x=bg,其中,g是在有限域f上的d×m生成矩陣(這里,m是合適的整數(shù),使得g是有限域f上的d×m生成矩陣)。
系數(shù)向量被嵌入到批次中的分組,其形成有限域f上的m×m的單位矩陣。通過上述操作獨(dú)立產(chǎn)生不同批次。可以用確定性方式來設(shè)計(jì)生成矩陣g或隨機(jī)生成生成矩陣g,且生成矩陣g對(duì)于bats解碼器來說是已知的(例如,解碼模塊406和/或它在另一個(gè)通信設(shè)備中的對(duì)應(yīng)模塊)。
為了提高輸入分組的發(fā)送可靠性,可以利用最早為了raptor編碼而引入的預(yù)編碼技術(shù)。例如,在應(yīng)用批次編碼處理之前,可首先使用傳統(tǒng)的糾刪碼(稱為預(yù)編碼)對(duì)輸入分組進(jìn)行編碼。然后可將批次編碼過程應(yīng)用到通過預(yù)編碼來生成的預(yù)編碼輸入分組。
通過網(wǎng)絡(luò)來發(fā)送批次的分組。在中間節(jié)點(diǎn)處使用bf模塊410。bf模塊410可以執(zhí)行以下操作:
1)接收已編碼的分組作為輸入;
2)通過對(duì)同一批次的分組執(zhí)行線性編碼來生成重新編碼的分組;以及
3)按協(xié)議特定順序來輸出分組。
與諸如tcp/ip之類的常規(guī)網(wǎng)絡(luò)通信協(xié)議不同,中間節(jié)點(diǎn)可以輸出已接收到的分組的線性組合。由于這個(gè)原因,中間節(jié)點(diǎn)有時(shí)被稱為重新編碼器或重新編碼節(jié)點(diǎn)。
在使用僅對(duì)屬于同一批次的分組應(yīng)用線性組合的規(guī)定的情況下,根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的各種bf模塊設(shè)計(jì)是可能的。由于在線性網(wǎng)絡(luò)編碼期間的操作是線性的,可構(gòu)想出轉(zhuǎn)移矩陣h。將在匯聚節(jié)點(diǎn)處接收到的批次分組并置為矩陣y,我們有
y=xh=bgh。(1)
h的尺寸取決于該批次中接收到的分組的數(shù)量。假設(shè)接收到該批次中的r個(gè)分組,則h是m×r矩陣。矩陣h通過分組的系數(shù)向量在解碼器處是已知的。
對(duì)于接收到的n個(gè)批次,定義hr是n個(gè)轉(zhuǎn)移矩陣中秩為r的部分。轉(zhuǎn)移矩陣的經(jīng)驗(yàn)秩分布(empiricalrankdistribution)h=(h0,h1,..,hm)可以促進(jìn)良好的度分布。
諸如圖1中的節(jié)點(diǎn)r3之類的目的節(jié)點(diǎn)包括解碼模塊406。在高級(jí)別上,解碼模塊可以執(zhí)行如下操作:
1)接收已編碼的數(shù)據(jù)分組作為輸入;
2)使用bats解碼算法對(duì)分組解碼;以及
3)輸出經(jīng)解碼的數(shù)據(jù)文件和/或數(shù)據(jù)流。
根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,存在針對(duì)bats碼的多種解碼算法。在網(wǎng)絡(luò)發(fā)送期間保留批次的度,使得例如可以將高效的置信傳播(bp)解碼算法用于對(duì)所接收的分組進(jìn)行聯(lián)合解碼。針對(duì)所接收到的批次,目的節(jié)點(diǎn)使用y和對(duì)g和h的了解來嘗試解碼輸入分組。如果rk(gh)等于度d,則批次是可解碼的,即(1)中以b作為變量的線性系統(tǒng)具有唯一解。對(duì)bats碼的bp解碼持續(xù)尋找可解碼的批次。如果找到可解碼的批次,則通過求解相關(guān)聯(lián)的線性系統(tǒng)(1)來恢復(fù)該批次的輸入分組且將已恢復(fù)的輸入分組代入尚未解出的批次。如果不能找到可解碼的批次,則bp解碼停止。對(duì)于通常情況,用數(shù)值方式證明了具有bp解碼的bats碼實(shí)現(xiàn)了非常接近平均經(jīng)驗(yàn)秩∑iihi的碼率(每批次分組中可實(shí)現(xiàn)碼率的理論上限)。
另一種技術(shù)被稱為失活(inactivation)。如果輸入分組的數(shù)量非常大,漸進(jìn)優(yōu)化的度分布將表現(xiàn)良好。如果輸入分組的數(shù)量相對(duì)少,那么在對(duì)輸入分組的所需部分解碼之前bp解碼趨向于停止。在bp解碼停止后,使用失活可以繼續(xù)解碼處理。當(dāng)沒有可解碼的批次,挑選未解碼的輸入分組并將其標(biāo)記為失活的。雖然失活的分組是不確定的,但將失活分組像經(jīng)解碼的分組一樣代入批次中。重復(fù)解碼處理,直到輸入分組要么被解碼,要么是失活的。通過求解線性方程系統(tǒng),可以恢復(fù)失活的輸入分組。
現(xiàn)在描述根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的被稱為batspro-1的bats協(xié)議。編碼模塊404在另一批次之前輸出批次的分組。解碼模塊406如以上描述運(yùn)行。在新的批次的分組到來之后,bf模塊410重新編碼批次。在下一個(gè)重新編碼處理之前,其產(chǎn)生每批次m個(gè)重新編碼的分組并發(fā)送他們。
圖5示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的可以由bf模塊410執(zhí)行的示例過程500。bats分組可以被接收(在502處)和保存(在504處)。如果檢測(cè)到新的批次(在506處),當(dāng)前批次變成準(zhǔn)備好的批次且新的批次變成當(dāng)前批次(在508處)。準(zhǔn)備好的批次的m個(gè)分組被重新編碼(在510處),并發(fā)送m個(gè)重新編碼的分組(在512處)。
系統(tǒng)重新編碼是存儲(chǔ)并轉(zhuǎn)發(fā)線性無關(guān)的分組的方法。該方法可以顯著減少在重新編碼處理期間所要求的有限域運(yùn)算(在抽象代數(shù)意義上)的數(shù)量。假設(shè)重新編碼器針對(duì)批次將產(chǎn)生t≥r個(gè)分組,其中r是正確接收到的線性無關(guān)的分組的數(shù)量,即批次的秩。不產(chǎn)生全部t個(gè)分組,通過針對(duì)接收到的r個(gè)分組使用隨機(jī)線性組合,僅產(chǎn)生t-r個(gè)分組。其余的r個(gè)重新編碼的分組與r個(gè)接收到的分組相同,被稱為系統(tǒng)重新編碼分組。
當(dāng)鏈路損耗獨(dú)立時(shí),batspro-1可以很好地工作。然而,當(dāng)鏈路損耗是突發(fā)式的,batspro-1的有效性可能降低。由于干擾和衰落,突發(fā)損耗是無線發(fā)送中的常見現(xiàn)象。此外,在實(shí)際中,突發(fā)錯(cuò)誤的長度不是固定的。
根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,塊交織器可以將突發(fā)損耗變換為接近隨機(jī)損耗(例如,使得損耗模式具有白噪聲特征)。批次集合(例如,多個(gè)批次)形成塊。塊的大小被稱為交織器的深度,由l表示。在新塊的分組到來之后,節(jié)點(diǎn)針對(duì)前一塊中的批次執(zhí)行重新編碼。其產(chǎn)生每批次m個(gè)重新編碼分組并以循環(huán)(round-robin)方式發(fā)送每批次的一個(gè)分組,直到其發(fā)送了本塊所有重新編碼的分組為止。
圖6示出了深度為4的塊交織方案600的示例。每個(gè)矩形表示一個(gè)批次且長度表示重新編碼的分組的數(shù)量。不同批次分組的數(shù)量相同。箭頭表示由塊交織器產(chǎn)生的發(fā)送序列。圖7示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的可以由bf模塊410執(zhí)行以實(shí)現(xiàn)交織batspro-1的示例過程700。bats分組可以被接收(在702處)和保存(在704處)。如果檢測(cè)到新的塊(在706處),當(dāng)前塊變成準(zhǔn)備好的塊且新的塊變成當(dāng)前塊(在708處)。準(zhǔn)備好的塊中的每個(gè)批次的分組被重新編碼成m個(gè)分組(在710處),且以交織順序(在712處)發(fā)送ml個(gè)重新編碼的分組,例如,利用圖6所示的塊交織方案600。
對(duì)于重新編碼器,分組丟失可能出現(xiàn)在前一鏈路。接收到的批次的秩最多與前一跳的同批次的秩相同。解碼過程依賴于批次中線性無關(guān)的分組,且bats碼的可實(shí)現(xiàn)碼率與每批次的期望秩相近。bf模塊的目標(biāo)是優(yōu)化(例如,最大化)不同的批次中將在下一跳接收的線性無關(guān)分組的總數(shù),例如最大化下一跳中各批次的轉(zhuǎn)移矩陣的秩的和。
例如,假設(shè)重新編碼器接收到秩為1的批次。在batspro-1中,重新編碼器產(chǎn)生該批次的m個(gè)分組。該m個(gè)重新編碼的分組是線性相關(guān)的。下一跳僅需要m個(gè)分組之一來取回整個(gè)批次,且其他正確接收到的分組是開銷。根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,可以向具有較低秩的批次自適應(yīng)地分配較少的重新編碼分組且向具有較高秩的批次分配較多的分組。這個(gè)方案被稱為自適應(yīng)重新編碼,這是改進(jìn)的協(xié)議(batspro-2)的特征。
在batspro-2中,操作是在重新編碼處理前確定重新編碼的分組的最優(yōu)數(shù)量。本文稱這個(gè)處理為預(yù)重新編碼。給定下一跳的分組丟失概率p。針對(duì)批次的集合l,可以預(yù)先計(jì)算表格:
令重新編碼器產(chǎn)生l中批次b的tb個(gè)分組。令tb的和等于tmax,tmax是該批次集合的重新編碼的分組的最大數(shù)量。然后圖8所示的算法800可以找到在下一跳上具有最大期望的秩的tb集合。圖9所示的算法900是算法800的近似備選,且在實(shí)際中更有用。圖10所示的算法1000可以將近似方案的結(jié)果(例如修改算法900的輸出)修改為更優(yōu)化的結(jié)果。在算法800、900和1000中,符號(hào)rb代表批次b的秩(例如,與批次b相關(guān)聯(lián)的轉(zhuǎn)移矩陣的秩和/或統(tǒng)計(jì)觀察到的該批次的秩,例如針對(duì)批次的線性無關(guān)接收的數(shù)據(jù)分組)。
使用自適應(yīng)重新編碼,不同批次中重新編碼的分組的數(shù)量可以不同。有時(shí),重新編碼的分組的數(shù)量可以超過m,因此塊交織器不能以上述方式工作。對(duì)于源節(jié)點(diǎn),因?yàn)槊颗尉哂衜個(gè)分組,標(biāo)準(zhǔn)塊交織器工作良好。
根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,可對(duì)多個(gè)數(shù)據(jù)流應(yīng)用交織器。一個(gè)批次出現(xiàn)在一個(gè)數(shù)據(jù)流中。在數(shù)據(jù)流中,另一批次跟隨前一批次。圖11示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的用于batspro-2的示例數(shù)據(jù)分組設(shè)計(jì)。批次id字段1104用于識(shí)別不同的批次。這里,術(shù)語“字段”在信息處理意義上使用,例如,數(shù)據(jù)記錄的預(yù)定義部分。系數(shù)向量1106是轉(zhuǎn)移矩陣的列。有效載荷1108是編碼/重新編碼的數(shù)據(jù)。前一批次id1102是在同一數(shù)據(jù)流中前一批次的批次id。分組p的四個(gè)字段(前一批次id、批次id、系數(shù)向量、有效負(fù)荷)分別由pj,pi,pc和pb表示。
根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,用于batspro-2的編碼模塊和解碼模塊可以類似于batspro-1的編碼模塊和解碼模塊。然而,用于batspro-2的bf模塊可以不同。圖12示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的batspro-2bf模塊1202的示例子模塊結(jié)構(gòu)1200。入局分組被轉(zhuǎn)移到輸入流管理單元(ismu)1204,ismu1204處理亂序分組并指示完成批次。ismu輸出非亂序分組且這些分組被存儲(chǔ)在高速緩存1206中。重新編碼單元1208從高速緩存中讀取完成批次的分組,并執(zhí)行預(yù)編碼過程和重新編碼過程,以產(chǎn)生重新編碼分組。輸出流管理單元(osmu)1210管理數(shù)據(jù)流,向不同的數(shù)據(jù)流分配批次,并以交織順序來發(fā)送流。數(shù)據(jù)流的分組來自重新編碼單元(重新編碼的分組)和高速緩存(系統(tǒng)重新編碼分組)。除了字段pj外,重新編碼分組可以對(duì)應(yīng)于接收到的分組。
ismu1204可以實(shí)現(xiàn)以下功能:
1)識(shí)別不同的輸入數(shù)據(jù)流;
2)識(shí)別完成批次;
3)處理斷流(brokenstream);以及
4)處理亂序分組。
在存在分組丟失的情況下,輸入分組具有交織順序。信道中可能存在分組抖動(dòng),所以丟失分組的存在性不能通過接收時(shí)間差來檢測(cè)。根據(jù)本發(fā)明的至少一個(gè)實(shí)施例,必須區(qū)分不同的數(shù)據(jù)流,因?yàn)橹甘就瓿膳蔚男畔?例如,利用分組的pj字段)取決于它的數(shù)據(jù)流。
圖13示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的由ismu1204執(zhí)行的示例過程1300。ismu1204管理記錄輸入數(shù)據(jù)流上的當(dāng)前批次id的有效列表。開始時(shí)該列表是空的。此處假設(shè)不存在亂序分組。在1302處,接收batspro-2分組。如果分組的字段pj不在列表上(在1304處判定),則分組被認(rèn)為在新的未識(shí)別出的數(shù)據(jù)流中(在1306處)。分組的批次id被加入列表。如果pj在列表上而pi不在列表上(在1308處判定),則該分組指示前一批次(其批次id為pj)是完成批次。該分組的批次id代替了列表上的取值為pj的項(xiàng)目并繼承數(shù)據(jù)流(在1310處)。如果pj等于pi,則其是偽分組,指示該批次是完成批次(在1312處)。如果pi在列表上而pj不在列表上,則是個(gè)錯(cuò)誤。這意味著兩個(gè)流正在接收同一批次??梢酝ㄟ^將兩個(gè)流合并在一起來處理該錯(cuò)誤。在識(shí)別出完成批次后,向重新編碼單元1208發(fā)送批次id。
假設(shè)后續(xù)批次的分組丟失。數(shù)據(jù)流中的后續(xù)分組的pj不能匹配有效列表中的任何項(xiàng)目。在這種情況下,分組被認(rèn)為在新的數(shù)據(jù)流中。為每個(gè)數(shù)據(jù)流設(shè)置超時(shí)。如果數(shù)據(jù)流中沒有新接收到的分組,該數(shù)據(jù)流被認(rèn)為是斷流。數(shù)據(jù)流中的最后批次被當(dāng)做完成批次。移除有效列表中相應(yīng)的項(xiàng)目。圖14示出了該場(chǎng)景1400的示例(流1是斷流,流3尚未被識(shí)別)。
高速緩存1206的功能是提供存儲(chǔ)設(shè)備,以支持對(duì)批次中的分組的讀寫。為了其他子模塊的使用,記錄統(tǒng)計(jì)數(shù)據(jù),例如批次的秩。高速緩存根據(jù)分組的批次id將分組加以存儲(chǔ)和成組。由于輸出數(shù)據(jù)流一次僅讀取一個(gè)批次,如果高速緩存也存儲(chǔ)重新編碼的分組,則高速緩存可充當(dāng)流的存儲(chǔ)設(shè)備。
存在針對(duì)每批次設(shè)計(jì)的兩個(gè)標(biāo)志:“重新編碼”和“選擇”。當(dāng)重新編碼單元1208產(chǎn)生批次的重新編碼分組時(shí),例如,由預(yù)重新編碼處理產(chǎn)生的數(shù)量,對(duì)標(biāo)志“重新編碼”進(jìn)行標(biāo)記。它指示osmu1210不需要等待該批次更多的分組。如果osmu選擇了該批次,則對(duì)數(shù)據(jù)流標(biāo)記“選擇”。當(dāng)標(biāo)記了“選擇”標(biāo)志時(shí),高速緩存將向重新編碼單元發(fā)送批次id,這表示該批次準(zhǔn)備好在其變?yōu)橥瓿膳魏髨?zhí)行重新編碼。
當(dāng)批次的塊完成預(yù)重新編碼處理時(shí),重新編碼單元1208產(chǎn)生重新編碼分組。當(dāng)存在足夠多的“選擇”完成批次,根據(jù)預(yù)編碼重新編碼方案來計(jì)算該批次重新編碼的分組的數(shù)量。之后,產(chǎn)生重新編碼的分組并存儲(chǔ)在高速緩存中。在存儲(chǔ)完該批次最后的重新編碼分組之后,在高速緩存中對(duì)標(biāo)志“重新編碼”進(jìn)行標(biāo)記。
ismu1210可以實(shí)現(xiàn)以下功能:
1)向輸出數(shù)據(jù)流分配批次;
2)從其他子模塊讀取數(shù)據(jù)流的分組;以及
3)以交織順序來輸出數(shù)據(jù)流。
osmu1210管理輸出數(shù)據(jù)流的當(dāng)前批次id。當(dāng)發(fā)送流中批次的最后的分組時(shí),該單元從高速緩存中選擇批次作為后繼者。該后繼的批次在高速緩存中用“選擇”來標(biāo)記。后繼者的候選是在高速緩存中沒有被標(biāo)記有“選擇”標(biāo)志的批次。向首先接收到的分組中具有最老的時(shí)間戳的完成批次給予候選的優(yōu)先級(jí)。如果沒有完成批次,則向具有最高秩的未完成批次給予優(yōu)先級(jí)。如果存在具有同樣優(yōu)先級(jí)的多個(gè)候選,則隨機(jī)選擇任何一個(gè)。如果沒有候選,osmu1210停止發(fā)送并等待直到存在候選。圖15示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的可以由osmu1210執(zhí)行以選擇后續(xù)者的示例過程1500。在1502處,檢測(cè)到要求后繼者。(在1504)考慮高速緩存中沒有“選擇”標(biāo)志的批次。完成批次比未完成批次具有更高的優(yōu)先級(jí)。在(在1506處檢測(cè)到的)完成批次中,選擇首先接收到的分組中具有最老的時(shí)間戳的完成批次(在1508處)。如果(在1510處檢測(cè)到)沒有完成批次,選擇具有最高秩的未完成批次(在1512處)。如果在該輪中沒有選擇候選,則osmu等待并重復(fù)這個(gè)流程以找到后繼者。
自適應(yīng)重新編碼方法導(dǎo)致具有不同數(shù)量的重新編碼分組的批次。在數(shù)據(jù)流之一發(fā)送了批次的重新編碼的分組之后,該數(shù)據(jù)流為空且osmu1210選擇批次(可能是未完成批次)作為后繼者。如果它是未完成的批次,重新編碼單元1208還未重新編碼該批次。根據(jù)系統(tǒng)重新編碼分組與接收到的分組相同的事實(shí),通過使用系統(tǒng)重新編碼分組(如果可用),osmu1210可以填入間隙。否則,osmu1210填入虛擬分組。
假設(shè)當(dāng)前接收到的分組(系統(tǒng)重新編碼分組)被發(fā)送,使得數(shù)據(jù)流為空,osmu1210等待更多的重新編碼分組。osmu1210的輸出具有交織順序。
根據(jù)至少一些實(shí)施例,用于消息編碼的系統(tǒng)、設(shè)備、方法、處理和/或操作可以用由一個(gè)或多個(gè)編程的計(jì)算機(jī)處理器(例如中央處理單元(cpu)或微處理器)執(zhí)行的指令集的形式來全部或部分實(shí)現(xiàn)。這樣的處理器可被并入由系統(tǒng)的其他組件操作或與之通信的裝置、服務(wù)器、客戶端或其他計(jì)算設(shè)備中。例如,圖16示出了根據(jù)本發(fā)明的一些實(shí)施例的可以在被配置為實(shí)現(xiàn)方法和/或處理的計(jì)算機(jī)設(shè)備和/或系統(tǒng)1600中存在的元件的各方案。圖16示出的子系統(tǒng)經(jīng)由系統(tǒng)總線1602互連。附加子系統(tǒng)是例如打印機(jī)1604、鍵盤1606、固定盤1608、耦合到顯示適配器1612的顯示器1610。外圍設(shè)備和耦合到i/o控制器1614的輸入/輸出(i/o)設(shè)備可以通過本領(lǐng)域已知的任何數(shù)量的手段(例如串行端口1616)連接到計(jì)算機(jī)系統(tǒng)。例如,可以利用串行端口1616或外部接口1618將計(jì)算機(jī)設(shè)備1600連接到圖16未示出的其他設(shè)備和/或系統(tǒng),包括廣域網(wǎng)(例如互聯(lián)網(wǎng))、鼠標(biāo)輸入設(shè)備、和/或掃描儀。經(jīng)由系統(tǒng)總線1602的互連允許一個(gè)或多個(gè)處理器1620與每個(gè)子系統(tǒng)通信并控制對(duì)可存儲(chǔ)在系統(tǒng)存儲(chǔ)器1622和/或固定盤1608中的指令的執(zhí)行,以及控制在子系統(tǒng)之間對(duì)信息的交換。系統(tǒng)存儲(chǔ)器1622和/或固定盤1608可以體現(xiàn)有形的計(jì)算機(jī)可讀介質(zhì)。
應(yīng)當(dāng)理解:如上所述,本發(fā)明可以使用具有模塊化或集成方式的計(jì)算機(jī)軟件以控制邏輯的形式來實(shí)現(xiàn)。備選地,或附加地,本發(fā)明的實(shí)施例可以部分或全部通過硬件實(shí)現(xiàn),例如,通過一個(gè)或多個(gè)電路,如電子電路,光電路、模擬電路、數(shù)字電路、包括專用集成電路(“asic”)和現(xiàn)場(chǎng)可編程門陣列(“fpga”)在內(nèi)的集成電路(“ic”,有時(shí)叫做“芯片”)、以及它們合適的組合。具體地,上面參考圖2描述的編碼器和/或解碼器可以部分或全部以硬件實(shí)現(xiàn)。如對(duì)本領(lǐng)域的技術(shù)人員顯而易見的:計(jì)算復(fù)雜性和計(jì)算效率的概念可以在進(jìn)行了必要的修正的情況下應(yīng)用于實(shí)現(xiàn)計(jì)算和/或算法的電路和/或線路中?;诒疚牡墓_和教導(dǎo),本領(lǐng)域的普通技術(shù)人員將知道和理解使用硬件和/或硬件和軟件的結(jié)合來實(shí)現(xiàn)本發(fā)明的其它方式和/或方法。
任何在本申請(qǐng)中描述的軟件組件、處理或功能可以作為軟件代碼來實(shí)現(xiàn),該軟件代碼要由處理器通過利用任何適當(dāng)?shù)挠?jì)算機(jī)語言(例如java、c++或perl)利用例如傳統(tǒng)的或面向?qū)ο蟮募夹g(shù)來執(zhí)行。軟件代碼可被存儲(chǔ)為計(jì)算機(jī)可讀介質(zhì)上的一系列指令或命令,該計(jì)算機(jī)可讀介質(zhì)是例如隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、磁性介質(zhì)(例如硬盤驅(qū)動(dòng)器或軟盤)、或光學(xué)介質(zhì)(例如cd-rom)。任何這樣的計(jì)算機(jī)可讀介質(zhì)可駐留在單個(gè)計(jì)算裝置上或位于單個(gè)計(jì)算裝置內(nèi),并可在系統(tǒng)或網(wǎng)絡(luò)內(nèi)的不同計(jì)算裝置上或計(jì)算裝置內(nèi)存在。
本文中引用的包括出版物、專利申請(qǐng)和專利在內(nèi)的所有參考文件通過引用方式合并于此,就好像每個(gè)參考文件被單獨(dú)且具體地指示為通過引用被并入和/或被全部闡述于此一樣。附錄a和附錄b可以提供與上述本發(fā)明的一個(gè)或多個(gè)實(shí)施例相關(guān)的上下文和/或附加的細(xì)節(jié)。
在說明書和以下權(quán)利要求中對(duì)術(shù)語“一”、“一個(gè)”和“所述”及類似指示物的使用應(yīng)當(dāng)被解釋為涵蓋單數(shù)和復(fù)數(shù)這二者,除非本文另有指示或與上下文明顯矛盾。在說明書和以下權(quán)利要求中的術(shù)語“具有”、“包括”、“包含”和類似指示物應(yīng)當(dāng)被解釋為開放式術(shù)語(例如,“包括,但不限于,”),除非另有說明。除非本文中另外指示,否則本文中對(duì)值的范圍的敘述僅意在用作分別參考落入該范圍內(nèi)(含該范圍)的各個(gè)值的便捷方法,并且各個(gè)單獨(dú)值被并入本說明書中猶如其被單獨(dú)在此敘述一樣??梢园凑杖魏芜m當(dāng)順序執(zhí)行本文中描述的所有方法,除非本文中另外指出或者上下文另外明確地相反指示。本文中提供的對(duì)任何和所有示例或示例語言(例如,“諸如(例如)”)的使用僅意在更好地闡述本發(fā)明的實(shí)施例,且不對(duì)本發(fā)明的范圍施加限制,除非另外要求。在說明書中的任何語言不應(yīng)被認(rèn)為指示任何非要求保護(hù)的元素作為本發(fā)明每個(gè)實(shí)施例的必要元素。
附圖或上述描述的組件的不同布置以及沒有示出或描述的組件和步驟是可能的。類似地,一些特征和子組合是有用的且可以不用參考其它的特征和子組合而使用。為了說明性的而非限制性的目的來描述本發(fā)明的實(shí)施例,且備選實(shí)施例對(duì)本專利的讀者將變得顯而易見。因此,本發(fā)明不限于上述或附圖示出的實(shí)施例,且在不脫離所附權(quán)利要求的范圍的前提下,可以做出各種實(shí)施例和修改。