ASN.1编解码:ORAN-E2AP分析
Posted rtoax
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASN.1编解码:ORAN-E2AP分析相关的知识,希望对你有一定的参考价值。
前面的文档讲述了如何编译asn1c,如何选取合适的asn1c软件版本,及其简单使用方法。本文将对asn1c的详细使用进行介绍和分析。并结合 O-RAN E2AP (参考O-RAN.WG3.E2AP-v01.01)进行编码测试与调试。
资源
e2ap-v01.00.00.asn
:https://download.csdn.net/download/Rong_Toa/21494571
e2ap-v01.01.asn1
:https://download.csdn.net/download/Rong_Toa/21494581
1. ORAN E2AP ASN.1的选取
首先从文档“O-RAN.WG3.E2AP-v01.01”中可以看出,文档中有多个E2AP ASN.1 版本
下面给出了两个版本文件名,具体文件请查看发布的版本和详细的设计文档。两个文件分别为:
e2ap-v01.00.00.asn
:E2 Termination中提供;e2ap-v01.01.asn1
:我从 O-Ran 文档中提取出的 ASN.1;
我们分别可以基于上面两个 asn1 文件进行编译,生成C语言程序,经过编码后编译运行。下面将对 asn1c 的使用进行详细的介绍。
2. Nokia asn1c-s1ap
整体上讲,asn1c-s1ap
是诺基亚在asn1c-v0.9.29
的基础上修改的开源代码分支。该版本与asn1c-v0.9.28
虽然只差了一个子版本,但是差异很大,从利用 asn1c 指令将 ASN.1 文件转换为 C语言源代码过程生成的源代码,到生成的 Makefile 的形式都有相当的差异。所以,在上个文档中,我们采用的是官方的asn1c-v0.9.28
版本,但是由于本文档在于讲述ORAN E2AP ASN.1
,该标准是由Nokia制定,所以采用诺基亚关于asn1c的代码分支asn1c-s1ap
,详情请参考文档《ASN.1编解码:asn1c的版本分析》,asn1c-s1ap
的下载地址为https://github.com/nokia/asn1c。
2.1. 编译安装
见之前的文档。
2.2. asn1c
指令
见之前的文档。
2.3. C语言代码生成与编译
见之前的文档。
3. E2AP-简介
3.1. 基站架构图
E2接口位于(CUDU全分离部署场景):
集中部署如下图:
3.2. E2AP 版本
在上文,我简单说了,诺基亚发布的O-RAN文档中,E2AP有比较大的版本变化,同时,非常值得注意的是,诺基亚发布的版本,使用 asn1c官方版本asn1c-v0.9.28
会提示语法错误,所以必须采用诺基亚的asn1c-s1ap
(也就是asn1c-v0.9.29
)版本,这在之前的文档中也进行过说明。
以下面两个版本为例:
e2ap-v01.00.00.asn
:E2 Termination中提供;e2ap-v01.01.asn1
:我从 O-Ran 文档中提取出的 ASN.1;
最简单的方法,我们只用 Compare软件比较这两个文件,对比差异。对比过程中,左匡图为v01.00.00
,右边框图为v01.01
。
3.3. E2AP 版本对比
3.3.1. E2建链阶段数据类型的增加
为上面添加的数据类型添加消息结构
当然,需要为此添加一下枚举值:
下面是具体的数据结构(内容比较多,我只放一部分)
3.3.2. E2增加的配置信息
首先增加数据类型
增加的数据结构
4. E2AP-C语言
本章主要讲,如何使用 asn1c 工具将 ASN.1 编码编译成C语言。这个步骤是繁琐的,为了尽可能清晰,在章末我将写个脚本,简化操作流程,同时,我也将用 CMake 简化编译流程。
请移步下一个文档。
5. 参考链接
以上是关于ASN.1编解码:ORAN-E2AP分析的主要内容,如果未能解决你的问题,请参考以下文章