【OAI】OAI5G核心网VPP-UPF网元分析

news2024/12/23 11:36:21

文章目录

  • VPP_UPF_CONFIG_GENERATION.md
    • VPP UPF Configuration Generation
    • Environment variables
    • Interfaces
    • Interface Configuration Examples
      • Central UPF
      • A-UPF
      • I-UPF
      • UL CL
  • FEATURE_SET.md
  • VPP_UPG_CLI
  • 参考文献

VPP_UPF_CONFIG_GENERATION.md

VPP UPF Configuration Generation

这个文章比较关键

VPP_UPF_CONFIG_GENERATION.md

init.conf

startup_debug.conf

upf_profile.json

create_configuration.py

The VPP-UPF configuration for different UPF deployment options (A-UPF, I-UPF, ULCL) are not compatible with each other.
The example described in VPP_UPF_CONFIG shows a central UPF node with one N3 and one N6
interface.

To ease the deployment, the UPF configuration can be auto-generated using the create_configuration.py script. It is
located in scripts/upf_conf/create_configuration.py. If you choose to use the official OAI docker images (from v1.5.0), this script is
executed upon start of the containers.

It takes three positional arguments:

usage: create_configuration.py
       [-h]
       [--rename]
       init_path
       profile_path
       startup_path

The init_path is the path to the init file that will be generated. A json file is written to the profile_path which
contains the UPF profile which is sent to the NRF.

The startup_path requires an existing VPP startup_debug.conf file with placeholders (@value@). These will be
overwritten with the corresponding environment variables.

If you choose to rename using the --rename option, the host interfaces are renamed from e.g. eth1 to n6-3.
Which interface is renamed depends on the configured subnet.

Environment variables

The UPF configuration is built entirely from environment variables. There are static variables, which always have to be
present:

Environment VariableDescriptionUsed in
NAMEUsed to build the UPF FQDNinit.conf, profile.json
MNCUsed to build the UPF FQDNinit.conf, profile.json
MCCUsed to build the UPF FQDNinit.conf, profile.json
REALMUsed to build the UPF FQDNinit.conf, profile.json
VPP_MAIN_COREWhich CPU core ID to use for the main threadstartup_debug.conf
VPP_CORE_WORKERWhich CPU core ID to use for the worker thread *startup_debug.conf
SNSSAI_SDSD from the SNSSAIprofile.json
SNSSAI_SSTSST from the SNSSAIprofile.json
DNNDNNprofile.json
VPP_PLUGIN_PATHPath where the UPG VPP plugin is installedstartup_debug.conf

* This config from VPP allows to configure more than one worker thread, e.g. 1-4, but it is not recommended in the
VPP-UPF, as there are race conditions.

The UPF FQDN is built as follows:

<name>.node.5gcn.mnc<mnc>.mcc<mcc>.<realm>

The NAME variable is translated to lower-case.

Then, there are support features which you also have to configure:

Environment VariableDescription
REGISTER_NRFIf the UPF should register to NRF
NRF_IP_ADDRThe NRF IP address
NRF_PORTThe NRF Port
HTTP_VERSIONHTTP version towards NRF (1/2)

Apart from this global configuration, you can dynamically configure your interfaces.
The syntax to configure an interface is as follows:

IF_<Index>_<Value>

Each interface can have multiple values, whereas the index describes the interface.
The following values are available:

ValueDescriptionMandatory
IPIP address of the interface**yes
TYPEEither N3, N4, N6 or N9yes
NWINetwork Instance of the interfaceyes (not for N4)
DNAIData Network Access Identifierno
IP_REMOTENext hop IP, optional when using --renameyes/no

** Should belong to subnet of existing host interface

An example of a UPF configuration is as follows (see also the docker-compose file):

