owned this note
owned this note
Published
Linked with GitHub
@NTUST
# Install pppoe for tm500 traffic test guide
:::success
**🎯 Readme:**
1. Since the TM500 UE sim cannot generate traffic on its own, the traffic currently being tested is presumed to be only C-plane. Viavi suggested that we set up pppoe to facilitate traffic testing of TM500 UE
2. If you encounter an error you can refer to the [Troubleshooting note](##Troubleshooting-note).
3. The maximum number of connectable UEs is currently 32
:bookmark: **Reference:**
- [pppoe撥號.pdf](https://drive.google.com/file/d/1Mb4x9-9UAF_kVYSKT0X-IgyBV5IaPkG9/view?usp=drive_link)
- [TM500LTE_PPPoE_Multi-UE_Data_47090_113.pdf](https://drive.google.com/file/d/1j8GDFW_kR0IvswlFJziNGeC_qqhaYtoY/view?usp=drive_link)
- [pppoe Install guide](https://hackmd.io/@Johnson-72/SJhDdM7GJx)
:::
:::info
#### :memo: **Outline:**
[TOC]
:::
## Topology


## Environment
### gNB
**Hardware:**
| Item | Info |
|:------------:|:------------------------------------------------------------------ |
| CPU | Intel® Xeon® Gold 6226R CPU @ 2.90GHz (16 cores, disable HT) x 2 |
| Memory | 128GB (64GB x 2) |
| Disk | 600GB |
| NIC | Intel X710-DA2 (i40e,8.30 0x8000a4db) (Bus-Info: 3b:00.0, 3b:00.1) |
| Server Model | Dell PowerEdge R740 |
**Software:**
| **Item** | **Info** |
|:----------:|:------------------------------------------------ |
| OS | Red Hat Enterprise Linux release 9.2 (Plow) |
| Kernel | Linux R740 5.14.0-284.18.1.rt14.303.el9_2.x86_64 |
| DPDK | 20.11.8 |
| LinuxPTP | 3.1.1 |
| gNB Branch | develop |
## Configuration
> OSC DU High: l2/src/du_app/du_cfg.h
> OSC DU Low: /FlexRAN/l1/bin/nr5g/gnb/l1/xrancfg_sub6.xml
>
| Parameters | OSC DU LOW (to be confirmed by Ashwini and Madhav) | OSC DU HIGH (Ankit) | TM500 RU | OAI DU |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------- | ----------------- |
| CC config | 2x2<br>follow DU High | 2x2<br>`vendorMsg->config_req_vendor.nr_of_dl_ports`<br>`vendorMsg->config_req_vendor.nr_of_dl_ports` | 2x2 | 2x2 |
| DL Point A frequency(ARFCN) | | 3351.06 MHz (623404)<br>`NR_DL_ARFCN ` | 3401.58 MHz | 3401.58 MHz |
| DL center frequency(ARFCN) | | 3400.2 MHz (626680) [calculaion ](#DL-center-frequency-calculation) | 3450.72 MHz | 3450.72 MHz |
| SSB frequency(ARFCN) | | 3358.98 MHz(should be 3358.56 MHz)<br> [calculaion ](#OSC-DU-High-SSB-center-frequency-calculation) | 3450.72 MHz | 3450.72 MHz |
| System Bandwidth | | 100 MHz<br>`NR_BANDWIDTH BANDWIDTH_` | 100 MHz | 100 MHz |
| SCS | 30KHZ | 30KHZ<br>`NR_SCS SCS_` | 30KHZ | 30KHZ |
| PCI(Physical Cell ID) | 0 | 0<br>`NR_CELL_ID` | 0 | 0 |
| Duplex mode | TDD | TDD<br>`MODE=TDD` while compiling | TDD | TDD |
| vlan id | 5<br>in `/home/ubuntu/intel_sw/phy/cvl.sh` | N/A | 5 | 5 |
| pdsch/pusch eaxcid | 0,1 | N/A | 0,1 | 0,1 |
| prach eaxcid | 2,3 | N/A | 2,3 | 2,3 |
| dl/ul compression method | **9bitBFP Static**<br>`<xranCompMethod>`,`<xranCompHdrType>`,`<xraniqWidth>`,<br>`<xranPrachCompMethod>`.`<xranPrachiqWidth>`,`<oRu0PrbElemDl0>` | N/A | 9bitBFP Static | 9bitBFP Static |
| DU MAC address | 00:11:22:33:44:66 <br> in`/home/ubuntu/intel_sw/phy/setupenv.sh` | N/A | 00:11:22:33:44:66 | 00:11:22:33:44:66 |
| RU MAC address | <br>`<oRuRem0Mac0>` | N/A | 10:70:fd:14:1c:10 | 10:70:fd:14:1c:10 |
| MTU size | **1500** <br>`<MTU>` | N/A | 1500 | 1500 |
| T1a_min_cp_dl | 258 μs<br>`<T1a_min_cp_dl>` | N/A | 258 μs | 258 μs |
| T1a_max_cp_dl | 470 μs<br>`<T1a_max_cp_dl>` | N/A | 392 μs | 392 μs |
| T1a_min_cp_ul | 285 μs<br>`<T1a_min_cp_ul>` | N/A | 285 μs | 285 μs |
| T1a_max_cp_ul | 429 μs<br>`<T1a_max_cp_ul>` | N/A | 300 μs | 300 μs |
| T1a_min_up | 50 μs<br>`<T1a_min_up>` | N/A | 155 μs | 155 μs |
| T1a_max_up | 196 μs<br>`<T1a_max_up>` | N/A | 300 μs | 300 μs |
| Ta4_min | 0 μs<br>`<Ta4_min>` | N/A | 0 μs | 0 μs |
| Ta4_max | 75 μs<br>`<Ta4_max>` | N/A | 200 μs | 200 μs |
| Tadv_cp_dl | 25 μs<br>`<Tadv_cp_dl>` | N/A | 125 μs | 125 μs |
| T2a_min_cp_dl | 285 μs<br>`<T2a_min_cp_dl>` | N/A | 259 μs | 259 μs |
| T2a_max_cp_dl | 479 μs<br>`<T2a_max_cp_dl>` | N/A | 470 μs | 470 μs |
| T2a_min_cp_ul | 285 μs<br>`<T2a_min_cp_ul>` | N/A | 125 μs | 125 μs |
| T2a_max_cp_ul | 429 μs<br>`<T2a_max_cp_ul>` | N/A | 1200 μs | 1200 μs |
| T2a_min_up | 71 μs<br>`<T2a_min_up>` | N/A | 70 μs | 70 μs |
| T2a_max_up | 428 μs<br>`<T2a_max_up>` | N/A | 345 μs | 345 μs |
| Ta3_min | 20 μs<br>`<Ta3_min>` | N/A | 50 μs | 50 μs |
| Ta3_max | 32 μs<br>`<Ta3_max>` | N/A | 171 μs | 171 μs |
#### DL center frequency calculation
- SCS 30KHZ, Bandwidth 100 MHz can have 273 PRBs.

- DL center frequency is **DL Point A frequency + (273PRBs/2)**
- 1 PRB has 12 subcarrier, 1 subcarrier is 30 KHZ=0.03 MHz.
### OSC DU-High SSB center frequency calculation

## Current Status
> :heavy_check_mark: : Complete, :Hourglass: : On-going, :x: : Incomplete
- TM500 & OAI DU
| Item | Status |
| --------------------------------------------------------------------------- | ------------------ |
| [Bring up CN](#2-Core-Network) | :heavy_check_mark: |
| [PTP sync of gNB](#Step-33-gNB-PTP-synchronization) | :heavy_check_mark: |
| [Bring up gNB](#Step-34-Run-gNB) | :heavy_check_mark: |
| [NG Setup](#Step-35-Check-CN-connection-with-DU) | :heavy_check_mark: |
| [TM500 get on time packet from DU](#Step-41-Check-DU-connection-at-RU-side) | :heavy_check_mark: |
| [DU get FH packet from TM500](#Step-42-Check-RU-connection-at-DU-side) | :heavy_check_mark: |
| [TM500 get mib and sib1 for DL sync](#UE-get-mib-and-sib1-for-DL-syn) | :heavy_check_mark: |
| [TM500 send preamble](#UE-send-preamble) | :heavy_check_mark: |
| [DU get preamble](#DU-get-preamble) | :heavy_check_mark: |
| [DU send RACH response(msg2)](#DU-send-RACH-responsemsg2) | :heavy_check_mark: |
| [UE get RACH response(msg2)](#UE-get-RACH-responsemsg2) | :heavy_check_mark: |
| [UE send RRC setup request(msg3)](#UE-send-RRC-setup-requestmsg3) | :heavy_check_mark: |
| [DU get RRC setup request(msg3)](#DU-get-RRC-setup-requestmsg3) | :heavy_check_mark: |
| [DU send RRC Set up(msg4)](#DU-send-RRC-Set-upmsg4) | :heavy_check_mark: |
| [TM500 get RRC Set up(msg4)](#UE-get-RRC-Set-upmsg4) | :heavy_check_mark: |
| [RRC setup complete](#RRC-setup-complete) | :heavy_check_mark: |
| [NAS registration](#NAS-registration) | :heavy_check_mark: |
| [NAS identity request](#NAS-identity-request) | :heavy_check_mark: |
| [NAS identity response](#NAS-identity-response) | :heavy_check_mark: |
| [Authenication request](#Authenication-request) | :heavy_check_mark: |
| [Authenication response](#Authenication-response) | :heavy_check_mark: |
| [NAS Security mode command](#NAS-Security-mode-command) | :heavy_check_mark: |
| [NAS Security mode complete](#NAS-Security-mode-complete) | :heavy_check_mark: |
| [UECapabilityEnquiry](#UECapabilityEnquiry) | :heavy_check_mark: |
| [UECapabilityInformation](#UECapabilityInformation) | :heavy_check_mark: |
| [AS SecurityModeCommand](#AS-SecurityModeCommand) | :heavy_check_mark: |
| [AS SecurityModeComplete](#AS-SecurityModeComplete) | :heavy_check_mark: |
| [RRCReconfiguration](#RRCReconfiguration) | :heavy_check_mark: |
| [Registration accept](#Registration-accept) | :heavy_check_mark: |
| [RRCReconfigurationComplete](#RRCReconfigurationComplete) | :heavy_check_mark: |
| [Registration complete](#Registration-complete) | :heavy_check_mark: |
| [PDU session establish request](#PDU-session-establish-request) | :heavy_check_mark: |
| [PDU session establish accept](#PDU-session-establish-accept) | :heavy_check_mark: |

- PPPoe

- Control PC & TM500 UE PPPoE
| Item | Status |
|:---------------------------------------------- |:------------------ |
| Download the chosen Linux distribution ISO | :heavy_check_mark: |
| Configuring a Linux PC as the Data Test Device | :heavy_check_mark: |
| Create conf | :heavy_check_mark: |
| Create configuration file | :heavy_check_mark: |
| Test Connection | :heavy_check_mark: |
| Running Client Application | :heavy_check_mark: |
| Disconnect stopped | :heavy_check_mark: |
## Access Method
:::success
#### **TM500 Server (Supermicro) :**
- IP Address : 192.168.8.67
- Username : viavi
- Password : viavi
**TM500 Control PC :**
- IP Address : 192.168.8.71
- User Password : bmwee809
- Anydesk ID : 980393298
- Anydesk Password : bmwbmwbmwee809
**OAI gNB (Dell R750) :**
- IP Address : 192.168.8.43
- Username : oai72
- Password : bmwlab
- Root Password : bmwlab
<!-- - IDRAC IP : 192.168.10.124
- IDRAC user name : root
- IDRAC Password : calvin -->
:::
## Configuration
:::info
### TM500
Before using TM500 to connect your gNB (MTS mode), you should prepare the following documents in the specified path
PATH :
`\Desktop\viavi cloudue\NLA_7_4_0\TM500_NR_5G_EXT-MUE_Release_NLA_7_4_0_CloudUE\ppc_pq\public\ftp_root`
1. [o-ran.cfg](https://drive.google.com/file/d/11iyAWnskRLqBp0Qwsr3UEqtYoMP_D4Jx/view?usp=drive_link)
2. [oran_oai_tm500.csv](https://drive.google.com/file/d/1hckCWINHcz8vn7BlRtF1ZBhjrLbfPKHP/view?usp=drive_link)
### TMA script
1. [Johnson_TM500_OAI_ Max Traffic.txt](https://drive.google.com/file/d/19oOTdb0FHCyO4E-LiqkPbyj9m8m4Ys6E/view?usp=drive_link)
### gNB conf
#### split version
1. [OAI_CU_conf](https://drive.google.com/file/d/1uZcEDSFEvbAUPHmk4E4YPeMwC2Vg0aOB/view?usp=drive_link)
2. [OAI_DU_conf](https://drive.google.com/file/d/1K153GHiCObzNbpTBC4CeKzL8M4LOu38Q/view?usp=drive_link)
#### BBU version
1. [11_14_gnb.sa.band78.273prb.fhi72.2x2-TM500_johnson.conf](https://drive.google.com/file/d/1DYyo7z6O_r7uVcbEUGvJzsmCjW8JCF2E/view?usp=drive_link)
:::
## Run Application
## 1. Use TMA to control TM500
### Step1.1 Connect the TMA

### Step1.2 Check C/U plane packet on time
Use the following command to confirm the packet status of the C/U plane
```c=
FORW MTE GETRUSTATS
```

## 2. Bring up CN
```c=
cd ~/free5gc/
sudo ./run.sh //run 5gc
sudo ./force_kill.sh //stop 5gc
```
## 3. Bring up gNB
- Put command here
```c=
cd /home/oai72/FH_7.2_dev/openairinterface5g/cmake_targets/ran_build/build
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.2x2-TM500_johnson.conf --sa --reorder-thread-disable 1 --thread-pool 1,3,5,7,9,11,13,15 > /home/oai72/OAI_gNB_LOG/test_johnson.log 2>&1
```

## 4. Run TM500 script
### Protocol result

### Throughout result

### UE information
| Parameter | Value |
| -------------- |:--------- |
| UE Id | 0 |
| Pdu Session Id | 1 |
| IPv4 Address | 10.60.0.3 |
```c=
25/11/24 23:40:43:763 I: CMPI MTE 0 NAS ACTIVE RAT IND:UE Id:0
N1 MODE ACTIVE
25/11/24 23:40:43:764 I: CMPI RRC Cell Selection: UE Id: 0
Cell Info: Cell Id: 0 SSB Freq: 34507.20 Cell Type: Suitable
25/11/24 23:40:43:764 I: CMPI L2 Random Access Initiated :UE Id:0 (Connection Establish: Cell Id 0, Dl Freq 34507, SSB Id 0)
25/11/24 23:40:43:822 I: CMPI L2 Random Access Complete :UE Id:0 (TC-RNTI: 0xBF8F, TimingAdv: 0, PreambleTxCount: 2)
25/11/24 23:40:43:822 I: CMPI MTE 0 NR CONNECTION IND:UE Id:0
25/11/24 23:41:00:196 I: CMPI MTE 0 NR REGISTRATION IND:UE Id:0
Selected PLMN: 00101F
Registration Result: 3GPP Access Only
25/11/24 23:41:16:271 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND:UE Id:0
Pdu Session Id:1
Data Network Name: internet
IPv4 Address: 10.60.0.3
QosRuleId:1 QosFlowId:1 FilterId:1
QosFlowId:1 5QI:9
UE Initiated Procedure
25/11/24 23:41:24:928 I: TMAE 0x0 Information - Time Drift between TM500 clock & Network clock identified, Drift(ms): 11 total drift:11calcualted at time: 1732549284870
25/11/24 23:42:55:303 1
```
## 5. Run PPPoe through control pc vm
### 5.1 Install and Environment compilation
please check
- [Install Oracle VirtualBox.](https://hackmd.io/wJ910QIQRC6G36zjD5A5bg?view#Install-Oracle-VirtualBox)
- [Configuring a Linux PC as the Data Test Device](https://hackmd.io/wJ910QIQRC6G36zjD5A5bg?view#Install-Oracle-VirtualBox)
### Option(1)
### 5.2.1 Create configuration file
```c=
sudo cp /etc/ppp/pppoe.conf /etc/ppp/pppoe-ue0pdn0.conf
```
```c=
sudo gedit /etc/ppp/pppoe-ue0pdn0.conf
```
識別 `TM500 IP`、`UE ID` 和 `PDN ID`:
例如,如果您的 TM500 IP 是 ==192.168.10.67==,UE ID 是 ==0==,PDN ID 是 ==0==,則服務名稱為<br>tm500_lte_192.168.10.70_0_0
| 參數 | 數值 |
|:-------- |:------------ |
| TM500 IP | 192.168.8.67 |
| UE ID | 0 |
| PDN ID | 0 |
- 將 SERVICENAME 更改為您的連接 (SERVICENAME=`tm500_lte_192.168.8.67_0_0`)

- 設置 PIDFILE = `"/var/run/$CF_BASE-pppoe-ue0pdn0.pid"`

- 確保 LINUX_PLUGIN =`/etc/ppp/plugins/rp-pppoe.so`

- ==可選地==,調整 MTU 和 MRU 設置:
- PPPD_EXTRA="mtu 1452 mru 1452"
### 5.2.2 Start PPPoE connect:
```c=
cd /rp-pppoe-3.12/src
```
```c=
sudo pppoe-start /etc/ppp/pppoe-ue0pdn0.conf
```
### Option(2) ---- Recommend
### 5.3 Using manage_UEs.sh to establish pppoe connection (After PDU session accept)
```
sudo apt update
```
```
sudo apt install ppp pppoeconf
```
Create a .sh doc and using the code below, and adjust several specific parameters according to your machine, as shown in the table below
| Parameter | Value |
|:------------------------ |:---------------------- |
| pppoe_ethernet_interface | enp0s3 |
| rp_pppoe_service | tm500_lte_192.168.10.2 |
```c=
#!/bin/bash
pppoe_ethernet_interface="enp0s3"
test_route_targets=(
"10.16.1.222/32"
"10.16.1.223/32"
"10.16.1.224/32"
"10.16.1.225/32"
)
# Check our input arguments
if [ -z ${1} ]; then
echo "Usage ${0} [Number of UEs to start]";
exit 2;
fi
# Check our routing targets
if [ "${#test_route_targets[@]}" -lt "${1}" ]; then
echo "Too few test route targets to setup ${1} UEs!";
exit 2;
fi
first_ue=0;
last_ue=$((first_ue + ${1} - 1));
for ue_num in $(seq ${first_ue} ${last_ue});
do
# Create the config file for the UE
cat > "/etc/ppp/peers/tm500-ue${ue_num}" << __EOF
user tm500
#plugin rp-pppoe.so
plugin pppoe.so
${pppoe_ethernet_interface}
noipdefault
lcp-echo-interval 20
lcp-echo-failure 3
noauth
persist
maxfail 0
mtu 1500
mru 1500
noaccomp
default-asyncmap
linkname pppoe-ue${ue_num}
#rp_pppoe_service tm500_lte_192.168.10.2_0_${ue_num}
pppoe-service tm500_lte_192.168.10.2_0_${ue_num}
#rp_pppoe_ac "<server_name>"
__EOF
echo "Starting up UE${ue_num}...";
/usr/sbin/pppd call "tm500-ue${ue_num}";
sleep 5;
if ip link show dev ppp${ue_num} >/dev/null 2>&1; then
echo "Adding route for test target [${test_route_targets[$ue_num]}]...";
ip route add ${test_route_targets[$ue_num]} dev "ppp${ue_num}";
else
echo "PPPoE connection failed!";
echo "Bailing out!";
exit 1;
fi
done
```
- Start
```c=
sudo ./manage_UEs.sh 32
```
- Stop
```c=
sudo killall pppd
```
### 5.4 Multi-UE setting
**Before you start using Multiue, you need to confirm the total number of UEs before connecting**
- Connect configuration

- Script

- Scenario

### 5.5 PPPoE Result


### 5.5 Using Iperf3 to testing performance
#### Testing OAI BBU with TM500 (Single UE)
- CN terminal
free5gc@free5gc-virtual-machine:~$ iperf3 -s -p 8889
```c=
iperf3 -s -p 8889
```
- Control terminal
vboxuser@Ubunt:~$ iperf3 -u -c 192.168.8.21 -p 8889 -b 800M -t 30
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b <target> -t 30 -l 1300
```
- Test direction: Uplink (sent from ==client== to ==server==)
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b 100M -t 30 -l 1300
```
- Test direction: Downlink (sent from ==server== to ==client==)
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b 100M -t 30 -l 1300 -R
```
:::info
- u: Use UDP protocol for testing.
- c 192.168.8.21: specifies the IP address of the server (192.168.8.21).
- p 8889: Specifies the server port number as 8889.
- b 100M: Set the target rate to 100 Mbps.
- t 30: The test duration is 30 seconds.
- l 1300: Set the size of each UDP packet to 1300 bytes.
:::
## 6. Quick flow
### Connect TM500 and DU

### Bring up CN
- In Free5gc
```c=
cd ~/free5gc/
sudo ./run.sh
```
### Bring up DU
- In OAI
```c=
cd /home/oai72/FH_7.2_dev/openairinterface5g/cmake_targets/ran_build/build
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.2x2-TM500_johnson.conf --sa --reorder-thread-disable 1 --thread-pool 1,3,5,7,9,11,13,15 > /home/oai72/OAI_gNB_LOG/test_johnson.log 2>&1
```
### Run TM500 scrept (After C/U plane on time)
- In TMA

### Running PPPoe (After PDU Session accept)

- VM terminal
```c=
sudo ./manage_UEs.sh <ue-number>
```
```c=
sudo ./manage_UEs.sh 32
```
- Iperf testing
```c=
iperf3 -s -p 8889 #Master
```
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b <target> -t 30 -l 1300 #Client
````
## 7. Result
### The maximum number of connectable UEs is currently 32
If the number of connected UEs exceeds ==32==, it will cause ==licensed problems==.
```c=
17/12/24 01:57:29:671 forw mte MtsConfigUeGroup 0 0 1{0-31}
17/12/24 01:57:29:696 C: FORW 0x00 Ok MTE MTSCONFIGUEGROUP: RETURN CODE:0 SUCCEEDED
17/12/24 01:57:34:013 forw mte MtsConfigUeGroup 0 0 1{0-32}
17/12/24 01:57:34:027 C: FORW 0x04 Resource_Unavailable MTE MTSCONFIGUEGROUP RETURN CODE:4 FAILED - Not licensed for User Id in the group
17/12/24 01:57:37:056 forw mte MtsConfigUeGroup 0 0 1{0-64}
17/12/24 01:57:37:066 C: FORW 0x04 Resource_Unavailable MTE MTSCONFIGUEGROUP RETURN CODE:4 FAILED - Not licensed for User Id in the group
```
### Free5GC + BBU + TM500_RU + Cloud UE(Single)
- Uplink testing ==482== Mbits/sec
```c=
[ 5] 27.00-28.00 sec 59.1 MBytes 496 Mbits/sec 47686
[ 5] 28.00-29.00 sec 58.6 MBytes 491 Mbits/sec 47239
[ 5] 29.00-30.00 sec 58.9 MBytes 494 Mbits/sec 47520
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 1.69 GBytes 483 Mbits/sec 0.000 ms 0/1393733 (0%) sender
[ 5] 0.00-30.04 sec 1.69 GBytes 482 Mbits/sec 0.014 ms 1020/1393731 (0.073%) receiv
```
- Downlink testing ==738== Mbits/sec
```c=
[ 5] 26.00-27.00 sec 87.3 MBytes 732 Mbits/sec 0.016 ms 3615/74036 (4.9%)
[ 5] 27.00-28.00 sec 91.3 MBytes 766 Mbits/sec 0.028 ms 2368/76032 (3.1%)
[ 5] 28.00-29.00 sec 90.8 MBytes 762 Mbits/sec 0.019 ms 3650/76916 (4.7%)
[ 5] 29.00-30.00 sec 90.0 MBytes 755 Mbits/sec 0.016 ms 5664/78287 (7.2%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.06 sec 2.71 GBytes 775 Mbits/sec 0.000 ms 0/2240891 (0%) sender
[ 5] 0.00-30.00 sec 2.58 GBytes 738 Mbits/sec 0.016 ms 113111/2240835 (5%) receiver
```
### Free5GC + OAI_CU + OAI_DU + TM500_RU + Cloud UE(Single)
- Uplink testing ==473== Mbits/sec
```c=
[ 5] 27.00-28.00 sec 52.1 MBytes 437 Mbits/sec 41985
[ 5] 28.00-29.00 sec 53.7 MBytes 451 Mbits/sec 43353
[ 5] 29.00-30.00 sec 51.0 MBytes 428 Mbits/sec 41164
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 1.65 GBytes 474 Mbits/sec 0.000 ms 0/1366532 (0%) sender
[ 5] 0.00-30.04 sec 1.65 GBytes 473 Mbits/sec 0.021 ms 1007/1366532 (0.074%) receiver
```
- Downlink testing ==727== Mbits/sec
```c=
[ 5] 26.00-27.00 sec 83.9 MBytes 704 Mbits/sec 0.028 ms 2926/70602 (4.1%)
[ 5] 27.00-28.00 sec 91.8 MBytes 770 Mbits/sec 0.022 ms 1734/75787 (2.3%)
[ 5] 28.00-29.00 sec 90.3 MBytes 757 Mbits/sec 0.028 ms 3160/75957 (4.2%)
[ 5] 29.00-30.00 sec 95.6 MBytes 802 Mbits/sec 0.037 ms 2298/79380 (2.9%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.04 sec 2.64 GBytes 756 Mbits/sec 0.000 ms 0/2182584 (0%) sender
[ 5] 0.00-30.00 sec 2.54 GBytes 727 Mbits/sec 0.037 ms 85574/2182523 (3.9%) receive
```
## 8. Issue
### 1. Network is unreachable

- 如果 `DHCP` 服務未能自動分配 IP 地址,可以==手動請求 IP 地址==
```c=
sudo dhclient enp0s3
```

### 2. (Fix)One UE two PDU Session
:::danger
The expected result is ==multiple UE IDs==, but the actual result is ==single UE multiple PDU session==
:::
```bash=
31/12/24 01:55:56:327 I: CMPI MTE 0 NR CONNECTION IND:UE Id:0
31/12/24 01:55:56:767 I: CMPI MTE 0 NR REGISTRATION IND:UE Id:0 Selected PLMN: 00101F Pdu Session Id: 1 Data Network Name: internet IPv4 Address: 10.60.0.7 Registration Result: 3GPP Access Only
31/12/24 01:55:57:055 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND:UE Id:0 Pdu Session Id:2 Data Network Name: internet IPv4 Address: 10.60.0.8 QosRuleId:1 QosFlowId:1 FilterId:1 QosFlowId:1 5QI:9 UE Initiated Procedure
31/12/24 01:56:00:663 I: CMPI DTE PPPOE CONNECTION IND: UE Id: 0 De Id: 1 PDU Session Id: 1 Default DRB Id: 1 PDN IP Address String: 10.60.0.7
31/12/24 01:56:05:150 I: CMPI DTE PPPOE CONNECTION IND: UE Id: 0 De Id: 2 PDU Session Id: 2 Default DRB Id: 2 PDN IP Address String: 10.60.0.8
```


### 3. RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI)
- TMA
```bash=
01/06/24 23:41:16:271 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 0
Pdu Session Id: 1
Data Network Name: internet
IPv4 Address: 10.60.0.3
QosRuleId: 1 QosFlowId: 1 FilterId: 1
QosFlowId: 1 5QI: 9
UE Initiated Procedure
01/06/24 23:42:05:123 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 1
Pdu Session Id: 2
Data Network Name: internet
IPv4 Address: 10.60.0.4
QosRuleId: 2 QosFlowId: 2 FilterId: 2
QosFlowId: 2 5QI: 9
UE Initiated Procedure
01/06/24 23:43:10:456 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 2
Pdu Session Id: 3
Data Network Name: internet
IPv4 Address: 10.60.0.5
QosRuleId: 3 QosFlowId: 3 FilterId: 3
QosFlowId: 3 5QI: 9
UE Initiated Procedure
01/06/24 23:44:20:789 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 3
Pdu Session Id: 4
Data Network Name: internet
IPv4 Address: 10.60.0.6
QosRuleId: 4 QosFlowId: 4 FilterId: 4
QosFlowId: 4 5QI: 9
UE Initiated Procedure
01/06/24 23:45:15:234 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 4
Pdu Session Id: 5
Data Network Name: internet
IPv4 Address: 10.60.0.7
QosRuleId: 5 QosFlowId: 5 FilterId: 5
QosFlowId: 5 5QI: 9
UE Initiated Procedure
01/06/24 23:46:30:987 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 5
Pdu Session Id: 6
Data Network Name: internet
IPv4 Address: 10.60.0.8
QosRuleId: 6 QosFlowId: 6 FilterId: 6
QosFlowId: 6 5QI: 9
UE Initiated Procedure
01/06/24 23:47:45:654 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 6
Pdu Session Id: 7
Data Network Name: internet
IPv4 Address: 10.60.0.9
QosRuleId: 7 QosFlowId: 7 FilterId: 7
QosFlowId: 7 5QI: 9
UE Initiated Procedure
01/06/24 23:48:50:321 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 7
Pdu Session Id: 8
Data Network Name: internet
IPv4 Address: 10.60.0.10
QosRuleId: 8 QosFlowId: 8 FilterId: 8
QosFlowId: 8 5QI: 9
UE Initiated Procedure
01/06/24 23:49:55:876 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND: UE Id: 8
Pdu Session Id: 9
Data Network Name: internet
IPv4 Address: 10.60.0.11
QosRuleId: 9 QosFlowId: 9 FilterId: 9
QosFlowId: 9 5QI: 9
UE Initiated Procedure
01/06/24 23:50:10:500 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 1
Disconnecting UE Id: 1
01/06/24 23:50:20:600 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 2
Disconnecting UE Id: 2
01/06/24 23:50:30:700 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 3
Disconnecting UE Id: 3
01/06/24 23:50:40:800 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 4
Disconnecting UE Id: 4
01/06/24 23:50:50:900 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 5
Disconnecting UE Id: 5
01/06/24 23:51:01:000 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 6
Disconnecting UE Id: 6
01/06/24 23:51:11:100 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 7
Disconnecting UE Id: 7
01/06/24 23:51:21:200 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 8
Disconnecting UE Id: 8
01/06/24 23:51:31:300 I: CMPI MTE 0 NR RRC UE Duplicate PagingUeId (S-TMSI) or (IRNTI) for UE Id: 9
Disconnecting UE Id: 9
```
- CN
```bash=
2024-1-6T13:17:37.401128177+08:00 [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:12(3GPP)][ran_addr:192.168.8.43:53807] New RanUe [RanUeNgapID:1][AmfUeNgapID:12]
2024-1-6T13:17:37.401189864+08:00 [WARN][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:12(3GPP)][ran_addr:192.168.8.43:53807] Missing 5G-S-TMSI IE in InitialUEMessage; send ErrorIndication
2024-1-6T13:17:37.401229050+08:00 [INFO][AMF][Ngap][ran_addr:192.168.8.43:53807] Send Error Indication
2024-1-6T13:17:37.401755102+08:00 [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:12(3GPP)][ran_addr:192.168.8.43:53807] Send UE Context Release Command
2024-1-6T13:17:37.402116069+08:00 [WARN][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:12(3GPP)][ran_addr:192.168.8.43:53807] AmfUe is nil
2024-1-6T13:17:37.603334470+08:00 [INFO][AMF][Ngap][ran_addr:192.168.8.43:53807] Handle UEContextReleaseComplete
2024-1-6T13:17:37.603478475+08:00 [INFO][AMF][Ngap][amf_ue_ngap_id:RU:1,AU:12(3GPP)][ran_addr:192.168.8.43:53807] Handle UEContextReleaseComplete (RAN UE NGAP ID: 1)
2024-1-6T13:17:37.603560633+08:00 [INFO][AMF][Ngap][ran_addr:192.168.8.43:53807] Release UE Context : RanUe[AmfUeNgapId: 12]
```
:::info
- A new RanUe (Radio Access Network User Equipment) is created and assigned a corresponding ID.
- When processing the Initial UE message, the 5G-S-TMSI information element is missing and the AMF shall send an error indication.
- The AMF has sent an error indication in response to a missing 5G-S-TMSI.
- The AMF sends a context release command to the UE, indicating that the UE context will be released.
- AMF issues a warning that AmfUe is nil, which may indicate that something went wrong during processing.
:::
During the UE access process, the AMF may not correctly allocate a unique S-TMSI or IRNTI to each UE. To avoid duplicate Paging UE IDs (such as S-TMSI) in the 5G core network, may need to ensure that each UE is assigned a unique S-TMSI in the core network (CN).@NTUST
# Install pppoe for tm500 traffic test guide
:::success
**🎯 Readme:**
1. Since the TM500 UE sim cannot generate traffic on its own, the traffic currently being tested is presumed to be only C-plane. Viavi suggested that we set up pppoe to facilitate traffic testing of TM500 UE
2. If you encounter an error you can refer to the [Troubleshooting note](##Troubleshooting-note).
3. The maximum number of connectable UEs is currently 32
:bookmark: **Reference:**
- [pppoe撥號.pdf](https://drive.google.com/file/d/1Mb4x9-9UAF_kVYSKT0X-IgyBV5IaPkG9/view?usp=drive_link)
- [TM500LTE_PPPoE_Multi-UE_Data_47090_113.pdf](https://drive.google.com/file/d/1j8GDFW_kR0IvswlFJziNGeC_qqhaYtoY/view?usp=drive_link)
- [pppoe Install guide](https://hackmd.io/@Johnson-72/SJhDdM7GJx)
:::
:::info
#### :memo: **Outline:**
[TOC]
:::
## Topology


## Environment
### gNB
**Hardware:**
| Item | Info |
|:------------:|:------------------------------------------------------------------ |
| CPU | Intel® Xeon® Gold 6226R CPU @ 2.90GHz (16 cores, disable HT) x 2 |
| Memory | 128GB (64GB x 2) |
| Disk | 600GB |
| NIC | Intel X710-DA2 (i40e,8.30 0x8000a4db) (Bus-Info: 3b:00.0, 3b:00.1) |
| Server Model | Dell PowerEdge R740 |
**Software:**
| **Item** | **Info** |
|:----------:|:------------------------------------------------ |
| OS | Red Hat Enterprise Linux release 9.2 (Plow) |
| Kernel | Linux R740 5.14.0-284.18.1.rt14.303.el9_2.x86_64 |
| DPDK | 20.11.8 |
| LinuxPTP | 3.1.1 |
| gNB Branch | develop |
## Configuration
| Parameters | TM500 RU | OAI DU | OSC DU HIGH (previous testing) | OSC DU LOW (previous testing) | OSC DU HIGH (Ankit) | OSC DU LOW (Ashwini) |
| --------------------------- | ----------------- | ----------------- | ---------------------------------- | ----------------------------- | ------------------- | -------------------- |
| CC config | 2x2 | 2x2 | 2x2 | N/A | < Please fill > | 2x2 |
| DL Point A frequency(ARFCN) | 3401.58 MHz | 3401.58 MHz | 3351.06 MHz (623404) | N/A | < Please fill > | |
| DL center frequency(ARFCN) | 3450.72 MHz | 3450.72 MHz | 3400.2 MHz (626680) | N/A | < Please fill > | |
| SSB frequency(ARFCN) | 3450.72 MHz | 3450.72 MHz | 3358.98 MHz(should be 3358.56 MHz) | N/A | < Please fill > | |
| System Bandwidth | 100 MHz | 100 MHz | 100 MHz | N/A | < Please fill > | |
| SCS | 30KHZ | 30KHZ | 30KHZ | N/A | < Please fill > | 30KHZ |
| PCI(Physical Cell ID) | 0 | 0 | 1 | N/A | < Please fill > | 0 |
| Duplex mode | TDD | TDD | TDD | N/A | < Please fill > | TDD |
| vlan id | 5 | 5 | N/A | 5 | < Please fill > | |
| pdsch/pusch eaxcid | 0,1 | 0,1 | N/A | 0, 1 | < Please fill > | |
| prach eaxcid | 2,3 | 2,3 | N/A | 2, 3 | < Please fill > | |
| dl/ul compression method | 9bitBFP Static | 9bitBFP Static | N/A | 16bitUncompressed static | < Please fill > | |
| DU MAC address | 00:11:22:33:44:66 | 00:11:22:33:44:66 | N/A | 00:11:22:33:44:66 | < Please fill > | |
| RU MAC address | 10:70:fd:14:1c:10 | 10:70:fd:14:1c:10 | N/A | 10:70:fd:14:1c:10 | < Please fill > | |
| MTU size | 1500 | 1500 | N/A | 9000 | < Please fill > | |
| T1a_min_cp_dl | 258 μs | 258 μs | N/A | 258 μs | < Please fill > | |
| T1a_max_cp_dl | 392 μs | 392 μs | N/A | 470 μs | < Please fill > | |
| T1a_min_cp_ul | 285 μs | 285 μs | N/A | 285 μs | < Please fill > | |
| T1a_max_cp_ul | 300 μs | 300 μs | N/A | 429 μs | < Please fill > | |
| T1a_min_up | 155 μs | 155 μs | N/A | 50 μs | < Please fill > | |
| T1a_max_up | 300 μs | 300 μs | N/A | 196 μs | < Please fill > | |
| Ta4_min | 0 μs | 0 μs | N/A | 0 μs | < Please fill > | |
| Ta4_max | 200 μs | 200 μs | N/A | 75 μs | < Please fill > | |
| Tadv_cp_dl | 125 μs | 125 μs | N/A | 25 μs | < Please fill > | |
| T2a_min_cp_dl | 259 μs | 259 μs | N/A | 285 μs | < Please fill > | |
| T2a_max_cp_dl | 470 μs | 470 μs | N/A | 479 μs | < Please fill > | |
| T2a_min_cp_ul | 125 μs | 125 μs | N/A | 285 μs | < Please fill > | |
| T2a_max_cp_ul | 1200 μs | 1200 μs | N/A | 429 μs | < Please fill > | |
| T2a_min_up | 70 μs | 70 μs | N/A | 71 μs | < Please fill > | |
| T2a_max_up | 345 μs | 345 μs | N/A | 428 μs | < Please fill > | |
| Ta3_min | 50 μs | 50 μs | N/A | 20 μs | < Please fill > | |
| Ta3_max | 171 μs | 171 μs | N/A | 32 μs | < Please fill > | |
### Table for OAI successful integration with RUs.
| Parameters | OAI + JURA plugfest | OAI + JURA BMW | OAI + TM500 RUSIM + UESIM | OAI + New LiteOn | OAI + Old LiteOn |
| ------------------------------- | --------------------------- | -------------------------------------------- | ---------------------------- | -------------------------------------------- | -------------------------------------------- |
| ==CC config== | ==4x4== | ==4x4== | ==2x2== | ==4x4== | ==4x4== |
| ==DL Point A frequency(ARFCN)== | ==3700.86 MHz(646724)== | ==3570.06 MHz(638004), 3401.58 MHz(626772)== | ==3401.58 MHz(626772)== | ==3570.06 MHz(638004), 3401.58 MHz(626772)== | ==3570.06 MHz(638004), 3401.58 MHz(626772)== |
| ==DL center frequency(ARFCN)== | ==3750 MHz(650000)== | ==3619.2 MHz(641280), 3450.72 MHz(630048)== | ==3450.72 MHz(630048)== | ==3619.2 MHz(641280), 3450.72 MHz(630048)== | ==3619.2 MHz(641280), 3450.72 MHz(630048)== |
| ==SSB frequency(ARFCN)== | ==3748.8 MHz(649920)== | ==3619.2 MHz(641280), 3450.72 MHz(630048)== | ==3450.72 MHz(630048)== | ==3619.2 MHz(641280), 3450.72 MHz(630048)== | ==3619.2 MHz(641280), 3450.72 MHz(630048)== |
| System Bandwidth | 100 MHz | 100 MHz | 100 MHz | 100 MHz | 100 MHz |
| SCS | 30KHZ | 30KHZ | 30KHZ | 30KHZ | 30KHZ |
| PCI(Physical Cell ID) | 0 | 0 | 0 | 0 | 0 |
| Duplex mode | TDD | TDD | TDD | TDD | TDD |
| ==vlan id== | ==3== | ==3== | ==5== | ==6== | ==4== |
| ==pdsch/pusch eaxcid== | ==0,1,2,3== | ==0,1,2,3== | ==0,1== | ==0,1,2,3== | ==0,1,2,3== |
| ==prach eaxcid== | ==4,5,6,7== | ==4,5,6,7== | ==2,3== | ==4,5,6,7== | ==4,5,6,7== |
| dl/ul compression method | 9bitBFP Static | 9bitBFP Static | 9bitBFP Static | 9bitBFP Static | 9bitBFP Static |
| phase_compensation | OAI : 0(false), JURA : true | OAI : 0(false), JURA : true | OAI : 0(false), TM500 : true | OAI : 0(false), LiteOn : true | OAI : 0(false), LiteOn : true |
| DU MAC address | 00:11:22:33:44:66 | 00:11:22:33:44:66 | 00:11:22:33:44:66 | 00:11:22:33:44:66 | 00:11:22:33:44:66 |
| ==RU MAC address== | ==00:E0:0C:00:AE:06== | ==00:E0:0C:00:AE:06== | ==10:70:fd:14:1c:10== | ==00:aa:ff:bb:ff:cc== | ==e8:c7:4f:25:80:ed== |
| ==MTU size== | ==9000== | ==8000== | ==1500== | ==8000== | ==8000== |
### **OAI parameters** need to fill in in integrate with different RU
| OAI config Parameters | JURA plugfest | JURA BMW | TM500 RUSIM + UESIM | New LiteOn | Old LiteOn |
| ------------------------------------------------- | --------------------- | --------------------- | --------------------- | --------------------- | --------------------- |
| ==dl_absoluteFrequencyPointA== | ==646724== | ==638004, 626772== | ==626772== | ==638004, 626772== | ==638004, 626772== |
| ==absoluteFrequencySSB== | ==649920== | ==641280, 630048== | ==630048== | ==641280, 630048== | ==641280, 630048== |
| dl_carrierBandwidth, ul_carrierBandwidth | 273 PRBs | 273 PRBs | 273 PRBs | 273 PRBs | 273 PRBs |
| dl_subcarrierSpacing, ul_subcarrierSpacing | 1(30kHz) | 1(30kHz) | 1(30kHz) | 1(30kHz) | 1(30kHz) |
| physCellId | 0 | 0 | 0 | 0 | 0 |
| ==nb_tx== | ==4== | ==4== | ==2== | ==4== | ==4== |
| ==nb_rx== | ==4== | ==4== | ==2== | ==4== | ==4== |
| ==eAxC_offset== | ==4== | ==4== | ==2== | ==4== | ==4== |
| iq_width, iq_width_prach(only support static BFP) | 9 | 9 | 9 | 9 | 9 |
| phase_compensation | 0(false) | 0(false) | 0(false) | 0(false) | 0(false) |
| du_addr | 00:11:22:33:44:66 | 00:11:22:33:44:66 | 00:11:22:33:44:66 | 00:11:22:33:44:66 | 00:11:22:33:44:66 |
| ==ru_addr== | ==00:E0:0C:00:AE:06== | ==00:E0:0C:00:AE:06== | ==10:70:fd:14:1c:10== | ==00:aa:ff:bb:ff:cc== | ==e8:c7:4f:25:80:ed== |
| ==mtu== | ==9000== | ==8000== | ==1500== | ==8000== | ==8000== |
### **RU parameters** need to fill in to integrate with OAI
| Parameters | JURA plugfest | JURA BMW | TM500 RUSIM + UESIM | New LiteOn | OAI + Old LiteOn |
| ------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------ |
| ==CC config== | ==N/A== | ==N/A== | ==CC configuration: 2x2(Set in yaml)(Set in TMA radio card)== | ==N/A== | ==N/A== |
| ==DL Point A frequency== | ==N/A== | ==N/A== | ==AbsoluteFrequencyPointA : 34015.8 (x100kHz)(Set in TMA script)== | ==N/A== | ==N/A== |
| ==DL center frequency(ARFCN)== | ==center-of-channel-bandwidth:3450720000== | ==center-of-channel-bandwidth:3450720000== | ==Downlink carrier frequency : 34507.2 (x100kHz)(Set in TMA script)== | ==center-frequenc 3619200000, 3450720000== | ==center-frequenc 3619200000, 3450720000== |
| ==SSB frequency(ARFCN)== | ==N/A== | ==N/A== | ==AbsoluteFrequencySSB : 34507.2 (x100kHz)(Set in TMA script)== | ==N/A== | ==N/A== |
| System Bandwidth | num_prb_per_scs_30khz : 273 | num_prb_per_scs_30khz : 273 | Bandwidth: 100(Set in yaml), System bandwidth : 100(Set in TMA script) | bandwidth 100000000 | bandwidth 100000000 |
| SCS | Only support 30kHz | Only support 30kHz | Numerology: 1(Set in yaml), SSB Subcarrier Spacing : 1(Set in TMA script) | subcarrier-spacing 1, slot-id 1 | subcarrier-spacing 1, slot-id 1 |
| ==physCellId== | ==N/A== | ==N/A== | ==Cell Id : 0== | ==N/A== | ==N/A== |
| ==vlan id== | ==vlan_id : 3== | ==vlan_id : 3== | ==VLAN ID: 5(Set in yaml)== | ==c/u-plane-vlan 6== | ==c/u-plane-vlan 4== |
| ==pdsch/pusch eaxcid== | ==np_ecpri_forwarding : 0,1,2,3== | ==np_ecpri_forwarding : 0,1,2,3== | ==DL (PDSCH) eaxcid list: 0,1 UL (PUSCH) eaxcid list: 0,1(Set in yaml)== | ==N/A(Auto set with PRACH eAXC_id)== | ==N/A(Auto set with PRACH eAXC_id)== |
| ==prach eaxcid== | ==np_ecpri_forwarding : 4,5,6,7== | ==np_ecpri_forwarding : 4,5,6,7== | ==Additional RACH eaxcid list: 2,3(Set in yaml)== | ==eAXC_id 4,5,6,7== | ==eAXC_id 4,5,6,7== |
| ==Antenna number== | ==N/A(Will set by eaxcid)== | ==N/A(Will set by eaxcid)== | ==Number of recieve antennas : 2(Set in TMA script)== | ==N/A(Will set by eaxcid)== | ==N/A(Will set by eaxcid)== |
| dl/ul compression method | compression_type : STATIC, compression_iq_bitwidth : 0 | compression_type : STATIC, compression_iq_bitwidth : 0 | DL compression: 9bitBFP, UL compression: 9bitBFP(Set in yaml) | compression-bit 9 | compression-bit 9 |
| phase_compensation | rf_rx_loss_compensation :true | rf_rx_loss_compensation :true | Default is true(Don't know how to adjust) | phasecomp-mode true | phasecomp-mode true |
| DU MAC address | du_mac_address : 00:11:22:33:44:66 | du_mac_address : 00:11:22:33:44:66 | O-DU MAC address: 00:11:22:33:44:66(Set in yaml) | du-mac-address 001122334466 | du-mac-address 001122334466 |
| ==MTU size== | ==l2_mtu : 9000== | ==l2_mtu : 8000== | ==MTU size: 1500(Set in yaml)== | ==jumboframe 1== | ==jumboframe 1== |
## Current Status
> :heavy_check_mark: : Complete, :Hourglass: : On-going, :x: : Incomplete
- TM500 & OAI DU
| Item | Status |
| --------------------------------------------------------------------------- | ------------------ |
| [Bring up CN](#2-Core-Network) | :heavy_check_mark: |
| [PTP sync of gNB](#Step-33-gNB-PTP-synchronization) | :heavy_check_mark: |
| [Bring up gNB](#Step-34-Run-gNB) | :heavy_check_mark: |
| [NG Setup](#Step-35-Check-CN-connection-with-DU) | :heavy_check_mark: |
| [TM500 get on time packet from DU](#Step-41-Check-DU-connection-at-RU-side) | :heavy_check_mark: |
| [DU get FH packet from TM500](#Step-42-Check-RU-connection-at-DU-side) | :heavy_check_mark: |
| [TM500 get mib and sib1 for DL sync](#UE-get-mib-and-sib1-for-DL-syn) | :heavy_check_mark: |
| [TM500 send preamble](#UE-send-preamble) | :heavy_check_mark: |
| [DU get preamble](#DU-get-preamble) | :heavy_check_mark: |
| [DU send RACH response(msg2)](#DU-send-RACH-responsemsg2) | :heavy_check_mark: |
| [UE get RACH response(msg2)](#UE-get-RACH-responsemsg2) | :heavy_check_mark: |
| [UE send RRC setup request(msg3)](#UE-send-RRC-setup-requestmsg3) | :heavy_check_mark: |
| [DU get RRC setup request(msg3)](#DU-get-RRC-setup-requestmsg3) | :heavy_check_mark: |
| [DU send RRC Set up(msg4)](#DU-send-RRC-Set-upmsg4) | :heavy_check_mark: |
| [TM500 get RRC Set up(msg4)](#UE-get-RRC-Set-upmsg4) | :heavy_check_mark: |
| [RRC setup complete](#RRC-setup-complete) | :heavy_check_mark: |
| [NAS registration](#NAS-registration) | :heavy_check_mark: |
| [NAS identity request](#NAS-identity-request) | :heavy_check_mark: |
| [NAS identity response](#NAS-identity-response) | :heavy_check_mark: |
| [Authenication request](#Authenication-request) | :heavy_check_mark: |
| [Authenication response](#Authenication-response) | :heavy_check_mark: |
| [NAS Security mode command](#NAS-Security-mode-command) | :heavy_check_mark: |
| [NAS Security mode complete](#NAS-Security-mode-complete) | :heavy_check_mark: |
| [UECapabilityEnquiry](#UECapabilityEnquiry) | :heavy_check_mark: |
| [UECapabilityInformation](#UECapabilityInformation) | :heavy_check_mark: |
| [AS SecurityModeCommand](#AS-SecurityModeCommand) | :heavy_check_mark: |
| [AS SecurityModeComplete](#AS-SecurityModeComplete) | :heavy_check_mark: |
| [RRCReconfiguration](#RRCReconfiguration) | :heavy_check_mark: |
| [Registration accept](#Registration-accept) | :heavy_check_mark: |
| [RRCReconfigurationComplete](#RRCReconfigurationComplete) | :heavy_check_mark: |
| [Registration complete](#Registration-complete) | :heavy_check_mark: |
| [PDU session establish request](#PDU-session-establish-request) | :heavy_check_mark: |
| [PDU session establish accept](#PDU-session-establish-accept) | :heavy_check_mark: |

- PPPoe

- Control PC & TM500 UE PPPoE
| Item | Status |
|:---------------------------------------------- |:------------------ |
| Download the chosen Linux distribution ISO | :heavy_check_mark: |
| Configuring a Linux PC as the Data Test Device | :heavy_check_mark: |
| Create conf | :heavy_check_mark: |
| Create configuration file | :heavy_check_mark: |
| Test Connection | :heavy_check_mark: |
| Running Client Application | :heavy_check_mark: |
| Disconnect stopped | :heavy_check_mark: |
## Access Method
:::success
#### **TM500 Server (Supermicro) :**
- IP Address : 192.168.8.67
- Username : viavi
- Password : viavi
**TM500 Control PC :**
- IP Address : 192.168.8.71
- User Password : bmwee809
- Anydesk ID : 980393298
- Anydesk Password : bmwbmwbmwee809
**OAI gNB (Dell R750) :**
- IP Address : 192.168.8.43
- Username : oai72
- Password : bmwlab
- Root Password : bmwlab
<!-- - IDRAC IP : 192.168.10.124
- IDRAC user name : root
- IDRAC Password : calvin -->
:::
## Configuration
:::info
### TM500
Before using TM500 to connect your gNB (MTS mode), you should prepare the following documents in the specified path
PATH :
`\Desktop\viavi cloudue\NLA_7_4_0\TM500_NR_5G_EXT-MUE_Release_NLA_7_4_0_CloudUE\ppc_pq\public\ftp_root`
1. [o-ran.cfg](https://drive.google.com/file/d/11iyAWnskRLqBp0Qwsr3UEqtYoMP_D4Jx/view?usp=drive_link)
2. [oran_oai_tm500.csv](https://drive.google.com/file/d/1hckCWINHcz8vn7BlRtF1ZBhjrLbfPKHP/view?usp=drive_link)
### TMA script
1. [Johnson_TM500_OAI_ Max Traffic.txt](https://drive.google.com/file/d/19oOTdb0FHCyO4E-LiqkPbyj9m8m4Ys6E/view?usp=drive_link)
### gNB conf
#### split version
1. [OAI_CU_conf](https://drive.google.com/file/d/1uZcEDSFEvbAUPHmk4E4YPeMwC2Vg0aOB/view?usp=drive_link)
2. [OAI_DU_conf](https://drive.google.com/file/d/1K153GHiCObzNbpTBC4CeKzL8M4LOu38Q/view?usp=drive_link)
#### BBU version
1. [11_14_gnb.sa.band78.273prb.fhi72.2x2-TM500_johnson.conf](https://drive.google.com/file/d/1DYyo7z6O_r7uVcbEUGvJzsmCjW8JCF2E/view?usp=drive_link)
:::
## Run Application
## 1. Use TMA to control TM500
### Step1.1 Connect the TMA

### Step1.2 Check C/U plane packet on time
Use the following command to confirm the packet status of the C/U plane
```c=
FORW MTE GETRUSTATS
```

## 2. Bring up CN
```c=
cd ~/free5gc/
sudo ./run.sh //run 5gc
sudo ./force_kill.sh //stop 5gc
```
## 3. Bring up gNB
- Put command here
```c=
cd /home/oai72/FH_7.2_dev/openairinterface5g/cmake_targets/ran_build/build
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.2x2-TM500_johnson.conf --sa --reorder-thread-disable 1 --thread-pool 1,3,5,7,9,11,13,15 > /home/oai72/OAI_gNB_LOG/test_johnson.log 2>&1
```

## 4. Run TM500 script
### Protocol result

### Throughout result

### UE information
| Parameter | Value |
| -------------- |:--------- |
| UE Id | 0 |
| Pdu Session Id | 1 |
| IPv4 Address | 10.60.0.3 |
```c=
25/11/24 23:40:43:763 I: CMPI MTE 0 NAS ACTIVE RAT IND:UE Id:0
N1 MODE ACTIVE
25/11/24 23:40:43:764 I: CMPI RRC Cell Selection: UE Id: 0
Cell Info: Cell Id: 0 SSB Freq: 34507.20 Cell Type: Suitable
25/11/24 23:40:43:764 I: CMPI L2 Random Access Initiated :UE Id:0 (Connection Establish: Cell Id 0, Dl Freq 34507, SSB Id 0)
25/11/24 23:40:43:822 I: CMPI L2 Random Access Complete :UE Id:0 (TC-RNTI: 0xBF8F, TimingAdv: 0, PreambleTxCount: 2)
25/11/24 23:40:43:822 I: CMPI MTE 0 NR CONNECTION IND:UE Id:0
25/11/24 23:41:00:196 I: CMPI MTE 0 NR REGISTRATION IND:UE Id:0
Selected PLMN: 00101F
Registration Result: 3GPP Access Only
25/11/24 23:41:16:271 I: CMPI MTE 0 NR PDU SESSION ESTABLISHMENT IND:UE Id:0
Pdu Session Id:1
Data Network Name: internet
IPv4 Address: 10.60.0.3
QosRuleId:1 QosFlowId:1 FilterId:1
QosFlowId:1 5QI:9
UE Initiated Procedure
25/11/24 23:41:24:928 I: TMAE 0x0 Information - Time Drift between TM500 clock & Network clock identified, Drift(ms): 11 total drift:11calcualted at time: 1732549284870
25/11/24 23:42:55:303 1
```
## 5. Run PPPoe through control pc vm
### 5.1 Install and Environment compilation
please check
- [Install Oracle VirtualBox.](https://hackmd.io/wJ910QIQRC6G36zjD5A5bg?view#Install-Oracle-VirtualBox)
- [Configuring a Linux PC as the Data Test Device](https://hackmd.io/wJ910QIQRC6G36zjD5A5bg?view#Install-Oracle-VirtualBox)
### Option(1)
### 5.2.1 Create configuration file
```c=
sudo cp /etc/ppp/pppoe.conf /etc/ppp/pppoe-ue0pdn0.conf
```
```c=
sudo gedit /etc/ppp/pppoe-ue0pdn0.conf
```
識別 `TM500 IP`、`UE ID` 和 `PDN ID`:
例如,如果您的 TM500 IP 是 ==192.168.10.67==,UE ID 是 ==0==,PDN ID 是 ==0==,則服務名稱為<br>tm500_lte_192.168.10.70_0_0
| 參數 | 數值 |
|:-------- |:------------ |
| TM500 IP | 192.168.8.67 |
| UE ID | 0 |
| PDN ID | 0 |
- 將 SERVICENAME 更改為您的連接 (SERVICENAME=`tm500_lte_192.168.8.67_0_0`)

- 設置 PIDFILE = `"/var/run/$CF_BASE-pppoe-ue0pdn0.pid"`

- 確保 LINUX_PLUGIN =`/etc/ppp/plugins/rp-pppoe.so`

- ==可選地==,調整 MTU 和 MRU 設置:
- PPPD_EXTRA="mtu 1452 mru 1452"
### 5.2.2 Start PPPoE connect:
```c=
cd /rp-pppoe-3.12/src
```
```c=
sudo pppoe-start /etc/ppp/pppoe-ue0pdn0.conf
```
### Option(2) ---- Recommend
### 5.3 Using manage_UEs.sh to establish pppoe connection (After PDU session accept)
```
sudo apt update
```
```
sudo apt install ppp pppoeconf
```
Create a .sh doc and using the code below, and adjust several specific parameters according to your machine, as shown in the table below
| Parameter | Value |
|:------------------------ |:---------------------- |
| pppoe_ethernet_interface | enp0s3 |
| rp_pppoe_service | tm500_lte_192.168.10.2 |
```c=
#!/bin/bash
pppoe_ethernet_interface="enp0s3"
test_route_targets=(
"10.16.1.222/32"
"10.16.1.223/32"
"10.16.1.224/32"
"10.16.1.225/32"
)
# Check our input arguments
if [ -z ${1} ]; then
echo "Usage ${0} [Number of UEs to start]";
exit 2;
fi
# Check our routing targets
if [ "${#test_route_targets[@]}" -lt "${1}" ]; then
echo "Too few test route targets to setup ${1} UEs!";
exit 2;
fi
first_ue=0;
last_ue=$((first_ue + ${1} - 1));
for ue_num in $(seq ${first_ue} ${last_ue});
do
# Create the config file for the UE
cat > "/etc/ppp/peers/tm500-ue${ue_num}" << __EOF
user tm500
#plugin rp-pppoe.so
plugin pppoe.so
${pppoe_ethernet_interface}
noipdefault
lcp-echo-interval 20
lcp-echo-failure 3
noauth
persist
maxfail 0
mtu 1500
mru 1500
noaccomp
default-asyncmap
linkname pppoe-ue${ue_num}
#rp_pppoe_service tm500_lte_192.168.10.2_0_${ue_num}
pppoe-service tm500_lte_192.168.10.2_0_${ue_num}
#rp_pppoe_ac "<server_name>"
__EOF
echo "Starting up UE${ue_num}...";
/usr/sbin/pppd call "tm500-ue${ue_num}";
sleep 5;
if ip link show dev ppp${ue_num} >/dev/null 2>&1; then
echo "Adding route for test target [${test_route_targets[$ue_num]}]...";
ip route add ${test_route_targets[$ue_num]} dev "ppp${ue_num}";
else
echo "PPPoE connection failed!";
echo "Bailing out!";
exit 1;
fi
done
```
- Start
```c=
sudo ./manage_UEs.sh 32
```
- Stop
```c=
sudo killall pppd
```
### 5.4 Multi-UE setting
**Before you start using Multiue, you need to confirm the total number of UEs before connecting**
- Connect configuration

- Script

- Scenario

### 5.5 PPPoE Result


### 5.5 Using Iperf3 to testing performance
#### Testing OAI BBU with TM500 (Single UE)
- CN terminal
free5gc@free5gc-virtual-machine:~$ iperf3 -s -p 8889
```c=
iperf3 -s -p 8889
```
- Control terminal
vboxuser@Ubunt:~$ iperf3 -u -c 192.168.8.21 -p 8889 -b 800M -t 30
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b <target> -t 30 -l 1300
```
- Test direction: Uplink (sent from ==client== to ==server==)
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b 100M -t 30 -l 1300
```
- Test direction: Downlink (sent from ==server== to ==client==)
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b 100M -t 30 -l 1300 -R
```
:::info
- u: Use UDP protocol for testing.
- c 192.168.8.21: specifies the IP address of the server (192.168.8.21).
- p 8889: Specifies the server port number as 8889.
- b 100M: Set the target rate to 100 Mbps.
- t 30: The test duration is 30 seconds.
- l 1300: Set the size of each UDP packet to 1300 bytes.
:::
## 6. Catch UE log (option)
### TM500 UE log
:::spoiler

---

---

---

---

---

---

---

---

:::
## 7. Quick flow
### Connect TM500 and DU

### Bring up CN
- In Free5gc
```c=
cd ~/free5gc/
sudo ./run.sh
```
### Bring up DU
- In OAI
```c=
cd /home/oai72/FH_7.2_dev/openairinterface5g/cmake_targets/ran_build/build
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.2x2-TM500_johnson.conf --sa --reorder-thread-disable 1 --thread-pool 1,3,5,7,9,11,13,15 > /home/oai72/OAI_gNB_LOG/test_johnson.log 2>&1
```
### Run TM500 scrept (After C/U plane on time)
- In TMA

### Running PPPoe (After PDU Session accept)

- VM terminal
```c=
sudo ./manage_UEs.sh <ue-number>
```
```c=
sudo ./manage_UEs.sh 32
```
- Iperf testing
```c=
iperf3 -s -p 8889 #Master
```
```c=
iperf3 -u -c 192.168.8.21 -p 8889 -b <target> -t 30 -l 1300 #Client
````
## 8. Result
### The maximum number of connectable UEs is currently 32
If the number of connected UEs exceeds ==32==, it will cause ==licensed problems==.
```c=
17/12/24 01:57:29:671 forw mte MtsConfigUeGroup 0 0 1{0-31}
17/12/24 01:57:29:696 C: FORW 0x00 Ok MTE MTSCONFIGUEGROUP: RETURN CODE:0 SUCCEEDED
17/12/24 01:57:34:013 forw mte MtsConfigUeGroup 0 0 1{0-32}
17/12/24 01:57:34:027 C: FORW 0x04 Resource_Unavailable MTE MTSCONFIGUEGROUP RETURN CODE:4 FAILED - Not licensed for User Id in the group
17/12/24 01:57:37:056 forw mte MtsConfigUeGroup 0 0 1{0-64}
17/12/24 01:57:37:066 C: FORW 0x04 Resource_Unavailable MTE MTSCONFIGUEGROUP RETURN CODE:4 FAILED - Not licensed for User Id in the group
```
### Free5GC + BBU + TM500_RU + Cloud UE(Single)
- Uplink testing ==482== Mbits/sec
```c=
[ 5] 27.00-28.00 sec 59.1 MBytes 496 Mbits/sec 47686
[ 5] 28.00-29.00 sec 58.6 MBytes 491 Mbits/sec 47239
[ 5] 29.00-30.00 sec 58.9 MBytes 494 Mbits/sec 47520
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 1.69 GBytes 483 Mbits/sec 0.000 ms 0/1393733 (0%) sender
[ 5] 0.00-30.04 sec 1.69 GBytes 482 Mbits/sec 0.014 ms 1020/1393731 (0.073%) receiv
```
- Downlink testing ==738== Mbits/sec
```c=
[ 5] 26.00-27.00 sec 87.3 MBytes 732 Mbits/sec 0.016 ms 3615/74036 (4.9%)
[ 5] 27.00-28.00 sec 91.3 MBytes 766 Mbits/sec 0.028 ms 2368/76032 (3.1%)
[ 5] 28.00-29.00 sec 90.8 MBytes 762 Mbits/sec 0.019 ms 3650/76916 (4.7%)
[ 5] 29.00-30.00 sec 90.0 MBytes 755 Mbits/sec 0.016 ms 5664/78287 (7.2%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.06 sec 2.71 GBytes 775 Mbits/sec 0.000 ms 0/2240891 (0%) sender
[ 5] 0.00-30.00 sec 2.58 GBytes 738 Mbits/sec 0.016 ms 113111/2240835 (5%) receiver
```
### Free5GC + OAI_CU + OAI_DU + TM500_RU + Cloud UE(Single)
- Uplink testing ==473== Mbits/sec
```c=
[ 5] 27.00-28.00 sec 52.1 MBytes 437 Mbits/sec 41985
[ 5] 28.00-29.00 sec 53.7 MBytes 451 Mbits/sec 43353
[ 5] 29.00-30.00 sec 51.0 MBytes 428 Mbits/sec 41164
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 1.65 GBytes 474 Mbits/sec 0.000 ms 0/1366532 (0%) sender
[ 5] 0.00-30.04 sec 1.65 GBytes 473 Mbits/sec 0.021 ms 1007/1366532 (0.074%) receiver
```
- Downlink testing ==727== Mbits/sec
```c=
[ 5] 26.00-27.00 sec 83.9 MBytes 704 Mbits/sec 0.028 ms 2926/70602 (4.1%)
[ 5] 27.00-28.00 sec 91.8 MBytes 770 Mbits/sec 0.022 ms 1734/75787 (2.3%)
[ 5] 28.00-29.00 sec 90.3 MBytes 757 Mbits/sec 0.028 ms 3160/75957 (4.2%)
[ 5] 29.00-30.00 sec 95.6 MBytes 802 Mbits/sec 0.037 ms 2298/79380 (2.9%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.04 sec 2.64 GBytes 756 Mbits/sec 0.000 ms 0/2182584 (0%) sender
[ 5] 0.00-30.00 sec 2.54 GBytes 727 Mbits/sec 0.037 ms 85574/2182523 (3.9%) receive
```
## 9. Issue
- [Recode](https://hackmd.io/@Johnson-72/S1lMYF6LJl)