一种适用于单向有损链路的卫星网络数据包压缩方法

文档序号:9202502阅读:276来源:国知局
一种适用于单向有损链路的卫星网络数据包压缩方法
【技术领域】
[0001]本发明涉及基于TCP/IP协议族的卫星通信网络技术领域,具体涉及在单向有损卫星链路上传输IP数据包的压缩传输方法。本发明所公开的方法同样适用于地面蜂窝移动通信链路及其他有线链路或无线链路。
【背景技术】
[0002]基于TCP/IP协议族的卫星通信网络其优点在于业务接入方便,组网灵活,适用范围广;缺点在于业务接入采用IP数据包进行封装与承载而引入了包头开销;而且,通常情况下,所传输的业务中存在大量重复冗余数据。因此,如果能够有效消减链路传输中的冗余数据,则可以节约链路带宽资源,提高链路带宽利用率和业务接入的容量。
[0003]对于TCP/IP网络,数据传输以IP数据包为单位,消减传输冗余的一种方法是采用数据包压缩技术,基本原理在于找出数据包中的重复字节串,并采用较短的字符替换重复字节串,从而达到消减重复冗余和数据压缩的目的。根据压缩所利用的历史信息来区分,可分为基于单包的数据压缩和基于会话的数据压缩。基于单包的数据压缩,例如IETF规范 “RFC 3173IP Payload Compress1n Protocol (IPComp) ”,每个数据包的压缩都是独立的,不利用历史数据;压缩后每个数据包的解压不依赖于历史状态,传输过程中数据包的丢失不会影响其他数据包的解压;数据包的乱序到达亦不会影响解压的正确性。基于单包的数据压缩只是消减了单个数据包内的重复冗余,没有消减数据包之间的重复冗余,因此在压缩效果上一般低于基于会话的数据压缩。基于会话的数据包压缩充分利用多个数据包之间,甚至不同TCP/UDP流之间的冗余性,能够挖掘更多的重复冗余数据,压缩效果更优。基于会话的数据包压缩技术利用了历史缓冲区构建(描述符,重复字节串)的二维映射字典,压缩后的数据包之间不再相互独立,解压器需要维持与压缩器同步一致的映射字典,才能对压缩包进行正确解压。传输过程中压缩数据包的丢失会导致双方的历史缓冲区失去同步,因此必须采用一定的机制进行修复。例如,对于双向的通信链路,解压器可通过返向链路向压缩器发送反馈消息,以维护解压器和压缩器两端历史缓冲区的同步;但对于单向传输的卫星链路,则需要设计一种能够容忍链路误码和丢包且不需要反馈的机制以实现数据包的正确压缩和解压。

【发明内容】

