A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
dumbbell-animation.cc
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: GPL-2.0-only
3 *
4 * Author: George F. Riley<riley@ece.gatech.edu>
5 */
6
7#include "ns3/applications-module.h"
8#include "ns3/core-module.h"
9#include "ns3/internet-module.h"
10#include "ns3/netanim-module.h"
11#include "ns3/network-module.h"
12#include "ns3/point-to-point-layout-module.h"
13#include "ns3/point-to-point-module.h"
14
15#include <iostream>
16
17using namespace ns3;
18
19int
20main(int argc, char* argv[])
21{
22 Config::SetDefault("ns3::OnOffApplication::PacketSize", UintegerValue(512));
23 Config::SetDefault("ns3::OnOffApplication::DataRate", StringValue("500kb/s"));
24
25 uint32_t nLeftLeaf = 5;
26 uint32_t nRightLeaf = 5;
27 uint32_t nLeaf = 0; // If non-zero, number of both left and right
28 std::string animFile = "dumbbell-animation.xml"; // Name of file for animation output
29
30 CommandLine cmd(__FILE__);
31 cmd.AddValue("nLeftLeaf", "Number of left side leaf nodes", nLeftLeaf);
32 cmd.AddValue("nRightLeaf", "Number of right side leaf nodes", nRightLeaf);
33 cmd.AddValue("nLeaf", "Number of left and right side leaf nodes", nLeaf);
34 cmd.AddValue("animFile", "File Name for Animation Output", animFile);
35
36 cmd.Parse(argc, argv);
37 if (nLeaf > 0)
38 {
39 nLeftLeaf = nLeaf;
40 nRightLeaf = nLeaf;
41 }
42
43 // Create the point-to-point link helpers
44 PointToPointHelper pointToPointRouter;
45 pointToPointRouter.SetDeviceAttribute("DataRate", StringValue("10Mbps"));
46 pointToPointRouter.SetChannelAttribute("Delay", StringValue("1ms"));
47 PointToPointHelper pointToPointLeaf;
48 pointToPointLeaf.SetDeviceAttribute("DataRate", StringValue("10Mbps"));
49 pointToPointLeaf.SetChannelAttribute("Delay", StringValue("1ms"));
50
52 pointToPointLeaf,
53 nRightLeaf,
54 pointToPointLeaf,
55 pointToPointRouter);
56
57 // Install Stack
59 d.InstallStack(stack);
60
61 // Assign IP Addresses
62 d.AssignIpv4Addresses(Ipv4AddressHelper("10.1.1.0", "255.255.255.0"),
63 Ipv4AddressHelper("10.2.1.0", "255.255.255.0"),
64 Ipv4AddressHelper("10.3.1.0", "255.255.255.0"));
65
66 // Install on/off app on all right side nodes
67 OnOffHelper clientHelper("ns3::UdpSocketFactory", Address());
68 clientHelper.SetAttribute("OnTime", StringValue("ns3::UniformRandomVariable"));
69 clientHelper.SetAttribute("OffTime", StringValue("ns3::UniformRandomVariable"));
71
72 for (uint32_t i = 0; i < ((d.RightCount() < d.LeftCount()) ? d.RightCount() : d.LeftCount());
73 ++i)
74 {
75 // Create an on/off app sending packets to the same leaf right side
76 AddressValue remoteAddress(InetSocketAddress(d.GetLeftIpv4Address(i), 1000));
77 clientHelper.SetAttribute("Remote", remoteAddress);
78 clientApps.Add(clientHelper.Install(d.GetRight(i)));
79 }
80
81 clientApps.Start(Seconds(0.0));
82 clientApps.Stop(Seconds(10.0));
83
84 // Set the bounding box for animation
85 d.BoundingBox(1, 1, 100, 100);
86
87 // Create the animation object and configure for specified output
88 AnimationInterface anim(animFile);
89 anim.EnablePacketMetadata(); // Optional
91
92 // Set up the actual simulation
94
96 std::cout << "Animation Trace file created:" << animFile << std::endl;
98 return 0;
99}
a polymophic address class
Definition address.h:90
Interface to network animator.
void EnableIpv4L3ProtocolCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Ipv4 L3 Protocol Counters such as Tx, Rx, Drop.
void EnablePacketMetadata(bool enable=true)
Enable Packet metadata.
holds a vector of ns3::Application pointers.
Parse command-line arguments.
an Inet address class
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
static void PopulateRoutingTables()
Build a routing database and initialize the routing tables of the nodes in the simulation.
A helper to make it easier to instantiate an ns3::OnOffApplication on a set of nodes.
A helper to make it easier to create a dumbbell topology with p2p links.
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.
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition simulator.cc:131
static void Run()
Run the simulation.
Definition simulator.cc:167
Hold variables of type string.
Definition string.h:45
Hold an unsigned integer type.
Definition uinteger.h:34
void SetDefault(std::string name, const AttributeValue &value)
Definition config.cc:883
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition nstime.h:1308
AnimationInterface * anim
clientApps
Definition first.py:53
stack
Definition first.py:33
Every class exported by the ns3 library is enclosed in the ns3 namespace.