A Discrete-Event Network Simulator
API
ns3::EpsBearer Class Reference

This class contains the specification of EPS Bearers. More...

#include "eps-bearer.h"

+ Inheritance diagram for ns3::EpsBearer:
+ Collaboration diagram for ns3::EpsBearer:

Classes

struct  QciHash
 Hashing QCI. More...
 

Public Types

enum  Qci : uint8_t {
  GBR_CONV_VOICE = 1 , GBR_CONV_VIDEO = 2 , GBR_GAMING = 3 , GBR_NON_CONV_VIDEO = 4 ,
  GBR_MC_PUSH_TO_TALK = 65 , GBR_NMC_PUSH_TO_TALK = 66 , GBR_MC_VIDEO = 67 , GBR_V2X = 75 ,
  GBR_LIVE_UL_71 = 71 , GBR_LIVE_UL_72 = 72 , GBR_LIVE_UL_73 = 73 , GBR_LIVE_UL_74 = 74 ,
  GBR_LIVE_UL_76 = 76 , NGBR_IMS = 5 , NGBR_VIDEO_TCP_OPERATOR , NGBR_VOICE_VIDEO_GAMING = 7 ,
  NGBR_VIDEO_TCP_PREMIUM , NGBR_VIDEO_TCP_DEFAULT , NGBR_MC_DELAY_SIGNAL , NGBR_MC_DATA = 70 ,
  NGBR_V2X = 79 , NGBR_LOW_LAT_EMBB = 80 , DGBR_DISCRETE_AUT_SMALL , DGBR_DISCRETE_AUT_LARGE ,
  DGBR_ITS = 84 , DGBR_ELECTRICITY , DGBR_V2X = 86 , DGBR_INTER_SERV_87 ,
  DGBR_INTER_SERV_88 , DGBR_VISUAL_CONTENT_89 , DGBR_VISUAL_CONTENT_90
}
 QoS Class Indicator. More...
 

Public Member Functions

 EpsBearer ()
 Default constructor. More...
 
 EpsBearer (const EpsBearer &o)
 EpsBearer copy constructor. More...
 
 EpsBearer (Qci x)
 
 EpsBearer (Qci x, GbrQosInformation y)
 
 ~EpsBearer () override
 Deconstructor. More...
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
uint16_t GetPacketDelayBudgetMs () const
 
double GetPacketErrorLossRate () const
 
uint8_t GetPriority () const
 
uint8_t GetRelease () const
 GetRelease. More...
 
uint8_t GetResourceType () const
 
void SetRelease (uint8_t release)
 SetRelease. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID. More...
 

Public Attributes

AllocationRetentionPriority arp
 allocation retention priority More...
 
GbrQosInformation gbrQosInfo
 GBR QOS information. More...
 
Qci qci
 Qos class indicator. More...
 

Private Types

typedef std::unordered_map< Qci, std::tuple< uint8_t, uint8_t, uint16_t, double, uint32_t, uint32_t >, QciHashBearerRequirementsMap
 Map between QCI and requirements. More...
 

Static Private Member Functions

static uint32_t GetAvgWindow (const BearerRequirementsMap &map, Qci qci)
 Get default averaging window for the selected QCI. More...
 
static uint32_t GetMaxDataBurst (const BearerRequirementsMap &map, Qci qci)
 Get maximum data burst for the selected QCI. More...
 
static uint16_t GetPacketDelayBudgetMs (const BearerRequirementsMap &map, Qci qci)
 Get packet delay in ms for the selected QCI. More...
 
static double GetPacketErrorLossRate (const BearerRequirementsMap &map, Qci qci)
 Get packet error rate for the selected QCI. More...
 
static uint8_t GetPriority (const BearerRequirementsMap &map, Qci qci)
 Get priority for the selected QCI. More...
 
static const BearerRequirementsMapGetRequirementsRel11 ()
 Retrieve requirements for Rel. More...
 
static const BearerRequirementsMapGetRequirementsRel15 ()
 Retrieve requirements for Rel. More...
 
