无线网络中ROHC压缩算法研究

2017-05-02 15:30邱宏燕杨灿张大明
移动通信 2017年6期

邱宏燕+杨灿+张大明

【摘 要】为了提高无线网络的报头压缩效率及压缩鲁棒性,针对无线网络存在多种窄带传输链路且传输速率较低、误码率较高、节点移动频繁等特征,介绍了ROHC报头压缩算法,研究了基于无线信道估计与上层业务需求、节点移动和多播三种情况下压缩算法优化改进思路,并通过仿真测试对比和分析,验证了无线节点移动情况下ROHC改进算法的可行性。

【关键词】鲁棒性报头压缩协议 自适应报头压缩 多播传输系统

1 引言

随着无线网络和IP技术的发展及融合,未来通信系统向全IP网络方向发展,因此IP协议将成为下一代无线网络的核心承载技术。在无线网络中,存在短波、卫星、VHF、UHF等多种窄带无线传输手段,链路传输速率较低,误码率较高,而IPv4(20字节)、IPv6(40字节)等报头较长,为了有效提高有限的无线带宽资源,需对无线分组报头进行压缩。

目前应用于IPv4/IPv6等报头的压缩协议主要有VJHC、IPHC、CRTP、ROHC等,前三类压缩协议都是采用差分编码,而且简单修复机制,压缩效率容易受到丢包影响,在误码率较高的链路上反而会降低传输效率。基于这些原因,为了能在无线链路上获得较高的压缩率和较好的抗差错鲁棒性,IETF工作组于2001年提出了鲁棒性报头压缩协议(ROHC,Robust Header Compression)。在2007年、2008年、2013年相继对ROHC进行修正或补充。ROHC适用于误码率高、往返时间较长的无线链路,可对RTP/UDP/IPv4/IPv6、UDP/IPv4/IPv6、TCP/IPv4/IPv6等多种报头进行压缩。

2 无线网络中ROHC压缩总体设计

2.1 ROHC压缩算法总体架构

ROHC作为一种单跳点到点压缩协议,在无线网络中的应用如图1所示。主要针对其窄带传输通道,利用ROHC压缩协议将上层报头(RTP/UDP/IPv4/IPv6、TCP/IPv4/IPv6)进行有效压缩,从而减小报头占用链路带宽,提升有效载荷传输能力和服务质量。

ROHC压缩算法总体框架如图2所示,由ROHC压缩和解压两个模块构成,主要包括以下八个部分:

(1)根据报头确定简档类型ID:PID(如RTP PID为0x0101);

(2)根据分组流确定上下文CID;

(3)ROHC工作模式:U、O、R模式;

(4)ROHC压缩器工作状态:IR、FO、SO三个状态;

(5)ROHC解压器工作状态:NC、SC和FC三个状态;

(6)IP、UDP、TCP等各报头域分类;

(7)ROHC压缩分组类型:IR、IR-DYN、UOR-2等14类;

(8)W-LSB编解码和CRC校验。

2.2 ROHC压缩算法思路

(1)报头域的分类

大多数连续报文的报头域并不是随机变化的,许多域在大部分时间内是静态不变的,即使有变化的域也是可以预测或和其他域相关的。这就使得报头压缩是可实现的。当设计一个压缩算法之前,必须了解每个域的行为和细节。在基本的分类中,报头域分为可推算域、静态域、静态定义域、静态可知域和动态域。可推断域包含的域值可以从其他域的域值中推断出来,这些字段域在所有的压缩方案中是不传送的,如IPv6报头中数据长度、TCP报头中数据偏移字段。静态域在数据流的整个生命周期内都是固定值,只在初始化时传输一次即可,如IP报头中的版本号等。静态定义域属于静态域中的一种,该类型的字段域用来区分不同的数据流,在整个数据流发送期间保持不变,如IPv6报头中的流标记、源IP地址、目的IP地址等。静态已知域的字段域是可知的,所以不需要传送。动态域的字段域值是改变的,或随机改变或有规律地改变,如TCP报头中的SN字段是有规律的,但TCP校验和是无规律的。

(2)分流器和上下文

在一个包流的生命周期内,无线链路上传输的数据包之间并不是各自独立的,而是具有某些相同的参数,比如相同的IP版本、源地址和目的地址等。封装后的数据包在经过分流器后按照一定的匹配原则分成不同的组,比如音频流的数据包和视频流的数据包。同一个组的包流共享相同的静态定义域。

当数据流经过分流器时,压缩器首先进行归类,然后读取静态定义域来区分不同的流,如表1所示,最后生成上下文并根據当前的信道状态信息分配上下文标识符。不同的包流对应着不同的压缩规则。同一个流在报头压缩器和解压器中维持一个相同的上下文,上下文由分流器分配的上下文标识符来识别。

(3)ROHC报文类型

ROHC方案中规定了两种报文类型:一种是压缩报头类型;一种是反馈报文类型。压缩报头类型包括初始化类型(IR-header)、FO动态域类型(FO-DYN)和基于具体协议族的M-header压缩报文。

