OpenXG is a series of 5G/6G-oriented open source projects developed by Open Source Radio Access Network Community. Currently, the community has developed the project from five aspects, including:
```
* Core network projects, 3GPP R15/R16 specification compliant network functions have been developed, including AMF, SMF, NRF, UPF, AUSF, UDM, AUSF, NWDAF, etc. Message level stateless mechanism is introduced in to the core network to make it better adapted to the cloud environment.
* Open hardware reference design, the reference design of heterogeneous computing hardware, white-box radio frontend, and open source UE hardware are also opened to the community.
```
* Radio access network projects, currently CU, DU and UE protocol software are developed, which is mainly compliant with 3GPP R15/R16 specifications. The software is developed by a modular-design, and which is flexible to customize to different vertical scenarios.
* AI-enabled management projects, three kinds of projects are developed under this category, including the AIEngine, which is aimed to provide the core AI capability for the management, the network measurement, and computing network for cloud-edge-end collaborative.
## 编译安装UPF
* Uses cases and applications in verticals, some key use cases when applying OpenXG to vertical scenarios are also developed as a reference for the community.
The OpenXG series projects are distributed under OS-RAN license, which is derived from the Fair, Reasonable, and Non-Discriminatory principle. See [online version for details](http://www.openxg.org.cn/?falu_69.html).
使用root账户配置golang的环境变量
# 3. How to start
```
## Download source code from Gitlab
cd /root
mkdir workspace
```
vi ~/.bashrc
http://git.opensource5g.org/openxg/upf.git
将一下内容复制到 ~/.bashrc 文件中:
```
export GOROOT="/usr/local/go"
As master branch is usually the stable branch, so we would suggest you start from the master:
export GOBIN=$GOROOT/bin
```
export GOPATH="/root/workspace"
git checkout master
export PATH=:$PATH:$GOBIN
```
export GO111MODULE=on
## Compile and install the UPF
export GOPROXY=https://goproxy.cn
复制完成之后
### Configure golang
执行 source ~/.bashrc 命令
执行 go env 看一下 golang的环境是否正常
To configure the golang compilation environment, download the golang 1.15.7 installation package, decompress the package to /root, and copy the go folder to /usr/local.
```
Configure golang environment variables as user root
编译VPP
```
```
cd /root
cd witxg-upf/scripts
mkdir workspace
./build_upf.sh --pre_install
vi ~/.bashrc
./build_upf.sh --vpp
```
```
Copy the following to the ~/.bashrc file:
```
编译N4
export GOROOT="/usr/local/go"
export GOBIN=$GOROOT/bin
```
export GOPATH="/root/workspace"
cd witxg-upf/scripts
export PATH=:$PATH:$GOBIN
./build_upf.sh --n4
export GO111MODULE=on
```
export GOPROXY=https://goproxy.cn
```
修改配置文件
After the copy is complete, execute the `source ~/.bashrc` command
```
Run `go env` to see if the golang environment is normal.
vpp:
system:
### compile VPP
gtpu_entry_ip: UPF-N3 IP
gtpu_export_ip: UPF-N6 IP
```
ip_link:
cd upf/scripts
ueip: UE的IP地址池
./build_upf.sh --pre_install
ueIPPrefix: UP IP的子网掩码
./build_upf.sh --vpp
snatInter: 上网口网卡名
```
snatIP: 上网口IP
vppHost: vpphost网卡名
### compile N4
vppHostIP: vpphostIP
```
gtpu_entry: UPF-N3 网卡名
cd witxg-upf/scripts
gtpu_export: UPF-N6 网卡名
./build_upf.sh --n4
cpu: CPU掩码
```
n4:
### Modify the configuration file
smf: SMF-N4 网卡IP
```
upf: UPF-N4 网卡IP
vpp:
logSize: 100
system:
gtpu_entry_ip: UPF-N3 IP
```
gtpu_export_ip: UPF-N6 IP
ip_link:
运行UPF
ueip: UE IP address pool
ueIPPrefix: UP IP subnet mask
```
snatInter: interface name
cd witxg-upf/scripts
snatIP: interface IP
./run_upf.sh -o ../etc/upf.yaml
vppHost: vpphost interface name
```
vppHostIP: vpphost IP
gtpu_entry: UPF-N3 interface name
关闭UPF
gtpu_export: UPF-N6 interface name
cpu: CPUMASK
```
n4:
cd witxg-upf/scripts
smf: SMF-N4 IP
./run_upf.sh --close
upf: UPF-N4 IP
```
logSize: 100
```
## launch UPF
If the above steps have been completed, you can run UPF: