Open5GSUeRANSim2:对安装在同一个VM上的OPEN5GS和UERANSIM进行配置和抓取wireshark报文

参考链接:

Configuring SCTP & NGAP with UERANSIM and Open5GS on a Single VM for the Open5GS & UERANSIM Series
https://www.youtube.com/watch?v=INgEX5L5fkE&list=PLZqpS76PykwIoqMdUt6noAor7eJw83bbp&index=5

Configuring RRC with UERANSIM and Open5GS on a Single VM for the Open5GS & UERANSIM Series
https://www.youtube.com/watch?v=ZM9jOCdElMs&list=PLZqpS76PykwIoqMdUt6noAor7eJw83bbp&index=6

Wireshark Dissector for Radio Link Simulation Protocol from UERANSIM
https://github.com/louisroyer/RLS-wireshark-dissector

OPEN5GS和UERANSIM目前状态:
现在OPEN5GS和UERANSIM安装在同一个virtual machine,并且没有修改默认配置。所以两者目前都使用的都是回环的local ip。

安装并运行wireshark

首先安装wireshark,wireshark的版本要求至少在3.0之上(包含nr-rrc dissector等)。
抓取RAN和AMF建立NGAP连接的报文。

sudo apt-get install wireshark
sudo wireshark &

选择Loopback:lo口抓取log
在这里插入图片描述
当UERANSIM的gnode模块通过…/build/nr-gnb -c open5gs-gnb.yaml连接到open5GS的AMF,可以看到有如下的SCTP和NGAP报文。AMF的ip是127.0.0.5,gnode的ip是127.0.0.1. AMF回复NGSetupResponse,表示NGAP连接成功建立。
在这里插入图片描述

配置SCTP和NGAP的参数

默认参数

OPEN5GS和UeRANSim装在同一个VM上,下面是软件默认配置。使用的网段是127.0.0.0/24,说明默认只有最有一个byte配置模块IP。
本文关注的是AMFD,即AMF的deamon进程/服务;以及GNB和UE。
GNB和UE通过建立在RLS(Radio Link Simulator)之上的RRC交互。 由于UeRANSIm只是GNB的模拟,不是真实的RAN,所以没有RLC,以及之下的MAC和PHYS层。UeRANSIm的RRC建立在自定义的RLS之上。
AFMD和GNB通过建立在SCTP(使用端口28412)的NGAP协议交互。

在Open5GS中,默认IP配置:
AMFD为127.0.0.5,
SMFD为127.0.0.4
UPFD为127.0.0.7
NRFD为127.0.0.10
AUSF为127.0.0.11
UDMD为127.0.0.12
UDRD为127.0.0.20
在这里插入图片描述

查看AMF配置

按照下图,AMF的配置文件是/etc/open5gs/amf.yaml
在这里插入图片描述
AMF的配置文件内容见下图,从NGAP配置可以看到N2口的AMF侧端点IP为127.0.0.5。由于NGAP建立在SCTP(默认端口38412)之上,所以不需要配置port。
SBI server配置为 ip:port =127.0.0.5:7777, 表示AMF和其他核心网模块交互的IP和端口。
图中最下面,AMF的network_name 为Open5GS,amf_name为open5GS_amf0

在这里插入图片描述

修改Gnb配置

修改GNB和UE的参数配置。首先将默认配置拷贝到gnb1.yaml和ue1.yaml中。
在这里插入图片描述
修改gnb1.yaml文件中,linkIP,ngapIP,gtpIP的值。默认都是127.0.0.1.
抓包的时候所有从gnb出去的报文都是127.0.0.1,不方便分析。
参考下图分别修改为127.0.0.101,127.0.0.100,127.0.0.200.
AMF的配置是127.0.0.5,和Open5GS的AMF默认配置相同,所以维持不变,不用修改。
在这里插入图片描述
修改后通过修改后的gnb1.yaml启动GNB,wireshark过滤127.0.0.5 ip。
可以看到GNB通过127.0.0.100成功连接AMF建立NGAP连接。
在这里插入图片描述

添加RLS dissector至wireshark (查看UE和GNB之间RRC交互)

UeRANSim 模拟UE和Gnode,没有空口的L2 L1层。所以RRC之下是自定义的RLS (Radio Link Simulator)层。
需要针对RLS添加RLS dissector,以查看UE和GNB之间的RRC消息。