- IF_1_IP=192.168.70.201
- IF_1_TYPE=N4
- IF_2_IP=192.168.72.201
- IF_2_TYPE=N3
- IF_2_NWI=access.oai.org
- IF_3_IP=192.168.73.201
- IF_3_TYPE=N6
- IF_3_IP_REMOTE=192.168.73.135 # EXT-DN IP Address
- IF_3_NWI=internet.oai.org
- NAME=VPP-UPF
- MNC=95
- MCC=208
- REALM=3gppnetwork.org
- VPP_MAIN_CORE=0
- VPP_CORE_WORKER=1
- VPP_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/vpp_plugins/ # Ubntu18.04
- SNSSAI_SD=123
- SNSSAI_SST=222
- DNN=default
- REGISTER_NRF=yes
- NRF_IP_ADDR=192.168.70.130
- NRF_PORT=80
- HTTP_VERSION=1

Interfaces

We use veth pairs to configure the UPF interfaces. Each UPF interface (e.g. N3) has a host interface IP and the IP address
used for signaling. You need one subnet for each UPF interface. In a typical deployment, you need at least three subnets:

  • Signaling (N4)
  • Access (N3)
  • Core/Internet (N6).

The IP value should belong to the same subnet as the host interface, but must not be the same.

The IP_REMOTE value also needs to be in the same subnet and is used to setup the routes accordingly.
When you use the --rename option, the IP_REMOTE is automatically calculated from the subnet from the IP value.
The remote IP is always the first host in the subnet, e.g. for the IP 192.168.70.201 in the subnet 192.168.70.0/24,
the remote IP is 192.168.70.1.

The value you provide overrides the default value. When you do not rename the interfaces, you need to manually specify
the remote IP address.

Interface Configuration Examples

The dynamic creation allows you to configure different UPF types.

Central UPF

This UPF has one N3, one N4 and one N6 interface:

- IF_1_IP=192.168.70.201
- IF_1_TYPE=N4
- IF_2_IP=192.168.72.201
- IF_2_TYPE=N3
- IF_2_NWI=access.oai.org
- IF_3_IP=192.168.73.201
- IF_3_TYPE=N6
- IF_3_NWI=internet.oai.org

A-UPF

This UPF has one N9, one N4 and one N6 interface:

- IF_1_IP=192.168.70.202
- IF_1_TYPE=N4
- IF_2_IP=192.168.74.202
- IF_2_TYPE=N9
- IF_2_NWI=iupf.node.5gcn.mnc98.mcc208.3gppnetwork.org
- IF_2_DNAI=iupf
- IF_3_IP=192.168.75.202
- IF_3_TYPE=N6
- IF_3_NWI=internet.oai.org
- IF_3_DNAI=internet

When you want to use multiple UPFs which should be chained or form a graph, you need to ensure that the NWI of the
configuration matches the FQDN of the other UPF. In this case, IUPF should have the following FQDN config:

- NAME=IUPF
- MNC=98
- MCC=208
- REALM=3gppnetwork.org

I-UPF

This UPF has one N3, one N4 and one N9 interface:

- IF_1_IP=192.168.70.203
- IF_1_TYPE=N4
- IF_2_IP=192.168.72.203
- IF_2_TYPE=N3
- IF_2_NWI=access.oai.org
- IF_2_DNAI=access
- IF_3_IP=192.168.74.203
- IF_3_TYPE=N9
- IF_3_NWI=aupf.node.5gcn.mnc98.mcc208.3gppnetwork.org
- IF_3_DNAI=aupf

As you can see, the N9 interface is in the same subnet as the N9 interface of the I-UPF example. This means
that the SMF will create an edge between these two nodes (as long as the FQDN/NWI configuration matches).
Also, the DNAI is configured for these examples to enable SMF in selecting a specific UPF for a PDU session.

UL CL

This UPF has one N3, one N4 and two N9 interfaces:

- IF_1_IP=192.168.70.204
- IF_1_TYPE=N4
- IF_2_IP=192.168.72.204
- IF_2_TYPE=N3
- IF_2_NWI=access.oai.org
- IF_2_DNAI=access
- IF_3_IP=192.168.74.204
- IF_3_TYPE=N9
- IF_3_NWI=aupf1.node.5gcn.mnc98.mcc208.3gppnetwork.org
- IF_3_DNAI=aupf1
- IF_4_IP=192.168.76.204
- IF_3_TYPE=N9
- IF_3_NWI=aupf2.node.5gcn.mnc98.mcc208.3gppnetwork.org
- IF_4_DNAI=aupf2

