PPP是目前使用最为广泛的链路层协议,本文将集中介绍几个典型的和PPP有关的压缩算法. 为了方便描述,我们首先介绍一下PPP的帧结构:
FLAG总是01111110,被用于作为帧之间的分隔符.
Address总是为11111111.
Control总是为00000011.
PRotocol指示ppp所承载的上层协议.
INFORMATION是指PPP所承载的数据部分.
FCS是校验和.
下面我们进入我们的主题,PPP压缩。和PPP相关的压缩分为两类,一类是PPP帧头结构的压缩,一类是PPP所承载上层协议报文的压缩。
PPP帧头结构的压缩主要是指PPP帧头部Address、Control和协议字段的压缩,关于这些压缩的协商发生在PPP Establish阶段。
由于PPP头部的Address字段,Control字段都是固定不变的,所以为了节省带宽就可以压缩这两个字段。PPP会在Establish阶段用Address-and-Control-Field-Compression选项协商是否压缩这两个字段。
由于典型的承载在PPP之上的协议的协议号都小于256,所以用于只是协议号的16位二进制数就可以压缩为8位。PPP也是在LCP阶段协商是否进行协议字段的压缩。
对于PPP所承载上层协议报文的压缩,由于是对上层报文的压缩,所以对于压缩技术的协商必然发生在网络阶段,也就是Establish阶段、Authenticate阶段之后。对于PPP上层报文而言,我们这里只讨论TCP/ip报文。对于TCP/IP报文而言,又有两种压缩的方法:一是TCP/IP报文首部的压缩,一是TCP/IP整个报文或者说PPP数据部分的压缩。
对于首部压缩而言,目前标准的压缩算法是Van Jacobson TCP/IP头部压缩算法,这个算法使用与否的协商发生在IPCP协商阶段,是作为IPCP的一个参数: IP-Compression-Protocol协商的。Van Jacobson TCP/IP头部压缩算法的基本想法就是维护一定的连接信息,这样双方交互的包文就只需要标识其属于那个连接而不需要携带完整头部了。这个算法可以将40个字节的TCP和IP头部压缩成3个字节,这样显然非凡是对比较小的报文(如VOIP报文),效率是惊人的。
对于PPP数据部分的压缩技术的协商,由于数据报文的压缩技术种类比较多,而且事实上不基于任何网络协议,所以IETF非凡规范了一个专门的协议:CCP(PPP Compression Control Protocol)用于协商具体协商具体压缩算法、协商压缩算法的具体参数的方法。目前,最常用的PPP压缩算法是Stac压缩算法,它利用压缩效率非常高的LZS算法对报文进行压缩。
以上只是简要介绍了几种常见的和PPP相关的压缩算法,事实上,现在有很多有关PPP压缩的标准,您可以参考我们在参考文献中列出的文档获得更加全面的了解。
下面描述一下华为3ComQuidway路由器上的关于压缩的实现。
Address、Control和Protocol字段的协商是自动完成的,不需要配置。
可以用如下命令配置上层协议头部压缩:
配置TCP头部压缩:ip tcp header-compression
配置PPP Stac压缩:ppp compress stac
另外,华为3ComQuidway路由器上也在封装了FR、PPP、HDLC的串口上实现了基于RFC2057的IPHC压缩技术。