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,
  NGBR_IMS = 5, NGBR_VIDEO_TCP_OPERATOR = 6, NGBR_VOICE_VIDEO_GAMING = 7, NGBR_VIDEO_TCP_PREMIUM = 8,
  NGBR_VIDEO_TCP_DEFAULT = 9, NGBR_MC_DELAY_SIGNAL = 69, NGBR_MC_DATA = 70, NGBR_V2X = 79,
  NGBR_LOW_LAT_EMBB = 80, DGBR_DISCRETE_AUT_SMALL = 82, DGBR_DISCRETE_AUT_LARGE = 83, DGBR_ITS = 84,
  DGBR_ELECTRICITY = 85
}
 QoS Class Indicator. More...
 

Public Member Functions

 EpsBearer ()
 Default constructor. More...
 
 EpsBearer (Qci x)
 
 EpsBearer (Qci x, GbrQosInformation y)
 
 EpsBearer (const EpsBearer &o)
 EpsBearer copy constructor. More...
 
virtual ~EpsBearer ()
 Deconstructor. More...
 
virtual TypeId GetInstanceTypeId (void) 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...
 
bool IsGbr () 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 erros. 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 (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Public Attributes

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

Private Types

typedef std::unordered_map< Qci, std::tuple< bool, 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 BearerRequirementsMapGetRequirementsRel11 ()
 Retrieve requirements for Rel. More...
 
static BearerRequirementsMapGetRequirementsRel15 ()
 Retrieve requirements for Rel. More...
 
static uint32_t IsGbr (const BearerRequirementsMap &map, Qci qci)
 Is the selected QCI GBR? More...
 

Private Attributes

uint8_t m_release {30}
 Release (10 or 15) More...
 
BearerRequirementsMapm_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 (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

This class contains the specification of EPS Bearers.


Introspection did not find any typical Config paths.

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 15. However, we do not support intermediate types: in other words, you can select from Release 8 to Release 11, or Release 15. 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.


Attributes

  • Release: Change from 11 to 15 if you need bearer definition as per Release 15. Reference document: TS 23.203. The change does not impact other LTE code than bearers definition.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 11
    • Flags: construct write read

No TraceSources are defined for this type.
Size of this type is 72 bytes (on a 64-bit architecture).

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

Member Typedef Documentation

◆ BearerRequirementsMap

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

Map between QCI and requirements.

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

Definition at line 241 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 15.

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.

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)

Definition at line 106 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 68 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 76 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 83 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 90 of file eps-bearer.cc.

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

+ Here is the call graph for this function:

◆ ~EpsBearer()

virtual ns3::EpsBearer::~EpsBearer ( )
inlinevirtual

Deconstructor.

Definition at line 164 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 291 of file eps-bearer.h.

References qci.

◆ GetInstanceTypeId()

TypeId ns3::EpsBearer::GetInstanceTypeId ( void  ) 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 63 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 283 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 131 of file eps-bearer.cc.

References m_requirements, and qci.

◆ 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 267 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 137 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 275 of file eps-bearer.h.

References qci.

◆ GetPriority() [1/2]

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

Definition at line 125 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 259 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 184 of file eps-bearer.h.

References m_release.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetRequirementsRel11()

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 143 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()

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 174 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:

◆ GetTypeId()

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

Get the type ID.

Returns
the object TypeId

Definition at line 45 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:

◆ IsGbr() [1/2]

bool ns3::EpsBearer::IsGbr ( ) const
Returns
true if the EPS Bearer is a Guaranteed Bit Rate bearer, false otherwise

Definition at line 119 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:

◆ IsGbr() [2/2]

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

Is the selected QCI GBR?

Parameters
mapMap between QCI and requirements
qciQCI to look for
Returns
GBR flag for the selected CQI

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

References qci.

◆ 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 98 of file eps-bearer.cc.

References GetRequirementsRel11(), GetRequirementsRel15(), 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 132 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)

Definition at line 326 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 324 of file eps-bearer.h.

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

◆ qci


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