当前位置: 首页 > news >正文

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

文章目录

  • 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_pathprofile_pathstartup_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 helpadf                            show upf adf commandsapplication                    show upf application <name>applications                   show upf applications [verbose]association                    show upf associationbihash                         show upf bihash <v4-tunnel-by-key | v6-tunnel-by-key | qer-by-id | peer-index-by-ip> [detail|verbose]flows                          show upf flowsflow                           show upf flow commandsgtpu                           show upf gtpu commandsnode-id                        show upf node-idnwi                            show upf nwipfcp                           show upf pfcp commandspolicy                         show upf policyproxy                          show upf proxysession                        show upf sessionspecification                  show upf specification commandstdf                            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.202PFCP Association: 0TEID assignment per choose ID
PDR: 1 @ 0x7f6cef01cd00Precedence: 0PDI:Fields: 0000000dSource Interface: AccessNetwork Instance: access.oai.orgLocal F-TEID: 218138074 (0x0d0085da)IPv4: 192.168.72.202UE IP address (source):IPv4 address: 12.1.1.2SDF Filter [1]:permit out ip from any to assigned Outer Header Removal: GTP-U/UDP/IPv4FAR Id: 1URR Ids: [1] @ 0x7f6ceefde850QER Ids: [] @ 0x0
PDR: 2 @ 0x7f6cef01cd80Precedence: 0PDI:Fields: 0000000cSource Interface: CoreNetwork Instance: core.oai.orgUE IP address (destination):IPv4 address: 12.1.1.2SDF Filter [1]:permit out ip from any to assigned Outer Header Removal: noFAR Id: 2URR Ids: [1] @ 0x7f6ceefde8e0QER Ids: [] @ 0x0
FAR: 1Apply Action: 00000002 == [FORWARD]Forward:Network Instance: core.oai.orgDestination Interface: 1
FAR: 2Apply Action: 00000002 == [FORWARD]Forward:Network Instance: access.oai.orgDestination Interface: 0Outer Header Creation: [GTP-U/UDP/IPv4],TEID:9acb0442,IP:192.168.72.141
URR: 1Measurement Method: 0002 == [VOLUME]Reporting Triggers: 0001 == [PERIODIC REPORTING]Status: 0 == []Start Time: 2022/09/02 07:29:30:476vTime of First Usage:       0.0000 vTime of Last Usage:        0.0000 VolumeUp:    Measured:                    0, Theshold:                    0, Pkts:          0Consumed:                    0, Quota:                       0Down:  Measured:                    0, Theshold:                    0, Pkts:          0Consumed:                    0, Quota:                       0Total: Measured:                    0, Theshold:                    0, Pkts:          0Consumed:                    0, Quota:                       0Measurement 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.lryc.cn/news/67461.html

相关文章:

  • 【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器
  • Day3--C高级3
  • 第9章 CURD操作与MemoryCache缓存的强制清理的实现
  • TCP 协议特性详解
  • 电子招投标采购系统源码:采购过程更规范,更透明
  • 一篇了解智慧网关
  • 自学软件测试,从10K到40K的技术路线,也就是这些东西...
  • Qt libqrencode二维码——QtWidgets
  • KDZD绝缘子表面电导盐密度测试仪
  • 如何降低电动汽车软件的开发成本和风险?
  • 使用pytest和allure框架实现自动化测试报告优化
  • chatGPT免费站点分享
  • 【计算机网络】已知一个/27网络中有一个地址是 167.199.170.82,问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少?
  • Java8 - Stream
  • 什么样的冷链保温箱,既环保又实用?
  • Eclipse的介绍与安装
  • <IBM AIX> 《AIX中HA的网卡IP确认方法》
  • AMB300系列母线槽红外测温解决方案某锂电厂房项目案例分享
  • go语言学习——4
  • vulnhub-RAVEN:2(MYSQL-UDF提权,手工提权/工具自动提权)
  • 如何完整地掌握一个机器学习模型
  • Nevron Open Vision for .NET 2022.3 Crack
  • 【Linux】冯诺依曼体系结构以及操作系统的初步认知
  • 盖雅工场重磅发布「劳动力账户」,助力企业实现全面工时成本管理
  • 数据结构与算法基础(青岛大学-王卓)(2)
  • 水产亚硝酸盐偏高解决办法,饮用水亚硝酸盐超标
  • linux 设备树详解
  • STM32 学习笔记_7 定时器中断:输出比较
  • HTML购物车示例(勾选、删除、添加和结算功能)
  • MySQL原理(十):主从架构