static const BearerRequirementsMapGetRequirementsRel18 ()
 Retrieve requirements for Rel. More...
 
static uint8_t GetResourceType (const BearerRequirementsMap &map, Qci qci)
 Get the resource type (NON-GBR, GBR, DC-GBR) of the selected QCI. More...
 

Private Attributes

uint8_t m_release {30}
 Release (10 or 15 or 18) More...
 
BearerRequirementsMap m_requirements
 Requirements pointer per bearer. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

This class contains the specification of EPS Bearers.

See the following references: 3GPP TS 23.203, Section 4.7.2 The EPS bearer 3GPP TS 23.203, Section 4.7.3 Bearer level QoS parameters 3GPP TS 36.413 Section 9.2.1.15 E-RAB Level QoS Parameters

It supports the selection of different specifications depending on the release. To change the release, change the attribute "Release". Please remember that we must expose to all releases the most recent Qci. Asking for Qci parameters for a release in which it has not been created will result in a crash.

For example, if you select Release 11 (or if you don't select anything, as it is the default selection) and then ask for the packet error rate of the NGBR_MC_DELAY_SIGNAL Qci, the program will crash.

Please note that from Release 8 (the latest when the LENA project finished) to Release 11, the bearers ID and requirements are the same. From Release 12, they started to change, and the latest version is now Release 18. However, we do not support intermediate types between releases 11 and 15: in other words, you can select from Release 8 to Release 11, or Release 15 or 18. Any other value will result in a program crash.

The release version only affect Bearer definitions. Other part of the LTE module are not affected when changing the Release attribute.

Definition at line 90 of file eps-bearer.h.

Member Typedef Documentation

◆ BearerRequirementsMap

typedef std::unordered_map<Qci, std::tuple<uint8_t, uint8_t, uint16_t, double, uint32_t, uint32_t>, QciHash> ns3::EpsBearer::BearerRequirementsMap
private

Map between QCI and requirements.

The tuple is formed by: resource type, priority, packet delay budget, packet error rate, default maximum data burst, default averaging window (0 when does not apply)

Definition at line 273 of file eps-bearer.h.

Member Enumeration Documentation

◆ Qci

enum ns3::EpsBearer::Qci : uint8_t

QoS Class Indicator.

See 3GPP 23.203 Section 6.1.7.2 for standard values. Updated to Release 18.

Enumerator
GBR_CONV_VOICE 

GBR Conversational Voice.

GBR_CONV_VIDEO 

GBR Conversational Video (Live streaming)

GBR_GAMING 

GBR Real Time Gaming.

GBR_NON_CONV_VIDEO 

GBR Non-Conversational Video (Buffered Streaming)

GBR_MC_PUSH_TO_TALK 

GBR Mission Critical User Plane Push To Talk voice.

GBR_NMC_PUSH_TO_TALK 

GBR Non-Mission-Critical User Plane Push To Talk voice.

GBR_MC_VIDEO 

GBR Mission Critical Video User Plane.

GBR_V2X 

GBR V2X Messages.

GBR_LIVE_UL_71 

GBR Live UL streaming.

GBR_LIVE_UL_72 

GBR Live UL streaming.

GBR_LIVE_UL_73 

GBR Live UL streaming.

GBR_LIVE_UL_74 

GBR Live UL streaming.

GBR_LIVE_UL_76 

GBR Live UL streaming.

NGBR_IMS 

Non-GBR IMS Signalling.

NGBR_VIDEO_TCP_OPERATOR 

Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)

NGBR_VOICE_VIDEO_GAMING 

Non-GBR Voice, Video, Interactive Streaming.

NGBR_VIDEO_TCP_PREMIUM 

Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)

NGBR_VIDEO_TCP_DEFAULT 

Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)

NGBR_MC_DELAY_SIGNAL 

Non-GBR Mission Critical Delay Sensitive Signalling (e.g., MC-PTT)

NGBR_MC_DATA 

Non-GBR Mission Critical Data.

NGBR_V2X 

Non-GBR V2X Messages.

