This class contains the specification of EPS Bearers. More...
#include "eps-bearer.h"
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 >, QciHash > | BearerRequirementsMap |
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 BearerRequirementsMap & | GetRequirementsRel11 () |
Retrieve requirements for Rel. More... | |
static const BearerRequirementsMap & | GetRequirementsRel15 () |
Retrieve requirements for Rel. More... | |
static const BearerRequirementsMap & | GetRequirementsRel18 () |
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... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
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.
|
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.
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.
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().
ns3::EpsBearer::EpsBearer | ( | Qci | x | ) |
x | the QoS Class Indicator |
Definition at line 77 of file eps-bearer.cc.
References ns3::ObjectBase::ConstructSelf().
ns3::EpsBearer::EpsBearer | ( | Qci | x, |
GbrQosInformation | y | ||
) |
x | the QoS Class Indicator |
y | the GbrQosInformation |
Definition at line 84 of file eps-bearer.cc.
References ns3::ObjectBase::ConstructSelf().
ns3::EpsBearer::EpsBearer | ( | const EpsBearer & | o | ) |
EpsBearer copy constructor.
o | other instance |
Definition at line 92 of file eps-bearer.cc.
References ns3::ObjectBase::ConstructSelf(), gbrQosInfo, and qci.
|
inlineoverride |
Deconstructor.
Definition at line 186 of file eps-bearer.h.
|
inlinestaticprivate |
Get default averaging window for the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 336 of file eps-bearer.h.
References qci.
|
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.
Implements ns3::ObjectBase.
Definition at line 65 of file eps-bearer.cc.
References GetTypeId().
|
inlinestaticprivate |
Get maximum data burst for the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 325 of file eps-bearer.h.
References qci.
uint16_t ns3::EpsBearer::GetPacketDelayBudgetMs | ( | ) | const |
Definition at line 138 of file eps-bearer.cc.
References m_requirements, and qci.
Referenced by ns3::UeManager::SetupDataRadioBearer().
|
inlinestaticprivate |
Get packet delay in ms for the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 303 of file eps-bearer.h.
References qci.
double ns3::EpsBearer::GetPacketErrorLossRate | ( | ) | const |
Definition at line 144 of file eps-bearer.cc.
References m_requirements, and qci.
Referenced by ns3::LteEnbRrc::GetRlcType().
|
inlinestaticprivate |
Get packet error rate for the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 314 of file eps-bearer.h.
References qci.
uint8_t ns3::EpsBearer::GetPriority | ( | ) | const |
Definition at line 132 of file eps-bearer.cc.
References m_requirements, and qci.
|
inlinestaticprivate |
Get priority for the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 292 of file eps-bearer.h.
References qci.
|
inline |
GetRelease.
Definition at line 208 of file eps-bearer.h.
References m_release.
Referenced by GetTypeId().
|
staticprivate |
Retrieve requirements for Rel.
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().
|
staticprivate |
Retrieve requirements for Rel.
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().
|
staticprivate |
Retrieve requirements for Rel.
18
Definition at line 208 of file eps-bearer.cc.
References DGBR_DISCRETE_AUT_LARGE, DGBR_DISCRETE_AUT_SMALL, DGBR_ELECTRICITY, DGBR_INTER_SERV_87, DGBR_INTER_SERV_88, DGBR_ITS, DGBR_V2X, DGBR_VISUAL_CONTENT_89, DGBR_VISUAL_CONTENT_90, GBR_CONV_VIDEO, GBR_CONV_VOICE, GBR_GAMING, GBR_LIVE_UL_71, GBR_LIVE_UL_72, GBR_LIVE_UL_73, GBR_LIVE_UL_74, GBR_LIVE_UL_76, 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().
uint8_t ns3::EpsBearer::GetResourceType | ( | ) | const |
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().
|
inlinestaticprivate |
Get the resource type (NON-GBR, GBR, DC-GBR) of the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 281 of file eps-bearer.h.
References qci.
|
static |
Get the type ID.
Definition at line 46 of file eps-bearer.cc.
References GetRelease(), ns3::MakeUintegerAccessor(), ns3::TypeId::SetParent(), and SetRelease().
Referenced by GetInstanceTypeId().
void ns3::EpsBearer::SetRelease | ( | uint8_t | release | ) |
SetRelease.
release | The 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().
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().
GbrQosInformation ns3::EpsBearer::gbrQosInfo |
GBR QOS information.
Definition at line 153 of file eps-bearer.h.
Referenced by EpsBearer(), ns3::EpcX2HandoverRequestHeader::Deserialize(), ns3::GtpcIes::DeserializeBearerQos(), ns3::NoOpComponentCarrierManager::DoSetupDataRadioBearer(), ns3::GtpcIes::SerializeBearerQos(), and ns3::UeManager::SetupDataRadioBearer().
|
private |
Release (10 or 15 or 18)
Definition at line 380 of file eps-bearer.h.
Referenced by GetRelease(), and SetRelease().
|
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 ns3::EpsBearer::qci |
Qos class indicator.
Definition at line 151 of file eps-bearer.h.
Referenced by EpsBearer(), ns3::GtpcIes::DeserializeBearerQos(), ns3::NoOpComponentCarrierManager::DoSetupDataRadioBearer(), GetAvgWindow(), ns3::LteEnbRrc::GetLogicalChannelPriority(), GetMaxDataBurst(), GetPacketDelayBudgetMs(), GetPacketErrorLossRate(), GetPriority(), GetResourceType(), and ns3::GtpcIes::SerializeBearerQos().