FEATURE_SET.md

FEATURE_SET.md
在这里插入图片描述

VPP_UPG_CLI

VPP-UPF 可以进行的一些操作

$ docker exec -it vpp-upf ./bin/vppctl show upf help
  adf                            show upf adf commands
  application                    show upf application <name>
  applications                   show upf applications [verbose]
  association                    show upf association
  bihash                         show upf bihash <v4-tunnel-by-key | v6-tunnel-by-key | qer-by-id | peer-index-by-ip> [detail|verbose]
  flows                          show upf flows
  flow                           show upf flow commands
  gtpu                           show upf gtpu commands
  node-id                        show upf node-id
  nwi                            show upf nwi
  pfcp                           show upf pfcp commands
  policy                         show upf policy
  proxy                          show upf proxy
  session                        show upf session
  specification                  show upf specification commands
  tdf                            show upf tdf commands

  • Show PFCP session at UPF
$ docker exec -it vpp-upf ./bin/vppctl show upf session
CP F-SEID: 0x0000000000000001 (1) @ 192.168.70.133
UP F-SEID: 0x0000000000000001 (1) @ 192.168.70.202
  PFCP Association: 0
  TEID assignment per choose ID
PDR: 1 @ 0x7f6cef01cd00
  Precedence: 0
  PDI:
    Fields: 0000000d
    Source Interface: Access
    Network Instance: access.oai.org
    Local F-TEID: 218138074 (0x0d0085da)
            IPv4: 192.168.72.202
    UE IP address (source):
      IPv4 address: 12.1.1.2
    SDF Filter [1]:
      permit out ip from any to assigned 
  Outer Header Removal: GTP-U/UDP/IPv4
  FAR Id: 1
  URR Ids: [1] @ 0x7f6ceefde850
  QER Ids: [] @ 0x0
PDR: 2 @ 0x7f6cef01cd80
  Precedence: 0
  PDI:
    Fields: 0000000c
    Source Interface: Core
    Network Instance: core.oai.org
    UE IP address (destination):
      IPv4 address: 12.1.1.2
    SDF Filter [1]:
      permit out ip from any to assigned 
  Outer Header Removal: no
  FAR Id: 2
  URR Ids: [1] @ 0x7f6ceefde8e0
  QER Ids: [] @ 0x0
FAR: 1
  Apply Action: 00000002 == [FORWARD]
  Forward:
    Network Instance: core.oai.org
    Destination Interface: 1
FAR: 2
  Apply Action: 00000002 == [FORWARD]
  Forward:
    Network Instance: access.oai.org
    Destination Interface: 0
    Outer Header Creation: [GTP-U/UDP/IPv4],TEID:9acb0442,IP:192.168.72.141
URR: 1
  Measurement Method: 0002 == [VOLUME]
  Reporting Triggers: 0001 == [PERIODIC REPORTING]
  Status: 0 == []
  Start Time: 2022/09/02 07:29:30:476
  vTime of First Usage:       0.0000 
  vTime of Last Usage:        0.0000 
  Volume
    Up:    Measured:                    0, Theshold:                    0, Pkts:          0
           Consumed:                    0, Quota:                       0
    Down:  Measured:                    0, Theshold:                    0, Pkts:          0
           Consumed:                    0, Quota:                       0
    Total: Measured:                    0, Theshold:                    0, Pkts:          0
           Consumed:                    0, Quota:                       0
  Measurement Period:                   10 secs @ 2022/09/02 07:29:40:476, in     5.597 secs, handle 0x00000c01

参考文献

参考文献1:OAI 基础核心网部署:oai-cn5g-fed/docs/DEPLOY_SA5G_BASIC_DEPLOYMENT.md

参考文献2:oai-cn5g-upf-vpp