NGBR_LOW_LAT_EMBB 

Non-GBR Low Latency eMBB applications.

DGBR_DISCRETE_AUT_SMALL 

Delay-Critical GBR Discrete Automation Small Packets (TS 22.261)

DGBR_DISCRETE_AUT_LARGE 

Delay-Critical GBR Discrete Automation Large Packets (TS 22.261)

DGBR_ITS 

Delay-Critical GBR Intelligent Transport Systems (TS 22.261)

DGBR_ELECTRICITY 

Delay-Critical GBR Electricity Distribution High Voltage (TS 22.261)

DGBR_V2X 

Delay-Critical GBR V2X Messages (TS 23.501)

DGBR_INTER_SERV_87 

Delay-Critical GBR Interactive Service - Motion tracking data (TS 23.501)

DGBR_INTER_SERV_88 

Delay-Critical GBR Interactive Service - Motion tracking data (TS 23.501)

DGBR_VISUAL_CONTENT_89 

Delay-Critical GBR Visual Content for cloud/edge/split rendering (TS 23.501)

DGBR_VISUAL_CONTENT_90 

Delay-Critical GBR Visual Content for cloud/edge/split rendering (TS 23.501)

Definition at line 105 of file eps-bearer.h.

Constructor & Destructor Documentation

◆ EpsBearer() [1/4]

ns3::EpsBearer::EpsBearer ( )

Default constructor.

QCI will be initialized to NGBR_VIDEO_TCP_DEFAULT

Definition at line 70 of file eps-bearer.cc.

References ns3::ObjectBase::ConstructSelf().

+ Here is the call graph for this function:

◆ EpsBearer() [2/4]

ns3::EpsBearer::EpsBearer ( Qci  x)
Parameters
xthe QoS Class Indicator

Definition at line 77 of file eps-bearer.cc.

References ns3::ObjectBase::ConstructSelf().

+ Here is the call graph for this function:

◆ EpsBearer() [3/4]

ns3::EpsBearer::EpsBearer ( Qci  x,
GbrQosInformation  y 
)
Parameters
xthe QoS Class Indicator
ythe GbrQosInformation

Definition at line 84 of file eps-bearer.cc.

References ns3::ObjectBase::ConstructSelf().

+ Here is the call graph for this function:

◆ EpsBearer() [4/4]

ns3::EpsBearer::EpsBearer ( const EpsBearer o)

EpsBearer copy constructor.

Parameters
oother instance

Definition at line 92 of file eps-bearer.cc.

References ns3::ObjectBase::ConstructSelf(), gbrQosInfo, and qci.

+ Here is the call graph for this function:

◆ ~EpsBearer()

ns3::EpsBearer::~EpsBearer ( )
inlineoverride

Deconstructor.

Definition at line 186 of file eps-bearer.h.

Member Function Documentation

◆ GetAvgWindow()

static uint32_t ns3::EpsBearer::GetAvgWindow ( const BearerRequirementsMap map,
Qci  qci 
)
inlinestaticprivate

Get default averaging window for the selected QCI.

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
default averaging window for the selected QCI

Definition at line 336 of file eps-bearer.h.

References qci.

◆ GetInstanceTypeId()

TypeId ns3::EpsBearer::GetInstanceTypeId ( ) const
overridevirtual

Get the most derived TypeId for this Object.

This method is typically implemented by ns3::Object::GetInstanceTypeId but some classes which derive from ns3::ObjectBase directly have to implement it themselves.

Returns
The TypeId associated to the most-derived type of this instance.

Implements ns3::ObjectBase.

Definition at line 65 of file eps-bearer.cc.

References GetTypeId().

+ Here is the call graph for this function:

◆ GetMaxDataBurst()

static uint32_t ns3::EpsBearer::GetMaxDataBurst ( const BearerRequirementsMap map,
Qci  qci 
)
inlinestaticprivate

Get maximum data burst for the selected QCI.

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
maximum data burst for the selected QCI

Definition at line 325 of file eps-bearer.h.

References qci.

