Clone
5
OpenAirLTEEmulation
Raphael Defosseux edited this page 2019-04-16 15:09:34 +02:00

OpenAirInterface System Emulation (Under further updates)

The system emulator allows for simulation and emulation of an OpenAirLTE network. It provides either simulation with full PHY and synthetic radio channels, or with PHY abstraction. In both PHY modes, the full protocol stack is executed as is the case on OpenAirInterface hardware. Several eNB and UE are virtualized in the same process. Support for ethernet-based emulation is also provided so that nodes can be distributed on a PC network.

The instructions for downloading the openairinterface5g repository are located here.

A web-based graphical front-end for configuring the emulator is currently being developed.

Also check out the file oaisim_walkthrough.pdf in targets/DOCS.

OAISIM Usage without S1

Compiling oaisim without S1

Assuming you are already in OAI installation, do the following steps:

source oaienv
cd cmake_targets
./build_oai -I #(this step is needed only once)
./build_oai --oaisim --noS1 -c

The oaisim executable (oaisim_nos1) is now located under: OAI_INSTALL_DIR/cmake_targets/oaisim_noS1_build_oai/build/

Running oaisim without S1

Assuming you are already in OAI installation, do the following steps:

source oaienv
cd cmake_targets/tools
source init_nas_nos1
./run_enb_ue_virt_noS1 #(to run without PHY abstraction mode)
./run_enb_ue_virt_noS1 -a #(to run with PHY abstraction mode)

OAISIM Usage with S1

Compiling oaisim with S1

Assuming you are already in OAI installation, do the following steps:

source oaienv
cd cmake_targets
./build_oai -I #(this step is needed only once)
./build_oai --oaisim -c

The oaisim executable (oaisim) is now located under: OAI_INSTALL_DIR/cmake_targets/oaisim_build_oai/build/

Running oaisim with S1

Assuming you are already in OAI installation, do the following steps:

source oaienv

In order to run oaisim with S1, you need to configure the eNB/EPC with appropriate settings.

Follow the tutorial here for more details.

OAISIM help

In OAI_INSTALL_DIR/cmake_targets/oaisim_noS1_build_oai/build/, run ./oaisim_nos1 -h

Usage: oaisim -h -a -F -C tdd_config -K [log_file] -V [vcd_file] -R N_RB_DL -e -x transmission_mode -m target_dl_mcs -r(ate_adaptation) -n n_frames -s snr_dB -k ricean_factor -t max_delay -f forgetting factor -A channel_model -z cooperation_flag -u nb_local_ue -U UE mobility -b nb_local_enb -B eNB_mobility -M ethernet_flag -p nb_master -g multicast_group -l log_level -c ocg_enable -T traffic model -D multicast network device
-h provides this help message!
-a Activates PHY abstraction mode
-A set the multipath channel simulation, options are: SCM_A, SCM_B, SCM_C, SCM_D, EPA, EVA, ETU, Rayleigh8, Rayleigh1, Rayleigh1_corr,Rayleigh1_anticorr, Rice8,, Rice1, AWGN
-b Set the number of local eNB
-B Set the mobility model for eNB, options are: STATIC, RWP, RWALK,
-c [1,2,3,4] Activate the config generator (OCG) to process the scenario descriptor, or give the scenario manually: -c template_1.xml
-C [0-6] Sets TDD configuration
-e Activates extended prefix mode
-E Random number generator seed
-f Set the forgetting factor for time-variation
-F Activates FDD transmission (TDD is default)
-g Set multicast group ID (0,1,2,3) - valid if M is set
-G Enable background traffic
-H Enable handover operation (default disabled)
-I Enable CLI interface (to connect use telnet localhost 1352)
-k Set the Ricean factor (linear)
-K [log_file] Enable ITTI logging into log_file
-l Set the global log level (8:trace, 7:debug, 6:info, 4:warn, 3:error)
-L [0-1] 0 to disable new link adaptation, 1 to enable new link adapatation
-m Gives a fixed DL mcs for eNB scheduler
-M Set the machine ID for Ethernet-based emulation
-n Set the number of frames for the simulation
-O [enb_conf_file] eNB configuration file name
-p Set the total number of machine in emulation - valid if M is set
-P [trace type] Enable protocol analyzer. Possible values for OPT:
 - wireshark: Enable tracing of layers above PHY using an UDP socket
 - pcap: Enable tracing of layers above PHY to a pcap file
 - tshark: Not implemented yet
