PPP有关的压缩算法
PPP是目前使用最为广泛的链路层协议,本文将集中介绍几个典型的和PPP有关的压缩算法. 为了方便描述,我们首先介绍一下PPP的帧结构:
 

  FLAG总是01111110,被用于作为帧之间的分隔符.
 
  Address总是为11111111.
 
  Control总是为00000011.
 
  Protocol指示ppp所承载的上层协议.
 
  INFORMATION是指PPP所承载的数据部分.
 
  FCS是校验和.
 
  下面我们进入我们的主题,PPP压缩。和PPP相关的压缩分为两类,一类是PPP帧头结构的压缩,一类是PPP所承载上层协议报文的压缩。
 
  PPP帧头结构的压缩主要是指PPP帧头部AddressControl和协议字段的压缩,关于这些压缩的协商发生在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个字节的TCPIP头部压缩成3个字节,这样显然特别是对比较小的报文(如VOIP报文),效率是惊人的。
 
  对于PPP数据部分的压缩技术的协商,由于数据报文的压缩技术种类比较多,而且事实上不基于任何网络协议,所以IETF特别规范了一个专门的协议:CCP(PPP Compression Control Protocol)用于协商具体协商具体压缩算法、协商压缩算法的具体参数的方法。目前,最常用的PPP压缩算法是Stac压缩算法,它利用压缩效率非常高的LZS算法对报文进行压缩。
 
  以上只是简要介绍了几种常见的和PPP相关的压缩算法,事实上,现在有很多有关PPP压缩的标准,您可以参考我们在参考文献中列出的文档获得更加全面的了解。
 
  下面描述一下华为3ComQuidway路由器上的关于压缩的实现。
 
  AddressControlProtocol字段的协商是自动完成的,不需要配置。
 
  可以用如下命令配置上层协议头部压缩:
 
  配置TCP头部压缩:ip tcp header-compression
 
  配置PPP Stac压缩:ppp compress stac
 
  另外,华为3ComQuidway路由器上也在封装了FRPPPHDLC的串口上实现了基于RFC2057IPHC压缩技术
PPP帧是以标准HDLC标志字节(01111110)开始和结束的。
  接下来是地址字段,缺省情况下,被固定设成二进制数11111111,因为点到点线路的一个方向上只有一个接收方。
  地址字段后面是控制字段,缺省情况下,被固定设成二进制数00000011。
  因为缺省情况下,地址字段、控制字段总是常数。因此,这两部分实际可以省略不要(需要通过LCP进行协商)。
      接下来是协议字段。用来标明后面携带的是什么类型的数据。其缺省大小为2个字节。但
如果是LCP包,则可以是1字节。
      接下来是数据字段。其长度可变,缺省最大长度为1500字节。
      接下来是校验和字段,通常情况下是2个字节,但也可以是4字节。
  1.4  LCP协商选项
  LCP用来在通信链路建立初期,在通信双方之间协议功能选项。表1列出了其中主要的选项。它们是身份验证、压缩、回叫、多链路。
表1  PPP LCP协商选项
解释
协议
身份验证
链路建立成功前要求提供正确的密码
PAPCHAP
压缩
在带宽有限的链路提供对数据的压缩功能
PredictorStacker MPPC
回叫
由被叫方重新呼叫原呼叫发起方
Cisco CallbackMS Callback
多链路
需要的时候进行多链路捆绑、负载均衡
MP
 
 
  1.5  LCP协商的其他选项
  除了身份认证方法之外,PPP的LCP还提供了链路压缩、回叫、多链路捆绑等选项。
        1  链路压缩
  PPP协议运行在速率十分有限的点到点串行链路上。为了提高数据发送效率,可以采用对数据进行压缩后再传送的方法,我们将其称为链路压缩。
  LCP支持以下一些链路压缩方法:Stac、Predictor、MPPC以及TCP头部压缩。不同的方法对CPU及内存的需求并不相同。有些需要更多的内存(内存密集型),有些则需要占用更多的CPU时间(CPU密集型)。压缩原理和效果也不相同。
  Stac:Stac压缩算法基于Lempel-Ziv理论,它通过查、替换传送内容中的重复字符串的
方法达到压缩数据的目的。使用Stac压缩算法可以选择由各种硬件(适配器、模块等)压缩或者由软件进行压缩,还可以选择压缩的比率。Stac压缩算法需要占用较多的CPU时间。
  MPPC:MPPC是微软的压缩算法实现,它也是基于Lempel-Ziv理论,也需要占用较多的CPU时间。
  Predictor:Predictor—预测算法通过检查数据的压缩状态(是否已被压缩过)来决定是否进行压缩。因为,对数据的二次压缩一般不会有更大的压缩率。相反,有时经过二次压缩的数据反而比一次压缩后的数据更大。Predictor算法需要占用更多的内存。
  TCP头部压缩:TCP头部压缩基于Van Jacobson算法,该算法通过删除TCP头部一些不必要的字节来实现数据压缩的目的。
      2  回叫
  回叫又称为回拨,是指当通信一方拨号到另一方后,由另一方断开拨号连接并进行反向的拨号。
  这对于从甲地到乙地的电话费大于从乙地到甲地的电话费的情形。这时,可以由甲方首先发起到乙方的呼叫连接,当乙方收到甲方的呼叫请求后,断开乙方的呼叫。然后,从乙方发起到甲方的回叫。甲方应答后,双方的通信链路就建立起来了。
  回叫还有更安全的优点。因为乙方在回叫之前可以验证对方是否是合法用户,或者可以用口令数据库的方法或者可以用检验对方电话号码的方法。
      3  多链路捆绑
  LCP的多链路捆绑(MP)选项通过将通信两端之间的多条通信链路捆绑成一条虚拟的链路而达到扩充链路可用带宽的目的。
  LCP的多链路捆绑可以在多种类型的物理接口上实现,包括异步串行接口、同步串行接口、ISDN基本速率接口BRI、ISDN主速率接口PRI。LCP的多链路捆绑也支持不同的上层协议封装类型,如X.25、ISDN、帧中继等。
  限于篇幅,关于以上LCP协商选项的配置这里就不再详细介绍了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。