一种ROHC压缩器及其实现方法
技术领域
本申请涉及一种移动终端中的考虑丢弃定时器背景下的ROHC压缩器及其实现方法。
背景技术
ROHC(Robust Header Compression,鲁棒性报头压缩)是一种对网络数据包的报头(header)进行压缩的技术。所述报头包括静态域(static field)和动态域(dynamicfield),并分别有各自的值。ROHC的功能实体包括压缩器和解压器。ROHC编码算法用来研究网络数据包的报头中动态域的变化规律,ROHC压缩器通过ROHC编码算法将原始内容进行压缩以尽量减小其长度,同时要确保ROHC解压器可以正确解析出原始内容。
LSB(Least Significant Bits,最低有效位)编码算法是最基础的一种ROHC编码算法,其他ROHC编码算法可看作是对其的一种改良、或者对编码对象的一种改良以使得该对象可以适配LSB算法。申请公布号为CN101411157A、申请公布日为2009年4月15日的中国发明专利申请《用于在稳健标头压缩中加强局部修复的方法和系统》的说明书第5页倒数第二段至第6页倒数第二段对LSB编码算法有着较为详细的介绍。
LSB编码算法应用于ROHC技术时具有以下特点。ROHC压缩器将成功压缩的上一个值作为本次压缩的参考值。ROHC解压器将成功解压的上一个值作为本次解压的参考值。正常情况下,ROHC压缩器成功压缩的上一个值与ROHC解压器成功解压的上一个值是同一个值。
在LTE(Long Term Evolution,长期演进技术)等移动通讯系统中,移动终端(UE,User Equipment,用户设备)的PDCP(Packet Data Convergence Protocol,分组数据汇聚协议)子层得到来自上层的IP(Internet Protocol,互联网协议)数据分组后,可以对IP数据分组进行报头压缩和加密,然后提交到RLC(Radio Link Control,无线链路控制)子层。每一个PDCP SDU(Service Data Unit,服务数据单元)对应一个丢弃定时器(DiscardTimer)。发射机一旦接收到一个PDCP SDU,即启动该PDCP SDU对应的丢弃定时器。当丢弃定时器超时而移动终端仍未发起该PDCP SDU的上行传输,就丢弃该PDCP SDU。这一丢弃机制可以防止发射机的过度延时和排队现象。这也可以理解为,经过PDCP子层后的每个压缩数据包都被设置了存活时长,由一个丢弃定时器进行计时,超时而未能传输的压缩数据包将被丢弃。
例如移动终端要向基站(eNodeB)连续发送5个数据包,第1个数据包由基站接收到,第2至第4个数据包在移动终端内部由于丢弃计时器超时而被丢弃了因此基站没有接收到。那么移动终端中的ROHC压缩器在对第5个数据包进行报头压缩时,是以成功压缩的上一个值(即第4个数据包)作为本次压缩的参考值。如果第5个数据包由基站接收到,基站中的ROHC解压器在对第5个数据包进行报头解压时,是以成功解压的上一个值(即第1个数据包)作为本次解压的参考值。这有可能导致ROHC解压器无法解压成功、或者得到错误的解压结果。
发明内容
本申请所要解决的技术问题是提供一种考虑丢弃定时器背景下的ROHC压缩器的实现方法。为此,本申请还要提供一种ROHC压缩器。
为解决上述技术问题,本申请提供了一种ROHC压缩器的实现方法,包括如下步骤。步骤S110:ROHC压缩器收到新的网络数据包A(n)。步骤S120:ROHC压缩器查找到成功压缩、且未由于丢弃定时器超时而被丢弃的最新的一个网络数据包A(n-r),r为大于或等于1的整数。步骤S130:ROHC压缩器基于该网络数据包A(n-r)的报头对本次处理的网络数据包A(n)的报头进行LSB编码。步骤S140:ROHC压缩器输出本次处理的网络数据包A(n)的原始报头以及编码后的报头。
上述ROHC压缩器的实现方法是本申请的实施例一,一旦发现有成功压缩的网络数据包因丢弃定时器超时而被丢弃,则不再以被丢弃的网络数据包的报头作为新接收的网络数据包的报头压缩的参考值,避免了ROHC解压器在特定条件下的解压失败场景。
进一步地,所述步骤S110之前还包括基于每个网络数据包的报头做分流处理。这是一种优选的实现方式。
进一步地,所述步骤S140之后还包括如下步骤。步骤S310:经过报头压缩的网络数据包A(n)被缓存。步骤S320:ROHC压缩器检查在成功压缩的多个网络数据包的缓存队列中是否存在由于丢弃定时器超时而被丢弃的情形;如果是,则进入步骤S330;如果否,则退出整个方法。步骤S330:将在所述成功压缩的网络数据包的缓存队列中,某一个或多个连续被丢弃的网络数据包称为A(p)至A(q);ROHC压缩器在所述成功压缩的网络数据包的缓存队列中,查找到A(p)至A(q)之前的网络数据包A(p-1)、以及A(p)至A(q)之后的网络数据包A(q+1)。步骤S340:ROHC压缩器基于网络数据包A(p-1)的报头对网络数据包A(q+1)的报头重新进行LSB编码。
上述ROHC压缩器的实现方法是本申请的实施例二,一旦发现有成功压缩的网络数据包因丢弃定时器超时而被丢弃,则在成功压缩的网络数据包的缓存队列中,对以被丢弃的网络数据包的报头作为报头压缩的参考值的那些网络数据包的报头重新进行LSB编码,避免了ROHC解压器在特定条件下的解压失败场景。
进一步地,所述步骤S330中,当p等于q时,A(p)至A(q)表示只有一个被丢弃的网络数据包;当p不等于q时,A(p)至A(q)表示有两个以上连续被丢弃的网络数据包。这是两种常见的情形。
进一步地,所述步骤S330中,比较q-p与第一阈值的大小;当q-p≥第一阈值时,进入步骤S340;当q-p<第一阈值时,不进入步骤S340。这是本申请的实施例二的变形,用来减轻频繁进行LSB重新编码对移动终端的处理能力的负担,改为累计到一定数量后再对一批网络数据包进行LSB重新编码。
进一步地,将步骤S330改为步骤S332,将步骤S340改为步骤S342至步骤S344。步骤S332:将在所述成功压缩的网络数据包的缓存队列中,某一个或多个连续被丢弃的网络数据包称为A(p)至A(q);ROHC压缩器在所述成功压缩的网络数据包的缓存队列中,查找到A(p)至A(q)之后的网络数据包A(q+1)。步骤S342:ROHC压缩器将网络数据包A(q+1)的状态转为D-CHECK状态。步骤S344:当状态为D-CHECK的网络数据包A(q+1)得到基站上行调度授权时,ROHC压缩器判断其进行LSB编码时作为参考值的那个网络数据包与移动终端上一次已发送的网络数据包是否相同;如相同,则ROHC压缩器直接发送该网络数据包A(q+1);如不同,则ROHC压缩器基于移动终端上一次已发送的网络数据包的报头对网络数据包A(q+1)的报头重新进行LSB编码,并在编码后发送该重新编码的网络数据包A(q+1)。
上述ROHC压缩器的实现方法是本申请的实施例三,一旦发现有成功压缩的网络数据包因丢弃定时器超时而被丢弃,则在成功压缩的网络数据包的缓存队列中,对以被丢弃的网络数据包的报头作为报头压缩的参考值的那些网络数据包修改状态,等待其即将发送时再做处理,避免了其被丢弃而使得前期处理全部浪费的可能性。
本申请还提供了一种ROHC压缩器,包括丢弃查找单元、压缩单元。所述丢弃查找单元用来在压缩单元收到新的网络数据包A(n)时,查找成功压缩的、且未由于丢弃定时器超时而被丢弃的最新的一个网络数据包A(n-r),r为大于或等于1的整数。所述压缩单元用来对每个新收到的网络数据包的报头进行LSB编码,并以丢弃查找单元所找到的网络数据包A(n-r)作为本次对网络数据包A(n)的报头进行LSB编码的参考值;所述压缩单元还输出编码后的网络数据包的原始报头以及编码后的报头。
上述ROHC压缩器是本申请的实施例一,一旦发现有成功压缩的网络数据包因丢弃定时器超时而被丢弃,则不再以被丢弃的网络数据包的报头作为新接收的网络数据包的报头压缩的参考值,避免了ROHC解压器在特定条件下的解压失败场景。
进一步地,所述丢弃查找单元还用来在成功压缩的网络数据包的缓存队列中,查找一个或多个连续的由于丢弃定时器超时而被丢弃的网络数据包A(p)至A(q)。所述压缩单元还用来对成功压缩的网络数据包的缓存队列中,以网络数据包A(p)至A(q)之前的网络数据包A(p-1)的报头作为参考值,对网络数据包A(p)至A(q)之后的网络数据包A(q+1)的报头重新进行LSB编码。
上述ROHC压缩器是本申请的实施例二,一旦发现有成功压缩的网络数据包因丢弃定时器超时而被丢弃,则在成功压缩的网络数据包的缓存队列中,对以被丢弃的网络数据包的报头作为报头压缩的参考值的那些网络数据包的报头重新进行LSB编码,避免了ROHC解压器在特定条件下的解压失败场景。
进一步地,所述压缩单元比较q-p与第一阈值的大小;当q-p≥第一阈值时,压缩单元以网络数据包A(p-1)的报头对网络数据包A(q+1)的报头重新进行LSB编码;当q-p<第一阈值时,压缩单元不对网络数据包A(q+1)的报头重新进行LSB编码。这是本申请的实施例二的变形,用来减轻频繁进行LSB重新编码对移动终端的处理能力的负担,改为累计到一定数量后再对一批网络数据包进行LSB重新编码。
进一步地,所述丢弃查找单元还用来在成功压缩的网络数据包的缓存队列中,查找一个或多个连续的由于丢弃定时器超时而被丢弃的网络数据包A(p)至A(q)。所述压缩单元还用来对成功压缩的网络数据包的缓存队列中,将网络数据包A(q+1)的状态改为D-CHECK状态;所述压缩单元还在状态为D-CHECK的网络数据包A(q+1)得到基站上行调度授权时,判断其进行LSB编码时作为参考值的那个网络数据包与移动终端上一次已发送的网络数据包是否相同;如相同,则直接发送该网络数据包A(q+1);如不同,则压缩单元基于移动终端上一次已发送的网络数据包的报头对网络数据包A(q+1)的报头重新进行LSB编码,并在编码后发送该重新编码的网络数据包A(q+1)。
上述ROHC压缩器是本申请的实施例三,一旦发现有成功压缩的网络数据包因丢弃定时器超时而被丢弃,则在成功压缩的网络数据包的缓存队列中,对以被丢弃的网络数据包的报头作为报头压缩的参考值的那些网络数据包修改状态,等待其即将发送时再做处理,避免了其被丢弃而使得前期处理全部浪费的可能性。
本申请取得的技术效果是结合移动终端中的丢弃定时器对超时的上行数据包丢弃的现实环境,改变LSB编码的参考值的选取条件,对新接收的网络数据包的报头进行编码,或者对已经过报头压缩的网络数据包的报头重新进行LSB编码,从而预见性地降低基站中的ROHC解压器解压失败的概率。
附图说明
图1是本申请提供的ROHC压缩器的实现方法的实施例一的流程图。
图2是本申请提供的ROHC压缩器的实施例一的结构示意图。
图3是本申请提供的ROHC压缩器的实现方法的实施例二的流程图。
图4是本申请提供的ROHC压缩器的实施例二的结构示意图。
图5是本申请提供的ROHC压缩器的实现方法的实施例三的流程图。
图6是本申请提供的ROHC压缩器的实施例三的结构示意图。
图中附图标记说明:200为ROHC压缩器;210为丢弃查找单元;220为压缩单元。
具体实施方式
请参阅图1,本申请提供的ROHC压缩器的实现方法的实施例一包括如下步骤。
步骤S110:ROHC压缩器收到新的网络数据包A(n)。
步骤S120:ROHC压缩器查找到成功压缩、且未由于丢弃定时器超时而被丢弃的最新的一个网络数据包A(n-r)。r为大于或等于1的整数,r的取值取决于成功压缩的前面多少个网络数据包A(n-1)、……、A(n-r+1)由于丢弃定时器超时而被丢弃。如果r为1,则表明成功压缩的前一个网络数据包A(n-1)未由于丢弃定时器超时而被丢弃。
步骤S130:ROHC压缩器基于该网络数据包A(n-r)的报头对本次处理的网络数据包A(n)的报头进行LSB编码。
步骤S140:ROHC压缩器输出本次处理的网络数据包A(n)的原始报头以及编码后的报头。
优选地,所述步骤S110之前还包括基于每个网络数据包的报头做分流处理。这一步中,基于未压缩的原始网络数据包的报头进行解析,识别出报头中的特征,例如将网络数据包的不同协议作为特征。然后将不同特征的网络数据包分成不同的上下文(context)。每一个上下文由一个独立的ROHC压缩器进行编码压缩,所使用的编码算法就是该上下文对应的配置(profile)。经过分流后,不同特征的网络数据包就会分别送入不同的ROHC压缩器。
上述ROHC压缩器的实现方法的实施例一用来在对新的网络数据包的报头压缩时,总是选取已被压缩、且未被丢弃的最新的一个网络数据包的报头作为本次压缩的参考值,从而避免了将已被丢弃的网络数据包的报头作为本次压缩的参考值。这样可以避免ROHC解压器由于未能接收到某些网络数据包而使得解压所用的参考值与ROHC压缩器所用的参考值不一致的情况,提高ROHC解压器的解压成功率。
请参阅图2,与图1所示的ROHC压缩器的实现方法的实施例一相对应的,本申请还提供了ROHC压缩器的实施例一。所述ROHC压缩器200包括丢弃查找单元210、压缩单元220。
所述丢弃查找单元210用来在压缩单元220收到新的网络数据包A(n)时,查找成功压缩的、且未由于丢弃定时器超时而被丢弃的最新的一个网络数据包A(n-r),r为大于或等于1的整数。
所述压缩单元220用来对每个新收到的网络数据包的报头进行LSB编码,并以丢弃查找单元220所找到的网络数据包A(n-r)作为本次对网络数据包A(n)的报头进行LSB编码的参考值。所述压缩单元220还输出编码后的网络数据包的原始报头以及编码后的报头。
请参阅图3,本申请提供的ROHC压缩器的实现方法的实施例二完整地包含了实施例一的所有步骤,并且在实施例一的步骤S140后还包括如下步骤。
步骤S310:经过报头压缩的网络数据包A(n)被缓存。
步骤S320:ROHC压缩器检查在成功压缩的多个网络数据包的缓存队列中是否存在由于丢弃定时器超时而被丢弃的情形。如果是,则进入步骤S330。如果否,则退出整个方法。
步骤S330:将在所述成功压缩的网络数据包的缓存队列中,某一个或多个连续被丢弃的网络数据包称为A(p)至A(q)。p可以等于q,此时就只有一个被丢弃的网络数据包。p也可以不等于q,此时就有两个以上连续被丢弃的网络数据包。ROHC压缩器在所述成功压缩的网络数据包的缓存队列中,查找到A(p)至A(q)之前的网络数据包A(p-1)、以及A(p)至A(q)之后的网络数据包A(q+1)。
步骤S340:ROHC压缩器基于网络数据包A(p-1)的报头对网络数据包A(q+1)的报头重新进行LSB编码。
上述ROHC压缩器的实现方法的实施例二用来对成功压缩的多个网络数据包的缓存队列中,一旦出现网络数据包被丢弃的情况,则对被丢弃网络数据包之后的那个网络数据包重新进行LSB编码,也是避免了将已被丢弃的网络数据包的报头作为后续网络数据包的报头压缩的参考值。这样可以避免ROHC解压器由于未能接收到某些网络数据包而使得解压所用的参考值与ROHC压缩器所用的参考值不一致的情况,提高ROHC解压器的解压成功率。
作为一种变形,所述步骤S330中,比较q-p与第一阈值的大小。当q-p≥第一阈值时,进入步骤S340。当q-p<第一阈值时,不进入步骤S340。这样可以避免对网络数据包频繁地重新进行LSB编码,减轻对移动终端的处理能力的压力。
请参阅图4,与图3所示的ROHC压缩器的实现方法的实施例二相对应的,本申请还提供了ROHC压缩器的实施例二。所述ROHC压缩器200包括丢弃查找单元210、压缩单元220。
所述丢弃查找单元210用来在压缩单元220收到新的网络数据包A(n)时,查找成功压缩的、且未由于丢弃定时器超时而被丢弃的最新的一个网络数据包A(n-r),r为大于或等于1的整数。所述丢弃查找单元210还用来在成功压缩的网络数据包的缓存队列中,查找一个或多个连续的由于丢弃定时器超时而被丢弃的网络数据包A(p)至A(q)。p可以等于q,此时就只有一个被丢弃的网络数据包。p也可以不等于q,此时就有两个以上连续被丢弃的网络数据包。由于囊括了连续被丢弃的情形,因此A(p)至A(q)之前的网络数据包A(p-1)、以及A(p)至A(q)之后的网络数据包A(q+1)都未由于丢弃定时器超时而被丢弃。
所述压缩单元220用来对每个新收到的网络数据包的报头进行LSB编码,并以丢弃查找单元220所找到的网络数据包A(n-r)作为本次对网络数据包A(n)的报头进行LSB编码的参考值。所述压缩单元220还用来对成功压缩的网络数据包的缓存队列中,某一个或多个连续被丢弃的网络数据包A(p)至A(q)之后的网络数据包A(q+1)的报头重新进行LSB编码,并以所述一个或多个连续被丢弃的网络数据包A(p)至A(q)之前的网络数据包A(p-1)的报头作为重新进行LSB编码的参考值。所述压缩单元220还输出编码后的网络数据包的原始报头以及编码后的报头。
作为一种变形,所述压缩单元220比较q-p与第一阈值的大小。当q-p≥第一阈值时,压缩单元220以网络数据包A(p-1)的报头对网络数据包A(q+1)的报头重新进行LSB编码。当q-p<第一阈值时,压缩单元220不对网络数据包A(q+1)的报头重新进行LSB编码。
请参阅图5,这是本申请提供的ROHC压缩器的实现方法的实施例三。其与图3所示的ROHC压缩器的实现方法的实施例二相比,区别仅在于将步骤S330改为步骤S332,将步骤S340改为步骤S342至步骤S344。
步骤S332:将在所述成功压缩的网络数据包的缓存队列中,某一个或多个连续被丢弃的网络数据包称为A(p)至A(q)。p可以等于q,此时就只有一个被丢弃的网络数据包。p也可以不等于q,此时就有两个以上连续被丢弃的网络数据包。ROHC压缩器在所述成功压缩的网络数据包的缓存队列中,查找到A(p)至A(q)之后的网络数据包A(q+1)。
步骤S342:ROHC压缩器将网络数据包A(q+1)的状态转为D-CHECK(double check,再次确认)状态。
步骤S344:当状态为D-CHECK的网络数据包A(q+1)得到基站上行调度授权时,再判断其进行LSB编码时作为参考值的那个网络数据包与移动终端上一次已发送的网络数据包是否相同。如相同,则直接发送该网络数据包A(q+1)。如不同,则ROHC压缩器基于移动终端上一次已发送的网络数据包的报头对网络数据包A(q+1)的报头重新进行LSB编码,并在编码后发送该重新编码的网络数据包A(q+1)。
请参阅图6,与图5所示的ROHC压缩器的实现方法的实施例三相对应的,本申请还提供了ROHC压缩器的实施例三。所述ROHC压缩器200包括丢弃查找单元210、压缩单元220。
所述丢弃查找单元210用来在压缩单元220收到新的网络数据包A(n)时,查找成功压缩的、且未由于丢弃定时器超时而被丢弃的最新的一个网络数据包A(n-r),r为大于或等于1的整数。所述丢弃查找单元210还用来在成功压缩的网络数据包的缓存队列中,查找一个或多个连续的由于丢弃定时器超时而被丢弃的网络数据包A(p)至A(q)。p可以等于q,此时就只有一个被丢弃的网络数据包。p也可以不等于q,此时就有两个以上连续被丢弃的网络数据包。由于囊括了连续被丢弃的情形,因此A(p)至A(q)之后的网络数据包A(q+1)都未由于丢弃定时器超时而被丢弃。
所述压缩单元220用来对每个新收到的网络数据包的报头进行LSB编码,并以丢弃查找单元220所找到的网络数据包A(n-r)作为本次对网络数据包A(n)的报头进行LSB编码的参考值。所述压缩单元220还输出编码后的网络数据包的原始报头以及编码后的报头。所述压缩单元220还用来对成功压缩的网络数据包的缓存队列中,某一个或多个连续被丢弃的网络数据包A(p)至A(q)之后的网络数据包A(q+1)的状态改为D-CHECK状态。所述压缩单元220还在状态为D-CHECK的网络数据包A(q+1)得到基站上行调度授权时,判断其进行LSB编码时作为参考值的那个网络数据包与移动终端上一次已发送的网络数据包是否相同。如相同,则直接发送该网络数据包A(q+1)。如不同,则压缩单元220基于移动终端上一次已发送的网络数据包的报头对网络数据包A(q+1)的报头重新进行LSB编码,并在编码后发送该重新编码的网络数据包A(q+1)。
本申请提供的ROHC压缩器及其实现方法,结合移动终端中的丢弃定时器对超时的上行数据包丢弃的现实环境,改变LSB编码的参考值的选取条件,对新接收的网络数据包的报头进行编码,或者对已经过报头压缩的网络数据包的报头重新进行LSB编码,从而预见性地降低基站中的ROHC解压器解压失败的概率。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。