移动IPv6数据报文头压缩算法的分析

时间:2022-09-19 04:58:50

移动IPv6数据报文头压缩算法的分析

摘 要:首先对Internet中常用的数据报文头压缩算法所存在的实际问题进行了简要分析,并详细讨论了接收端分组重排和CRC校验所产生的错误对VJ算法和Twice算法的影响。在此基础上指出了可通过在VJ,Twice算法中加入新的控制过程使解压缩端在处于良好状态时能够多发送分组,从而提高分组的传输效率和信道的利用率。

关键词:报文头压缩算法;分组重排;CRC校验;VJ算法;Twice算法

中图分类号:TP393文献标识码:B文章编号:1004373X(2008)1917302

Research on Compression Algorithm for Packet Header of Mobile IPv6 Data Network

GU Jing

(Xi′an Institute of Post &Telecommunications,Xi′an,710061,China)

Abstract:Some problems existing in the general header compression algorithm used in Internet are simply described.And the effects of packet reordering algorithm at the receiver and the error that can′t be checked out by CRC check on VJ and Twice algorithm are discussed.Some new controls are introduced in VJ and Twice algorithm to realize that more packets can be sent when the decompression end is in good state and to make the time in which it is in bad state is short as possible as it is.

Keywords:adaptive header compression;packet reordering;CRC check;VJ algorithm;Twice algorithm

1 引 言

随着Internet网络技术的高速发展,IPv6将取代传统IPv4网络而成为现代通信网络的发展趋势。由于IPv6协议分组较长,加之无线信道的资源有限,所以为了提高无线链路中分组的传输效率和信道的利用率,就必须对分组报文头进行压缩处理。

1990年,Van Jacobson针对IPv4协议设计了适用于低速链路的TCP/IP报文头压缩算法。在VJ算法中,Jacobson分析了同一条链路中每个分组报文头的变化情况,并利用变化模式将40个字节的报文头压缩到4~17[1]个字节。1996年,Degermark提出了适用于IPv6网络的UDP、TCP报文头压缩算法。在该算法中,Degermark设计了很多用来恢复对解压缩端进行同步的机制,如“Twice”算法,当分组不能被正确地解压缩时,解压缩端假设其原因是一个或者多个以前的分组丢失,并假设所有分组带有相同的增量值,同时用增量值对分组进行两次或多次解压缩[2,3]。Twice算法在某种情况下改善了报文头的压缩性能。近年来,IETF成立了ROHC[4,5](Robust Header Compression)工作组,以致力于改善无线环境中报文头的压缩性能,用以提高带宽利用率和减小丢包率。

2 传统压缩算法中存在的问题

众所周知,IP网络的数据包是分段进行传输的,由于网络状况的差异,UDP的传输很容易造成报文丢失、重复,而且分组传输没有固定路径。路由器根据分组的目的地址和当前网络资源来转发数据,不保证分组到达的有序性,但是这就需要对分组进行重新排序。然而现有的报头压缩方案没有考虑无线信道状态,无法很好地适应无线链路的时变特性[6,7]。当传输延时较大时,TCP分组的滑动窗口也随着增大。如果在发送端出现突发业务,则分组重排的任务就会变得很繁重。然而许多报文头压缩算法都以分组有序到达或者少量的分组重排为前提,所以在分组重排很频繁时就需要对压缩算法做进一步的改进。

循环冗余校验CRC(Cyclic Redundancy Check/Code) 是数据通信领域中最常用的一种采用多项式编码的检错算法,它是在链路层对一个传送数据块进行校验[8],是一种较高效的差错控制方法。当TCP/IP数据包通过以太网传输时,链路层将对其进行CRC校验。然而,由于各种原因目前在Internet中有多种类型的错误是可以通过链路层的CRC校验而不被检出。例如,由于软硬件的缺陷、收发端系统和路由器等问题而导致的错误可以通过链路层的CRC检错。还有,在IP协议层引入的错误也不会被链路层CRC校验检出。因此,我们必须采取有效方法来消除这些错误源。

3 分组重排与通过CRC校验的错误对压缩算法的影响

首先作如下假设:未经报文头压缩的TCP分组长度为612个字节,报文头压缩后TCP分组长度为517个字节;每个比特位被破坏的概率一样;每个错误的比特都会被链路层或者传输层的检错机制检测到;所有带有原始报文头的分组就具有相同的出错概率qo;所有经过报文头压缩的分组也具有相同的出错概率qc,显然由于压缩过的报文头比原始的报文头短,所以qc

3.1 对VJ算法的影响

VJ算法的缺陷主要来自错误传递引起的分组出错和分组丢失。众所周知,TCP协议使用接收端的ACKs作为拥塞控制的指示,所以分组出错或者丢失对TCP性能的影响很大。

通过对不同压缩算法的实验分析表明,在误码率BER=10-5时,经VJ算法压缩的分组的性能最差。由于报文头被破坏了的TCP压缩分组将被丢弃,所以如果前一个分组被丢弃那么即使这个TCP压缩报文头无误传输,也将被丢弃。因此可以看出分组的错误率几乎线性增涨,直到收到一个未压缩的TCP分组为止。此后分组的错误率将下降并再次变大。另外,压缩率还受分组重排的影响。在VJ算法中,恒定字段因为CID发生变化和解压缩端失去同步时,会产生一个新的CID,并发送未压缩的参考分组。若一个分组不能被解压缩,则TCP分组可以由超时或者重复的ACK发现,并重传分组。如果压缩端发现了重传分组的序号比前一个分组的序号小,则产生一个负的增量值,在这种情况下,压缩算法会丢弃这个负值,并传送完整的报文头。这种机制保证了CID的信息可以在解压缩端得到更新,但是,有时即使没有分组丢失也会发生上述情况。由于分组到达的顺序和发送的顺序不一致,需要进行重新排序,这样有些分组就需要完整的报文头而不是压缩的报文头。这对估计压缩率造成了困难。

设B为压缩前的报文头大小,A为压缩后报文头的平均大小,并假设只考虑了重排因素。如果重排的概率很小则压缩率可近似为Restimated=A/B。但是如果重排比较多则需要考虑重排对压缩率的影响。设x为传输分组中迟到分组的百分比,则压缩率应该是:

上一篇:数据采集系统中的DSP控制回路 下一篇:基于VRML法向量的三维造型虚拟仿真