5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
cttc-nr-fh-xr.cc File Reference

An example to study Fronthaul limitations on XR traffic. More...

#include "ns3/antenna-module.h"
#include "ns3/applications-module.h"
#include "ns3/boolean.h"
#include "ns3/config-store.h"
#include "ns3/core-module.h"
#include "ns3/flow-monitor-module.h"
#include "ns3/internet-module.h"
#include "ns3/mobility-module.h"
#include "ns3/network-module.h"
#include "ns3/nr-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/xr-traffic-mixer-helper.h"
#include <vector>
+ Include dependency graph for cttc-nr-fh-xr.cc:

Go to the source code of this file.

Functions

void ConfigureBwpTo (BandwidthPartInfoPtr &bwp, double centerFreq, double bwpBw)
 
void ConfigurePhy (Ptr< NrHelper > nrHelper, Ptr< NetDevice > gnb, double orientationRads, uint16_t beamConfSector, double beamConfElevation)
 
void ConfigureVoiceApp (VoiceApplicationSettings &voiceAppSettings)
 
void ConfigureXrApp (NodeContainer &ueContainer, uint32_t i, Ipv4InterfaceContainer &ueIpIface, enum NrXrConfig config, uint16_t uePort, std::string transportProtocol, NodeContainer &remoteHostContainer, NetDeviceContainer &ueNetDev, Ptr< NrHelper > nrHelper, NrEpsBearer &bearer, Ptr< NrEpcTft > tft, bool isMx1, std::vector< Ptr< NrEpcTft > > &tfts, ApplicationContainer &serverApps, ApplicationContainer &clientApps, ApplicationContainer &pingApps, std::string direction, double arDataRate, uint16_t arFps, double vrDataRate, uint16_t vrFps, double cgDataRate, Ipv4Address remoteHostAddress, uint16_t remoteHostPort)
 
static void PrintUePosition (NodeContainer ueNodes)
 
void ReportAiTrace (const SfnSf &sfn, uint16_t physCellId, uint16_t bwpId, uint32_t airRbs)
 
void ReportFhTrace (const SfnSf &sfn, uint16_t physCellId, uint16_t bwpId, uint64_t reqFh)
 

Variables

std::ofstream m_aiTraceFile
 
std::string m_aiTraceFileName
 
uint32_t m_fhCapacity
 
std::string m_fhControlMethod
 
std::ofstream m_fhTraceFile
 
std::string m_fhTraceFileName
 
std::string m_outputDir
 

Detailed Description

An example to study Fronthaul limitations on XR traffic.

This example has been implemented in order to study the Fronthaul (FH) Control feature implemented in the NrFhControl class. It allows for simulations of single- or multi-cell deployments with variable number of UEs with XR traffic per cell. Each UE can be configured with AR, VR, CG and VoIP traffic. Moreover, a variety of parameters can be configured by the user, such as the propagation scenario, the data rate, the frame per seconds (FPS), the transmit power, and the antenna parameters. You can have a look at the rest of the parameters to check all the possible options offered using the following command:

$ ./ns3 run "cttc-nr-fh-xr --PrintHelp"

The basic command to study a single-cell FH schenario with XR traffic and evaluate the impact that the FH limitation can have on the end-to-end throughput and latency, looks as follows:

./ns3 run cttc-nr-fh-xr – –fhCapacity=5000 –fhControlMethod=OptimizeRBs –frequency=30e9 –bandwidth=400e6 –numerology=3 –deployment=SIMPLE –arUeNum=3 –vrUeNum=3 –cgUeNum=3 –voiceUeNum=3 –appDuration=5000 –enableTDD4_1=1 –enableMimoFeedback=1 –txPower=30 –distance=2 –channelUpdatePeriod=0 –channelConditionUpdatePeriod=0 –enableShadowing=0 –isLos=1 –enableHarqRetx=1 –useFixedMcs=0 –enableInterServ=0 –enablePdcpDiscarding=1 –schedulerType=PF –reorderingTimerMs=10

The configuration used in this command is based on the 3GPP R1-2111046 specification for for performance evaluations for XR traffic. Varying the fhCapacity and the fhControlMethod you can reproduce the results presented in the paper "On the impact of Open RAN Fronthaul Control in scenarios with XR Traffic", K. Koutlia, S. Lagen, Computer Networks, Volume 253, August 2024, where you can find a detailed description of the FH Control implementation and an explanation of the results.

