著录项信息
专利名称 | 数据处理方法及数据处理设备 |
申请号 | CN201210053609.6 | 申请日期 | 2012-03-02 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-09-19 | 公开/公告号 | CN102684827A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L1/00 | IPC分类号 | H;0;4;L;1;/;0;0;;;H;0;4;L;1;2;/;7;0查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 滕新东 |
代理机构 | 北京同立钧成知识产权代理有限公司 | 代理人 | 刘芳 |
摘要
本发明实施例提供了数据处理方法及数据处理设备,如果待压缩的数据中包含了与重复数据库中的可变块的前半部分相同并且与可变块的后半部分不同的数据片段,则能够生成粒度小于发生匹配的可变块的新的可变块,并将新的可变块添加到重复数据库。新的可变块粒度较小,提高了后续的待压缩数据与更新后的重复数据库发生匹配的概率,进而提高了压缩的效率。
1.一种数据处理方法,其特征在于,包括:
根据指纹算法计算待压缩数据中的第一片段的第一指纹,所述第一片段的起始位置与所述待压缩数据的起始位置相同,所述第一片段的长度与第一滑窗的长度相同;
在第一本地重复数据库中查找所述第一指纹,所述第一本地重复数据库用于存储重复数据、所述重复数据的指纹以及所述重复数据的摘要;
如果所述第一本地重复数据库中存在所述第一指纹,则根据所述第一指纹获取所述第一本地重复数据库中的第一可变块以及所述第一可变块的摘要,所述第一指纹与根据所述指纹算法计算得到的所述第一可变块中的第一初始块的指纹相同,所述第一初始块的起始位置与所述第一可变块的起始位置相同,所述第一初始块的长度与所述第一滑窗的长度相同,所述第一可变块的摘要为根据摘要算法对所述第一可变块的摘要进行计算得到的;
根据所述摘要算法计算所述待压缩数据中的第二片段的摘要,所述第二片段的起始位置与所述待压缩数据的起始位置相同,所述第二片段的长度与所述第一可变块的长度相同;
比较所述第二片段的摘要与所述第一可变块的摘要;
如果所述第二片段的摘要与所述第一可变块的摘要不同,则获取所述第二片段中的第一子片段,所述第一子片段与所述第一可变块中的第一子可变块相同,所述第一子片段的起始位置与所述第二片段的起始位置相同,所述第一子可变块的起始位置与所述第一可变块的起始位置相同,所述第二片段中的第二比特与所述第一可变块中的第一比特不同,所述第二比特为所述第二片段中所述第一子片段的下一个比特,所述第一比特为所述第一可变块中所述第一子可变块的下一个比特;
将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要添加到所述第一本地重复数据库,生成第二本地重复数据库,所述第一子片段的指纹与所述第一指纹相同,所述第一子片段的摘要为根据所述摘要算法对所述第一子片段的摘要进行计算得到的。
2.根据权利要求1所述方法,其特征在于,还包括:
接收第一报文,所述第一报文包括第一报文头与第一净荷,所述第一净荷包含第一净荷片段,所述第一净荷片段的长度与所述第一子片段的长度相同;
根据所述指纹算法计算所述第一净荷片段中第二初始块的指纹,所述第二初始块的起始位置与所述第一净荷片段的起始位置相同,所述第二初始块的长度与所述第一滑窗的长度相同;
根据所述摘要算法计算所述第一净荷片段的摘要;
如果所述第二初始块的指纹与所述第二本地重复数据库中的所述第一子片段的指纹相等,并且所述第一净荷片段的摘要与所述第一子片段的摘要相等,则删除所述第一报文中的所述第一净荷片段,生成第二报文,所述第二报文中包括第二报文头与第二净荷,所述第二报文头与所述第一报文头相同,所述第二净荷包括所述第一子片段的指纹。
3.根据权利要求2所述方法,其特征在于,所述第二净荷还包括所述第一子片段在所述第一报文中的位置信息。
4.根据权利要求1所述方法,其特征在于,所述获取所述第二片段中的第一子片段之后,所述方法还包括:
根据所述指纹算法计算所述待压缩数据中的第二子片段的第三初始块的指纹,所述第二子片段的起始位置为所述第二比特,所述第二子片段的结束位置与所述待压缩数据的结束位置相同;所述第三初始块的起始位置为所述第二比特,所述第三初始块的长度等于所述第一滑窗的长度;
根据第二滑窗获取第二子可变块中的第一检测块,所述第二滑窗的起始位置与所述第二子可变块中的第三比特对应,所述第三比特为介于第二子可变块的起始位置与所述第二子可变块的结束位置之间的比特,所述第二滑窗的长度等于所述第一滑窗的长度,所述第二子可变块的起始位置为所述第一比特,所述第二子可变块的结束位置与所述第一可变块的结束位置相同;
根据所述指纹算法计算所述第一检测块的指纹;
比较所述第三初始块的指纹与所述第一检测块的指纹;
如果所述第三初始块的指纹与所述第一检测块的指纹相同,则比较所述第二子可变块中的第三子可变块的摘要与所述第二子片段中的第三子片段的摘要,所述第三子可变块的起始位置与所述第一检测块的起始位置相同,所述第三子可变块的结束位置与所述第一可变块的结束位置相同,所述第三子片段的起始位置与所述第二子片段的起始位置相同,所述第三子片段的长度与所述第三子可变块的长度相等,所述第三子可变块的摘要为根据所述摘要算法对所述第三子可变块的摘要进行计算得到的;
如果所述第三子片段的摘要与所述第三子可变块的摘要相等,则将所述第三子片段、所述第三子片段的指纹以及所述第三子片段的摘要添加到所述第二本地重复数据库,生成第三本地重复数据库,所述第三子片段的指纹等于所述第三初始块的指纹,所述第三子片段的摘要为根据所述摘要算法对所述第三子片段的摘要进行计算得到的。
5.根据权利要求4所述方法,其特征在于,还包括:
接收第三报文,所述第三报文包括第三报文头与第三净荷,所述第三净荷包含第二净荷片段以及第三净荷片段,所述第二净荷片段的长度与所述第一子片段的长度相同,所述第三净荷片段的长度与所述第三子片段的长度相同;
根据所述指纹算法计算所述第二净荷片段中第四初始块的指纹,根据所述指纹算法计算所述第三净荷片段中第五初始块的指纹,所述第四初始块的起始位置与所述第二净荷片段的起始位置相同,所述第四初始块的长度与所述第一滑窗的长度相同,所述第五初始块的起始位置与所述第三净荷片段的起始位置相同,所述第五初始块的长度与所述第一滑窗的长度相同;
根据所述摘要算法计算所述第二净荷片段的摘要,根据所述摘要算法计算所述第三净荷片段的摘要;
如果所述第四初始块的指纹与所述第三本地重复数据库中的所述第一子片段的指纹相等,并且所述第二净荷片段的摘要与所述第一子片段的摘要相等,则删除所述第三报文中的所述第二净荷片段,如果所述第五初始块的指纹与所述第三本地重复数据库中的所述第三子片段的指纹相等,并且所述第三净荷片段的摘要与所述第三子片段的摘要相等,则删除所述第三报文中的所述第三净荷片段,生成第四报文,所述第四报文中包括第四报文头与第四净荷,所述第四报文头与所述第三报文头相同,所述第四净荷包括所述第一子片段的指纹以及所述第三子片段的指纹。
6.根据权利要求5所述方法,其特征在于,所述第四净荷还包括所述第一子片段在所述第三报文中的位置信息、所述第三子片段在所述第三报文中的位置信息。
7.根据权利要求1所述方法,其特征在于,所述方法还包括:
根据所述指纹算法计算所述第一可变块中的第四子可变块的第六初始块的指纹,所述第四子可变块的起始位置为所述第一比特,所述第四子可变块的结束位置与所述第一可变块的结束位置相同,所述第六初始块的起始位置为所述第一比特,所述第六初始块的长度等于所述第一滑窗的长度;
获取第四子片段中的第二检测块,所述第二检测块的起始位置与所述第四子片段中的第四比特对应,所述第四比特为介于第三片段的起始位置与所述第三片段的结束位置之间的比特,所述第二检测块的长度等于所述第一滑窗的长度,所述第三片段的起始位置为所述第二比特,所述第三片段的结束位置通过定界算法确定,所述第三片段为所述待压缩数据中的片段,所述第四子片段为所述第三片段中的子片段,所述第四子片段的起始位置与所述第二检测块的起始位置相同,所述第四子片段的长度与所述第四子可变块的长度相同;
根据所述指纹算法计算所述第二检测块的指纹;
比较所述第六初始块的指纹与所述第二检测块的指纹;
如果所述第六初始块的指纹与所述第二检测块的指纹相同,则比较所述第四子可变块的摘要与所述第四子片段的摘要,所述第四子可变块的摘要为根据所述摘要算法对所述第四子可变块的摘要进行计算得到的,所述第四子片段的摘要为根据所述摘要算法对所述第四子片段的摘要进行计算得到的;
如果所述第四子片段的摘要与所述第四子可变块的摘要相同,则将所述第四子片段、所述第四子片段的指纹以及所述第四子片段的摘要添加到所述第二本地重复数据库,生成第四本地重复数据库,所述第四子片段的指纹与所述第六初始块的指纹相同。
8.根据权利要求7所述方法,其特征在于,还包括:
接收第五报文,所述第五报文包括第五报文头与第五净荷,所述第五净荷包含第四净荷片段以及第五净荷片段,所述第四净荷片段的长度与所述第一子片段相同,所述第五净荷片段的长度与所述第四子片段的长度相同;
根据所述指纹算法计算所述第四净荷片段中第七初始块的指纹,根据所述指纹算法计算所述第五净荷片段中第八初始块的指纹,所述第七初始块的起始位置与所述第四净荷片段的起始位置相同,所述第七初始块的长度与所述第一滑窗的长度相同,所述第八初始块的起始位置与所述第五净荷片段的起始位置相同,所述第八初始块的长度与所述第一滑窗的长度相同;
根据所述摘要算法计算所述第四净荷片段的摘要,根据所述摘要算法计算所述第五净荷片段的摘要;
如果所述第七初始块的指纹与所述第四本地重复数据库中的所述第一子片段的指纹相等,并且所述第四净荷片段的摘要与所述第一子片段的摘要相等,则删除所述第五报文中的所述第四净荷片段,如果所述第八初始块的指纹与所述第四本地重复数据库中的所述第四子片段的指纹相等,并且所述第五净荷片段的摘要与所述第四子片段的摘要相等,则删除所述第五报文中的所述第五净荷片段,生成第六报文,所述第六报文中包括第六报文头与第六净荷,所述第六报文头与所述第五报文头相同,所述第六净荷包括所述第一子片段的指纹以及所述第四子片段的指纹。
9.根据权利要求8所述方法,其特征在于,所述第六净荷还包括所述第一子片段在所述第五报文中的位置信息、所述第四子片段在所述第五报文中的位置信息。
10.根据权利要求7所述方法,其特征在于,所述第三片段的结束位置通过定界算法确定,包括:
从所述第二比特开始向后滑动所述定界算法中的第三滑窗,并判断所述第三滑窗对应的数据是否符合所述定界算法中的定界条件,当首次出现所述第三滑窗对应的数据符合所述定界条件时,在第一距离内继续向后滑动所述第三滑窗,并判断所述第三滑窗对应的数据是否符合所述定界条件,如果出现所述第三滑窗对应的第一数据符合所述定界条件的情况时,则确定所述第一数据的结束位置为所述第三片段的结束位置,所述第三滑窗的长度与所述第一滑窗的长度相同,所述第一距离的长度与所述第一滑窗的长度相同。
11.根据权利要求1所述方法,其特征在于,还包括:将所述第一子片段的指纹以及所述第一子片段的摘要同步到压缩侧的重复数据库。
12.根据权利要求1-10任一项所述方法,其特征在于,还包括:将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要同步到解压缩侧的重复数据库。
13.根据权利要求1所述方法,其特征在于,还包括:
删除所述待压缩数据中的所述第一子片段,将所述第一子片段的指纹、所述第一子片段的长度及所述第一子片段在所述待压缩数据中的位置信息添加到第七报文的净荷中,所述待压缩数据为所述第七报文的净荷。
14.一种数据压缩设备,其特征在于,包括:
第一指纹计算单元,用于根据指纹算法计算待压缩数据中的第一片段的第一指纹,所述第一片段的起始位置与所述待压缩数据的起始位置相同,所述第一片段的长度与第一滑窗的长度相同;
查找单元,用于在第一本地重复数据库中查找所述第一指纹,所述第一本地重复数据库用于存储重复数据、所述重复数据的指纹以及所述重复数据的摘要;
重复内容获取单元,用于如果所述第一本地重复数据库中存在所述第一指纹,则根据所述第一指纹获取所述第一本地重复数据库中的第一可变块以及所述第一可变块的摘要,所述第一指纹与根据所述指纹算法计算得到的所述第一可变块中的第一初始块的指纹相同,所述第一初始块的起始位置与所述第一可变块的起始位置相同,所述第一初始块的长度与所述第一滑窗的长度相同,所述第一可变块的摘要为根据摘要算法对所述第一可变块的摘要进行计算得到的;
摘要计算单元,用于根据所述摘要算法计算所述待压缩数据中的第二片段的摘要,所述第二片段的起始位置与所述待压缩数据的起始位置相同,所述第二片段的长度与所述第一可变块的长度相同;
摘要比较单元,用于比较所述第二片段的摘要与所述第一可变块的摘要;
第一子片段获取单元,用于如果所述第二片段的摘要与所述第一可变块的摘要不同,则获取所述第二片段中的第一子片段,所述第一子片段与所述第一可变块中的第一子可变块相同,所述第一子片段的起始位置与所述第二片段的起始位置相同,所述第一子可变块的起始位置与所述第一可变块的起始位置相同,所述第二片段中的第二比特与所述第一可变块中的第一比特不同,所述第二比特为所述第二片段中所述第一子片段的下一个比特,所述第一比特为所述第一可变块中所述第一子可变块的下一个比特;
第一添加单元,用于将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要添加到所述第一本地重复数据库,生成第二本地重复数据库,所述第一子片段的指纹与所述第一指纹相同,所述第一子片段的摘要为根据所述摘要算法对所述第一子片段的摘要进行计算得到的。
15.根据权利要求14所述设备,其特征在于,还包括:
第一报文接收单元,用于接收第一报文,所述第一报文包括第一报文头与第一净荷,所述第一净荷包含第一净荷片段,所述第一净荷片段的长度与所述第一子片段的长度相同;
第二初始指纹计算单元,用于根据所述指纹算法计算所述第一净荷片段中第二初始块的指纹,所述第二初始块的起始位置与所述第一净荷片段的起始位置相同,所述第二初始块的长度与所述第一滑窗的长度相同;
第一净荷摘要计算单元,用于根据所述摘要算法计算所述第一净荷片段的摘要;
第二报文生成单元,用于如果所述第二初始块的指纹与所述第二本地重复数据库中的所述第一子片段的指纹相等,并且所述第一净荷片段的摘要与所述第一子片段的摘要相等,则删除所述第一报文中的所述第一净荷片段,生成第二报文,所述第二报文中包括第二报文头与第二净荷,所述第二报文头与所述第一报文头相同,所述第二净荷包括所述第一子片段的指纹。
16.根据权利要求15所述设备,其特征在于,所述第二净荷还包括所述第一子片段在所述第一报文中的位置信息。
17.根据权利要求14所述设备,其特征在于,所述设备还包括:
第三初始指纹计算单元,用于根据所述指纹算法计算所述待压缩数据中的第二子片段的第三初始块的指纹,所述第二子片段的起始位置为所述第二比特,所述第二子片段的结束位置与所述待压缩数据的结束位置相同;所述第三初始块的起始位置为所述第二比特,所述第三初始块的长度等于所述第一滑窗的长度;
检测块获取单元,用于根据第二滑窗获取第二子可变块中的第一检测块,所述第二滑窗的起始位置与所述第二子可变块中的第三比特对应,所述第三比特为介于第二子可变块的起始位置与所述第二子可变块的结束位置之间的比特,所述第二滑窗的长度等于所述第一滑窗的长度,所述第二子可变块的起始位置为所述第一比特,所述第二子可变块的结束位置与所述第一可变块的结束位置相同;
检测块指纹计算单元,根据所述指纹算法计算所述第一检测块的指纹;
指纹比较单元,用于比较所述第三初始块的指纹与所述第一检测块的指纹;
第三摘要比较单元,用于如果所述第三初始块的指纹与所述第一检测块的指纹相同,则比较所述第二子可变块中的第三子可变块的摘要与所述第二子片段中的第三子片段的摘要,所述第三子可变块的起始位置与所述第一检测块的起始位置相同,所述第三子可变块的结束位置与所述第一可变块的结束位置相同,所述第三子片段的起始位置与所述第二子片段的起始位置相同,所述第三子片段的长度与所述第三子可变块的长度相等,所述第三子可变块的摘要为根据所述摘要算法对所述第三子可变块的摘要进行计算得到的;
第三添加单元,用于如果所述第三子片段的摘要与所述第三子可变块的摘要相等,则将所述第三子片段、所述第三子片段的指纹以及所述第三子片段的摘要添加到所述第二本地重复数据库,生成第三本地重复数据库,所述第三子片段的指纹等于所述第三初始块的指纹,所述第三子片段的摘要为根据所述摘要算法对所述第三子片段的摘要进行计算得到的。
18.根据权利要求17所述设备,其特征在于,还包括:
第三报文接收单元,用于接收第三报文,所述第三报文包括第三报文头与第三净荷,所述第三净荷包含第二净荷片段以及第三净荷片段,所述第二净荷片段的长度与所述第一子片段的长度相同,所述第三净荷片段的长度与所述第三子片段的长度相同;
第四初始指纹计算单元,用于根据所述指纹算法计算所述第二净荷片段中第四初始块的指纹,根据所述指纹算法计算所述第三净荷片段中第五初始块的指纹,所述第四初始块的起始位置与所述第二净荷片段的起始位置相同,所述第四初始块的长度与所述第一滑窗的长度相同,所述第五初始块的起始位置与所述第三净荷片段的起始位置相同,所述第五初始块的长度与所述第一滑窗的长度相同;
第三净荷摘要计算单元,用于根据所述摘要算法计算所述第二净荷片段的摘要,根据所述摘要算法计算所述第三净荷片段的摘要;
第四报文生成单元,用于如果所述第四初始块的指纹与所述第三本地重复数据库中的所述第一子片段的指纹相等,并且所述第二净荷片段的摘要与所述第一子片段的摘要相等,则删除所述第三报文中的所述第二净荷片段,如果所述第五初始块的指纹与所述第三本地重复数据库中的所述第三子片段的指纹相等,并且所述第三净荷片段的摘要与所述第三子片段的摘要相等,则删除所述第三报文中的所述第三净荷片段,生成第四报文,所述第四报文中包括第四报文头与第四净荷,所述第四报文头与所述第三报文头相同,所述第四净荷包括所述第一子片段的指纹以及所述第三子片段的指纹。
19.根据权利要求18所述设备,其特征在于,所述第四净荷还包括所述第一子片段在所述第三报文中的位置信息、所述第三子片段在所述第三报文中的位置信息。
20.根据权利要求14所述设备,其特征在于,所述设备还包括:
初始块指纹计算单元,用于根据所述指纹算法计算所述第一可变块中的第四子可变块的第六初始块的指纹,所述第四子可变块的起始位置为所述第一比特,所述第四子可变块的结束位置与所述第一可变块的结束位置相同,所述第六初始块的起始位置为所述第一比特,所述第六初始块的长度等于所述第一滑窗的长度;
检测块获取单元,用于获取第四子片段中的第二检测块,所述第二检测块的起始位置与所述第四子片段中的第四比特对应,所述第四比特为介于第三片段的起始位置与所述第三片段的结束位置之间的比特,所述第二检测块的长度等于所述第一滑窗的长度,所述第三片段的起始位置为所述第二比特,所述第三片段的结束位置通过定界算法确定,所述第三片段为所述待压缩数据中的片段,所述第四子片段为所述第三片段中的子片段,所述第四子片段的起始位置与所述第二检测块的起始位置相同,所述第四子片段的长度与所述第四子可变块的长度相同;
检测块指纹计算单元,用于根据所述指纹算法计算所述第二检测块的指纹;
指纹比较单元,用于比较所述第六初始块的指纹与所述第二检测块的指纹;
第四摘要比较单元,用于如果所述第六初始块的指纹与所述第二检测块的指纹相同,则比较所述第四子可变块的摘要与所述第四子片段的摘要,所述第四子可变块的摘要为根据所述摘要算法对所述第四子可变块的摘要进行计算得到的,所述第四子片段的摘要为根据所述摘要算法对所述第四子片段的摘要进行计算得到的;
第四添加单元,用于如果所述第四子片段的摘要与所述第四子可变块的摘要相同,则将所述第四子片段、所述第四子片段的指纹以及所述第四子片段的摘要添加到所述第二本地重复数据库,生成第四本地重复数据库,所述第四子片段的指纹与所述第六初始块的指纹相同。
21.根据权利要求20所述设备,其特征在于,还包括:
第五报文接收单元,用于接收第五报文,所述第五报文包括第五报文头与第五净荷,所述第五净荷包含第四净荷片段以及第五净荷片段,所述第四净荷片段的长度与所述第一子片段相同,所述第五净荷片段的长度与所述第四子片段的长度相同;
第七初始指纹计算单元,用于根据所述指纹算法计算所述第四净荷片段中第七初始块的指纹,根据所述指纹算法计算所述第五净荷片段中第八初始块的指纹,所述第七初始块的起始位置与所述第四净荷片段的起始位置相同,所述第七初始块的长度与所述第一滑窗的长度相同,所述第八初始块的起始位置与所述第五净荷片段的起始位置相同,所述第八初始块的长度与所述第一滑窗的长度相同;
第五净荷摘要计算单元,用于根据所述摘要算法计算所述第四净荷片段的摘要,根据所述摘要算法计算所述第五净荷片段的摘要;
第六报文生成单元,用于如果所述第七初始块的指纹与所述第四本地重复数据库中的所述第一子片段的指纹相等,并且所述第四净荷片段的摘要与所述第一子片段的摘要相等,则删除所述第五报文中的所述第四净荷片段,如果所述第八初始块的指纹与所述第四本地重复数据库中的所述第四子片段的指纹相等,并且所述第五净荷片段的摘要与所述第四子片段的摘要相等,则删除所述第五报文中的所述第五净荷片段,生成第六报文,所述第六报文中包括第六报文头与第六净荷,所述第六报文头与所述第五报文头相同,所述第六净荷包括所述第一子片段的指纹以及所述第四子片段的指纹。
22.根据权利要求21所述设备,其特征在于,所述第六净荷还包括所述第一子片段在所述第五报文中的位置信息、所述第四子片段在所述第五报文中的位置信息。
23.根据权利要求20所述设备,其特征在于,所述检测块获取单元具体用于从所述第二比特开始向后滑动所述定界算法中的第三滑窗,并判断所述第三滑窗对应的数据是否符合所述定界算法中的定界条件,当首次出现所述第三滑窗对应的数据符合所述定界条件时,在第一距离内继续向后滑动所述第三滑窗,并判断所述第三滑窗对应的数据是否符合所述定界条件,如果出现所述第三滑窗对应的第一数据符合所述定界条件的情况时,则确定所述第一数据的结束位置为所述第三片段的结束位置,所述第三滑窗的长度与所述第一滑窗的长度相同,所述第一距离的长度与所述第一滑窗的长度相同。
24.根据权利要求14-23任一项所述设备,其特征在于,还包括:
第二同步单元,用于将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要同步到解压缩侧的重复数据库。
25.根据权利要求14所述设备,其特征在于,还包括:
压缩处理单元,用于删除所述待压缩数据中的所述第一子片段,将所述第一子片段的指纹、所述第一子片段的长度及所述第一子片段在所述待压缩数据中的位置信息添加到第七报文的净荷中,所述待压缩数据为所述第七报文的净荷。
26.一种数据解压缩设备,其特征在于,包括:
第一指纹计算单元,用于根据指纹算法计算待压缩数据中的第一片段的第一指纹,所述第一片段的起始位置与所述待压缩数据的起始位置相同,所述第一片段的长度与第一滑窗的长度相同;
查找单元,用于在第一本地重复数据库中查找所述第一指纹,所述第一本地重复数据库用于存储重复数据、所述重复数据的指纹以及所述重复数据的摘要;
重复内容获取单元,用于如果所述第一本地重复数据库中存在所述第一指纹,则根据所述第一指纹获取所述第一本地重复数据库中的第一可变块以及所述第一可变块的摘要,所述第一指纹与根据所述指纹算法计算得到的所述第一可变块中的第一初始块的指纹相同,所述第一初始块的起始位置与所述第一可变块的起始位置相同,所述第一初始块的长度与所述第一滑窗的长度相同,所述第一可变块的摘要为根据摘要算法对所述第一可变块的摘要进行计算得到的;
摘要计算单元,用于根据所述摘要算法计算所述待压缩数据中的第二片段的摘要,所述第二片段的起始位置与所述待压缩数据的起始位置相同,所述第二片段的长度与所述第一可变块的长度相同;
摘要比较单元,用于比较所述第二片段的摘要与所述第一可变块的摘要;
第一子片段获取单元,用于如果所述第二片段的摘要与所述第一可变块的摘要不同,则获取所述第二片段中的第一子片段,所述第一子片段与所述第一可变块中的第一子可变块相同,所述第一子片段的起始位置与所述第二片段的起始位置相同,所述第一子可变块的起始位置与所述第一可变块的起始位置相同,所述第二片段中的第二比特与所述第一可变块中的第一比特不同,所述第二比特为所述第二片段中所述第一子片段的下一个比特,所述第一比特为所述第一可变块中所述第一子可变块的下一个比特;
第一添加单元,用于将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要添加到所述第一本地重复数据库,生成第二本地重复数据库,所述第一子片段的指纹与所述第一指纹相同,所述第一子片段的摘要为根据所述摘要算法对所述第一子片段的摘要进行计算得到的。
27.根据权利要求26所述设备,其特征在于,还包括:
第一同步单元,用于将所述第一子片段的指纹以及所述第一子片段的摘要同步到压缩侧的重复数据库。
数据处理方法及数据处理设备\n技术领域\n[0001] 本发明涉及报文处理技术,尤其涉及一种数据处理方法及数据处理设备。\n背景技术\n[0002] 数据压缩是对报文内容进行算法处理,减小数据量,但不影响信息传递的过程。数据压缩是为了达到节约网络传送带宽、实现应用加速的目的。\n[0003] 根据CDC(Content-Defined Chunking)可变块算法生成包含可变块、可变块的指纹以及可变块的摘要的重复数据库。生成重复数据库后,如果待压缩的数据中包含了与可变块的前半部分相同并且与可变块的后半部分不同的数据片段,则数据片段的指纹与可变块的指纹匹配,则数据片段的摘要与可变块的摘要不匹配。CDC算法认为重复数据库需要进行更新,并使用定界滑窗机制生成新的可变块。新的可变块粒度可能比较大,降低了后续的待压缩数据与更新后的重复数据库发生匹配的概率。以上可能导致压缩效率下降。\n发明内容\n[0004] 本发明实施例提供一种数据处理方法及数据处理设备,用于提高数据压缩效率。\n[0005] 一方面,本发明实施例提供了一种数据处理方法,包括:\n[0006] 根据指纹算法计算待压缩数据中的第一片段的第一指纹,所述第一片段的起始位置与所述待压缩数据的起始位置相同,所述第一片段的长度与第一滑窗的长度相同;\n[0007] 在第一本地重复数据库中查找所述第一指纹,所述第一本地重复数据库用于存储重复数据、所述重复数据的指纹以及所述重复数据的摘要;\n[0008] 如果所述第一本地重复数据库中存在所述第一指纹,则根据所述第一指 纹获取所述第一本地重复数据库中的第一可变块以及所述第一可变块的摘要,所述第一指纹与根据所述指纹算法计算得到的所述第一可变块中的第一初始块的指纹相同,所述第一初始块的起始位置与所述第一可边块的起始位置相同,所述第一初始块的长度与所述第一滑窗的长度相同,所述第一可变块的摘要为根据摘要算法对所述第一可变块的摘要进行计算得到的;\n[0009] 根据所述摘要算法计算所述待压缩数据中的第二片段的摘要,所述第二片段的起始位置与所述待压缩数据的起始位置相同,所述第二片段的长度与所述第一可变块的长度相同;\n[0010] 比较所述第二片段的摘要与所述第一可变块的摘要;\n[0011] 如果所述第二片段的摘要与所述第一可变块的摘要不同,则获取所述第二片段中的第一子片段,所述第一子片段与所述第一可变块中的第一子可变块相同,所述第一子片段的起始位置与所述第二片段的起始位置相同,所述第一子可变块的起始位置与所述第一可变块的起始位置相同,所述第二片段中的第二比特与所述第一可变块中的第一比特不同,所述第二比特为所述第二片段中所述第一子片段的下一个比特,所述第一比特为所述第一可变块中所述第一子可变块的下一个比特;\n[0012] 将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要添加到所述第一本地重复数据库,生成第二本地重复数据库,所述第一子片段的指纹与所述第一指纹相同,所述第一子片段的摘要为根据所述摘要算法对所述第一子片段的摘要进行计算得到的。\n[0013] 另一方面,本发明实施例还提供了一种数据压缩设备,包括:\n[0014] 第一指纹计算单元,用于根据指纹算法计算待压缩数据中的第一片段的第一指纹,所述第一片段的起始位置与所述待压缩数据的起始位置相同,所述第一片段的长度与第一滑窗的长度相同;\n[0015] 查找单元,用于在第一本地重复数据库中查找所述第一指纹,所述第一本地重复数据库用于存储重复数据、所述重复数据的指纹以及所述重复数据的摘要;\n[0016] 重复内容获取单元,用于如果所述第一本地重复数据库中存在所述第一指 纹,则根据所述第一指纹获取所述第一本地重复数据库中的第一可变块以及所述第一可变块的摘要,所述第一指纹与根据所述指纹算法计算得到的所述第一可变块中的第一初始块的指纹相同,所述第一初始块的起始位置与所述第一可边块的起始位置相同,所述第一初始块的长度与所述第一滑窗的长度相同,所述第一可变块的摘要为根据摘要算法对所述第一可变块的摘要进行计算得到的;\n[0017] 摘要计算单元,用于根据所述摘要算法计算所述待压缩数据中的第二片段的摘要,所述第二片段的起始位置与所述待压缩数据的起始位置相同,所述第二片段的长度与所述第一可变块的长度相同;\n[0018] 摘要比较单元,用于比较所述第二片段的摘要与所述第一可变块的摘要;第一子片段获取单元,用于如果所述第二片段的摘要与所述第一可变块的摘要不同,则获取所述第二片段中的第一子片段,所述第一子片段与所述第一可变块中的第一子可变块相同,所述第一子片段的起始位置与所述第二片段的起始位置相同,所述第一子可变块的起始位置与所述第一可变块的起始位置相同,所述第二片段中的第二比特与所述第一可变块中的第一比特不同,所述第二比特为所述第二片段中所述第一子片段的下一个比特,所述第一比特为所述第一可变块中所述第一子可变块的下一个比特;\n[0019] 第一添加单元,用于将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要添加到所述第一本地重复数据库,生成第二本地重复数据库,所述第一子片段的指纹与所述第一指纹相同,所述第一子片段的摘要为根据所述摘要算法对所述第一子片段的摘要进行计算得到的。\n[0020] 又一方面,本发明实施例还提供了一种数据解压缩设备,包括:\n[0021] 第一指纹计算单元,用于根据指纹算法计算待压缩数据中的第一片段的第一指纹,所述第一片段的起始位置与所述待压缩数据的起始位置相同,所述第一片段的长度与第一滑窗的长度相同;\n[0022] 查找单元,用于在第一本地重复数据库中查找所述第一指纹,所述第一本地重复数据库用于存储重复数据、所述重复数据的指纹以及所述重复数据的摘要;\n[0023] 重复内容获取单元,用于如果所述第一本地重复数据库中存在所述第一指纹,则根据所述第一指纹获取所述第一本地重复数据库中的第一可变块以及所述第一可变块的摘要,所述第一指纹与根据所述指纹算法计算得到的所述第一可变块中的第一初始块的指纹相同,所述第一初始块的起始位置与所述第一可边块的起始位置相同,所述第一初始块的长度与所述第一滑窗的长度相同,所述第一可变块的摘要为根据摘要算法对所述第一可变块的摘要进行计算得到的;\n[0024] 摘要计算单元,用于根据所述摘要算法计算所述待压缩数据中的第二片段的摘要,所述第二片段的起始位置与所述待压缩数据的起始位置相同,所述第二片段的长度与所述第一可变块的长度相同;\n[0025] 摘要比较单元,用于比较所述第二片段的摘要与所述第一可变块的摘要;第一子片段获取单元,用于如果所述第二片段的摘要与所述第一可变块的摘要不同,则获取所述第二片段中的第一子片段,所述第一子片段与所述第一可变块中的第一子可变块相同,所述第一子片段的起始位置与所述第二片段的起始位置相同,所述第一子可变块的起始位置与所述第一可变块的起始位置相同,所述第二片段中的第二比特与所述第一可变块中的第一比特不同,所述第二比特为所述第二片段中所述第一子片段的下一个比特,所述第一比特为所述第一可变块中所述第一子可变块的下一个比特;\n[0026] 第一添加单元,用于将所述第一子片段、所述第一子片段的指纹以及所述第一子片段的摘要添加到所述第一本地重复数据库,生成第二本地重复数据库,所述第一子片段的指纹与所述第一指纹相同,所述第一子片段的摘要为根据所述摘要算法对所述第一子片段的摘要进行计算得到的。\n[0027] 根据本发明实施例提供的技术方案,如果待压缩的数据中包含了与重复数据库中的可变块的前半部分相同并且与可变块的后半部分不同的数据片段,则能够生成粒度小于发生匹配的可变块的新的可变块,并将新的可变块添加到重复数据库。新的可变块粒度较小,提高了后续的待压缩数据与更新后的重复数据库发生匹配的概率,进而提高了压缩的效率。\n附图说明\n[0028] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0029] 图1为本发明实施例提供的一种数据处理方法的流程图;\n[0030] 图2为本发明实施例提供的数据处理方法的一种应用场景的示意图;\n[0031] 图3为本发明实施例提供的数据处理方法的另一种应用场景的示意图;\n[0032] 图4为本发明实施例提供的一种数据处理方法的一个具体实现方式的示意图;\n[0033] 图5为本发明实施例提供的另一种数据处理方法的流程图;\n[0034] 图6为本发明实施例提供的一种数据处理方法中压缩后报文的封装格式示意图;\n[0035] 图7为本发明实施例提供的一种数据处理方法应用到数据压缩侧设备的示意图;\n[0036] 图8为本发明实施例提供的数据压缩设备的结构示意图;\n[0037] 图9为本发明实施例提供的数据压缩设备的一种应用场景的组网结构图;\n[0038] 图10为本发明实施例提供的数据压缩设备的另一种应用场景的组网结构图。\n具体实施方式\n[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0040] 数据压缩技术包括两种:一种是通过无损压缩算法在发送端压缩数据,在接收端进行数据解压;另一种是基于DRE(Data Redundancy Elimination,数据冗余删除)技术,也称为重复数据删除(De-duplication),将需要传送 的数据中的重复内容消除后用特殊的ID代替,只传递增量信息,从而减小数据量,实现数据压缩目的。\n[0041] DRE技术一般应用于WOC(WAN Optimization Controller,广域网优化控制器),以减少需要WAN传送的数据量,相当于增加WAN带宽,节约了宝贵的WAN资源。WOC是一种应用加速设备。在WOC设备的DRE实现中,处理的对象可以是基于IP报文,也可以是基于一条会话(即同一会话的多个连续IP报文)。基于IP报文的处理实现简单,不需要缓存报文,性能较高,但是由于重复数据可能包含在多个报文中,导致不容易将重复数据进行识别和缓存。另外,将多个报文组合起来进行算法压缩时,由于不同包的类型不同(如不同协议,或不同格式),难以得到较高的压缩比。基于会话的处理则需要将一个会话的多个包进行缓存,在线处理时性能存在一定限制,但是可以最大限度地识别出重复数据,并且同一会话一般属于同一类型,进行算法压缩时能得到更高的压缩比。\n[0042] DRE实现的过程包括:压缩设备的本地DRE模块分析报文,判断和确定相应数据块;将确定的数据块与重复数据库中的已存数据块比较,如果查找到同样的块存在,则表示之前传输过该数据块(即为重复数据),此时在报文中用指纹代替该数据块;没有找到的数据块被加入重复数据库中;可选地,对去冗余后的报文进一步进行压缩;远端设备的DRE模块解压(可选)后将指纹替换为原数据块,之后传送报文给用户;本地DRE模块与远端DRE模块需要进行数据块及指纹的同步。\n[0043] DRE技术基于二进制数据进行删重处理,不需要感知上层的具体协议类型。其关键点是进行重复数据的识别和替换,即对内容完全相同的重复数据进行识别,并建立重复数据库(包括缓存重复数据和建立查找指纹),当后续传送的数据存在已缓存的内容(即重复数据)时,则用指纹代替。由于需要建立重复数据库缓存(cache)已有数据,因此DRE技术也称为字节缓存(Byte cache)技术。\n[0044] 而重复数据的识别和替换是基于数据块实现的,数据块的识别算法包括FSP(Fixed-Sized Partition,固定块)、CDC以及SB(Sliding Block,滑动块)。\n[0045] 其中,CDC算法采用一个滑动窗口(以下简称滑窗)对待压缩的数据进 行块定界,滑窗从数据开始按字节向后移动,并采用特定的哈希(HASH)算法(如rabin HASH、ELF HASH等)计算出滑窗的指纹信息。当计算出的指纹满足一定条件(如对特定值取模结果为某设定值),则认为找到数据块边界,然后向后滑动滑窗,再次计算滑窗的指纹信息,当计算条件成立,则找到下一数据块的边界,由此可以将整个数据划分成大小可变的多个数据块。\n[0046] 当确定数据块之后,采用特定的算法(SHA-1、MD5等,这些算法能对大量数据进行信息提取,形成固定长度的字段,由于算法的特定,不同的原始数据计算结果相同的概率非常低,可以忽略不计)来对数据块的内容进行计算,并将计算结果作为指纹查找本地的重复数据库,如果存在则表明已有相同内容的数据块存在,当前数据块为重复数据块,如果指纹不存在,则将当前数据块的指纹及块内容加入缓存(重复数据库),以备下次检查。\n[0047] CDC算法的块定界算法可能因为计算条件总是不满足导致块过大,具体实现上可以对块的大小设定上下限,当满足上下限条件时强制分块。CDC算法的优点是对数据内容的变化不敏感,当插入或删除数据时只会影响到该变化数据相关的少量的数据块,而其它块不受影响。\n[0048] 图1为本发明实施例提供的一种数据处理方法的流程图。如图1所示,数据处理方法包括:\n[0049] 11、根据指纹算法计算待压缩数据中的第一片段的第一指纹,该第一片段的起始位置与该待压缩数据的起始位置相同,该第一片段的长度与第一滑窗的长度相同。\n[0050] 其中,第一滑窗为现有的滑窗,用于对数据块进行定界。\n[0051] 12、在第一本地重复数据库中查找该第一指纹,该第一本地重复数据库用于存储重复数据、该重复数据的指纹以及该重复数据的摘要。\n[0052] 13、如果该第一本地重复数据库中存在该第一指纹,则根据该第一指纹获取该第一本地重复数据库中的第一可变块以及该第一可变块的摘要,该第一指纹与根据该指纹算法计算得到的该第一可变块中的第一初始块的指纹相同,该第一初始块的起始位置与该第一可边块的起始位置相同,该第一初始块的长度与该第一滑窗的长度相同,该第一可变块的摘要为根据摘要算法对该第一可变块的摘要进行计算得到的。\n[0053] 14、根据该摘要算法计算该待压缩数据中的第二片段的摘要,该第二片段的起始位置与该待压缩数据的起始位置相同,该第二片段的长度与该第一可变块的长度相同。\n[0054] 其中,第二片段为现有CDC算法中进行匹配压缩处理的基本单元--数据块。\n[0055] 15、比较该第二片段的摘要与该第一可变块的摘要。\n[0056] 16、如果该第二片段的摘要与该第一可变块的摘要不同,则获取该第二片段中的第一子片段,该第一子片段与该第一可变块中的第一子可变块相同,该第一子片段的起始位置与该第二片段的起始位置相同,该第一子可变块的起始位置与该第一可变块的起始位置相同,该第二片段中的第二比特与该第一可变块中的第一比特不同,该第二比特为该第二片段中该第一子片段的下一个比特,该第一比特为该第一可变块中该第一子可变块的下一个比特。\n[0057] 17、将该第一子片段、该第一子片段的指纹以及该第一子片段的摘要添加到该第一本地重复数据库,生成第二本地重复数据库,该第一子片段的指纹与该第一指纹相同,该第一子片段的摘要为根据该摘要算法对该第一子片段的摘要进行计算得到的。\n[0058] 根据本发明实施例提供的技术方案,如果待压缩的数据中包含了与重复数据库中的可变块的前半部分相同并且与可变块的后半部分不同的数据片段,则能够生成粒度小于发生匹配的可变块的新的可变块,并将新的可变块添加到重复数据库。新的可变块粒度较小,提高了后续的待压缩数据与更新后的重复数据库发生匹配的概率,进而提高了压缩的效率。\n[0059] 上述11至17可由压缩侧设备执行,也可由解压缩设备执行。如压缩侧设备接收到一待去冗余的报文,该报文包括报文头及净荷,净荷为待压缩数据,压缩侧设备按照上述\n11至17对净荷进行处理。或者如解压缩侧设备接收到一去冗余后的报文,同样的,该去冗余后的报文包含报文头及净荷,只不过该净荷为压缩侧设备压缩后的数据,即部分数据已被替换为指纹,此时,解压缩侧设备处理的待压缩数据即净荷中其余未被替换的原始数据。\n[0060] 当上述方法由压缩侧设备实现时,本发明实施例提供的数据处理方法还可以包括:\n[0061] 接收第一报文,该第一报文包括第一报文头与第一净荷,该第一净荷包含第一净荷片段,该第一净荷片段的长度与该第一子片段的长度相同;\n[0062] 根据该指纹算法计算该第一净荷片段中第二初始块的指纹,该第二初始块的起始位置与该第一净荷片段的起始位置相同,该第二初始块的长度与该第一滑窗的长度相同;\n[0063] 根据该摘要算法计算该第一净荷片段的摘要;\n[0064] 如果该第二初始块的指纹与该第二本地重复数据库中的该第一子片段的指纹相等,并且该第一净荷片段的摘要与该第一子片段的摘要相等,则删除该第一报文中的该第一净荷片段,生成第二报文,该第二报文中包括第二报文头与第二净荷,该第二报文头与该第一报文头相同,该第二净荷包括该第一子片段的指纹。这样,解压缩侧设备可以根据指纹从重复数据库中找到对应的第一子片段,将指纹替换为第一子片段,将报文中的数据恢复为原始数据,实现数据的解压缩。\n[0065] 可选地,该第二净荷还包括该第一子片段在该第一报文中的位置信息。\n[0066] 当替换第一子片段的指纹未放置在第一子片段在第一报文中的原始位置时,解压缩侧设备对第二报文执行解压缩操作时,解压缩侧设备可以根据该第二净荷中包括的该第一子片段在该第一报文中的位置信息,确定第一子片段在第一报文中的原始位置,进而还原出第一报文。第一子片段在第一报文中的位置信息可以是第一子片段的最高比特相对于第一报文的报文头的最高比特的偏移量。\n[0067] 该获取该第二片段中的第一子片段之后,本发明实施例提供的数据处理方法还可以包括:\n[0068] 根据该指纹算法计算该待压缩数据中的第二子片段的第三初始块的指纹,该第二子片段的起始位置为该第二比特,该第二子片段的结束位置与该待压缩数据的结束位置相同;该第三初始块的起始位置为该第二比特,该第三初始块的长度等于该第一滑窗的长度;\n[0069] 根据第二滑窗获取第二子可变块中的第一检测块,该第二滑窗的起始位置与该第二子可变块中的第三比特对应,该第三比特为介于第二子可变块的 起始位置与该第二子可变块的结束位置之间的比特,该第二滑窗的长度等于该第一滑窗的长度,该第二子可变块的起始位置为该第一比特,该第二子可变块的结束位置与该第一可变块的结束位置相同;第二滑窗可定义为内容滑窗,专用于判断重复数据库中是否存在对应的数据块。其计算指纹的方法可与现有的滑窗相同,只是现有技术中滑窗仅用于定界。\n[0070] 根据该指纹算法计算该第一检测块的指纹;\n[0071] 比较该第三初始块的指纹与该第一检测块的指纹;\n[0072] 如果该第三初始块的指纹与该第一检测块的指纹相同,则比较该第二子可变块中的第三子可变块的摘要与该第二子片段中的第三子片段的摘要,该第三子可变块的起始位置与该第一检测块的起始位置相同,该第三子可变块的结束位置与该第一可变块的结束位置相同,该第三子片段的起始位置与该第二子片段的起始位置相同,该第三子片段的长度与该第三子可变块的长度相等,该第三子可变块的摘要为根据该摘要算法对该第三子可变块的摘要进行计算得到的;\n[0073] 如果该第三子片段的摘要与该第三子可变块的摘要相等,则将该第三子片段、该第三子片段的指纹以及该第三子片段的摘要添加到该第二本地重复数据库,生成第三本地重复数据库,该第三子片段的指纹等于该第三初始块的指纹,该第三子片段的摘要为根据该摘要算法对该第三子片段的摘要进行计算得到的。\n[0074] 在该第三子片段的摘要与该第三子可变块的摘要相等,并将该第三子片段、该第三子片段的指纹以及该第三子片段的摘要添加到该第二本地重复数据库的场景下,本发明实施例提供的数据处理方法还可以包括:\n[0075] 接收第三报文,该第三报文包括第三报文头与第三净荷,该第三净荷包含第二净荷片段以及第三净荷片段,该第二净荷片段的长度与该第一子片段的长度相同,该第三净荷片段的长度与该第三子片段的长度相同;\n[0076] 根据该指纹算法计算该第二净荷片段中第四初始块的指纹,根据该指纹算法计算该第三净荷片段中第五初始块的指纹,该第四初始块的起始位置与该第二净荷片段的起始位置相同,该第四初始块的长度与该第一滑窗的长度相同,该第五初始块的起始位置与该第三净荷片段的起始位置相同,该第五 初始块的长度与该第一滑窗的长度相同;\n[0077] 根据该摘要算法计算该第二净荷片段的摘要,根据该摘要算法计算该第三净荷片段的摘要;\n[0078] 如果该第四初始块的指纹与该第三本地重复数据库中的该第一子片段的指纹相等,并且该第二净荷片段的摘要与该第一子片段的摘要相等,则删除该第三报文中的该第二净荷片段,如果该第五初始块的指纹与该第三本地重复数据库中的该第三子片段的指纹相等,并且该第三净荷片段的摘要与该第三子片段的摘要相等,则删除该第三报文中的该第三净荷片段,生成第四报文,该第四报文中包括第四报文头与第四净荷,该第四报文头与该第三报文头相同,该第四净荷包括该第一子片段的指纹以及该第三子片段的指纹。\n[0079] 可选地,该第四净荷还包括该第一子片段在该第三报文中的位置信息、该第三子片段在该第三报文中的位置信息。\n[0080] 其中,第三子片段与第一子片段类似,为小于第二片段粒度的数据块,这样可以进一步提高数据压缩效率。第一子片段在第三报文中的位置信息可以是第一子片段的最高比特相对于第三报文的报文头的最高比特的偏移量。\n[0081] 如图2所示,待压缩数据块A’与重复数据库中对应的数据块A的摘要不同,可以理解为上次发送的数据块A经过修改后变为数据块A’,并进行再次发送。其中,待压缩数据块A’即上述第二片段,重复数据库中对应的数据块A即上述第一可变块。这样,上次发送数据时在重复数据库中保存的数据块A与当前发送的数据中的数据块A’相对应,具体地,当滑窗滑动到数据块A’时,计算指纹,若重复数据库中有相同的指纹,则表示重复数据库中存在有对应的数据块,这里对应的数据块为A。由于此时不知道数据块A’的长度,假定数据块A’的长度与数据块A相同,计算数据块A’的摘要,并与数据块A的摘要比较。显然,数据块A’的摘要与数据块A的摘要不同,因为数据块A与数据块A’的内容不同。\n[0082] 之后再找到数据块A’中与数据块A相同的部分,以及不同的部分,进行进一步地压缩处理。\n[0083] 具体地,逐字节比较数据块A’与数据块A,当重复数据库中对应的数据块A到第二拆分点,待压缩数据块A’到第一拆分点时,二者比较结果是 不一致,此时,将滑窗滑动到第一拆分点处计算指纹,重复数据库中,将滑窗滑动到第二拆分点处计算指纹,与第一拆分点处的指纹进行比较,不一致时,继续向后滑动滑窗,计算第二拆分点后的指纹,并继续与第一拆分点处的指纹进行比较,不一致时,继续向后滑动滑窗,直至计算出的指纹与第一拆分点处的指纹一致,或直至滑窗滑至数据块A的结束边界。本实施例中,数据块A的第三拆分点处的指纹与待压缩数据块A’的第一拆分点处的指纹一致。当数据块A的第三拆分点处的指纹与待压缩数据块A’的第一拆分点处的指纹一致时,利用HASH表项中的块长度及第三拆分点到边界的长度计算出待压缩数据块A’中第一拆分点到边界的长度,然后计算第一拆分点至边界的摘要,并计算重复数据库中数据块A的第三拆分点至边界的摘要,将计算出的两个摘要进行比较,当不一致时,按照前述操作比较第三拆分点后字节与第一拆分点后的字节,直至计算出的指纹与第一拆分点处的指纹一致,或直至滑窗滑至数据块A的结束边界;当一致时,待压缩数据块A’用第一拆分点拆分为两个子数据块A1、A2,重复数据库中的数据块A被第二拆分点、第三拆分点拆分为三个子数据块A1、A2、A3,可以看出,本次发送的数据块A’与上次发送的数据块A相比删除了子数据块A2,其余两个子数据块A1、A3不变,这样,可以用指纹替换A1或者A3,实现对数据的精确压缩,提高数据压缩效率。其中,待压缩数据块A’中的子数据块A1即上述第一子片段,待压缩数据块A’中的子数据块A3即上述第三子片段。重复数据库中的子数据块A1即上述第一子可变块,重复数据库中的子数据块A3的初始块,也就是从重复数据库中的子数据块A3的第一个比特开始长度为第一滑窗长度的数据块,即上述第二子可变块中的第一检测块。\n[0084] 替换A1或者A3也可以用其他方法实现。举例来说,可以用指纹、块长度及偏移值替换A1或者A3。\n[0085] 可选地,本发明实施例提供的数据处理方法还可以包括:\n[0086] 根据该指纹算法计算该第一可变块中的第四子可变块的第六初始块的指纹,该第四子可变块的起始位置为该第一比特,该第四子可变块的结束位置与该第一可变块的结束位置相同,该第六初始块的起始位置为该第一比特,该第六初始块的长度等于该第一滑窗的长度;\n[0087] 获取第四子片段中的第二检测块,该第二检测块的起始位置与该第四子片段中的第四比特对应,该第四比特为介于第三片段的起始位置与该第三片段的结束位置之间的比特,该第二检测块的长度等于该第一滑窗的长度,该第三片段的起始位置为该第二比特,该第三片段的结束位置通过定界算法确定,该第三片段为该待压缩数据中的片段,该第四子片段为该第三片段中的子片段,该第四子片段的起始位置与该第二检测块的起始位置相同,该第四子片段的长度与该第四子可变块的长度相同;\n[0088] 根据该指纹算法计算该第二检测块的指纹;\n[0089] 比较该第六初始块的指纹与该第二检测块的指纹;\n[0090] 如果该第六初始块的指纹与该第二检测块的指纹相同,则比较该第四子可变块的摘要与该第四子片段的摘要,该第四子可变块的摘要为根据该摘要算法对该第四子可变块的摘要进行计算得到的,该第四子片段的摘要为根据该摘要算法对该第四子片段的摘要进行计算得到的;\n[0091] 如果该第四子片段的摘要与该第四子可变块的摘要相同,则将该第四子片段、该第四子片段的指纹以及该第四子片段的摘要添加到该第二本地重复数据库,生成第四本地重复数据库,该第四子片段的指纹与该第六初始块的指纹相同。\n[0092] 可选地,在该第四子片段的摘要与该第四子可变块的摘要相同,将该第四子片段、该第四子片段的指纹以及该第四子片段的摘要添加到该第二本地重复数据库的场景下,本发明实施例提供的数据处理方法还可以包括:\n[0093] 接收第五报文,该第五报文包括第五报文头与第五净荷,该第五净荷包含第四净荷片度以及第五净荷片段,该第四净荷片度的长度与该第一子片段相同,该第五净荷片段的长度与该第四子片段的长度相同;\n[0094] 根据该指纹算法计算该第四净荷片段中第七初始块的指纹,根据该指纹算法计算该第五净荷片段中第八初始块的指纹,该第七初始块的起始位置与该第四净荷片段的起始位置相同,该第七初始块的长度与该第一滑窗的长度相同,该第八初始块的起始位置与该第五净荷片段的起始位置相同,该第八初始块的长度与该第一滑窗的长度相同;\n[0095] 根据该摘要算法计算该第四净荷片段的摘要,根据该摘要算法计算该第五净荷片段的摘要;\n[0096] 如果该第七初始块的指纹与该第四本地重复数据库中的该第一子片段的指纹相等,并且该第四净荷片段的摘要与该第一子片段的摘要相等,则删除该第五报文中的该第四净荷片段,如果该第八初始块的指纹与该第四本地重复数据库中的该第四子片段的指纹相等,并且该第五净荷片段的摘要与该第四子片段的摘要相等,则删除该第五报文中的该第五净荷片段,生成第六报文,该第六报文中包括第六报文头与第六净荷,该第六报文头与该第五报文头相同,该第六净荷包括该第一子片段的指纹以及该第四子片段的指纹。\n[0097] 可选地,该第六净荷还包括该第一子片段在该第五报文中的位置信息、该第四子片段在该第五报文中的位置信息。\n[0098] 其中,第四子片段与第一子片段类似,为小于第二片段粒度的数据块,可以进一步提高数据压缩效率。第一子片段在第五报文中的位置信息可以是第一子片段的最高比特相对于第五报文的报文头的最高比特的偏移量。\n[0099] 可选地,本发明实施例提供的数据处理方法还可以包括:\n[0100] 该第三片段的结束位置通过定界算法确定,包括:\n[0101] 从该第二比特开始向后滑动该定界算法中的第三滑窗,并判断该第三滑窗对应的数据是否符合该定界算法中的定界条件,当首次出现该第三滑窗对应的数据符合该定界条件时,在第一距离内继续向后滑动该第三滑窗,并判断该第三滑窗对应的数据是否符合该定界条件,如果出现该第三滑窗对应的第一数据符合该定界条件的情况时,则确定该第一数据的结束位置为该第三片段的结束位置,该第三滑窗的长度与该第一滑窗的长度相同,该第一距离的长度与该第一滑窗的长度相同。\n[0102] 如图3所示,待压缩数据块所属的上级数据块A’与重复数据块中对应的数据块A的摘要内容不同,可以理解为上次发送的数据块A经过修改后变为数据块A’,并进行再次发送,这样,上次发送数据时在重复数据库中保存的数据块A与当前发送的数据中的数据块A’相对应,具体地,当滑窗滑动到数据块A’时,计算指纹,若重复数据库中有相同的指纹,则表示重复数据库中存在有对应的数据块,这里对应的数据块为A。\n[0103] 其中,待压缩数据块所属的上级数据块A’可通过滑窗定界来确定。\n[0104] 计算数据块A’的摘要,并与数据块A的摘要比较。显然,数据块A’的摘要与数据块A的摘要不同,因为数据块A与数据块A’的内容不同。\n[0105] 之后再找到数据块A’中与数据块A相同的部分,以及不同的部分,进行进一步地压缩处理。\n[0106] 具体地,逐字节比较数据块A’与数据块A,当重复数据库中对应的数据块A到第二拆分点,待压缩数据块A’到第一拆分点时,二者比较结果是不一致。此时,将滑窗滑动到第二拆分点处计算指纹,上级数据块A’中,将滑窗滑动到第一拆分点处计算指纹,与第二拆分点处的指纹进行比较,不一致时,继续向后滑动滑窗,计算第一拆分点后的指纹,并继续与第二拆分点处的指纹进行比较,不一致时,继续向后滑动滑窗,直至计算出的指纹与第二拆分点处的指纹一致,或直至滑窗滑至数据块A’的结束边界。\n[0107] 本实施例中,数据块A’的第四拆分点处的指纹与重复数据库中数据块A的第二拆分点处的指纹一致。\n[0108] 当数据块A’的第四拆分点处的指纹与数据块A的第二拆分点处的指纹一致时,计算第四拆分点至边界的摘要,并计算重复数据库中数据块A的第二拆分点至边界的摘要,将计算出的两个摘要进行比较,当不一致时,按照前述操作比较第四拆分点后的字节与第一拆分点后的字节,直至计算出的指纹与第二拆分点处的指纹一致,或直至滑窗滑至数据块A’的结束边界;当一致时,上级数据块A’被第一拆分点、第四拆分点拆分为三个子数据块A1、A3、A2,重复数据库中的数据块A被第二拆分点拆分为两个子数据块A1、A2,可以看出,本次发送的数据块A’与上次发送的数据块A相比增加了子数据块A3,其余两个子数据块A1、A2不变,这样,可以用指纹替换A1或者A2,实现对数据的精确压缩,提高数据压缩效率。其中,待压缩数据块A’中的子数据块A2即上述第四子片段。待压缩数据块A’中的子数据块A2的初始块,也就是从待压缩数据块A’中的子数据块A2的第一比特开始长度为第一滑窗长度的数据块,即上述第四子片段中的第一检测块。\n[0109] 替换A1或者A2可以通过其他方法实现。举例来说,可以用指纹、块长度及偏移值替换A1或者A2。\n[0110] 当图1所示实施例的方法由解压缩侧设备实现时,本发明实施例提供的数据处理方法还可包括:将该第一子片段的指纹以及该第一子片段的摘要同步到压缩侧的重复数据库。压缩侧的重复数据库被同步后,压缩侧设备可使用已有的CDC算法对报文进行删重处理即对报文中的数据进行压缩处理,这样,当报文中包含第一子片段时,就会被删除,从而进一步提高了数据压缩效率。\n[0111] 当图1所示实施例的方法由压缩侧设备实现时,本发明实施例提供的数据处理方法还可包括:将该第一子片段、该第一子片段的指纹以及该第一子片段的摘要同步到解压缩侧的重复数据库。这样,当后续报文中的第一子片段被删除后,解压缩侧设备就能够利用重复数据库中保存的第一子片段对压缩数据进行恢复,实现解压缩。\n[0112] 可选地,当压缩侧和解压缩侧的重复数据库均包含有重复数据的内容,且数据处理方法由压缩侧设备实现时,本发明实施例提供的数据处理方法还可以包括:\n[0113] 删除该待压缩数据中的该第一子片段,将该第一子片段的指纹、该第一子片段的长度及该第一子片段在该待压缩数据中的位置信息添加到第七报文的净荷中,该待压缩数据为该第七报文的净荷。\n[0114] 第一子片段在待压缩数据中的位置信息可以是第一子片段的最高比特相对于待压缩数据的最高比特的偏移量。即,压缩侧设备在接收到该待压缩数据所在报文后,不仅能够匹配出第一子片段,在本地重复数据库中创建第一子片段,还能够对该待压缩数据进行压缩处理,删除第一子片段。其中,在去冗余报文中增加第一子片段的长度,是由于解压缩侧的重复数据库中已有第二片段,当去冗余报文发送到解压缩侧设备时,解压缩侧设备根据其中的第一子片段的指纹找到对应的第二片段,利用第一子片段的长度及第一子片段在该待压缩数据中的位置即第一子片段在压缩前报文中的原始位置,在第二片段中找到第一子片段,并对去冗余报文进行恢复,实现解压缩。\n[0115] 上述第三片段的结束位置通过定界算法确定,可包括:\n[0116] 从该第二比特开始向后滑动该定界算法中的第三滑窗,并判断该第三滑窗对应的数据是否符合该定界算法中的定界条件,当首次出现该第三滑窗对 应的数据符合该定界条件时,在第一距离内继续向后滑动该第三滑窗,并判断该第三滑窗对应的数据是否符合该定界条件,如果出现该第三滑窗对应的第一数据符合该定界条件的情况时,则确定该第一数据的结束位置为该第三片段的结束位置,该第三滑窗的长度与该第一滑窗的长度相同,该第一距离的长度与该第一滑窗的长度相同。\n[0117] 关于定界算法,可以参考CDC算法中的定界算法,此处不再赘述。\n[0118] 具体地,从上述第二比特开始向后滑动第三滑窗,判断第三滑窗对应的数据的指纹是否满足定界算法中的定界条件。\n[0119] 当首次出现第三滑窗对应的数据符合定界条件时,继续向后滑动第三滑窗。首次出现是指第一次出现第三滑窗对应的数据符合定界条件。第三滑窗的长度等于第一滑窗的长度。举例来说,第三滑窗的长度可以是64字节。定界算法中,第三滑窗向后滑动时,每次滑动的距离可以是1字节。\n[0120] 在第一距离内继续向后滑动第三滑窗,并判断第三滑窗对应的数据是否符合定界条件。如果在第一距离内多次出现第三滑窗对应的第一数据符合定界条件,则可以确定最后一次出现的第一数据为真正的边界。也就是说,可以确定最后一次出现的第一数据的结束位置为第三片段的结束位置。\n[0121] 图4为本发明实施例提供的一种数据压缩方法的一个具体实现方式的示意图。\n[0122] 如图4所示,根据CDC算法的定界原理分成三块的报文数据,其中,中间大块表示根据优化算法分成了三个子块。\n[0123] 假设该报文数据发送了三次,第一次发送时,子块3356B、4505B、4520B及2988B作为一个数据块发送,并被保存在重复数据库中。\n[0124] 第二次发送时,将该数据块拆分第一子块3356B及第二子块,第二子块由子块\n4505B、4520B与2988B组成。并且重复数据库中分别保存了第一子块3356B及第二子块。\n[0125] 第三次发送时,第一子块3356B成为数据块3356B,第二子块中删除了子块4520B,子块4505B及2988B作为一个数据块假设为数据块C。则在本次发送进行压缩处理时,需要将数据块C拆分为子块4505B及子块2988B。\n[0126] 具体地,当第三次发送数据时,以压缩数据块6788B、数据块3356B、数据块C及数据块4800B为例进行说明。\n[0127] 对图4中的数据块6788B、数据块3356B、数据块C及数据块4800B执行压缩操作,可以采用图5所示的数据处理方法。图5为本发明实施例提供的另一种数据处理方法的流程图。该数据处理方法包括:\n[0128] 51、滑动滑窗,计算指纹;这里的滑窗即内容滑窗,实现上内容滑动窗口可以与定界滑窗(即现有技术中的滑窗)合一,即对同样长度的数据进行HASH计算得到指纹,只是内容滑窗将指纹应用于判别数据块的内容是否发生变化,而定界滑窗将指纹应用于数据块定界。\n[0129] 52、判断是否存在HASH表项。具体地,用内容滑窗计算得到的指纹作为查找关键字(KEY)查找重复数据库,判断重复数据库是否存在HASH表项,该HASH表项包含有上述51计算得到的指纹。\n[0130] 若不存在HASH表项,说明指纹对应的数据块为本次新增加的内容,执行531,将新增加内容添加到重复数据库中。\n[0131] 若存在HASH表项,说明指纹对应的数据块曾经被保存到重复数据库中,则执行\n541,取HASH表项中的块信息,根据HASH表项中所保存的块信息(关键信息是块长度、SHA-1/MD5算法得到的数据即摘要(checksum))来与当前数据进行比较。当然,块信息还可以包含该数据块的原始数据内容。\n[0132] 531、判断计算出的指纹是否满足定界条件。采用CDC算法中类似的滑动窗口(称为定界滑窗)进行块定界,定界方法相同,即计算出指纹,并根据指纹判断是否满足定界条件,如果满足则确定找到数据的边界。\n[0133] 此处对CDC算法的定界过程有一点优化,因为有可能本数据块的内容发生了变化,该内容导致定界条件提前成立,而变化内容被计算到下一数据块中,结果可能导致下一块不能被判定为重复数据(实际上这部分确实为重复数据),因引考虑第一次满足条件的界为伪界,此时再向后滑动一部分距离(可称为数据扰动),如果再次发现定界条件满足,则认为后一次为真正的界(可以称为确界,前一次称为伪界),否则前一次就是真正的界(确界)。\n[0134] 532、最大界检查。通常数据块的长度有范围限制,可预先设定一个上限, 如最长不能超过64Kbyte(字节)。这里判断经过上述531确定的数据块的长度是否超过上限,若超过该上限,则以该上限作为数据块的长度,强制距离上述51滑窗字节为该上限的字节处定一个界,重新划定数据块,然后执行534;若531确定的数据块的长度未超过该上限,则执行532。\n[0135] 533、最小界检查。参见上述532,通常不仅预设一个上限来限定数据块可具有的最长的长度,还会预先设定一个下限来限定数据块可具有的最短的长度,如最短不能短于64字节。小于下限的情况作为零碎数据不压缩,这是为了防止数据库的数据块太零碎,占用系统资源,使得压缩过程没有意义,假如一个字节就是一个块,这是没有意义的,反而更加浪费系统资源。\n[0136] 若531确定的数据块的长度大于该下限,则执行534;若531确定的数据块的长度小于该下限,执行57;\n[0137] 534、确定可变块,计算摘要,然后执行56;\n[0138] 541、计算当前摘要是否一致。\n[0139] 具体的,计算当前数据块的摘要,并与重复数据库中的摘要进行比较。判断是否一致;若是,执行58;否则,执行542。\n[0140] 具体地,利用重复数据库中HASH表项记录的块长度直接确定上述步骤51滑窗对应的字节所属的数据块,然后计算该数据块的摘要。具体地,按照HASH表项中保存的块长度值定位当前数据的当前块即指纹对应的字节所属的数据块,通过SHA-1/MD5等算法计算当前块的checksum。计算得到的checksum与表项中保存的checksum进行比较,如果相同,则认为当前块为重复数据,将定界滑窗和内容滑窗都直接滑过本次找到的数据块,进行下一块的定界、内容比对。对于图4中的数据块3356B,按照上述方法,这次找到的实际上是一个重复块,此后先将内容滑窗滑到下一数据块C,检查其对应的指纹是否在重复数据库中存在,即利用内容滑窗指纹作为查找KEY在重复数据库中查找HASH表项。查找到HASH表项后,利用表项中的块长度计算数据块C的checksum,并与表项中的checksum进行比较,当检查到当前计算的checksum与表项中保存的checksum不一致,说明数据块C与重复数据库中对应的数据块的内容不同,执行542拆分数据块C及重复数据库中对应的数据块。\n[0141] 542、逐字节匹配拆分,对于每一个拆分出的子数据块,执行55;完成拆分后,对于拆分出的所有满足数据块的长度限制的子数据块执行543。在拆分过程中形成块的都要检查,不管是匹配部分还是不匹配部分,小于最小界的都作为零碎数据。在拆分过程中产生了新块都涉及到更新/删除表项,这是拆分过程中完成的。\n[0142] 具体地,从当前块的初始部分往后逐字节进行匹配,直到找到与重复数据库中不相同的字节,将当前块从不相同的字节处进行拆分,另外利用滑窗,检查从拆分点向后,是否有指纹与当前块的后续指纹相同,如果存在,检查两者完全匹配的部分,将其作为一个新块保存到重复数据库中,此过程主要是识别原来的数据中被删除掉一小部分的情况。\n[0143] 543、更新或删除HASH表项;\n[0144] 544、计算拆分摘要及块长度,然后执行56;\n[0145] 55、对子数据块进行最小界检查,若子数据块的长度大于上述下限,则对该子数据块执行543;若子数据块的长度小于上述下限,则对该子数据块执行57。55可在执行542的过程中执行,即542每拆分出一部分数据,就执行55,进行最小界检查,拆分完成后,也就对所有拆分出的子数据块完成了最小界检查,然后对所有拆分出的长度大于下限的数据块执行543。或者,55也可在542与543之间执行,即542先完成数据块的拆分,然后执行55,对于拆分出的所有子数据块执行55,再对55的判断结果执行57或543。\n[0146] 56、添加该可变块对应的HASH表项。\n[0147] 具体地,在重复数据库中,增加该数据块的内容,并添加HASH表项,即更新重复数据库,结束当前数据块的压缩处理。\n[0148] 57、非重复内容处理。具体地,单独处理非块内容即上述长度小于下限的零碎数据,这部分数据保留在报文中,不压缩,完成当前滑窗内字节的处理,继续向后滑动滑窗。\n[0149] 58、内容全部重复,重复内容替换成指纹,完成当前数据块的删除处理。当前块拆分完成后,继续滑动内容滑窗,检查后续数据块的内容,对当前块的后续数据进行处理。\n[0150] 上述流程中,定界滑窗和内容滑窗可为同一个滑窗,只是根据计算的结果(指纹)进行数据块定界、重复数据库中块内容的查找比较,据此,压缩方法流程分为定界滑窗流程和内容滑窗流程,最后的处理结果存在三种情况:一种是对原来的数据块进行了拆分,更新了重复数据库;另一种是未能匹配到块内容并且不符合加入重复数据库条件(如长度太短),这部分数据作为非重复内容直接放到报文中;还有一种结果是找到重复数据,此时将表示该重复数据的指纹及相关信息以一定格式放到报文中,发送给对方设备。\n[0151] 可选地,压缩后的报文的封装格式如图6所示,方式1中非重复数据的位置不变,只是非重复数据的前后的数据块作为重复数据而被替换了,方式2中替换格式在压缩后的报文中的位置被指定。其中,替换格式包括指纹、块长度及被替换的数据块在本报文中的偏移。\n[0152] 具体应用到数据块6788B时,首先滑窗滑动到数据块6788B的初始部分时,执行上述51操作,计算出初始部分的指纹,然后执行52,判断重复数据库是否存在包含该指纹的HASH表项,本实例中数据块6788B为重复数据块,因此,执行541,计算出数据块6788B的摘要,并与重复数据库中HASH表项保存的摘要相比较,判断是否一致,本实例中判断结果一致,即内容部分重复,执行58,删除数据中数据块6788B的内容,替换为指纹,完成对数据块\n6788B的处理。\n[0153] 之后滑窗滑动到数据块3356B的初始部分,执行51,计算出初始部分的指纹;执行\n52,从重复数据库中找到对应HASH表项,获知数据块3356B的块长度等块信息。执行541,计算出数据块3356B的摘要,与重复数据块的HASH表项中的摘要一致,说明数据块3356B的内容与重复数据库中对应HASH表项的数据块内容全部重复,执行58,删除数据中数据块\n3356B的内容,替换为指纹,完成对数据块3356B的处理。\n[0154] 之后滑窗滑动到数据块C的初始部分,执行51,计算出初始部分的指纹;执行52,查找重复数据库,判断是否存在包含该指纹的HASH表项。本实例中,重复数据库中存在数据块C的HASH表项。然后执行541,根据查找到的HASH表项中的块长度界定数据块C,计算出数据块C的摘要,并判断是否与HASH表项中的摘要一致。本实例中,数据块C的摘要与HASH表项中 的摘要不一致,然后执行542。从数据块C的初始部分开始向后逐字节与HASH表项对应的数据块内容进行比较,直到找到不相同的字节,将数据块C及重复数据库中HASH表项对应的数据块从此处即不相同的字节处进行拆分,本实例中,将数据块C拆分为子块4505B及子块2988B,其中,子块4505B与重复数据库中的数据重复,但是由于本次发送的数据块C中删除了子块4505B与子块2988B之间的子块4520B,导致数据块C的内容与重复数据库中的内容不匹配。然后执行543,将拆分出的部分4505B、2988B均作为一个新数据块保存到重复数据库中,并生成新的HASH表项替换之前查找到的HASH表项。相应地,重复数据库中的4520B满足数据块长度要求时,作为新的数据块保存,否则,删除。再执行\n544,计算子块4505B、子块2988B的块长度及摘要,添加到新的HASH表项中,以用于下次发送数据删除作为数据块的4505B、2988B的数据内容,并进行替换,提高数据的压缩效率。\n[0155] 对于待压缩的数据,继续向后滑动滑窗至数据块4800B的初始部分,执行51,计算初始部分的指纹。执行52,从重复数据库中找到对应HASH表项,获知数据块4800B的块长度等块信息。执行541,计算出数据块4800B的摘要,与重复数据块的HASH表项中的摘要一致,说明数据块4800B的内容与重复数据库中对应HASH表项的数据块内容全部重复,执行\n58,删除数据中数据块4800B的内容,替换为指纹,完成对数据块4800B的处理。\n[0156] 按照上述方法完成对数据的压缩后,压缩侧设备如WOC将报文发送到解压缩侧设备。\n[0157] 如图7所示,压缩侧设备接收报文后,对接收到的报文进行解析,得到报文的净荷。根据本发明实施例提供的数据处理方法对净荷中的数据进行压缩处理。将压缩处理后的数据封装为新报文。将新报文发送到解压缩侧设备。\n[0158] 解压缩侧设备接收到新报文后,利用重复数据库对新报文中的净荷进行解压缩处理。具体可以是将报文中的替换格式或指纹删除,并将替换格式或指纹替换为与替换格式或指纹对应的数据块,将将解压缩的数据封装为报文。\n[0159] 其中,重复数据库的生成(即前面的算法过程)可以只在一端设备完成,然后将数据(重复数据块指纹和/或数据内容)同步到对端。当数据流量主要为下行,即服务器侧流向用户侧(如用户下载文件),算法可以在靠近用户 侧的WOC设备实现,并且保存重复数据块内容,而靠近服务器一侧的WOC设备只需要同步指纹信息即可,不需要缓存所有内容,反之则在服务器侧的WOC设备处理算法和保存内容。当然两侧可以都计算和保存内容,只是会增加资源需求。\n[0160] 图8为本发明实施例提供的数据压缩设备的结构示意图。本实施例提供的数据压缩设备用于实施上述图1、图5所示实施例的方法,如图8所示,数据处理设备包括:第一指纹计算单元81、查找单元82、重复内容获取单元83、摘要计算单元84、摘要比较单元85、第一子片段获取单元86及第一添加单元87。\n[0161] 第一指纹计算单元81用于根据指纹算法计算待压缩数据中的第一片段的第一指纹,该第一片段的起始位置与该待压缩数据的起始位置相同,该第一片段的长度与第一滑窗的长度相同;\n[0162] 查找单元82用于在第一本地重复数据库中查找该第一指纹,该第一本地重复数据库用于存储重复数据、该重复数据的指纹以及该重复数据的摘要;\n[0163] 重复内容获取单元83用于如果该第一本地重复数据库中存在该第一指纹,则根据该第一指纹获取该第一本地重复数据库中的第一可变块以及该第一可变块的摘要,该第一指纹与根据该指纹算法计算得到的该第一可变块中的第一初始块的指纹相同,该第一初始块的起始位置与该第一可边块的起始位置相同,该第一初始块的长度与该第一滑窗的长度相同,该第一可变块的摘要为根据摘要算法对该第一可变块的摘要进行计算得到的;\n[0164] 摘要计算单元84用于根据该摘要算法计算该待压缩数据中的第二片段的摘要,该第二片段的起始位置与该待压缩数据的起始位置相同,该第二片段的长度与该第一可变块的长度相同;\n[0165] 摘要比较单元85用于比较该第二片段的摘要与该第一可变块的摘要;\n[0166] 第一子片段获取单元86用于如果该第二片段的摘要与该第一可变块的摘要不同,则获取该第二片段中的第一子片段,该第一子片段与该第一可变块中的第一子可变块相同,该第一子片段的起始位置与该第二片段的起始位置相同,该第一子可变块的起始位置与该第一可变块的起始位置相同,该第二片段中的第二比特与该第一可变块中的第一比特不同,该第二比特为该第二片 段中该第一子片段的下一个比特,该第一比特为该第一可变块中该第一子可变块的下一个比特;\n[0167] 第一添加单元87用于将该第一子片段、该第一子片段的指纹以及该第一子片段的摘要添加到该第一本地重复数据库,生成第二本地重复数据库,该第一子片段的指纹与该第一指纹相同,该第一子片段的摘要为根据该摘要算法对该第一子片段的摘要进行计算得到的。\n[0168] 本发明实施例提供的数据压缩设备还可包括:\n[0169] 第一报文接收单元,用于接收第一报文,该第一报文包括第一报文头与第一净荷,该第一净荷包含第一净荷片段,该第一净荷片段的长度与该第一子片段的长度相同;\n[0170] 第二初始指纹计算单元,用于根据该指纹算法计算该第一净荷片段中第二初始块的指纹,该第二初始块的起始位置与该第一净荷片段的起始位置相同,该第二初始块的长度与该第一滑窗的长度相同;\n[0171] 第一净荷摘要计算单元,用于根据该摘要算法计算该第一净荷片段的摘要;\n[0172] 第二报文生成单元,用于如果该第二初始块的指纹与该第二本地重复数据库中的该第一子片段的指纹相等,并且该第一净荷片段的摘要与该第一子片段的摘要相等,则删除该第一报文中的该第一净荷片段,生成第二报文,该第二报文中包括第二报文头与第二净荷,该第二报文头与该第一报文头相同,该第二净荷包括该第一子片段的指纹。\n[0173] 该第二净荷还可包括该第一子片段在该第一报文中的位置信息。第一子片段在第一报文中的位置信息可以是第一子片段的最高比特相对于第一报文的报文头的最高比特的偏移量。\n[0174] 本发明实施例提供的数据压缩设备还可包括:\n[0175] 第三初始指纹计算单元,用于根据该指纹算法计算该待压缩数据中的第二子片段的第三初始块的指纹,该第二子片段的起始位置为该第二比特,该第二子片段的结束位置与该待压缩数据的结束位置相同;该第三初始块的起始位置为该第二比特,该第三初始块的长度等于该第一滑窗的长度;\n[0176] 检测块获取单元,用于根据第二滑窗获取第二子可变块中的第一检测块,该第二滑窗的起始位置与该第二子可变块中的第三比特对应,该第三比特为介于第二子可变块的起始位置与该第二子可变块的结束位置之间的比特,该第二滑窗的长度等于该第一滑窗的长度,该第二子可变块的起始位置为该第一比特,该第二子可变块的结束位置与该第一可变块的结束位置相同;\n[0177] 检测块指纹计算单元,根据该指纹算法计算该第一检测块的指纹;\n[0178] 指纹比较单元,用于比较该第三初始块的指纹与该第一检测块的指纹;\n[0179] 第三摘要比较单元,用于如果该第三初始块的指纹与该第一检测块的指纹相同,则比较该第二子可变块中的第三子可变块的摘要与该第二子片段中的第三子片段的摘要,该第三子可变块的起始位置与该第一检测块的起始位置相同,该第三子可变块的结束位置与该第一可变块的结束位置相同,该第三子片段的起始位置与该第二子片段的起始位置相同,该第三子片段的长度与该第三子可变块的长度相等,该第三子可变块的摘要为根据该摘要算法对该第三子可变块的摘要进行计算得到的;\n[0180] 第三添加单元,用于如果该第三子片段的摘要与该第三子可变块的摘要相等,则将该第三子片段、该第三子片段的指纹以及该第三子片段的摘要添加到该第二本地重复数据库,生成第三本地重复数据库,该第三子片段的指纹等于该第三初始块的指纹,该第三子片段的摘要为根据该摘要算法对该第三子片段的摘要进行计算得到的。\n[0181] 本发明实施例提供的数据压缩设备还可包括:\n[0182] 第三报文接收单元,用于接收第三报文,该第三报文包括第三报文头与第三净荷,该第三净荷包含第二净荷片段以及第三净荷片段,该第二净荷片段的长度与该第一子片段的长度相同,该第三净荷片段的长度与该第三子片段的长度相同;\n[0183] 第四初始指纹计算单元,用于根据该指纹算法计算该第二净荷片段中第四初始块的指纹,根据该指纹算法计算该第三净荷片段中第五初始块的指纹,该第四初始块的起始位置与该第二净荷片段的起始位置相同,该第四初始块的长度与该第一滑窗的长度相同,该第五初始块的起始位置与该第三净荷片段的起始位置相同,该第五初始块的长度与该第一滑窗的长度相同;\n[0184] 第三净荷摘要计算单元,用于根据该摘要算法计算该第二净荷片段的摘要,根据该摘要算法计算该第三净荷片段的摘要;\n[0185] 第四报文生成单元,用于如果该第四初始块的指纹与该第三本地重复数据库中的该第一子片段的指纹相等,并且该第二净荷片段的摘要与该第一子片段的摘要相等,则删除该第三报文中的该第二净荷片段,如果该第五初始块的指纹与该第三本地重复数据库中的该第三子片段的指纹相等,并且该第三净荷片段的摘要与该第三子片段的摘要相等,则删除该第三报文中的该第三净荷片段,生成第四报文,该第四报文中包括第四报文头与第四净荷,该第四报文头与该第三报文头相同,该第四净荷包括该第一子片段的指纹以及该第三子片段的指纹。\n[0186] 该第四净荷还包括该第一子片段在该第三报文中的位置信息、该第三子片段在该第三报文中的位置信息。第一子片段在第三报文中的位置信息可以是第一子片段的最高比特相对于第三报文的报文头的最高比特的偏移量。\n[0187] 本发明实施例提供的数据压缩设备还可包括:\n[0188] 初始块指纹计算单元,用于根据该指纹算法计算该第一可变块中的第四子可变块的第六初始块的指纹,该第四子可变块的起始位置为该第一比特,该第四子可变块的结束位置与该第一可变块的结束位置相同,该第六初始块的起始位置为该第一比特,该第六初始块的长度等于该第一滑窗的长度;\n[0189] 检测块获取单元,用于获取第四子片段中的第二检测块,该第二检测块的起始位置与该第四子片段中的第四比特对应,该第四比特为介于第三片段的起始位置与该第三片段的结束位置之间的比特,该第二检测块的长度等于该第一滑窗的长度,该第三片段的起始位置为该第二比特,该第三片段的结束位置通过定界算法确定,该第三片段为该待压缩数据中的片段,该第四子片段为该第三片段中的子片段,该第四子片段的起始位置与该第二检测块的起始位置相同,该第四子片段的长度与该第四子可变块的长度相同;\n[0190] 检测块指纹计算单元,用于根据该指纹算法计算该第二检测块的指纹;\n[0191] 指纹比较单元,用于比较该第六初始块的指纹与该第二检测块的指纹;\n[0192] 第四摘要比较单元,用于如果该第六初始块的指纹与该第二检测块的指 纹相同,则比较该第四子可变块的摘要与该第四子片段的摘要,该第四子可变块的摘要为根据该摘要算法对该第四子可变块的摘要进行计算得到的,该第四子片段的摘要为根据该摘要算法对该第四子片段的摘要进行计算得到的;\n[0193] 第四添加单元,用于如果该第四子片段的摘要与该第四子可变块的摘要相同,则将该第四子片段、该第四子片段的指纹以及该第四子片段的摘要添加到该第二本地重复数据库,生成第四本地重复数据库,该第四子片段的指纹与该第六初始块的指纹相同。\n[0194] 本发明实施例提供的数据压缩设备还可包括:\n[0195] 第五报文接收单元,用于接收第五报文,该第五报文包括第五报文头与第五净荷,该第五净荷包含第四净荷片度以及第五净荷片段,该第四净荷片度的长度与该第一子片段相同,该第五净荷片段的长度与该第四子片段的长度相同;\n[0196] 第七初始指纹计算单元,用于根据该指纹算法计算该第四净荷片段中第七初始块的指纹,根据该指纹算法计算该第五净荷片段中第八初始块的指纹,该第七初始块的起始位置与该第四净荷片段的起始位置相同,该第七初始块的长度与该第一滑窗的长度相同,该第八初始块的起始位置与该第五净荷片段的起始位置相同,该第八初始块的长度与该第一滑窗的长度相同;\n[0197] 第五净荷摘要计算单元,用于根据该摘要算法计算该第四净荷片段的摘要,根据该摘要算法计算该第五净荷片段的摘要;\n[0198] 第六报文生成单元,用于如果该第七初始块的指纹与该第四本地重复数据库中的该第一子片段的指纹相等,并且该第四净荷片段的摘要与该第一子片段的摘要相等,则删除该第五报文中的该第四净荷片段,如果该第八初始块的指纹与该第四本地重复数据库中的该第四子片段的指纹相等,并且该第五净荷片段的摘要与该第四子片段的摘要相等,则删除该第五报文中的该第五净荷片段,生成第六报文,该第六报文中包括第六报文头与第六净荷,该第六报文头与该第五报文头相同,该第六净荷包括该第一子片段的指纹以及该第四子片段的指纹。\n[0199] 该第六净荷还可包括该第一子片段在该第五报文中的位置信息、该第四 子片段在该第五报文中的位置信息。第一子片段在第五报文中的位置信息可以是第一子片段的最高比特相对于第五报文的报文头的最高比特的偏移量。\n[0200] 可选地,从该第二比特开始向后滑动该定界算法中的第三滑窗,并判断该第三滑窗对应的数据是否符合该定界算法中的定界条件,当首次出现该第三滑窗对应的数据符合该定界条件时,在第一距离内继续向后滑动该第三滑窗,并判断该第三滑窗对应的数据是否符合该定界条件,如果出现该第三滑窗对应的第一数据符合该定界条件的情况时,则确定该第一数据的结束位置为该第三片段的结束位置,该第三滑窗的长度与该第一滑窗的长度相同,该第一距离的长度与该第一滑窗的长度相同。\n[0201] 本发明实施例提供的数据压缩设备还可包括:\n[0202] 第二同步单元,用于将该第一子片段、该第一子片段的指纹以及该第一子片段的摘要同步到解压缩侧的重复数据库。\n[0203] 本发明实施例提供的数据压缩设备还可包括:\n[0204] 压缩处理单元,用于删除该待压缩数据中的该第一子片段,将该第一子片段的指纹、该第一子片段的长度及该第一子片段在该待压缩数据中的位置信息添加到第七报文的净荷中,该待压缩数据为该第七报文的净荷。\n[0205] 第一子片段在待压缩数据中的位置信息可以是第一子片段的最高比特相对于待压缩数据的最高比特的偏移量。\n[0206] 本发明实施例提供的数据压缩设备可为WOC。本领域技术人员应理解,WOC除了上述功能单元,还应具有报文接收、网络连接等基本的功能单元,这里不再赘述。\n[0207] 本发明实施例提供的数据解压缩设备包括:\n[0208] 第一指纹计算单元,用于根据指纹算法计算待压缩数据中的第一片段的第一指纹,该第一片段的起始位置与该待压缩数据的起始位置相同,该第一片段的长度与第一滑窗的长度相同;\n[0209] 查找单元,用于在第一本地重复数据库中查找该第一指纹,该第一本地重复数据库用于存储重复数据、该重复数据的指纹以及该重复数据的摘要;\n[0210] 重复内容获取单元,用于如果该第一本地重复数据库中存在该第一指纹, 则根据该第一指纹获取该第一本地重复数据库中的第一可变块以及该第一可变块的摘要,该第一指纹与根据该指纹算法计算得到的该第一可变块中的第一初始块的指纹相同,该第一初始块的起始位置与该第一可边块的起始位置相同,该第一初始块的长度与该第一滑窗的长度相同,该第一可变块的摘要为根据摘要算法对该第一可变块的摘要进行计算得到的;\n[0211] 摘要计算单元,用于根据该摘要算法计算该待压缩数据中的第二片段的摘要,该第二片段的起始位置与该待压缩数据的起始位置相同,该第二片段的长度与该第一可变块的长度相同;\n[0212] 摘要比较单元,用于比较该第二片段的摘要与该第一可变块的摘要;\n[0213] 第一子片段获取单元,用于如果该第二片段的摘要与该第一可变块的摘要不同,则获取该第二片段中的第一子片段,该第一子片段与该第一可变块中的第一子可变块相同,该第一子片段的起始位置与该第二片段的起始位置相同,该第一子可变块的起始位置与该第一可变块的起始位置相同,该第二片段中的第二比特与该第一可变块中的第一比特不同,该第二比特为该第二片段中该第一子片段的下一个比特,该第一比特为该第一可变块中该第一子可变块的下一个比特;\n[0214] 第一添加单元,用于将该第一子片段、该第一子片段的指纹以及该第一子片段的摘要添加到该第一本地重复数据库,生成第二本地重复数据库,该第一子片段的指纹与该第一指纹相同,该第一子片段的摘要为根据该摘要算法对该第一子片段的摘要进行计算得到的。\n[0215] 本领域技术人员应理解为:本发明实施例提供的数据解压缩设备除具备上述单元外,还具有解压缩等基本功能单元。\n[0216] 本发明实施例提供的数据解压缩设备还可包括:\n[0217] 第一同步单元,用于将该第一子片段的指纹以及该第一子片段的摘要同步到压缩侧的重复数据库。\n[0218] 图9为本发明实施例提供的一种数据压缩方法的一种应用场景的组网结构图。如图9所示,在WAN两端用来压缩数据及解压缩数据的设备均为WOC。即,WOC可同时具备压缩数据和解压缩数据的功能。\n[0219] 图10为本发明实施例提供的一种数据压缩方法的另一种应用场景的组网结构图。如图10所示,两端WOC设备的交互包括控制和数据两个层面。\n[0220] 控制层面是两端设备需要通过私有协议交互控制信息,自动发现对端设备,通过下游设备发送响应到上游设备,可以使上游设备感知下游设备的存在及地址信息(如IP地址)。并且,两端设备需要互相通知采用的算法信息并达成一致(如都采用MD5进行内容checksum的计算),还需要同步重复数据库信息,包括指纹及指纹对应的信息表项(如块长度,checksum值等)。同步过程分为定时同步和增量同步,定时同步指定时将所有的重复数据库内容进行一致性检查,而增量同步则只对新增或更新/删除的特定块信息通知对端。\n[0221] 数据层面是指对通过两端设备的业务数据进行算法处理和数据替换,从而减少报文的长度和个数,达到数据压缩的目的。\n[0222] 根据本发明实施例提供的技术方案,如果待压缩的数据中包含了与重复数据库中的可变块的前半部分相同并且与可变块的后半部分不同的数据片段,则能够生成粒度小于发生匹配的可变块的新的可变块,并将新的可变块添加到重复数据库。\n[0223] 相对于直接对定位到的块进行查找方法,新的可变块粒度较小。因此,本发明实施例提供的技术方案提高了后续的待压缩数据与更新后的重复数据库发生匹配的概率,进而提高了压缩的效率。\n[0224] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。\n[0225] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。\n[0226] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示 意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。\n[0227] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。\n[0228] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。\n[0229] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文缩写为ROM,英文全称为Read-Only Memory)、随机存取存储器(英文缩写为RAM,英文全称为Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。\n[0230] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
法律信息
- 2015-07-29
- 2012-11-14
实质审查的生效
IPC(主分类): H04L 1/00
专利申请号: 201210053609.6
申请日: 2012.03.02
- 2012-09-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2001-07-18
| | |
2
| |
2007-01-24
|
2006-07-26
| | |
3
| |
2011-07-13
|
2011-03-29
| | |
4
| |
2006-02-15
|
2003-10-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |