基于循环置换矩阵的网络编码的方法及系统的制作方法

文档序号:9600519阅读:501来源:国知局
基于循环置换矩阵的网络编码的方法及系统的制作方法
【技术领域】
[0001] 本发明涉及计算机技术领域,尤其涉及基于循环置换矩阵的网络编码的方法及系 统。
【背景技术】
[0002] 随着云计算的快速发展,网络编码在分布式存储系统中的应用引起了广泛的关 注。网络编码能节省存储空间,减少数据修复的网络拥塞。近年来,MDS性质广为网络编码 采用并可以提供稳定可靠的数据存储及对抗硬盘损坏。
[0003] 为了最大能力容忍失效存储节点数量,具有MDS性质的码应用广泛。最大距离可 分(MDS)性质是将k个分组的原数据映射到η(η多k)分组数据,其中这η个数据中任意k 个都可以完全重建原η个分组数据。即原始信息流被拆分成k个等长的数据包并被编码成 η个数据包,这η个数据包中的任意k个都可以恢复原始信息。言外之意,只要剩余完好节 点个数不少于k个即可恢复原有的
[0004] 索罗门(RS)码是具有MDS性质的一种码,被广泛应用于网络编码的分布式存储系 统中。RS码的缺陷在于它的编解码操作应用在高进制有限域,需要复杂的编码和解码技术, 需要解码时间长,能耗高。高进制域的解码复杂度高,因此现大量工作都集中在二进制网络 编码和锯齿(zigzag)解码。
[0005] zigzag解码:在二进制域中锯齿形解码,将解码中的三次方运算变成了线性运 算,降低了运算复杂性。zigzagdecode(ZD)码,采用二进制域中的zigzag解码,但按照他 们的编解码方法,存在如下的缺陷:(1)需要更多的存储空间,数据越长,编码块需要的存 储空间更多,如果是(n,k)码需要的额外存储空间为(n-k) (k-Ι),如果存储数据够大,需要 消耗的额外存储空间大;(2)对于不同的存储节点,存储空间是非对称的,使得云存储的设 计师很难分配存储空间来存储客户数据。

【发明内容】

