5G-LENA nr-v4.1
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-epc-helper.h
1// Copyright (c) 2011-2013 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Authors:
6// Jaume Nin <jnin@cttc.es>
7// Nicola Baldo <nbaldo@cttc.es>
8// Manuel Requena <manuel.requena@cttc.es>
9
10#ifndef NR_EPC_HELPER_H
11#define NR_EPC_HELPER_H
12
13#include "ns3/data-rate.h"
14#include "ns3/ipv4-address-helper.h"
15#include "ns3/ipv6-address-helper.h"
16#include "ns3/node-container.h"
17#include "ns3/nr-epc-tft.h"
18#include "ns3/nr-eps-bearer.h"
19#include "ns3/object.h"
20
21#include <optional>
22
23namespace ns3
24{
25
26class Node;
27class NetDevice;
28class VirtualNetDevice;
29class NrEpcX2;
30
40class NrEpcHelper : public Object
41{
42 public:
47
51 ~NrEpcHelper() override;
52
53 // inherited from Object
58 static TypeId GetTypeId();
59 void DoDispose() override;
60
69 virtual void AddGnb(Ptr<Node> gnbNode,
70 Ptr<NetDevice> nrGnbNetDevice,
71 std::vector<uint16_t> cellIds) = 0;
72
79 virtual void AddUe(Ptr<NetDevice> ueNrDevice, uint64_t imsi) = 0;
80
87 virtual void AddX2Interface(Ptr<Node> gnbNode1, Ptr<Node> gnbNode2) = 0;
88
97 virtual void AddS1Interface(Ptr<Node> gnb,
98 Ipv4Address gnbAddress,
99 Ipv4Address sgwAddress,
100 std::vector<uint16_t> cellIds) = 0;
101
114 virtual uint8_t ActivateEpsBearer(Ptr<NetDevice> ueNrDevice,
115 uint64_t imsi,
116 Ptr<NrEpcTft> tft,
117 NrEpsBearer bearer) = 0;
118
124 virtual Ptr<Node> GetSgwNode() const = 0;
125
133 virtual Ptr<Node> GetPgwNode() const = 0;
134
142 virtual Ipv4InterfaceContainer AssignUeIpv4Address(NetDeviceContainer ueDevices) = 0;
143
151 virtual Ipv6InterfaceContainer AssignUeIpv6Address(NetDeviceContainer ueDevices) = 0;
152
157 virtual Ipv4Address GetUeDefaultGatewayAddress() = 0;
158
163 virtual Ipv6Address GetUeDefaultGatewayAddress6() = 0;
164
171 virtual int64_t AssignStreams(int64_t stream) = 0;
172
187 virtual std::pair<Ptr<Node>, Ipv4Address> SetupRemoteHost(std::optional<std::string> dataRate,
188 std::optional<uint16_t> mtu,
189 std::optional<Time> delay) = 0;
190
205 virtual std::pair<Ptr<Node>, Ipv6Address> SetupRemoteHost6(std::optional<std::string> dataRate,
206 std::optional<uint16_t> mtu,
207 std::optional<Time> delay) = 0;
208};
209
210} // namespace ns3
211
212#endif // NR_EPC_HELPER_H
Base helper class to handle the creation of the EPC entities.
virtual void AddGnb(Ptr< Node > gnbNode, Ptr< NetDevice > nrGnbNetDevice, std::vector< uint16_t > cellIds)=0
virtual void AddS1Interface(Ptr< Node > gnb, Ipv4Address gnbAddress, Ipv4Address sgwAddress, std::vector< uint16_t > cellIds)=0
virtual void AddUe(Ptr< NetDevice > ueNrDevice, uint64_t imsi)=0
virtual Ipv4InterfaceContainer AssignUeIpv4Address(NetDeviceContainer ueDevices)=0
virtual Ipv6Address GetUeDefaultGatewayAddress6()=0
virtual std::pair< Ptr< Node >, Ipv4Address > SetupRemoteHost(std::optional< std::string > dataRate, std::optional< uint16_t > mtu, std::optional< Time > delay)=0
virtual void AddX2Interface(Ptr< Node > gnbNode1, Ptr< Node > gnbNode2)=0
virtual Ptr< Node > GetPgwNode() const =0
~NrEpcHelper() override
virtual Ipv6InterfaceContainer AssignUeIpv6Address(NetDeviceContainer ueDevices)=0
virtual Ptr< Node > GetSgwNode() const =0
static TypeId GetTypeId()
virtual std::pair< Ptr< Node >, Ipv6Address > SetupRemoteHost6(std::optional< std::string > dataRate, std::optional< uint16_t > mtu, std::optional< Time > delay)=0
virtual Ipv4Address GetUeDefaultGatewayAddress()=0
virtual int64_t AssignStreams(int64_t stream)=0
virtual uint8_t ActivateEpsBearer(Ptr< NetDevice > ueNrDevice, uint64_t imsi, Ptr< NrEpcTft > tft, NrEpsBearer bearer)=0
This class contains the specification of EPS Bearers.