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  Config::SetDefault ("ns3::RadioBearerStatsCalculator::DlRlcOutputFilename", StringValue (CreateTempDirFilename ("DlRlcStats.txt")));
139  Config::SetDefault ("ns3::RadioBearerStatsCalculator::UlRlcOutputFilename", StringValue (CreateTempDirFilename ("UlRlcStats.txt")));
140 
141  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
142  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
143  lteHelper->SetEpcHelper (epcHelper);
144 
145  Ptr<Node> pgw = epcHelper->GetPgwNode ();
146 
147  // Create a single RemoteHost
148  NodeContainer remoteHostContainer;
149  remoteHostContainer.Create (1);
150  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
151  InternetStackHelper internet;
152  internet.Install (remoteHostContainer);
153 
154  // Create the Internet
155  PointToPointHelper p2ph;
156  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
157  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
158  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.001)));
159  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
160  Ipv4AddressHelper ipv4h;
161  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
162  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
163  // interface 0 is localhost, 1 is the p2p device
164  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
165 
166  Ipv4StaticRoutingHelper ipv4RoutingHelper;
167  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
168  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
169 
170  // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
171 
172  // LogComponentEnable ("LenaTestDeactivateBearer", LOG_LEVEL_ALL);
173  // LogComponentEnable ("LteHelper", logLevel);
174  // LogComponentEnable ("EpcHelper", logLevel);
175  // LogComponentEnable ("EpcEnbApplication", logLevel);
176  // LogComponentEnable ("EpcMmeApplication", logLevel);
177  // LogComponentEnable ("EpcPgwApplication", logLevel);
178  // LogComponentEnable ("EpcSgwApplication", logLevel);
179  // LogComponentEnable ("LteEnbRrc", logLevel);
180 
181  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
182 
183  // Create Nodes: eNodeB and UE
184  NodeContainer enbNodes;
185  NodeContainer ueNodes;
186  enbNodes.Create (1);
187  ueNodes.Create (m_nUser);
188 
189  // Install Mobility Model
191  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
192  mobility.Install (enbNodes);
193  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
194  mobility.Install (ueNodes);
195 
196  // Create Devices and install them in the Nodes (eNB and UE)
197  NetDeviceContainer enbDevs;
198  NetDeviceContainer ueDevs;
199  lteHelper->SetSchedulerType ("ns3::PssFfMacScheduler");
200  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
201  ueDevs = lteHelper->InstallUeDevice (ueNodes);
202 
203  Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
204  Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy ();
205  enbPhy->SetAttribute ("TxPower", DoubleValue (30.0));
206  enbPhy->SetAttribute ("NoiseFigure", DoubleValue (5.0));
207 
208  // Set UEs' position and power
209  for (int i = 0; i < m_nUser; i++)
210  {
212  mm->SetPosition (Vector (m_dist.at (i), 0.0, 0.0));
213  Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get (i)->GetObject<LteUeNetDevice> ();
214  Ptr<LteUePhy> uePhy = lteUeDev->GetPhy ();
215  uePhy->SetAttribute ("TxPower", DoubleValue (23.0));
216  uePhy->SetAttribute ("NoiseFigure", DoubleValue (9.0));
217  }
218 
219  // Install the IP stack on the UEs
220  internet.Install (ueNodes);
221  Ipv4InterfaceContainer ueIpIface;
222  ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueDevs));
223 
224  // Assign IP address to UEs
225  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
226  {
227  Ptr<Node> ueNode = ueNodes.Get (u);
228  // Set the default gateway for the UE
229  Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
230  ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
231  }
232 
233  // Attach a UE to a eNB
234  lteHelper->Attach (ueDevs, enbDevs.Get (0));
235 
236  // Activate an EPS bearer on all UEs
237 
238  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
239  {
240  Ptr<NetDevice> ueDevice = ueDevs.Get (u);
241  GbrQosInformation qos;
242  qos.gbrDl = (m_packetSize.at (u) + 32) * (1000 / m_interval) * 8; // bit/s, considering IP, UDP, RLC, PDCP header size
243  qos.gbrUl = (m_packetSize.at (u) + 32) * (1000 / m_interval) * 8;
244  qos.mbrDl = qos.gbrDl;
245  qos.mbrUl = qos.gbrUl;
246 
248  EpsBearer bearer (q, qos);
249  bearer.arp.priorityLevel = 15 - (u + 1);
250  bearer.arp.preemptionCapability = true;
251  bearer.arp.preemptionVulnerability = true;
252  lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default ());
253  }
254 
255 
256  // Install downlink and uplink applications
257  uint16_t dlPort = 1234;
258  uint16_t ulPort = 2000;
259  PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
262 
263  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
264  {
265  ++ulPort;
266  serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive packets from remotehost
267  PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
268  serverApps.Add (ulPacketSinkHelper.Install (remoteHost)); // receive packets from UEs
269 
270  UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink packets generator
271  dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
272  dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
273  dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
274 
275  UdpClientHelper ulClient (remoteHostAddr, ulPort); // downlink packets generator
276  ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
277  ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
278  ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
279 
280  clientApps.Add (dlClient.Install (remoteHost));
281  clientApps.Add (ulClient.Install (ueNodes.Get (u)));
282  }
283 
284 
285  serverApps.Start (Seconds (0.030));
286  clientApps.Start (Seconds (0.030));
287 
288  double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
289  double statsDuration = 1.0;
290  double tolerance = 0.1;
291 
292  lteHelper->EnableRlcTraces ();
293  Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats ();
294  rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
295  rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
296 
297 
298  //get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
299  Ptr<NetDevice> ueDevice = ueDevs.Get (0);
300  Ptr<NetDevice> enbDevice = enbDevs.Get (0);
301 
302  /*
303  * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime
304  * Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
305  */
306  Time deActivateTime (Seconds (1.5));
307  Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2);
308 
309  //stop simulation after 3 seconds
310  Simulator::Stop (Seconds (3.0));
311 
312  Simulator::Run ();
313 
314  NS_LOG_INFO ("DL - Test with " << m_nUser << " user(s)");
315  std::vector <uint64_t> dlDataRxed;
316  std::vector <uint64_t> dlDataTxed;
317  for (int i = 0; i < m_nUser; i++)
318  {
319  // get the imsi
320  uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
321  // get the lcId
322  // lcId is hard-coded, since only one dedicated bearer is added
323  uint8_t lcId = 4;
324  dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
325  dlDataTxed.push_back (rlcStats->GetDlTxData (imsi, lcId));
326  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));
327  NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)dlDataTxed.at (i) << " thr " << (double)dlDataTxed.at (i) / statsDuration);
328  }
329 
330  for (int i = 0; i < m_nUser; i++)
331  {
332  uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
333 
334  /*
335  * For UE ID-0 IMSI 1, LCID=4 is deactivated hence If traffic seen on it, test case should fail
336  * Else For other UE's, test case should validate throughput
337  */
338  if (imsi == 1)
339  {
340  NS_TEST_ASSERT_MSG_EQ ((double)dlDataTxed.at (i), 0, "Invalid LCID in Statistics ");
341  }
342  else
343  {
344  NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataTxed.at (i) / statsDuration, m_estThrPssDl.at (i), m_estThrPssDl.at (i) * tolerance, " Unfair Throughput!");
345  }
346  }
347 
349 }
350 }
ns3::NetDeviceContainer
holds a vector of ns3::NetDevice pointers
Definition: net-device-container.h:42
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
ns3::InetSocketAddress
an Inet address class
Definition: inet-socket-address.h:41
ns3::DataRateValue
AttributeValue implementation for DataRate.
Definition: data-rate.h:298
ns3::UdpClientHelper::SetAttribute
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created.
Definition: udp-client-server-helper.cc:87
ns3::UdpClientHelper
Create a client application which sends UDP packets carrying a 32bit sequence number and a 64 bit tim...
Definition: udp-client-server-helper.h:94
ns3::TestCase::AddTestCase
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:299
ns3::LteHelper::GetRlcStats
Ptr< RadioBearerStatsCalculator > GetRlcStats(void)
Definition: lte-helper.cc:1573
ns3::EpsBearer::arp
AllocationRetentionPriority arp
allocation retention priority
Definition: eps-bearer.h:132
ns3::BooleanValue
AttributeValue implementation for Boolean.
Definition: boolean.h:37
ns3::NoBackhaulEpcHelper::GetPgwNode
virtual Ptr< Node > GetPgwNode() const
Get the PGW node.
Definition: no-backhaul-epc-helper.cc:498
ns3::ConstantPositionMobilityModel
Mobility model for which the current position does not change once it has been set and until it is se...
Definition: constant-position-mobility-model.h:33
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::Ipv4AddressHelper
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
Definition: ipv4-address-helper.h:48
ns3::LenaDeactivateBearerTestCase::m_interval
uint16_t m_interval
interval time in ms
Definition: lte-test-deactivate-bearer.h:54
ns3::PointToPointHelper::SetDeviceAttribute
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
Definition: point-to-point-helper.cc:69
ns3::LteHelper::InstallEnbDevice
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition: lte-helper.cc:474
ns3::PointToPointHelper::SetChannelAttribute
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
Definition: point-to-point-helper.cc:75
ns3::LenaDeactivateBearerTestCase::~LenaDeactivateBearerTestCase
virtual ~LenaDeactivateBearerTestCase()
Definition: lte-test-deactivate-bearer.cc:124
ns3::Object::GetObject
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Definition: object.h:470
ns3::LteHelper::InstallUeDevice
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:489
ns3::GbrQosInformation::gbrDl
uint64_t gbrDl
Guaranteed Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:42
ns3::PointToPointHelper::Install
NetDeviceContainer Install(NodeContainer c)
Definition: point-to-point-helper.cc:222
ns3::Ipv4Address
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
ns3::NodeContainer::GetN
uint32_t GetN(void) const
Get the number of Ptr<Node> stored in this container.
Definition: node-container.cc:88
ns3::ObjectBase::SetAttribute
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Definition: object-base.cc:185
ns3::EpsBearer::Qci
Qci
QoS Class Indicator.
Definition: eps-bearer.h:107
ns3::Simulator::Schedule
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition: simulator.h:557
ns3::DoubleValue
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition: double.h:41
ns3::NodeContainer::Create
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Definition: node-container.cc:98
lte-test-deactivate-bearer.h
ns3::LteEnbNetDevice::GetPhy
Ptr< LteEnbPhy > GetPhy(void) const
Definition: lte-enb-net-device.cc:194
ns3::NoBackhaulEpcHelper::GetUeDefaultGatewayAddress
virtual Ipv4Address GetUeDefaultGatewayAddress()
Definition: no-backhaul-epc-helper.cc:523
ns3::LenaDeactivateBearerTestCase::m_errorModelEnabled
bool m_errorModelEnabled
error mode enabled?
Definition: lte-test-deactivate-bearer.h:56
ns3::TestCase
encapsulates test code
Definition: test.h:1154
ns3::GbrQosInformation::mbrUl
uint64_t mbrUl
Maximum Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:45
ns3::Ipv4AddressHelper::SetBase
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
Definition: ipv4-address-helper.cc:64
ns3::Ipv4
Access to the IPv4 forwarding table, interfaces, and configuration.
Definition: ipv4.h:77
ns3::Ipv4StaticRoutingHelper
Helper class that adds ns3::Ipv4StaticRouting objects.
Definition: ipv4-static-routing-helper.h:43
ns3::EpcTft::Default
static Ptr< EpcTft > Default()
creates a TFT matching any traffic
Definition: epc-tft.cc:224
ns3::Ptr< LteHelper >
ns3::DataRate
Class for representing data rates.
Definition: data-rate.h:89
ns3::LenaDeactivateBearerTestCase
Test case that for testing the deactivation of the bearer functionality.
Definition: lte-test-deactivate-bearer.h:26
ns3::AllocationRetentionPriority::preemptionVulnerability
bool preemptionVulnerability
true if bearer can be preempted by others
Definition: eps-bearer.h:61
ns3::AllocationRetentionPriority::preemptionCapability
bool preemptionCapability
true if bearer can preempt others
Definition: eps-bearer.h:60
ns3::Ipv4StaticRoutingHelper::GetStaticRouting
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...
Definition: ipv4-static-routing-helper.cc:58
ns3::Simulator::Stop
static void Stop(void)
Tell the Simulator the calling event should be the last one executed.
Definition: simulator.cc:180
ns3::GbrQosInformation
3GPP TS 36.413 9.2.1.18 GBR QoS Information
Definition: eps-bearer.h:36
ns3::LteHelper::SetEpcHelper
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
ns3::InternetStackHelper::Install
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
Definition: internet-stack-helper.cc:366
ns3::NoBackhaulEpcHelper::AssignUeIpv4Address
virtual Ipv4InterfaceContainer AssignUeIpv4Address(NetDeviceContainer ueDevices)
Assign IPv4 addresses to UE devices.
Definition: no-backhaul-epc-helper.cc:504
NS_LOG_INFO
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Definition: log.h:281
NS_TEST_ASSERT_MSG_EQ_TOL
#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:378
ns3::MilliSeconds
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1297
ns3::LteUeNetDevice
The LteUeNetDevice class implements the UE net device.
Definition: lte-ue-net-device.h:57
ns3::lenaTestBearerDeactivateSuite
static LenaTestBearerDeactivateSuite lenaTestBearerDeactivateSuite
the test suite
Definition: lte-test-deactivate-bearer.cc:97
ns3::Ipv4InterfaceContainer
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Definition: ipv4-interface-container.h:55
ns3::LteHelper::DeActivateDedicatedEpsBearer
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:1273
ns3::NodeContainer::Get
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
Definition: node-container.cc:93
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::LenaDeactivateBearerTestCase::LenaDeactivateBearerTestCase
LenaDeactivateBearerTestCase(std::vector< uint16_t > dist, std::vector< uint32_t > estThrPssDl, std::vector< uint16_t > packetSize, uint16_t interval, bool errorModelEnabled, bool useIdealRrc)
Constructor.
Definition: lte-test-deactivate-bearer.cc:113
ns3::LenaDeactivateBearerTestCase::m_estThrPssDl
std::vector< uint32_t > m_estThrPssDl
estimated threshold PSS DL
Definition: lte-test-deactivate-bearer.h:55
ns3::LteHelper::ActivateDedicatedEpsBearer
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:1069
ns3::LteHelper::EnableRlcTraces
void EnableRlcTraces(void)
Enable trace sinks for RLC layer.
Definition: lte-helper.cc:1436
ns3::Simulator::Run
static void Run(void)
Run the simulation.
Definition: simulator.cc:172
ns3::StringValue
Hold variables of type string.
Definition: string.h:41
ns3::GbrQosInformation::mbrDl
uint64_t mbrDl
Maximum Bit Rate (bit/s) in downlink.
Definition: eps-bearer.h:44
ns3::PacketSinkHelper
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes.
Definition: packet-sink-helper.h:36
ns3::LenaDeactivateBearerTestCase::m_dist
std::vector< uint16_t > m_dist
distance between the nodes
Definition: lte-test-deactivate-bearer.h:52
ns3::TestSuite
A suite of tests to run.
Definition: test.h:1344
first.clientApps
clientApps
Definition: first.py:61
ns3::GbrQosInformation::gbrUl
uint64_t gbrUl
Guaranteed Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:43
NS_TEST_ASSERT_MSG_EQ
#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:166
ns3::EpsBearer
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:92
ns3::Ipv4Address::GetAny
static Ipv4Address GetAny(void)
Definition: ipv4-address.cc:395
packetSize
static const uint32_t packetSize
Definition: wifi-power-adaptation-distance.cc:113
ns3::LenaDeactivateBearerTestCase::BuildNameString
static std::string BuildNameString(uint16_t nUser, std::vector< uint16_t > dist)
Build name string function.
Definition: lte-test-deactivate-bearer.cc:101
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
ns3::EpsBearer::GBR_CONV_VOICE
@ GBR_CONV_VOICE
GBR Conversational Voice.
Definition: eps-bearer.h:108
ns3::Ipv4AddressHelper::Assign
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
Definition: ipv4-address-helper.cc:135
ns3::Simulator::Destroy
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:136
ns3::ApplicationContainer
holds a vector of ns3::Application pointers.
Definition: application-container.h:43
first.serverApps
serverApps
Definition: first.py:52
ns3::UdpClientHelper::Install
ApplicationContainer Install(NodeContainer c)
Definition: udp-client-server-helper.cc:93
ns3::LenaDeactivateBearerTestCase::m_nUser
uint16_t m_nUser
number of UE nodes
Definition: lte-test-deactivate-bearer.h:51
ns3::TimeValue
AttributeValue implementation for Time.
Definition: nstime.h:1353
ns3::PointToPointHelper
Build a set of PointToPointNetDevice objects.
Definition: point-to-point-helper.h:45
ns3::NodeContainer
keep track of a set of node pointers.
Definition: node-container.h:39
ns3::Ipv4Mask
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:256
ns3::LteHelper::Attach
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:961
ns3::Ipv4InterfaceContainer::GetAddress
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
Definition: ipv4-interface-container.cc:59
ns3::UintegerValue
Hold an unsigned integer type.
Definition: uinteger.h:44
ns3::Config::SetDefault
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:849
ns3::LenaTestBearerDeactivateSuite
The test suite class for the LenaDeactivateBearerTestCase.
Definition: lte-test-deactivate-bearer.h:68
ns3::LteHelper::SetSchedulerType
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
Definition: lte-helper.cc:279
ns3::LenaDeactivateBearerTestCase::DoRun
virtual void DoRun(void)
Implementation to actually run this TestCase.
Definition: lte-test-deactivate-bearer.cc:129
ns3::TestCase::QUICK
@ QUICK
Fast test.
Definition: test.h:1159
ns3::InternetStackHelper
aggregate IP/TCP/UDP functionality to existing Nodes.
Definition: internet-stack-helper.h:88
ns3::LenaDeactivateBearerTestCase::m_packetSize
std::vector< uint16_t > m_packetSize
packet size in bytes
Definition: lte-test-deactivate-bearer.h:53
ns3::NetDeviceContainer::Get
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Definition: net-device-container.cc:62
ns3::LenaTestBearerDeactivateSuite::LenaTestBearerDeactivateSuite
LenaTestBearerDeactivateSuite()
Definition: lte-test-deactivate-bearer.cc:63
ns3::LteEnbNetDevice
The eNodeB device implementation.
Definition: lte-enb-net-device.h:57
ns3::MobilityHelper
Helper class used to assign positions and mobility models to nodes.
Definition: mobility-helper.h:43
third.mobility
mobility
Definition: third.py:108
ns3::PacketSinkHelper::Install
ApplicationContainer Install(NodeContainer c) const
Install an ns3::PacketSinkApplication on each node of the input container configured with all the att...
Definition: packet-sink-helper.cc:55
ns3::TestCase::CreateTempDirFilename
std::string CreateTempDirFilename(std::string filename)
Construct the full path to a file in a temporary directory.
Definition: test.cc:430
ns3::AllocationRetentionPriority::priorityLevel
uint8_t priorityLevel
1-15; 1 = highest
Definition: eps-bearer.h:59