一种ROHC***及其实现方法
技术领域
本申请涉及一种压缩方案,特别是涉及一种ROHC***及其实现方法。
背景技术
ROHC(Robust Header Compression,鲁棒性报头压缩)是一种对网络数据包的报头(header)进行压缩的技术,主要应用在无线传输的空中接口(air interface,也称空口),用来提高空口的资源利用率。所述报头包括静态域(static field)和动态域(dynamicfield),并分别有各自的值。ROHC的功能实体包括压缩器和解压器。
ROHC协议定义了三种工作模式:单向模式(Unidirectional mode)、双向乐观模式(Bidirectional Optimistic mode)、双向可靠模式(Bidirectional Reliable mode)。所述单向模式是指当无线链路不存在或不能使用反馈信道时,解压方不向压缩方发送反馈信息。所述双向乐观模式是指当无线链路存在可以利用的反馈信道时,解压方或者在正确解压时、或者在错误解压时(二选一),向压缩方发送反馈信息。所述双向可靠模式是指当无线链路质量较好时,解压方无论正确解压还是错误解压,总是向压缩方发送反馈信息。ROHC压缩器和解压器都从单向模式开始,然后视情况可以转移到双向乐观模式,然后视情况可以转移到双向可靠模式。
ROHC协议还定义了三种压缩状态,由低阶到高阶分别是IR(Initialization andRefresh state,初始化和更新状态)、FO(First Order state,一阶压缩状态)、SO(SecondOrder state,二阶压缩状态)。IR状态是最低阶的,压缩后的数据包的报头最大,甚至可能超过原始未压缩的报头。SO状态是最高阶的,压缩后的数据包的报头最小,压缩率最大。
无线信道可能存在的误差或错误会导致ROHC解压器的解压失败,在某些工作模式下ROHC解压器就会向ROHC压缩器发送ACK(Acknowledgment,确认应答)、NACK(NegativeAcknowledgment,否定应答)、STATIC-NACK(静态否定应答)等反馈(Feedback)数据包。这可能会触发ROHC压缩器对压缩状态进行调整。现有的ROHC实现方案中,ROHC压缩器只能被动地等待ROHC解压器发来反馈数据包,从中了解到ROHC解压器的工作状况,再相应地调整自身对报头的压缩状态。
发明内容
本申请所要解决的技术问题是提供一种ROHC***的实现方法,可以增加ROHC压缩器和ROHC解压器之间的交流机会,使ROHC压缩器能够及时了解到ROHC解压器的工作状况,并有针对性地调整压缩状态。为此,本申请还要提供相应的ROHC***。
为解决上述技术问题,本申请提供了一种ROHC***的实现方法,包括如下步骤。步骤S110:ROHC压缩器对报头逐个压缩,并对每一个成功压缩的报头进行累积计数,记为COUNT;同时对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES;还设定报头数量阈值N,报头字节总量阈值Q。步骤S120:每当COUNT≥N或TOTALBYTES≥Q时,ROHC压缩器向ROHC解压器发送请求反馈数据包,随后将COUNT和TOTALBYTES清零。步骤S130:ROHC解压器收到请求反馈数据包后,根据当前ROHC解压器的工作状况生成相应类型的反馈数据包并发送给ROHC压缩器。步骤S140:ROHC压缩器收到ROHC解压器发来的反馈数据包后,针对不同类型的反馈数据包进行相应处理。
上述ROHC***的实现方法是本申请的实施例一,ROHC压缩器根据定额的工作量(例如,按照数量或字节量的定额工作量)主动地向ROHC解压器发起轮询,以便尽早获知ROHC解压器的工作状况,并用来调整自身的压缩状态。这有利于提高ROHC解压器后续压缩数据的鲁棒性或有效性。
进一步地,所述步骤S130中,如果ROHC解压器当前工作正常,能够成功解压报头,则生成ACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的动态域,则生成NACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的静态域,则生成STATIC-NACK类型反馈数据包并发送。这是一种优选的、从技术角度最为合理的实现方式。
进一步地,所述步骤S140中,当收到ACK类型反馈数据包,ROHC压缩器保持当前的压缩状态不变、或者改为更高阶的压缩状态。当收到NACK类型反馈数据包,ROHC压缩器将压缩状态改为更低阶的压缩状态。当收到STATIC-NACK类型反馈数据包,ROHC压缩器将压缩状态改为IR。这是一种优选的实现方式。
本申请还提供了一种ROHC***,其特征是,包括ROHC压缩器、ROHC解压器。所述ROHC压缩器包括压缩单元、计数单元、计量单元、请求反馈单元;所述压缩单元用于压缩报头并将压缩后的报头发出;所述压缩单元还用于在收到ROHC解压器发来的反馈数据包后,针对不同类型的反馈数据包对压缩状态进行相应调整;所述计数单元用于对每一个成功压缩的报头进行累积计数,记为COUNT;所述计数单元还在请求反馈单元每次发出反馈数据包后,将COUNT清零;所述计量单元用于对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES;所述计量单元还在请求反馈单元每次发出反馈数据包后,将TOTALBYTES清零;所述请求反馈单元用于在COUNT≥N或TOTALBYTES≥Q时,向ROHC解压器发送请求反馈数据包。所述ROHC解压器包括解压单元、反馈单元;所述解压单元用于接收经压缩后的报头并解压;所述反馈单元用于在收到请求反馈数据包后,根据当前ROHC解压器的工作状况生成相应类型的反馈数据包并发送给ROHC压缩器。
上述ROHC***是本申请的实施例一,ROHC压缩器根据定额的工作量主动地向ROHC解压器发起轮询,以便尽早获知ROHC解压器的工作状况,并用来调整自身的压缩状态。这有利于提高ROHC解压器后续压缩数据的鲁棒性或有效性。
进一步地,所述压缩单元收到ACK类型反馈数据包后,保持当前的压缩状态不变、或者改为更高阶的压缩状态。所述压缩单元收到NACK类型反馈数据包后,将压缩状态改为更低阶的压缩状态。所述压缩单元收到STATIC-NACK类型反馈数据包后,将压缩状态改为IR。这是一种优选的实现方式。
进一步地,如果ROHC解压器当前工作正常,能够成功解压报头,所述反馈单元生成ACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的动态域,所述反馈单元生成NACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的静态域,所述反馈单元生成STATIC-NACK类型反馈数据包并发送。这是一种优选的、从技术角度最为合理的实现方式。
本申请还提供了一种ROHC***的实现方法,包括如下步骤。步骤S310:ROHC压缩器对报头逐个压缩,并对每一个成功压缩的报头进行累积计数,记为COUNT;同时对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES;还设定报头数量阈值N,报头字节总量阈值Q。步骤S320:每当COUNT≥N或TOTALBYTES≥Q时,ROHC压缩器向ROHC解压器发送请求反馈数据包,随后将COUNT和TOTALBYTES清零。步骤S330:ROHC解压器收到请求反馈数据包后,根据当前ROHC解压器的工作状况生成相应类型的反馈数据包并缓存。步骤S340:在禁止反馈计时器的计时到达之前,ROHC解压器如果没有生成新的反馈数据包,则在禁止反馈计时器的计时到达之后,ROHC解压器将缓存的反馈数据包发出,重启禁止反馈计时器。在禁止反馈计时器的计时到达之前,ROHC解压器如果生成了新的反馈数据包,并且新的反馈数据包与已缓存的反馈数据包的类型相同,则ROHC解压器以新的反馈数据包更新缓存中的反馈数据包;在禁止反馈计时器的计时到达之后,ROHC解压器将最新缓存的反馈数据包发出,重启禁止反馈计时器。在禁止反馈计时器的计时到达之前,ROHC解压器如果生成了新的反馈数据包,并且新的反馈数据包如果与已缓存的反馈数据包的类型不同,则ROHC解压器删除已缓存的反馈数据包,将新的反馈数据包发出,重启禁止反馈计时器。ROHC解压器每发送一个反馈数据包后,就启动或重启禁止反馈计时器。步骤S350:ROHC压缩器收到ROHC解压器发来的反馈数据包后,针对不同类型的反馈数据包进行相应处理。
上述ROHC***的实现方法是本申请的实施例二,ROHC压缩器根据定额的工作量主动地向ROHC解压器发起轮询,以便尽早获知ROHC解压器的工作状况,并用来调整自身的压缩状态。这有利于提高ROHC解压器后续压缩数据的鲁棒性或有效性。ROHC解压器则避免在短时间内重复发送同样类型的反馈数据包,降低无线通信承载资源消耗,提高无线资源利用率。
进一步地,所述步骤S330中,如果ROHC解压器当前工作正常,能够成功解压报头,则生成ACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的动态域,则生成NACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的静态域,则生成STATIC-NACK类型反馈数据包并发送。这是一种优选的、从技术角度最为合理的实现方式。
进一步地,所述步骤S350中,当收到ACK类型反馈数据包,ROHC压缩器保持当前的压缩状态不变、或者改为更高阶的压缩状态。当收到NACK类型反馈数据包,ROHC压缩器将压缩状态改为更低阶的压缩状态。当收到STATIC-NACK类型反馈数据包,ROHC压缩器将压缩状态改为IR。这是一种优选的实现方式。
本申请还提供了一种ROHC***,包括ROHC压缩器、ROHC解压器。所述ROHC压缩器包括压缩单元、计数单元、计量单元、请求反馈单元;所述压缩单元用于压缩报头并将压缩后的报头发出;所述压缩单元还用于在收到ROHC解压器发来的反馈数据包后,针对不同类型的反馈数据包对压缩状态进行相应调整;所述计数单元用于对每一个成功压缩的报头进行累积计数,记为COUNT;所述计数单元还在请求反馈单元每次发出反馈数据包后,将COUNT清零;所述计量单元用于对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES;所述计量单元还在请求反馈单元每次发出反馈数据包后,将TOTALBYTES清零;所述请求反馈单元用于在COUNT≥N或TOTALBYTES≥Q时,向ROHC解压器发送请求反馈数据包。所述ROHC解压器包括解压单元、定时单元、反馈单元;所述解压单元用于接收经压缩后的报头并解压;所述定时单元用于在反馈单元每次发出反馈数据包后,启动或重启禁止反馈计时;所述反馈单元用于在收到请求反馈数据包后,根据当前ROHC解压器的工作状况生成相应类型的反馈数据包并缓存;在定时单元的计时期间,反馈单元如果生成了新的反馈数据包,并且新的反馈数据包与已缓存的反馈数据包的类型相同,则反馈单元以新的反馈数据包更新缓存中的反馈数据包;在定时单元的计时期间,反馈单元如果生成了新的反馈数据包,并且新的反馈数据包如果与已缓存的反馈数据包的类型不同,则反馈单元删除已缓存的反馈数据包,将新的反馈数据包发送给ROHC压缩器;在定时单元的计时期满后,反馈单元将最新缓存的反馈数据包发送给ROHC压缩器。
上述ROHC***是本申请的实施例二,ROHC压缩器根据定额的工作量主动地向ROHC解压器发起轮询,以便尽早获知ROHC解压器的工作状况,并用来调整自身的压缩状态。这有利于提高ROHC解压器后续压缩数据的鲁棒性或有效性。ROHC解压器则避免在短时间内重复发送同样类型的反馈数据包,降低无线通信承载资源消耗,提高无线资源利用率。
进一步地,所述压缩单元收到ACK类型反馈数据包后,保持当前的压缩状态不变、或者改为更高阶的压缩状态。所述压缩单元收到NACK类型反馈数据包后,将压缩状态改为更低阶的压缩状态。所述压缩单元收到STATIC-NACK类型反馈数据包后,将压缩状态改为IR。这是一种优选的实现方式。
进一步地,如果ROHC解压器当前工作正常,能够成功解压报头,所述反馈单元生成ACK类型反馈数据包并缓存。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的动态域,所述反馈单元生成NACK类型反馈数据包并缓存。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的静态域,所述反馈单元生成STATIC-NACK类型反馈数据包并缓存。这是一种优选的、从技术角度最为合理的实现方式。
本申请取得的技术效果是ROHC压缩器可以更为及时地、按照自身定额工作量来获知ROHC解压器的工作状况,从而调整自身的压缩状态。这有利于提高ROHC解压器后续压缩数据的鲁棒性或有效性。
附图说明
图1是本申请提供的ROHC***的实现方法的实施例一的流程图。
图2是本申请提供的ROHC***的实施例一的结构示意图。
图3是本申请提供的ROHC***的实现方法的实施例二的流程图。
图4是本申请提供的ROHC***的实施例二的结构示意图。
图中附图标记说明:200为ROHC***;210为ROHC压缩器;212为压缩单元;214为计数单元;216为计量单元;218为请求反馈单元;220为ROHC解压器;222为解压单元;224为定时单元;228为反馈单元。
具体实施方式
请参阅图1,本申请提供的ROHC***的实现方法的实施例一包括如下步骤。
步骤S110:ROHC压缩器对报头逐个压缩,并对每一个成功压缩的报头进行累积计数,记为COUNT;同时对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES。这一步中,ROHC压缩器还设定报头数量阈值N,报头字节总量阈值Q。
步骤S120:每当COUNT≥N或TOTALBYTES≥Q时,ROHC压缩器向ROHC解压器发送请求反馈(Feedback Request)数据包,随后将COUNT和TOTALBYTES清零。
步骤S130:ROHC解压器收到请求反馈数据包后,根据当前ROHC解压器的工作状况生成相应类型的反馈数据包并发送给ROHC压缩器。如果ROHC解压器当前工作正常,能够成功解压报头,则生成ACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的动态域,则生成NACK类型反馈数据包并发送。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的静态域,则生成STATIC-NACK类型反馈数据包并发送。
步骤S140:ROHC压缩器收到ROHC解压器发来的反馈数据包后,针对不同类型的反馈数据包进行相应处理。例如,针对ACK类型反馈数据包,ROHC压缩器保持当前的压缩状态不变、或者改为更高阶的压缩状态。又如,针对NACK类型反馈数据包,ROHC压缩器收到后将压缩状态改为更低阶的压缩状态。再如,针对STATIC-NACK类型反馈数据包,ROHC压缩器收到后将压缩状态改为IR。
请参阅图2,与图1所示的ROHC***的实现方法的实施例一相对应地,本申请还提供了一种ROHC***的实施例一。所述ROHC***200包括ROHC压缩器210、ROHC解压器220。
所述ROHC压缩器210包括压缩单元212、计数单元214、计量单元216、请求反馈单元218。所述压缩单元212用于压缩报头并将压缩后的报头发出。所述压缩单元212还用于在收到ROHC解压器220发来的反馈数据包后,针对不同类型的反馈数据包对压缩状态进行相应调整。所述计数单元214用于对每一个成功压缩的报头进行累积计数,记为COUNT。所述计数单元214还在请求反馈单元218每次发出反馈数据包后,将COUNT清零。所述计量单元216用于对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES。所述计量单元216还在请求反馈单元218每次发出反馈数据包后,将TOTALBYTES清零。所述请求反馈单元218用于在COUNT≥N或TOTALBYTES≥Q时,向ROHC解压器220发送请求反馈数据包。
进一步地,所述压缩单元212收到ROHC解压器220发来的ACK类型反馈数据包后,保持当前的压缩状态不变、或者改为更高阶的压缩状态。所述压缩单元212收到ROHC解压器220发来的NACK类型反馈数据包后,将压缩状态改为更低阶的压缩状态。所述压缩单元212收到ROHC解压器220发来的STATIC-NACK类型反馈数据包后,将压缩状态改为IR。
所述ROHC解压器220包括解压单元222、反馈单元228。所述解压单元222用于接收经压缩后的报头并解压。所述反馈单元226用于在收到请求反馈数据包后,根据当前ROHC解压器220的工作状况生成相应类型的反馈数据包并发送给ROHC压缩器210。
进一步地,如果ROHC解压器220当前工作正常,能够成功解压报头,则反馈单元226生成ACK类型反馈数据包并发送。如果ROHC解压器220的工作异常,并且不能成功解压的部分是报头的动态域,则反馈单元226生成NACK类型反馈数据包并发送。如果ROHC解压器220的工作异常,并且不能成功解压的部分是报头的静态域,则反馈单元226生成STATIC-NACK类型反馈数据包并发送。
总的来说,所述ROHC压缩器210在发出一定数量或一定字节量的经压缩的报头后(以先到为准),就向ROHC解压器220发出一个请求反馈数据包,之后可继续发出经压缩的报头。而ROHC解压器220在收到请求反馈数据包后,就向ROHC压缩器210发送反应自身工作状态的反馈数据包。这样,ROHC压缩器210就通过主动询问的方式及时了解ROHC解压器220的工作状态,并适应性地调整自身的压缩状态。这种调整行为发生在在ROHC解压器220解压失败之前,因此以较小的压缩有效性的损失获得整个ROHC信道上的鲁棒性的增强。
请参阅图3,本申请提供的ROHC***的实现方法的实施例二包括如下步骤。
步骤S310:ROHC压缩器对报头逐个压缩,并对每一个成功压缩的报头进行累积计数,记为COUNT;同时对每一个成功压缩的报头的原始字节大小进行累积计量,记为TOTALBYTES。这一步中,ROHC压缩器还设定报头数量阈值N,报头字节总量阈值Q。
步骤S320:每当COUNT≥N或TOTALBYTES≥Q时,ROHC压缩器向ROHC解压器发送请求反馈数据包,随后将COUNT和TOTALBYTES清零。
步骤S330:ROHC解压器收到请求反馈数据包后,根据当前ROHC解压器的工作状况生成相应类型的反馈数据包并缓存。如果ROHC解压器当前工作正常,能够成功解压报头,则生成ACK类型反馈数据包并缓存。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的动态域,则生成NACK类型反馈数据包并缓存。如果ROHC解压器的工作异常,并且不能成功解压的部分是报头的静态域,则生成STATIC-NACK类型反馈数据包并缓存。
步骤S340:在禁止反馈计时器的计时到达之前,ROHC解压器如果没有生成新的反馈数据包,则在禁止反馈计时器的计时到达之后,ROHC解压器将缓存的反馈数据包发出,重启禁止反馈计时器。
在禁止反馈计时器的计时到达之前,ROHC解压器如果生成了新的反馈数据包,并且新的反馈数据包与已缓存的反馈数据包的类型相同,则ROHC解压器以新的反馈数据包更新缓存中的反馈数据包。在禁止反馈计时器的计时到达之后,ROHC解压器将最新缓存的反馈数据包发出,重启禁止反馈计时器。
在禁止反馈计时器的计时到达之前,ROHC解压器如果生成了新的反馈数据包,并且新的反馈数据包如果与已缓存的反馈数据包的类型不同,则ROHC解压器删除已缓存的反馈数据包,将新的反馈数据包发出,重启禁止反馈计时器。
这一步中,ROHC解压器每发送一个反馈数据包后,就启动或重启禁止反馈计时器。
步骤S350:ROHC压缩器收到ROHC解压器发来的反馈数据包后,针对不同类型的反馈数据包进行相应处理。例如,针对ACK类型反馈数据包,ROHC压缩器保持当前的压缩状态不变、或者改为更高阶的压缩状态。又如,针对NACK类型反馈数据包,ROHC压缩器收到后将压缩状态改为更低阶的压缩状态。再如,针对STATIC-NACK类型反馈数据包,ROHC压缩器收到后将压缩状态改为IR。
请参阅图4,与图3所示的ROHC***的实现方法的实施例二相对应地,本申请还提供了一种ROHC***的实施例二。所述ROHC***200包括ROHC压缩器210、ROHC解压器220。ROHC***的实施例二与实施例一的区别仅在于ROHC解压器220。
所述ROHC解压器220包括解压单元222、定时单元224、反馈单元228。所述解压单元222用于接收经压缩后的报头并解压。所述定时单元224用于在反馈单元226每次发出反馈数据包后,启动或重启禁止反馈计时。所述反馈单元226用于在收到请求反馈数据包后,根据当前ROHC解压器220的工作状况生成相应类型的反馈数据包并缓存。在定时单元224的计时期间,反馈单元226如果生成了新的反馈数据包,并且新的反馈数据包与已缓存的反馈数据包的类型相同,则反馈单元226以新的反馈数据包更新缓存中的反馈数据包。在定时单元224的计时期间,反馈单元226如果生成了新的反馈数据包,并且新的反馈数据包如果与已缓存的反馈数据包的类型不同,则反馈单元226删除已缓存的反馈数据包,将新的反馈数据包发送给ROHC压缩器210。在定时单元224的计时期满后,反馈单元226将最新缓存的反馈数据包发送给ROHC压缩器210。
进一步地,如果ROHC解压器220当前工作正常,能够成功解压报头,则反馈单元226生成ACK类型反馈数据包并缓存。如果ROHC解压器220的工作异常,并且不能成功解压的部分是报头的动态域,则反馈单元226生成NACK类型反馈数据包并缓存。如果ROHC解压器220的工作异常,并且不能成功解压的部分是报头的静态域,则反馈单元226生成STATIC-NACK类型反馈数据包并缓存。
上述ROHC***的实施例二通过ROHC解压器中新增的定时单元,可以在计时期间过滤掉部分的反馈数据包,用来减少同样类型的反馈数据包的数量,降低无线通信承载资源消耗,进而提高无线资源利用率。
本申请提供的ROHC***及其实现方法在被动地等待ROHC解压器的反馈数据包的基础上,额外地通过主动请求的方式、根据ROHC压缩器的工作量(例如,按照数量或字节量的定额工作量)轮询,从而及早获知ROHC解压器的工作状况。这有利于提高ROHC解压器后续压缩上下文(context)的鲁棒性或有效性,避免很多在途(传输中)的压缩包在送到解压器后持续解压失败而丢弃。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。