A Discrete-Event Network Simulator
API
lte-test-deactivate-bearer.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author:Gaurav Sathe <gaurav.sathe@tcs.com>
18 */
19
21
22#include "ns3/applications-module.h"
23#include "ns3/double.h"
24#include "ns3/internet-module.h"
25#include "ns3/ipv4-global-routing-helper.h"
26#include "ns3/network-module.h"
27#include "ns3/point-to-point-epc-helper.h"
28#include "ns3/point-to-point-helper.h"
29#include "ns3/radio-bearer-stats-calculator.h"
30#include "ns3/string.h"
31#include <ns3/boolean.h>
32#include <ns3/constant-position-mobility-model.h>
33#include <ns3/enum.h>
34#include <ns3/eps-bearer.h>
35#include <ns3/log.h>
36#include <ns3/lte-enb-net-device.h>
37#include <ns3/lte-enb-phy.h>
38#include <ns3/lte-helper.h>
39#include <ns3/lte-ue-net-device.h>
40#include <ns3/lte-ue-phy.h>
41#include <ns3/lte-ue-rrc.h>
42#include <ns3/mobility-helper.h>
43#include <ns3/net-device-container.h>
44#include <ns3/node-container.h>
45#include <ns3/object.h>
46#include <ns3/packet.h>
47#include <ns3/ptr.h>
48#include <ns3/rng-seed-manager.h>
49#include <ns3/simulator.h>
50#include <ns3/spectrum-error-model.h>
51#include <ns3/spectrum-interference.h>
52#include <ns3/test.h>
53
54#include <iostream>
55#include <sstream>
56#include <string>
57
58NS_LOG_COMPONENT_DEFINE("LenaTestDeactivateBearer");
59
60namespace ns3
61{
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
74 // 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
96 new LenaDeactivateBearerTestCase(dist_1, estThrPssDl_1, packetSize_1, 1, errorModel, true),
98}
99
101
102std::string
103LenaDeactivateBearerTestCase::BuildNameString(uint16_t nUser, std::vector<uint16_t> dist)
104{
105 std::ostringstream oss;
106 oss << "distances (m) = [ ";
107 for (std::vector<uint16_t>::iterator it = dist.begin(); it != dist.end(); ++it)
108 {
109 oss << *it << " ";
110 }
111 oss << "]";
112 return oss.str();
113}
114
116 std::vector<uint32_t> estThrPssDl,
117 std::vector<uint16_t> packetSize,
118 uint16_t interval,
119 bool errorModelEnabled,
120 bool useIdealRrc)
121 : TestCase(BuildNameString(dist.size(), dist)),
122 m_nUser(dist.size()),
123 m_dist(dist),
124 m_packetSize(packetSize),
125 m_interval(interval),
126 m_estThrPssDl(estThrPssDl),
127 m_errorModelEnabled(errorModelEnabled)
128{
129}
130
132{
133}
134
135void
137{
138 uint32_t originalSeed = RngSeedManager::GetSeed();
139 uint32_t originalRun = RngSeedManager::GetRun();
142
144 {
145 Config::SetDefault("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue(false));
146 Config::SetDefault("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue(false));
147 }
148
149 Config::SetDefault("ns3::LteHelper::UseIdealRrc", BooleanValue(true));
150 Config::SetDefault("ns3::RadioBearerStatsCalculator::DlRlcOutputFilename",
151 StringValue(CreateTempDirFilename("DlRlcStats.txt")));
152 Config::SetDefault("ns3::RadioBearerStatsCalculator::UlRlcOutputFilename",
153 StringValue(CreateTempDirFilename("UlRlcStats.txt")));
154
155 Ptr<LteHelper> lteHelper = CreateObject<LteHelper>();
156 Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper>();
157 lteHelper->SetEpcHelper(epcHelper);
158
159 Ptr<Node> pgw = epcHelper->GetPgwNode();
160
161 // Create a single RemoteHost
162 NodeContainer remoteHostContainer;
163 remoteHostContainer.Create(1);
164 Ptr<Node> remoteHost = remoteHostContainer.Get(0);
165 InternetStackHelper internet;
166 internet.Install(remoteHostContainer);
167
168 // Create the Internet
170 p2ph.SetDeviceAttribute("DataRate", DataRateValue(DataRate("100Gb/s")));
171 p2ph.SetDeviceAttribute("Mtu", UintegerValue(1500));
172 p2ph.SetChannelAttribute("Delay", TimeValue(Seconds(0.001)));
173 NetDeviceContainer internetDevices = p2ph.Install(pgw, remoteHost);
174 Ipv4AddressHelper ipv4h;
175 ipv4h.SetBase("1.0.0.0", "255.0.0.0");
176 Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign(internetDevices);
177 // interface 0 is localhost, 1 is the p2p device
178 Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress(1);
179
180 Ipv4StaticRoutingHelper ipv4RoutingHelper;
181 Ptr<Ipv4StaticRouting> remoteHostStaticRouting =
182 ipv4RoutingHelper.GetStaticRouting(remoteHost->GetObject<Ipv4>());
183 remoteHostStaticRouting->AddNetworkRouteTo(Ipv4Address("7.0.0.0"), Ipv4Mask("255.0.0.0"), 1);
184
185 // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
186
187 // LogComponentEnable ("LenaTestDeactivateBearer", LOG_LEVEL_ALL);
188 // LogComponentEnable ("LteHelper", logLevel);
189 // LogComponentEnable ("EpcHelper", logLevel);
190 // LogComponentEnable ("EpcEnbApplication", logLevel);
191 // LogComponentEnable ("EpcMmeApplication", logLevel);
192 // LogComponentEnable ("EpcPgwApplication", logLevel);
193 // LogComponentEnable ("EpcSgwApplication", logLevel);
194 // LogComponentEnable ("LteEnbRrc", logLevel);
195
196 lteHelper->SetAttribute("PathlossModel", StringValue("ns3::FriisSpectrumPropagationLossModel"));
197
198 // Create Nodes: eNodeB and UE
199 NodeContainer enbNodes;
200 NodeContainer ueNodes;
201 enbNodes.Create(1);
202 ueNodes.Create(m_nUser);
203
204 // Install Mobility Model
206 mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
207 mobility.Install(enbNodes);
208 mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
209 mobility.Install(ueNodes);
210
211 // Create Devices and install them in the Nodes (eNB and UE)
212 NetDeviceContainer enbDevs;
213 NetDeviceContainer ueDevs;
214 int64_t stream = 1;
215
216 lteHelper->SetSchedulerType("ns3::PssFfMacScheduler");
217 enbDevs = lteHelper->InstallEnbDevice(enbNodes);
218 stream += lteHelper->AssignStreams(enbDevs, stream);
219
220 ueDevs = lteHelper->InstallUeDevice(ueNodes);
221 stream += lteHelper->AssignStreams(ueDevs, stream);
222
223 Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get(0)->GetObject<LteEnbNetDevice>();
224 Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy();
225 enbPhy->SetAttribute("TxPower", DoubleValue(30.0));
226 enbPhy->SetAttribute("NoiseFigure", DoubleValue(5.0));
227
228 // Set UEs' position and power
229 for (int i = 0; i < m_nUser; i++)
230 {
233 mm->SetPosition(Vector(m_dist.at(i), 0.0, 0.0));
234 Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get(i)->GetObject<LteUeNetDevice>();
235 Ptr<LteUePhy> uePhy = lteUeDev->GetPhy();
236 uePhy->SetAttribute("TxPower", DoubleValue(23.0));
237 uePhy->SetAttribute("NoiseFigure", DoubleValue(9.0));
238 }
239
240 // Install the IP stack on the UEs
241 internet.Install(ueNodes);
242 Ipv4InterfaceContainer ueIpIface;
243 ueIpIface = epcHelper->AssignUeIpv4Address(NetDeviceContainer(ueDevs));
244
245 // Assign IP address to UEs
246 for (uint32_t u = 0; u < ueNodes.GetN(); ++u)
247 {
248 Ptr<Node> ueNode = ueNodes.Get(u);
249 // Set the default gateway for the UE
250 Ptr<Ipv4StaticRouting> ueStaticRouting =
251 ipv4RoutingHelper.GetStaticRouting(ueNode->GetObject<Ipv4>());
252 ueStaticRouting->SetDefaultRoute(epcHelper->GetUeDefaultGatewayAddress(), 1);
253 }
254
255 // Attach a UE to a eNB
256 lteHelper->Attach(ueDevs, enbDevs.Get(0));
257
258 // Activate an EPS bearer on all UEs
259
260 for (uint32_t u = 0; u < ueNodes.GetN(); ++u)
261 {
262 Ptr<NetDevice> ueDevice = ueDevs.Get(u);
264 qos.gbrDl = (m_packetSize.at(u) + 32) * (1000 / m_interval) *
265 8; // bit/s, considering IP, UDP, RLC, PDCP header size
266 qos.gbrUl = (m_packetSize.at(u) + 32) * (1000 / m_interval) * 8;
267 qos.mbrDl = qos.gbrDl;
268 qos.mbrUl = qos.gbrUl;
269
271 EpsBearer bearer(q, qos);
272 bearer.arp.priorityLevel = 15 - (u + 1);
273 bearer.arp.preemptionCapability = true;
274 bearer.arp.preemptionVulnerability = true;
275 lteHelper->ActivateDedicatedEpsBearer(ueDevice, bearer, EpcTft::Default());
276 }
277
278 // Install downlink and uplink applications
279 uint16_t dlPort = 1234;
280 uint16_t ulPort = 2000;
281 PacketSinkHelper dlPacketSinkHelper("ns3::UdpSocketFactory",
285
286 for (uint32_t u = 0; u < ueNodes.GetN(); ++u)
287 {
288 ++ulPort;
289 serverApps.Add(
290 dlPacketSinkHelper.Install(ueNodes.Get(u))); // receive packets from remotehost
291 PacketSinkHelper ulPacketSinkHelper("ns3::UdpSocketFactory",
293 serverApps.Add(ulPacketSinkHelper.Install(remoteHost)); // receive packets from UEs
294
295 UdpClientHelper dlClient(ueIpIface.GetAddress(u), dlPort); // uplink packets generator
296 dlClient.SetAttribute("Interval", TimeValue(MilliSeconds(m_interval)));
297 dlClient.SetAttribute("MaxPackets", UintegerValue(1000000));
298 dlClient.SetAttribute("PacketSize", UintegerValue(m_packetSize.at(u)));
299
300 UdpClientHelper ulClient(remoteHostAddr, ulPort); // downlink packets generator
301 ulClient.SetAttribute("Interval", TimeValue(MilliSeconds(m_interval)));
302 ulClient.SetAttribute("MaxPackets", UintegerValue(1000000));
303 ulClient.SetAttribute("PacketSize", UintegerValue(m_packetSize.at(u)));
304
305 clientApps.Add(dlClient.Install(remoteHost));
306 clientApps.Add(ulClient.Install(ueNodes.Get(u)));
307 }
308
309 serverApps.Start(Seconds(0.030));
310 clientApps.Start(Seconds(0.030));
311
312 double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
313 double statsDuration = 1.0;
314 double tolerance = 0.1;
315
316 lteHelper->EnableRlcTraces();
317 Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats();
318 rlcStats->SetAttribute("StartTime", TimeValue(Seconds(statsStartTime)));
319 rlcStats->SetAttribute("EpochDuration", TimeValue(Seconds(statsDuration)));
320
321 // get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer
322 Ptr<NetDevice> ueDevice = ueDevs.Get(0);
323 Ptr<NetDevice> enbDevice = enbDevs.Get(0);
324
325 /*
326 * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer
327 * de-activation after deActivateTime Instantiate De-activation in sequence (Time const &time,
328 * MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3)
329 */
330 Time deActivateTime(Seconds(1.5));
331 Simulator::Schedule(deActivateTime,
333 lteHelper,
334 ueDevice,
335 enbDevice,
336 2);
337
338 // stop simulation after 3 seconds
340
342
343 NS_LOG_INFO("DL - Test with " << m_nUser << " user(s)");
344 std::vector<uint64_t> dlDataRxed;
345 std::vector<uint64_t> dlDataTxed;
346 for (int i = 0; i < m_nUser; i++)
347 {
348 // get the imsi
349 uint64_t imsi = ueDevs.Get(i)->GetObject<LteUeNetDevice>()->GetImsi();
350 // get the lcId
351 // lcId is hard-coded, since only one dedicated bearer is added
352 uint8_t lcId = 4;
353 dlDataRxed.push_back(rlcStats->GetDlRxData(imsi, lcId));
354 dlDataTxed.push_back(rlcStats->GetDlTxData(imsi, lcId));
355 NS_LOG_INFO("\tUser " << i << " dist " << m_dist.at(i) << " imsi " << imsi << " bytes rxed "
356 << (double)dlDataRxed.at(i) << " thr "
357 << (double)dlDataRxed.at(i) / statsDuration << " ref "
358 << m_estThrPssDl.at(i));
359 NS_LOG_INFO("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)dlDataTxed.at(i)
360 << " thr " << (double)dlDataTxed.at(i) / statsDuration);
361 }
362
363 for (int i = 0; i < m_nUser; i++)
364 {
365 uint64_t imsi = ueDevs.Get(i)->GetObject<LteUeNetDevice>()->GetImsi();
366
367 /*
368 * For UE ID-0 IMSI 1, LCID=4 is deactivated hence If traffic seen on it, test case should
369 * fail Else For other UE's, test case should validate throughput
370 */
371 if (imsi == 1)
372 {
373 NS_TEST_ASSERT_MSG_EQ((double)dlDataTxed.at(i), 0, "Invalid LCID in Statistics ");
374 }
375 else
376 {
377 NS_TEST_ASSERT_MSG_EQ_TOL((double)dlDataTxed.at(i) / statsDuration,
378 m_estThrPssDl.at(i),
379 m_estThrPssDl.at(i) * tolerance,
380 " Unfair Throughput!");
381 }
382 }
383
385
386 RngSeedManager::SetSeed(originalSeed);
387 RngSeedManager::SetRun(originalRun);
388}
389} // namespace ns3
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...
AttributeValue implementation for DataRate.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition: double.h:42
static Ptr< EpcTft > Default()
creates a TFT matching any traffic
Definition: epc-tft.cc:229
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:91
AllocationRetentionPriority arp
allocation retention priority
Definition: eps-bearer.h:138
Qci
QoS Class Indicator.
Definition: eps-bearer.h:106
@ GBR_CONV_VOICE
GBR Conversational Voice.
Definition: eps-bearer.h:107
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:43
static Ipv4Address GetAny()
Access to the IPv4 forwarding table, interfaces, and configuration.
Definition: ipv4.h:79
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:258
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
void DoRun() override
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() 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:282
Ptr< RadioBearerStatsCalculator > GetRlcStats()
Definition: lte-helper.cc:1708
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:1392
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition: lte-helper.cc:482
void SetSchedulerType(std::string type)
Set the type of scheduler to be used by eNodeB devices.
Definition: lte-helper.cc:289
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:1044
void EnableRlcTraces()
Enable trace sinks for RLC layer.
Definition: lte-helper.cc:1563
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:497
int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used.
Definition: lte-helper.cc:1572
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:1159
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.
Ptr< Node > GetPgwNode() const override
Get the PGW node.
Ipv4Address GetUeDefaultGatewayAddress() override
Ipv4InterfaceContainer AssignUeIpv4Address(NetDeviceContainer ueDevices) override
Assign IPv4 addresses to UE devices.
keep track of a set of node pointers.
uint32_t GetN() 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:258
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
Definition: object.h:471
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 void SetRun(uint64_t run)
Set the run number of simulation.
static void SetSeed(uint32_t seed)
Set the seed.
static uint64_t GetRun()
Get the current run number.
static uint32_t GetSeed()
Get the current seed value which will be used by all subsequently instantiated RandomVariableStream o...
static EventId Schedule(const Time &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition: simulator.h:568
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:140
static void Run()
Run the simulation.
Definition: simulator.cc:176
static void Stop()
Tell the Simulator the calling event should be the last one executed.
Definition: simulator.cc:184
Hold variables of type string.
Definition: string.h:42
encapsulates test code
Definition: test.h:1060
@ QUICK
Fast test.
Definition: test.h:1065
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:305
std::string CreateTempDirFilename(std::string filename)
Construct the full path to a file in a temporary directory.
Definition: test.cc:442
A suite of tests to run.
Definition: test.h:1256
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
AttributeValue implementation for Time.
Definition: nstime.h:1425
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:45
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:891
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:202
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Definition: log.h:275
void(* DataRate)(DataRate oldValue, DataRate newValue)
TracedValue callback signature for DataRate.
Definition: data-rate.h:328
#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:144
#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:337
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1338
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1350
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:96
bool preemptionVulnerability
true if bearer can be preempted by others
Definition: eps-bearer.h:60
bool preemptionCapability
true if bearer can preempt others
Definition: eps-bearer.h:59
uint8_t priorityLevel
1-15; 1 = highest
Definition: eps-bearer.h:58
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.