-q Enable Openair performance profiler
-Q Activate and set the MBMS service: 0 : not used (default eMBMS disabled), 1: eMBMS and RRC Connection enabled, 2: eMBMS relaying and RRC Connection enabled, 3: eMBMS enabled, RRC Connection disabled, 4: eMBMS relaying enabled, RRC Connection disabled
-R [6,15,25,50,75,100] Sets N_RB_DL
-r Activates rate adaptation (DL for now)
-s snr_dB set a fixed (average) SNR, this deactivates the openair channel model generator (OCM)
-S snir_dB set a fixed (average) SNIR, this deactivates the openair channel model generator (OCM)
-t Gives a fixed UL mcs for eNB scheduler
-T activate the traffic generator: cbr, scbr, mcbr, bcbr, mscbr
-u Set the number of local UE
-U Set the mobility model for UE, options are: STATIC, RWP, RWALK
-V [vcd_file] Enable VCD dump into vcd_file
-w number of CBA groups, if not specified or zero, CBA is inactive
-W IP address to connect to SMBV and configure SMBV from config file. Requires compilation with SMBV=1, -W0 uses default IP 192.168.12.201
-x Set the transmission mode (1,2,5,6 supported for now)
-Y Set the global log verbosity (none, low, medium, high, full)
-z Set the cooperation flag (0 for no cooperation, 1 for delay diversity and 2 for distributed alamouti
-Z Reserved

Compliation options:

  • Rel10=1: enables LTE release 10 features.
  • DEBUG=1: enable debuggung and additional messages
  • NAS=1: compiles with nasmesh support enabled (requires NAS driver)
  • DISABLE_XER_PRINT=1: turns off ASN.1 message tracing, DISPLAY_XER_PRINT=0 is default
  • ENABLE_ITTI=1: turns on ITTI which is an intertask communication/tracing mechanism when RRC and S1AP and L2 stack are run in separate threads, default is 0
  • USE_MME=R10: enable the MME
  • LINK_PDCP_TO_GTPV1U=1: enables link to core network
  • SECU=1: enables security
  • RRC_MSG_PRINT=1 and PDCP_MSG_PRINT=1: enables low level traces of control and user plane traffic
  • PRINT_STATS=1: print eNB and UE stats in a separet file
  • XFORMS=1: compile with xforms enabled (to get a signal scope, constellation, etc., XFORMS=0 is default)

Note: alway do a make clean with the same compile options as for make oaisim (especially when changing the options).

You should have an executable called oaisim.

OpenAirInterface Scenario Descriptor (OSD)

OSD is composed of four main parts, which is a basic description of the data structure OAI_Emulation. It is part of OAI emulation methodology for describing scenarios using the xml format. Each reference scenario described by OSD defines a subset of the components described below:

  • Environment/system configuration, including fading, antenna, etc.
  • Topology configuration, including area, UE/eNB distribution, mobility, etc.
  • Application configuration, including predefined traffic, customized traffic, etc.
  • Emulation configuration, including emulation time, performance metrics, etc.

The high level tag hierarchy is shown below:

<OAI_EMULATION>
 <ENVIRONMENT_SYSTEM_CONFIG>
 </ENVIRONMENT_SYSTEM_CONFIG>
 <TOPOLOGY_CONFIG>
 </TOPOLOGY_CONFIG>
 <APPLICATION_CONFIG>
 </APPLICATION_CONFIG>
 <EMULATION_CONFIG>
 </EMULATION_CONFIG>
 <PROFILE> <!-- just a profile name -->
 </PROFILE>
</OAI_EMULATION>

See an example here. You can also set up an OSD html form using httpd server, and build your xml file and/or run an experiment. To install, see here.

Table of OSD tags with the valid values and units is shown below (under update, see the existing templates):

Tag Parent tag Range / valid value Unit
ENVIRONMENT_SYSTEM_CONFIG OAI_EMULATION NA NA
FADING ENVIRONMENT_SYSTEM_CONFIG NA NA
LARGE_SCALE FADING urban, rural, indoor (not used) string
FREE_SPACE_MODEL_PARAMETERS FADING NA NA
PATHLOSS_EXPONENT FREE_SPACE_MODEL_PARAMETERS 2-4 Double
PATHLOSS_0_dB FREE_SPACE_MODEL_PARAMETERS Depends on the Experiment dB
SMALL_SCALE FADING SCM_A, SCM_B, SCM_C, SCM_D, EPA, EVA,
ETU, Rayleigh8, Rayleigh1, Rayleigh1_corr,
Rayleigh1_anticorr, Rice8, Rice1, Rice1_corr,
Rice1_anticorr, AWGN
String
WALL_PENETRATION_LOSS_dB ENVIRONMENT_SYSTEM_CONFIG Depends on the Experiment dB
SYSTEM_BANDWIDTH_MB ENVIRONMENT_SYSTEM_CONFIG Depends on the Experiment MB
UE_FREQUENCY_GHz ENVIRONMENT_SYSTEM_CONFIG Depends on the Experiment GHz
ANTENNA ENVIRONMENT_SYSTEM_CONFIG NA NA
eNB_ANTENNA ANTENNA NA NA
RX_NOISE_LEVEL_dB eNB_ANTENNA Depends on the Experiment dB
NUMBER_OF_SECTORS eNB_ANTENNA Depends on the Experiment Int
BEAM_WIDTH_dB eNB_ANTENNA Depends on the Experiment dB
ANTENNA_GAIN_dBi eNB_ANTENNA Depends on the Experiment dBi
TX_POWER_dBm eNB_ANTENNA Depends on the Experiment dBm
UE_ANTENNA ANTENNA NA NA
RX_NOISE_LEVEL_dB UE_ANTENNA Depends on the Experiment dB
ANTENNA_GAIN_dBi UE_ANTENNA Depends on the Experiment dBi
TX_POWER_dBm UE_ANTENNA Depends on the Experiment dBm
 
TOPOLOGY_CONFIG OAI_EMULATION NA NA
AREA TOPOLOGY_CONFIG NA NA
X AREA Depends on the Experiment meter
Y AREA Depends on the Experiment meter
MOBILITY TOPOLOGY_CONFIG NA NA
UE_MOBILITY MOBILITY NA NA
UE_INITIAL_DISTRIBUTION UE_MOBILITY random String
RANDOM_UE_DISTRIBUTION UE_MOBILITY NA NA
NUMBER_OF_NODES RANDOM_UE_DISTRIBUTION Depends on the Experiment Int
UE_MOBILITY_TYPE UE_MOBILITY STATIC,RWP,RWALK,TRACE,SUMO String
GRID_MAP UE_MOBILITY RESTRICTED_RWP, CONNECTED_DOMAIN string
UE_MOVING_DYNAMICS UE_MOBILITY NA NA
MIN_SPEED_mps UE_MOVING_DYNAMICS Depends on the Experiment mps
MAX_SPEED_mps UE_MOVING_DYNAMICS Depends on the Experiment mps
MIN_SLEEP_ms UE_MOVING_DYNAMICS Depends on the Experiment Ms
MAX_SLEEP_ms UE_MOVING_DYNAMICS Depends on the Experiment Ms
MIN_JOURNEY_TIME_ms UE_MOVING_DYNAMICS Depends on the Experiment Ms
MAX_JOURNEY_TIME_ms UE_MOVING_DYNAMICS Depends on the Experiment Ms
SUMO_CONFIG UE_MOBILITY NA NA
SUMO_CMD SUMO_CONFIG NA NA
SUMO_CONFIG_FILE SUMO_CONFIG e.g. $OPENAIR2_DIR/UTIL/OMG/SUMO/SCENARIOS/traci.scen.sumo.cfg path
SUMO_START SUMO_CONFIG Depends on the Experiment double
SUMO_END SUMO_CONFIG Depends on the Experiment double
SUMO_STEP SUMO_CONFIG Depends on the Experiment IP
SUMO_HOST_IP SUMO_CONFIG Depends on the Experiment int
SUMO_HOST_PORT SUMO_CONFIG Depends on the Experiment int
eNB_MOBILITY MOBILITY NA NA
eNB_INITIAL_DISTRIBUTION eNB_MOBILITY random String
RANDOM_eNB_DISTRIBUTION eNB_MOBILITY int
NUMBER_OF_CELLS RANDOM_eNB_DISTRIBUTION Depends on the Experiment int
eNB_MOBILITY_TYPE eNB_MOBILITY fixed, mobile String
 
APPLICATION_CONFIG OAI_EMULATION NA NA
PREDEFINED_TRAFFIC APPLICATION_CONFIG scbr, mcbr, bcbr, m2m_AP, m2m_BR, gaming_OA,
gaming_TF, full_buffer
String
SOURCE_ID PREDEFINED_TRAFFIC single node, e.g. 2; several nodes, e.g. 2,3,5,7;
from node A to node B, e.g. 1:100
String
APPLICATION_TYPE PREDEFINED_TRAFFIC NA NA
DESTINATION_ID PREDEFINED_TRAFFIC Depends on the Experiment int
CUSTOMIZED_TRAFFIC APPLICATION_CONFIG NA NA
PU CUSTOMIZED_TRAFFIC NA NA
PROB_OFF_PU PU Depends on the Experiment double
PROB_PU_ED PU Depends on the Experiment double
HOLDING_TIME_OFF_PU PU Depends on the Experiment double
ED CUSTOMIZED_TRAFFIC NA NA
PROB_OFF_ED ED Depends on the Experiment double
PROB_ED_PE ED Depends on the Experiment double
HOLDING_TIME_OFF_ED ED Depends on the Experiment double
PE CUSTOMIZED_TRAFFIC NA NA
HOLDING_TIME_OFF_PE PE Depends on the Experiment double
SOURCE_ID CUSTOMIZED_TRAFFIC single node, e.g. 2; several nodes, e.g. 2,3,5,7;
from node A to node B, e.g. 1:100
int
TRANSPORT_PROTOCOL CUSTOMIZED_TRAFFIC tcp (default), udp string
IP_VERSION CUSTOMIZED_TRAFFIC ipv4 (default), ipv6 string
DESTINATION_ID CUSTOMIZED_TRAFFIC Depends on the Experiment int
IDT_DIST CUSTOMIZED_TRAFFIC no_customized_traffic (default), uniform, poission, gaussian,
exponential, fixed, weibull, pareto, gamma, cauchy
string
IDT_MIN_ms CUSTOMIZED_TRAFFIC Depends on the Experiment ms
IDT_MAX_ms CUSTOMIZED_TRAFFIC Depends on the Experiment ms
IDT_STANDARD_DEVIATION CUSTOMIZED_TRAFFIC Depends on the Experiment double
IDT_LAMBDA CUSTOMIZED_TRAFFIC Depends on the Experiment double
SIZE_DIST CUSTOMIZED_TRAFFIC no_customized_traffic (default), uniform, poission, gaussian,
exponential, fixed, weibull, pareto, gamma, cauchy
string
SIZE_MIN_byte CUSTOMIZED_TRAFFIC Depends on the Experiment byte
SIZE_MAX_byte CUSTOMIZED_TRAFFIC Depends on the Experiment byte
SIZE_STANDARD_DEVIATION CUSTOMIZED_TRAFFIC Depends on the Experiment double
SIZE_LAMBDA CUSTOMIZED_TRAFFIC Depends on the Experiment double
SIZE_SCALE CUSTOMIZED_TRAFFIC Depends on the Experiment double
SIZE_SHAPE CUSTOMIZED_TRAFFIC Depends on the Experiment double
DESTINATION_PORT CUSTOMIZED_TRAFFIC Depends on the Experiment int
 
EMULATION_CONFIG OAI_EMULATION NA NA
EMULATION_TIME_ms EMULATION_CONFIG Depends on the Experiment ms
PERFORMANCE_MATRICS EMULATION_CONFIG NA NA
METRICS PERFORMANCE_MATRICS NA NA
THROUGHPUT METRICS enable, disable string
LATENCY METRICS enable, disable String
LOSS_RATE METRICS enable, disable string
LEVEL LOG crit,alert, error,warn,info,debug,trace string
VERBOSITY LOG Low, medium, high String
INTERVAL LOG Depends on the Experiment (not used) String
SEED_VALUE EMULATION_CONFIG Depends on the Experiment int
PROFILE EMULATION_CONFIG Depends on the Experiment string

Attachments