move some doc to gitlab
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">Open Air LTE Emulation</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
This page is valid for the develop branch
|
||||
|
||||
# Table of Contents: #
|
||||
|
||||
* [How to build the eNB and the UE](#build)
|
||||
* [How to run an eNB built with the noS1 option](#run-noS1-eNB)
|
||||
* [How to run a UE built with the noS1 option](#run-noS1-UE)
|
||||
* [Continuous Integration notes](#CInote)
|
||||
* [How to ping an eNB from a UE and vice versa (with the noS1 option)](#noS1-pinging)
|
||||
|
||||
The old oaisim is dead! Long live oaisim! :)
|
||||
|
||||
If you are looking for a description of the old oaisim (which is still available in some branches/tags), please see [here](OpenAirLTEEmulation) and [here](how-to-run-oaisim-with-multiple-ue).
|
||||
|
||||
oaisim has been scraped and replaced by the same programs that are used for the real-time operation, `lte-softmodem` and `lte-uesoftmodem`. The latter also now includes an optional channel model, just like oaisim did.
|
||||
|
||||
# <a name="build">[How to build the eNB and the UE](BUILD.md)</a>
|
||||
|
||||
The following paragraph explains how to run the L1 simulator in noS1 mode and using the oai kernel modules.
|
||||
|
||||
# <a name="run-noS1-eNB">How to run an eNB with the noS1 option</a>
|
||||
|
||||
Modify the configuration file for IF4p5 fronthaul, `/openairinterface5g/ci-scripts/conf_files/rcc.band7.nos1.simulator.conf`, and replace the loopback interface with a physical ethernet interface and the IP addresses to work on your network. Copy your modifications to a new file, let's call YYY.conf the resulting configuration file.
|
||||
|
||||
Run lte-softmodem as usual with this configuration.
|
||||
|
||||
```bash
|
||||
$ source oaienv
|
||||
$ cd cmake_targets/tools
|
||||
$ sudo -E ./init_nas_nos1 eNB
|
||||
$ cd ../lte_build_oai/build
|
||||
$ sudo -E ./lte-softmodem -O YYY.conf --noS1 --nokrnmod 0
|
||||
```
|
||||
|
||||
# <a name="run-noS1-UE">How to run a UE with the noS1 option</a>
|
||||
|
||||
Similarly modify the example configuration file in `/openairinterface5g/ci-scripts/conf_files/rru.band7.nos1.simulator.conf` and replace loopback interface and IP addresses. Copy your modifications to a new file, let's call XXX.conf the resulting configuration file.
|
||||
|
||||
Run it like:
|
||||
|
||||
```bash
|
||||
$ source oaienv
|
||||
$ cd cmake_targets/tools
|
||||
$ sudo -E ./init_nas_nos1 UE
|
||||
$ cd ../lte_build_oai/build
|
||||
$ sudo ./lte-uesoftmodem -O XXX.conf -r 25 --siml1 --noS1 --nokrnmod 0
|
||||
```
|
||||
|
||||
That should give you equivalent functionality to what you had with oaisim including noise and RF channel emulation (path loss / fading, etc.). You should also be able to run multiple UEs.
|
||||
|
||||
# <a name="CInote">Continuous Integration notes</a>
|
||||
The CI currently tests the noS1 build option with one eNB and one UE in the following scenarios:
|
||||
* pinging one UE from one eNB
|
||||
* pinging one eNB from one UE
|
||||
* iperf download between one eNB and one UE
|
||||
* iperf upload between one eNB and one UE
|
||||
* all the above tests are done in FDD 5Mhz mode.
|
||||
|
||||
# <a name="noS1-pinging">How to ping an eNB from a UE and vice versa (with the noS1 option)</a>
|
||||
|
||||
Once your eNB and UE (built with the noS1 option) are running and synchronised, you can ping the eNB from the UE with the following command:
|
||||
|
||||
```bash
|
||||
ping -I oai0 -c 20 $eNB_ip_addr
|
||||
```
|
||||
where $eNB_ip_addr is the IP address of your eNB.
|
||||
|
||||
Similarly, you can ping the UE from the eNB.
|
||||
|
||||
The IP adresses of the eNB and the UE are set up by the init_nas_nos1 program and should have the following values:
|
||||
* eNB_ip_addr set to 20 10.0.1.1
|
||||
* ue_ip_addr set to 20 10.0.1.2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
|
||||
|
||||
[oai softmodem features](FEATURE_SET.md)
|
||||
|
||||
[oai softmodem build procedure](BUILD.md)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="../images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">L2 nFAPI Simulator Usage</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
This simulator allows to test L2 and above Layers using the nFAPI interface.
|
||||
|
||||
**This simulator is available starting the `v1.0.0` release on the `master` branch.**
|
||||
|
||||
Currently the only validated deployment by CI and developers is *with S1 interface and eNB / UEs are on the same machine*.
|
||||
|
||||
Others deployments will be supported later after bug fixes and validation in the CI process.
|
||||
|
||||
1. [With S1 -- eNB and UE on same machine](L2NFAPI_S1.md)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
|
||||
|
||||
[oai softmodem features](FEATURE_SET.md)
|
||||
|
||||
[oai softmodem build procedure](BUILD.md)
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="../images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">L2 nFAPI Simulator (with S1 / same machine deployment)</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Table of Contents ##
|
||||
|
||||
1. [Environment](#1-environment)
|
||||
2. [Prepare the EPC](#2-prepare-the-epc)
|
||||
3. [Retrieve the OAI eNB-UE source code](#3-retrieve-the-oai-enb-ue-source-code)
|
||||
4. [Setup of the USIM information in UE folder](#4-setup-of-the-usim-information-in-ue-folder)
|
||||
5. [Setup of the Configuration files](#5-setup-of-the-configuration-files)
|
||||
1. [The eNB Configuration file](#51-the-enb-configuration-file)
|
||||
2. [The UE Configuration file](#52-the-ue-configuration-file)
|
||||
6. [Bring Up a second loopback interface](#6-bring-up-a-second-loopback-interface)
|
||||
7. [Build the eNB](#7-build-the-enb)
|
||||
8. [Build the UE](#8-build-the-ue)
|
||||
9. [Initialize the NAS UE Layer](#9-initialize-the-nas-ue-layer)
|
||||
10. [Start the eNB](#10-start-the-enb)
|
||||
11. [Start the UE](#11-start-the-ue)
|
||||
12. [Test with ping](#12-test-with-ping)
|
||||
13. [Limitations](#13-limitations)
|
||||
|
||||
# 1. Environment #
|
||||
|
||||
2 servers are used in this deployment. You can use Virtual Machines instead of each server; like it is done in the CI process.
|
||||
|
||||
* Machine A contains the EPC.
|
||||
* Machine B contains the OAI eNB and the OAI UE(s)
|
||||
|
||||
Example of L2 nFAPI Simulator testing environment:
|
||||
|
||||
<img src="../l2-nfapi-simulator/L2-sim-single-server-deployment.png" alt="" border=3>
|
||||
|
||||
Note that the IP addresses are indicative and need to be adapted to your environment.
|
||||
|
||||
# 2. Prepare the EPC #
|
||||
|
||||
Create the environment for the EPC and register all **USIM** information into the **HSS** database.
|
||||
|
||||
If you are using OAI-EPC ([see on GitHub](https://github.com/OPENAIRINTERFACE/openair-cn)), build **HSS/MME/SPGW** and create config files.
|
||||
|
||||
# 3. Retrieve the OAI eNB-UE source code #
|
||||
|
||||
The eNB and the UE executables will compiled into 2 separate folders on the same machine `B`.
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ git clone https://gitlab.eurecom.fr/oai/openairinterface5g/ enb_folder
|
||||
$ cd enb_folder
|
||||
$ git checkout -f v1.0.0
|
||||
$ cd ..
|
||||
$ cp -Rf enb_folder ue_folder
|
||||
```
|
||||
|
||||
# 4. Setup of the USIM information in UE folder #
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ cd ue_folder
|
||||
# Edit openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf with your preferred editor
|
||||
```
|
||||
|
||||
Edit the USIM information within this file in order to match the HSS database. They **HAVE TO** match:
|
||||
|
||||
* PLMN+MSIN and IMSI of users table of HSS database **SHALL** be the same.
|
||||
* OPC of this file and OPC of users table of HSS database **SHALL** be the same.
|
||||
* USIM_API_K of this file and the key of users table of HSS database **SHALL** be the same.
|
||||
|
||||
When testing multiple UEs, it is necessary to add other UEs information like described below for 2 Users. Only UE0 (first UE) information is written in the original file.
|
||||
|
||||
```
|
||||
UE0:
|
||||
{
|
||||
USER: {
|
||||
IMEI="356113022094149";
|
||||
MANUFACTURER="EURECOM";
|
||||
MODEL="LTE Android PC";
|
||||
PIN="0000";
|
||||
};
|
||||
|
||||
SIM: {
|
||||
MSIN="0000000001"; // <-- Modify here
|
||||
USIM_API_K="8baf473f2f8fd09487cccbd7097c6862";
|
||||
OPC="e734f8734007d6c5ce7a0508809e7e9c";
|
||||
MSISDN="33611123456";
|
||||
};
|
||||
...
|
||||
};
|
||||
// Copy the UE0 and edit
|
||||
UE1: // <- Edit here
|
||||
{
|
||||
USER: {
|
||||
IMEI="356113022094149";
|
||||
MANUFACTURER="EURECOM";
|
||||
MODEL="LTE Android PC";
|
||||
PIN="0000";
|
||||
};
|
||||
|
||||
SIM: {
|
||||
MSIN="0000000002"; // <-- Modify here
|
||||
USIM_API_K="8baf473f2f8fd09487cccbd7097c6862";
|
||||
OPC="e734f8734007d6c5ce7a0508809e7e9c";
|
||||
MSISDN="33611123456";
|
||||
};
|
||||
...
|
||||
};
|
||||
```
|
||||
|
||||
You can repeat the operation for as many users you want to test with.
|
||||
|
||||
# 5. Setup of the Configuration files #
|
||||
|
||||
**CAUTION: both proposed configuration files resides in the ci-scripts realm. You can copy them but you CANNOT push any modification on these 2 files as part of an MR without informing the CI team.**
|
||||
|
||||
## 5.1. The eNB Configuration file ##
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ cd enb_folder
|
||||
# Edit ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf with your preferred editor
|
||||
```
|
||||
|
||||
First verify the nFAPI interface setup on the 2nd loopback interface.
|
||||
|
||||
```
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
local_s_if_name = "lo:"; // <-- HERE
|
||||
remote_s_address = "127.0.0.1"; // <-- HERE
|
||||
local_s_address = "127.0.0.2"; // <-- HERE
|
||||
local_s_portc = 50001;
|
||||
remote_s_portc = 50000;
|
||||
local_s_portd = 50011;
|
||||
remote_s_portd = 50010;
|
||||
tr_s_preference = "nfapi";
|
||||
tr_n_preference = "local_RRC";
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
If you are testing more than 16 UEs, a proper setting on the RUs is necessary. **Note that this part is NOT present in the original configuration file**.
|
||||
|
||||
```
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 20
|
||||
att_rx = 0;
|
||||
bands = [38];
|
||||
max_pdschReferenceSignalPower = -23;
|
||||
max_rxgain = 116;
|
||||
eNB_instances = [0];
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
Last, the S1 interface shall be properly set.
|
||||
|
||||
```
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; // replace with 192.168.10.20
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "ens3"; // replace with the proper interface name
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; // replace with 192.168.10.10
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "ens3"; // replace with the proper interface name
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; // replace with 192.168.10.10
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; // replace with 192.168.10.10
|
||||
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||
|
||||
};
|
||||
```
|
||||
|
||||
## 5.2. The UE Configuration file ##
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ cd ue_folder
|
||||
# Edit ci-scripts/conf_files/ue.nfapi.conf with your preferred editor
|
||||
```
|
||||
|
||||
Verify the nFAPI interface setup on the loopback interface.
|
||||
|
||||
```
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "nfapi";
|
||||
local_n_if_name = "lo"; // <- HERE
|
||||
remote_n_address = "127.0.0.2"; // <- HERE
|
||||
local_n_address = "127.0.0.1"; // <- HERE
|
||||
local_n_portc = 50000;
|
||||
remote_n_portc = 50001;
|
||||
local_n_portd = 50010;
|
||||
remote_n_portd = 50011;
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
# 6. Bring Up a second loopback interface #
|
||||
|
||||
A second loopback interface is used to connect the eNB and the UEs.
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ sudo ifconfig lo: 127.0.0.2 netmask 255.0.0.0 up
|
||||
```
|
||||
|
||||
# 7. [Build OAI UE and eNodeB](BUILD.md) #
|
||||
|
||||
|
||||
|
||||
# 8. Initialize the NAS UE Layer #
|
||||
|
||||
Start the EPC on machine `A`.
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineA
|
||||
# Start the EPC
|
||||
```
|
||||
|
||||
# 9. Start the eNB #
|
||||
|
||||
In the first terminal (the one you used to build the eNB):
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ cd enb_folder/cmake_targets
|
||||
$ sudo -E ./lte_build_oai/build/lte-softmodem -O ../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf > enb.log 2>&1
|
||||
```
|
||||
|
||||
If you don't use redirection, you can test but many logs are printed on the console and this may affect performance of the L2-nFAPI simulator.
|
||||
|
||||
We do recommend the redirection in steady mode once your setup is correct.
|
||||
|
||||
# 10. Start the UE #
|
||||
|
||||
In the second terminal (the one you used to build the UE):
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
$ cd ue_folder/cmake_targets
|
||||
# Test 64 UEs, 64 threads in FDD mode
|
||||
$ sudo -E ./lte_build_oai/build/lte-uesoftmodem -O ../ci-scripts/conf_files/ue.nfapi.conf --L2-emul 3 --num-ues 64 --nums-ue-thread 64 > ue.log 2>&1
|
||||
# Test 64 UEs, 64 threads in TDD mode
|
||||
$ sudo -E ./lte_build_oai/build/lte-uesoftmodem -O ../ci-scripts/conf_files/ue.nfapi.conf --L2-emul 3 --num-ues 64 --nums-ue-thread 64 -T 1 > ue.log 2>&1
|
||||
# The "-T 1" option means TDD config
|
||||
```
|
||||
|
||||
- The number of UEs can set by using `--num-ues` option and the maximum UE number is 255 (with the `--mu*` options, otherwise 16).
|
||||
- The umber of threads can set with the `--nums-ue-thread`. This number **SHALL NOT** be greater than the number of UEs.
|
||||
- How many UE that can be tested depends on hardware (server , PC, etc) performance in your environment.
|
||||
|
||||
# 11. Test with ping #
|
||||
|
||||
In a third terminal, after around 10 seconds, the UE(s) shall be connected to the eNB:
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineA
|
||||
# Ping UE0 IP address based on the EPC pool used: in this example:
|
||||
$ ping -c 20 192.168.200.2
|
||||
# Ping UE1 IP address based on the EPC pool used: in this example:
|
||||
$ ping -c 20 192.168.200.4
|
||||
```
|
||||
|
||||
# 12. Limitations #
|
||||
|
||||
Testing on the CI process is currently limited at time of writing. Improvements will be made soon.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
|
||||
|
||||
[oai softmodem features](FEATURE_SET.md)
|
||||
|
||||
[oai softmodem build procedure](BUILD.md)
|
||||
|
||||
[L2 nfapi simulator](L2NFAPI.md)
|
||||
+16
-8
@@ -1,14 +1,14 @@
|
||||
# Running OAI softmodem
|
||||
|
||||
After you have [built the softmodem executables](BUILD.md) you can go to the build directory `cmake_targets/lte_build_oai/build/` and start testing some use cases.
|
||||
After you have [built the softmodem executables](BUILD.md) you can set your default directory to the build directory `cmake_targets/lte_build_oai/build/` and start testing some use cases. Below, the description of the different oai functionalities should help you choose the oai configuration that suits your need.
|
||||
|
||||
## rf simulator
|
||||
|
||||
The rf simulator is a oai device replacing the radio heads (for example the USRP device). It allows connecting the oai UE and the oai eNodeB through a network interface carrying the time-domain samples, getting rid of over the air unpredictable perturbations. This is the ideal tool to check signal processing algorithms implementation.
|
||||
The rf simulator is a oai device replacing the radio heads (for example the USRP device). It allows connecting the oai UE and the oai eNodeB through a network interface carrying the time-domain samples, getting rid of over the air unpredictable perturbations. This is the ideal tool to check signal processing algorithms and protocols implementation.
|
||||
|
||||
It is planned to enhance this simulator with the following functionalities:
|
||||
|
||||
- Support for multiple UE connections
|
||||
- Support for multiple UE connections,each UE being a `lte-uesoftmodem` instance.
|
||||
- Support for multiple eNodeB for hand-over tests
|
||||
- Support for channel modeling
|
||||
|
||||
@@ -16,15 +16,15 @@ It is planned to enhance this simulator with the following functionalities:
|
||||
|
||||
## l2 nfapi simulator
|
||||
|
||||
This simulator connects a eNodeB and UEs through the nfapi interface.
|
||||
This simulator connects a eNodeB and UEs through a nfapi interface, short-cutting the L1 layer. The objective of this simulator is to allow multi UEs simulation, with a large number of UEs (ideally up to 255 ) .Here to ease the platform setup, UEs are simulated via a single `lte-uesoftmodem` instance. Today the CI tests just with one UE and architecture has to be reviewed to allow a number of UE above about 16. This work is on-going.
|
||||
|
||||
As for the rf simulator, no specific hardware is required. The [L2 nfapi simlator page](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/l2-nfapi-simulator/l2-nfapi-simulator-w-S1-same-machine) contains the detailed documentation.
|
||||
As for the rf simulator, no specific hardware is required. The [L2 nfapi simlator page](L2NFAPI.md) contains the detailed documentation.
|
||||
|
||||
## l1 simulator
|
||||
|
||||
The [L1 simulator page](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/OpenAirLTEEmulationNEW) contains the detailed documentation.
|
||||
The l1 simulator is using the ethernet fronthaul protocol, as used to connect a RRU and a RAU to connect UEs and a eNodeB. UEs are simulated in a single `lte-uesoftmodem` process, as for the nfapi simulator.
|
||||
|
||||
## USRP record player
|
||||
The [L1 simulator page](L1SIM.md) contains the detailed documentation.
|
||||
|
||||
## noS1 mode
|
||||
|
||||
@@ -34,7 +34,15 @@ By default the noS1 mode is using linux tun interfaces to send or receive ip pac
|
||||
|
||||
noS1 code has been revisited, it has been tested with the rf simulator, and tun interfaces. More tests are on going and CI will soon include noS1 tests.
|
||||
|
||||
## Monolithic eNodeB with USRP radio head
|
||||
## Using USRP radio head
|
||||
|
||||
[Monolithic eNodeB](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/HowToConnectCOTSUEwithOAIeNBNew)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user