ASN.1编解码:ORAN-E2AP分析

Posted rtoax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASN.1编解码:ORAN-E2AP分析相关的知识,希望对你有一定的参考价值。

ASN.1编解码:ORAN-E2AP分析


荣涛
2021年8月25日
rongtao@sylincom.com


前面的文档讲述了如何编译asn1c,如何选取合适的asn1c软件版本,及其简单使用方法。本文将对asn1c的详细使用进行介绍和分析。并结合 O-RAN E2AP (参考O-RAN.WG3.E2AP-v01.01)进行编码测试与调试。

资源
e2ap-v01.00.00.asnhttps://download.csdn.net/download/Rong_Toa/21494571
e2ap-v01.01.asn1https://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. 参考链接

  1. https://github.com/nokia/asn1c

以上是关于ASN.1编解码:ORAN-E2AP分析的主要内容,如果未能解决你的问题,请参考以下文章

ASN.1编解码:asn1c-ORAN-E2AP

ASN.1编解码:asn1c的版本分析-诺基亚

ASN.1编解码:asn1cenber和unber

ASN.1解码

ASN.1编解码与编程

ASN.1编解码:asn1c的基本使用