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));
260 
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  PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
266  serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive packets from UEs
267 
268  UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink packets generator
269  dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
270  dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
271  dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
272 
273  UdpClientHelper ulClient (remoteHostAddr, ulPort); // downlink packets generator
274  ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
275  ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
276  ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
277 
278  clientApps.Add (dlClient.Install (remoteHost));
279  clientApps.Add (ulClient.Install (ueNodes.Get (u)));
280  }
281 
282 
283  serverApps.Start (Seconds (0.030));
284  clientApps.Start (Seconds (0.030));
285 
286  double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
287  double statsDuration = 1.0;
288  double tolerance = 0.1;
289 
290  lteHelper->EnableRlcTraces ();
291  Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats ();
292  rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
293  rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
294 
295 
296  //get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
297  Ptr<NetDevice> ueDevice = ueDevs.Get (0);
298  Ptr<NetDevice> enbDevice = enbDevs.Get (0);
299 
300  /*
301  * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime
302  * Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
303  */
304  Time deActivateTime (Seconds (1.5));
305  Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2);
306 
307  //stop simulation after 3 seconds
308  Simulator::Stop (Seconds (3.0));
309 
310  Simulator::Run ();
311 
312  NS_LOG_INFO ("DL - Test with " << m_nUser << " user(s)");
313  std::vector <uint64_t> dlDataRxed;
314  std::vector <uint64_t> dlDataTxed;
315  for (int i = 0; i < m_nUser; i++)
316  {
317  // get the imsi
318  uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
319  // get the lcId
320  // lcId is hard-coded, since only one dedicated bearer is added
321  uint8_t lcId = 4;
322  dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
323  dlDataTxed.push_back (rlcStats->GetDlTxData (imsi, lcId));
324  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));
325  NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)dlDataTxed.at (i) << " thr " << (double)dlDataTxed.at (i) / statsDuration);
326  }
327 
328  for (int i = 0; i < m_nUser; i++)
329  {
330  uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
331 
332  /*
333  * For UE ID-0 IMSI 1, LCID=4 is deactivated hence If traffic seen on it, test case should fail
334  * Else For other UE's, test case should validate throughput
335  */
336  if (imsi == 1)
337  {
338  NS_TEST_ASSERT_MSG_EQ ((double)dlDataTxed.at (i), 0, "Invalid LCID in Statistics ");
339  }
340  else
341  {
342  NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataTxed.at (i) / statsDuration, m_estThrPssDl.at (i), m_estThrPssDl.at (i) * tolerance, " Unfair Throughput!");
343  }
344  }
345 
347 }
348 }
holds a vector of ns3::Application pointers.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
Test case that for testing the deactivation of the bearer functionality.
an Inet address class
static Ipv4Address GetAny(void)
AttributeValue implementation for Boolean.
Definition: boolean.h:36
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition: lte-helper.cc:474
holds a vector of std::pair of Ptr<Ipv4> and interface index.
static LenaTestBearerDeactivateSuite lenaTestBearerDeactivateSuite
the test suite
Hold variables of type string.
Definition: string.h:41
NetDeviceContainer Install(NodeContainer c)
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:258
A suite of tests to run.
Definition: test.h:1342
Mobility model for which the current position does not change once it has been set and until it is se...
serverApps
Definition: first.py:45
static Ptr< EpcTft > Default()
creates a TFT matching any traffic
Definition: epc-tft.cc:208
static void Run(void)
Run the simulation.
Definition: simulator.cc:226
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:957
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:202
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1022
void EnableRlcTraces(void)
Enable trace sinks for RLC layer.
Definition: lte-helper.cc:1431
ApplicationContainer Install(NodeContainer c) const
Install an ns3::PacketSinkApplication on each node of the input container configured with all the att...
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:278
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:1155
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)
Build name string function.
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:1065
ApplicationContainer Install(NodeContainer c)
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
Definition: lte-helper.cc:279
mobility
Definition: third.py:101
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:1269
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
Definition: simulator.h:1381
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:1076
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:299
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
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:168
holds a vector of ns3::NetDevice pointers
std::vector< uint16_t > m_dist
distance between the nodes
LenaDeactivateBearerTestCase(std::vector< uint16_t > dist, std::vector< uint32_t > estThrPssDl, std::vector< uint16_t > packetSize, uint16_t interval, bool errorModelEnabled, bool useIdealRrc)
Constructor.
uint64_t gbrDl
Guaranteed Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:40
Ptr< LteEnbPhy > GetPhy(void) const
#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:380
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:190
uint32_t GetN(void) const
Get the number of Ptr<Node> stored in this container.
Access to the IPv4 forwarding table, interfaces, and configuration.
Definition: ipv4.h:76
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Definition: object.h:459
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created.
bool preemptionVulnerability
true if bearer can be preempted by others
Definition: eps-bearer.h:59
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
std::vector< uint16_t > m_packetSize
packet size in bytes
virtual void DoRun(void)
Implementation to actually run this TestCase.
bool preemptionCapability
true if bearer can preempt others
Definition: eps-bearer.h:58
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
Fast test.
Definition: test.h:1160
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
Ptr< RadioBearerStatsCalculator > GetRlcStats(void)
Definition: lte-helper.cc:1568
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:489
uint16_t m_interval
interval time in ms
The test suite class for the LenaDeactivateBearerTestCase.
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...
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:272
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:234
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1014
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:782
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
clientApps
Definition: first.py:54
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
std::vector< uint32_t > m_estThrPssDl
estimated threshold PSS DL
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.413 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 &#39;double&#39; or &#39;float&#39;...
Definition: double.h:41
uint8_t priorityLevel
1-15; 1 = highest
Definition: eps-bearer.h:57
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Definition: object-base.cc:185
The eNodeB device implementation.
Qci
QoS Class Indicator.
Definition: eps-bearer.h:77
AllocationRetentionPriority arp
allocation retention priority
Definition: eps-bearer.h:91
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 SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
The LteUeNetDevice class implements the UE net device.