A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
static-routing-slash32.cc
Go to the documentation of this file.
1
/*
2
* SPDX-License-Identifier: GPL-2.0-only
3
*
4
*/
5
6
// Test program for this 3-router scenario, using static routing
7
//
8
// (a.a.a.a/32)A<--x.x.x.0/30-->B<--y.y.y.0/30-->C(c.c.c.c/32)
9
10
#include "ns3/applications-module.h"
11
#include "ns3/core-module.h"
12
#include "ns3/csma-module.h"
13
#include "ns3/internet-module.h"
14
#include "ns3/ipv4-static-routing-helper.h"
15
#include "ns3/network-module.h"
16
#include "ns3/point-to-point-module.h"
17
18
#include <cassert>
19
#include <fstream>
20
#include <iostream>
21
#include <string>
22
23
using namespace
ns3
;
24
25
NS_LOG_COMPONENT_DEFINE
(
"StaticRoutingSlash32Test"
);
26
27
int
28
main(
int
argc
,
char
*
argv
[])
29
{
30
// Allow the user to override any of the defaults and the above
31
// DefaultValue::Bind ()s at run-time, via command-line arguments
32
CommandLine
cmd
(
__FILE__
);
33
cmd
.Parse(
argc
,
argv
);
34
35
Ptr<Node>
nA
=
CreateObject<Node>
();
36
Ptr<Node>
nB
=
CreateObject<Node>
();
37
Ptr<Node>
nC
=
CreateObject<Node>
();
38
39
NodeContainer
c
=
NodeContainer
(
nA
,
nB
,
nC
);
40
41
InternetStackHelper
internet
;
42
internet
.Install(
c
);
43
44
// Point-to-point links
45
NodeContainer
nAnB
=
NodeContainer
(
nA
,
nB
);
46
NodeContainer
nBnC
=
NodeContainer
(
nB
,
nC
);
47
48
// We create the channels first without any IP addressing information
49
PointToPointHelper
p2p
;
50
p2p
.SetDeviceAttribute(
"DataRate"
,
StringValue
(
"5Mbps"
));
51
p2p
.SetChannelAttribute(
"Delay"
,
StringValue
(
"2ms"
));
52
NetDeviceContainer
dAdB
=
p2p
.Install(
nAnB
);
53
54
NetDeviceContainer
dBdC
=
p2p
.Install(
nBnC
);
55
56
Ptr<CsmaNetDevice>
deviceA
=
CreateObject<CsmaNetDevice>
();
57
deviceA
->SetAddress(
Mac48Address::Allocate
());
58
nA
->AddDevice(
deviceA
);
59
deviceA
->SetQueue(
CreateObject
<
DropTailQueue<Packet>
>());
60
61
Ptr<CsmaNetDevice>
deviceC
=
CreateObject<CsmaNetDevice>
();
62
deviceC
->SetAddress(
Mac48Address::Allocate
());
63
nC
->AddDevice(
deviceC
);
64
deviceC
->SetQueue(
CreateObject
<
DropTailQueue<Packet>
>());
65
66
// Later, we add IP addresses.
67
Ipv4AddressHelper
ipv4
;
68
ipv4
.SetBase(
"10.1.1.0"
,
"255.255.255.252"
);
69
Ipv4InterfaceContainer
iAiB
=
ipv4
.Assign(
dAdB
);
70
71
ipv4
.SetBase(
"10.1.1.4"
,
"255.255.255.252"
);
72
Ipv4InterfaceContainer
iBiC
=
ipv4
.Assign(
dBdC
);
73
74
Ptr<Ipv4>
ipv4A
=
nA
->GetObject<
Ipv4
>();
75
Ptr<Ipv4>
ipv4B
=
nB
->GetObject<
Ipv4
>();
76
Ptr<Ipv4>
ipv4C
=
nC
->GetObject<
Ipv4
>();
77
78
int32_t
ifIndexA
=
ipv4A
->AddInterface(
deviceA
);
79
int32_t
ifIndexC
=
ipv4C
->AddInterface(
deviceC
);
80
81
Ipv4InterfaceAddress
ifInAddrA
=
82
Ipv4InterfaceAddress
(
Ipv4Address
(
"172.16.1.1"
),
Ipv4Mask
(
"/32"
));
83
ipv4A
->AddAddress(
ifIndexA
,
ifInAddrA
);
84
ipv4A
->SetMetric(
ifIndexA
, 1);
85
ipv4A
->SetUp(
ifIndexA
);
86
87
Ipv4InterfaceAddress
ifInAddrC
=
88
Ipv4InterfaceAddress
(
Ipv4Address
(
"192.168.1.1"
),
Ipv4Mask
(
"/32"
));
89
ipv4C
->AddAddress(
ifIndexC
,
ifInAddrC
);
90
ipv4C
->SetMetric(
ifIndexC
, 1);
91
ipv4C
->SetUp(
ifIndexC
);
92
93
Ipv4StaticRoutingHelper
ipv4RoutingHelper
;
94
// Create static routes from A to C
95
Ptr<Ipv4StaticRouting>
staticRoutingA
=
ipv4RoutingHelper
.GetStaticRouting(
ipv4A
);
96
// The ifIndex for this outbound route is 1; the first p2p link added
97
staticRoutingA
->AddHostRouteTo(
Ipv4Address
(
"192.168.1.1"
),
Ipv4Address
(
"10.1.1.2"
), 1);
98
Ptr<Ipv4StaticRouting>
staticRoutingB
=
ipv4RoutingHelper
.GetStaticRouting(
ipv4B
);
99
// The ifIndex we want on node B is 2; 0 corresponds to loopback, and 1 to the first point to
100
// point link
101
staticRoutingB
->AddHostRouteTo(
Ipv4Address
(
"192.168.1.1"
),
Ipv4Address
(
"10.1.1.6"
), 2);
102
// Create the OnOff application to send UDP datagrams of size
103
// 210 bytes at a rate of 448 Kb/s
104
uint16_t
port
= 9;
// Discard port (RFC 863)
105
OnOffHelper
onoff
(
"ns3::UdpSocketFactory"
,
106
Address
(
InetSocketAddress
(
ifInAddrC
.GetLocal(),
port
)));
107
onoff
.SetConstantRate(
DataRate
(6000));
108
ApplicationContainer
apps
=
onoff
.Install(
nA
);
109
apps
.Start(
Seconds
(1));
110
apps
.Stop(
Seconds
(10));
111
112
// Create a packet sink to receive these packets
113
PacketSinkHelper
sink
(
"ns3::UdpSocketFactory"
,
114
Address
(
InetSocketAddress
(
Ipv4Address::GetAny
(),
port
)));
115
apps
=
sink
.Install(
nC
);
116
apps
.Start(
Seconds
(1));
117
apps
.Stop(
Seconds
(10));
118
119
AsciiTraceHelper
ascii
;
120
p2p
.EnableAsciiAll(
ascii
.CreateFileStream(
"static-routing-slash32.tr"
));
121
p2p
.EnablePcapAll(
"static-routing-slash32"
);
122
123
Simulator::Run
();
124
Simulator::Destroy
();
125
126
return
0;
127
}
int32_t
ns3::Address
a polymophic address class
Definition
address.h:90
ns3::ApplicationContainer
holds a vector of ns3::Application pointers.
Definition
application-container.h:33
ns3::AsciiTraceHelper
Manage ASCII trace files for device models.
Definition
trace-helper.h:163
ns3::CommandLine
Parse command-line arguments.
Definition
command-line.h:221
ns3::DataRate
Class for representing data rates.
Definition
data-rate.h:78
ns3::DropTailQueue
A FIFO packet queue that drops tail-end packets on overflow.
Definition
drop-tail-queue.h:22
ns3::InetSocketAddress
an Inet address class
Definition
inet-socket-address.h:31
ns3::InternetStackHelper
aggregate IP/TCP/UDP functionality to existing Nodes.
Definition
internet-stack-helper.h:81
ns3::Ipv4AddressHelper
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
Definition
ipv4-address-helper.h:38
ns3::Ipv4Address
Ipv4 addresses are stored in host order in this class.
Definition
ipv4-address.h:31
ns3::Ipv4Address::GetAny
static Ipv4Address GetAny()
Definition
ipv4-address.cc:368
ns3::Ipv4
Access to the IPv4 forwarding table, interfaces, and configuration.
Definition
ipv4.h:69
ns3::Ipv4InterfaceAddress
a class to store IPv4 address information on an interface
Definition
ipv4-interface-address.h:34
ns3::Ipv4InterfaceContainer
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Definition
ipv4-interface-container.h:45
ns3::Ipv4Mask
a class to represent an Ipv4 address mask
Definition
ipv4-address.h:246
ns3::Ipv4StaticRoutingHelper
Helper class that adds ns3::Ipv4StaticRouting objects.
Definition
ipv4-static-routing-helper.h:33
ns3::Mac48Address::Allocate
static Mac48Address Allocate()
Allocate a new Mac48Address.
Definition
mac48-address.cc:94
ns3::NetDeviceContainer
holds a vector of ns3::NetDevice pointers
Definition
net-device-container.h:32
ns3::NodeContainer
keep track of a set of node pointers.
Definition
node-container.h:29
ns3::OnOffHelper
A helper to make it easier to instantiate an ns3::OnOffApplication on a set of nodes.
Definition
on-off-helper.h:26
ns3::PacketSinkHelper
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes.
Definition
packet-sink-helper.h:23
ns3::PointToPointHelper
Build a set of PointToPointNetDevice objects.
Definition
point-to-point-helper.h:33
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition
ptr.h:66
ns3::Simulator::Destroy
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition
simulator.cc:131
ns3::Simulator::Run
static void Run()
Run the simulation.
Definition
simulator.cc:167
ns3::StringValue
Hold variables of type string.
Definition
string.h:45
port
uint16_t port
Definition
dsdv-manet.cc:33
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition
log.h:191
ns3::CreateObject
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
Definition
object.h:619
ns3::Create
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition
ptr.h:436
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition
nstime.h:1344
brite-generic-example.p2p
p2p
Definition
brite-generic-example.py:32
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
nsclick-simple-lan.ipv4
ipv4
Definition
nsclick-simple-lan.py:46
nsclick-simple-lan.internet
internet
Definition
nsclick-simple-lan.py:34
openflow-switch.onoff
onoff
Definition
openflow-switch.py:59
second.cmd
cmd
Definition
second.py:29
sink
Ptr< PacketSink > sink
Pointer to the packet sink application.
Definition
wifi-tcp.cc:44
examples
routing
static-routing-slash32.cc
Generated on Mon Dec 15 2025 15:21:47 for ns-3 by
1.9.8