網(wǎng)絡(luò)編碼的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及網(wǎng)絡(luò)編碼的方法及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著云計算的快速發(fā)展,網(wǎng)絡(luò)編碼在分布式存儲系統(tǒng)中的應(yīng)用引起了廣泛的關(guān) 注。網(wǎng)絡(luò)編碼能節(jié)省存儲空間,減少數(shù)據(jù)修復(fù)的網(wǎng)絡(luò)擁塞。近年來,MDS性質(zhì)廣為網(wǎng)絡(luò)編碼 采用并可以提供穩(wěn)定可靠的數(shù)據(jù)存儲及對抗硬盤損壞。
[0003] 為了最大能力容忍失效存儲節(jié)點數(shù)量,具有MDS性質(zhì)的碼應(yīng)用廣泛。最大距離可 分(MDS)性質(zhì)是將k個分組的原數(shù)據(jù)映射到η(η多k)分組數(shù)據(jù),其中這η個數(shù)據(jù)中任意k 個都可以完全重建原η個分組數(shù)據(jù)。即原始信息流被拆分成k個等長的數(shù)據(jù)包并被編碼成 η個數(shù)據(jù)包,這η個數(shù)據(jù)包中的任意k個都可以恢復(fù)原始信息。言外之意,只要剩余完好節(jié) 點個數(shù)不少于k個即可恢復(fù)原有的
[0004] 索羅門(RS)碼是具有MDS性質(zhì)的一種碼,被廣泛應(yīng)用于網(wǎng)絡(luò)編碼的分布式存儲系 統(tǒng)中。RS碼的缺陷在于它的編解碼操作應(yīng)用在高進制有限域,需要復(fù)雜的編碼和解碼技術(shù), 需要解碼時間長,能耗高。高進制域的解碼復(fù)雜度高,因此現(xiàn)大量工作都集中在二進制網(wǎng)絡(luò) 編碼和鋸齒(zigzag)解碼。
[0005]zigzag解碼:在二進制域中鋸齒形解碼,將解碼中的三次方運算變成了線性運 算,降低了運算復(fù)雜性。zigzagdecode(ZD)碼,就是采用二進制域中的zigzag解碼,但按 照他們的編解碼方法,存在如下的缺陷:(1)需要更多的存儲空間,數(shù)據(jù)越長,編碼塊需要 的存儲空間更多,如果是(n,k)碼需要的額外存儲空間為(n-k) (k-l),S卩(8,4)碼需要12 bit,開銷位多;(2)對于不同的存儲節(jié)點,存儲空間是非對稱的,使得云存儲的設(shè)計師很難 分配存儲空間來存儲客戶數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0006] 為了解決現(xiàn)有技術(shù)中的問題,本發(fā)明提供了一種網(wǎng)絡(luò)編碼的方法。
[0007] 本發(fā)明提供了一種網(wǎng)絡(luò)編碼的方法,編碼過程包括如下步驟:
[0008] 第一步,將原始信息分為4個等長的包,分別用(;、(:2、(: 3、(:4表示,各個包的長度為 L,其中Q中的Slje{〇,1}表示Ci中的第j位,ie{l,2,3,4},je{0,l,2,...L-l};
[0009] 第二步,采取系統(tǒng)碼框架,Q、C2、C3、(:4為4個原始非編碼包,它是編碼后四個校驗 編碼包的基礎(chǔ);
[0010] 第三步,后生成的四個數(shù)據(jù)包分別用(:5、(:6、(: 7、(:8表示,這4個包為校驗編碼包,由 Q、C2、C3、C44個非編碼包移位后逐位異或得到的碼字構(gòu)成。
[0011] 作為本發(fā)明的進一步改進,為了保證zigzag解碼和MDS特性,應(yīng)用置換矩陣,在置 換矩陣中實施交錯移位,將非編碼包中的每一個元素都首先右移指定位,然后將所有這些 經(jīng)過右移得到的結(jié)果元素都逐位異或。
[0012] 作為本發(fā)明的進一步改進,在置換矩陣中,每一個非編碼數(shù)據(jù)包移位后的結(jié)果用 交錯移位置換矩陣表中的矩陣表示,矩陣中第(i,j)個元素表示對編碼包C1+4中第j行元 素向右移位的位數(shù),通過此規(guī)則完成對C1+4的編碼,i,je{1,2, 3, 4}。
[0013] 作為本發(fā)明的進一步改進,在交錯移位置換矩陣表中,任意行或者列沒有相同的 數(shù)字,這意味著沒有發(fā)生相同的比特數(shù)轉(zhuǎn)移,避免不可解碼;另外,在交錯移位置換矩陣表 中,任意二列的差所包含的元素都不同。
[0014] 作為本發(fā)明的進一步改進,交錯移位置換矩陣表如下:
[0015]
[0016] 本發(fā)明還提供了一種網(wǎng)絡(luò)編碼的系統(tǒng),包括:
[0017] 分割模塊,用于將原始信息分為4個等長的包,分別用Q、C2、C3、 C4表示,各個包的長度為L,其中Ci中的s# {〇, 1}表示Ci中的第j位, ie{1,2,3,4},je{〇, 1,2,...L-1};
[0018] 處理模塊,用于采取系統(tǒng)碼框架,Q、C2、C3、(:4為4個原始非編碼包,它是編碼后四 個校驗包碼字的基礎(chǔ);
[0019] 生成模塊,用于后生成四個數(shù)據(jù)包分別用(:5、(: 6、(:7、(:8表示,這4個包為校驗編碼 包,由Q、C2、C3、C44個非編碼包移位后逐位異或得到的碼字構(gòu)成。
[0020] 作為本發(fā)明的進一步改進,為了保證zigzag解碼和MDS特性,應(yīng)用置換矩陣,在置 換矩陣中實施交錯移位,將非編碼包中的每一個元素都首先右移指定位,然后將所有這些 經(jīng)過右移得到的結(jié)果元素都逐位異或。
[0021] 作為本發(fā)明的進一步改進,在置換矩陣中,每一個未編碼數(shù)據(jù)包移位后的結(jié)果用 交錯移位置換矩陣表中的矩陣表示,矩陣中第(i,j)個元素表示對編碼包C1+4中第j行元 素向右移位的位數(shù),通過此規(guī)則完成對C1+4的編碼,i,je{1,2, 3, 4}。
[0022] 作為本發(fā)明的進一步改進,在交錯移位置換矩陣表中,任意行或者列沒有相同的 數(shù)字,這意味著沒有發(fā)生相同的比特數(shù)轉(zhuǎn)移,避免不可解碼;另外,在交錯移位置換矩陣表 中,任意二列的差所包含的元素都不同。
[0023] 作為本發(fā)明的進一步改進,交錯移位置換矩陣表如下:
[0024]
[0025]
[0026] 本發(fā)明的有益效果是:在本發(fā)明中,通過置換矩陣,交錯移位,在二進制域中對原 始消息進行編碼,使其具有MDS性質(zhì),再采用鋸齒型(zigzag)解碼技術(shù),降低解碼復(fù)雜度, 還使得額外的冗余空間為3bit。既節(jié)省了存儲空間,又使得每個存儲節(jié)點的額外開銷保持 對稱。
【附圖說明】
[0027] 圖 1 是ZD-MDS(8,4)碼編碼圖。
[0028] 圖 2 是ZD-MDS(8,4)碼zigzag解碼方法圖。
[0029] 圖3是zigzag解碼原理示意圖。
【具體實施方式】
[0030] 本發(fā)明公開了一種網(wǎng)絡(luò)編碼的方法和系統(tǒng),在該方法中編碼過程包括如下步 驟:
[0031] 第一步,將原始信息分為4個等長的包,分別用Q、C2、C3、C4表示,各 個包的長度為L,如圖2所示,其中Q中的s{〇, 1}表示Ci中的第j位, ie{1,2,3,4},je{〇, 1,2,...L-1};
[0032] 第二步,采取系統(tǒng)碼框架,Q、C2、C3、(:4為4個原始非編碼包,它是編碼后4個校驗 編碼包碼字的基礎(chǔ);
[0033] 第三步,后生成的四個數(shù)據(jù)包分別用(:5、(:6、(: 7、(:8表示,這4個包為校驗編碼包,由 Q、C2、C3、C44個非編碼包移位后逐位異或得到的碼字構(gòu)成。
[0034] 詳細編碼構(gòu)造舉例:
[0035] 這一部分,將給出如何使用(;(:2(:3(:44個基礎(chǔ)非編碼包構(gòu)成C5C6C7CS的詳細過程。
[0036] 為了保證zigzag(鋸齒型)解碼和MDS特性,將未編碼包中的每一個元素都首先 右移指定位,位數(shù)都不相等,因此獲得的編碼包很可能相互獨立的。然后將所有這些經(jīng)過右 移后得到的碼字逐位異或后存儲在校驗編碼包中。
[0037] 每一個非編碼數(shù)據(jù)包移位后的結(jié)果用交錯移位置換矩陣表(表1)中的矩陣表示, 矩陣中第(i,j)個元素表示對編碼包C1+4中第j個結(jié)構(gòu)元素移位的位數(shù),通過此規(guī)則完成 對C1+4的編碼,i,je{1,2,3,4}。
[0038] 例如:第一行(0,1,3,2)代表編碼包C5中結(jié)構(gòu)元素CjljC4分別循環(huán)右移0,1,3,2 位,可以看出,每一行和每一列的元素都按照該矩陣中對應(yīng)的元素進行變化,因此我們稱這 個矩陣為置換矩陣,所得到的編碼結(jié)果如圖1所示,在圖1中,編碼包中的每一列代表相關(guān) 位數(shù)相異或的結(jié)果,例如c5的第一位為su。,第二位為i與S2,。異或的結(jié)果,依次逐位異或 后存儲。
[0039] 從表1中觀察,我們對任意兩列作差得到一個向量,其中無相同元素,采用該交錯 移位置換矩陣進行編碼,編碼的樣式為鋸齒型,解碼時能夠采用zigzag解碼,另外,該碼具 有MDS性質(zhì),不會出現(xiàn)不可解碼情況。如果兩列作差后向量元素有相同,則說明兩列所在的 行在編碼中碼字的相對移位相同,則在解碼時不能保證鋸齒型,就會存在不能解碼出原信 息的情況發(fā)生。
[0040]
[0041] 表 1
[0042] 在表1中,CgljC4通過依次移位構(gòu)成(:5到(:8的移位置換矩陣。在置換矩陣中,移 位的數(shù)字是交錯變化的。
[0043] 在交錯移位置換矩陣表中,校驗數(shù)據(jù)包在原非編碼包的基礎(chǔ)上多了額外的存儲開 銷,其所有4個校驗包開銷位都是固定的為3位,相比zigzagdecode(ZD) (8,4)碼,ZD(8, 4) 碼中的開銷為12位。
[0044] 在交錯移位置換矩陣表中,任意行或者列沒有相同的數(shù)字,這意味著沒有發(fā)生相 同的比特數(shù)轉(zhuǎn)移,避免不可解碼;另外,在交錯移位置換矩陣表中,任意二列的差所包含的 元素都不同,這也避免了不可解碼,保證了zigzag解碼。
[0045] 還公開了一種網(wǎng)絡(luò)編碼的系統(tǒng),包括:
[0046] 分割模塊,用于將原始信息分為4個等長的包,分別用Q、C2、C3、 C4表示,各個包的長度為L,其中Ci中的s# {〇, 1}表示Ci中的第j位, ie{1,2,3,4},je{〇, 1,2,...L-1};
[0047] 處理模塊,用于采取系統(tǒng)碼框架,Q、C2、C3、(:4為4個原始非編碼包,它是編碼后四 個校驗包碼字的基礎(chǔ);
[0048] 生成模塊,