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);
126 epcHelper->SetAttribute (
"S1uLinkMtu",
UintegerValue (30000));
128 Ptr<Node> pgw = epcHelper->GetPgwNode ();
132 remoteHostContainer.
Create (1);
135 internet.
Install (remoteHostContainer);
144 ipv4h.
SetBase (
"1.0.0.0",
"255.0.0.0");
171 uint16_t ulPort = 1000;
173 for (std::vector<EnbTestData>::iterator enbit =
m_enbTestData.begin ();
175 ++enbit, ++enbLteDevIt)
182 ues.
Create (enbit->ues.size ());
198 for (uint32_t u = 0; u < ues.GetN (); ++u)
206 ueStaticRouting->
SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
210 lteHelper->
Attach (ueLteDevice, *enbLteDevIt);
213 uint16_t dlPort = 2000;
214 for (uint32_t b = 0; b < enbit->ues.at (u).bearers.size (); ++b)
216 BearerTestData& bearerTestData = enbit->ues.at (u).bearers.at (b);
229 apps = client.Install (remoteHost);
245 apps = client.Install (ue);
255 dlpf.localPortEnd = dlPort;
269 Config::Set (
"/NodeList/*/DeviceList/*/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/MaxTxBufferSize",
271 Config::Set (
"/NodeList/*/DeviceList/*/LteUeRrc/RadioBearerMap/*/LteRlc/MaxTxBufferSize",
277 double statsStartTime = 0.040;
287 uint64_t imsiCounter = 0;
289 for (std::vector<EnbTestData>::iterator enbit =
m_enbTestData.begin ();
293 for (std::vector<UeTestData>::iterator ueit = enbit->ues.begin ();
294 ueit < enbit->ues.end ();
297 uint64_t imsi = ++imsiCounter;
298 for (uint32_t b = 0; b < ueit->bearers.size (); ++b)
303 uint32_t expectedPkts = ueit->bearers.at (b).numPkts;
304 uint32_t expectedBytes = (ueit->bearers.at (b).numPkts) * (ueit->bearers.at (b).pktSize);
309 uint32_t rxBytesDl = ueit->bearers.at (b).dlServerApp->GetTotalRx ();
310 uint32_t rxBytesUl = ueit->bearers.at (b).ulServerApp->GetTotalRx ();
315 "wrong TX PDCP packets in downlink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
319 "wrong RX PDCP packets in downlink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
322 "wrong TX PDCP packets in uplink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
325 "wrong RX PDCP packets in uplink for IMSI=" << imsi <<
" LCID=" << (uint16_t) lcid);
329 "wrong total received bytes in downlink");
332 "wrong total received bytes in uplink");
357 std::vector<EnbTestData> v1;
362 e1.
ues.push_back (u1);
366 std::vector<EnbTestData> v2;
371 e2.
ues.push_back (u2_1);
375 e2.
ues.push_back (u2_2);
379 std::vector<EnbTestData> v3;
388 e4.
ues.push_back (u4_1);
392 e4.
ues.push_back (u4_2);
396 e4.
ues.push_back (u4_3);
397 std::vector<EnbTestData> v4;
407 e5.
ues.push_back (u5);
408 std::vector<EnbTestData> v5;
417 e6.
ues.push_back (u6);
418 std::vector<EnbTestData> v6;
428 e7.
ues.push_back (u7);
429 std::vector<EnbTestData> v7;
437 e8.
ues.push_back (u8);
438 std::vector<EnbTestData> v8;
447 e9.
ues.push_back (u9);
448 std::vector<EnbTestData> v9;