A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
grid-animation.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* This program is free software; you can redistribute it and/or modify
4
* it under the terms of the GNU General Public License version 2 as
5
* published by the Free Software Foundation;
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
*
16
* Author: Josh Pelkey <jpelkey@gatech.edu>
17
*/
18
19
#include <iostream>
20
21
#include "ns3/core-module.h"
22
#include "ns3/network-module.h"
23
#include "ns3/internet-module.h"
24
#include "ns3/point-to-point-module.h"
25
#include "ns3/netanim-module.h"
26
#include "ns3/applications-module.h"
27
#include "ns3/point-to-point-layout-module.h"
28
29
using namespace
ns3
;
30
31
int
main (
int
argc,
char
*argv[])
32
{
33
Config::SetDefault
(
"ns3::OnOffApplication::PacketSize"
,
UintegerValue
(512));
34
Config::SetDefault
(
"ns3::OnOffApplication::DataRate"
,
StringValue
(
"500kb/s"
));
35
36
uint32_t xSize = 5;
37
uint32_t ySize = 5;
38
std::string animFile =
"grid-animation.xml"
;
39
40
CommandLine
cmd
(__FILE__);
41
cmd
.AddValue (
"xSize"
,
"Number of rows of nodes"
, xSize);
42
cmd
.AddValue (
"ySize"
,
"Number of columns of nodes"
, ySize);
43
cmd
.AddValue (
"animFile"
,
"File Name for Animation Output"
, animFile);
44
45
cmd
.Parse (argc,argv);
46
if
(xSize < 1 || ySize < 1 || (xSize < 2 && ySize < 2))
47
{
48
NS_FATAL_ERROR
(
"Need more nodes for grid."
);
49
}
50
51
PointToPointHelper
pointToPoint
;
52
pointToPoint
.SetDeviceAttribute (
"DataRate"
,
StringValue
(
"5Mbps"
));
53
pointToPoint
.SetChannelAttribute (
"Delay"
,
StringValue
(
"2ms"
));
54
55
// Create Grid
56
PointToPointGridHelper
grid
(xSize, ySize,
pointToPoint
);
57
58
// Install stack on Grid
59
InternetStackHelper
stack
;
60
grid
.InstallStack (
stack
);
61
62
// Assign Addresses to Grid
63
grid
.AssignIpv4Addresses (
Ipv4AddressHelper
(
"10.1.1.0"
,
"255.255.255.0"
),
64
Ipv4AddressHelper
(
"10.2.1.0"
,
"255.255.255.0"
));
65
66
67
OnOffHelper
clientHelper (
"ns3::UdpSocketFactory"
,
Address
());
68
clientHelper.SetAttribute (
"OnTime"
,
StringValue
(
"ns3::ConstantRandomVariable[Constant=1]"
));
69
clientHelper.SetAttribute (
"OffTime"
,
StringValue
(
"ns3::ConstantRandomVariable[Constant=0]"
));
70
ApplicationContainer
clientApps
;
71
72
// Create an on/off app sending packets
73
AddressValue
remoteAddress (
InetSocketAddress
(
grid
.GetIpv4Address (xSize-1,ySize-1), 1000));
74
clientHelper.SetAttribute (
"Remote"
, remoteAddress);
75
clientApps
.Add (clientHelper.Install (
grid
.GetNode (0,0)));
76
77
clientApps
.Start (
Seconds
(0.0));
78
clientApps
.Stop (
Seconds
(1.5));
79
80
// Set the bounding box for animation
81
grid
.BoundingBox (1, 1, 100, 100);
82
83
// Create the animation object and configure for specified output
84
AnimationInterface
anim (animFile);
85
86
// Set up the actual simulation
87
Ipv4GlobalRoutingHelper::PopulateRoutingTables
();
88
89
Simulator::Run
();
90
Simulator::Destroy
();
91
return
0;
92
}
ns3::Address
a polymophic address class
Definition:
address.h:91
ns3::AddressValue
AttributeValue implementation for Address.
Definition:
address.h:278
ns3::AnimationInterface
Interface to network animator.
Definition:
animation-interface.h:76
ns3::ApplicationContainer
holds a vector of ns3::Application pointers.
Definition:
application-container.h:43
ns3::CommandLine
Parse command-line arguments.
Definition:
command-line.h:229
ns3::InetSocketAddress
an Inet address class
Definition:
inet-socket-address.h:41
ns3::InternetStackHelper
aggregate IP/TCP/UDP functionality to existing Nodes.
Definition:
internet-stack-helper.h:88
ns3::Ipv4AddressHelper
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
Definition:
ipv4-address-helper.h:48
ns3::Ipv4GlobalRoutingHelper::PopulateRoutingTables
static void PopulateRoutingTables(void)
Build a routing database and initialize the routing tables of the nodes in the simulation.
Definition:
ipv4-global-routing-helper.cc:61
ns3::OnOffHelper
A helper to make it easier to instantiate an ns3::OnOffApplication on a set of nodes.
Definition:
on-off-helper.h:43
ns3::PointToPointGridHelper
A helper to make it easier to create a grid topology with p2p links.
Definition:
point-to-point-grid.h:43
ns3::PointToPointHelper
Build a set of PointToPointNetDevice objects.
Definition:
point-to-point-helper.h:45
ns3::Simulator::Destroy
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition:
simulator.cc:136
ns3::Simulator::Run
static void Run(void)
Run the simulation.
Definition:
simulator.cc:172
ns3::StringValue
Hold variables of type string.
Definition:
string.h:41
ns3::UintegerValue
Hold an unsigned integer type.
Definition:
uinteger.h:44
ns3::Config::SetDefault
void SetDefault(std::string name, const AttributeValue &value)
Definition:
config.cc:849
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition:
fatal-error.h:165
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition:
nstime.h:1244
first.pointToPoint
pointToPoint
Definition:
first.py:35
first.clientApps
clientApps
Definition:
first.py:61
first.stack
stack
Definition:
first.py:41
grid
Definition:
grid.py:1
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
second.cmd
cmd
Definition:
second.py:35
src
netanim
examples
grid-animation.cc
Generated on Tue Feb 6 2024 19:21:25 for ns-3 by
1.9.1