0% found this document useful (0 votes)
58 views5 pages

Assignment 2 - 119CS0143

This C++ program simulates a network with two point-to-point nodes connected to a local area network (LAN) of CSMA nodes. It creates the network topology, installs internet stacks, assigns IP addresses, and runs applications including an UDP echo server and client. It also enables packet tracing and generates an animation of the network topology.

Uploaded by

Astha Nayak
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views5 pages

Assignment 2 - 119CS0143

This C++ program simulates a network with two point-to-point nodes connected to a local area network (LAN) of CSMA nodes. It creates the network topology, installs internet stacks, assigns IP addresses, and runs applications including an UDP echo server and client. It also enables packet tracing and generates an animation of the network topology.

Uploaded by

Astha Nayak
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Assignment 2 - 119CS0143

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */


/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/csma-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
#include "ns3/ipv4-global-routing-helper.h"
#include "ns3/netanim-module.h"

// Default Network Topology


//
// 10.1.1.0
// n0 -------------- n1 n2 n3 n4 n5 n6
// point-to-point | | | | | |
// =========================
// LAN 10.1.2.0

using namespace ns3;

NS_LOG_COMPONENT_DEFINE ("SecondScriptExample");

int
main (int argc, char *argv[])
{
bool verbose = true;
uint32_t nCsma = 5;
bool tracing = true;

CommandLine cmd;
cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);

Assignment 2 - 119CS0143 1
cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);
cmd.AddValue("tracing", "Enable pcap tracing", tracing);
cmd.Parse (argc,argv);

if (verbose)
{
LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
}

nCsma = nCsma == 0 ? 1 : nCsma;

NodeContainer p2pNodes;
p2pNodes.Create (2);

NodeContainer csmaNodes;
csmaNodes.Add (p2pNodes.Get (1));
csmaNodes.Create (nCsma);

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

NetDeviceContainer p2pDevices;
p2pDevices = pointToPoint.Install (p2pNodes);

CsmaHelper csma;
csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));
csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));

NetDeviceContainer csmaDevices;
csmaDevices = csma.Install (csmaNodes);

InternetStackHelper stack;
stack.Install (p2pNodes.Get (0));
stack.Install (csmaNodes);

Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer p2pInterfaces;
p2pInterfaces = address.Assign (p2pDevices);

address.SetBase ("10.1.2.0", "255.255.255.0");


Ipv4InterfaceContainer csmaInterfaces;
csmaInterfaces = address.Assign (csmaDevices);

UdpEchoServerHelper echoServer (90);

ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma));


serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 90);


echoClient.SetAttribute ("MaxPackets", UintegerValue (1));

Assignment 2 - 119CS0143 2
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (p2pNodes.Get (0));


clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));

Ipv4GlobalRoutingHelper::PopulateRoutingTables ();

AnimationInterface anim("anim2.xml");
anim.SetConstantPosition(p2pNodes.Get (0), 10.0, 10.0);
anim.SetConstantPosition(p2pNodes.Get (1), 20.0, 20.0);
anim.SetConstantPosition(csmaNodes.Get (1), 30.0, 30.0);
anim.SetConstantPosition(csmaNodes.Get (2), 30.0, 40.0);
anim.SetConstantPosition(csmaNodes.Get (3), 30.0, 50.0);
anim.SetConstantPosition(csmaNodes.Get (4), 30.0, 60.0);
anim.SetConstantPosition(csmaNodes.Get (5), 30.0, 70.0);
AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll(ascii.CreateFileStream("trace2.tr"));
if(tracing==true)
{
pointToPoint.EnablePcapAll("trace2");
}
Simulator::Run ();
Simulator::Destroy ();
return 0;
}

Assignment 2 - 119CS0143 3
Assignment 2 - 119CS0143 4
Assignment 2 - 119CS0143 5

You might also like