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.
* 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.
# 2. License
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).
# 3. How to start
## Download source code from Gitlab
```
http://git.opensource5g.org/openxg/upf.git
```
As master branch is usually the stable branch, so we would suggest you start from the master:
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.
使用root账户配置golang的环境变量
Configure golang environment variables as user root
```
```
cd /root
cd /root
mkdir workspace
mkdir workspace
vi ~/.bashrc
vi ~/.bashrc
将一下内容复制到 ~/.bashrc 文件中:
```
Copy the following to the ~/.bashrc file:
```
export GOROOT="/usr/local/go"
export GOROOT="/usr/local/go"
export GOBIN=$GOROOT/bin
export GOBIN=$GOROOT/bin
export GOPATH="/root/workspace"
export GOPATH="/root/workspace"
export PATH=:$PATH:$GOBIN
export PATH=:$PATH:$GOBIN
export GO111MODULE=on
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
export GOPROXY=https://goproxy.cn
复制完成之后
执行 source ~/.bashrc 命令
执行 go env 看一下 golang的环境是否正常
```
```
After the copy is complete, execute the `source ~/.bashrc` command
编译VPP
Run `go env` to see if the golang environment is normal.
### compile VPP
```
```
cd witxg-upf/scripts
cd upf/scripts
./build_upf.sh --pre_install
./build_upf.sh --pre_install
./build_upf.sh --vpp
./build_upf.sh --vpp
```
```
编译N4
### compile N4
```
```
cd witxg-upf/scripts
cd witxg-upf/scripts
./build_upf.sh --n4
./build_upf.sh --n4
```
```
### Modify the configuration file
修改配置文件
```
```
vpp:
vpp:
system:
system:
gtpu_entry_ip: UPF-N3 IP
gtpu_entry_ip: UPF-N3 IP
gtpu_export_ip: UPF-N6 IP
gtpu_export_ip: UPF-N6 IP
ip_link:
ip_link:
ueip: UE的IP地址池
ueip: UE IP address pool
ueIPPrefix: UP IP的子网掩码
ueIPPrefix: UP IP subnet mask
snatInter: 上网口网卡名
snatInter: interface name
snatIP: 上网口IP
snatIP: interface IP
vppHost: vpphost网卡名
vppHost: vpphost interface name
vppHostIP: vpphostIP
vppHostIP: vpphost IP
gtpu_entry: UPF-N3 网卡名
gtpu_entry: UPF-N3 interface name
gtpu_export: UPF-N6 网卡名
gtpu_export: UPF-N6 interface name
cpu: CPU掩码
cpu: CPUMASK
n4:
n4:
smf: SMF-N4 网卡IP
smf: SMF-N4 IP
upf: UPF-N4 网卡IP
upf: UPF-N4 IP
logSize: 100
logSize: 100
```
```
## launch UPF
运行UPF
If the above steps have been completed, you can run UPF: