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 , 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 (const EpsBearer &o) | |
EpsBearer copy constructor. More... | |
EpsBearer (Qci x) | |
EpsBearer (Qci x, GbrQosInformation y) | |
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 >, 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 BearerRequirementsMap * | GetRequirementsRel11 () |
Retrieve requirements for Rel. More... | |
static BearerRequirementsMap * | GetRequirementsRel15 () |
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... | |
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 (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
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.
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.
|
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.
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.
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().
ns3::EpsBearer::EpsBearer | ( | Qci | x | ) |
x | the QoS Class Indicator |
Definition at line 76 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 83 of file eps-bearer.cc.
References ns3::ObjectBase::ConstructSelf().
ns3::EpsBearer::EpsBearer | ( | const EpsBearer & | o | ) |
EpsBearer copy constructor.
o | other instance |
Definition at line 90 of file eps-bearer.cc.
References ns3::ObjectBase::ConstructSelf(), gbrQosInfo, and qci.
|
inlinevirtual |
Deconstructor.
Definition at line 164 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 291 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 63 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 283 of file eps-bearer.h.
References qci.
uint16_t ns3::EpsBearer::GetPacketDelayBudgetMs | ( | ) | const |
Definition at line 131 of file eps-bearer.cc.
References m_requirements, and qci.
|
inlinestaticprivate |
Get packet delay in ms for the selected QCI.
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 267 of file eps-bearer.h.
References qci.
double ns3::EpsBearer::GetPacketErrorLossRate | ( | ) | const |
Definition at line 137 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 275 of file eps-bearer.h.
References qci.
uint8_t ns3::EpsBearer::GetPriority | ( | void | ) | const |
Definition at line 125 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 259 of file eps-bearer.h.
References qci.
|
inline |
GetRelease.
Definition at line 184 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 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().
|
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 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().
|
static |
Get the type ID.
Definition at line 45 of file eps-bearer.cc.
References GetRelease(), ns3::MakeUintegerAccessor(), ns3::TypeId::SetParent(), and SetRelease().
Referenced by GetInstanceTypeId().
bool ns3::EpsBearer::IsGbr | ( | ) | const |
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().
|
inlinestaticprivate |
Is the selected QCI GBR?
map | Map between QCI and requirements |
qci | QCI to look for |
Definition at line 250 of file eps-bearer.h.
References qci.
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 98 of file eps-bearer.cc.
References GetRequirementsRel11(), GetRequirementsRel15(), m_release, m_requirements, NS_FATAL_ERROR, and ns3::release.
Referenced by GetTypeId().
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().
GbrQosInformation ns3::EpsBearer::gbrQosInfo |
GBR QOS information.
Definition at line 131 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)
Definition at line 326 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 324 of file eps-bearer.h.
Referenced by GetPacketDelayBudgetMs(), GetPacketErrorLossRate(), GetPriority(), IsGbr(), and SetRelease().
enum ns3::EpsBearer::Qci ns3::EpsBearer::qci |
Qos class indicator.
Referenced by EpsBearer(), ns3::GtpcIes::DeserializeBearerQos(), ns3::NoOpComponentCarrierManager::DoSetupDataRadioBearer(), GetAvgWindow(), ns3::LteEnbRrc::GetLogicalChannelPriority(), GetMaxDataBurst(), GetPacketDelayBudgetMs(), GetPacketErrorLossRate(), GetPriority(), IsGbr(), and ns3::GtpcIes::SerializeBearerQos().