SCCP消息类型
目前,关于RANAP协议涉及到的消息有CR、CC、CREF、RLSD、RLC和DT1。对于RLSD和RLC消息本身并不包含RANAP协议可以暂时不考虑解析。最主要的是关于CR和DT1消息的解析。关于CC的消息,怀疑现有的数据包有问题,暂时不考虑。CREF消息现有的数据没有出现,暂时不考虑,以后再加。
CR(Connection request) Two pointers;
从上图可以看出,Connection request必须包含的参数有Message type code、Source local reference、Protocol class和Called party address。其它的参数是可有可无的。 关于Connection request 消息的几点说明:
1. F = mandatory fixed length parameter; 2. V = mandatory variable length parameter;
3. O = optional parameter of fixed or variable length;
4. Connection request消息包含有两个指针,其中一个指向first Mandatory
variable parameter,指针(包含指针本身所占的字节数)表示跳过指针数值个字节数就是Mandatory variable parameter的长度(1字节,指示Mandatory variable parameter的长度)和内容;另一个指向optional parameter。指针(包含指针本身所占的字节数)表示跳过指针数值个字节数就是optional parameter的parameter name、Length indicator of parameter name、parameter。
下图是所有parameter name对应的编码表,这张表用于可变参数的编解码,首先,根据optional parameter point 所指向的第一个字节解码出是说明参数,在读取该参数的长度,在读取参数的值,这样循环操作。直到解码到参数名为End of optional parameters为止。一般情况下,参数名为Data是,就是对应的RANAP的数据。Data对应的编码为0x0f。
CC(Connection confirm)
One pointer;
CREF(Connection refused)
One pointer;
RLSD(Released)
One pointer;
RLC(Released Complete)
NO pointer;
DT1(Data form 1)
One pointer;
从上图可以看出,Data form 1是包含固定参数的消息。包含Message type、Destination local reference、Segmenting/reassembling 和Data。
关于Data form 1 消息的几点说明: 1. F = mandatory fixed length parameter; 2. V = mandatory variable length parameter;
3. O = optional parameter of fixed or variable length;
4. Segmenting/reassembling字段的高7位用于扩展,低1位为0表示no more data,为1表示 more data。目前的数据这个字段一般为0
5. Data form 1还有一个指向first Mandatory variable parameter的指针占用一个字节,跳过这个指针所指向的字节数就是RANAP数据的长度和内容。
程序设计思路
经过上面的描述,解析SCCP协议的基本思路为:
1.首先确定SCCP的消息类型,SCCP的第一个字节就代表是上面消息类型,具体参考
Table 1/Q.713 ??SCCP message types。
2.根据消息类型解析相应的消息,这里可以用分支语句来实现。 3.具体的消息如何解析参考相应的消息结构的定义。 4.把SCCP所携带的RANAP协议数据和长度返回。
6.RANAP(Radio Access Network Application Part)
解析RANAP协议,采用第三方软件。第三方软件是香农信息技术(上海)有限公司的ASN.1 C 编译器。把RANAP协议的Message and Information Element Abstract Syntax (with ASN.1)经过ASN.1 C 编译器转化为可调用的C代码,封装这些代码为dll。