A Discrete-Event Network Simulator
API
lte-test-ipv6-routing.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2017 Jadavpur University, India
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: Manoj Kumar Rana <manoj24.rana@gmail.com>
19  */
20 
21 #include "ns3/lte-helper.h"
22 #include "ns3/epc-helper.h"
23 #include "ns3/core-module.h"
24 #include "ns3/network-module.h"
25 #include "ns3/ipv4-global-routing-helper.h"
26 #include "ns3/ipv6-static-routing.h"
27 #include "ns3/internet-module.h"
28 #include "ns3/mobility-module.h"
29 #include "ns3/lte-module.h"
30 #include "ns3/applications-module.h"
31 #include "ns3/point-to-point-helper.h"
32 #include "ns3/config-store.h"
33 #include <algorithm>
34 
35 
36 /* *
37  * Scenario: 3 UEs, 2 ENBs, 1 Remote Host, UE0<-->ENB0, UE1<-->ENB0, UE2<-->ENB1
38  Servers: UE1, UE2, Remote Host
39  Client: UE0 (3 clients)
40  UDP Echo Packets transmitted between client and server
41 
42  * Pass criteria: 1) Every UDP Echo Request and Reply messages sent and received respectively
43  at UE0 must be matched by their UID, source address, destination address,
44  source port and destination port
45  2) Every request reply must follow proper route (e.g. In case of UE0->UE1,
46  packet must travel this route: UE0->ENB0->PGW->ENB1->UE1->ENB1->PGW->ENB0->UE0)
47  3) The above check also ensures no redundancy of the followed route for a packet
48 * */
49 
50 
51 
52 using namespace ns3;
53 
61 {
62 public:
64  virtual ~LteIpv6RoutingTestCase ();
65 
69  void Checker ();
70 
77  void SentAtClient (Ptr<const Packet> p, Ptr<Ipv6> ipv6, uint32_t interface);
78 
85  void ReceivedAtClient (Ptr<const Packet> p, Ptr<Ipv6> ipv6, uint32_t interface);
86 
91  void EnbToPgw (Ptr<Packet> p);
92 
97  void TunToPgw (Ptr<Packet> p);
98 
99 private:
100  virtual void DoRun (void);
103  std::list<uint64_t> m_pgwUidRxFrmEnb;
104  std::list<uint64_t> m_pgwUidRxFrmTun;
105 
106  std::list<Ptr<Packet> > m_clientTxPkts;
107  std::list<Ptr<Packet> > m_clientRxPkts;
108 };
109 
110 
112  : TestCase ("Test IPv6 Routing at LTE")
113 {
114 }
115 
117 {
118 }
119 
121 {
122  Ipv6Header ipv6Header;
123  p->PeekHeader (ipv6Header);
124  if (ipv6Header.GetNextHeader () == UdpL4Protocol::PROT_NUMBER)
125  {
126  m_clientTxPkts.push_back (p->Copy ());
127  }
128 }
129 
131 {
132  Ipv6Header ipv6Header;
133  p->PeekHeader (ipv6Header);
134  if (ipv6Header.GetNextHeader () == UdpL4Protocol::PROT_NUMBER)
135  {
136  m_clientRxPkts.push_back (p->Copy ());
137  }
138 }
139 
141 {
142  Ipv6Header ipv6Header;
143  p->PeekHeader (ipv6Header);
144  if (ipv6Header.GetNextHeader () == UdpL4Protocol::PROT_NUMBER)
145  {
146  m_pgwUidRxFrmEnb.push_back (p->GetUid ());
147  }
148 }
149 
151 {
152  Ipv6Header ipv6Header;
153  p->PeekHeader (ipv6Header);
154  if (ipv6Header.GetNextHeader () == UdpL4Protocol::PROT_NUMBER)
155  {
156  m_pgwUidRxFrmTun.push_back (p->GetUid ());
157  }
158 }
159 
161 {
162  bool b = false;
163  bool check = true;
164  //Extract each received reply packet of the client
165  for (std::list<Ptr<Packet> >::iterator it1 = m_clientRxPkts.begin (); it1 != m_clientRxPkts.end (); it1++)
166  {
167  Ipv6Header ipv6header1;
168  UdpHeader udpHeader1;
169  Ptr<Packet> p1 = (*it1)->Copy ();
170  p1->RemoveHeader (ipv6header1);
171  uint64_t uid = p1->GetUid ();
172  p1->RemoveHeader (udpHeader1);
173  //Search each packet in list of sent request packet of the client
174  for (std::list<Ptr<Packet> >::iterator it2 = m_clientTxPkts.begin (); it2 != m_clientTxPkts.end (); it2++)
175  {
176  Ptr<Packet> p2 = (*it2)->Copy ();
177  Ipv6Header ipv6header2;
178  p2->RemoveHeader (ipv6header2);
179  Ipv6Address sorceAddress = ipv6header2.GetSource ();
180  Ipv6Address destinationAddress = ipv6header2.GetDestination ();
181  UdpHeader udpHeader2;
182  p2->RemoveHeader (udpHeader2);
183  uint16_t sourcePort;
184  uint16_t destinationPort;
185  sourcePort = udpHeader2.GetSourcePort ();
186  destinationPort = udpHeader2.GetDestinationPort ();
187  //Check whether the uids, addresses and ports match
188  if ((p2->GetUid () == p1->GetUid ())
189  && sorceAddress == ipv6header1.GetDestination ()
190  && destinationAddress == ipv6header1.GetSource ()
191  && sourcePort == udpHeader1.GetDestinationPort ()
192  && destinationPort == udpHeader1.GetSourcePort ())
193  {
194  b = true;
195  break;
196  }
197  }
198  check &= b;
199  if (std::find (m_pgwUidRxFrmEnb.begin (), m_pgwUidRxFrmEnb.end (), uid) != m_pgwUidRxFrmEnb.end ())
200  {
201  check &= true;
202  m_pgwUidRxFrmEnb.remove (uid);
203  }
204  if (std::find (m_pgwUidRxFrmTun.begin (), m_pgwUidRxFrmTun.end (), uid) != m_pgwUidRxFrmTun.end ())
205  {
206  check &= true;
207  m_pgwUidRxFrmTun.remove (uid);
208  }
209  b = false;
210  }
211 
212  NS_TEST_ASSERT_MSG_EQ (check, true, "Failure Happens IPv6 routing of LENA");
213  NS_TEST_ASSERT_MSG_EQ (m_clientTxPkts.size (), m_clientRxPkts.size (), "No. of Request and Reply messages mismatch");
214  NS_TEST_ASSERT_MSG_EQ (m_pgwUidRxFrmEnb.size (), 0, "Route is not Redundant in Lte IPv6 test");
215  NS_TEST_ASSERT_MSG_EQ (m_pgwUidRxFrmTun.size (), 0, "Route is not Redundant in Lte IPv6 test");
216 
217 }
218 
219 void
221 {
222  double distance = 60.0;
223 
224  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
225  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
226  lteHelper->SetEpcHelper (epcHelper);
227 
228  ConfigStore inputConfig;
229  inputConfig.ConfigureDefaults ();
230 
231  Ptr<Node> pgw = epcHelper->GetPgwNode ();
232 
233  // Create a single RemoteHost
234  NodeContainer remoteHostContainer;
235  remoteHostContainer.Create (1);
236  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
237  InternetStackHelper internet;
238  internet.Install (remoteHostContainer);
239 
240  // Create the Internet
241  PointToPointHelper p2ph;
242  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
243  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
244  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
245  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
246 
247  NodeContainer ueNodes;
248  NodeContainer enbNodes;
249  enbNodes.Create (2);
250  ueNodes.Create (3);
251 
252  // Install Mobility Model
253  Ptr<ListPositionAllocator> positionAlloc1 = CreateObject<ListPositionAllocator> ();
254  Ptr<ListPositionAllocator> positionAlloc2 = CreateObject<ListPositionAllocator> ();
255 
256  positionAlloc1->Add (Vector (distance * 0, 0, 0));
257  positionAlloc1->Add (Vector (distance * 0 + 5, 0, 0));
258  positionAlloc1->Add (Vector (distance * 1, 0, 0));
259 
260  positionAlloc2->Add (Vector (distance * 0, 0, 0));
261  positionAlloc2->Add (Vector (distance * 1, 0, 0));
262 
264  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
265  mobility.SetPositionAllocator (positionAlloc1);
266  mobility.Install (ueNodes);
267 
268  mobility.SetPositionAllocator (positionAlloc2);
269  mobility.Install (enbNodes);
270 
271  // Install the IP stack on the UEs
272  internet.Install (ueNodes);
273 
274  // Install LTE Devices to the nodes
275  NetDeviceContainer enbLteDevs = lteHelper->InstallEnbDevice (enbNodes);
276  NetDeviceContainer ueLteDevs = lteHelper->InstallUeDevice (ueNodes);
277 
278  // Assign IP address to UEs, and install applications
279  m_ueIpIface = epcHelper->AssignUeIpv6Address (NetDeviceContainer (ueLteDevs));
280 
281  Ipv6StaticRoutingHelper ipv6RoutingHelper;
282 
283  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
284  {
285  Ptr<Node> ueNode = ueNodes.Get (u);
286  // Set the default gateway for the UE
287  Ptr<Ipv6StaticRouting> ueStaticRouting = ipv6RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv6> ());
288  ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress6 (), 1);
289  }
290 
291  // Attach two UEs at first eNodeB and one UE at second eNodeB
292  lteHelper->Attach (ueLteDevs.Get (0), enbLteDevs.Get (0));
293  lteHelper->Attach (ueLteDevs.Get (1), enbLteDevs.Get (0));
294  lteHelper->Attach (ueLteDevs.Get (2), enbLteDevs.Get (1));
295 
296  Ipv6AddressHelper ipv6h;
297  ipv6h.SetBase (Ipv6Address ("6001:db80::"), Ipv6Prefix (64));
298  Ipv6InterfaceContainer internetIpIfaces = ipv6h.Assign (internetDevices);
299 
300  internetIpIfaces.SetForwarding (0, true);
301  internetIpIfaces.SetDefaultRouteInAllNodes (0);
302 
303  Ptr<Ipv6StaticRouting> remoteHostStaticRouting = ipv6RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv6> ());
304  remoteHostStaticRouting->AddNetworkRouteTo ("7777:f00d::", Ipv6Prefix (64), internetIpIfaces.GetAddress (0, 1), 1, 0);
305 
306  // interface 0 is localhost, 1 is the p2p device
307  m_remoteHostAddr = internetIpIfaces.GetAddress (1, 1);
308 
309  // Install and start applications on UEs and remote host
310  UdpEchoServerHelper echoServer1 (10);
311  UdpEchoServerHelper echoServer2 (11);
312  UdpEchoServerHelper echoServer3 (12);
313 
314  ApplicationContainer serverApps = echoServer1.Install (remoteHost);
315  serverApps.Add (echoServer2.Install (ueNodes.Get (1)));
316  serverApps.Add (echoServer3.Install (ueNodes.Get (2)));
317 
318  serverApps.Start (Seconds (4.0));
319  serverApps.Stop (Seconds (12.0));
320 
321  UdpEchoClientHelper echoClient1 (m_remoteHostAddr, 10);
322  UdpEchoClientHelper echoClient2 (m_ueIpIface.GetAddress (1,1), 11);
323  UdpEchoClientHelper echoClient3 (m_ueIpIface.GetAddress (2,1), 12);
324 
325  echoClient1.SetAttribute ("MaxPackets", UintegerValue (1000));
326  echoClient1.SetAttribute ("Interval", TimeValue (Seconds (0.2)));
327  echoClient1.SetAttribute ("PacketSize", UintegerValue (1024));
328 
329  echoClient2.SetAttribute ("MaxPackets", UintegerValue (1000));
330  echoClient2.SetAttribute ("Interval", TimeValue (Seconds (0.2)));
331  echoClient2.SetAttribute ("PacketSize", UintegerValue (1024));
332 
333  echoClient3.SetAttribute ("MaxPackets", UintegerValue (1000));
334  echoClient3.SetAttribute ("Interval", TimeValue (Seconds (0.2)));
335  echoClient3.SetAttribute ("PacketSize", UintegerValue (1024));
336 
337  ApplicationContainer clientApps1 = echoClient1.Install (ueNodes.Get (0));
338  ApplicationContainer clientApps2 = echoClient2.Install (ueNodes.Get (0));
339  ApplicationContainer clientApps3 = echoClient3.Install (ueNodes.Get (0));
340 
341  clientApps1.Start (Seconds (4.0));
342  clientApps1.Stop (Seconds (6.0));
343 
344  clientApps2.Start (Seconds (6.1));
345  clientApps2.Stop (Seconds (8.0));
346 
347  clientApps3.Start (Seconds (8.1));
348  clientApps3.Stop (Seconds (10.0));
349 
350  //Set Cllback for Client Sent and Received packets
351  Ptr<Ipv6L3Protocol> ipL3 = (ueNodes.Get (0))->GetObject<Ipv6L3Protocol> ();
354 
355  //Set Callback at SgwPgWApplication of epc to get the packets from enb and from tunnel net device
356  Ptr<Application> appPgw = pgw->GetApplication (0);
359 
360  Simulator::Schedule (Time (Seconds (12.0)), &LteIpv6RoutingTestCase::Checker, this);
361 
362  Simulator::Stop (Seconds (14));
363  Simulator::Run ();
364 
365  Simulator::Destroy ();
366 }
367 
368 
373 {
374 public:
376 };
377 
379  : TestSuite ("lte-ipv6-routing-test", UNIT)
380 {
381  AddTestCase (new LteIpv6RoutingTestCase, TestCase::QUICK);
382 }
383 
LteIpv6RoutingTestCase::TunToPgw
void TunToPgw(Ptr< Packet > p)
Received Packet at pgw from enb.
Definition: lte-test-ipv6-routing.cc:150
ns3::NetDeviceContainer
holds a vector of ns3::NetDevice pointers
Definition: net-device-container.h:42
ns3::DataRateValue
AttributeValue implementation for DataRate.
Definition: data-rate.h:298
ns3::TestCase::AddTestCase
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:299
ns3::Node::GetApplication
Ptr< Application > GetApplication(uint32_t index) const
Retrieve the index-th Application associated to this node.
Definition: node.cc:170
ns3::ListPositionAllocator::Add
void Add(Vector v)
Add a position to the list of positions.
Definition: position-allocator.cc:70
LteIpv6RoutingTestCase::m_clientTxPkts
std::list< Ptr< Packet > > m_clientTxPkts
list of sent packets from client
Definition: lte-test-ipv6-routing.cc:106
ns3::Packet::PeekHeader
uint32_t PeekHeader(Header &header) const
Deserialize but does not remove the header from the internal buffer.
Definition: packet.cc:290
ns3::NoBackhaulEpcHelper::GetPgwNode
virtual Ptr< Node > GetPgwNode() const
Get the PGW node.
Definition: no-backhaul-epc-helper.cc:498
LteIpv6RoutingTestCase::m_remoteHostAddr
Ipv6Address m_remoteHostAddr
remote host address
Definition: lte-test-ipv6-routing.cc:102
LteIpv6RoutingTestCase::LteIpv6RoutingTestCase
LteIpv6RoutingTestCase()
Definition: lte-test-ipv6-routing.cc:111
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::ApplicationContainer::Stop
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter.
Definition: application-container.cc:107
ns3::Ipv6InterfaceContainer::SetForwarding
void SetForwarding(uint32_t i, bool state)
Set the state of the stack (act as a router or as an host) for the specified index.
Definition: ipv6-interface-container.cc:83
ns3::UdpEchoServerHelper::Install
ApplicationContainer Install(Ptr< Node > node) const
Create a UdpEchoServerApplication on the specified Node.
Definition: udp-echo-helper.cc:43
ns3::PointToPointHelper::SetDeviceAttribute
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
Definition: point-to-point-helper.cc:69
ns3::LteHelper::InstallEnbDevice
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices.
Definition: lte-helper.cc:474
ns3::PointToPointHelper::SetChannelAttribute
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
Definition: point-to-point-helper.cc:75
ns3::UdpEchoClientHelper
Create an application which sends a UDP packet and waits for an echo of this packet.
Definition: udp-echo-helper.h:107
LteIpv6RoutingTestCase::m_ueIpIface
Ipv6InterfaceContainer m_ueIpIface
IPv6 interface container for ue.
Definition: lte-test-ipv6-routing.cc:101
ns3::Object::GetObject
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Definition: object.h:470
ns3::LteHelper::InstallUeDevice
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices.
Definition: lte-helper.cc:489
LteIpv6RoutingTestCase
Lte Ipv6 routing test case.
Definition: lte-test-ipv6-routing.cc:61
LteIpv6RoutingTestCase::DoRun
virtual void DoRun(void)
Implementation to actually run this TestCase.
Definition: lte-test-ipv6-routing.cc:220
LteIpv6RoutingTestCase::EnbToPgw
void EnbToPgw(Ptr< Packet > p)
Received Packet at pgw from enb.
Definition: lte-test-ipv6-routing.cc:140
ns3::PointToPointHelper::Install
NetDeviceContainer Install(NodeContainer c)
Definition: point-to-point-helper.cc:222
ns3::Ipv6Address
Describes an IPv6 address.
Definition: ipv6-address.h:50
lteipv6testsuite
static LteIpv6RoutingTestSuite lteipv6testsuite
Definition: lte-test-ipv6-routing.cc:384
ns3::NodeContainer::GetN
uint32_t GetN(void) const
Get the number of Ptr<Node> stored in this container.
Definition: node-container.cc:88
ns3::Ipv6AddressHelper::SetBase
void SetBase(Ipv6Address network, Ipv6Prefix prefix, Ipv6Address base=Ipv6Address("::1"))
Set the base network number, network prefix, and base interface ID.
Definition: ipv6-address-helper.cc:69
ns3::Ipv6InterfaceContainer::SetDefaultRouteInAllNodes
void SetDefaultRouteInAllNodes(uint32_t router)
Set the default route for all the devices (except the router itself).
Definition: ipv6-interface-container.cc:89
LteIpv6RoutingTestCase::~LteIpv6RoutingTestCase
virtual ~LteIpv6RoutingTestCase()
Definition: lte-test-ipv6-routing.cc:116
ns3::Ipv6AddressHelper
Helper class to auto-assign global IPv6 unicast addresses.
Definition: ipv6-address-helper.h:83
ns3::Ipv6Header
Packet header for IPv6.
Definition: ipv6-header.h:36
ns3::NodeContainer::Create
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Definition: node-container.cc:98
ns3::TestCase
encapsulates test code
Definition: test.h:1154
LteIpv6RoutingTestCase::Checker
void Checker()
Initialize testing parameters.
Definition: lte-test-ipv6-routing.cc:160
LteIpv6RoutingTestCase::m_clientRxPkts
std::list< Ptr< Packet > > m_clientRxPkts
list of received packets at client
Definition: lte-test-ipv6-routing.cc:107
ns3::UdpHeader::GetDestinationPort
uint16_t GetDestinationPort(void) const
Definition: udp-header.cc:70
ns3::Ipv6AddressHelper::Assign
Ipv6InterfaceContainer Assign(const NetDeviceContainer &c)
Allocate an Ipv6InterfaceContainer with auto-assigned addresses.
Definition: ipv6-address-helper.cc:210
ns3::Ptr< const Packet >
ns3::DataRate
Class for representing data rates.
Definition: data-rate.h:89
ns3::Ipv6StaticRouting::SetDefaultRoute
void SetDefaultRoute(Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse=Ipv6Address("::"), uint32_t metric=0)
Set the default route.
Definition: ipv6-static-routing.cc:197
ns3::LteHelper::SetEpcHelper
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
ns3::InternetStackHelper::Install
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
Definition: internet-stack-helper.cc:366
ns3::UdpEchoClientHelper::Install
ApplicationContainer Install(Ptr< Node > node) const
Create a udp echo client application on the specified node.
Definition: udp-echo-helper.cc:116
ns3::Ipv6InterfaceContainer::GetAddress
Ipv6Address GetAddress(uint32_t i, uint32_t j) const
Get the address for the specified index.
Definition: ipv6-interface-container.cc:57
LteIpv6RoutingTestCase::ReceivedAtClient
void ReceivedAtClient(Ptr< const Packet > p, Ptr< Ipv6 > ipv6, uint32_t interface)
Received Packets at client's IPv6 interface.
Definition: lte-test-ipv6-routing.cc:130
ns3::Packet::RemoveHeader
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
Definition: packet.cc:280
ns3::ConfigStore
Introspection did not find any typical Config paths.
Definition: config-store.h:60
ns3::Ipv6InterfaceContainer
Keep track of a set of IPv6 interfaces.
Definition: ipv6-interface-container.h:42
ns3::NodeContainer::Get
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
Definition: node-container.cc:93
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::Ipv6StaticRoutingHelper
Helper class that adds ns3::Ipv6StaticRouting objects.
Definition: ipv6-static-routing-helper.h:44
ns3::UdpHeader
Packet header for UDP packets.
Definition: udp-header.h:40
ns3::NoBackhaulEpcHelper::AssignUeIpv6Address
virtual Ipv6InterfaceContainer AssignUeIpv6Address(NetDeviceContainer ueDevices)
Assign IPv6 addresses to UE devices.
Definition: no-backhaul-epc-helper.cc:510
ns3::ConfigStore::ConfigureDefaults
void ConfigureDefaults(void)
Configure the default values.
Definition: config-store.cc:185
list
#define list
Definition: openflow-interface.h:47
LteIpv6RoutingTestCase::m_pgwUidRxFrmEnb
std::list< uint64_t > m_pgwUidRxFrmEnb
list of uids of packets received at pgw from enb
Definition: lte-test-ipv6-routing.cc:103
ns3::MakeCallback
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
Definition: callback.h:1642
LteIpv6RoutingTestSuite
test suite 1
Definition: lte-test-ipv6-routing.cc:373
ns3::UdpHeader::GetSourcePort
uint16_t GetSourcePort(void) const
Definition: udp-header.cc:65
LteIpv6RoutingTestSuite::LteIpv6RoutingTestSuite
LteIpv6RoutingTestSuite()
Definition: lte-test-ipv6-routing.cc:378
ns3::TestSuite
A suite of tests to run.
Definition: test.h:1344
NS_TEST_ASSERT_MSG_EQ
#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:166
ns3::Ipv6StaticRouting::AddNetworkRouteTo
void AddNetworkRouteTo(Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, uint32_t metric=0)
Add route to network.
Definition: ipv6-static-routing.cc:156
ns3::ApplicationContainer::Start
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter.
Definition: application-container.cc:87
ns3::Ipv6Header::GetNextHeader
uint8_t GetNextHeader(void) const
Get the next header.
Definition: ipv6-header.cc:80
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
LteIpv6RoutingTestCase::SentAtClient
void SentAtClient(Ptr< const Packet > p, Ptr< Ipv6 > ipv6, uint32_t interface)
sent Packets from client's IPv6 interface.
Definition: lte-test-ipv6-routing.cc:120
ns3::Packet::Copy
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
Definition: packet.cc:121
ns3::ApplicationContainer
holds a vector of ns3::Application pointers.
Definition: application-container.h:43
first.serverApps
serverApps
Definition: first.py:52
ns3::TimeValue
AttributeValue implementation for Time.
Definition: nstime.h:1353
ns3::Ipv6Header::GetSource
Ipv6Address GetSource(void) const
Get the "Source address" field.
Definition: ipv6-header.cc:105
ns3::PointToPointHelper
Build a set of PointToPointNetDevice objects.
Definition: point-to-point-helper.h:45
ns3::NodeContainer
keep track of a set of node pointers.
Definition: node-container.h:39
ns3::LteHelper::Attach
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:961
ns3::Ipv6
Access to the IPv6 forwarding table, interfaces, and configuration.
Definition: ipv6.h:82
ns3::Ipv6Header::GetDestination
Ipv6Address GetDestination(void) const
Get the "Destination address" field.
Definition: ipv6-header.cc:125
ns3::UintegerValue
Hold an unsigned integer type.
Definition: uinteger.h:44
ns3::UdpEchoClientHelper::SetAttribute
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created.
Definition: udp-echo-helper.cc:90
ns3::UdpEchoServerHelper
Create a server application which waits for input UDP packets and sends them back to the original sen...
Definition: udp-echo-helper.h:38
ns3::ObjectBase::TraceConnectWithoutContext
bool TraceConnectWithoutContext(std::string name, const CallbackBase &cb)
Connect a TraceSource to a Callback without a context.
Definition: object-base.cc:293
LteIpv6RoutingTestCase::m_pgwUidRxFrmTun
std::list< uint64_t > m_pgwUidRxFrmTun
list of uids of packets received at pgw from tunnel net device
Definition: lte-test-ipv6-routing.cc:104
ns3::Ipv6Prefix
Describes an IPv6 prefix.
Definition: ipv6-address.h:456
ns3::InternetStackHelper
aggregate IP/TCP/UDP functionality to existing Nodes.
Definition: internet-stack-helper.h:88
ns3::NetDeviceContainer::Get
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Definition: net-device-container.cc:62
ns3::Ipv6StaticRoutingHelper::GetStaticRouting
Ptr< Ipv6StaticRouting > GetStaticRouting(Ptr< Ipv6 > ipv6) const
Get Ipv6StaticRouting pointer from IPv6 stack.
Definition: ipv6-static-routing-helper.cc:59
ns3::MobilityHelper
Helper class used to assign positions and mobility models to nodes.
Definition: mobility-helper.h:43
third.mobility
mobility
Definition: third.py:108
ns3::Packet::GetUid
uint64_t GetUid(void) const
Returns the packet's Uid.
Definition: packet.cc:390
ns3::NoBackhaulEpcHelper::GetUeDefaultGatewayAddress6
virtual Ipv6Address GetUeDefaultGatewayAddress6()
Definition: no-backhaul-epc-helper.cc:530