参考文献3:UPD_DEPLOY_HELP

参考文献4:vpp-upf-docs

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(十三)地理数据库创建——进一步定义数据库①

地理数据库创建——进一步定义数据库① 目录 地理数据库创建——进一步定义数据库① 1.建立索引1.1建立属性索引1.2修改空间索引 2.创建子类和属性域2.1属性域2.2子类型2.3属性分割和合并2.4属性域操作2.4.1建立属性域2.4.2修改属性域2.4.3关联属性域 2.5子类型操作2.5.1建立子…

动态规划--青蛙跳台阶

青蛙跳台阶 前言青蛙跳台阶题目最优解结构性质画图分析发现规律验证规律 动规表达式青蛙跳台阶与斐波那契数列的不同之处 递归实现代码实现测试结果递归过程画图分析 非递归实现代码实现对比分析 前言 斐波那契数列每次学都有不一样的体会&#xff0c;从最开始简单理解就是&am…

无监督域适应 (UDA)(2)

本帖介绍UDA 的一个分支&#xff1a;bi-classifier adversarial learning。 一、回顾 在介绍 bi-classifier adversarial learning 之前&#xff0c;先来回忆一下 adversarial generation framework, 因为前者是基于后者的改进。 如图1所示&#xff0c;左边表示的是1&#xf…

DeepSORT 论文精读

摘要 SORT&#xff08;Simple Online and Realtime Tracking&#xff09; we integrate appearance information to improve the performance of SORT 集成外观信息来提高SORT的表现 we are able to track objects through longer periods of occlusions, effectively reduci…

JVM学习05:内存模型

JVM学习05&#xff1a;内存模型 1、java内存模型 很多人将java 内存结构与java 内存模型傻傻分不清&#xff0c;java 内存模型是 **Java Memory Model&#xff08;JMM&#xff09;**的意思。 JMM 定义了一套在多线程读写共享数据时&#xff08;成员变量、数组&#xff09;时…

UE4/5对背景音乐的调整设置

音乐是一个游戏必不可少的因素。 而在游戏设置中&#xff0c;必不可少的就有对背景音乐的声音大小进行设置&#xff0c;而我们需要的就是如何对背景音乐进行设置&#xff1a; 准备两个蓝图&#xff0c;分别是音效类和音效类混合。 然后打开音效类&#xff0c;我们可以看见下图…

如何用postman进行http接口测试,这篇文章绝对会颠覆你的认知

目录 前言 优点&#xff1a; 1、什么是POSTMAN 2、新建一个项目 2、新增一个用例 3、添加请求信息 4、post请求参数 5、添加头信息 6、预处理和结果检查 7、全局变量与环境变量 8、导出用例为代码 9、批量执行用例 前言 HTTP的接口测试工具有很多&#xff0c;可以进…

贪心法——黑白连线问题

一、问题描述 黑白连线Time Limit: 1000 MSMemory Limit: 1000 KB Description 给定直线上2n个点的序列P[1,2,… ,2n]&#xff0c;每个点P[i]要么是白点要么是黑点&#xff0c;其中共有n个白点和n个黑点&#xff0c; 相邻两个点之间距离均为1&#xff0c;请设计一个算法将每…

第六章:C语言的数组

在我的生活中&#xff0c;有许许多多的东西&#xff0c;有强迫症的小伙伴们&#xff0c;喜欢把它们分类到一个地方保存&#xff0c;这样一来&#xff0c;用的时候就按分类的形式来找自己需要的东西&#xff0c;而C语言也是如此&#xff0c;当有多个整形的数字是&#xff0c;就可…

steam搬砖详细解说,CSGO游戏搬砖的18个疑问?

看到这边文章进来的都是想了解steam搬砖&#xff0c;做个副业&#xff0c;我希望你可以认真把这个看完再考虑要不要做&#xff0c;适不适合自己去做&#xff0c;首先steam搬砖这个项目是需要有周转本金的&#xff0c;因为需要购买饰品道具&#xff0c;至于多少&#xff0c;这个…

