23 #include "ns3/simulator.h"
26 #include "ns3/lte-helper.h"
27 #include "ns3/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"
72 interPacketInterval (
Seconds (i))
83 std::vector<UeTestData>
ues;
94 virtual void DoRun (
void);
121 epcHelper->SetAttribute (
"S1uLinkMtu",
UintegerValue (30000));
123 Ptr<Node> pgw = epcHelper->GetPgwNode ();
127 remoteHostContainer.
Create (1);
130 internet.
Install (remoteHostContainer);
139 ipv4h.
SetBase (
"1.0.0.0",
"255.0.0.0");
166 uint16_t ulPort = 1000;
168 for (std::vector<EnbTestData>::iterator enbit =
m_enbTestData.begin ();
170 ++enbit, ++enbLteDevIt)
177 ues.
Create (enbit->ues.size ());
187 lteHelper->
Attach (ueLteDevs, *enbLteDevIt);
195 for (uint32_t u = 0; u < ues.GetN (); ++u)
203 ueStaticRouting->
SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
205 uint16_t dlPort = 2000;
206 for (uint32_t b = 0; b < enbit->ues.at (u).bearers.size (); ++b)
208 BearerTestData& bearerTestData = enbit->ues.at (u).bearers.at (b);
221 apps = client.Install (remoteHost);
237 apps = client.Install (ue);
247 dlpf.localPortEnd = dlPort;
260 Config::Set (
"/NodeList/*/DeviceList/*/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/MaxTxBufferSize",
262 Config::Set (
"/NodeList/*/DeviceList/*/LteUeRrc/RadioBearerMap/*/LteRlc/MaxTxBufferSize",
274 static uint64_t imsiCounter = 0;
276 for (std::vector<EnbTestData>::iterator enbit =
m_enbTestData.begin ();
280 for (std::vector<UeTestData>::iterator ueit = enbit->ues.begin ();
281 ueit < enbit->ues.end ();
284 uint64_t imsi = ++imsiCounter;
285 for (uint32_t b = 0; b < ueit->bearers.size (); ++b)
289 ueit->bearers.at (b).numPkts,
290 "wrong TX PDCP packets in downlink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
292 ueit->bearers.at (b).numPkts,
293 "wrong RX PDCP packets in downlink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
295 ueit->bearers.at (b).numPkts,
296 "wrong TX PDCP packets in uplink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
298 ueit->bearers.at (b).numPkts,
299 "wrong RX PDCP packets in uplink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
302 (ueit->bearers.at (b).numPkts) * (ueit->bearers.at (b).pktSize),
303 "wrong total received bytes in downlink");
305 (ueit->bearers.at (b).numPkts) * (ueit->bearers.at (b).pktSize),
306 "wrong total received bytes in uplink");
331 std::vector<EnbTestData> v1;
336 e1.
ues.push_back (u1);
340 std::vector<EnbTestData> v2;
345 e2.
ues.push_back (u2_1);
349 e2.
ues.push_back (u2_2);
353 std::vector<EnbTestData> v3;
362 e4.
ues.push_back (u4_1);
366 e4.
ues.push_back (u4_2);
370 e4.
ues.push_back (u4_3);
371 std::vector<EnbTestData> v4;
381 e5.
ues.push_back (u5);
382 std::vector<EnbTestData> v5;
391 e6.
ues.push_back (u6);
392 std::vector<EnbTestData> v6;
402 e7.
ues.push_back (u7);
403 std::vector<EnbTestData> v7;
411 e8.
ues.push_back (u8);
412 std::vector<EnbTestData> v8;
421 e9.
ues.push_back (u9);
422 std::vector<EnbTestData> v9;