多流压缩与解压的方法与系统的制作方法_3

文档序号:9332136阅读:来源:国知局
的,依赖于使用的特征。例如,每个wrt字段使用的实际比特数是基于期望的参数决定的。所述实际比特数可以动态确定。或者,所述wrt字段的大小是固定的。如果没有压缩,就可能没子字段。在另一个例子中,wrt字段指示压缩的缺失。当存在一个新的数据包流时,所述子字段可以指示压缩类型,例如gzip或者7zip。对于新的数据包流,运用到数据包流的压缩类型是确定的。选择数量或者数据意义可以半静态或者固定设置。同样,对于一个新的数据包流,子字段可以包含数据包流的名字,数据包流的名字可以通过一些约定的标签方法(也就是数据包的哈希值或者简单的计算)隐式生成。
[0036]前一个数据包流的延续可能会存在。X比特位可以指示数据包流的选项。例如,名字可以是通用的,也可以是由数据包内部的变量决定的,例如与IP地址相结合。子帧可以指示固定的流,X比特位显式指示数据包流的名字;可选地,Y比特位指示流内部位置,其可以是一个哈希值、相对值或者绝对值。子字段也可以指示生成了一个新的流。所述子字段指示所述新的数据包流是否可参考,例如,旧的流的哈希值和现在的数据包的哈希值是否都是有效哈希值。在另一个例子中,所述子字段是数据包流的哈希值,其中X比特位表示之前使用过的哈希算法的哈希值。或者,所述子字段可以是一个固定的预定数据包流,其可以使词典或者压缩方案运用至流中。
[0037]所述wrt字段可以指示流的状态,或者循环冗余校验(CRC)。子字段可以负责验证数据包流的状态。例如,子字段可以指示没有遗漏的或者重排序的数据包。这可以是非压缩数据的循环冗余校验,哈希值所有剩余比特位的异或,或者是两者结合。对于wrt字段,可以重复使用低层例如端口号。
[0038]在一个例子中,存在多个wrt字段,后续的元数据用于区分所述多个wrt字段。例如,所述wrt字段可以描述两个压缩流,而元数据中包括一个附加比特用以区分该两个流。或者,可以存在一个转换wrt字段消息,以指示数据包中wrt字段的变化。所述转换可以有差别的,例如可以参考以前使用的Wrt字段。或者,所述转换也可以是绝对的。
[0039]在一个例子中,每隔一个固定的间隔,例如每一毫秒,解压器确认接收的数据包并且给它们排序。这些接收的数据包可按照多种顺序解压。一旦选择了一种排序,解压器会向压缩器确认已经接收了数据包。所述解压器也可以通过解压状态指示数据包的处理顺序。结合之前的状态,新的数据包会生成一个唯一的状态值。所述状态值可以是数据包ID与之前的状态哈希值的哈希值,或者是一个已确认数据包的函数,例如索引号。压缩器使用解压器状态对附加数据包进行编码。压缩值也可以预先对数据包赋值,以指示解压器应该使用此状态解压这些数据包。如果有任何数据包没被确认,这些数据包仍会被处理,但是不会在压缩中使用。
[0040]压缩可以在对象级进行。压缩流可以在对象级而非数据包级进行分支和合并。当一个压缩流分支输入时,初始状态和标签都可以通知解压器一个新的压缩流分支将基于该状态生成,所述状态为所述标签所引用。对象(即这个流)的大小,如果有的话,同样能发送给解压器。如果所述标签是之前使用过的标签,则覆盖该标签。然后,对接收到的数据包的确认将包含新的标签。当压缩流合并时,输入第一状态和第二状态可以通知解压器创建一个新的状态,该状态可以是所述第一状态和第二状态的结合。其中,所述第一状态和第二状态必须已经进行过分支。新的状态或者错误信息都可以作为响应。该新的状态可以与后接所述第二流的第一流一样简单。
[0041]两阶段冗余清除(RE)通过压缩提升性能。图8示出针对冗余清除的压缩方法流程图。在冗余清除中,参数可以自动调整。首先,在步骤222中,进行组块,将一个源流拆分成数据流和ID流。在一个例子中,所述ID。同样地,ID压缩单元通过标准的压缩技术进行压缩。ID压缩单元发送可解码ID,检测冲突并从中恢复。另外,所述ID压缩单元确定解压器中是否有已接收的ID。然后在步骤224中,ID压缩单元压缩所述ID。在一个例子中,使用了标准的压缩技术。在一个例子中,使用了不同ID之间的位置关联。ID是在其第一次通过通信系统时所获取。可以通过创建这些ID的字母表然后压缩这些字母表来进行压缩。所述字母表可以很大,例如可以为一个32位的ID创建一个超过百万字母的字母表。典型的输出可以是字母表的字母形式或者是元数据形式。最后,在步骤226中,数据流和压缩ID流合并。在一个实施例中,实际上ID并没有被传输,而是从传输的数据中计算得到。可以执行处理以拦截通过压缩器的新ID所对应的ID压缩方案的输出结果。所述ID会在接收器侧通过哈希函数重新生成。通过第一步骤的平均信息块大小,可有效减少第二阶段的要求。
[0042]图9示出针对冗余清除的解压方法流程图。首先,分开数据和ID。在步骤234中,数据组块,然后在步骤236中生成ID。例如,信息块被哈希,哈希值转化成ID,然后传递至解压器以便后续使用。压缩后的元数据流被传递至解压器。输出结果为RE算法可理解的ID0 ID流转化成数据,然后传递至更高层。最后,在步骤238中合并数据与ID。
[0043]在一个例子中,将该转化信号化时会考虑信息块到达的顺序。如果一个顺序之前已经存在,贝lJ只传输第一部分比特位而非所有的比特位。在一个例子中,传输2个或者3个比特位。在另一个例子中,通过标准软件压缩元数据。例如,反向引用可以指示后退1000个比特位且使用接下来的80个比特位。在一个例子中,可以使用TCP。可以使用检测解决遗漏的反向引用的协议。反向引用可以引用相同数据包中的比特位,或者来自一些约定点的比特位,例如在TCP下收到确认的最后一个数据包,或者是带有UDP确认且没有经过重传的最后一个数据包。或者,可以使用词典法。词典可以是自适应或者静态的,并且可以使用词典的哈希值。压缩器可以选择该词典所来自的词典。信息块大小为32字节时,可以发现压缩率大于10:1。或者,可以使用LZP。
[0044]图10示出可以用于实现此处所揭示的方法与设备的处理系统270的方块图。特定设备可使用所有所示的组件或所述组件的仅一子集,且设备之间的集成程度可能不同。此夕卜,设备可包含部件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等等。处理系统可包括配备一个或多个输入/输出设备,麦克风、鼠标、触屏、小键盘、键盘等的处理单元。处理系统270也可以配有一个或者多个输出设备,例如扬声器、打印机、显示器等等。处理单元可包括分别连接到总线的中央处理器(CPU) 274、存储器276、大容量存储设备278、显示适配器280,以及I/O接口 288。
[0045]所述总线可以为任何类型的若干总线架构中的一个或多个,包括存储总线或内存控制器、外围总线、视频总线等。所述CPU 274可包括任何类型的电子数据处理器。存储器276可包括任意类型的系统存储器,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、只读存储器(ROM)或其组合等等。在实施例中,存储器可包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。
[0046]大容量存储器设备278可包括任意类型的存储设备,其用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总线访问。大容量存储器设备278可包括如下项中的一种或多种:固态硬盘、硬盘驱动器、磁盘驱动器、光盘驱动器等。
[0047]显示适配器280以及I/O接口 288提供接口使得处理单元
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1