[0006] 为了解决现有技术中的问题,本发明提供了一种基于循环置换矩阵的网络编码的 方法。
[0007] -种基于循环置换矩阵的网络编码的方法,编码过程包括如下步骤:
[0008] 第一步,将原始的消息分成k个等长数据包,分别用(^,C2,…,Ck表示,各个数据 包长度为L,其中Q中的数据元素{〇,1}表示Ci中的第j位,ie{l,2,3,...,k},j e{0, 1, 2,...,L-l};
[0009] 第二步,采取系统码框架Q,C2,…,(;为k个原始非编码包,包含了所有的原始消 息,它是后n_k个校验编码包的基础;
[0010] 第二步,编码fe验码块,后n_k个称为校验编码包,用Ck+1,Ck+2,. . .,(^表不,由前k 个非编码包移位后逐位异或生成的码字构成。
[0011] 作为本发明的进一步改进,为了保证zigzag解码和MDS性质,应用循环置换矩阵 T,将非编码包中的每一个元素都按矩阵行向量右移指定位,然后将右移后的元素按列逐位 异或。
[0012] 作为本发明的进一步改进,每一个非编码元素按行向量右移的指定位如循环置换 矩阵Τ表示,矩阵中第(i,j)个元素表示对编码包C1+k中的第j行元素右移指定位,通过此 规则完成对C1+k的编码,ie{1,2, 3,...,n-k},je{1,2, 3,...,k}。
[0013] 作为本发明的进一步改进,在循环置换矩阵T中,任意行或者列都没有相同的数 字;在循环置换矩阵T中,任意两列的差所包含的元素都不相同。
[0014] 作为本发明的进一步改进,循环置换矩阵T在η为最大值2k时如下k*k矩阵;当 η小于2k时,任意取k行中的n-k行,构成矩阵为(n-k)*k矩阵。该k*k矩阵T为:
[0015]
[0016] 本发明还提供了一种基于循环置换矩阵的网络编码的系统,包括:
[0017] 分割模块,将原始的消息分成k个等长数据包,分别用心,C2,…,Ck表示,各个数 据包长度为L,其中Q中的数据元素{〇,1}表示Ci中的第j位,ie{l,2,3,...,k}, je{〇, 1,2, · · ·,L-l};
[0018] 处理模块,用于采取系统码框架,采取系统码框架,(;,(:2,…,CkSk个原始非编 码包,包含了所有的原始消息,它是后n-k个校验编码包的基础;
[0019] 生成模块,用于编码fe验码块,后n_k个称为校验编码包,用Ck+1,Ck+2,. . .,(^表不, 由前k个非编码包移位后逐位异或生成的码字。
[0020] 作为本发明的进一步改进,为了保证zigzag解码和MDS性质,应用循环置换矩阵 T,将非编码包中的每一个元素都按矩阵行向量右移指定位,然后将右移后的元素按列逐位 异或。
[0021] 作为本发明的进一步改进,每一个非编码元素按行向量右移的指定位如循环置换 矩阵T表示,矩阵中第(i,j)个元素表示对编码包C1+k中的第j行元素右移指定位,通过此 规则完成对C1+k的编码,ie{1,2, 3,...,n-k},je{1,2, 3,...,k}。
[0022] 作为本发明的进一步改进,在循环置换矩阵T中,任意行或者列都没有相同的数 字;在循环置换矩阵T中,任意两列的差所包含的元素都不相同。
[0023] 作为本发明的进一步改进,循环置换矩阵T在η为最大值2k时如下k*k矩阵;当 η小于2k时,任意取k行中的n-k行,构成矩阵为(n-k) *k矩阵。该k*k矩阵T为:
[0024]
[0025] 本发明的有益效果是:在本发明中,通过循环置换矩阵T,在二进制域中对消息元 素进行编码,使其满足MDS(n,k)性质;通过巧妙移位后异或运算使得可zigzag解码,降低 了解码复杂度;另外,在编码过程中,校验编码包的额外冗余开销都
bit,既节省了 存储空间,又使得每个存储节点的额外开销保持对称。
【附图说明】
[0026] 图1是本发明的ZD-MDS(10,5)码编码图。
[0027] 图2是本发明的ZD-(10, 5)码解码方法图。
[0028] 图3是zigzag解码原理示意图。
【具体实施方式】
[0029] 本发明公开了一种基于循环置换矩阵的网络编码的方法及系统,在该方法中,设 -Η个ZD-MDS(n,k) (k>4,k<η< 2k)码,编码过程包括如下步骤:
[0030] 第一步,将原始的消息分成k个等长数据包,分别用心,C2,…,Ck表示,各个数据 包长度为L,其中Q中的数据元素{〇,1}表示q中的第j位,ie{l,2,3,...,k},j e{0, 1, 2,...,L-l};
[0031] 第二步,采取系统码框架Q,C2,…,(;为k个原始非编码包,包含了所有的原始消 息,它是后n_k个校验编码包的基础;
[0032] 第二步,编码fe验码块,后n_k个称为校验编码包,用Ck+1,Ck+2, . . .,(^表不,由前k 个非编码包移位后逐位异或生成的码字构成。
[0033] 详细的编码构造:
[0034] 这一部分,将详细介绍ZD-MDS(n,k) (k>4,k彡η彡2k)码的编码构造,详细介绍如 何使用CpC2,…,(;这k个非编码包构成Ck+1,Ck+2,. . .,Cn这n-k个校验编码包的详细过 程。
[0035] 为了保证zigzag解码和MDS性质,应用循环置换矩阵T,将非编码包中的每一个元 素都按矩阵行向量右移指定位,然后将右移后的元素按列逐位异或。
[0036] 每一个非编码元素按行向量右移的指定位如循环置换矩阵T表示,矩阵中第(i, j)个元素表示对编码包C1+k中的第j行元素右移指定位,通过此规则完成对C1+k的编码, iε{1,2, 3, · · ·,n_k},jε{1,2, 3, · · ·,k} 〇
[0037]循环置换矩阵中T,第一行(0,1,3,6,10,···,
)表示校验编码包Ck+1中的结 构元素cjlj(^分别右移0,1,3,6,10,…,
可以看出,每一行和每一列的元素都按 照该矩阵中对应的元素进行循环变化,因此我们称这个矩阵为循环置换矩阵。如图1所示 的编码结果是η取10,k取5的特例,即ZD-MDS(10, 5)码。在节点存储校验编码包时,是将 编码后的每一列进行逐位异或后将结果进行存储。
[0038] 在循环置换矩阵中,除了第一行以外每一行都是经过第一行的位数循环右移所 得。
[0039] 在循环置换矩阵中,将第一行称为矩阵T的基向量,由基向量能够看出前两个组 件是由〇、1组成,第m与m+Ι组件之间的移位距离比m与m-ι之间的大。
[0040] 在循环置换矩阵中,校验数据包在原非编码包的基础上多了额外的存储开销,其 所有k个校验包开销位都是固定的
位,相比zigzagdecode(ZD)码中的节省了一 半,zigzagdecode(ZD)码中的开销为(n_k) (k_l)
[0041] 在循环置换矩阵中,我们对任意两列作差得到一个向量,其中无相同元素,采用该 循环置换矩阵进行编码,编码的样式为锯齿型,解码时能够采用zigzag解码,另外,该码具 有MDS性质,不会出现不可解码情况。如果两列作差后向量元素有相同,则说明两列所在的 行在编码中码字的相对移位相同,则在解码时不能保证锯齿型,就会存在k个节点不能解 码出原信息的情况发生
[0042] 还公开了一种基于循环置换矩阵的网络编码的系统,包括:
[0043] 分割模块,用于将原始的消息分成k个等长数据包,分别用Q,C2,…,Ck表示,各 个数据包长度为L,其中Q中的数据元素{〇,1}表示q中的第j位,ie{1,2,3,... ,k},je{〇,l,2,...,L-l};
[0044] 处理模块,用于采取系统码框架,,…,CkSk个原始非编码包,包含了所有 的原始消息,它是后n-k个校验编码包的基础;
[0045] 生成模块,编码fe验码块,后n_k个称为校验
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1