A Discrete-Event Network Simulator
API
epc-x2-sap.h
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Author: Manuel Requena <manuel.requena@cttc.es>
19 */
20
21#ifndef EPC_X2_SAP_H
22#define EPC_X2_SAP_H
23
24#include "ns3/packet.h"
25#include "ns3/eps-bearer.h"
26#include "ns3/ipv4-address.h"
27
28#include <bitset>
29
30namespace ns3 {
31
32
33class Node;
34
50{
51public:
52 virtual ~EpcX2Sap ();
53
60 {
61 uint16_t erabId;
66
68 };
69
76 {
77 uint16_t erabId;
80 };
81
88 {
89 uint16_t erabId;
90 uint16_t cause;
91 };
92
98 static const uint16_t m_maxPdcpSn = 4096;
99
102 {
103 uint16_t erabId;
104 std::bitset<m_maxPdcpSn> receiveStatusOfUlPdcpSdus;
105 uint16_t ulPdcpSn;
107 uint16_t dlPdcpSn;
109 };
110
117 {
121 };
122
129 {
130 uint16_t targetCellId;
132 };
133
143 {
144 std::vector <bool> rntpPerPrbList;
145 int16_t rntpThreshold {INT16_MIN};
146 uint16_t antennaPorts {UINT16_MAX};
147 uint16_t pB {UINT16_MAX};
148 uint16_t pdcchInterferenceImpact {UINT16_MAX};
149 };
150
157 {
158 uint16_t sourceCellId;
159 std::vector <UlInterferenceOverloadIndicationItem> ulInterferenceOverloadIndicationList;
160 std::vector <UlHighInterferenceInformationItem> ulHighInterferenceInformationList;
162 };
163
170 {
175 };
176
183 {
185 uint16_t capacityValue;
186 };
187
194 {
195 uint16_t sourceCellId;
196
199
202
203 uint16_t dlGbrPrbUsage;
204 uint16_t ulGbrPrbUsage;
209
212 };
213
214
217 {
220 };
221
222
229 {
230 uint16_t oldEnbUeX2apId;
231 uint16_t cause;
232 uint16_t sourceCellId;
233 uint16_t targetCellId;
237 std::vector <ErabToBeSetupItem> bearers;
239 };
240
247 {
248 uint16_t oldEnbUeX2apId;
249 uint16_t newEnbUeX2apId;
250 uint16_t sourceCellId;
251 uint16_t targetCellId;
252 std::vector <ErabAdmittedItem> admittedBearers;
253 std::vector <ErabNotAdmittedItem> notAdmittedBearers;
255 };
256
263 {
264 uint16_t oldEnbUeX2apId;
265 uint16_t sourceCellId;
266 uint16_t targetCellId;
267 uint16_t cause;
269 };
270
277 {
278 uint16_t oldEnbUeX2apId;
279 uint16_t newEnbUeX2apId;
280 uint16_t sourceCellId;
281 uint16_t targetCellId;
282 std::vector <ErabsSubjectToStatusTransferItem> erabsSubjectToStatusTransferList;
283 };
284
291 {
292 uint16_t oldEnbUeX2apId;
293 uint16_t newEnbUeX2apId;
294 uint16_t sourceCellId;
295 uint16_t targetCellId;
296 };
297
304 {
305 uint16_t targetCellId {UINT16_MAX};
306 std::vector <CellInformationItem> cellInformationList;
307 };
308
315 {
316 uint16_t targetCellId;
319 std::vector <CellMeasurementResultItem> cellMeasurementResultList;
320 };
321
329 {
330 uint16_t sourceCellId;
331 uint16_t targetCellId;
334 };
335
336};
337
338
344{
345public:
346 virtual ~EpcX2SapProvider ();
347
348 //
349 // Service primitives
350 //
351
357
363
369
375
381
387
393
398 virtual void SendUeData (UeDataParams params) = 0;
399};
400
401
406class EpcX2SapUser : public EpcX2Sap
407{
408public:
409 virtual ~EpcX2SapUser ();
410
411 /*
412 * Service primitives
413 */
414
420
426
432
438
444
450
456
461 virtual void RecvUeData (UeDataParams params) = 0;
462};
463
465
469template <class C>
471{
472public:
479
480 //
481 // Interface implemented from EpcX2SapProvider
482 //
483
488 virtual void SendHandoverRequest (HandoverRequestParams params);
489
495
501
506 virtual void SendSnStatusTransfer (SnStatusTransferParams params);
507
512 virtual void SendUeContextRelease (UeContextReleaseParams params);
513
518 virtual void SendLoadInformation (LoadInformationParams params);
519
525
530 virtual void SendUeData (UeDataParams params);
531
532private:
534 C* m_x2;
535};
536
537template <class C>
539 : m_x2 (x2)
540{
541}
542
543template <class C>
545{
546}
547
548template <class C>
549void
551{
552 m_x2->DoSendHandoverRequest (params);
553}
554
555template <class C>
556void
558{
559 m_x2->DoSendHandoverRequestAck (params);
560}
561
562template <class C>
563void
565{
566 m_x2->DoSendHandoverPreparationFailure (params);
567}
568
569template <class C>
570void
572{
573 m_x2->DoSendSnStatusTransfer (params);
574}
575
576template <class C>
577void
579{
580 m_x2->DoSendUeContextRelease (params);
581}
582
583template <class C>
584void
586{
587 m_x2->DoSendLoadInformation (params);
588}
589
590template <class C>
591void
593{
594 m_x2->DoSendResourceStatusUpdate (params);
595}
596
597template <class C>
598void
600{
601 m_x2->DoSendUeData (params);
602}
603
607template <class C>
609{
610public:
617
618 //
619 // Interface implemented from EpcX2SapUser
620 //
621
626 virtual void RecvHandoverRequest (HandoverRequestParams params);
627
633
639
644 virtual void RecvSnStatusTransfer (SnStatusTransferParams params);
645
650 virtual void RecvUeContextRelease (UeContextReleaseParams params);
651
656 virtual void RecvLoadInformation (LoadInformationParams params);
657
663
668 virtual void RecvUeData (UeDataParams params);
669
670private:
672 C* m_rrc;
673};
674
675template <class C>
677 : m_rrc (rrc)
678{
679}
680
681template <class C>
683{
684}
685
686template <class C>
687void
689{
690 m_rrc->DoRecvHandoverRequest (params);
691}
692
693template <class C>
694void
696{
697 m_rrc->DoRecvHandoverRequestAck (params);
698}
699
700template <class C>
701void
703{
704 m_rrc->DoRecvHandoverPreparationFailure (params);
705}
706
707template <class C>
708void
710{
711 m_rrc->DoRecvSnStatusTransfer (params);
712}
713
714template <class C>
715void
717{
718 m_rrc->DoRecvUeContextRelease (params);
719}
720
721template <class C>
722void
724{
725 m_rrc->DoRecvLoadInformation (params);
726}
727
728template <class C>
729void
731{
732 m_rrc->DoRecvResourceStatusUpdate (params);
733}
734
735template <class C>
736void
738{
739 m_rrc->DoRecvUeData (params);
740}
741
742} // namespace ns3
743
744#endif // EPC_X2_SAP_H
The X2 SAP defines the service between the X2 entity and the RRC entity.
Definition: epc-x2-sap.h:50
static const uint16_t m_maxPdcpSn
E-RABs subject to status transfer item as it is used in the SN STATUS TRANSFER message.
Definition: epc-x2-sap.h:98
UlInterferenceOverloadIndicationItem
UL Interference OverloadIndication as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:117
LoadIndicator
Load Indicator as it is used in the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:170
virtual ~EpcX2Sap()
Definition: epc-x2-sap.cc:26
IdCause
Cause ID enumeration.
Definition: epc-x2-sap.h:217
@ TimeCriticalHandover
Definition: epc-x2-sap.h:219
@ HandoverDesirableForRadioReason
Definition: epc-x2-sap.h:218
These service primitives of this part of the X2 SAP are provided by the X2 entity and issued by RRC e...
Definition: epc-x2-sap.h:344
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)=0
Send handover request ack function.
virtual void SendHandoverRequest(HandoverRequestParams params)=0
Send handover request function.
virtual void SendResourceStatusUpdate(ResourceStatusUpdateParams params)=0
Send resource status update function.
virtual void SendSnStatusTransfer(SnStatusTransferParams params)=0
Send SN status transfer function.
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
Send handover preparation failure function.
virtual void SendUeContextRelease(UeContextReleaseParams params)=0
Send UE context release function.
virtual ~EpcX2SapProvider()
Definition: epc-x2-sap.cc:35
virtual void SendLoadInformation(LoadInformationParams params)=0
Send load information function.
virtual void SendUeData(UeDataParams params)=0
Send UE data function.
These service primitives of this part of the X2 SAP are provided by the RRC entity and issued by the ...
Definition: epc-x2-sap.h:407
virtual void RecvUeData(UeDataParams params)=0
Receive UE data function.
virtual void RecvUeContextRelease(UeContextReleaseParams params)=0
Receive UE context release function.
virtual void RecvSnStatusTransfer(SnStatusTransferParams params)=0
Receive SN status transfer function.
virtual void RecvLoadInformation(LoadInformationParams params)=0
Receive load information function.
virtual void RecvHandoverRequestAck(HandoverRequestAckParams params)=0
Receive handover request ack function.
virtual void RecvResourceStatusUpdate(ResourceStatusUpdateParams params)=0
Receive resource status update function.
virtual void RecvHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
Receive handover preparation failure function.
virtual ~EpcX2SapUser()
Definition: epc-x2-sap.cc:39
virtual void RecvHandoverRequest(HandoverRequestParams params)=0
Receive handover request function.
EpcX2SpecificEpcX2SapProvider.
Definition: epc-x2-sap.h:471
virtual void SendLoadInformation(LoadInformationParams params)
Send load information function.
Definition: epc-x2-sap.h:585
virtual void SendHandoverRequest(HandoverRequestParams params)
Send handover request function.
Definition: epc-x2-sap.h:550
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)
Send handover request ack function.
Definition: epc-x2-sap.h:557
virtual void SendUeData(UeDataParams params)
Send UE data function.
Definition: epc-x2-sap.h:599
virtual void SendResourceStatusUpdate(ResourceStatusUpdateParams params)
Send resource status update function.
Definition: epc-x2-sap.h:592
virtual void SendSnStatusTransfer(SnStatusTransferParams params)
Send SN status transfer function.
Definition: epc-x2-sap.h:571
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)
Send handover preparation failure function.
Definition: epc-x2-sap.h:564
virtual void SendUeContextRelease(UeContextReleaseParams params)
Send UE context release function.
Definition: epc-x2-sap.h:578
EpcX2SpecificEpcX2SapUser.
Definition: epc-x2-sap.h:609
virtual void RecvResourceStatusUpdate(ResourceStatusUpdateParams params)
Receive resource status update function.
Definition: epc-x2-sap.h:730
virtual void RecvSnStatusTransfer(SnStatusTransferParams params)
Receive SN status transfer function.
Definition: epc-x2-sap.h:709
virtual void RecvUeContextRelease(UeContextReleaseParams params)
Receive UE context release function.
Definition: epc-x2-sap.h:716
virtual void RecvHandoverRequest(HandoverRequestParams params)
Receive handover request function.
Definition: epc-x2-sap.h:688
virtual void RecvLoadInformation(LoadInformationParams params)
Receive load information function.
Definition: epc-x2-sap.h:723
virtual void RecvHandoverRequestAck(HandoverRequestAckParams params)
Receive handover request ack function.
Definition: epc-x2-sap.h:695
virtual void RecvHandoverPreparationFailure(HandoverPreparationFailureParams params)
Receive handover preparation failure function.
Definition: epc-x2-sap.h:702
virtual void RecvUeData(UeDataParams params)
Receive UE data function.
Definition: epc-x2-sap.h:737
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:92
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Cell Information Item as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:157
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:158
std::vector< UlHighInterferenceInformationItem > ulHighInterferenceInformationList
UL high interference information list.
Definition: epc-x2-sap.h:160
RelativeNarrowbandTxBand relativeNarrowbandTxBand
relative narrow transmit band
Definition: epc-x2-sap.h:161
std::vector< UlInterferenceOverloadIndicationItem > ulInterferenceOverloadIndicationList
UL interference overload indication list.
Definition: epc-x2-sap.h:159
Cell Measurement Result Item as it is used in the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:194
uint16_t ulTotalPrbUsage
UL Total PRB usage.
Definition: epc-x2-sap.h:208
LoadIndicator ulHardwareLoadIndicator
UL hardware load indicator.
Definition: epc-x2-sap.h:198
LoadIndicator dlHardwareLoadIndicator
DL hardware load indicator.
Definition: epc-x2-sap.h:197
uint16_t sourceCellId
source cell id
Definition: epc-x2-sap.h:195
uint16_t ulGbrPrbUsage
UL GBR PRB usage.
Definition: epc-x2-sap.h:204
uint16_t dlTotalPrbUsage
DL Total PRB usage.
Definition: epc-x2-sap.h:207
LoadIndicator dlS1TnlLoadIndicator
DL S1 TNL load indicator.
Definition: epc-x2-sap.h:200
uint16_t ulNonGbrPrbUsage
UL Non GBR PRB usage.
Definition: epc-x2-sap.h:206
CompositeAvailCapacity dlCompositeAvailableCapacity
DL composite available capacity.
Definition: epc-x2-sap.h:210
CompositeAvailCapacity ulCompositeAvailableCapacity
UL composite available capacity.
Definition: epc-x2-sap.h:211
uint16_t dlGbrPrbUsage
DL GBR PRB usage.
Definition: epc-x2-sap.h:203
LoadIndicator ulS1TnlLoadIndicator
UL S1 TNL load indicator.
Definition: epc-x2-sap.h:201
uint16_t dlNonGbrPrbUsage
DL Non GBR PRB usage.
Definition: epc-x2-sap.h:205
Composite Available Capacity as it is used in the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:183
uint16_t cellCapacityClassValue
cell capacity class value
Definition: epc-x2-sap.h:184
uint16_t capacityValue
capacity value
Definition: epc-x2-sap.h:185
E-RABs admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:76
uint32_t dlGtpTeid
downlink GTP TEID
Definition: epc-x2-sap.h:79
uint32_t ulGtpTeid
uplink GTP TEID
Definition: epc-x2-sap.h:78
uint16_t erabId
E-RAB ID.
Definition: epc-x2-sap.h:77
E-RABs not admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:88
E-RABs to be setup item as it is used in the HANDOVER REQUEST message.
Definition: epc-x2-sap.h:60
bool dlForwarding
DL forwarding.
Definition: epc-x2-sap.h:63
Ipv4Address transportLayerAddress
transport layer address
Definition: epc-x2-sap.h:64
EpsBearer erabLevelQosParameters
E-RAB level QOS parameters.
Definition: epc-x2-sap.h:62
ErabsSubjectToStatusTransferItem structure.
Definition: epc-x2-sap.h:102
std::bitset< m_maxPdcpSn > receiveStatusOfUlPdcpSdus
receive status of UL PDCP SDUs
Definition: epc-x2-sap.h:104
Parameters of the HANDOVER PREPARATION FAILURE message.
Definition: epc-x2-sap.h:263
uint16_t criticalityDiagnostics
criticality diagnostics
Definition: epc-x2-sap.h:268
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:264
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:247
std::vector< ErabNotAdmittedItem > notAdmittedBearers
not admitted bearers
Definition: epc-x2-sap.h:253
std::vector< ErabAdmittedItem > admittedBearers
admitted bearers
Definition: epc-x2-sap.h:252
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:250
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
Definition: epc-x2-sap.h:249
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:251
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:248
Ptr< Packet > rrcContext
RRC context.
Definition: epc-x2-sap.h:254
Parameters of the HANDOVER REQUEST message.
Definition: epc-x2-sap.h:229
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:230
uint64_t ueAggregateMaxBitRateDownlink
UE aggregrate max bit rate downlink.
Definition: epc-x2-sap.h:235
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:232
uint64_t ueAggregateMaxBitRateUplink
UE aggregrate max bit rate uplink.
Definition: epc-x2-sap.h:236
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:233
Ptr< Packet > rrcContext
RRC context.
Definition: epc-x2-sap.h:238
uint32_t mmeUeS1apId
MME UE S1 AP ID.
Definition: epc-x2-sap.h:234
std::vector< ErabToBeSetupItem > bearers
bearers
Definition: epc-x2-sap.h:237
Parameters of the LOAD INFORMATION message.
Definition: epc-x2-sap.h:304
std::vector< CellInformationItem > cellInformationList
cell information list
Definition: epc-x2-sap.h:306
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:305
Relative Narrowband Tx Power (RNTP) as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:143
int16_t rntpThreshold
RNTP threshold.
Definition: epc-x2-sap.h:145
uint16_t antennaPorts
antenna ports
Definition: epc-x2-sap.h:146
std::vector< bool > rntpPerPrbList
RNTP per prb list.
Definition: epc-x2-sap.h:144
uint16_t pdcchInterferenceImpact
PDC channel interference list.
Definition: epc-x2-sap.h:148
Parameters of the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:315
uint16_t enb2MeasurementId
ENB2 measurement ID.
Definition: epc-x2-sap.h:318
uint16_t enb1MeasurementId
ENB1 measurement ID.
Definition: epc-x2-sap.h:317
std::vector< CellMeasurementResultItem > cellMeasurementResultList
cell measurement result list
Definition: epc-x2-sap.h:319
Parameters of the SN STATUS TRANSFER message.
Definition: epc-x2-sap.h:277
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
Definition: epc-x2-sap.h:279
std::vector< ErabsSubjectToStatusTransferItem > erabsSubjectToStatusTransferList
ERABs subject to status transfer list.
Definition: epc-x2-sap.h:282
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:278
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:281
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:280
Parameters of the UE CONTEXT RELEASE message.
Definition: epc-x2-sap.h:291
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
Definition: epc-x2-sap.h:293
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:292
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:294
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:295
Parameters of the UE DATA primitive.
Definition: epc-x2-sap.h:329
Ptr< Packet > ueData
UE data.
Definition: epc-x2-sap.h:333
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:330
uint32_t gtpTeid
GTP TEID.
Definition: epc-x2-sap.h:332
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:331
UL High Interference Information as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:129
std::vector< bool > ulHighInterferenceIndicationList
UL high interference indication list.
Definition: epc-x2-sap.h:131