ASNPER编译码规则技术总结Word文件下载.docx
- 文档编号:22596309
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:27
- 大小:99.28KB
ASNPER编译码规则技术总结Word文件下载.docx
《ASNPER编译码规则技术总结Word文件下载.docx》由会员分享,可在线阅读,更多相关《ASNPER编译码规则技术总结Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
按ITU-TX.691的规定;
若最终的编码结束后。
所得的编码不是8的倍数;
信息编码结
束后的填充由RRC负责。
另外,PER编译码必须依赖于3GPP的标准文档。
也就是说,收发双方也必须知道层3
消息的具体结构;
这样编码和译码的才能被编译和识别。
2.1编码规则分组编码规则包括三个部分:
preamble(前缀)、length(长度)、contents(内容)。
其编码格式如图1所示:
Preamble|length|Content
(1)preamble:
它只出现在ENUMERATEDSEQUENCESETCHOICE四种数据结构的编码中。
用来记录结构中有无扩展项(extension)、选择项(optional)或缺省项(default)。
(2)length:
对STRINGSEQUENCEOFSETOF等数据类型进行编码时,需对其长度按对齐方式进行编码。
(3)contents:
若数据是基本结构类型,如:
BOOLEANIINTERGERREALBITSTRING等,
即可直接进行编码;
若数据是复合结构类型,如SEQUENCESET、CHOICE、SEQUENCEOF
等,则属嵌套编码,此时contents中也包含有preamble、length、contents三个部分。
(注:
在以下举例中,为对齐需要插入0的地方,以(pad)表示)
3.2范围受限的整数类型INTEGER(lb…ub)
lb为范围的下限,ub为上限,范围N=ub-lb+1。
PER针对N的大小不同,采用不同的编码方法,且对整数n进行编码时,以(n-lb)的值进行编码。
当N<
=255时,整数编成
不需对齐的1〜8比特;
当N=256时,编成需对齐的8个比特,当256<
N<
=65536时,编成需对齐的16个比特。
例如:
当ASN.1描述的数据maximumNestingDepthINTEGER(…15)的值为3时,PER
编码为0010;
g711Alaw64kINTEGER(…256)的值为10时,PER编码为(pad)00001001;
而当statusDeterminationNumberINTEGER(0…16777215)的值为1000,PER编码是
00000010(pad)0010011100010000。
3.3对象标识符类型OBJECTIDENTIFER
OBJECTIDENTIFER是一种用层次标识符来描述对象的方法;
每一层为一标识符,用一个十进制整数表示。
例如:
protocolIdentifierOBJECTIDENTIFIER可被赋值为{itu-t(0)
recommendation(0)h(8)245version(0)3}。
protocolIdentifier由itu-t、
recommendation、h245和version这四层标识符描述;
用{0,0,8,245,0,3}十进制整数序列表示。
OBJECTIDENTIFER的编码方法为:
length+各层标识符编码,其中length值
按半约束整数类型编码。
PER并不分别对第一层和第二层的标识符整数值进行编码,而是将两层的整数值合并成'
40*第一层整数值+第二层整数值'
一个值来进行编码。
其他层次标识符整数值被对齐编码为8位比特串;
其中首位是标志位,'
1'
表示整数值在该比特串没有被编码完,后面接着8位比特串还是原标识符整数值的编码;
而'
0'
则表示整数值在该比特串编码完毕。
如上例:
由于0*40+0=0,所以第一二层的标识符被编码为:
00000000;
第三层标识符的编码是00001000;
245无法只用一个8位比特串表示,其编码为1000000101110101;
剩下的标识符分别被编码为00000000和00000011。
因为各层标识符的编码长度总共为6个字节,所以length=0x06。
protocolIdentifier的最后编码是:
0x060x000x080x810x750x000x03。
3.4CHOICE复合类型
CHOICE结构中有许多元素,每一个元素均有一个索引号,第一个元素的索引号为0,
第二个元素的索引号为1,依次类推,直到最后一个元素n。
其编码方法为:
索引号+所选元素编码。
如果在choice结构内有扩展标记(…),则在索引号前增加一个比特位'
表示所选项在原列表内;
增加一个比特位'
表示所选为扩展内容。
causeCHOICE
{
unspecifiedCauseNULL,
descriptorTooComplexNULL,
若cause的值为unspecifiedCause,贝UPER编码为00。
其中第一个0表示所选的不是
扩展内容;
第二个0表示所选的项为第一项。
3.5SEQUENCE复合类型
SEQUENCE构中可能有扩展标记(…),也有可能有些元素为可选项(OPTIONAL)。
如果有扩展标记,编码的第一个比特表示有无扩展内容(0表示是非扩展项,1表示为扩展
项);
随后是若干个比特,其个数等于结构中可选项的个数,分别按位置顺序对应于每一个
可选项,值'
1'
表示选用对应的可选项,值'
0'
表示不选;
接着是结构中各个元素的内容
编码。
H261VideoCapability:
:
=SEQUENCE
qcifMPIINTEGER(1..4)
cifMPIINTEGER(1..4)
temporalSpatialTradeOffCapability
OPTIONAL,
BOOLEAN,
}
若H261VideoCapability的取值如下
qcifMPI3,
tempralSpatialTradeOffCapabilityTRUE,
贝编码表示为010101,其中第一个0表示无扩展项;
第二个1表示qcifMPI选用;
第三个0表示cifMPI不选用;
接着的10表示qcifMPI的值为3;
最后的1表示tempralSpatialTradeOffCapability的值为TRUE。
3.6SETSIZE(lb…ub)OF和SEQUENCESIZE(…ub)OF复合类型
其编码形式为:
元素个数编码+各个元素内容编码;
元素的个数按受限整数方式进行编码。
AlternativeCapabilitySet:
=SEQUENCESIZE(1…256)OF
CapabilityTableEntryNumber,
CapabilityTableEntryNumber:
=INTERGER(1…65535)
若AlternativeCapabilitySet的取值为(1,2)时,贝编码为:
(pad)000000010000000000000001
4、RANAP协议描述分析
因为对RANAP勺ASN.1语法还不是很清楚,以下描述是通过观察数据加上猜测得来,疏漏之
处,还请见谅。
RANAP-PDU:
=CHOICE{
initiatingMessageInitiatingMessage,successfulOutcomeSuccessfulOutcome,unsuccessfulOutcomeUnsuccessfulOutcome,outcomeOutcome,
这是RANAP勺PDU的最高结构。
我们再来看InitiatingMessage的定义
InitiatingMessage:
=SEQUENCE{
procedureCodeRANAP-ELEMENTARY-PROCEDURE.&
procedureCode({RANAP-ELEMENTARY-PROCEDURES}),
criticalityRANAP-ELEMENTARY-PROCEDURE.&
criticality
({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
valueRANAP-ELEMENTARY-PROCEDURE.&
InitiatingMessage({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
ProcedureCode:
=INTEGER(0..255)Criticality:
=ENUMERATED{reject,ignore,notify}我们举一个具体的value的例子
CommonID:
protocolIEsProtocolIE-Container{{CommonID-IEs}},protocolExtensionsProtocolExtensionContainer{{CommonIDExtensions}}
ProtocolIE-Container{RANAP-PROTOCOL-IES:
IEsSetParam}:
=
SEQUENCE(SIZE(0..maxProtocolIEs))OFProtocolIE-Field{{IEsSetParam}}ProtocolIE-Field{RANAP-PROTOCOL-IES:
idRANAP-PROTOCOL-IES.&
id({IEsSetParam}),criticalityRANAP-PROTOCOL-IES.&
criticality({IEsSetParam}{@id}),valueRANAP-PROTOCOL-IES.&
Value({IEsSetParam}{@id})
可以看出ProtocolIE-Container是一个IE的数组,举一个具体的value作例子PermanentNAS-UE-ID:
iMSIIMSI,
IMSI:
=TBCD-STRING(SIZE(3..8))TBCD-STRING:
=OCTETSTRING
下面将结合数据来进行详细的解释
5、RANAP协议编码分析
000f4010000001001740095064005513000000f8
0——因为RANAP-PD最后有扩展项,这个0表示无扩展
-00-----RANAP-PD是个choice,而且有四项,这两个0表示选择的是第一项
InitiatingMessage
---00000为了对齐填上的0
00001111表示这个PDU的类型是个CommonID
01Criticality为第二项ignore
为对齐填上的0
00010000整个InitiatingMessage的value的长度
0表示CommonI[没有扩展参数
-0表示Commonl[的勺第一个可选参数没有
--000000为对齐填上的0
0000000000000001ProtocolIE-Container的数量,因为最大值
maxProtocolIEs是65536,所以要用16位编码
0000000000010001表示ProtocolIE-Container中的为
id-PermanentNAS-UE-ID
00001001整个id-PermanentNAS-UE-ID的value的长度
0表示PermanentNAS-UE-ID无扩展项(因为只有一项,所有没有哪一
项的bitmap)
-101表示imsi的长度。
5表示该IMSI的长度为8(最小为3,3+5=8)
0000为对齐填上的0
64005513000000f8为IMSI的值
3.PER的编码规则总结
一、对整数和域长的编码
在PER编码中,整数的编码和长度L的编码,在实际的结构类型编码中经常用到,是结构中对类型编码的基础,因此,下面首先讲述这两种编码的规则:
1.整数的编码
1不受限的整数编码
不受限整数n的编码是以最小八位组来编码的。
它分成对长度的编码和对数的编码两部分,并且都是以八位组为单位来编的,若为负数则以2'
-scompLetement来编码的(即以补码的形式编)。
例(with"
L:
"
precedingtheLengthdeterminant—ifany-and"
C:
precedingthecontentsencoding-ifany):
integer1INTEGER:
=4096
integer2INTEGER(MIN..65535):
=127
integer3INTEGER(MIN..65535):
=-128
integer4INTEGER(MIN..65535):
=128其编码为:
看作是不受限的整数来编码。
2半受限的整数的编码
设n€[bmin,+7,d=n—bmin。
八位组的组数
[Log256d]也将作为长度L
来编码。
例:
integer5
INTEGER(-1..
MAX)
integer6
INTEGER(1
..MAX)
integer7
INTEGER(0
=128
编码为:
Integer5:
00000010
C:
0001000000000001
Integer6:
00000001
01111110
Integer7:
10000000
3受限整数的编码:
对于一个整数n€[bmin,bmax],d=bmax—bmin+1。
d=1时,有n=bmax=bmin。
这样的整数在发送方和接收方都知道,因此不需要编码。
在对齐的方式下:
当2Wd<
25,5对n-bmin进行编码,是以二进制的最小位来编码的,编码的长度为与d
相对应的长度。
长度域L不编码。
当d=256时,对n-bmin编码,长度为一个八位组,长度域L不编码。
当257Wd<
65536寸,对n-bmin编码,长度为两个八位组,长度域L不编码。
当d>
65537时,对n-bmin编码,编码为最小的八位组数,即为[Log256d]octets.这个八位
组的组数将以受限的整数在编码的前面以L域表示出来。
故L的区间为[1,Lmax]。
非对齐的方式下:
n-bmin直接编码为二进制的最小位长度,长度域L不编码。
integer8INTEGER(3..6):
=3,4,5,6
integer9INTEGER(4000..4254):
=4002,4006integer10INTEGER(4000..4255):
=4002,4006
integer11INTEGER(0..32000):
=0,31000
integer12INTEGER(1..65538):
=1,257,65538
其编码如下:
11
00000110
0111100100011000
integer8C:
00,C:
01,C:
10,
integer9C:
00000010,
integer10C:
integer11C:
0000000000000000,
integer12
非对齐方式:
00000000000000000,
00000000100000000,
10000000000000001对齐方式:
00C:
00000000,
01C:
0000000100000000,
10C:
000000010000000000000001
二进制的最小位长度.可理解为编码所需的比特数,以后赋予的值都将以这个位数来进行编码,这点跟上面的例子是吻合的。
而后面的对齐方式是以八位组为单位,根据数所在八位
组的范围来确定其表示八位组的个数,但前面要加长度的编码,这种情况在实际应用中见的
不多。
4一般最小的非负整数
如果Ownw63在非八位组对齐方式下(非对齐方式下没有前同步码),前同步码为0,
后面六位为n的编码。
编码形式为:
0nnnnnn
如果n》64,在非八位组对齐方式下(非对齐方式下没有前同步码),前同步码位1,
L为长度域,n作为一个受限的整数来编码(bmin看作0)。
编码形式为:
1••-n
99000L:
丄P1*******
11000010
1000001010111000
2.域长的编码
域长L的含义很广泛,在此可表示为:
比特串的长度、八位组的长度(OCTETSTRING和opentypes)、对已知字符串的描述、作为元素来描述(如果值为SEQUENCEOF或SETOF)等。
ASN.1描述规范中,对类型有长度的限制,一般可表示为SIZE(Lmin-Lmax),(Lmax
可宀+〜。
长度L作为一个受限或半受限(Lmax^+〜的整数来编码。
特别地,当Lmin=Lmaxw65535时,由于解码者事先知道故不用对L进行编码,类似地,若根据规定,
某值不用编码,则长度为NULL,同样L不用编码。
在对齐方式下:
如果L为一个位图的长度,则对L-1和一般的非负整数编码一样。
如果Lmaxw65535时,L编码为一个受限的整数(在区间[Lmin..Lmax])。
如果Lmax>
65535(ie.64K)时,或上限Lmax是无限大时:
a.如果LW127,L编码为一个八位组,最高位为0。
即:
0LLLLLLL
b.如果128WLW16383L编码为两个八位组,高两位为10
L=1301000000010000010
c.如果L>
16384,编码分成许多的单元,长度数为f>
16K,(f=1、2、3、4)分成16384、
32768、49152、65536。
编码时最高位为两个1,后六位为f值.即将长度L分成几个部分进行编码,下面将用一个例子来说明,L=147457=2X65536+16384+1的编码为:
1100010065536units1100010065536units
1100000116384units000000011unit
非对齐方式下:
如果L的长度为一个位图,则L-1作为一般的小整数来编码。
如果Lmaxc65536,L-Lmin编码为[Log2d]bits,d=Lmax—Lmin+1。
如果Lmax—Lmin》65534,或Lmax为无限大。
a.LW127,8bits。
b.128wLW16383编码为16bits。
10LLLLLLLLLLLLLL
c.L》16384(16K),则和前面的对齐方式一样编码。
如果一种类型有一个可扩展长度的限制,并且它被传输的值不遵守扩展限制的规定,这
样的长度将以半受限的整数来编码(Lmin=0,Lmak+〜。
二、各种类型编码
PER的编码规则定义了多种数据类型,简单的地可分为两大类。
第一类是结构类,如
CHOICE、SEQUENCE'
ENUMERATED等。
另一类是简单类,女口INTEGER、REALL、BOOLEAN等。
下面将对以下常用的几种类型的编码规则做一个总结:
1.INTEGER
整型是规范中用得最多的一种数据类型。
对这种数据类型,对齐和非对齐的方式差别很
大,特别是当表示数的范围较大时。
数的范围一般定义为range=(上界—下界+1)。
此范
围的实际意思是指上下界之间的数的个数。
在非对齐的方式下是使用能够描述该整数范围的
最少比特来编码的,一般定义为2mvrange<
2m+1,即对该整数的编码为m+1位。
对齐方式在
数的范围较小(<
255时,编码规则与对齐方式相同,而超过此范围则比较复杂。
a.编码规则:
一个有范围限制的整型可表示为(bmi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASNPER 译码 规则 技术 总结