◆ GetPacketDelayBudgetMs() [1/2]

uint16_t ns3::EpsBearer::GetPacketDelayBudgetMs ( ) const
Returns
the packet delay budget associated with the QCI of this bearer as per 3GPP 23.203 Section 6.1.7.2

Definition at line 138 of file eps-bearer.cc.

References m_requirements, and qci.

Referenced by ns3::UeManager::SetupDataRadioBearer().

+ Here is the caller graph for this function:

◆ GetPacketDelayBudgetMs() [2/2]

static uint16_t ns3::EpsBearer::GetPacketDelayBudgetMs ( const BearerRequirementsMap map,
Qci  qci 
)
inlinestaticprivate

Get packet delay in ms for the selected QCI.

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
packet delay in ms for the selected QCI

Definition at line 303 of file eps-bearer.h.

References qci.

◆ GetPacketErrorLossRate() [1/2]

double ns3::EpsBearer::GetPacketErrorLossRate ( ) const
Returns
the packet error loss rate associated with the QCI of this bearer as per 3GPP 23.203 Section 6.1.7.2

Definition at line 144 of file eps-bearer.cc.

References m_requirements, and qci.

Referenced by ns3::LteEnbRrc::GetRlcType().

+ Here is the caller graph for this function:

◆ GetPacketErrorLossRate() [2/2]

static double ns3::EpsBearer::GetPacketErrorLossRate ( const BearerRequirementsMap map,
Qci  qci 
)
inlinestaticprivate

Get packet error rate for the selected QCI.

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
packet error rate for the selected QCI

Definition at line 314 of file eps-bearer.h.

References qci.

◆ GetPriority() [1/2]

uint8_t ns3::EpsBearer::GetPriority ( ) const
Returns
the priority associated with the QCI of this bearer as per 3GPP 23.203 Section 6.1.7.2

Definition at line 132 of file eps-bearer.cc.

References m_requirements, and qci.

◆ GetPriority() [2/2]

static uint8_t ns3::EpsBearer::GetPriority ( const BearerRequirementsMap map,
Qci  qci 
)
inlinestaticprivate

Get priority for the selected QCI.

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
priority for the selected QCI

Definition at line 292 of file eps-bearer.h.

References qci.

◆ GetRelease()

uint8_t ns3::EpsBearer::GetRelease ( ) const
inline

GetRelease.

Returns
The release currently set for this bearer type

Definition at line 208 of file eps-bearer.h.

References m_release.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetRequirementsRel11()

const EpsBearer::BearerRequirementsMap & ns3::EpsBearer::GetRequirementsRel11 ( )
staticprivate

Retrieve requirements for Rel.

11

Returns
the BearerRequirementsMap for Release 11

It returns a pointer to a non-const static data. That is not thread-safe, nor safe to do in general. However, a const-correct version would have to initialize two static maps, and then returning either one or the other. But that's a huge memory increase, and EpsBearer is used everywhere.

To be revisited when GCC 4.9 will not be supported anymore.

Definition at line 150 of file eps-bearer.cc.

References GBR_CONV_VIDEO, GBR_CONV_VOICE, GBR_GAMING, GBR_NON_CONV_VIDEO, NGBR_IMS, NGBR_VIDEO_TCP_DEFAULT, NGBR_VIDEO_TCP_OPERATOR, NGBR_VIDEO_TCP_PREMIUM, and NGBR_VOICE_VIDEO_GAMING.

Referenced by SetRelease().

+ Here is the caller graph for this function:

◆ GetRequirementsRel15()

const EpsBearer::BearerRequirementsMap & ns3::EpsBearer::GetRequirementsRel15 ( )
staticprivate

Retrieve requirements for Rel.

15

Returns
the BearerRequirementsMap for Release 15

It returns a pointer to a non-const static data. That is not thread-safe, nor safe to do in general. However, a const-correct version would have to initialize two static maps, and then returning either one or the other. But that's a huge memory increase, and EpsBearer is used everywhere.

To be revisited when GCC 4.9 will not be supported anymore.

