5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-epc-s1ap-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: Nicola Baldo <nbaldo@cttc.cat>
6
7#ifndef NR_EPC_S1AP_SAP_H
8#define NR_EPC_S1AP_SAP_H
9
10#include "nr-eps-bearer.h"
11
12#include "ns3/address.h"
13#include "ns3/ipv4-address.h"
14#include "ns3/object.h"
15#include "ns3/ptr.h"
16
17#include <list>
18
19namespace ns3
20{
21
28{
29 public:
30 virtual ~NrEpcS1apSap() = default;
31};
32
40{
41 public:
50 virtual void InitialUeMessage(uint64_t mmeUeS1Id,
51 uint16_t gnbUeS1Id,
52 uint64_t stmsi,
53 uint16_t ecgi) = 0;
54
59 {
60 uint8_t erabId;
61 };
62
73 uint64_t mmeUeS1Id,
74 uint16_t gnbUeS1Id,
75 std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication) = 0;
76
81 {
82 uint16_t erabId;
84 uint32_t gnbTeid;
85 };
86
95 virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id,
96 uint16_t gnbUeS1Id,
97 std::list<ErabSetupItem> erabSetupList) = 0;
98
103 {
104 uint16_t erabId;
106 uint32_t gnbTeid;
107 };
108
117 virtual void PathSwitchRequest(
118 uint64_t gnbUeS1Id,
119 uint64_t mmeUeS1Id,
120 uint16_t gci,
121 std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList) = 0;
122};
123
131{
132 public:
141
149 virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id,
150 uint16_t gnbUeS1Id,
151 std::list<ErabToBeSetupItem> erabToBeSetupList) = 0;
152
157 {
158 uint8_t erabId;
160 uint32_t gnbTeid;
161 };
162
172 uint64_t gnbUeS1Id,
173 uint64_t mmeUeS1Id,
174 uint16_t cgi,
175 std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList) = 0;
176};
177
182template <class C>
184{
185 public:
191 NrMemberEpcS1apSapMme(C* owner);
192
193 // Delete default constructor to avoid misuse
194 NrMemberEpcS1apSapMme() = delete;
195
196 // inherited from NrEpcS1apSapMme
204 void InitialUeMessage(uint64_t mmeUeS1Id,
205 uint16_t gnbUeS1Id,
206 uint64_t imsi,
207 uint16_t ecgi) override;
215 uint64_t mmeUeS1Id,
216 uint16_t gnbUeS1Id,
217 std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication) override;
218
225 void InitialContextSetupResponse(uint64_t mmeUeS1Id,
226 uint16_t gnbUeS1Id,
227 std::list<ErabSetupItem> erabSetupList) override;
236 uint64_t gnbUeS1Id,
237 uint64_t mmeUeS1Id,
238 uint16_t cgi,
239 std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList) override;
240
241 private:
242 C* m_owner;
243};
244
245template <class C>
247 : m_owner(owner)
248{
249}
250
251template <class C>
252void
254 uint16_t gnbUeS1Id,
255 uint64_t imsi,
256 uint16_t ecgi)
257{
258 m_owner->DoInitialUeMessage(mmeUeS1Id, gnbUeS1Id, imsi, ecgi);
259}
260
261template <class C>
262void
264 uint64_t mmeUeS1Id,
265 uint16_t gnbUeS1Id,
266 std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication)
267{
268 m_owner->DoErabReleaseIndication(mmeUeS1Id, gnbUeS1Id, erabToBeReleaseIndication);
269}
270
271template <class C>
272void
274 uint16_t gnbUeS1Id,
275 std::list<ErabSetupItem> erabSetupList)
276{
277 m_owner->DoInitialContextSetupResponse(mmeUeS1Id, gnbUeS1Id, erabSetupList);
278}
279
280template <class C>
281void
283 uint64_t gnbUeS1Id,
284 uint64_t mmeUeS1Id,
285 uint16_t cgi,
286 std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList)
287{
288 m_owner->DoPathSwitchRequest(gnbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInDownlinkList);
289}
290
295template <class C>
297{
298 public:
304 NrMemberEpcS1apSapGnb(C* owner);
305
306 // Delete default constructor to avoid misuse
307 NrMemberEpcS1apSapGnb() = delete;
308
309 // inherited from NrEpcS1apSapGnb
316 void InitialContextSetupRequest(uint64_t mmeUeS1Id,
317 uint16_t gnbUeS1Id,
318 std::list<ErabToBeSetupItem> erabToBeSetupList) override;
327 uint64_t gnbUeS1Id,
328 uint64_t mmeUeS1Id,
329 uint16_t cgi,
330 std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList) override;
331
332 private:
333 C* m_owner;
334};
335
336template <class C>
338 : m_owner(owner)
339{
340}
341
342template <class C>
343void
345 uint16_t gnbUeS1Id,
346 std::list<ErabToBeSetupItem> erabToBeSetupList)
347{
348 m_owner->DoInitialContextSetupRequest(mmeUeS1Id, gnbUeS1Id, erabToBeSetupList);
349}
350
351template <class C>
352void
354 uint64_t gnbUeS1Id,
355 uint64_t mmeUeS1Id,
356 uint16_t cgi,
357 std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList)
358{
359 m_owner->DoPathSwitchRequestAcknowledge(gnbUeS1Id,
360 mmeUeS1Id,
361 cgi,
362 erabToBeSwitchedInUplinkList);
363}
364
365} // namespace ns3
366
367#endif /* NR_EPC_S1AP_SAP_H */
virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList)=0
virtual void PathSwitchRequestAcknowledge(uint64_t gnbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList)=0
virtual void ErabReleaseIndication(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, std::list< ErabToBeReleasedIndication > erabToBeReleaseIndication)=0
As per 3GPP TS 36.413 version 9.8.0 section 8.2.3.2.2, the gNB indicates bearer release by sending an...
virtual void PathSwitchRequest(uint64_t gnbUeS1Id, uint64_t mmeUeS1Id, uint16_t gci, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList)=0
virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, std::list< ErabSetupItem > erabSetupList)=0
virtual void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, uint64_t stmsi, uint16_t ecgi)=0
This class contains the specification of EPS Bearers.
void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList) override
void PathSwitchRequestAcknowledge(uint64_t gnbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList) override
void ErabReleaseIndication(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, std::list< ErabToBeReleasedIndication > erabToBeReleaseIndication) override
void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, std::list< ErabSetupItem > erabSetupList) override
void PathSwitchRequest(uint64_t gnbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList) override
void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t gnbUeS1Id, uint64_t imsi, uint16_t ecgi) override
NrEpsBearer erabLevelQosParameters
Level QOS parameters.
Ipv4Address transportLayerAddress
transport layer address
Ipv4Address gnbTransportLayerAddress
transport layer address