确认wireshark plugin目录

在这里插入图片描述

拷贝RLS dissector至wireshark plugin目录

sudo git clone https://github.com/louisroyer/RLS-wireshark-dissector.git
在这里插入图片描述
重新进入wireshark可以看到RLS协议已经安装。
在这里插入图片描述

添加UE信息至Open5GS

首先将默认配置拷贝到ue1.yaml中. 下图是UE的配置文件。根据此文件的参数,将UE信息添加到Open5GS的webUI中。
根据ue1.yaml中的SUPI来填写IMSI。
SUPI是分配给每个用户并在3GPP规范TS 23.501中定义的5G全局唯一订阅永久标识符(SUPI)。SUPI值在5G Core中的USIM和UDM / UDR功能中提供。

在这里插入图片描述
打开open 5GS web UI. 点击’ADD A SUBSCRIBER’.
在这里插入图片描述
在create Subscriber窗口里只需要按照ue1的IMSI添加进去即可。其他都和ue1.yaml的配置相同,维持不变即可。
在这里插入图片描述
添加成功后,如下图:
在这里插入图片描述

修改UE配置

由于GNB的linkip在之前修改为127.0.0.101. 所以ue1.yaml的gnbSearchList修改为127.0.0.101
在这里插入图片描述

SUPI对应标准

见3GPP TS23.501 的5.9.2节。和 3GPP TS23.003 的2.2节。SUPI的其中一种类型就是IMSI,在UeRANSIm和Open5GS中配置的就是IMSI。
在这里插入图片描述
在这里插入图片描述

第一次UE连接GNB的日志

分别使用下图中命令先后拉起GNB和UE。
虽然log显示PDU session成功建立。
但是UE的log有如下报错:
[error] TUN interface could not be setup. Permission denied. Please run the UE with ‘sudo’
在这里插入图片描述

第二次以root权限连接UE和GNB

在这里插入图片描述
UeRANSim的tunnel interface
通过ip addr命令,可以看到成功建立了Tunnel Interface uesimtum0,ip为10.45.0.4.
在这里插入图片描述
从wireshark抓包,过滤nr-rrc,NGAP报文。下面两张图分别是在RRC和NGAP上传送的NAS Registration request消息。
RRC是127.0.0.1和127…0.0.101之间的ip连接,NGAP是127.0.0.100和127.0.0.5之间的ip连接。
在这里插入图片描述
在这里插入图片描述

UU空口的控制面协议栈

通过wireshark报文可以看到UeRANSim UU口的协议栈和真正UU口协议栈的差异。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/260163.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 运维(一):Python 包管理器 pip 的使用指南

大家好,我是水滴~~ 本文将介绍了 Python 的包管理器 pip 的基本使用、常用命令、帮助信息,以及一些常见问题。文章内容包含大量的示例代码,希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总目录・点这里 文章目录 1. 包管理器1…

Axure基础

软件: 简单交互动效 动态面板 显示和隐藏 表单元件 表格设计 内联框架 导航菜单 元件交互样式 滚动屏幕与弹幕

JAVA线上事故:递归导致的OOM

最近因为人员离职,接手一个项目,是xxljob的客户端,部署在k8s上,在排查线上工单时,发现了一个问题: 在管理界面上,我惊讶的发现,三个月的时间,2个Pod,每个都重…

代码随想录-刷题第三十三天

122. 买卖股票的最佳时机II 题目链接:122. 买卖股票的最佳时机 II 思路:题目中利润是可以分解的。 加入第0天买入,第三天卖出,利润为price[3] - price[0]。其利润可以分解成(prices[3] - prices[2]) (prices[2] - prices[1]) …

Github 2023-12-21 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Go项目1Jupyter Notebook项目1C#项目1Solidity项目1TypeScript项目1C项目1CSS项目1 GPT-Engineer…

【Linux C | 文件I/O】文件的打开关闭 | open、creat、colse 函数

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)

十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。 项目基本情况是一个考试系统调用题库…

【数据结构】线段树算法总结(单点修改)

知识概览 用作单点修改的线段树有4个操作: pushup:由子节点的信息计算父节点的信息build:初始化一棵树modify:修改一个区间query:查询一个区间 线段树用一维数组来存储: 编号是x的节点,它的父节…

2023年12月GESP Python三、四级编程题真题解析

