摘要 研制具备Iub接口NBAP协议仿真功能的TD-SCDMA网络测试仪,有助于主动模拟网络性能和分析网络故障。提出了软件设计中模块定义和代码实现的新方案。ASN.1工具采用的是OSS公司推出的编译器和运行程序库。NBAP协议数据单元的编码和解码性能可靠、稳定。经过测试,该NBAP协议仿真功能符合实际测试的要求。
0、引言
中国移动通信最近几年持续快速增长,2001年超过美国成为世界上第一大2G移动用户市场,2003年移动终端数量超过了固定电话数量。预计到2010年,该数值将上升到7.3亿,届时,每2个中国人就拥有一部移动终端。3G无线技术的商用化不仅是通信技术革新的必然结果,而且是市场推广和收入增长的必需品[1]。因此无论是从发展中国人自己的无线通信技术,还是满足潜在的客户需求,在全国范围内乃至部分外国地区组建一个大的TD-SCDMA网络已经成为不可阻挡的趋势。TD-SCDMA采用多用户检测、软件无线电和智能天线等多项先进技术[1-2],承载语音、视频、IP包和多媒体等多种业务,网络结构必然十分复杂,同以前的GSM网络和CDMA网络相比,没有了可以借鉴的实际网络模型,运营商将承受前所未有的压力,迫切需要一种智能的、高效的网络测试仪表来成功应对TD-SCDMA网络出现的各种问题。研制出具有自主知识产权的TD-SCDMA网络测试仪,对TD-SCDMA产业链的快速成型和高效低廉地组建3G商用网具有重要的推动作用。
协议仿真是在网络性能监测基础上的进一步发展,它的应用使得运营商可以根据将来建设网络的实际特点,有重点、分专项进行网络性能的仿真模拟测试。目前,国内外通信仪表制造商对协议仿真都十分重视,泰克、安立公司推出的仪表除了信令分析功能外,都有部分的协议模拟功能。但主要针对WCDMA或CDMA2000标准,而且因为协议仿真要模拟实际网络中的大部分功能,开发内容多、技术难点大,到目前为止,都没有推出十分完善的产品。本文中我们针对协议仿真中构造二进制消息和发送消息触发完整流程等基本问题,对NBAP(Node B application part)协议中消息的编码和解码技术及在此基础上的流程仿真做了探索性的研究,提出了软件设计中模块定义和代码实现的方案以及实际开发中遇到的个别困难的解决方法。实践证明,这一方案是可行的,能够满足实际开发的需求。
1、NBAP协议仿真功能结构
1.1 TD-SCDMA网络测试仪功能简介
如图1所示,TD-SCDMA网络测试仪可以对TD-SCDMA无线接入网、TD-SCDMA核心网、GSM网中几乎所有接口(Iub,Iur,IuCS,IuPS,Nc,Nb,Mc,C/D/E/G/Gr/MSCS-SCP,Gn/Gp,Gi,A等)进行监测。TD-SCDMA网络测试仪具备实时解码、业务统计、呼叫追踪、网络及业务分析、协议仿真、物理层指示等功能。其中,协议仿真功能是本文中我们讨论的重点。
BTS:基站
MSC Server:移动交换中心服务器
SMS-SC:短消息服务服务中心
HLR:归属位置寄存器
SGSN:服务GPRS支持节点
PSTN:公共交换电话网
BSC:基站控制器
SLR:发送响度当量
PCU:分组控制单元
VLR:拜访位置寄存器
SCP:服务控制点
GGSN:网关GPRS支持节点
RNC:无线网络控制器
ISDN:综合业务数字网
MGW:媒体网状
STP:信令转接点
AuC:鉴权中心
Node B:3G基站
图1 3G移动通信网络接口
Fig.1 3G mobile communication network interface
1.2 Iub接口NBAP协议仿真功能结构
1.2.1 Node B协议栈的模块规划
Node B到RNC的接口为Iub,Node B到UE间的接口为Uu。如图2所示,Node B协议栈[2]整体可以分为Node B管理配置模块、NBAP协议实现模块、传输承载处理模块、手机数据处理模块和空中接口信道处理模块。其中Node B管理配置模块完成逻辑运行和维护,NBAP协议实现模块负责对Iub接口的信令消息的处理,手机数据处理模块处理小区数据业务和手机信息,传输承载处理模块主要完成Iub接口信令和数据的承载,空中接口信道处理模块完成Uu接口上数据业务的发送和接收。
1.2.2 NBAP协议的功能
由图2可见,NBAP协议处在横向无线网络层和纵向控制平面的交叉部分。概括的说:NBAP协议是无线移动信令的核心,是UE接入UTRAN及后续核心网的控制枢纽。其功能定义如下[3]。
1)小区配置管理。允许CRNC管理在Node B中的小区配置信息。
2)公共传输信道管理。允许CRNC管理在Node B中的公共传输信道配置。
3)系统信息管理。允许CRNC调度在小区中广播的系统信息。
4)资源事件管理。允许Node B向CRNC通知该Node B中的资源状态。
5)配置校准。允许CRNC和Node B核对和强制它们共有的无线资源具有同样的配置信息。
6)公共资源的测量。CRNC触发Node B对公共无线资源进行测量,同时还允许Node B报告测量结果。
7)无线链路管理。允许CRNC使用Node B中的专用资源来管理无线链路。
8)无线链路监视。允许CRNC报告无线链路的失败和恢复状况。
9)专用资源的测量。允许CRNC在Node B中发起专用资源的测量,同样还允许Node B报告所测量的结果。
10)物理共享信道管理。允许CRNC在Node B中管理属于共享信道(USCH/DSCH)的物理资源。
11)下行功率时隙校正。允许Node B根据UE侧的下行干扰电平对每一个时隙中的传输功率应用一个相应的偏移量来进行功率校正。
12)一般错误情况的报告。报告一般错误情况的功能。
13)小区同步。允许通过Uu接口实现小区或Node B之间的同步。
14)信息交互。允许CRNC和Node B之间进行信息交互,同时允许Node B报告所请求的信息。
图2 基于Node B协议栈的模块规划
Fig.2 Module definition based on Node B protocol stack
NBAP的功能由NBAP的过程来实现,包括公共过程和专用过程。此2类过程可以使用分开的信令链路。NBAP公共过程主要是与指定UE不相关的过程,或者只是为指定UE请求Communication Context初始化的过程。公共过程也包含逻辑O&M过程。专用过程是与一个指定的Node B Communication Context相关联的过程。这个Node B Communication Context通过Node B Communication Context ID来标识。表1[3]展示NBAP的功能和NBAP过程的映射关系。
表1 NBAP功能和基本过程间的映射关系
Tab.1 Mapping relations between NBAP function and NBAP elementary procedure。
1.2.3 Iub接口仿真模块的设计
根据Node B的协议内容和Node B协议栈的划分原则,如图3所示,整个Iub接口信令软件系统可以分为如下的几个模块。
图3 Iub接口仿真软件模块间关系
Fig.3 Relationship between modules of simulation software in Iub interface
1)NBAP协议实现模块。该模块包括以下几个模块:
a)Iub接口信令收发模块,主要完成Node B与RNC间Iub接口信令的通信,根据RNC下发的信令类型转发到后续的相应模块,并将Node B的响应消息返回给RNC;
b)公共过程处理模块,主要完成Node B内的小区和公共传输信道的管理;
c)专用过程处理模块,主要完成与一个Node B通信上下文相关联的无线链路或无线链路集的管理。
2)Node B管理配置模块。负责Node B与RNC之间的管理信息的传输和处理。主要包括:
a)特殊操作维护处理模块,负责与RNC通信,主要完成对整个Node B的信令系统的数据配置和管理功能;
b)其他协调配置模块,完成软件系统实现的相关的协调功能。
3)传输承载处理模块。除了完成如图2所示传输层的协议功能以外,还要协调NBAP协议仿真软件中各个模块间的通信。
4)手机数据处理模块。完成Node B用户面FP及其上层各项数据业务和信息的处理。该模块包括以下模块。
a)FP编解码模块,主要完成FP协议指定的功能;
b)层2协议处理模块,主要完成MAC和RLC协议指定的功能;
c)层3协议处理模块,主要完成RRC和MM,CC,SMS,SS以及GMM,SM,GSMS协议指定的相关功能。
5)空中接口信道处理模块。完成上行业务数据的解调和下行物理信道的管理,业务数据的扩频、调制以及传输信道的复用和逻辑信道到物理信道的映射。因为是仿真Iub接口,所以图3中不包含该模块。
2、NBAP协议仿真软件实现方案
2.1 信令流程仿真的设计和实现
信令是整个通信网络的中枢,是网络正常运行的控制部分[4]。全面准确地逼近实际网络中信令的真实走向,就能够很好地分析网络环节的具体性能,可以说,Iub接口仿真的重点是对经过Iub接口信令流程的仿真。
信令流程的仿真本质上是信令消息流程的仿真。设计的仿真过程要经过消息过滤,消息分类,消息缓存和消息处理等4个最基本步骤。对消息成功的编码和解码是实现仿真的基础。
具体实现时,要模拟协议栈中每个协议的全部常用功能,利用多线程和动态链接库技术,以协议为单位来进行模块化设计。协议模块要求不但能够解析请求消息中的具体参数,而且能够根据参数的变化,做出不同的响应配置,编码出符合协议要求的响应消息。
信令贯穿整个网络,对它的仿真,通常是通过同时对多个接口的信令仿真来实现的,或者说,全面深入的仿真一个接口的功能,是必须与其他接口的信令处理来配合实现的,如图4所示。
图4 Iub-Iur接口前向切换信令流程
Fig.4 Signalling flows of forward handover between Iub and Iur interface
2.2 NBAP协议仿真软件的设计框架
上面的NBAP信令处理模块是根据功能来划分的,在设计实际中信令消息流的处理如图5所示。RNC下发的信令经过Iub接口的信令收发模块,在那里进行最上层的预解码,得到该信令所属过程的具体编号值。然后,进入相应的公共信令处理模块或者专用信令处理模块,在那里进入NBAP协议中规定的46个子过程(错误指示过程对专用过程的编号为21,对公共过程的编号为35)中的一个,这些子过程模块实现每个过程不同的响应机制,然后,再将响应消息通过Iub接口的信令收发模块返回到RNC端。需要说明的是,这里给出的只是Node B端的NBAP协议的仿真框架。开发实际中,是按照对环模式(将同一类产品的2台仪表中的一台仪表的输出和另一台仪表的输入对接起来,测试接收仪表接受数据、处理数据,发送仪表封装数据及发送数据的性能)来设计的,即考虑了RNC端的NBAP协议的仿真。本质上,这个框架也是适用于RNC端的NBAP协议的,只是出口和入口的对象将变为Node B。在其它模块的动态配合和总调度的控制下,TD-SCDMA网络测试仪便可以实现Iub接口的智能仿真任务了。
图5 NBAP协议仿真软件框架
Fig.5 Framework of NBAP protocol simulation software
2.3 审计过程响应机制举例
测试预置条件[5]:已成功配置小区,并成功地配置公共信道。
测试说明[5]:
1)通过信令测试仪观察Node B控制端口核查请求及其响应消息是否符合接口规范。
2)查看资源状态的信息与响应消息中的内容是否一致。
3)如果AUDIT REQUEST消息中的“Start of Audit Sequence Indicator IE”被设置为“start of audit sequence”,一个新的审计序列将被启用,同时其它任何正在运行的审计序列将被中止,Node B将向CRNC提供审计信息。如果“Start of Audit Sequence IE”被设置为“not start of audit sequence”,Node B将向CRNC提供在本次审计序列中尚未提供的部分审计信息。
在仿真设计中,如果“Start of Audit Sequence IE”被设置为“not start of audit sequence”,Node B将向CRNC提供在本次审计序列中尚未提供的部分审计信息,这一点是很难实现的。因为,AUDIT REQUEST消息中没有指明尚未提供的审计信息的起始位置。实际做法是将最近一次编码好的审计序列保存起来,如果通过解码得到的AUDIT REQUEST消息中的“Start of Audit Sequence Indicator IE”被设置为“not start of audit sequence”,就把保存起来的编码好的审计序列的整体发向RNC,而不是剩余部分再一次以AUDIT RESPONSE消息的形式发向RNC。类似这样的变通处理在设计实际中还有很多。
2.4 NBAP协议ASN.1描述数据结构解码和编码的实现
2.4.1 ASN.1描述语言介绍
ASN.1的特性[6]如下。
1)ASN.1的描述语言是用高度抽象形式指定数据结构,独立于开发商、独立于平台、独立于语言、国际标准化的标记描述语言。
2)用精确的比特形式来定义数据结构的值。使用不太复杂的编码形式,编码好的数据在有计算分析能力的网络中传播。
3)可用多平台多程序语言工具来将ASN.1的标记描述影射到一种计算机语言的数据结构的定义中。这种影射支持在内存中的数据结构中的具体值和在通信线路上传输的比特值之间的转换。
4)提供比其它的通常的程序语言更多的数据结构的范围。提高了要被传输的值的说明范围精度和优化了编码方案。
2.4.2 ASN.1描述对象到C++类的转换
在3GPP TS 25.433中明确规定了NBAP协议将使用ASN.1的Basic Packed Encoding Rules(BASIC-PER)的对齐演变版作为传输用的格式[3]。在ITU-T Recommendation X.691中详细地介绍了使用PER进行编码的方法和过程,以及使用PER对各种数据类型进行具体编码的原则[7]。目前,通常做法是借用市场上成熟的软件产品将ASN.1的描述转换成C++的类,然后再在转换好的C++的类的基础上完成后续各种功能的设计。
OSS Nokalva公司从1988年开始在ASN.1领域一直进行着不断的改进和发展。他们宣称自己的ASN.1工具拥有其它公司推出的产品所不具备的优越的性能。诚然,该公司的时间优化编/解码器(TOED)产品确实是目前市场上最快的编/解码器。不过,我们采用OSS公司的SOED产品的试用版作为研究工具。
借用OSS公司的编译工具对3GPP TS 25.433 V4.5.0中的ASN.1的描述进行编译。如果使用的是V4.5.0版本,在实际的编译过程中一定会遇到上百个错误。熟悉ASN.1的语法后,可以对其逐个进行修改,其中的主要错误是符号错位造成的。有2个错误是非语法错误,纠正它花费了大量的时间。第1个是NBAP协议描述部分中的Elementary Procedure definitions部分中的“NBAP-PDU-Discriptions{;行中的Discriptions应该写作Descriptions;第2个是Information Element Definitions部分中,C字母开头的小结中的CauseRadio-Network枚举类型定义中“ul-sf-not-supported”行中的“sf-not”,其中的连字符明显不同于其它2个,它有点像中文全角格式,应该是英文半角的,为“ul-sf-not-supported”。
排除了上述的各种错误之后,通过编译,可以得到NBAP协议中ASN.1描述的各种数据类型的C++的类和编码与解码例行程序(routines),为后续的工作打下了坚实的基础。因为如果没有NBAP协议的C++类定义,后面的一切工作都无从做起。
2.4.3 NBAP协议消息解码和编码的实现
为了将NBAP仿真流程中的一个消息编码成二进制PDU,只需要先设置该消息对应的C++类的成员变量的值,然后调用最高阶层的编码例行程序。最高阶层的编码例行程序又调用低一级的其它所有数据类型的编码例行程序。接着,这些例行程序调用更小的例行程序,直到在ASN.1运行库中的编码例行程序被调用。所有的编码例行程序将编码好的字节写进编码缓冲区。最后,最高阶层的例行程序向上面的应用程序返回指向编码缓冲区的指针。
解码过程是最高阶层解码的例行程序调用低一级的解码例行程序,并且每层解码例行程序向相应的C++类的成员变量设置成员变量的值。最后,最高阶层解码例行程序向上面的应用程序返回指向最高阶层C++类结构的指针。
因为在NBAP协议中ASN.1定义的数据结构十分复杂,类型多,套用层次深。所以,开发难点是能否准确地给C++类的成员变量赋值。而且要花大量时间分析、考虑如何给其中的参数指定一个上下文语义连贯,符合3G建网实际的参数值。
2.4.4 TD-SCDMA编码的独特之处
3GPP协议规定:时分双工(TDD)制式,支持2种码片速率,一个是WCDMA的3.84 Mchips/s,另一个是TD-SCDMA的1.28 Mchips/s。TD-SCDMA作为补充的标准被定义在3GPP TS 25.433中[1]。所以,ASN.1描述的消息中,TD-SCDMA所特有的LCR-TDD部分定义在消息IE中的IE-Extensions处。凡是TD-SCDMA的消息,都需要对消息IE中的IE-Extensions部分进行编码。OSS公司认真考虑了这些方面,提供了编码IE-Extensions部分极好的接口函数和明晰的操作方式,使得对IE的扩展部分进行编码很容易实现。
3、NBAP协议仿真软件测试结果
3.1 数据编码分析
编码出符合协议规范的NBAP消息是实现Node B与RNC间正常通信的基础。NBAP协议消息的PDU长度从几个字节到几百个字节不等。表2列举了2个相对较小的协议消息的PDU的具体内容。它们是审计请求和小区建立响应消息的PDU,使用PER编码规则。第1字节是消息中Message Type字段的编码结果,00表示Initiating Message;20表示Successful Outcome;40表示Unsuccessful Outcome。第2字节是Procedure Code字段编码结果,01表示编号为1的审计请求过程;05表示编号为5的小区建立过程。第3字节是ddMode、criticality和messageDiscriminator字段的联合编码结果。ddMode占用高4位,为tdd时,是0000,为common时,是1000;criticality占用低4位的前2位,为reject时,是00,为ignore时,是10;messageDiscriminator占用低4位的后2位,为common时,是10。第4、5字节是Transaction ID的编码结果,最大可以为16进制的7FFF。属于同一过程的所有消息具有相同的Transaction ID。第6字节指示后续消息的字节长度。第7字节以后的内容会因为消息的具体类型不同而有很大的差别,这里不做详细分析。
表2 二进制消息分析
Tab.2 Analysis of binary system messages
3.2 流程仿真展示
将一次完整流程中Node B和RNC间交互的所有消息收集起来并分析比较,可以给用户提供Iub接口充足的信息,如图6所示。在界面左边是指定要观察的流程,界面右边的上面窗口将展示实现该流程的所有消息的信息。然后,选中一个消息,界面右边的下面窗口将显示这个消息的16进制的具体内容。同时,展开这个分支,将显示消息的所有字段名和它们的十进制数值,以及字段间的嵌套层次关系。
4、结束语
本文首先指明了TD-SCDMA网络测试仪NBAP协议仿真的作用,然后提出了仿真软件设计中模块划分和代码实现的方案,介绍了NBAP协议消息编码和解码关键技术问题的解决方法,指明了发送协议消息触发完整流程是实现协议仿真功能的基本途径,利用OSS公司提供的ASN.1工具实现了仿真软件的基本功能。最后,根据中国通信行业标准[5]规定的测试用例进行了测试,并给出了部分结果,测试表明本方案思路清晰,实现简单,协议消息处理可靠稳定,能够满足实际开发的需求。
参考文献
[1] LI Bo,XIE Dong-liang,CHEN shi-duan,et a1.Recent Advances on TD-SCDMA in china[EB/OL].(2005-12-10)[2006-12-01].http://ieeexplore.ieee.org/ie15/35/30130/01381872.pdf.
[2] 李小文,李贵勇,陈贤亮,等.TD-SCDMA第三代移动通信系统、信令及实现[M].北京:人民邮电出版社,2003.
[3] 3GPP TS 25.433 V4.5.O.UTRAN Iub Interface NBAP signaling[EB/OL] (2002-06-23)[2006-12-03].http://WWW.3gpp.org/ftp/Specs/html-info/25433.htm.
[4] 邮电部软件中心主编.NO.7信令系统的原理、测试与维护[M].北京:人民邮电出版社,1995.
[5] 中华人民共和国通信行业标准YD/T 1370-2006 2GHz TD-SCDMA数字蜂窝移动通信网Iub接口测试方法[S].北京:人民邮电出版社,2006.
[6] LARMOUTH John.ASN.1 Complete[EB/OL].(1999-11-20)[2006-12-03].http://WWW.oss.com/asnl.
[7] ITU-T Recommendation X.691.Information technology-ASN.1 encoding rules: Specification of Packed Encoding Rules(PER)[S/OL].(2002-12-20)[2006-12-03].http://WWW.itu.int/ITU-T/studygroups/com17/languages/X.691-0207.pdf.