IR-header:用来初始化上下文,传输的是上下文中的静态信息,有时也传输部分动态信息,如IR或IR-DYN报文。

FO-DYN:一般传输上下文中的动态信息,从不传输已经初始化过的信息。

M-header:不同的协议族传输的IR-header和FO-DYN格式基本一样。但M-header压缩报文格式由于不同协议族压缩策略不一样,具体格式有所区别。如RTP/UDP/IP压缩报头可以分为三种类型:报文类型0(UO_0)、报文类型1(UO_1_ID、UO_1_TS、UO_1_RTP)、报文类型2(UOR_2、UOR_2_ID、UOR_2_TS、UOR_2_RTP)。

反馈报文类型包括Feedback1、Feedback2两种类型。其中Feedback2包含ACK、NACK、STATIC-NACK三种类型。ACK表示正反馈,用于上下文正确更新的反馈;NACK表示负反馈,用于上下文没有正确更新的反馈;STATIC-NACK用于静态上下文没有正确更新的反馈。Feedback1只用于传输ACK反馈报文。

(4)ROHC状态机和工作模式

ROHC定义了三种工作模式:单向模式(Unidirectional,U-Mode)、双向乐观模式(Bidirectional Optimistic,O-Mode)、双向可靠模式(Bidirectional Reliable,R-Mode)。每种模式下都有不同的压缩状态和解压状态,不同的工作模式对应的压缩/解压缩状态转移方式也不同。

ROHC压缩器有三种压缩状态,每一种都是不同程度的压缩,分别为:IR状态(Initialization and Refresh)、FO状态(First Order)和SO状态(Second Order),这三种压缩状态级别依次升高,压缩器总是从最低压缩状态IR状态开始工作,然后根据转移条件或解压器反馈情况依次向高压缩状态(FO或SO)转移。ROHC解压器也有三种状态:无上下文状态(No Context,NC)、静态上下文状态(Static Context,SC)、全上下文状态(Full Context,FC)。

(5)ROHC编码算法

最低有效位(LSB,Least Significant Bit)和基于滑动窗口最低有效位(W-LSB,Windows-Least Significant Bit)编码算法是ROHC协议中非常重要的压缩算法,贯穿于ROHC算法的整个压缩和解压过程。LSB方法虽然简单,但每个信头的解压需要上一个信头的正确接收。这种方法不适合于无线链路,因为单个分组丢失时,用于下个分组解压的上下文无效,导致丢弃压缩/解压缩上下文同步,于是下一个分组不能正确解压而被丢弃。基于LSB算法存在的问题,为了提高算法可靠性,提出了W-LSB编码算法,该算法使用含有多个参考值的滑动窗口,传输过程中即使某个参考值丢失,解压器只要接收到其它参考值中的任意一个,就可以正确解压LSB编码的值。

3 无线网络中ROHC压缩算法改进

3.1 基于ROHC的自适应报头压缩

在无线网络中,任意两节点间的信道条件随着地形环境、干扰情况而变化,同时不同的业务需求也不同,有的业务对实时性要求很高,有的必须保障可靠传输等等,基于这些因素,不能简单地将具有相同参数配置的ROHC算法应用到无线网络中的任何一个节点中。为此,提出了一种结合无线信道估计、业务需求的基于ROHC的自适应报头压缩框架,即根据无线信道状态进行信道估计并自适应调整W-LSB算法中SWW滑动窗口大小、压缩器和解压器的工作模式以及状态转移。当上层业务需求改变时,工作模式的选择由压缩器控制,具体如图3所示。

3.2 无线节点移动情况下ROHC改进

在无线网络中,节点移动频繁且两个无线节点间存在多条链路,如图4所示,如果直接采用表1的分流器匹配类型对分组流(即按照业务目的地址和源地址)进行分类,则当某业务源和目的节点间节点移动或者发送链路断开时,中间节点解压器上下文将失去同步,而从导致频繁发送反馈信息占用信道带宽。基于此情况,通过将表1中的分流器匹配类型增加一个匹配条件即下一跳ID来解决该问题,即根据业务目的地址、源地址、业务下一跳ID对数据进行分流。通过搭建实际测试平台验证了此改进思路的可行性。

3.3 无线网络多播环境下ROHC改进

在无线网络多播环境中,如果采用ROHC算法设计思路,一旦某一个解压方解压失败,就会导致压缩方返回到低状态上。此时压缩方的状态转移逻辑如图5所示。

从图5可以看出,在无线网络多播环境下,如果按照ROHC压缩方状态转移思路,不管是已连接用户上下文不同步还是新用户加入多播系统,都会造成压缩方向较低状态转移[10],从而导致整个系统的压缩效率降低。

