A Discrete-Event Network Simulator
API
lte-test-deactivate-bearer.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011, 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:Gaurav Sathe <gaurav.sathe@tcs.com>
19  */
20 
21 #include <iostream>
22 #include <sstream>
23 #include <string>
24 
25 #include <ns3/object.h>
26 #include <ns3/spectrum-interference.h>
27 #include <ns3/spectrum-error-model.h>
28 #include <ns3/log.h>
29 #include <ns3/test.h>
30 #include <ns3/simulator.h>
31 #include <ns3/packet.h>
32 #include <ns3/ptr.h>
33 #include "ns3/radio-bearer-stats-calculator.h"
34 #include <ns3/constant-position-mobility-model.h>
35 #include <ns3/eps-bearer.h>
36 #include <ns3/node-container.h>
37 #include <ns3/mobility-helper.h>
38 #include <ns3/net-device-container.h>
39 #include <ns3/lte-ue-net-device.h>
40 #include <ns3/lte-enb-net-device.h>
41 #include <ns3/lte-ue-rrc.h>
42 #include <ns3/lte-helper.h>
43 #include "ns3/string.h"
44 #include "ns3/double.h"
45 #include <ns3/lte-enb-phy.h>
46 #include <ns3/lte-ue-phy.h>
47 #include <ns3/boolean.h>
48 #include <ns3/enum.h>
49 
50 #include "ns3/point-to-point-epc-helper.h"
51 #include "ns3/network-module.h"
52 #include "ns3/ipv4-global-routing-helper.h"
53 #include "ns3/internet-module.h"
54 #include "ns3/applications-module.h"
55 #include "ns3/point-to-point-helper.h"
56 
58 
59 NS_LOG_COMPONENT_DEFINE ("LenaTestDeactivateBearer");
60 
61 namespace ns3 {
62 
64  : TestSuite ("lte-test-deactivate-bearer", SYSTEM)
65 {
66  NS_LOG_INFO ("creating LenaTestPssFfMacSchedulerSuite");
67 
68  bool errorModel = false;
69 
70  // Test Case: homogeneous flow test in PSS (different distance)
71  // Traffic1 info
72  // UDP traffic: payload size = 100 bytes, interval = 1 ms
73  // UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate
74  // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s
75  // 132000 * 3 = 396000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec
76  std::vector<uint16_t> dist_1;
77 
78  dist_1.push_back (0); // User 0 distance --> MCS 28
79  dist_1.push_back (0); // User 1 distance --> MCS 22
80  dist_1.push_back (0); // User 2 distance --> MCS 20
81 
82  std::vector<uint16_t> packetSize_1;
83 
84  packetSize_1.push_back (100); //1
85  packetSize_1.push_back (100); //2
86  packetSize_1.push_back (100); //3
87 
88  std::vector<uint32_t> estThrPssDl_1;
89 
90  estThrPssDl_1.push_back (132000); // User 0 estimated TTI throughput from PSS
91  estThrPssDl_1.push_back (132000); // User 1 estimated TTI throughput from PSS
92  estThrPssDl_1.push_back (132000); // User 2 estimated TTI throughput from PSS
93 
94  AddTestCase (new LenaDeactivateBearerTestCase (dist_1,estThrPssDl_1,packetSize_1,1,errorModel,true), TestCase::QUICK);
95 }
96 
98 
99 
100 std::string
101 LenaDeactivateBearerTestCase::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
102 {
103  std::ostringstream oss;
104  oss << "distances (m) = [ ";
105  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
106  {
107  oss << *it << " ";
108  }
109  oss << "]";
110  return oss.str ();
111 }
112 
113 LenaDeactivateBearerTestCase::LenaDeactivateBearerTestCase (std::vector<uint16_t> dist, std::vector<uint32_t> estThrPssDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled, bool useIdealRrc)
114  : TestCase (BuildNameString (dist.size (), dist)),
115  m_nUser (dist.size ()),
116  m_dist (dist),
117  m_packetSize (packetSize),
118  m_interval (interval),
119  m_estThrPssDl (estThrPssDl),
120  m_errorModelEnabled (errorModelEnabled)
121 {
122 }
123 
125 {
126 }
127 
128 void
130 {
131  if (!m_errorModelEnabled)
132  {
133  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
134  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
135  }
136 
137  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
138 
139 
140  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
141  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
142  lteHelper->SetEpcHelper (epcHelper);
143 
144  Ptr<Node> pgw = epcHelper->GetPgwNode ();
145 
146  // Create a single RemoteHost
147  NodeContainer remoteHostContainer;
148  remoteHostContainer.Create (1);
149  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
150  InternetStackHelper internet;
151  internet.Install (remoteHostContainer);
152 
153  // Create the Internet
154  PointToPointHelper p2ph;
155  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
156  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
157  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.001)));
158  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
159  Ipv4AddressHelper ipv4h;
160  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
161  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
162  // interface 0 is localhost, 1 is the p2p device
163  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
164 
165  Ipv4StaticRoutingHelper ipv4RoutingHelper;
166  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
167  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
168 
169  // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
170 
171  // LogComponentEnable ("LenaTestDeactivateBearer", LOG_LEVEL_ALL);
172  // LogComponentEnable ("LteHelper", logLevel);
173  // LogComponentEnable ("EpcHelper", logLevel);
174  // LogComponentEnable ("EpcEnbApplication", logLevel);
175  // LogComponentEnable ("EpcSgwPgwApplication", logLevel);
176  // LogComponentEnable ("EpcMme", logLevel);
177  // LogComponentEnable ("LteEnbRrc", logLevel);
178 
179  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
180 
181  // Create Nodes: eNodeB and UE
182  NodeContainer enbNodes;
183  NodeContainer ueNodes;
184  enbNodes.Create (1);
185  ueNodes.Create (m_nUser);
186 
187  // Install Mobility Model
189  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
190  mobility.Install (enbNodes);
191  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
192  mobility.Install (ueNodes);
193 
194  // Create Devices and install them in the Nodes (eNB and UE)
195  NetDeviceContainer enbDevs;
196  NetDeviceContainer ueDevs;
197  lteHelper->SetSchedulerType ("ns3::PssFfMacScheduler");
198  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
199  ueDevs = lteHelper->InstallUeDevice (ueNodes);
200 
201  Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
202  Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy ();
203  enbPhy->SetAttribute ("TxPower", DoubleValue (30.0));
204  enbPhy->SetAttribute ("NoiseFigure", DoubleValue (5.0));
205 
206  // Set UEs' position and power
207  for (int i = 0; i < m_nUser; i++)
208  {
210  mm->SetPosition (Vector (m_dist.at (i), 0.0, 0.0));
211  Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get (i)->GetObject<LteUeNetDevice> ();
212  Ptr<LteUePhy> uePhy = lteUeDev->GetPhy ();
213  uePhy->SetAttribute ("TxPower", DoubleValue (23.0));
214  uePhy->SetAttribute ("NoiseFigure", DoubleValue (9.0));
215  }
216 
217  // Install the IP stack on the UEs
218  internet.Install (ueNodes);
219  Ipv4InterfaceContainer ueIpIface;
220  ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueDevs));
221 
222  // Assign IP address to UEs
223  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
224  {
225  Ptr<Node> ueNode = ueNodes.Get (u);
226  // Set the default gateway for the UE
227  Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
228  ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
229  }
230 
231  // Attach a UE to a eNB
232  lteHelper->Attach (ueDevs, enbDevs.Get (0));
233 
234  // Activate an EPS bearer on all UEs
235 
236  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
237  {
238  Ptr<NetDevice> ueDevice = ueDevs.Get (u);
239  GbrQosInformation qos;
240  qos.gbrDl = (m_packetSize.at (u) + 32) * (1000 / m_interval) * 8; // bit/s, considering IP, UDP, RLC, PDCP header size
241  qos.gbrUl = (m_packetSize.at (u) + 32) * (1000 / m_interval) * 8;
242  qos.mbrDl = qos.gbrDl;
243  qos.mbrUl = qos.gbrUl;
244 
246  EpsBearer bearer (q, qos);
247  bearer.arp.priorityLevel = 15 - (u + 1);
248  bearer.arp.preemptionCapability = true;
249  bearer.arp.preemptionVulnerability = true;
250  lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default ());
251  }
252 
253 
254  // Install downlink and uplink applications
255  uint16_t dlPort = 1234;
256  uint16_t ulPort = 2000;
257  PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
258  PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
261  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
262  {
263  ++ulPort;
264  serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive packets from remotehost
265  serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive packets from UEs
266 
267  UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink packets generator
268  dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
269  dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
270  dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
271 
272  UdpClientHelper ulClient (remoteHostAddr, ulPort); // downlink packets generator
273  ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
274  ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
275  ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
276 
277  clientApps.Add (dlClient.Install (remoteHost));
278  clientApps.Add (ulClient.Install (ueNodes.Get (u)));
279  }
280 
281 
282  serverApps.Start (Seconds (0.030));
283  clientApps.Start (Seconds (0.030));
284 
285  double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
286  double statsDuration = 1.0;
287  double tolerance = 0.1;
288 
289  lteHelper->EnableRlcTraces ();
290  Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats ();
291  rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
292  rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
293 
294 
295  //get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
296  Ptr<NetDevice> ueDevice = ueDevs.Get (0);
297  Ptr<NetDevice> enbDevice = enbDevs.Get (0);
298 
299  /*
300  * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime
301  * Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
302  */
303  Time deActivateTime (Seconds (1.5));
304  Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2);
305 
306  //stop simulation after 3 seconds
307  Simulator::Stop (Seconds (3.0));
308 
309  Simulator::Run ();
310 
311  NS_LOG_INFO ("DL - Test with " << m_nUser << " user(s)");
312  std::vector <uint64_t> dlDataRxed;
313  std::vector <uint64_t> dlDataTxed;
314  for (int i = 0; i < m_nUser; i++)
315  {
316  // get the imsi
317  uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
318  // get the lcId
319  // lcId is hard-coded, since only one dedicated bearer is added
320  uint8_t lcId = 4;
321  dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
322  dlDataTxed.push_back (rlcStats->GetDlTxData (imsi, lcId));
323  NS_LOG_INFO ("\tUser " << i << " dist " << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / statsDuration << " ref " << m_estThrPssDl.at (i));
324  NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)dlDataTxed.at (i) << " thr " << (double)dlDataTxed.at (i) / statsDuration);
325  }
326 
327  for (int i = 0; i < m_nUser; i++)
328  {
329  uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
330 
331  /*
332  * For UE ID-0 IMSI 1, LCID=4 is deactivated hence If traffic seen on it, test case should fail
333  * Else For other UE's, test case should validate throughput
334  */
335  if (imsi == 1)
336  {
337  NS_TEST_ASSERT_MSG_EQ ((double)dlDataTxed.at (i), 0, "Invalid LCID in Statistics ");
338  }
339  else
340  {
341  NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataTxed.at (i) / statsDuration, m_estThrPssDl.at (i), m_estThrPssDl.at (i) * tolerance, " Unfair Throughput!");
342  }
343  }
344 
346 }
347 }
holds a vector of ns3::Application pointers.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
an Inet address class
static Ipv4Address GetAny(void)
AttributeValue implementation for Boolean.
Definition: boolean.h:34
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition: lte-helper.cc:382
holds a vector of std::pair of Ptr and interface index.
static LenaTestBearerDeactivateSuite lenaTestBearerDeactivateSuite
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Definition: object.h:462
Hold variables of type string.
Definition: string.h:41
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
NetDeviceContainer Install(NodeContainer c)
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:257
void Add(ApplicationContainer other)
Append the contents of another ApplicationContainer to the end of this container. ...
Fast test.
Definition: test.h:1152
A suite of tests to run.
Definition: test.h:1333
Ptr< LteEnbPhy > GetPhy(void) const
Mobility model for which the current position does not change once it has been set and until it is se...
static Ptr< EpcTft > Default()
creates a TFT matching any traffic
Definition: epc-tft.cc:141
static void Run(void)
Run the simulation.
Definition: simulator.cc:201
void Attach(NetDeviceContainer ueDevices)
Enables automatic attachment of a set of UE devices to a suitable cell using Idle mode initial cell s...
Definition: lte-helper.cc:716
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:201
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:903
void EnableRlcTraces(void)
Enable trace sinks for RLC layer.
Definition: lte-helper.cc:1102
aggregate IP/TCP/UDP functionality to existing Nodes.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Definition: log.h:244
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes...
Build a set of PointToPointNetDevice objects.
encapsulates test code
Definition: test.h:1147
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
static std::string BuildNameString(uint16_t nUser, std::vector< uint16_t > dist)
uint8_t ActivateDedicatedEpsBearer(NetDeviceContainer ueDevices, EpsBearer bearer, Ptr< EpcTft > tft)
Activate a dedicated EPS bearer on a given set of UE devices.
Definition: lte-helper.cc:824
ApplicationContainer Install(NodeContainer c)
tuple clientApps
Definition: first.py:54
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
Definition: lte-helper.cc:225
uint32_t GetN(void) const
Get the number of Ptr stored in this container.
uint64_t gbrUl
Guaranteed Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:41
Class for representing data rates.
Definition: data-rate.h:88
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
void DeActivateDedicatedEpsBearer(Ptr< NetDevice > ueDevice, Ptr< NetDevice > enbDevice, uint8_t bearerId)
Manually trigger dedicated bearer de-activation at specific simulation time.
Definition: lte-helper.cc:1020
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
tuple mobility
Definition: third.py:101
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
Definition: simulator.h:1238
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
Definition: test.cc:298
Create a client application which sends UDP packets carrying a 32bit sequence number and a 64 bit tim...
AttributeValue implementation for Time.
Definition: nstime.h:957
Hold an unsigned integer type.
Definition: uinteger.h:44
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
Definition: test.h:161
holds a vector of ns3::NetDevice pointers
LenaDeactivateBearerTestCase(std::vector< uint16_t > dist, std::vector< uint32_t > estThrPssDl, std::vector< uint16_t > packetSize, uint16_t interval, bool errorModelEnabled, bool useIdealRrc)
uint64_t gbrDl
Guaranteed Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:40
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
#define NS_TEST_ASSERT_MSG_EQ_TOL(actual, limit, tol, msg)
Test that actual and expected (limit) values are equal to plus or minus some tolerance and report and...
Definition: test.h:373
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:165
tuple serverApps
Definition: first.py:45
Access to the IPv4 forwarding table, interfaces, and configuration.
Definition: ipv4.h:76
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
uint64_t mbrUl
Maximum Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:43
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
virtual void DoRun(void)
Implementation to actually run this TestCase.
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
Ptr< RadioBearerStatsCalculator > GetRlcStats(void)
Definition: lte-helper.cc:1233
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:397
Helper class used to assign positions and mobility models to nodes.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:40
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
Ptr< Ipv4StaticRouting > GetStaticRouting(Ptr< Ipv4 > ipv4) const
Try and find the static routing protocol as either the main routing protocol or in the list of routin...
void SetEpcHelper(Ptr< EpcHelper > h)
Set the EpcHelper to be used to setup the EPC network in conjunction with the setup of the LTE radio ...
Definition: lte-helper.cc:218
Helper class that adds ns3::Ipv4StaticRouting objects.
AttributeValue implementation for DataRate.
Definition: data-rate.h:242
static void Stop(void)
Tell the Simulator the calling event should be the last one executed.
Definition: simulator.cc:209
Ptr< Node > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:895
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:774
ApplicationContainer Install(NodeContainer c) const
Install an ns3::PacketSinkApplication on each node of the input container configured with all the att...
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
static const uint32_t packetSize
uint64_t mbrDl
Maximum Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:42
3GPP TS 36.143 9.2.1.18 GBR QoS Information
Definition: eps-bearer.h:33
This class can be used to hold variables of floating point type such as 'double' or 'float'...
Definition: double.h:41
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Definition: object-base.cc:191
The eNodeB device implementation.
Qci
QoS Class Indicator.
Definition: eps-bearer.h:77
AllocationRetentionPriority arp
Definition: eps-bearer.h:91
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
The LteUeNetDevice class implements the UE net device.