三、2023年12月GESP Python三级编程题 【三级编程题1】 【试题名称】&#xff1a;小猫分鱼 【问题描述】 海滩上有一堆鱼&#xff0c;N只小猫来分。第一只小猫把这堆鱼平均分为N份&#xff0c;多了i<N条鱼&#xff0c;这只小猫把多的i条鱼扔入海中&#xff0c;拿走了一份…

Java_集合进阶(Collection和List系列)

一、集合概述和分类 1.1 集合的分类 已经学习过了ArrayList集合&#xff0c;但是除了ArrayList集合&#xff0c;Java还提供了很多种其他的集合&#xff0c;如下图所示&#xff1a; 我想你的第一感觉是这些集合好多呀&#xff01;但是&#xff0c;我们学习时会对这些集合进行…

读书笔记产品经理学习笔记1-忘掉技术,先看客户需求

技术到产品思维的转换 以前做技术的时候&#xff0c;扮演的角色是怎样多快好省的完成开发。现在做产品了&#xff0c;你得自己定产品方案&#xff0c;让别人来开发。最重要的是先弄清楚客户的需求是什么&#xff0c;要解决什么问题&#xff0c;再看产品怎么设计&#xff0c;然…

用ImageJ处理高斯光束的光斑

文章目录 图像显示图像裁剪高斯拟合 图像显示 ImageJ是著名的科研图像处理工具&#xff0c;提供了非常强大的分析功能&#xff0c;处理光斑图像简直是小菜一碟。这里推荐下载fiji&#xff0c;是内置了大量插件的ImageJ&#xff0c;可以满足各种科研上的图像处理需求。 打开一…

RTOS中断管理的简单应用

我们在stm32f103c8t6单片机上验证RTOS中断管理&#xff0c;利用stm32cube进行RTOS的配置。裸机的时钟源默认是 SysTick&#xff0c;但是开启 FreeRTOS 后&#xff0c;FreeRTOS会占用 SysTick &#xff08;用来生成1ms 定时&#xff0c;用于任务调度&#xff09;&#xff0c;所以…

maven学习和maven聚合工程搭建

1.学习maven maven的概念 项目管理工具 &#xff0c;对jar进行依赖管理&#xff0c;编译&#xff0c;打包&#xff0c;单元测试&#xff0c;安装&#xff0c;部署&#xff0c;贯穿整个项目 为什么要学maven 要解决的问题&#xff1a; 不同的开发工具开发出来的项目目录结构…

智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.非洲秃鹫算法4.实验参数设定5.算法结果6.…

PostgresSQL数据库中分区和分表的区别以及PostgresSQL创建表分区分表示例

1.分区分表理解 数据库分区和分表都是数据库中常用的数据分散存储技术&#xff0c;但它们的实现方式和应用场景有所不同。 分表&#xff1a;将一个大的表拆分成多个小的表&#xff0c;每个子表存储一部分数据。分表可以减轻单个表的数据量&#xff0c;提高查询效率&#xff0c…

七、W5100S/W5500+RP2040之MicroPython开发<HTTP Client示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 原理2.3 请求方法2.4 应用 3. WIZnet以太网芯片4. HTTP Client通信示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;Mic…

Swagger2接口测试文档

目录 一、Swagger简介 1.1 Swagger是什么&#xff1f; 1.2 为什么要用Swagger 1.3 Swagger注解 二、Spring集成Swagger 三、测试环境配置 一、Swagger简介 1.1 Swagger是什么&#xff1f; Swagger是一款RESTFUL接口的文档在线自动生成功能测试功能软件。Swagger是一个规…

Qt 国际化——创建中英文翻译步骤

Qt 国际化——创建中英文翻译步骤 说明&#xff1a;之前我的csdn博客&#xff0c;第一篇文章发表的就是Qt国际化的文章&#xff08;点击打开&#xff09;&#xff0c;写的也过于简单了&#xff1a; 今天&#xff0c;这篇文章再详细的记录下&#xff0c;中英文翻译的步骤。 一…

【Python】循环语句

一、while循环的基础语法 二、while循环的嵌套应用 三、while循环的嵌套案例 四、for循环的基础语法 五、for循环的嵌套应用 六、循环中断 : break和continue 一、while循环的基础语法 使用while循环的基础应用 while循环语句 while循环注意点 while的条件需得到布尔类型&am…