为了解决无线网络多播环境所面临的这个问题,结合参考文献[10]中的思路,提出了一种基于组播邻居数的压缩方周期性发刷新报文的机制,以完善整个多播系统上下文更新方案,并进一步提升压缩效率。如图6所示,组播源节点S,节点D、E、F、G为同一个组播组,在S、A节点(组播邻居数为1)还是按照通用ROHC方式发送压缩报文,到B节点(组播邻居数大于1)以后,就按照这一方案,压缩方在不改变压缩状态的情况下,通过周期性地發送完整报头来完成多播系统的压缩上下文同步。这样一来,解压失败的单个解压方和新加入组播系统的成员在无法正常解压的情况下都无需向压缩方主动发送失败反馈,而只需等待至多一个刷新周期就能获取到最新的报头上下文,从而成功解压后续报文。同时,组播邻居数为1的用户还是按照ROHC原先压缩思路进行工作,不需周期性发送刷新报文,只有当收到解压失败反馈信息时才调整压缩器到低状态。具体说来,压缩方按照通用ROHC方式进入FO状态再进入SO状态。之后除非压缩方接收到的待压缩数据包的报头信息出现不规律变化,否则压缩方就一直处在SO状态。同时,压缩方还需要设置一个定时器IR_TIMEOUT,每次超时之后,发送三个IR数据包,用来为新加入的接收方初始化压缩上下文,也可以作为已经加入多播系统的其他接收方检查上下文是否同步的依据。同时,这三个IR数据包的原始待压缩数据还是按照正常压缩流程进行相应状态下的压缩并发送,以保证正在传输数据的链路的信息连续性。改进后的压缩方状态转移流程如图7所示。

4 仿真结果与分析

下面以无线节点移动情况下ROHC算法改进为例,对改进前和改进后的ROHC压缩性能进行评估(仿真测试场景如图4所示),其中测试条件、测试业务和评估指标如下所示。

(1)测试条件

ROHC采用O工作模式,部分参数设置如下:

1)SWW滑动窗口值:C_WINDOW_WIDTH为4;

2)从IR转移到FO状态的n1为:#define MAX_IR_COUNT 3;

3)从FO转移到SO状态的n2为:#define MAX_FO_COUNT 3;

4)从FO返回到IR的timeout1:#define CHANGE_TO_IR_COUNT 1200;

5)从SO返回到FO的timeout2:#define CHANGE_TO_FO_COUNT 500;

6)解压器反馈模式参数设置:成功解压一个报文就反馈ACK,3个报文解压失败就发送NACK。

(2)测试业务

测试业务大小为68字节报文,其中报头48字节(40字节IPv6报头+8字节UDP报头);业务负载为20字节的分组话数据(假定为分组话,编码为G.729,编码速率为8 kbps)。

(3)评估指标

1)平均压缩报头长度ACL(Average Compressed header Length):为成功解压前的报头总长度/成功解压的分组数;

2)报头压缩增益HG(Header Gain):为1-报头压缩长度/未压缩的报头长度;

3)分组丢弃百分率RLR(ROHC Lost Rate):为丢失的分组/总发送的分组个数。

假定发送5个分组报文后,图4中的节点A移动出节点S的无线覆盖范围,仿真测试对比ROHC算法和改进后的ROHC压缩性能,仿真测试结果如表2所示。从表2可以看出,改进后的ROHC算法在平均压缩报文长度、报文压缩增益和分组丢弃百分率方面优于改进前的ROHC算法。

5 结论

本文针对无线网络特征,结合ROHC报头压缩算法,提出的基于无线信道估计与上层业务需求、节点移动和多播三种情况下算法优化改进思路,同时通过仿真测试对比和分析,验证了无线节点移动情况下ROHC改进算法的可行性,为提高无线网络的报头压缩效率、压缩鲁棒性提供了技术解决方案,改进算法适合Ad hoc网络、PMP、民用移动通信3G/4G等所有无线网络。

参考文献:

[1] 吴亦川. 互联网无线接入系统中IP报头压缩算法的研究[D]. 北京: 中国科学院研究生院, 2005.

[2] 崔成华. 平流层通信系统IPv6报头压缩算法研究[D]. 成都: 电子科技大学, 2007.

[3] 刘天钊. 鲁棒性报头压缩算法研究[D]. 成都: 电子科技大学, 2008.

[4] 翁金成. 移动网络中的包头压缩技术[D]. 北京: 北京邮电大学, 2008.

[5] 周邏理. 基于Linux平台的ROHC报头压缩系统的研究与实现[D]. 北京: 北京邮电大学, 2008.

[6] 厉群,王春晓. ROHC协议分析与建模[J]. 计算机工程与设计, 2008,29(13): 3309-3312.

[7] 李祥中. 鲁棒性报头压缩中实现滑动窗口动态调整[J]. 科技信息, 2012(7): 97-98.

[8] 曾宇辉,朱光喜,吴伟民,等. LTE系统中适应链路层机制的TCP头压缩算法[J]. 小型微型计算机系统, 2012, 33(4): 819-824.

[9] 陈阳. 无线通信ROHC协议技术研究与实现[D]. 大连: 大连海事大学, 2012.

[10] 晋永龙. 基于ARM平台的WCDMA系统中PDCP协议栈的分析与实现[D]. 北京: 北京邮电大学, 2012.