5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-eps-bearer.h
1// Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Author: Nicola Baldo <nbaldo@cttc.es>
6
7#ifndef NR_EPS_BEARER
8#define NR_EPS_BEARER
9
10#include "ns3/object-base.h"
11#include "ns3/uinteger.h"
12
13#include <unordered_map>
14
15namespace ns3
16{
17
23{
28
29 uint64_t gbrDl;
30 uint64_t gbrUl;
31 uint64_t mbrDl;
32 uint64_t mbrUl;
33};
34
49
77class NrEpsBearer : public ObjectBase
78{
79 public:
84 static TypeId GetTypeId();
85
86 TypeId GetInstanceTypeId() const override;
87
137
139
142
147 NrEpsBearer();
148
154 NrEpsBearer(Qci x);
155
163
168 NrEpsBearer(const NrEpsBearer& o);
169
173 ~NrEpsBearer() override
174 {
175 }
176
189 void SetRelease(uint8_t release);
190
195 uint8_t GetRelease() const
196 {
197 return m_release;
198 }
199
204 uint8_t GetResourceType() const;
205
211 uint8_t GetPriority() const;
212
220 uint16_t GetPacketDelayBudgetMs() const;
221
229 double GetPacketErrorLossRate() const;
230
231 private:
238 using BearerRequirementsMap =
239 std::unordered_map<Qci, std::tuple<uint8_t, uint8_t, uint16_t, double, uint32_t, uint32_t>>;
240
247 static uint8_t GetResourceType(const BearerRequirementsMap& map, Qci qci)
248 {
249 return std::get<0>(map.at(qci));
250 }
251
258 static uint8_t GetPriority(const BearerRequirementsMap& map, Qci qci)
259 {
260 return std::get<1>(map.at(qci));
261 }
262
269 static uint16_t GetPacketDelayBudgetMs(const BearerRequirementsMap& map, Qci qci)
270 {
271 return std::get<2>(map.at(qci));
272 }
273
280 static double GetPacketErrorLossRate(const BearerRequirementsMap& map, Qci qci)
281 {
282 return std::get<3>(map.at(qci));
283 }
284
291 static uint32_t GetMaxDataBurst(const BearerRequirementsMap& map, Qci qci)
292 {
293 return std::get<4>(map.at(qci));
294 }
295
302 static uint32_t GetAvgWindow(const BearerRequirementsMap& map, Qci qci)
303 {
304 return std::get<5>(map.at(qci));
305 }
306
318 static const BearerRequirementsMap& GetRequirementsRel11();
319
331 static const BearerRequirementsMap& GetRequirementsRel15();
332
337 static const BearerRequirementsMap& GetRequirementsRel18();
338
344 BearerRequirementsMap m_requirements;
345
346 uint8_t m_release{30};
347};
348
349} // namespace ns3
350
351#endif // NR_EPS_BEARER
This class contains the specification of EPS Bearers.
uint16_t GetPacketDelayBudgetMs() const
uint8_t GetRelease() const
GetRelease.
Qci qci
Qos class indicator.
NrGbrQosInformation gbrQosInfo
GBR QOS information.
void SetRelease(uint8_t release)
SetRelease.
uint8_t GetPriority() const
~NrEpsBearer() override
Deconstructor.
uint8_t GetResourceType() const
double GetPacketErrorLossRate() const
@ NGBR_LOW_LAT_EMBB
Non-GBR Low Latency eMBB applications.
@ DGBR_VISUAL_CONTENT_89
Delay-Critical GBR Visual Content for cloud/edge/split rendering (TS 23.501)
@ GBR_V2X
GBR V2X Messages.
@ NGBR_V2X
Non-GBR V2X Messages.
@ GBR_NMC_PUSH_TO_TALK
GBR Non-Mission-Critical User Plane Push To Talk voice.
@ GBR_LIVE_UL_71
GBR Live UL streaming.
@ NGBR_MC_DELAY_SIGNAL
Non-GBR Mission Critical Delay Sensitive Signalling (e.g., MC-PTT)
@ DGBR_DISCRETE_AUT_SMALL
Delay-Critical GBR Discrete Automation Small Packets (TS 22.261)
@ GBR_CONV_VOICE
GBR Conversational Voice.
@ NGBR_VOICE_VIDEO_GAMING
Non-GBR Voice, Video, Interactive Streaming.
@ GBR_LIVE_UL_76
GBR Live UL streaming.
@ NGBR_VIDEO_TCP_OPERATOR
Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)
@ GBR_GAMING
GBR Real Time Gaming.
@ GBR_CONV_VIDEO
GBR Conversational Video (Live streaming)
@ GBR_LIVE_UL_72
GBR Live UL streaming.
@ DGBR_INTER_SERV_88
Delay-Critical GBR Interactive Service - Motion tracking data (TS 23.501)
@ DGBR_V2X
Delay-Critical GBR V2X Messages (TS 23.501)
@ NGBR_VIDEO_TCP_DEFAULT
Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)
@ DGBR_VISUAL_CONTENT_90
Delay-Critical GBR Visual Content for cloud/edge/split rendering (TS 23.501)
@ DGBR_ITS
Delay-Critical GBR Intelligent Transport Systems (TS 22.261)
@ NGBR_IMS
Non-GBR IMS Signalling.
@ NGBR_MC_DATA
Non-GBR Mission Critical Data.
@ GBR_MC_VIDEO
GBR Mission Critical Video User Plane.
@ DGBR_INTER_SERV_87
Delay-Critical GBR Interactive Service - Motion tracking data (TS 23.501)
@ NGBR_VIDEO_TCP_PREMIUM
Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)
@ GBR_LIVE_UL_74
GBR Live UL streaming.
@ GBR_LIVE_UL_73
GBR Live UL streaming.
@ DGBR_ELECTRICITY
Delay-Critical GBR Electricity Distribution High Voltage (TS 22.261)
@ 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)
NrAllocationRetentionPriority arp
allocation retention priority
static TypeId GetTypeId()
Get the type ID.
bool preemptionCapability
true if bearer can preempt others
uint8_t priorityLevel
1-15; 1 = highest
bool preemptionVulnerability
true if bearer can be preempted by others