A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
dumbbell-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: George F. Riley<riley@ece.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 nLeftLeaf = 5;
37
uint32_t nRightLeaf = 5;
38
uint32_t nLeaf = 0;
// If non-zero, number of both left and right
39
std::string animFile =
"dumbbell-animation.xml"
;
// Name of file for animation output
40
41
CommandLine
cmd;
42
cmd.
AddValue
(
"nLeftLeaf"
,
"Number of left side leaf nodes"
, nLeftLeaf);
43
cmd.
AddValue
(
"nRightLeaf"
,
"Number of right side leaf nodes"
, nRightLeaf);
44
cmd.
AddValue
(
"nLeaf"
,
"Number of left and right side leaf nodes"
, nLeaf);
45
cmd.
AddValue
(
"animFile"
,
"File Name for Animation Output"
, animFile);
46
47
cmd.
Parse
(argc,argv);
48
if
(nLeaf > 0)
49
{
50
nLeftLeaf = nLeaf;
51
nRightLeaf = nLeaf;
52
}
53
54
// Create the point-to-point link helpers
55
PointToPointHelper
pointToPointRouter;
56
pointToPointRouter.
SetDeviceAttribute
(
"DataRate"
,
StringValue
(
"10Mbps"
));
57
pointToPointRouter.
SetChannelAttribute
(
"Delay"
,
StringValue
(
"1ms"
));
58
PointToPointHelper
pointToPointLeaf;
59
pointToPointLeaf.
SetDeviceAttribute
(
"DataRate"
,
StringValue
(
"10Mbps"
));
60
pointToPointLeaf.
SetChannelAttribute
(
"Delay"
,
StringValue
(
"1ms"
));
61
62
PointToPointDumbbellHelper
d (nLeftLeaf, pointToPointLeaf,
63
nRightLeaf, pointToPointLeaf,
64
pointToPointRouter);
65
66
// Install Stack
67
InternetStackHelper
stack;
68
d.
InstallStack
(stack);
69
70
// Assign IP Addresses
71
d.
AssignIpv4Addresses
(
Ipv4AddressHelper
(
"10.1.1.0"
,
"255.255.255.0"
),
72
Ipv4AddressHelper
(
"10.2.1.0"
,
"255.255.255.0"
),
73
Ipv4AddressHelper
(
"10.3.1.0"
,
"255.255.255.0"
));
74
75
// Install on/off app on all right side nodes
76
OnOffHelper
clientHelper (
"ns3::UdpSocketFactory"
,
Address
());
77
clientHelper.
SetAttribute
(
"OnTime"
,
StringValue
(
"ns3::UniformRandomVariable"
));
78
clientHelper.
SetAttribute
(
"OffTime"
,
StringValue
(
"ns3::UniformRandomVariable"
));
79
ApplicationContainer
clientApps;
80
81
for
(uint32_t i = 0; i < d.
RightCount
(); ++i)
82
{
83
// Create an on/off app sending packets to the same leaf right side
84
AddressValue
remoteAddress (
InetSocketAddress
(d.
GetLeftIpv4Address
(i), 1000));
85
clientHelper.
SetAttribute
(
"Remote"
, remoteAddress);
86
clientApps.
Add
(clientHelper.
Install
(d.
GetRight
(i)));
87
}
88
89
clientApps.
Start
(
Seconds
(0.0));
90
clientApps.
Stop
(
Seconds
(10.0));
91
92
// Set the bounding box for animation
93
d.
BoundingBox
(1, 1, 100, 100);
94
95
// Create the animation object and configure for specified output
96
AnimationInterface
anim (animFile);
97
98
// Set up the acutal simulation
99
Ipv4GlobalRoutingHelper::PopulateRoutingTables
();
100
101
Simulator::Run
();
102
std::cout <<
"Animation Trace file created:"
<< animFile.c_str ()<< std::endl;
103
Simulator::Destroy
();
104
return
0;
105
}
src
netanim
examples
dumbbell-animation.cc
Generated on Tue Oct 9 2012 16:45:43 for ns-3 by
1.8.1.2