[0004]本发明的目的在于避免【背景技术】中的不足之处而提供一种适合于单向有损链路的卫星网络数据包压缩方法。本发明方法接收端解压器的历史缓冲区与发送端压缩器的历史缓冲区不需要保持同步和内容一致;本发明的解压器和压缩器不需要反馈机制,可以有效压缩单向链路之上的IP数据包,同时不会因为链路之上的个别数据包丢失而造成解压器端大量数据包的解压失败。
[0005]为解决上述技术问题,本发明通过以下技术方案来实现。
[0006]一种适合于单向有损链路的卫星网络数据包压缩方法包括以下步骤:
[0007](I)发送端压缩器启动,并建立一个历史缓冲区的存储区域;接收端解压器启动,并建立一个历史缓冲区的存储区域;
[0008](2)发送端压缩器接收来自于地面IP网的原始数据包;
[0009](3)发送端压缩器将原始数据包变换为压缩数据包:发送端压缩器查找其历史缓冲区和原始数据包中所有的相同字节串;当每个相同的字节串在历史缓冲区中重复出现的频次大于等于设定的门限阈值时,则在压缩数据包中用压缩描述符替换原始数据包中的相同字节串;原始数据包中能够在历史缓冲区找到但在历史缓冲区中重复出现频次小于设定门限阈值条件的相同字节串,以及在历史缓冲区中找不到的其他字节串则在压缩数据包中保持不变;所述的压缩描述符含有唯一标识、其长度比原始数据包的字符串短;
[0010](4)发送端压缩器通过卫星将压缩数据包转发到接收端解压器;
[0011 ] (5)接收端解压器接收来自发送端压缩器的压缩数据包并将压缩数据包解压还原为原始数据包:对于压缩数据包中有压缩描述符的字节串,接收端解压器识别所有压缩描述符,在其历史缓冲区中查找每个压缩描述符所对应的重复字节串,并用找到的重复字节串对应替换压缩数据包中的每个压缩描述符;对于没有压缩描述符的字节串,则在原始数据包中保持不变;
[0012](6)接收端解压器将解压还原的原始数据包转发到地面IP网。
[0013]其中,所述的发送端压缩器和接收端解压器的历史缓冲区中均存储数据包和指纹索引表,发送端压缩器的历史缓冲区中存储的数据包为发送端压缩器接收到的原始数据包,接收端解压器的历史缓冲区中存储的数据包为接收端解压器解压还原出来的原始数据包。
[0014]其中,所述的卫星网络数据包压缩传输方法还包括:发送端压缩器和接收端解压器以相同的方式更新各自的历史缓冲区,具体为:
[0015]历史缓冲区中每个原始数据包均关联一个指纹引用计数器R,表示指纹索引表中指向该原始数据包的指纹索引表项的数目;当有新的原始数据包进入到历史缓冲区时且新的原始数据包和历史缓冲区中已有的原始数据包中有相同字节串时,则指纹索引表项中的指针指向新进入的原始数据包,历史缓冲区中已有的原始数据包的指纹引用计数器R减I ;历史缓冲区中每个指纹索引表项关联一个超时定时器,当某个指纹表项的超时定时器到期时,则其指向的原始数据包的指纹引用计数器R减I ;当原始数据包的指纹引用计数器R减少为O时,则将原始数据包从历史缓冲区中移除,并释放其占用的存储空间。
[0016]其中,所述的步骤(3)具体为:
[0017](301)发送端压缩器将原始数据包P的副本P存入到其历史缓冲区中;
[0018](302)发送端压缩器计算原始数据包P中字节串的所有指纹,获得指纹集合{F};
[0019](303)发送端压缩器读取指纹集合(F)中当前处理的指纹fi;
[0020](304)发送端压缩器判断指纹Fi是否存在于其历史缓冲区的指纹索引表中,若不存在则执行步骤(305),否则转入(306);
[0021](305)发送端压缩器将指纹匕存入到其历史缓冲区的指纹索引表中,并建立指纹Fi到原始数据包副本P的映射关系,转入步骤(311);
[0022](306)发送端压缩器在其历史缓冲区的指纹索引表中找出指纹Fi所对应的表项P'
[0023](307)发送端压缩器判断指纹匕与指纹索引表项F' i所对应的字节串是否相同,若相同则执行步骤(308),否则转入步骤(311);
[0024](308)发送端压缩器更新历史缓冲区的指纹索引表项F' i;
[0025](309)发送端压缩器判断指纹索引表项F' 指纹计数器值c是否大于等于预设的门限阈值,若大于等于预设的门限阈值则执行步骤(310),否则转入步骤(311);
[0026](310)发送端压缩器生成指纹Fi所对应的压缩描述符D 并暂存到压缩描述符集合{D}中;
[0027](311)发送端压缩器判断指纹集合{F}中的指纹是否已全部处理完,若全部处理完,则执行步骤(312),否则,将下一指纹更新为当前处理的指纹匕,转入步骤(303);
[0028](312)发送端压缩器判断压缩描述符集合{D}是否为空,若不为空,则执行步骤(313),否则转入步骤(316);
[0029](313)发送端压缩器依次处理压缩描述符集合{D}中各压缩描述符Di的覆盖区域的重叠部分;
[0030](314)发送端压缩器用压缩描述符01替换原始数据包P中的各字节串,得到压缩后的数据包P1;
[0031](315)发送端压缩器输出压缩数据包P1,发送端压缩器将原始数据包变换为压缩数据包的处理结束;
[0032](316)发送端压缩器输出原始数据包P,发送端压缩器将原始数据包变换为压缩数据包的处理结束。
[0033]其中,所述的指纹为原始数据包中从任一位置开始的固定长度字节串的哈希值,从指纹可以唯一地索引到所对应的原始数据包和原始数据包中的字节串;对于同一原始数据包中能够生成相同指纹的多个不同的字节串,发送端压缩器只为首次出现的字节串建立指纹索引;对于多个原始数据包中能够生成相同指纹的多个不同的字节串,发送端压缩器亦只为首次出现的字节串建立指纹索引。
[0034]其中,所述的指纹索引表中每个表项中包含一个指纹值F、指纹计数器C、首部可扩展区域长度h和尾部可扩展区域长度t以及指向原始数据包的指针PTR ;其中,指纹计数器的值表示该指纹所对应的字节串在历史缓冲区中各个原始数据包中出现的频次,首部可扩展区域长度的值和尾部可扩展区域长度的值为历史缓冲区中以指纹所对应的字节串为中心的所有重复出现的字节串的交集中去除该字节串之后的剩余部分的首部长度值和尾部长度值。
[0035]其中,所述的每个压缩描述符均包括作为唯一标识的指纹以及指纹所对应的字节串的首部可扩展区域长度和尾部可扩展区域长度。
[0036]其中,步骤(5)具体为:
[0037](501)接收端解压器识别和读取压缩数据包中的当前处理的压缩描述符Di;
[0038](502)接收端解压器提取压缩描述符Di*的指纹F 1、首部可扩展区域长度值h和尾部可扩展区域长度值t;
[0039](503)接收端解压器判断指纹Fi是否存在于其历史缓冲区的指纹索引表中,若不存在,则执行步骤(504),否则转入步骤(505);
[0040](504)接收端解压器对压缩数据包的解压失败,丢掉压缩数据包,接收端解压器将压缩数据包变换为原始数据包的处理结束;
[0041](505)接收端解压器在其历史缓冲区的指纹索引表中找出指纹FiK对应的表项以及表项所指向的原始数据包副本P ;
[0042](506)接收端解
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1