A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
30 namespace ns3 {
31 
32 
33 class Node;
34 
49 class EpcX2Sap
50 {
51 public:
52  virtual ~EpcX2Sap ();
53 
60  {
61  uint16_t erabId;
65  uint32_t gtpTeid;
66 
68  };
69 
76  {
77  uint16_t erabId;
78  uint32_t ulGtpTeid;
79  uint32_t dlGtpTeid;
80  };
81 
88  {
89  uint16_t erabId;
90  uint16_t cause;
91  };
92 
98  static const uint16_t m_maxPdcpSn = 4096;
100  {
101  uint16_t erabId;
102  std::bitset<m_maxPdcpSn> receiveStatusOfUlPdcpSdus;
103  uint16_t ulPdcpSn;
104  uint32_t ulHfn;
105  uint16_t dlPdcpSn;
106  uint32_t dlHfn;
107  };
108 
115  {
119  };
120 
127  {
128  uint16_t targetCellId;
130  };
131 
141  {
142  std::vector <bool> rntpPerPrbList;
143  int16_t rntpThreshold;
144  uint16_t antennaPorts;
145  uint16_t pB;
147  };
148 
155  {
156  uint16_t sourceCellId;
157  std::vector <UlInterferenceOverloadIndicationItem> ulInterferenceOverloadIndicationList;
158  std::vector <UlHighInterferenceInformationItem> ulHighInterferenceInformationList;
160  };
161 
168  {
173  };
174 
181  {
183  uint16_t capacityValue;
184  };
185 
192  {
193  uint16_t sourceCellId;
194 
197 
200 
201  uint16_t dlGbrPrbUsage;
202  uint16_t ulGbrPrbUsage;
205  uint16_t dlTotalPrbUsage;
206  uint16_t ulTotalPrbUsage;
207 
210  };
211 
212 
213  enum IdCause
214  {
217  };
218 
219 
226  {
227  uint16_t oldEnbUeX2apId;
228  uint16_t cause;
229  uint16_t sourceCellId;
230  uint16_t targetCellId;
231  uint32_t mmeUeS1apId;
234  std::vector <ErabToBeSetupItem> bearers;
236  };
237 
244  {
245  uint16_t oldEnbUeX2apId;
246  uint16_t newEnbUeX2apId;
247  uint16_t sourceCellId;
248  uint16_t targetCellId;
249  std::vector <ErabAdmittedItem> admittedBearers;
250  std::vector <ErabNotAdmittedItem> notAdmittedBearers;
252  };
253 
260  {
261  uint16_t oldEnbUeX2apId;
262  uint16_t sourceCellId;
263  uint16_t targetCellId;
264  uint16_t cause;
266  };
267 
274  {
275  uint16_t oldEnbUeX2apId;
276  uint16_t newEnbUeX2apId;
277  uint16_t sourceCellId;
278  uint16_t targetCellId;
279  std::vector <ErabsSubjectToStatusTransferItem> erabsSubjectToStatusTransferList;
280  };
281 
288  {
289  uint16_t oldEnbUeX2apId;
290  uint16_t newEnbUeX2apId;
291  uint16_t sourceCellId;
292  uint16_t targetCellId;
293  };
294 
301  {
302  uint16_t targetCellId;
303  std::vector <CellInformationItem> cellInformationList;
304  };
305 
312  {
313  uint16_t targetCellId;
316  std::vector <CellMeasurementResultItem> cellMeasurementResultList;
317  };
318 
326  {
327  uint16_t sourceCellId;
328  uint16_t targetCellId;
329  uint32_t gtpTeid;
331  };
332 
333 };
334 
335 
341 {
342 public:
343  virtual ~EpcX2SapProvider ();
344 
349  virtual void SendHandoverRequest (HandoverRequestParams params) = 0;
350 
351  virtual void SendHandoverRequestAck (HandoverRequestAckParams params) = 0;
352 
354 
355  virtual void SendSnStatusTransfer (SnStatusTransferParams params) = 0;
356 
357  virtual void SendUeContextRelease (UeContextReleaseParams params) = 0;
358 
359  virtual void SendLoadInformation (LoadInformationParams params) = 0;
360 
361  virtual void SendResourceStatusUpdate (ResourceStatusUpdateParams params) = 0;
362 
363  virtual void SendUeData (UeDataParams params) = 0;
364 };
365 
366 
371 class EpcX2SapUser : public EpcX2Sap
372 {
373 public:
374  virtual ~EpcX2SapUser ();
375 
380  virtual void RecvHandoverRequest (HandoverRequestParams params) = 0;
381 
382  virtual void RecvHandoverRequestAck (HandoverRequestAckParams params) = 0;
383 
385 
386  virtual void RecvSnStatusTransfer (SnStatusTransferParams params) = 0;
387 
388  virtual void RecvUeContextRelease (UeContextReleaseParams params) = 0;
389 
390  virtual void RecvLoadInformation (LoadInformationParams params) = 0;
391 
392  virtual void RecvResourceStatusUpdate (ResourceStatusUpdateParams params) = 0;
393 
394  virtual void RecvUeData (UeDataParams params) = 0;
395 };
396 
398 
399 template <class C>
401 {
402 public:
404 
405  //
406  // Interface implemented from EpcX2SapProvider
407  //
408 
409  virtual void SendHandoverRequest (HandoverRequestParams params);
410 
411  virtual void SendHandoverRequestAck (HandoverRequestAckParams params);
412 
414 
415  virtual void SendSnStatusTransfer (SnStatusTransferParams params);
416 
417  virtual void SendUeContextRelease (UeContextReleaseParams params);
418 
419  virtual void SendLoadInformation (LoadInformationParams params);
420 
422 
423  virtual void SendUeData (UeDataParams params);
424 
425 private:
427  C* m_x2;
428 };
429 
430 template <class C>
432  : m_x2 (x2)
433 {
434 }
435 
436 template <class C>
438 {
439 }
440 
441 template <class C>
442 void
444 {
445  m_x2->DoSendHandoverRequest (params);
446 }
447 
448 template <class C>
449 void
451 {
452  m_x2->DoSendHandoverRequestAck (params);
453 }
454 
455 template <class C>
456 void
458 {
459  m_x2->DoSendHandoverPreparationFailure (params);
460 }
461 
462 template <class C>
463 void
465 {
466  m_x2->DoSendSnStatusTransfer (params);
467 }
468 
469 template <class C>
470 void
472 {
473  m_x2->DoSendUeContextRelease (params);
474 }
475 
476 template <class C>
477 void
479 {
480  m_x2->DoSendLoadInformation (params);
481 }
482 
483 template <class C>
484 void
486 {
487  m_x2->DoSendResourceStatusUpdate (params);
488 }
489 
490 template <class C>
491 void
493 {
494  m_x2->DoSendUeData (params);
495 }
496 
498 
499 template <class C>
501 {
502 public:
503  EpcX2SpecificEpcX2SapUser (C* rrc);
504 
505  //
506  // Interface implemented from EpcX2SapUser
507  //
508 
509  virtual void RecvHandoverRequest (HandoverRequestParams params);
510 
511  virtual void RecvHandoverRequestAck (HandoverRequestAckParams params);
512 
514 
515  virtual void RecvSnStatusTransfer (SnStatusTransferParams params);
516 
517  virtual void RecvUeContextRelease (UeContextReleaseParams params);
518 
519  virtual void RecvLoadInformation (LoadInformationParams params);
520 
522 
523  virtual void RecvUeData (UeDataParams params);
524 
525 private:
527  C* m_rrc;
528 };
529 
530 template <class C>
532  : m_rrc (rrc)
533 {
534 }
535 
536 template <class C>
538 {
539 }
540 
541 template <class C>
542 void
544 {
545  m_rrc->DoRecvHandoverRequest (params);
546 }
547 
548 template <class C>
549 void
551 {
552  m_rrc->DoRecvHandoverRequestAck (params);
553 }
554 
555 template <class C>
556 void
558 {
559  m_rrc->DoRecvHandoverPreparationFailure (params);
560 }
561 
562 template <class C>
563 void
565 {
566  m_rrc->DoRecvSnStatusTransfer (params);
567 }
568 
569 template <class C>
570 void
572 {
573  m_rrc->DoRecvUeContextRelease (params);
574 }
575 
576 template <class C>
577 void
579 {
580  m_rrc->DoRecvLoadInformation (params);
581 }
582 
583 template <class C>
584 void
586 {
587  m_rrc->DoRecvResourceStatusUpdate (params);
588 }
589 
590 template <class C>
591 void
593 {
594  m_rrc->DoRecvUeData (params);
595 }
596 
597 } // namespace ns3
598 
599 #endif // EPC_X2_SAP_H
RelativeNarrowbandTxBand relativeNarrowbandTxBand
Definition: epc-x2-sap.h:159
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:340
E-RABs admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:75
std::vector< CellMeasurementResultItem > cellMeasurementResultList
Definition: epc-x2-sap.h:316
virtual void RecvUeContextRelease(UeContextReleaseParams params)=0
Parameters of the HANDOVER REQUEST message.
Definition: epc-x2-sap.h:225
virtual void SendResourceStatusUpdate(ResourceStatusUpdateParams params)
Definition: epc-x2-sap.h:485
virtual void RecvSnStatusTransfer(SnStatusTransferParams params)=0
virtual void RecvHandoverRequest(HandoverRequestParams params)=0
Service primitives.
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
std::vector< UlInterferenceOverloadIndicationItem > ulInterferenceOverloadIndicationList
Definition: epc-x2-sap.h:157
virtual ~EpcX2SapUser()
Definition: epc-x2-sap.cc:39
virtual void SendHandoverRequest(HandoverRequestParams params)=0
Service primitives.
virtual void RecvSnStatusTransfer(SnStatusTransferParams params)
Definition: epc-x2-sap.h:564
CompositeAvailCapacity dlCompositeAvailableCapacity
Definition: epc-x2-sap.h:208
virtual void SendUeContextRelease(UeContextReleaseParams params)
Definition: epc-x2-sap.h:471
virtual void SendSnStatusTransfer(SnStatusTransferParams params)
Definition: epc-x2-sap.h:464
virtual void RecvHandoverRequest(HandoverRequestParams params)
Service primitives.
Definition: epc-x2-sap.h:543
virtual void RecvHandoverPreparationFailure(HandoverPreparationFailureParams params)
Definition: epc-x2-sap.h:557
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
virtual void SendUeContextRelease(UeContextReleaseParams params)=0
virtual void SendHandoverRequest(HandoverRequestParams params)
Service primitives.
Definition: epc-x2-sap.h:443
virtual void RecvLoadInformation(LoadInformationParams params)
Definition: epc-x2-sap.h:578
UlInterferenceOverloadIndicationItem
UL Interference OverloadIndication as it is used in the LOAD INFORMATION message. ...
Definition: epc-x2-sap.h:114
virtual void SendLoadInformation(LoadInformationParams params)=0
Parameters of the HANDOVER PREPARATION FAILURE message.
Definition: epc-x2-sap.h:259
virtual ~EpcX2Sap()
Definition: epc-x2-sap.cc:26
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
std::vector< ErabAdmittedItem > admittedBearers
Definition: epc-x2-sap.h:249
std::vector< CellInformationItem > cellInformationList
Definition: epc-x2-sap.h:303
Parameters of the SN STATUS TRANSFER message.
Definition: epc-x2-sap.h:273
std::vector< UlHighInterferenceInformationItem > ulHighInterferenceInformationList
Definition: epc-x2-sap.h:158
virtual void RecvHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
virtual void SendUeData(UeDataParams params)
Definition: epc-x2-sap.h:492
virtual void RecvHandoverRequestAck(HandoverRequestAckParams params)
Definition: epc-x2-sap.h:550
std::bitset< m_maxPdcpSn > receiveStatusOfUlPdcpSdus
Definition: epc-x2-sap.h:102
E-RABs to be setup item as it is used in the HANDOVER REQUEST message.
Definition: epc-x2-sap.h:59
Parameters of the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:311
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)=0
virtual void RecvUeData(UeDataParams params)
Definition: epc-x2-sap.h:592
virtual void SendResourceStatusUpdate(ResourceStatusUpdateParams params)=0
Parameters of the UE CONTEXT RELEASE message.
Definition: epc-x2-sap.h:287
E-RABs not admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:87
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:243
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:371
virtual void RecvUeData(UeDataParams params)=0
virtual void RecvResourceStatusUpdate(ResourceStatusUpdateParams params)
Definition: epc-x2-sap.h:585
std::vector< ErabToBeSetupItem > bearers
Definition: epc-x2-sap.h:234
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)
Definition: epc-x2-sap.h:450
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:38
virtual ~EpcX2SapProvider()
Definition: epc-x2-sap.cc:35
std::vector< ErabNotAdmittedItem > notAdmittedBearers
Definition: epc-x2-sap.h:250
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)
Definition: epc-x2-sap.h:457
LoadIndicator
Load Indicator as it is used in the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:167
Cell Measurement Result Item as it is used in the RESOURCE STATUS UPDATE message. ...
Definition: epc-x2-sap.h:191
Parameters of the LOAD INFORMATION message.
Definition: epc-x2-sap.h:300
The X2 SAP defines the service between the X2 entity and the RRC entity.
Definition: epc-x2-sap.h:49
Cell Information Item as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:154
Composite Available Capacity as it is used in the RESOURCE STATUS UPDATE message. ...
Definition: epc-x2-sap.h:180
Relative Narrowband Tx Power (RNTP) as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:140
virtual void RecvLoadInformation(LoadInformationParams params)=0
virtual void SendLoadInformation(LoadInformationParams params)
Definition: epc-x2-sap.h:478
virtual void RecvHandoverRequestAck(HandoverRequestAckParams params)=0
Parameters of the UE DATA primitive.
Definition: epc-x2-sap.h:325
std::vector< ErabsSubjectToStatusTransferItem > erabsSubjectToStatusTransferList
Definition: epc-x2-sap.h:279
UL High Interference Information as it is used in the LOAD INFORMATION message.
Definition: epc-x2-sap.h:126
virtual void SendUeData(UeDataParams params)=0
virtual void SendSnStatusTransfer(SnStatusTransferParams params)=0
virtual void RecvResourceStatusUpdate(ResourceStatusUpdateParams params)=0
CompositeAvailCapacity ulCompositeAvailableCapacity
Definition: epc-x2-sap.h:209
virtual void RecvUeContextRelease(UeContextReleaseParams params)
Definition: epc-x2-sap.h:571