7种《软件测试用例设计方法》解读及工作场景解析

1、等价类划分法 等价类划分法是一种将输入、输出、内部值等划分为若干个等价类的黑盒测试设计技术。在这种方法中&#xff0c;我们假设同一等价类的数据会被程序以相同的方式处理。 例如&#xff1a;一个允许输入年龄的程序&#xff0c;允许的年龄范围是1到100。在这种情况下…

Vue Test Utils前端单元测试

含义 单元测试&#xff08;unit testing&#xff09;&#xff0c;是指对软件中的最小可测试单元进行检查和验证。在提供了经过测试的单元的情况下&#xff0c;系统集成过程将会大大地简化。流行框架 Mocha (https://mochajs.cn/)、Jest (https://www.jestjs.cn/) Mocha Chai…

asp.net web api 后端服务器在调试时跨域问题的解决方案

跨域在发布时&#xff0c;在iis设置中 https://www.cnblogs.com/babietongtianta/p/6488985.html 在开发调试时&#xff0c;program.cs中添加 和各种方法&#xff0c;都不可以。 后来在iisexpress中设置&#xff0c;解决了。 在右下角iisexpress 右键 双击打开applicationho…

PCL学习十:Segmentation-分割

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云 PCL点云库学习笔记&#xff08;文章链接汇总&#xff09; 1. 引言 点云分割是根据空间、几何和纹理等特征对点云进行划分&#xff0c;使得同一划分区域内的点云拥有相似的特征。点云的有效分割往往是许多应用的前提&#…

【OAI】部署5GSA独立组网网络切片例程及例程解析

文章目录 摘要引言关键技术介绍5G核心网核心网网元功能 网络切片OAIDocker官方例程详解整体介绍具体详解网络切片架构部署概览与说明1-41.预先准备5.部署OAI 5G核心网6.获取基站仿真docker镜像7.部署基站仿真8.通信测试9.分析结果10. 使用多切片的UE11. 解除部署11.1解除RAN部署…

面了一个4年经验的测试员,一问三不知还反过来怼我?

金三银四期间&#xff0c;我们公司也开始大量招人了&#xff0c;我这次是公司招聘的面试官之一&#xff0c;主要负责一些技术上的考核&#xff0c;这段时间还真让我碰到了不少奇葩求职者 昨天公司的HR小席刚跟我吐槽&#xff1a;这几个星期没有哪天不加班的&#xff01;各种招…

(8)Qt---数据库

目录 1. Qt数据库简介 2. 连接与关闭 3. 建表 4. 增删改 5. 查询 6.银行管理系统程序代码(包含增删改查) 1. Qt数据库简介 Qt只是作为媒介去操作数据库&#xff0c;本身不具备数据库的功能&#xff0c;因此除了Qt以外&#xff0c;还需要在计算机中安装对应的数据库软件&#xf…

Windows 11 支持安卓应用

更改系统国家 打开windows自带的搜索&#xff0c;找到更改国家或地区。把地区改成美国。 开启电脑VT 不同电脑开启方式不一样&#xff0c;请搜索&#xff1a;xxx进入BIOS和xxx开启VT打开你电脑的VT。 安装子系统 电脑打开Microsoft Store直接搜是搜不到的&#xff0c; 点…

C/C++的内存管理

C/C的内存管理 1.C/C的内存分布2.C语言的动态内存管理方式&#xff1a;malloc/calloc/realloc/free3. C内存管理方式3.1. new/delete操作内置类型3.2.new和delete操作自定义类型 4.operator new与operator delete函数4.1 operator new与operator delete函数 5.new和delete的实现…

一次查找分子级Bug的经历,过程太酸爽了

“Debugging is like trying to find a needle in a haystack, except the needle is also made of hay.” Debug调试就像是在大片的干草堆中找针一样&#xff0c;只不过针也是由干草制成的。 在软件开发的世界里&#xff0c;偶尔会出现一些非常隐蔽的 Bug&#xff0c;这时候工…