22 #include <ns3/fatal-error.h>
23 #include <ns3/attribute-construction-list.h>
39 preemptionCapability (false),
40 preemptionVulnerability (false)
51 .AddAttribute (
"Release",
"Change from 11 to 15 if you need bearer definition as per Release 15."
52 " Reference document: TS 23.203. The change does not impact other LTE code than "
53 " bearers definition.",
57 MakeUintegerChecker<uint32_t> ())
70 qci (NGBR_VIDEO_TCP_DEFAULT)
85 qci (
x), gbrQosInfo (y)
113 " please use a value between 8 and 11, or 15");
158 if (ret.size () == 0)
160 ret.insert (std::make_pair (
GBR_CONV_VOICE, std::make_tuple (
true, 2, 100, 1.0e-2, 0, 0)));
161 ret.insert (std::make_pair (
GBR_CONV_VIDEO, std::make_tuple (
true, 4, 150, 1.0e-3, 0, 0)));
162 ret.insert (std::make_pair (
GBR_GAMING, std::make_tuple (
true, 3, 50, 1.0e-3, 0, 0)));
163 ret.insert (std::make_pair (
GBR_NON_CONV_VIDEO, std::make_tuple (
true, 5, 300, 1.0e-6, 0, 0)));
164 ret.insert (std::make_pair (
NGBR_IMS, std::make_tuple (
false, 1, 100, 1.0e-6, 0, 0)));
179 if (ret.size () == 0)
181 ret.insert (std::make_pair (
GBR_CONV_VOICE, std::make_tuple (
true, 20, 100, 1.0e-2, 0, 2000)));
182 ret.insert (std::make_pair (
GBR_CONV_VIDEO, std::make_tuple (
true, 40, 150, 1.0e-3, 0, 2000)));
183 ret.insert (std::make_pair (
GBR_GAMING, std::make_tuple (
true, 30, 50, 1.0e-3, 0, 2000)));
184 ret.insert (std::make_pair (
GBR_NON_CONV_VIDEO, std::make_tuple (
true, 50, 300, 1.0e-6, 0, 2000)));
185 ret.insert (std::make_pair (
GBR_MC_PUSH_TO_TALK, std::make_tuple (
true, 7, 75, 1.0e-2, 0, 2000)));
186 ret.insert (std::make_pair (
GBR_NMC_PUSH_TO_TALK, std::make_tuple (
true, 20, 100, 1.0e-2, 0, 2000)));
187 ret.insert (std::make_pair (
GBR_MC_VIDEO, std::make_tuple (
true, 15, 100, 1.0e-3, 0, 2000)));
188 ret.insert (std::make_pair (
GBR_V2X, std::make_tuple (
true, 25, 50, 1.0e-2, 0, 2000)));
189 ret.insert (std::make_pair (
NGBR_IMS, std::make_tuple (
false, 10, 100, 1.0e-6, 0, 0)));
194 ret.insert (std::make_pair (
NGBR_MC_DELAY_SIGNAL, std::make_tuple (
false, 5, 60, 1.0e-6, 0, 0)));
195 ret.insert (std::make_pair (
NGBR_MC_DATA, std::make_tuple (
false, 55, 200, 1.0e-6, 0, 0)));
196 ret.insert (std::make_pair (
NGBR_V2X, std::make_tuple (
false, 65, 5, 1.0e-2, 0, 0)));
197 ret.insert (std::make_pair (
NGBR_LOW_LAT_EMBB, std::make_tuple (
false, 68, 10, 1.0e-6, 0, 0)));
200 ret.insert (std::make_pair (
DGBR_ITS, std::make_tuple (
false, 24, 30, 1.0e-5, 1354, 2000)));
201 ret.insert (std::make_pair (
DGBR_ELECTRICITY, std::make_tuple (
false, 21, 5, 1.0e-5, 255, 2000)));
List of Attribute name, value and checker triples used to construct Objects.
This class contains the specification of EPS Bearers.
static BearerRequirementsMap * GetRequirementsRel15()
Retrieve requirements for Rel.
void SetRelease(uint8_t release)
SetRelease.
std::unordered_map< Qci, std::tuple< bool, uint8_t, uint16_t, double, uint32_t, uint32_t >, QciHash > BearerRequirementsMap
Map between QCI and requirements.
static BearerRequirementsMap * GetRequirementsRel11()
Retrieve requirements for Rel.
BearerRequirementsMap * m_requirements
Requirements pointer per bearer.
uint8_t GetPriority() const
uint8_t GetRelease() const
GetRelease.
static TypeId GetTypeId(void)
Get the type ID.
enum ns3::EpsBearer::Qci qci
Qos class indicator.
uint16_t GetPacketDelayBudgetMs() const
double GetPacketErrorLossRate() const
GbrQosInformation gbrQosInfo
GBR QOS information.
virtual TypeId GetInstanceTypeId(void) const override
Get the most derived TypeId for this Object.
uint8_t m_release
Release (10 or 15)
EpsBearer()
Default constructor.
@ GBR_CONV_VOICE
GBR Conversational Voice.
@ NGBR_VIDEO_TCP_DEFAULT
Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)
@ DGBR_DISCRETE_AUT_LARGE
Delay-Critical GBR Discrete Automation Large Packets (TS 22.261)
@ GBR_MC_PUSH_TO_TALK
GBR Mission Critical User Plane Push To Talk voice.
@ GBR_NON_CONV_VIDEO
GBR Non-Conversational Video (Buffered Streaming)
@ GBR_V2X
GBR V2X Messages.
@ GBR_GAMING
GBR Real Time Gaming.
@ GBR_MC_VIDEO
GBR Mission Critical Video User Plane.
@ DGBR_ITS
Delay-Critical GBR Intelligent Transport Systems (TS 22.261)
@ NGBR_V2X
Non-GBR V2X Messages.
@ NGBR_LOW_LAT_EMBB
Non-GBR Low Latency eMBB applications.
@ GBR_CONV_VIDEO
GBR Conversational Video (Live streaming)
@ DGBR_DISCRETE_AUT_SMALL
Delay-Critical GBR Discrete Automation Small Packets (TS 22.261)
@ DGBR_ELECTRICITY
Delay-Critical GBR Electricity Distribution High Voltage (TS 22.261)
@ NGBR_VOICE_VIDEO_GAMING
Non-GBR Voice, Video, Interactive Streaming.
@ NGBR_MC_DATA
Non-GBR Mission Critical Data.
@ NGBR_VIDEO_TCP_OPERATOR
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_IMS
Non-GBR IMS Signalling.
@ NGBR_VIDEO_TCP_PREMIUM
Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)
@ GBR_NMC_PUSH_TO_TALK
GBR Non-Mission-Critical User Plane Push To Talk voice.
Anchor the ns-3 type and attribute system.
void ConstructSelf(const AttributeConstructionList &attributes)
Complete construction of ObjectBase; invoked by derived classes.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Hold an unsigned integer type.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
AllocationRetentionPriority()
Default constructor, initializes member variables to zero or equivalent.