A Discrete-Event Network Simulator
API
test-lte-epc-e2e-data.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 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: Nicola Baldo <nbaldo@cttc.es>
19  */
20 
21 
22 
23 #include "ns3/simulator.h"
24 #include "ns3/log.h"
25 #include "ns3/test.h"
26 #include "ns3/lte-helper.h"
27 #include "ns3/point-to-point-epc-helper.h"
28 #include "ns3/packet-sink-helper.h"
29 #include "ns3/udp-client-server-helper.h"
30 #include "ns3/udp-echo-helper.h"
31 #include "ns3/point-to-point-helper.h"
32 #include "ns3/internet-stack-helper.h"
33 #include "ns3/ipv4-address-helper.h"
34 #include "ns3/inet-socket-address.h"
35 #include "ns3/packet-sink.h"
36 #include <ns3/ipv4-static-routing-helper.h>
37 #include <ns3/ipv4-static-routing.h>
38 #include "ns3/boolean.h"
39 #include "ns3/uinteger.h"
40 #include "ns3/double.h"
41 #include "ns3/abort.h"
42 #include "ns3/mobility-helper.h"
43 
44 
45 
46 
47 using namespace ns3;
48 
49 NS_LOG_COMPONENT_DEFINE ("LteEpcE2eData");
50 
51 
57 struct BearerTestData
59 {
67  BearerTestData (uint32_t n, uint32_t s, double i);
68 
69  uint32_t numPkts;
70  uint32_t pktSize;
72 
75 
78 };
79 
80  BearerTestData::BearerTestData (uint32_t n, uint32_t s, double i)
81  : numPkts (n),
82  pktSize (s),
83  interPacketInterval (Seconds (i))
84 {
85 }
86 
88 struct UeTestData
89 {
90  std::vector<BearerTestData> bearers;
91 };
92 
95 {
96  std::vector<UeTestData> ues;
97 };
98 
99 
109 {
110 public:
117  LteEpcE2eDataTestCase (std::string name, std::vector<EnbTestData> v);
118  virtual ~LteEpcE2eDataTestCase ();
119 
120 private:
121  virtual void DoRun (void);
122  std::vector<EnbTestData> m_enbTestData;
123 };
124 
125 
126 LteEpcE2eDataTestCase::LteEpcE2eDataTestCase (std::string name, std::vector<EnbTestData> v)
127  : TestCase (name),
128  m_enbTestData (v)
129 {
130  NS_LOG_FUNCTION (this << name);
131 }
132 
134 {
135 }
136 
137 void
139 {
140  NS_LOG_FUNCTION (this << GetName ());
141  Config::Reset ();
142  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
143  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
144  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
145  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
146  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
147  lteHelper->SetEpcHelper (epcHelper);
148 
149  lteHelper->SetAttribute("PathlossModel",
150  StringValue("ns3::FriisPropagationLossModel"));
151 
152  // allow jumbo frames on the S1-U link
153  epcHelper->SetAttribute ("S1uLinkMtu", UintegerValue (30000));
154 
155  Ptr<Node> pgw = epcHelper->GetPgwNode ();
156 
157  // Create a single RemoteHost
158  NodeContainer remoteHostContainer;
159  remoteHostContainer.Create (1);
160  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
161  InternetStackHelper internet;
162  internet.Install (remoteHostContainer);
163 
164  // Create the internet
165  PointToPointHelper p2ph;
166  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
167  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (30000)); // jumbo frames here as well
168  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
169  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
170  Ipv4AddressHelper ipv4h;
171  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
172  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
173  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
174 
175  // setup default gateway for the remote hosts
176  Ipv4StaticRoutingHelper ipv4RoutingHelper;
177  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
178 
179  // hardcoded UE addresses for now
180  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.255.255.0"), 1);
181 
182 
183  NodeContainer enbs;
184  enbs.Create (m_enbTestData.size ());
185  MobilityHelper enbMobility;
186  enbMobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
187  enbMobility.SetPositionAllocator ("ns3::GridPositionAllocator",
188  "MinX", DoubleValue (0.0),
189  "MinY", DoubleValue (0.0),
190  "DeltaX", DoubleValue (10000.0),
191  "DeltaY", DoubleValue (10000.0),
192  "GridWidth", UintegerValue (3),
193  "LayoutType", StringValue ("RowFirst"));
194  enbMobility.Install (enbs);
195  NetDeviceContainer enbLteDevs = lteHelper->InstallEnbDevice (enbs);
196  NetDeviceContainer::Iterator enbLteDevIt = enbLteDevs.Begin ();
197 
198  uint16_t ulPort = 1000;
199 
200  for (std::vector<EnbTestData>::iterator enbit = m_enbTestData.begin ();
201  enbit < m_enbTestData.end ();
202  ++enbit, ++enbLteDevIt)
203  {
204  NS_ABORT_IF (enbLteDevIt == enbLteDevs.End ());
205 
206 
207 
208  NodeContainer ues;
209  ues.Create (enbit->ues.size ());
210  Vector enbPosition = (*enbLteDevIt)->GetNode ()->GetObject<MobilityModel> ()->GetPosition ();
211  MobilityHelper ueMobility;
212  ueMobility.SetPositionAllocator ("ns3::UniformDiscPositionAllocator",
213  "X", DoubleValue (enbPosition.x),
214  "Y", DoubleValue (enbPosition.y),
215  "rho", DoubleValue (100.0));
216  ueMobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
217  ueMobility.Install (ues);
218  NetDeviceContainer ueLteDevs = lteHelper->InstallUeDevice (ues);
219 
220  // we install the IP stack on the UEs
221  InternetStackHelper internet;
222  internet.Install (ues);
223 
224  // assign IP address to UEs, and install applications
225  for (uint32_t u = 0; u < ues.GetN (); ++u)
226  {
227 
228  Ptr<Node> ue = ues.Get (u);
229  Ptr<NetDevice> ueLteDevice = ueLteDevs.Get (u);
230  Ipv4InterfaceContainer ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueLteDevice));
231  // set the default gateway for the UE
232  Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ue->GetObject<Ipv4> ());
233  ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
234 
235 
236  // we can now attach the UE, which will also activate the default EPS bearer
237  lteHelper->Attach (ueLteDevice, *enbLteDevIt);
238 
239 
240  uint16_t dlPort = 2000;
241  for (uint32_t b = 0; b < enbit->ues.at (u).bearers.size (); ++b)
242  {
243  BearerTestData& bearerTestData = enbit->ues.at (u).bearers.at (b);
244 
245  { // Downlink
246  ++dlPort;
247  PacketSinkHelper packetSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
248  ApplicationContainer apps = packetSinkHelper.Install (ue);
249  apps.Start (Seconds (0.04));
250  bearerTestData.dlServerApp = apps.Get (0)->GetObject<PacketSink> ();
251 
252  UdpEchoClientHelper client (ueIpIface.GetAddress (0), dlPort);
253  client.SetAttribute ("MaxPackets", UintegerValue (bearerTestData.numPkts));
254  client.SetAttribute ("Interval", TimeValue (bearerTestData.interPacketInterval));
255  client.SetAttribute ("PacketSize", UintegerValue (bearerTestData.pktSize));
256  apps = client.Install (remoteHost);
257  apps.Start (Seconds (0.04));
258  bearerTestData.dlClientApp = apps.Get (0);
259  }
260 
261  { // Uplink
262  ++ulPort;
263  PacketSinkHelper packetSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
264  ApplicationContainer apps = packetSinkHelper.Install (remoteHost);
265  apps.Start (Seconds (0.8));
266  bearerTestData.ulServerApp = apps.Get (0)->GetObject<PacketSink> ();
267 
268  UdpEchoClientHelper client (remoteHostAddr, ulPort);
269  client.SetAttribute ("MaxPackets", UintegerValue (bearerTestData.numPkts));
270  client.SetAttribute ("Interval", TimeValue (bearerTestData.interPacketInterval));
271  client.SetAttribute ("PacketSize", UintegerValue (bearerTestData.pktSize));
272  apps = client.Install (ue);
273  apps.Start (Seconds (0.8));
274  bearerTestData.ulClientApp = apps.Get (0);
275  }
276 
277  EpsBearer epsBearer (EpsBearer::NGBR_VOICE_VIDEO_GAMING);
278 
279  Ptr<EpcTft> tft = Create<EpcTft> ();
281  dlpf.localPortStart = dlPort;
282  dlpf.localPortEnd = dlPort;
283  tft->Add (dlpf);
285  ulpf.remotePortStart = ulPort;
286  ulpf.remotePortEnd = ulPort;
287  tft->Add (ulpf);
288 
289  // all data will go over the dedicated bearer instead of the default EPS bearer
290  lteHelper->ActivateDedicatedEpsBearer (ueLteDevice, epsBearer, tft);
291  }
292  }
293 
294  }
295 
296  Config::Set ("/NodeList/*/DeviceList/*/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/MaxTxBufferSize",
297  UintegerValue (2 * 1024 * 1024));
298  Config::Set ("/NodeList/*/DeviceList/*/LteUeRrc/RadioBearerMap/*/LteRlc/MaxTxBufferSize",
299  UintegerValue (2 * 1024 * 1024));
300 
301 
302  double statsStartTime = 0.040; // need to allow for RRC connection establishment + SRS
303  double statsDuration = 2.0;
304 
305  lteHelper->EnablePdcpTraces ();
306 
307  lteHelper->GetPdcpStats ()->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
308  lteHelper->GetPdcpStats ()->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
309 
310 
311  Simulator::Stop (Seconds (statsStartTime + statsDuration - 0.0001));
312  Simulator::Run ();
313 
314  uint64_t imsiCounter = 0;
315 
316  for (std::vector<EnbTestData>::iterator enbit = m_enbTestData.begin ();
317  enbit < m_enbTestData.end ();
318  ++enbit)
319  {
320  for (std::vector<UeTestData>::iterator ueit = enbit->ues.begin ();
321  ueit < enbit->ues.end ();
322  ++ueit)
323  {
324  uint64_t imsi = ++imsiCounter;
325  for (uint32_t b = 0; b < ueit->bearers.size (); ++b)
326  {
327  // LCID 0, 1, 2 are for SRBs
328  // LCID 3 is (at the moment) the Default EPS bearer, and is unused in this test program
329  uint8_t lcid = b+4;
330  uint32_t expectedPkts = ueit->bearers.at (b).numPkts;
331  uint32_t expectedBytes = (ueit->bearers.at (b).numPkts) * (ueit->bearers.at (b).pktSize);
332  uint32_t txPktsPdcpDl = lteHelper->GetPdcpStats ()->GetDlTxPackets (imsi, lcid);
333  uint32_t rxPktsPdcpDl = lteHelper->GetPdcpStats ()->GetDlRxPackets (imsi, lcid);
334  uint32_t txPktsPdcpUl = lteHelper->GetPdcpStats ()->GetUlTxPackets (imsi, lcid);
335  uint32_t rxPktsPdcpUl = lteHelper->GetPdcpStats ()->GetUlRxPackets (imsi, lcid);
336  uint32_t rxBytesDl = ueit->bearers.at (b).dlServerApp->GetTotalRx ();
337  uint32_t rxBytesUl = ueit->bearers.at (b).ulServerApp->GetTotalRx ();
338 
339 
340  NS_TEST_ASSERT_MSG_EQ (txPktsPdcpDl,
341  expectedPkts,
342  "wrong TX PDCP packets in downlink for IMSI=" << imsi << " LCID=" << (uint16_t) lcid);
343 
344  NS_TEST_ASSERT_MSG_EQ (rxPktsPdcpDl,
345  expectedPkts,
346  "wrong RX PDCP packets in downlink for IMSI=" << imsi << " LCID=" << (uint16_t) lcid);
347  NS_TEST_ASSERT_MSG_EQ (txPktsPdcpUl,
348  expectedPkts,
349  "wrong TX PDCP packets in uplink for IMSI=" << imsi << " LCID=" << (uint16_t) lcid);
350  NS_TEST_ASSERT_MSG_EQ (rxPktsPdcpUl,
351  expectedPkts,
352  "wrong RX PDCP packets in uplink for IMSI=" << imsi << " LCID=" << (uint16_t) lcid);
353 
354  NS_TEST_ASSERT_MSG_EQ (rxBytesDl,
355  expectedBytes,
356  "wrong total received bytes in downlink");
357  NS_TEST_ASSERT_MSG_EQ (rxBytesUl,
358  expectedBytes,
359  "wrong total received bytes in uplink");
360  }
361  }
362  }
363 
364  Simulator::Destroy ();
365 }
366 
367 
368 
369 
370 
378 {
379 public:
381 
383 
385  : TestSuite ("lte-epc-e2e-data", SYSTEM)
386 {
387  std::vector<EnbTestData> v1;
388  EnbTestData e1;
389  UeTestData u1;
390  BearerTestData f1 (1, 100, 0.01);
391  u1.bearers.push_back (f1);
392  e1.ues.push_back (u1);
393  v1.push_back (e1);
394  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 1UE", v1), TestCase::QUICK);
395 
396  std::vector<EnbTestData> v2;
397  EnbTestData e2;
398  UeTestData u2_1;
399  BearerTestData f2_1 (1, 100, 0.01);
400  u2_1.bearers.push_back (f2_1);
401  e2.ues.push_back (u2_1);
402  UeTestData u2_2;
403  BearerTestData f2_2 (2, 200, 0.01);
404  u2_2.bearers.push_back (f2_2);
405  e2.ues.push_back (u2_2);
406  v2.push_back (e2);
407  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 2UEs", v2), TestCase::EXTENSIVE);
408 
409  std::vector<EnbTestData> v3;
410  v3.push_back (e1);
411  v3.push_back (e2);
412  AddTestCase (new LteEpcE2eDataTestCase ("2 eNBs", v3), TestCase::EXTENSIVE);
413 
414  EnbTestData e4;
415  UeTestData u4_1;
416  BearerTestData f4_1 (3, 50, 0.01);
417  u4_1.bearers.push_back (f4_1);
418  e4.ues.push_back (u4_1);
419  UeTestData u4_2;
420  BearerTestData f4_2 (5, 1400, 0.01);
421  u4_2.bearers.push_back (f4_2);
422  e4.ues.push_back (u4_2);
423  UeTestData u4_3;
424  BearerTestData f4_3 (1, 12, 0.01);
425  u4_3.bearers.push_back (f4_3);
426  e4.ues.push_back (u4_3);
427  std::vector<EnbTestData> v4;
428  v4.push_back (e4);
429  v4.push_back (e1);
430  v4.push_back (e2);
431  AddTestCase (new LteEpcE2eDataTestCase ("3 eNBs", v4), TestCase::EXTENSIVE);
432 
433  EnbTestData e5;
434  UeTestData u5;
435  BearerTestData f5 (5, 1000, 0.01);
436  u5.bearers.push_back (f5);
437  e5.ues.push_back (u5);
438  std::vector<EnbTestData> v5;
439  v5.push_back (e5);
440  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 1UE with 1000 byte packets", v5), TestCase::EXTENSIVE);
441 
442 
443  EnbTestData e6;
444  UeTestData u6;
445  BearerTestData f6 (5, 1400, 0.01);
446  u6.bearers.push_back (f6);
447  e6.ues.push_back (u6);
448  std::vector<EnbTestData> v6;
449  v6.push_back (e6);
450  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 1UE with 1400 byte packets", v6), TestCase::EXTENSIVE);
451 
452  EnbTestData e7;
453  UeTestData u7;
454  BearerTestData f7_1 (1, 1400, 0.01);
455  u7.bearers.push_back (f7_1);
456  BearerTestData f7_2 (1, 100, 0.01);
457  u7.bearers.push_back (f7_2);
458  e7.ues.push_back (u7);
459  std::vector<EnbTestData> v7;
460  v7.push_back (e7);
461  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 1UE with 2 bearers", v7), TestCase::EXTENSIVE);
462 
463  EnbTestData e8;
464  UeTestData u8;
465  BearerTestData f8 (50, 8000, 0.02); // watch out for ns3::LteRlcUm::MaxTxBufferSize
466  u8.bearers.push_back (f8);
467  e8.ues.push_back (u8);
468  std::vector<EnbTestData> v8;
469  v8.push_back (e8);
470  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 1UE with fragmentation", v8), TestCase::EXTENSIVE);
471 
472 
473  EnbTestData e9;
474  UeTestData u9;
475  BearerTestData f9 (1000, 20, 0.0001);
476  u9.bearers.push_back (f9);
477  e9.ues.push_back (u9);
478  std::vector<EnbTestData> v9;
479  v9.push_back (e9);
480  AddTestCase (new LteEpcE2eDataTestCase ("1 eNB, 1UE with aggregation", v9), TestCase::EXTENSIVE);
481 
482 
483 }
holds a vector of ns3::Application pointers.
uint8_t Add(PacketFilter f)
add a PacketFilter to the Traffic Flow Template
Definition: epc-tft.cc:224
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
an Inet address class
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
UeTestData structure.
AttributeValue implementation for Boolean.
Definition: boolean.h:36
Test that the S1-U interface implementation works correctly.
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.
void SetDefaultRoute(Ipv4Address nextHop, uint32_t interface, uint32_t metric=0)
Add a default route to the static routing table.
Iterator End(void) const
Get an iterator which indicates past-the-last NetDevice in the container.
Hold variables of type string.
Definition: string.h:41
void Set(std::string path, const AttributeValue &value)
Definition: config.cc:777
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
EnbTestData structure.
static Vector GetPosition(Ptr< Node > node)
Definition: multirate.cc:341
Create an application which sends a UDP packet and waits for an echo of this packet.
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
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.
std::vector< EnbTestData > m_enbTestData
the ENB test data
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
virtual void DoRun(void)
Implementation to actually run this TestCase.
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
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
Class for representing data rates.
Definition: data-rate.h:88
void EnablePdcpTraces(void)
Enable trace sinks for PDCP layer.
Definition: lte-helper.cc:1574
Keep track of the current position and velocity of an object.
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
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
Iterator Begin(void) const
Get an iterator which refers to the first NetDevice in the container.
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
Ptr< Application > ulClientApp
the UL client app
std::vector< BearerTestData > bearers
the bearer test data
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
std::vector< UeTestData > ues
the list of UEs
Ptr< PacketSink > ulServerApp
the UL server app
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
uint16_t remotePortEnd
end of the port number range of the remote host
Definition: epc-tft.h:135
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
Ptr< Application > dlClientApp
the DL client app
LteEpcE2eDataTestCase(std::string name, std::vector< EnbTestData > v)
Constructor.
uint32_t pktSize
the packet size
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
Test that e2e packet flow is correct.
Time interPacketInterval
the inter packet interval time
void Reset(void)
Reset the initial value of every attribute as well as the value of every global to what they were bef...
Definition: config.cc:757
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:489
Ptr< RadioBearerStatsCalculator > GetPdcpStats(void)
Definition: lte-helper.cc:1582
Helper class used to assign positions and mobility models to nodes.
void AddNetworkRouteTo(Ipv4Address network, Ipv4Mask networkMask, Ipv4Address nextHop, uint32_t interface, uint32_t metric=0)
Add a network route to the static routing table.
#define NS_ABORT_IF(cond)
Abnormal program termination if a condition is true.
Definition: abort.h:77
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...
std::string GetName(void) const
Definition: test.cc:370
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
LteEpcE2eDataTestSuite g_lteEpcE2eDataTestSuite
the test suite
Helper class that adds ns3::Ipv4StaticRouting objects.
AttributeValue implementation for DataRate.
Definition: data-rate.h:242
std::vector< Ptr< NetDevice > >::const_iterator Iterator
NetDevice container iterator.
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< PacketSink > dlServerApp
the DL server app
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created.
Receive and consume traffic generated to an IP address and port.
Definition: packet-sink.h:68
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Set the position allocator which will be used to allocate the initial position of every node initiali...
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
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Definition: object-base.cc:185
BearerTestData(uint32_t n, uint32_t s, double i)
Constructor.
uint32_t numPkts
the number of packets
Ptr< Application > Get(uint32_t i) const
Get the Ptr<Application> stored in this container at a given index.
uint16_t remotePortStart
start of the port number range of the remote host
Definition: epc-tft.h:134
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.
Implement the data structure representing a TrafficFlowTemplate Packet Filter.
Definition: epc-tft.h:74
uint16_t localPortStart
start of the port number range of the UE
Definition: epc-tft.h:136