A Discrete-Event Network Simulator
API
epc-s11-sap.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Nicola Baldo <nbaldo@cttc.cat>
18  */
19 
20 #ifndef EPC_S11_SAP_H
21 #define EPC_S11_SAP_H
22 
23 #include "epc-tft.h"
24 #include "eps-bearer.h"
25 
26 #include <ns3/address.h>
27 #include <ns3/object.h>
28 #include <ns3/ptr.h>
29 
30 #include <list>
31 
32 namespace ns3
33 {
34 
38 class EpcS11Sap
39 {
40  public:
41  virtual ~EpcS11Sap();
42 
46  struct GtpcMessage
47  {
48  uint32_t teid;
49  };
50 
54  struct Fteid
55  {
56  uint32_t teid;
58  };
59 
63  struct Uli
64  {
65  uint16_t gci;
66  };
67 };
68 
75 class EpcS11SapMme : public EpcS11Sap
76 {
77  public:
82  {
84  uint8_t epsBearerId;
87  };
88 
93  {
94  std::list<BearerContextCreated> bearerContextsCreated;
95  };
96 
103 
108  {
109  uint8_t epsBearerId;
110  };
111 
116  {
117  std::list<BearerContextRemoved> bearerContextsRemoved;
118  };
119 
126 
131  {
133  enum Cause
134  {
139  };
140 
142  };
143 
150 };
151 
158 class EpcS11SapSgw : public EpcS11Sap
159 {
160  public:
163  {
165  uint8_t epsBearerId;
168  };
169 
174  {
175  uint64_t imsi;
177  std::list<BearerContextToBeCreated>
179  };
180 
187 
190  {
191  uint8_t epsBearerId;
192  };
193 
198  {
199  std::list<BearerContextToBeRemoved>
201  };
202 
209 
212  {
213  uint8_t epsBearerId;
214  };
215 
220  {
221  std::list<BearerContextRemovedSgwPgw>
223  };
224 
231 
236  {
238  };
239 
246 };
247 
252 template <class C>
254 {
255  public:
261  MemberEpcS11SapMme(C* owner);
262 
263  // Delete default constructor to avoid misuse
264  MemberEpcS11SapMme() = delete;
265 
266  // inherited from EpcS11SapMme
270 
271  private:
272  C* m_owner;
273 };
274 
275 template <class C>
277  : m_owner(owner)
278 {
279 }
280 
281 template <class C>
282 void
284 {
285  m_owner->DoCreateSessionResponse(msg);
286 }
287 
288 template <class C>
289 void
291 {
292  m_owner->DoDeleteBearerRequest(msg);
293 }
294 
295 template <class C>
296 void
298 {
299  m_owner->DoModifyBearerResponse(msg);
300 }
301 
306 template <class C>
308 {
309  public:
315  MemberEpcS11SapSgw(C* owner);
316 
317  // Delete default constructor to avoid misuse
318  MemberEpcS11SapSgw() = delete;
319 
320  // inherited from EpcS11SapSgw
325 
326  private:
327  C* m_owner;
328 };
329 
330 template <class C>
332  : m_owner(owner)
333 {
334 }
335 
336 template <class C>
337 void
339 {
340  m_owner->DoCreateSessionRequest(msg);
341 }
342 
343 template <class C>
344 void
346 {
347  m_owner->DoModifyBearerRequest(msg);
348 }
349 
350 template <class C>
351 void
353 {
354  m_owner->DoDeleteBearerCommand(msg);
355 }
356 
357 template <class C>
358 void
360 {
361  m_owner->DoDeleteBearerResponse(msg);
362 }
363 
364 } // namespace ns3
365 
366 #endif /* EPC_S11_SAP_H */
EpcS11Sap.
Definition: epc-s11-sap.h:39
virtual ~EpcS11Sap()
Definition: epc-s11-sap.cc:25
MME side of the S11 Service Access Point (SAP), provides the MME methods to be called when an S11 mes...
Definition: epc-s11-sap.h:76
virtual void DeleteBearerRequest(DeleteBearerRequestMessage msg)=0
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Request message shall be sent on the S11 inte...
virtual void CreateSessionResponse(CreateSessionResponseMessage msg)=0
send a Create Session Response message
virtual void ModifyBearerResponse(ModifyBearerResponseMessage msg)=0
Send a Modify Bearer Response message.
SGW side of the S11 Service Access Point (SAP), provides the SGW methods to be called when an S11 mes...
Definition: epc-s11-sap.h:159
virtual void CreateSessionRequest(CreateSessionRequestMessage msg)=0
Send a Create Session Request message.
virtual void DeleteBearerResponse(DeleteBearerResponseMessage msg)=0
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
virtual void ModifyBearerRequest(ModifyBearerRequestMessage msg)=0
Send a Modify Bearer Request message.
virtual void DeleteBearerCommand(DeleteBearerCommandMessage msg)=0
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:91
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:42
Template for the implementation of the EpcS11SapMme as a member of an owner class of type C to which ...
Definition: epc-s11-sap.h:254
void DeleteBearerRequest(DeleteBearerRequestMessage msg) override
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Request message shall be sent on the S11 inte...
Definition: epc-s11-sap.h:290
C * m_owner
owner class
Definition: epc-s11-sap.h:272
void CreateSessionResponse(CreateSessionResponseMessage msg) override
send a Create Session Response message
Definition: epc-s11-sap.h:283
void ModifyBearerResponse(ModifyBearerResponseMessage msg) override
Send a Modify Bearer Response message.
Definition: epc-s11-sap.h:297
Template for the implementation of the EpcS11SapSgw as a member of an owner class of type C to which ...
Definition: epc-s11-sap.h:308
void CreateSessionRequest(CreateSessionRequestMessage msg) override
Send a Create Session Request message.
Definition: epc-s11-sap.h:338
C * m_owner
owner class
Definition: epc-s11-sap.h:327
void ModifyBearerRequest(ModifyBearerRequestMessage msg) override
Send a Modify Bearer Request message.
Definition: epc-s11-sap.h:345
void DeleteBearerResponse(DeleteBearerResponseMessage msg) override
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
Definition: epc-s11-sap.h:359
void DeleteBearerCommand(DeleteBearerCommandMessage msg) override
As per 3GPP TS 29.274 Release 9 V9.3.0, a Delete Bearer Command message shall be sent on the S11 inte...
Definition: epc-s11-sap.h:352
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Fully-qualified TEID, see 3GPP TS 29.274 section 8.22.
Definition: epc-s11-sap.h:55
Ipv4Address address
IP address.
Definition: epc-s11-sap.h:57
uint32_t teid
TEID.
Definition: epc-s11-sap.h:56
TS 29.274 8.21 User Location Information (ULI)
Definition: epc-s11-sap.h:64
uint16_t gci
GCI.
Definition: epc-s11-sap.h:65
3GPP TS 29.274 version 8.3.1 Release 8 section 8.28
Definition: epc-s11-sap.h:82
EpcS11Sap::Fteid sgwFteid
EPC FTEID.
Definition: epc-s11-sap.h:83
Ptr< EpcTft > tft
traffic flow template
Definition: epc-s11-sap.h:86
Bearer Context Removed structure.
Definition: epc-s11-sap.h:108
Create Session Response message, see 3GPP TS 29.274 7.2.2.
Definition: epc-s11-sap.h:93
std::list< BearerContextCreated > bearerContextsCreated
bearer contexts created
Definition: epc-s11-sap.h:94
Delete Bearer Request message, see 3GPP TS 29.274 Release 9 V9.3.0 section 7.2.9.2.
Definition: epc-s11-sap.h:116
std::list< BearerContextRemoved > bearerContextsRemoved
list of bearer context removed
Definition: epc-s11-sap.h:117
Modify Bearer Response message, see 3GPP TS 29.274 7.2.7.
Definition: epc-s11-sap.h:131
BearerContextRemovedSgwPgw structure.
Definition: epc-s11-sap.h:212
BearerContextToBeCreated structure.
Definition: epc-s11-sap.h:163
EpsBearer bearerLevelQos
bearer QOS level
Definition: epc-s11-sap.h:166
Ptr< EpcTft > tft
traffic flow template
Definition: epc-s11-sap.h:167
BearerContextToBeCreated structure.
Definition: epc-s11-sap.h:190
Create Session Request message, see 3GPP TS 29.274 7.2.1.
Definition: epc-s11-sap.h:174
std::list< BearerContextToBeCreated > bearerContextsToBeCreated
list of bearer contexts to be created
Definition: epc-s11-sap.h:178
Delete Bearer Command message, see 3GPP TS 29.274 Release 9 V9.3.0 section 7.2.17....
Definition: epc-s11-sap.h:198
std::list< BearerContextToBeRemoved > bearerContextsToBeRemoved
list of bearer contexts to be removed
Definition: epc-s11-sap.h:200
Delete Bearer Response message, see 3GPP TS 29.274 Release 9 V9.3.0 section 7.2.10....
Definition: epc-s11-sap.h:220
std::list< BearerContextRemovedSgwPgw > bearerContextsRemoved
list of bearer contexts removed
Definition: epc-s11-sap.h:222
Modify Bearer Request message, see 3GPP TS 29.274 7.2.7.
Definition: epc-s11-sap.h:236