Definition at line 178 of file eps-bearer.cc.

References DGBR_DISCRETE_AUT_LARGE, DGBR_DISCRETE_AUT_SMALL, DGBR_ELECTRICITY, DGBR_ITS, GBR_CONV_VIDEO, GBR_CONV_VOICE, GBR_GAMING, GBR_MC_PUSH_TO_TALK, GBR_MC_VIDEO, GBR_NMC_PUSH_TO_TALK, GBR_NON_CONV_VIDEO, GBR_V2X, NGBR_IMS, NGBR_LOW_LAT_EMBB, NGBR_MC_DATA, NGBR_MC_DELAY_SIGNAL, NGBR_V2X, NGBR_VIDEO_TCP_DEFAULT, NGBR_VIDEO_TCP_OPERATOR, NGBR_VIDEO_TCP_PREMIUM, and NGBR_VOICE_VIDEO_GAMING.

Referenced by SetRelease().

+ Here is the caller graph for this function:

◆ GetRequirementsRel18()

◆ GetResourceType() [1/2]

uint8_t ns3::EpsBearer::GetResourceType ( ) const
Returns
the resource type (NON-GBR, GBR, DC-GBR) of the selected QCI

Definition at line 126 of file eps-bearer.cc.

References m_requirements, and qci.

Referenced by ns3::NoOpComponentCarrierManager::DoSetupDataRadioBearer(), ns3::LteEnbRrc::GetLogicalChannelGroup(), and ns3::UeManager::SetupDataRadioBearer().

+ Here is the caller graph for this function:

◆ GetResourceType() [2/2]

static uint8_t ns3::EpsBearer::GetResourceType ( const BearerRequirementsMap map,
Qci  qci 
)
inlinestaticprivate

Get the resource type (NON-GBR, GBR, DC-GBR) of the selected QCI.

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
the resource type (NON-GBR, GBR, DC-GBR) of the selected QCI

Definition at line 281 of file eps-bearer.h.

References qci.

◆ GetTypeId()

TypeId ns3::EpsBearer::GetTypeId ( void  )
static

Get the type ID.

Returns
the object TypeId

Definition at line 46 of file eps-bearer.cc.

References GetRelease(), ns3::MakeUintegerAccessor(), ns3::TypeId::SetParent(), and SetRelease().

Referenced by GetInstanceTypeId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetRelease()

void ns3::EpsBearer::SetRelease ( uint8_t  release)

SetRelease.

Parameters
releaseThe release the user want for this bearer

Releases introduces new types, and change values for existing ones. While we can't do much for the added type (we must expose them even if the user want to work with older releases) by calling this method we can, at least, select the specific parameters value the bearer returns.

For instance, if the user select release 10 (the default) the priority of CONV_VIDEO will be 2. With release 15, such priority will be 20.

Definition at line 101 of file eps-bearer.cc.

References GetRequirementsRel11(), GetRequirementsRel15(), GetRequirementsRel18(), m_release, m_requirements, NS_FATAL_ERROR, and ns3::release.

Referenced by GetTypeId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ arp

AllocationRetentionPriority ns3::EpsBearer::arp

allocation retention priority

Definition at line 154 of file eps-bearer.h.

Referenced by ns3::EpcX2HandoverRequestHeader::Deserialize(), and ns3::LenaDeactivateBearerTestCase::DoRun().

◆ gbrQosInfo

◆ m_release

uint8_t ns3::EpsBearer::m_release {30}
private

Release (10 or 15 or 18)

Definition at line 380 of file eps-bearer.h.

Referenced by GetRelease(), and SetRelease().

◆ m_requirements

BearerRequirementsMap ns3::EpsBearer::m_requirements
private

Requirements pointer per bearer.

It will point to a static map.

Definition at line 378 of file eps-bearer.h.

Referenced by GetPacketDelayBudgetMs(), GetPacketErrorLossRate(), GetPriority(), GetResourceType(), and SetRelease().

◆ qci


The documentation for this class was generated from the following files: