Practical 6
Practical 6
Practical 6
6 ROLL NO: 27
THEORY:
1. In computer networking, the User Datagram Protocol (UDP) is one of the core
members of the Internet protocol suite.
2. With UDP, computer applications can send messages, in this case referred to as
datagrams, to other hosts on an Internet Protocol (IP) network. Prior
communications are not required in order to set up communication channels or
data paths.
3. UDP uses a simple connectionless communication model with a minimum of
protocol mechanisms.
4. UDP provides checksums for data integrity, and port numbers for addressing
different functions at the source and destination of the datagram.
5. UDP is suitable for purposes where error checking and correction are either not
necessary or are performed in the application.
6. Working:
a. UDP sends packets (units of data transmission) directly to a target
computer, without establishing a connection first, indicating the order of
said packets, or checking whether they arrived as intended.
7. Classes Used In Code:
a. Following different classes are used in code:
i. Ipv4AddressHelper Class:
1. A helper class to make life easier while doing simple IPv4
address assignment in scripts.
2. This class is a very simple IPv4 address generator. You can
think of it as a simple local number incrementer. It has no
notion that IP addresses are part of a global address space.
3. If you have a complicated address assignment situation
you may want to look at the Ipv4AddressGenerator which
ATHARVA KALE PRACTICAL NO.6 ROLL NO: 27
CODE:
// Network topology
//
// n0 n1
// | |
// =======
// LAN
//
// - UDP flows from n0 to n1
#include <fstream>
#include "ns3/core-module.h"
#include "ns3/csma-module.h"
#include "ns3/applications-module.h"
#include "ns3/internet-module.h"
#include "ns3/netanim-module.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("UdpClientServerExample");
int
main (int argc, char *argv[])
{
//
// Enable logging for UdpClient and
//
LogComponentEnable ("UdpClient", LOG_LEVEL_INFO);
ATHARVA KALE PRACTICAL NO.6 ROLL NO: 27
//
// Explicitly create the nodes required by the topology (shown above).
//
NS_LOG_INFO ("Create nodes.");
NodeContainer n;
n.Create (2);
InternetStackHelper internet;
internet.Install (n);
//
// Create one UdpClient application to send UDP datagrams from node zero to
ATHARVA KALE PRACTICAL NO.6 ROLL NO: 27
// node one.
//
uint32_t MaxPacketSize = 1024;
Time interPacketInterval = Seconds (0.05);
uint32_t maxPacketCount = 320;
UdpClientHelper client (serverAddress, port);
client.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
client.SetAttribute ("Interval", TimeValue (interPacketInterval));
client.SetAttribute ("PacketSize", UintegerValue (MaxPacketSize));
apps = client.Install (n.Get (0));
apps.Start (Seconds (2.0));
apps.Stop (Seconds (10.0));
AnimationInterface anim("udp.xml");
//
// Now, do the actual simulation.
//
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");
}
ATHARVA KALE PRACTICAL NO.6 ROLL NO: 27
OUTPUT:
o ./waf output:
o Python Visualizer:
ATHARVA KALE PRACTICAL NO.6 ROLL NO: 27
o NetAnim Output:
CONCLUSION:
Hence we successfully simulated UDP Server Client.