5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-epc-x2-sap.h
1// Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Author: Manuel Requena <manuel.requena@cttc.es>
6
7#ifndef NR_EPC_X2_SAP_H
8#define NR_EPC_X2_SAP_H
9
10#include "nr-eps-bearer.h"
11
12#include "ns3/ipv4-address.h"
13#include "ns3/packet.h"
14
15#include <bitset>
16
17namespace ns3
18{
19
20class Node;
21
37{
38 public:
39 virtual ~NrEpcX2Sap() = default;
40
59
66 {
67 uint16_t erabId;
68 uint32_t ulGtpTeid;
69 uint32_t dlGtpTeid;
70 };
71
78 {
79 uint16_t erabId;
80 uint16_t cause;
81 };
82
88 static const uint16_t m_maxPdcpSn = 4096;
89
92 {
93 uint16_t erabId;
94 std::bitset<m_maxPdcpSn> receiveStatusOfUlPdcpSdus;
95 uint16_t ulPdcpSn;
96 uint32_t ulHfn;
97 uint16_t dlPdcpSn;
98 uint32_t dlHfn;
99 };
100
107 {
108 HighInterference,
109 MediumInterference,
110 LowInterference
111 };
112
124
134 {
135 std::vector<bool> rntpPerPrbList;
136 int16_t rntpThreshold{INT16_MIN};
137 uint16_t antennaPorts{UINT16_MAX};
138 uint16_t pB{UINT16_MAX};
139 uint16_t pdcchInterferenceImpact{UINT16_MAX};
140 };
141
148 {
149 uint16_t sourceCellId;
150 std::vector<UlInterferenceOverloadIndicationItem>
152 std::vector<UlHighInterferenceInformationItem>
155 };
156
163 {
164 LowLoad,
165 MediumLoad,
166 HighLoad,
167 Overload
168 };
169
180
206
209 {
210 HandoverDesirableForRadioReason,
211 TimeCriticalHandover
212 };
213
220 {
221 uint16_t oldGnbUeX2apId;
222 uint16_t cause;
223 uint16_t sourceCellId;
224 uint16_t targetCellId;
225 uint32_t mmeUeS1apId;
228 std::vector<ErabToBeSetupItem> bearers;
229 Ptr<Packet> rrcContext;
230 };
231
238 {
239 uint16_t oldGnbUeX2apId;
240 uint16_t newGnbUeX2apId;
241 uint16_t sourceCellId;
242 uint16_t targetCellId;
243 std::vector<ErabAdmittedItem> admittedBearers;
244 std::vector<ErabNotAdmittedItem> notAdmittedBearers;
245 Ptr<Packet> rrcContext;
246 };
247
261
268 {
269 uint16_t oldGnbUeX2apId;
270 uint16_t newGnbUeX2apId;
271 uint16_t sourceCellId;
272 uint16_t targetCellId;
273 std::vector<ErabsSubjectToStatusTransferItem>
275 };
276
283 {
284 uint16_t oldGnbUeX2apId;
285 uint16_t newGnbUeX2apId;
286 uint16_t sourceCellId;
287 uint16_t targetCellId;
288 };
289
296 {
297 uint16_t targetCellId{UINT16_MAX};
298 std::vector<CellInformationItem> cellInformationList;
299 };
300
307 {
308 uint16_t targetCellId;
311 std::vector<CellMeasurementResultItem>
313 };
314
322 {
323 uint16_t sourceCellId;
324 uint16_t targetCellId;
325 uint32_t gtpTeid;
326 Ptr<Packet> ueData;
327 };
328
335 {
336 uint16_t oldGnbUeX2apId;
337 uint16_t newGnbUeX2apId;
338 uint16_t sourceCellId;
339 uint16_t targetCellId;
340 uint16_t cause;
341 };
342};
343
349{
350 public:
351 //
352 // Service primitives
353 //
354
360
366
372
378
384
390
396
401 virtual void SendUeData(UeDataParams params) = 0;
402
407 virtual void SendHandoverCancel(HandoverCancelParams params) = 0;
408};
409
415{
416 public:
417 /*
418 * Service primitives
419 */
420
426
432
438
444
450
456
462
467 virtual void RecvUeData(UeDataParams params) = 0;
468
474 virtual void RecvHandoverCancel(HandoverCancelParams params) = 0;
475};
476
478
482template <class C>
484{
485 public:
492
493 // Delete default constructor to avoid misuse
495
496 //
497 // Interface implemented from NrEpcX2SapProvider
498 //
499
504 void SendHandoverRequest(HandoverRequestParams params) override;
505
511
517
522 void SendSnStatusTransfer(SnStatusTransferParams params) override;
523
528 void SendUeContextRelease(UeContextReleaseParams params) override;
529
534 void SendLoadInformation(LoadInformationParams params) override;
535
541
546 void SendUeData(UeDataParams params) override;
547
552 void SendHandoverCancel(HandoverCancelParams params) override;
553
554 private:
555 C* m_x2;
556};
557
558template <class C>
563
564template <class C>
565void
567{
568 m_x2->DoSendHandoverRequest(params);
569}
570
571template <class C>
572void
574{
575 m_x2->DoSendHandoverRequestAck(params);
576}
577
578template <class C>
579void
582{
583 m_x2->DoSendHandoverPreparationFailure(params);
584}
585
586template <class C>
587void
589{
590 m_x2->DoSendSnStatusTransfer(params);
591}
592
593template <class C>
594void
596{
597 m_x2->DoSendUeContextRelease(params);
598}
599
600template <class C>
601void
603{
604 m_x2->DoSendLoadInformation(params);
605}
606
607template <class C>
608void
610{
611 m_x2->DoSendResourceStatusUpdate(params);
612}
613
614template <class C>
615void
617{
618 m_x2->DoSendUeData(params);
619}
620
621template <class C>
622void
624{
625 m_x2->DoSendHandoverCancel(params);
626}
627
631template <class C>
633{
634 public:
641
642 // Delete default constructor to avoid misuse
644
645 //
646 // Interface implemented from NrEpcX2SapUser
647 //
648
653 void RecvHandoverRequest(HandoverRequestParams params) override;
654
660
666
671 void RecvSnStatusTransfer(SnStatusTransferParams params) override;
672
677 void RecvUeContextRelease(UeContextReleaseParams params) override;
678
683 void RecvLoadInformation(LoadInformationParams params) override;
684
690
695 void RecvUeData(UeDataParams params) override;
696
702 void RecvHandoverCancel(HandoverCancelParams params) override;
703
704 private:
705 C* m_rrc;
706};
707
708template <class C>
713
714template <class C>
715void
717{
718 m_rrc->DoRecvHandoverRequest(params);
719}
720
721template <class C>
722void
724{
725 m_rrc->DoRecvHandoverRequestAck(params);
726}
727
728template <class C>
729void
732{
733 m_rrc->DoRecvHandoverPreparationFailure(params);
734}
735
736template <class C>
737void
739{
740 m_rrc->DoRecvSnStatusTransfer(params);
741}
742
743template <class C>
744void
746{
747 m_rrc->DoRecvUeContextRelease(params);
748}
749
750template <class C>
751void
753{
754 m_rrc->DoRecvLoadInformation(params);
755}
756
757template <class C>
758void
760{
761 m_rrc->DoRecvResourceStatusUpdate(params);
762}
763
764template <class C>
765void
767{
768 m_rrc->DoRecvUeData(params);
769}
770
771template <class C>
772void
774{
775 m_rrc->DoRecvHandoverCancel(params);
776}
777
778} // namespace ns3
779
780#endif // NR_EPC_X2_SAP_H
Common structures for NrEpcX2SapProvider and NrEpcX2SapUser.
IdCause
Cause ID enumeration.
static const uint16_t m_maxPdcpSn
virtual void SendResourceStatusUpdate(ResourceStatusUpdateParams params)=0
virtual void SendLoadInformation(LoadInformationParams params)=0
virtual void SendHandoverRequest(HandoverRequestParams params)=0
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
virtual void SendUeData(UeDataParams params)=0
virtual void SendSnStatusTransfer(SnStatusTransferParams params)=0
virtual void SendHandoverCancel(HandoverCancelParams params)=0
Send handover Cancel to the target gNB.
virtual void SendUeContextRelease(UeContextReleaseParams params)=0
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)=0
virtual void RecvUeData(UeDataParams params)=0
virtual void RecvUeContextRelease(UeContextReleaseParams params)=0
virtual void RecvResourceStatusUpdate(ResourceStatusUpdateParams params)=0
virtual void RecvHandoverCancel(HandoverCancelParams params)=0
virtual void RecvHandoverRequestAck(HandoverRequestAckParams params)=0
virtual void RecvLoadInformation(LoadInformationParams params)=0
virtual void RecvSnStatusTransfer(SnStatusTransferParams params)=0
virtual void RecvHandoverRequest(HandoverRequestParams params)=0
virtual void RecvHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
void SendHandoverPreparationFailure(HandoverPreparationFailureParams params) override
void SendUeData(UeDataParams params) override
void SendUeContextRelease(UeContextReleaseParams params) override
void SendHandoverRequestAck(HandoverRequestAckParams params) override
void SendLoadInformation(LoadInformationParams params) override
void SendHandoverCancel(HandoverCancelParams params) override
Send handover Cancel to the target gNB.
void SendResourceStatusUpdate(ResourceStatusUpdateParams params) override
void SendHandoverRequest(HandoverRequestParams params) override
void SendSnStatusTransfer(SnStatusTransferParams params) override
void RecvHandoverRequest(HandoverRequestParams params) override
void RecvHandoverCancel(HandoverCancelParams params) override
void RecvLoadInformation(LoadInformationParams params) override
void RecvResourceStatusUpdate(ResourceStatusUpdateParams params) override
void RecvSnStatusTransfer(SnStatusTransferParams params) override
void RecvHandoverPreparationFailure(HandoverPreparationFailureParams params) override
void RecvHandoverRequestAck(HandoverRequestAckParams params) override
void RecvUeContextRelease(UeContextReleaseParams params) override
void RecvUeData(UeDataParams params) override
This class contains the specification of EPS Bearers.
uint16_t sourceCellId
source cell ID
std::vector< UlInterferenceOverloadIndicationItem > ulInterferenceOverloadIndicationList
UL interference overload indication list.
RelativeNarrowbandTxBand relativeNarrowbandTxBand
relative narrow transmit band
std::vector< UlHighInterferenceInformationItem > ulHighInterferenceInformationList
UL high interference information list.
uint16_t dlTotalPrbUsage
DL Total PRB usage.
uint16_t dlNonGbrPrbUsage
DL Non GBR PRB usage.
LoadIndicator ulHardwareLoadIndicator
UL hardware load indicator.
LoadIndicator dlHardwareLoadIndicator
DL hardware load indicator.
CompositeAvailCapacity ulCompositeAvailableCapacity
UL composite available capacity.
uint16_t ulTotalPrbUsage
UL Total PRB usage.
CompositeAvailCapacity dlCompositeAvailableCapacity
DL composite available capacity.
LoadIndicator ulS1TnlLoadIndicator
UL S1 TNL load indicator.
LoadIndicator dlS1TnlLoadIndicator
DL S1 TNL load indicator.
uint16_t ulNonGbrPrbUsage
UL Non GBR PRB usage.
uint16_t cellCapacityClassValue
cell capacity class value
uint32_t ulGtpTeid
uplink GTP TEID
uint32_t dlGtpTeid
downlink GTP TEID
NrEpsBearer erabLevelQosParameters
E-RAB level QOS parameters.
Ipv4Address transportLayerAddress
transport layer address
ErabsSubjectToStatusTransferItem structure.
std::bitset< m_maxPdcpSn > receiveStatusOfUlPdcpSdus
receive status of UL PDCP SDUs
Parameters of the HANDOVER CANCEL message.
uint16_t oldGnbUeX2apId
old gNB UE X2 AP ID
uint16_t newGnbUeX2apId
new gNB UE X2 AP ID
Parameters of the HANDOVER PREPARATION FAILURE message.
uint16_t criticalityDiagnostics
criticality diagnostics
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
std::vector< ErabNotAdmittedItem > notAdmittedBearers
not admitted bearers
uint16_t newGnbUeX2apId
new gNB UE X2 AP ID
uint16_t oldGnbUeX2apId
old gNB UE X2 AP ID
std::vector< ErabAdmittedItem > admittedBearers
admitted bearers
Parameters of the HANDOVER REQUEST message.
uint64_t ueAggregateMaxBitRateDownlink
UE aggregate max bit rate downlink.
uint32_t mmeUeS1apId
MME UE S1 AP ID.
std::vector< ErabToBeSetupItem > bearers
bearers
Ptr< Packet > rrcContext
RRC context.
uint64_t ueAggregateMaxBitRateUplink
UE aggregate max bit rate uplink.
uint16_t oldGnbUeX2apId
old gNB UE X2 AP ID
Parameters of the LOAD INFORMATION message.
std::vector< CellInformationItem > cellInformationList
cell information list
uint16_t pdcchInterferenceImpact
PDC channel interference list.
std::vector< bool > rntpPerPrbList
RNTP per prb list.
Parameters of the RESOURCE STATUS UPDATE message.
std::vector< CellMeasurementResultItem > cellMeasurementResultList
cell measurement result list
uint16_t gnb1MeasurementId
gNB1 measurement ID
uint16_t gnb2MeasurementId
gNB2 measurement ID
Parameters of the SN STATUS TRANSFER message.
std::vector< ErabsSubjectToStatusTransferItem > erabsSubjectToStatusTransferList
ERABs subject to status transfer list.
uint16_t oldGnbUeX2apId
old gNB UE X2 AP ID
uint16_t newGnbUeX2apId
new gNB UE X2 AP ID
Parameters of the UE CONTEXT RELEASE message.
uint16_t oldGnbUeX2apId
old gNB UE X2 AP ID
uint16_t newGnbUeX2apId
new gNB UE X2 AP ID
Parameters of the UE DATA primitive.
uint16_t targetCellId
target cell ID
uint16_t sourceCellId
source cell ID
Ptr< Packet > ueData
UE data.
std::vector< bool > ulHighInterferenceIndicationList
UL high interference indication list.