Abis接口协议 在Abis接口,涉及的协议不多,主要有链路层的LapD协议和第三层协议(规范并没有专门为这一层协议其起名字,因此后面我们都称其为Abis层3协议)。 1.1 LapD协议 在GSM中,LapD(D信道链路接入规程)是BTS与BSC之间传送信令的数据链路规程,其目的是使用D信道通过用户—网络接口在第三层各实体间传送信息。LapD的规定考虑到开放系统互连(OSI)的参考模型和层服务规约。在OSI参考模型中的基本结构技术就是分层的技术。基于这种思想的设计,CCITT在建议Q.920-Q.921中对LapD作了详尽的描述,由于GSM 08.56在Q.921基础上作了一些修改,所以实际使用的是一种变形协议,以下的阐述均基于GSM 08.56。根据GSM规范的定义,BSC与BTS之间的信令接口应遵循LapD规程。
以下的三种信息种类可以被LapD支持:信令(包括短消息信息)、操作维护和层2管理信息。
对每种信息种类BSC可以由一条或多条层2的链路到每个TRX和BCF。在Abis接口上的信令链路通过Terminal Endpoint Identifiers (TEI)来寻址不同的是单元。
同样的单元通常有多个功能实体,在不同的功能实体之间的逻辑链路通过功能地址Service Access Points Identifier (SAPI)来识别。在GSM规范中,有无线信令链路RSL(SAPI=0),操作维护链路OML(SAPI=62)和层2管理链路L2ML(SAPI=63)三种逻辑链路。
下图显示了不同层2链路的体系模型,一些逻辑链路可以在服用在一条物理链路上,同样的层2逻辑链路不可以分布在一条以上的物理链路上。
1.1.1 帧结构 链路层的基本功能是将要在信道上传送的信息构造成比单个比特大的单位,这种很小的单位将是所有链路层功能工作的基本结构。在信令世界中,这样的一个单位称为一帧。整个问题的关键是要在比特流中包含足够的信息,使接收端能够找到每一帧的开头和结尾。在这一点上LapD是HDLC的继承者,帧的起始和结尾都用一个8比特长的标志。为了防止虚假的开始和结束,引入了“0比特插入”掩盖数据流中出现的与标志相同的比特序列。这种机制允许帧的长度是可变的,甚至不需要指出帧内的实际长度。同一标志可以作为一帧的结束,同时指示下一帧的开始。
图 1 1 LapD帧标志 1.1.2 分段和重组 帧的最大长度要受低层传输约束的限制,当信令报文的最大长度超过帧允许的最大长度时,这条报文就得分段,按几帧发送;相反的,在接收端必须将报文重组。要作到这一点,接收端必须收到足够的信息才能知道怎样重组报文,这增加了协议的额外开销。当预见到信令报文的最大长度不会超过帧的最大长度时,就可以免去分段和重组的过程。 在Abis接口上无须定义分段和重组的功能,Abis的LapD帧长度简单地限制在264字节(不包括标志),它对应上一层信息的260个字节。 1.1.3 检错和纠错 链路层的第二个重要功能是通过检测可能发生传输差错的帧,并当帧出错时请求重发来提高传输的质量。
就检错来说,LapD使用了HDLC方案(它在每帧增加了16个冗余位,在LapD中称为FCS,或帧校验序列),根据差错检测特点选取编码方案。在LapD协议中,使用了生成多项式:X16 +X12 +X5 +1来计算16比特。
差错检测由两个用途:一是提供帧内残余差错似然性的足够信息,从而可请求重发该帧;二是检测链路的质量,当误码率超过某给定门限时就触发相关的告警。帧确认和重发功能通过消除剩余差错的方法可获得很好的性能,LapD协议没有利用前向纠错能力(这种特征通常被认为是物理层的),而是使用了类似HDLC的后向纠错机制,可在两种模式中选择: - 不确认模式,无论接收端结果怎样,帧只传一次; - 确认模式,可由重发保证纠正有错的帧。
确认和重发都是以循环帧计数为基础的,它使接收者能检测可能的帧重复和/或帧丢失,并确认特定的帧。在LapD中,确认是通过接收机向发送方传送下一个期望帧的号码N(R)实现的,LapD的最大帧号(计数周期)是128。这一机制示于下图中,如果帧号是按模8计算的,一个接收端期望2号帧则表明帧号为1,0,7,6,„的帧都已正确收到了。在各种情况下,如果有未确认的帧,发送方都要重发那一帧。然而,重发的总次数是要受到限制,以免当发生严重问题时出现无限循环。
图 1 2 重发机制 发送方必须保留帧知道它们得到确认,以便当需要重发时可用。为了限制相应的缓冲器的数量,以及避免计数的歧义,LapD中用到了窗口概念。发送窗的大小决定了在任一时刻已发出但尚未得到确认的帧数。这个窗的大小值K必须足够大,使得发送方可进行预期处理而不必因等待确认而延时。在LapD中,窗口的大小可以改变。
为了在接口两侧启动一个确认模式的传输,LapD中使用了一个简单程序,它由两条消息组成,参见多帧操作过程。只有在这一交换后才会发生上层信息的交换。与确认模式下传输的建立类似,链路的正常释放也通过一个简单的过程完成,参见多帧操作过程。 1.1.4 复用 链路层提供了将信息流在一个信道上复用的可能性。这些信息流是独立的,不能保证它们之间帧的次序,而且要对各个流分别运用窗口机制。为了区分它们,要在每个帧中插入一个地址。这种机制对于点对多点链路是必须的,它就是为有一条线路和几个终端的用户装置涉及的,并在LapD中保留下来。
Abis接口上的复用有两个方面。一方面是对应于不同功能之间的差别,其实现与无线接口相类似。这一接口上的“SAPI”值列在下表中,SAPI0用于自/至无线接口的所有报文。另一方面,复用要向终接在BTS内不同设备提供不同链路(TRX),这个的鉴别利用了LapD链路层地址的另一个域TEI(终端设备识别),TEI的动态管理是SAPI63消息的一种功能。 SAPI 信息流类型 0 无线信令 62 操作和维护 63 层2管理 1.1.5 流量控制 链路层要研究的最后一个问题是流量控制。当考虑一条链路时,通常假设接收端的处理和缓冲能力能处理链路的最大吞吐量。但是,经常是由不同信息流共享资源,其处理能力要低于各个信息流最大能力之和。拥塞控制的一个目标是控制每个信息流,是系统的某些部分的过载不至于是整个系统能力降为0,并尽可能实现最大的吞吐量。瓶颈可能距离信息流的实际源很远,但必须向其报告拥塞情况以控制输入负载,最终是源信息流量降低。延传输链对每一段分别进行流量控制是有助于控制吞吐量的一个方法。
用类似于HDLC的协议(只需简单地延时发送确认)就很自然地提供了某种方式的流量控制。但这种控制只是勉强合格的,因为如果延时太长,发送者将重复该帧,从而加重了拥塞。也可以使用一种附加机制,即将窗口变为1的简单的停-等协议,LapD中明确要求提供这种机制。 1.1.6 TEI指配过程 下面描述均基于TEI值在0~63之间时的情况。
TRX需要建立相应TEI的传输链路,则向BSC发出UI帧,内含相应的TEI的标识,BSC收到之后,广播一个UI帧,内含一条检测消息,如果其他实体(如其他TRX)有回应,说明该TEI已经被使用,BSC不能分配相应的TEI。如果一段时间内没有收到应答,BSC会再次发送一个广播UI帧,如果再次没有收到应答,则说明该TEI没有被使用,BSC通过一UI帧通知用户分配TEI成功。
1.1.7 TEI检验过程 当BSC怀疑在一条物理链路上存在不止一个用户使用相同的TEI时,则启动TEI检验过程,以便对这一情况进行证实。
1.1.8 TEI取消过程 TEI取消时,BSC侧的LAPD层管理进程应发出MDL-REMOVE-REQUEST原语,引起物理信道上的连续两次身份取消消息的发送。
1.1.9 差错处理 由于LapD链路数据传送的硬件程度高,传送差错大部分能用硬件处理,所以层2软件主要对与TEI有关的差错作相应处理,对一些其它差错仅进行差错记录。
当层2软件收到MDL-ERROR-INDICATION,差错码为C、D、G、H时,将调用TEI检测规程,根据用户侧的响应进行处理: - 当未收到响应,取消TEI; - 当收到单个响应,进行差错记录; - 当收到多个响应,TEI取消规程。 1.1.10 未确认信息传送的过程 第三层用原语DL-UNIT DATA-REQUEST、或管理实体利用MDL-UNIT DATA-REQUEST将未确认的信息传送到数据链路层,这些消息均在UI帧中发送。 - 对广播式操作,UI帧中的TEI值应为127。 - UI帧P比特为0。
对于TEI管理规程消息,在用户侧与网络侧用UI帧发送,且必须经过广播链路,则此类UI帧中的TEI值必为127,SAPI为63。
当接收方收到UI帧时,将采用数据链路层对第三层的原语DL-UNIT DATA-INDICATION或数据链路层对层管理实体的原语MDL-UNIT DATA-INDICATION将信息传送出去(由SAPI确定到第三层或层管理实体)。
需要注意的是,未确认信息的传送与确认信息I帧的传送并不是互斥的,二者可同时进行,在多帧规程的任何一TEI已分配的状态,均可处理UI帧。 1.1.11 多帧操作过程 1.1.11.1 建立过程 第三层用DL_ESTABLISH_REQEST请求建立数据链路连接。数据链路实体向对端实体发送SABME命令。接收SABME命令的实体,如果能进入建立状态,则发送UA响应,向第三层发送建立指示,并进行初始化。收到UA响应,SABME发起者向第三层发出建立证实,并初始化。
1.1.11.2 释放过程 第三层利用DL_RELEASE_REQEST请求释放数据链路连接。数据链路实体向对端发送DISC命令。接收DISC命令的实体向对端发UA响应,丢弃所有I帧队列,进入连接断开状态并通知第三层。DISC命令发起者收到UA响应之后,丢弃所有排队I帧,通知第三层,并进入连接断开状态。
1.1.11.3 信息传递过程 第三层用DL_DATA_REQEST原语请求发送的数据包将首先被链入一个I帧队列,并发出一个I_FRAME_QUEUE_UP的消息,LapD进程收到这个消息后,将发送一个I帧,将发送状态变量VS和接收状态变量VR分配给I帧的NS和NR字段,同时将VS在发送结束后加1。打开定时器T200。信息发送中的流量控制采用滑动窗口机制。窗口大小可随SAPI的不同而略有变化。接收到一帧I帧后,将比较I帧中的发送序号NS和本端接收状态变量VR,如相等则接收,采用DL_DATA_INDICATION原语传送给第三层,不相等则丢弃I帧,向发送端发送REJ帧,表示接收帧顺序错。