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