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
realtime-udp-echo.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
17
// Network topology
18
//
19
// n0 n1 n2 n3
20
// | | | |
21
// =================
22
// LAN
23
//
24
// - UDP flows from n0 to n1 and back
25
// - DropTail queues
26
// - Tracing of queues and packet receptions to file "udp-echo.tr"
27
28
#include <fstream>
29
#include "ns3/core-module.h"
30
#include "ns3/csma-module.h"
31
#include "ns3/applications-module.h"
32
#include "ns3/internet-module.h"
33
34
using namespace
ns3;
35
36
NS_LOG_COMPONENT_DEFINE
(
"RealtimeUdpEchoExample"
);
37
38
int
39
main
(
int
argc,
char
*argv[])
40
{
41
//
42
// Allow the user to override any of the defaults and the above Bind() at
43
// run-time, via command-line arguments
44
//
45
CommandLine
cmd;
46
cmd.
Parse
(argc, argv);
47
48
//
49
// But since this is a realtime script, don't allow the user to mess with
50
// that.
51
//
52
GlobalValue::Bind
(
"SimulatorImplementationType"
,
53
StringValue
(
"ns3::RealtimeSimulatorImpl"
));
54
55
//
56
// Explicitly create the nodes required by the topology (shown above).
57
//
58
NS_LOG_INFO
(
"Create nodes."
);
59
NodeContainer
n;
60
n.
Create
(4);
61
62
InternetStackHelper
internet;
63
internet.
Install
(n);
64
65
//
66
// Explicitly create the channels required by the topology (shown above).
67
//
68
NS_LOG_INFO
(
"Create channels."
);
69
CsmaHelper
csma;
70
csma.
SetChannelAttribute
(
"DataRate"
,
DataRateValue
(
DataRate
(5000000)));
71
csma.
SetChannelAttribute
(
"Delay"
,
TimeValue
(MilliSeconds (2)));
72
csma.
SetDeviceAttribute
(
"Mtu"
,
UintegerValue
(1400));
73
NetDeviceContainer
d = csma.
Install
(n);
74
75
//
76
// We've got the "hardware" in place. Now we need to add IP addresses.
77
//
78
NS_LOG_INFO
(
"Assign IP Addresses."
);
79
Ipv4AddressHelper
ipv4;
80
ipv4.
SetBase
(
"10.1.1.0"
,
"255.255.255.0"
);
81
Ipv4InterfaceContainer
i = ipv4.
Assign
(d);
82
83
NS_LOG_INFO
(
"Create Applications."
);
84
85
//
86
// Create a UdpEchoServer application on node one.
87
//
88
uint16_t
port
= 9;
// well-known echo port number
89
UdpEchoServerHelper
server (port);
90
ApplicationContainer
apps = server.
Install
(n.
Get
(1));
91
apps.
Start
(Seconds (1.0));
92
apps.
Stop
(Seconds (10.0));
93
94
//
95
// Create a UdpEchoClient application to send UDP datagrams from node zero to
96
// node one.
97
//
98
uint32_t packetSize = 1024;
99
uint32_t maxPacketCount = 500;
100
Time
interPacketInterval = Seconds (0.01);
101
UdpEchoClientHelper
client (i.
GetAddress
(1),
port
);
102
client.
SetAttribute
(
"MaxPackets"
,
UintegerValue
(maxPacketCount));
103
client.SetAttribute (
"Interval"
,
TimeValue
(interPacketInterval));
104
client.SetAttribute (
"PacketSize"
,
UintegerValue
(packetSize));
105
apps = client.Install (n.
Get
(0));
106
apps.
Start
(Seconds (2.0));
107
apps.
Stop
(Seconds (10.0));
108
109
AsciiTraceHelper
ascii;
110
csma.
EnableAsciiAll
(ascii.
CreateFileStream
(
"realtime-udp-echo.tr"
));
111
csma.
EnablePcapAll
(
"realtime-udp-echo"
,
false
);
112
113
//
114
// Now, do the actual simulation.
115
//
116
Simulator::Stop
(Seconds (11.0));
117
NS_LOG_INFO
(
"Run Simulation."
);
118
Simulator::Run
();
119
Simulator::Destroy
();
120
NS_LOG_INFO
(
"Done."
);
121
}
examples
realtime
realtime-udp-echo.cc
Generated on Fri Aug 30 2013 01:42:44 for ns-3 by
1.8.1.2