Notice that the hexagonal deployment is not updated to latest versions of ns-3 and 5G-LENA therefore errors might por-up. If you are interested on working on it, you will have first to ensure its proper operation.

For the REM generation use:

./ns3 run "cttc-nr-fh-xr &ndash;voiceUeNum=2 &ndash;numRings=1 &ndash;deployment=HEX &ndash;dlRem=1 &ndash;xMin=-250 &ndash;xMax=250 &ndash;xRes=700 &ndash;yMin=-250 &ndash;yMax=250 &ndash;yRes=700 &ndash;remSector=0 &ndash;ns3::NrRadioEnvironmentMapHelper::RemMode=BeamShape &ndash;ns3::NrRadioEnvironmentMapHelper::SimTag=testREM"

Definition in file cttc-nr-fh-xr.cc.

Function Documentation

◆ ConfigureBwpTo()

void ConfigureBwpTo ( BandwidthPartInfoPtr bwp,
double  centerFreq,
double  bwpBw 
)

Definition at line 2242 of file cttc-nr-fh-xr.cc.

◆ ConfigurePhy()

void ConfigurePhy ( Ptr< NrHelper nrHelper,
Ptr< NetDevice >  gnb,
double  orientationRads,
uint16_t  beamConfSector,
double  beamConfElevation 
)

Definition at line 2251 of file cttc-nr-fh-xr.cc.

◆ ConfigureVoiceApp()

void ConfigureVoiceApp ( VoiceApplicationSettings &  voiceAppSettings)

Definition at line 2386 of file cttc-nr-fh-xr.cc.

◆ ConfigureXrApp()

void ConfigureXrApp ( NodeContainer &  ueContainer,
uint32_t  i,
Ipv4InterfaceContainer &  ueIpIface,
enum NrXrConfig  config,
uint16_t  uePort,
std::string  transportProtocol,
NodeContainer &  remoteHostContainer,
NetDeviceContainer &  ueNetDev,
Ptr< NrHelper nrHelper,
NrEpsBearer bearer,
Ptr< NrEpcTft tft,
bool  isMx1,
std::vector< Ptr< NrEpcTft > > &  tfts,
ApplicationContainer &  serverApps,
ApplicationContainer &  clientApps,
ApplicationContainer &  pingApps,
std::string  direction,
double  arDataRate,
uint16_t  arFps,
double  vrDataRate,
uint16_t  vrFps,
double  cgDataRate,
Ipv4Address  remoteHostAddress,
uint16_t  remoteHostPort 
)

Definition at line 2269 of file cttc-nr-fh-xr.cc.

◆ PrintUePosition()

static void PrintUePosition ( NodeContainer  ueNodes)
static

Definition at line 2219 of file cttc-nr-fh-xr.cc.

◆ ReportAiTrace()

void ReportAiTrace ( const SfnSf sfn,
uint16_t  physCellId,
uint16_t  bwpId,
uint32_t  airRbs 
)

Definition at line 2462 of file cttc-nr-fh-xr.cc.

◆ ReportFhTrace()

void ReportFhTrace ( const SfnSf sfn,
uint16_t  physCellId,
uint16_t  bwpId,
uint64_t  reqFh 
)

Definition at line 2436 of file cttc-nr-fh-xr.cc.

Variable Documentation

◆ m_aiTraceFile

std::ofstream m_aiTraceFile

Definition at line 75 of file cttc-nr-fh-xr.cc.

◆ m_aiTraceFileName

std::string m_aiTraceFileName

Definition at line 76 of file cttc-nr-fh-xr.cc.

◆ m_fhCapacity

uint32_t m_fhCapacity

Definition at line 72 of file cttc-nr-fh-xr.cc.

◆ m_fhControlMethod

std::string m_fhControlMethod

Definition at line 71 of file cttc-nr-fh-xr.cc.

◆ m_fhTraceFile

std::ofstream m_fhTraceFile

Definition at line 73 of file cttc-nr-fh-xr.cc.

◆ m_fhTraceFileName

std::string m_fhTraceFileName

Definition at line 74 of file cttc-nr-fh-xr.cc.

◆ m_outputDir

std::string m_outputDir

Definition at line 77 of file cttc-nr-fh-xr.cc.