CN Lab Final Manual - No
CN Lab Final Manual - No
COMPUTER NETWORKS
Laboratory Manual
CHAITANYA BHARATHI INSTITUTE OF TECHNOLOGY (A)
OUR MOTTO: SWAYAM TEJASWIN BHAVA
Institute
To be a centre of excellence in technical education and research.
Vision
Institute
To address the emerging needs through quality technical education and advanced research.
Mission
Department To emerge as a vibrant model of excellence in education, research and innovation in Electronics
Vision and Communication Engineering.
To impart strong theoretical and practical knowledge of the state of art technologies to meet
M1
growing challenges in the industry
Department To carry out the advanced and need based research in consultation with the renowned
M2
Mission research and industrial organizations.
Engage successfully in professional career and/or pursue higher education in Electronics and
PEO 1
Communication and allied areas.
Pursue research, design and development of state-of-the art systems applying the knowledge
PEO 2
of Electronics and Communication engineering
Exhibit professional ethics and values with lifelong learning and work effectively as
PEO 4
individuals/team members in multidisciplinary projects.
1. Ability to apply the acquired knowledge of core subjects in design and development of
PSO 1
Communications/Signal processing/ VLSI/ Embedded systems.
Analyze and solve the complex Electronics and Communication engineering problems using
PSO 2
state-of-art hardware and software tools
2. Problem Analysis Identify, formulate, research literature, and analyse complex engineering
problems reaching substantiated conclusions using first principles of
mathematics, natural sciences, and engineering sciences.
3. Design/Development of Solutions Design solutions for complex engineering problems and design system
components or processes that meet the specified needs with appropriate
consideration for public health and safety, and cultural, societal, and
environmental considerations.
4. Conduct Investigations of Complex Use research-based knowledge and research methods including design of
Problems experiments, analysis and interpretation of data, and synthesis of the
information to provide valid conclusions.
5. Modern Tool Usage Create, select, and apply appropriate techniques, resources, and modern
engineering and IT tools, including prediction and modelling to complex
engineering activities, with an understanding of the limitations.
6. The Engineer and Society Apply reasoning informed by the contextual knowledge to assess societal,
health, safety, legal, and cultural issues and the consequent responsibilities
relevant to the professional engineering practice.
7. Environment and Sustainability Understand the impact of the professional engineering solutions in societal
and environmental contexts, and demonstrate the knowledge of, and need
for sustainable development.
9. Individual and Teamwork Function effectively as an individual, and as a member or leader in diverse
teams, and in multidisciplinary settings.
11. Project Management and Finance Demonstrate knowledge and understanding of the engineering and
management principles and apply these to one’s own work, as a member
and leader in a team, to manage projects and in multidisciplinary
environments.
12. Life-long Learning Recognize the need for and have the preparation and ability to engage in
independent and life-long learning in the broadest context of technological
change.
18EC C28
COMPUTER NETWORKS LAB
Prerequisite: Knowledge on Digital communications and familiarity with anyone programming language like C.
Course Objectives:
This course aims to:
1. Understand Link layer concepts.
2. Understand routing algorithms in Network layer.
3. Understand the network simulator environment and visualize a network topology and observe its performance.
Course Outcomes:
Upon completion of this course, students will be able to:
1. Apply fundamental principles of computer networking.
2. Examine the performance of design issues of Link layer.
3. Construct a network and measure its performance with different routing algorithms.
4. Create a wired and wireless Network using NS-2.
5. Analyze performance of various Network protocols using NS-2
List of Experiments
1. Implement the data link layer framing methods such as character, character stuffing and bit stuffing.
2. Implementation of Error Detection / Error Correction Techniques.
3. Construct Dijkstra’s algorithm to compute the shortest path through a graph.
4. Create a subnet graph with weights indicating delay between the nodes and find routing table for any one node
using link state routing algorithm.
5. Construct a broadcast tree using a subnet.
6. Create a wired network and data transmission between the nodes with at least four nodes using NS2.
7. Implementation of Stop & Wait Protocol using NS2
8. Implementation of Go Back N Protocol using NS2
9. Implementation of Selective Reject/Repeat Protocol using NS2
10. Implementation of Distance Vector Routing Protocol using NS2
11. Creation of a wireless network and data transmission between the nodes with at least four nodes using NS2.
12. Simulation of the data transfer between the nodes using TCP/UDP using for loop in NS2.
Suggested Reading:
1. Behrouz A. Forouzan, “Data Communication and Networking”, 4thEdition, McGraw-Hill Forouzan Networking
Series, McGraw-Hill, 2007.
2. S. Keshav, “An Engineering Approach to Computer Networking”, 2ndEdition, Addison-Wesley Professional
Pearson Education, 2001.
LIST OF EXPERIMENTS
Simulation of a wired network and data transmission between the nodes with four
16 60
nodes
Simulation of the data transfer between the nodes using TCP/UDP and use FOR
17 64
loop and Session Routing Protocol
Simulation of a wireless network and data transmission between the nodes with
18 67
twelve nodes
Implement the data link layer framing methods: Character Stuffing, Bit Stuffing in
19 73
MATLAB
20 Implementation of Error Detection and Error Correction Techniques in MATLAB 77
AIM:
To study about NS2 simulator in detail.
THEORY:
Network Simulator (Version 2), widely known as NS2, is simply an event driven simulation tool that
has proved useful in studying the dynamic nature of communication networks. Simulation of wired as
well as wireless network functions and protocols (e.g., routing algorithms, TCP, UDP) can be done
using NS2. In general, NS2 provides users with a way of specifying such network protocols and
simulating their corresponding behaviors. Due to its flexibility and modular nature, NS2 has gained
constant popularity in the networking research community since its birth in 1989. Ever since, several
revolutions and revisions have marked the growing maturity of the tool, thanks to substantial
contributions from the players in the field. Among these are the University of California and Cornell
University who developed the REAL network simulator,1 the foundation which NS is based on. Since
1995 the Defense Advanced Research Projects Agency (DARPA) supported development of NS
through the Virtual Inter Network Testbed (VINT) project. Currently the National Science Foundation
(NSF) has joined the ride in development. Last but not the least, the group of Researchers and
developers in the community are constantly working to keep NS2 strong and versatile.
BASIC ARCHITECTURE:
Figure 1 shows the basic architecture of NS2. NS2 provides users with an executable command
ns which takes on input argument, the name of a Tcl simulation scripting file. Users are feeding the
name of a Tcl simulation script (which sets up a simulation) as an input argument of an NS2
executable command ns.
In most cases, a simulation trace file is created, and is used to plot graph and/or to create
animation. NS2 consists of two key languages: C++ and Object-oriented Tool Command Language
(OTcl). While the C++ defines the internal mechanism (i.e., a backend) of the simulation objects, the
OTcl sets up simulation by assembling and configuring the objects as well as scheduling discrete
events (i.e., a frontend).
The C++ and the OTcl are linked together using TclCL. Mapped to a C++ object, variables in
the OTcl domains are sometimes referred to as handles. Conceptually, a handle (e.g., n as a Node
handle) is just a string (e.g., _o10) in the OTcl domain, and does not contain any functionality. Instead,
the functionality (e.g., receiving a packet) is defined in the mapped C++ object (e.g., of class
Connector). In the OTcl domain, a handle acts as a frontend which interacts with users and other OTcl
1
objects. It may define its own procedures and variables to facilitate the interaction. Note that the
member procedures and variables in the OTcl domain are called instance procedures (instprocs) and
instance variables (instvars), respectively. Before proceeding further, the readers are encouraged to
learn C++ and OTcl languages. We refer the readers to [14] for the detail of C++, while a brief tutorial
of Tcl and OTcl tutorial are given in Appendices A.1 and A.2, respectively.
NS2 provides a large number of built-in C++ objects. It is advisable to use these C++ objects to
set up a simulation using a Tcl simulation script. However, advance users may find these objects
insufficient. They need to develop their own C++ objects, and use an OTcl configuration interface to
put together these objects. After simulation, NS2 outputs either text-based or animation-based
simulation results. To interpret these results graphically and interactively, tools such as NAM
(Network AniMator) and XGraph are used. To analyze a particular behavior of the network, users can
extract a relevant subset of text-based data and transform it to a more conceivable presentation.
CONCEPT OVERVIEW:
NS uses two languages because simulator has two different kinds of things it needs to do. On one
hand, detailed simulations of protocols require a systems programming language which can efficiently
manipulate bytes, packet headers, and implement algorithms that run over large data sets. For these
tasks run-time speed is important and turn-around time (run simulation, find bug, fix bug, recompile,
re-run) is less important. On the other hand, a large part of network research involves slightly varying
parameters or configurations, or quickly exploring a number of scenarios.
In these cases, iteration time (change the model and re-run) is more important. Since configuration
runs once (at the beginning of the simulation), run-time of this part of the task is less important. ns
meets both of these needs with two languages, C++ and OTcl.
Tcl scripting
Tcl is a general-purpose scripting language. [Interpreter]
• Tcl runs on most of the platforms such as Unix, Windows, and Mac.
• The strength of Tcl is its simplicity.
• It is not necessary to declare a data type for variable prior to the usage.
Basics of TCL
Syntax: command arg1 arg2 arg3
Hello World!
puts stdout{Hello, World!} Hello, World!
Which is thus the first line in the tcl script. This line declares a new variable as using the set command,
you can call this variable as you wish, In general people declares it as ns because it is an instance of
the Simulator class, so an object the code[new Simulator] is indeed the installation of the class
Simulator using the reserved word new.
In order to have output files with data on the simulation (trace files) or files used for visualization
(nam files), we need to create the files using ―open command:
#Open the Trace file
set tracefile1 [open out.tr w]
$ns trace-all $tracefile1
The above creates a dta trace file called out.tr and a nam visualization trace file called out.nam.
Within the tcl script, these files are not called explicitly by their names, but instead by pointers that are
declared above and called ―tracefile1 and ―namfile respectively. Remark that they begin with a #
symbol. The second line open the file ―out.tr to be used for writing, declared with the letter ―w.
The third line uses a simulator method called trace-all that have as parameter the name of the file
where the traces will go.
Proc finish { } {
global ns tracefile1 namfile
$ns flush-trace
Close $tracefile1
Close $namfile
Exec nam out.nam &
Exit 0
}
Once we define several nodes, we can define the links that connect them. An example of a definition
of a link is:
$ns duplex-link $n0 $n2 10Mb 10ms DropTail
Which means that $n0 and $n2 are connected using a bi-directional link that has 10ms of propagation
delay and a capacity of 10Mb per sec for each direction.
To define a directional link instead of a bi-directional one, we should replace ―duplex-link by
―simplex-link.
In ns, an output queue of a node is implemented as a part of each link whose input is that node. We
should also define the buffer capacity of the queue related to each link. An example would be:
The command $ns attach-agent $n0 $tcp defines the source node of the tcp connection.
The command set sink [new Agent /TCPSink] Defines the behavior of the destination node of TCP
and assigns to it a pointer called sink.
TCP has many parameters with initial fixed defaults values that can be changed if mentioned
explicitly. For example, the default TCP packet size has a size of 1000bytes.This can be changed to
another value, say 552bytes, using the command $tcp set packetSize_ 552.
When we have several flows, we may wish to distinguish them so that we can identify them with
different colors in the visualization part. This is done by the command $tcp set fid_ 1 that assigns to
the TCP connection a flow identification of ―1. We shall later give the flow identification of ―2 to
the UDP connection.
VIVA QUESTIONS:
1. What protocols does ns support?
2. What is Simulation?
3. Define a Network
4. What is meant by Protocol?
5. What are the constituent parts of NS2?
RESULT:
AIM:
To create scenario and study the performance of token bus protocol using NS2.
THEORY:
Token bus is a LAN protocol operating in the MAC layer. Token bus is standardized as per IEEE 802.4. Token
bus can operate at speeds of 5Mbps, 10 Mbps and 20 Mbps. The operation of token bus is as follows: Unlike
token ring in token bus the ring topology is virtually created and maintained by the protocol. A node can receive
data even if it is not part of the virtual ring, a node joins the virtual ring only if it has data to transmit. In token
bus data is transmitted to the destination node only whereas other control frames are hop to hop. After each data
transmission there is a solicit successor control frame transmitted which reduces the performance of the
protocol.
ALGORITHM:
PROGRAM:
#Create a TCP Sink agent (a traffic sink) for TCP and attach it to node n3
set sink0 [new Agent/TCPSink]
$ns attach-agent $n3 $sink0
#Connect the traffic sources with the traffic sink
$ns connect $tcp0 $sink0
$tcp0 set class_ 1
OUTPUT:
RESULT:
Thus, the Bus Topology was Simulated and studied.
6
EXPT.NO.2b NETWORK TOPOLOGY
DATE: RING TOPOLOGY
AIM:
To create scenario and study the performance of token ring protocols using NS2.
THEORY:
Token ring is a LAN protocol operating in the MAC layer. Token ring is standardized as per IEEE 802.5. Token
ring can operate at speeds of 4mbps and 16 mbps. The operation of token ring is as follows: When there is no
traffic on the network a simple 3-byte token circulates the ring. If the token is free (no reserved by a station of
higher priority as explained later) then the station may seize the token and start sending the data frame. As the
frame travels around the ring ach station examines the destination address and is either forwarded (if the
recipient is another node) or copied. After copying4 bits of the last byte is changed. This packet then continues
around the ring till it reaches the originating station. After the frame makes a round trip the sender receives the
frame and releases a new token onto the ring.
ALGORITHM:
PROGRAM:
7
#Create five nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
$ns run
8
OUTPUT:
RESULT:
Thus, the Ring Topology was simulated and studied.
9
EXPT.NO.2c NETWORK TOPOLOGY
DATE: STAR TOPOLOGY
AIM:
To create scenario and study the performance of token ring protocols using NS2.
THEORY:
Star networks are one of the most common computer network topologies. In its simplest form, a star network
consists of one central switch, hub or computer, which acts as a conduit to transmit messages. This consists of a
central node, to which all other nodes are connected; this central node provides a common connection point for
all nodes through a hub. In star topology, every node (computer workstation or any other peripheral) is
connected to a central node called a hub or switch. The switch is the server and the peripherals are the clients.
Thus, the hub and leaf nodes, and the transmission lines between them, form a graph with the topology of a star.
If the central node is passive, the originating node must be able to tolerate the reception of an echo of its own
transmission, delayed by the two-way transmission time (i.e. to and from the central node) plus any delay
generated in the central node. An active star network has an active central node that usually has the means to
prevent echo-related problems.
The star topology reduces the damage caused by line failure by connecting all of the systems to a central node.
When applied to a bus-based network, this central hub rebroadcasts all transmissions received from any
peripheral node to all peripheral nodes on the network, sometimes including the originating node. All peripheral
nodes may thus communicate with all others by transmitting to, and receiving from, the central node only. The
failure of a transmission line linking any peripheral node to the central node will result in the isolation of that
peripheral node from all others, but the rest of the systems will be unaffected.
ALGORITHM:
PROGRAM:
#Define a 'finish'
procedure proc finish {}
{
global ns nf
$ns flush-trace
10
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit0
}
#Create a TCP Sink agent (a traffic sink) for TCP and attach it to node n3
11
OUTPUT:
VIVA QUESTIONS:
RESULT:
Thus, the star Topology was simulated and studied.
12
EXPT.NO.3 SIMULATION OF STOP AND WAIT PROTOCOL AND SLIDING WINDOW
DATE: PROTOCOL
AIM:
To Simulate and to study stop and Wait protocol using NS2.
SOFTWARE REQUIREMENTS:
NS-2 Simulator
THEORY:
Stop and Wait is a reliable transmission flow control protocol. This protocol works only in Connection Oriented
(Point to Point) Transmission. The Source node has window size of ONE. After transmission of a frame the
transmitting (Source) node waits for an Acknowledgement from the destination node. If the transmitted frame
reaches the destination without error, the destination transmits a positive acknowledgement. If the transmitted
frame reaches the Destination with error, the receiver destination does not transmit an acknowledgement. If the
transmitter receives a positive acknowledgement it transmits the next frame if any. Else if its acknowledgement
receive timer expires, it retransmits the same frame.
1. Start with the window size of 1 from the transmitting (Source) node
2. After transmission of a frame the transmitting (Source) node waits for a reply (Acknowledgement) from the
receiving (Destination) node.
3. If the transmitted frame reaches the receiver (Destination) without error, the receiver (Destination) transmits
a Positive Acknowledgement.
4. If the transmitted frame reaches the receiver (Destination) with error, the receiver (Destination) do not
transmit acknowledgement.
5. If the transmitter receives a positive acknowledgement it transmits the next frame if any. Else if the
transmission timer expires, it retransmits the same frame again.
6. If the transmitted acknowledgment reaches the Transmitter (Destination) without error, the Transmitter
(Destination) transmits the next frame if any.
7. If the transmitted frame reaches the Transmitter (Destination) with error, the Transmitter (Destination)
transmits the same frame.
8. This concept of the Transmitting (Source) node waiting after transmission for a reply from the receiver is
known as STOP and WAIT.
13
ALGORITHM:
OUTPUT:
THEORY:
A sliding window protocol is a feature of packet-based data transmission protocols. Sliding window protocols
are used where reliable in-order delivery of packets is required, such as in the Data Link Layer (OSI model) as
well as in the Transmission Control Protocol (TCP).
Conceptually, each portion of the transmission (packets in most data link layers, but bytes in TCP) is assigned a
unique consecutive sequence number, and the receiver uses the numbers to place received packets in the correct
order, discarding duplicate packets and identifying missing ones. The problem with this is that there is no limit
on the size of the sequence number that can be required.
By placing limits on the number of packets that can be transmitted or received at any given time, a sliding
window protocol allows an unlimited number of packets to be communicated using fixed-size sequence
numbers. The term "window" on the transmitter side represents the logical boundary of the total number of
packets yet to be acknowledged by the receiver. The receiver informs the transmitter in each acknowledgment
packet the current maximum receiver buffer size (window boundary). The TCP header uses a 16-bit field to
report the receive window size to the sender. Therefore, the largest window that can be used is 216 = 64
kilobytes. In slow-start mode, the transmitter starts with low packet count and increases the number of packets
in each transmission after receiving acknowledgment packets from receiver. For every ack packet received, the
15
window slides by one packet (logically) to transmit one new packet. When the window threshold is reached, the
transmitter sends one packet for one ack packet received. If the window limit is 10 packets then in slow start
mode the transmitter may start transmitting one packet followed by two packets (before transmitting two
packets, one packet ack has to be received), followed by three packets and so on until 10 packets. But after
reaching 10 packets, further transmissions are restricted to one packet transmitted for one ack packet received.
In a simulation this appears as if the window is moving by one packet distance for every ack packet received.
On the receiver side also, the window moves one packet for every packet received. The sliding window method
ensures that traffic congestion on the network is avoided. The application layer will still be offering data for
transmission to TCP without worrying about the network traffic congestion issues as the TCP on sender and
receiver side implement sliding windows of packet buffer. The window size may vary dynamically depending
on network traffic.
For the highest possible throughput, it is important that the transmitter is not forced to stop sending by the
sliding window protocol earlier than one round-trip delay time (RTT). The limit on the amount of data that it
can send before stopping to wait for an acknowledgment should be larger than the bandwidth-delay product of
the communications link. If it is not, the protocol will limit the effective bandwidth of the link.
proc finish {} {
global ns
$ns flush-trace
puts "running nam..."
exec nam sliding.nam &
exit 0
}
$ns run
OUTPUT:
VIVA QUESTIONS:
1. What is ARQ?
2. What is stop and wait protocol?
3.What is stop and wait ARQ?
4. What is usage of sequence number in reliable transmission?
5.What is sliding window?
RESULT:
Thus, the Stop and Wait protocol and Sliding window Protocols are Simulated and studied
17
EXPT.NO.4
STUDY OF HIGH-LEVEL DATA LINK CONTROL PROTOCOL (HDLC)
DATE:
AIM:
To study the concept and different frames of HDLC protocol using NS2
THEORY:
High-Level Data Link Control (HDLC) is a bit-oriented code-transparent synchronous data link
layer protocol developed by the International Organization for Standardization (ISO) .
The original ISO standards for HDLC are:
1. ISO 3309 – Frame Structure
2. ISO 4335 – Elements of Procedure
3. ISO 6159 – Unbalanced Classes of Procedure
4. ISO 6256 – Balanced Classes of Procedure
The current standard for HDLC is ISO 13239, which replaces all of those standards. HDLC provides both
connection-oriented and connectionless service. HDLC can be used for point to multipoint connections, but is
now used almost exclusively to connect one device to another, using what is known as Asynchronous Balanced
Mode (ABM). The original master-slave modes Normal Response Mode (NRM) and Asynchronous Response
Mode (ARM) are rarely used. HDLC is based on IBM's SDLC protocol, which is the layer 2 protocol for IBM's
Systems Network Architecture (SNA). It was extended and standardized by the ITU as LAP, while ANSI
named their essentially identical version ADCCP.
Derivatives have since appeared in innumerable standards. It was adopted into the X.25 protocol stack as
LAPB, into the V.42protocol as LAPM, into the Frame Relay protocol stack as LAPF and into the
ISDN protocol stack as LAPD.HDLC was the inspiration for the IEEE 802.2 LLC protocol, and it is the basis for
the framing mechanism used with the PPP on synchronous lines, as used by many servers to connect to a WAN,
most commonly the Internet. A mildly different version is also used as the control channel for E- carrier (E1) and
SONET multichannel telephone lines. Some vendors, such as Cisco, implemented protocols such as Cisco HDLC
that used the low-level HDLC framing techniques but added a protocol field to the standard HDLC header. More
importantly, HDLC is the default encapsulation for serial interfaces on Cisco routers. It has also been used on
Tellabs DXX for destination of Trunk.
FRAMING
HDLC frames can be transmitted over synchronous or asynchronous serial communication links. Those links
have no mechanism to mark the beginning or end of a frame, so the beginning and end of each frame has to be
identified. This is done by using a frame delimiter, or flag, which is a unique sequence of bits that is guaranteed
not to be seen inside a frame. This sequence is '01111110', or, in hexadecimal notation, 0x7E. Each frame begins
and ends with a frame delimiter. A frame delimiter at the end of a frame may also mark the start of the next
frame. A sequence of 7 or more consecutive 1-bits within a frame will cause the frame to be aborted.
When no frames are being transmitted on a simplex or full-duplex synchronous link, a frame delimiter is
continuously transmitted on the link. Using the standard NRZI encoding from bits to line levels (0 bit =
transition, 1 bit = no transition), this generates one of two continuous waveforms, depending on the initial state:
This is used by modems to train and synchronize their clocks via phase-locked loops. Some protocols allow the
0-bit at the end of a frame delimiter to be shared with the start of the next frame delimiter, i.e.
'011111101111110'.
For half-duplex or multi-drop communication, where several transmitters share a line, a receiver on the line will
see continuous idling 1-bits in the inter-frame period when no transmitter is active.
Since the flag sequence could appear in user data, such sequences must be modified during transmission to keep
the receiver from detecting a false frame delimiter. The receiver must also detect when this has occurred so that
the original data stream can be restored before it is passed to higher layer protocols. This can be done using bit
stuffing, in which a "0" is added after the occurrence of every "11111" in the data. When the receiver detects
these "11111" in the data, it removes the "0" added by the transmitter.
18
ALGORITHM:
PROGRAM
19
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
#Create a Null agent (a traffic sink) and attach it to node n(2)
set null0 [new Agent/Null]
$ns attach-agent $n2 $null0
#Connect the traffic source with the traffic sink
$ns connect $udp0 $null0
#Schedule events for the CBR agent and the network dynamics
$ns at 0.5 "$cbr0 start"
$ns rtmodel-at 1.0 down $n5 $n2
$ns rtmodel-at 2.0 up $n5 $n2
$ns at 4.5 "$cbr0 stop"
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"
#Run the simulation
$ns run
OUTPUT:
VIVA QUESTIONS:
RESULT:
Thus, the HDLC is studied and simulated.
20
EXPT.NO.5
SIMULATION OF DISTANCE VECTOR ROUTING ALGORITHM
DATE:
AIM:
To simulate and study the Distance Vector routing algorithm using NS2.
SOFTWARE REQUIRED:
NS-2
THEORY:
Distance Vector Routing is one of the routing algorithm in a Wide Area Network for computing shortest path
between source and destination. The Router is one main device used in a wide area network. The main task of
the router is Routing. It forms the routing table and delivers the packets depending upon the routes in the table-
either directly or via an intermediate device.
Each router initially has information about its all neighbors. Then this information will be shared among nodes.
ALGORITHM:
PROGRAM:
21
$ns duplex-link $n(0) $n(9) 1Mb 10ms DropTail
$ns duplex-link $n(9) $n(11) 1Mb 10ms DropTail
$ns duplex-link $n(10) $n(11) 1Mb 10ms DropTail
$ns duplex-link $n(11) $n(5) 1Mb 10ms DropTail
$ns rtproto DV
$ns rtmodel-at 10.0 down $n(11) $n(5)
$ns rtmodel-at 15.0 down $n(7) $n(6)
$ns rtmodel-at 30.0 up $n(11) $n(5)
$ns rtmodel-at 20.0 up $n(7) $n(6)
$ns at 45 "finish"
$ns run
22
OUTPUT:
VIVA QUESTIONS:
1. Compare connection oriented and connection less protocols.
2.What is Maximum Transmission Unit, MTU?
3.Explain the working of Distance vector routing.
4.Differentiate Proactive and Reactive routing Protocols.
5. What are the different attributes for calculating the cost of a path?
RESULT:
Thus, the Distance vector Routing Algorithm was Simulated and studied.
23
EXPT.NO.6
SIMULATION OF LINK STATE ROUTING ALGORITHM
DATE:
AIM:
To simulate and study the link state routing algorithm using NS2.
SOFTWARE REQUIRED:
NS-2
THEORY:
In link state routing, each router shares its knowledge of its neighborhood with every other router in the
internet work. (i) Knowledge about Neighborhood: Instead of sending its entire routing table a router sends
info about its neighborhood only. (ii) To all Routers: each router sends this information to every other router
on the internet work not just to its neighbor. It does so by a process called flooding. (iii)Information sharing
when there is a change: Each router sends out information about the neighbors when there is change.
PROCEDURE:
The Dijkstra algorithm follows four steps to discover what is called the shortest path tree (routing table) for
each router: The algorithm begins to build the tree by identifying its roots. The root router’s trees the router
itself. The algorithm then attaches all nodes that can be reached from the root. The algorithm compares the
tree’s temporary arcs and identifies the arc with the lowest cumulative cost. This arc and the node to which it
connects are now a permanent part of the shortest path tree. The algorithm examines the database and identifies
every node that can be reached from its chosen node. These nodes and their arcs are added temporarily to the
tree.
The last two steps are repeated until every node in the network has become a permanent part of the tree.
ALGORITHM:
PROGRAM:
24
for { set i 0 } { $i < 12} { incr i 1 } {
set n($i) [$ns node]}
$ns rtproto LS
$ns rtmodel-at 10.0 down $n(11) $n(5)
$ns rtmodel-at 15.0 down $n(7) $n(6)
$ns rtmodel-at 30.0 up $n(11) $n(5)
$ns rtmodel-at 20.0 up $n(7) $n(6)
$ns at 45 "finish"
$ns run
25
OUTPUT:
VIVA QUESTIONS:
1. What is Routing?
2. What is Dynamic routing?
3. What are the two steps in link state routing?
4. Compare link state and Distance Vector routing
5. What are all the route metric used in Link state routing?
RESULT:
Thus, the Link State Routing Algorithm was Simulated and studied.
26
EXPT.NO.7 DATA ENCRYPTION AND DECRYPTION
DATE:
AIM:
To implement Data encryption and decryption
SOFTWARE REQUIREMENTS:
Turbo C
THEORY:
In encryption, each letter position in the file text which is given in encrypt mode is changed according to the
ascending order of the key text. In decryption each letter position in the encrypted file text is changed
according to the ascending order of the key text.
ALGORITHM-ENCRYPTION
Get the text to be encrypted (plain text) and key text.
a. Find the length of the plain text.
b. For i=1 to length of plain text
c. Find the binary equivalent of ith character of plain text.
d. Find the binary equivalent of ith character of key text
e. Find the XOR of above two values.
The resulting value will be the encrypted format (cipher text) of the plain text.
ALGORITHM-DECRYPTION
Get the text to be decrypted (cipher text) and key text.
Find the length of the cipher text.
For i=1 to length of cipher text
a. Find the binary equivalent of ith character of cipher text.
b. Find the binary equivalent of ith character of key text
c. Find the XOR of above two values.
The resulting value will be the decrypted format (original plain text) of the cipher plain text.
PROGRAM
# include <stdio.h>
#include<conio.h>
void main ( )
{ static int s, i, k,n,c[100];
printf(“\n program 1: encryption and 2. decryption”);
scanf (“%d”, &s);
switch (s)
{ case 1: printf(“enter the key value:”);
scanf(“%d”, &k);
printf(“enter the length of text:”);
scanf(“%d”, &n);
printf(“enter the data to be encrypted:”);
for (i=0;i<=n;i++)
scanf(“%c”, &c[i]);
for (i=0;i<=n;i++)
{c[i]=c[i]+k;
if (c[i]>90)
c[i]=c[i]-26;}
printf(“encrypted data”);
for (i=1;i<=n;i++)
printf(“%c”, c[i]);
break;
case 2: printf(“enter the key value:”);
scanf(“%d”, &k);
27
printf(“enter the length of text:”);
scanf(“%d”, &n);
printf(“enter the data to be decrypted:”);
for (i=0;i<=n;i++)
scanf(“%c”, &c[i]);
for (i=0;i<=n;i++)
{c[i]=c[i]-k;
if (c[i]<65)
c[i]=c[i]+26;}
printf(“decrypted data”);
for (i=1;i<=n;i++)
printf(“%c”, c[i]);
break;
case 3: break;
getch ();
}
}
OUTPUT:
1. ENCRYPTION
enter the key value: 1
enter the length of text: 5
enter the data to be encrypted: HELLO
encrypted data: IFMMP
2. DECRYPTION
enter the key value: 1
enter the length of text: 5
enter the data to be decrypted: IFMMP
decrypted data: HELLO
VIVA QUESTIONS:
1.What is meant by Encryption?
2.What is Decryption?
3. Encrypt the word “HELLO” using Caesar cipher.
4. What are the different algorithms available for encryption?
5.What type of information can be secured with Cryptography?
RESULT:
Thus, the Data Encryption and Decryption was studied.
28
EXPT.NO.8 IMPLEMENTATION OF ERROR DETECTION TECHNIQUE-CRC
DATE:
AIM:
To implement error detection and error correction techniques.
SOFTWARE REQUIREMENTS:
Turbo C
THEORY:
The upper layers work on some generalized view of network architecture and are not aware of actual hardware
data processing. Hence, the upper layers expect error-free transmission between the systems. Most of the
applications would not function expectedly if they receive erroneous data. Applications such as voice and
video may not be that affected and with some errors they may still function well. Data-link layer uses some
error control mechanism to ensure that frames (data bit streams) are transmitted with certain level of accuracy.
But to understand how errors is controlled, it is essential to know what types of errors may occur. CRC is a
different approach to detect if the received frame contains valid data. This technique involves binary division
of the data bits being sent. The divisor is generated using polynomials. The sender performs a division
operation on the bits being sent and calculates the remainder. Before sending the actual bits, the sender adds
the remainder at the end of the actual bits. Actual data bits plus the remainder is called a codeword. The sender
transmits data bits as codewords.
ALGORITHM:
1. Open Turbo c++ software and type the program for error detection
2. Get the input in the form of bits.
3. Append 16 zeros as redundancy bits.
4. Divide the appended data using a divisor polynomial.
5. The resulting data should be transmitted to the receiver.
6. At the receiver the received data is entered.
7. The same process is repeated at the receiver.
8. If the remainder is zero there is no error otherwise there is some error in the received bits
9. Run the program.
C PROGRAM
#include<stdio.h>
char m[50],g[50],r[50],q[50],temp[50];
void caltrans(int);
void crc(int);
void calram();
void shiftl();
int main()
{
int n,i=0;
char ch,flag=0;
printf("Enter the frame bits:");
while((ch=getc(stdin))!='\n')
m[i++]=ch;
n=i;
for(i=0;i<16;i++)
m[n++]='0';
m[n]='\0';
printf("Message after appending 16 zeros:%s",m);
for(i=0;i<=16;i++)
g[i]='0';
g[0]=g[4]=g[11]=g[16]='1';g[17]='\0';
printf("\ngenerator:%s\n",g);
crc(n);
29
printf("\n\nquotient:%s",q);
caltrans(n);
printf("\ntransmitted frame:%s",m);
printf("\nEnter transmitted frame:");
scanf("\n%s",m);
printf("CRC checking\n");
crc(n);
printf("\n\nlast remainder:%s",r);
for(i=0;i<16;i++)
if(r[i]!='0')
flag=1;
else
continue;
if(flag==1)
printf("Error during transmission");
else
printf("\n\nReceived frame is correct");
}
void crc(int n)
{
int i,j;
for(i=0;i<n;i++)
temp[i]=m[i];
for(i=0;i<16;i++)
r[i]=m[i];
printf("\nintermediate remainder\n");
for(i=0;i<n-16;i++)
{
if(r[0]=='1')
{
q[i]='1';
calram();
}
else
{
q[i]='0';
shiftl();
}
r[16]=m[17+i];
r[17]='\0';
printf("\nremainder %d:%s",i+1,r);
for(j=0;j<=17;j++)
temp[j]=r[j];
}
q[n-16]='\0';
}
void calram()
{
int i,j;
for(i=1;i<=16;i++)
r[i-1]=((int)temp[i]-48)^((int)g[i]-48)+48;
}
void shiftl()
{
int i;
for(i=1;i<=16;i++)
r[i-1]=r[i];
}
void caltrans(int n)
30
{
int i,k=0;
for(i=n-16;i<n;i++)
m[i]=((int)m[i]-48)^((int)r[k++]-48)+48;
m[i]='\0';
}
OUTPUT:
VIVA QUESTIONS:
RESULT:
Thus, the error detection and error correction is implemented successfully.
31
EXPT.NO: 9
PERFORMANCE ANALYSIS OF CSMA/CA AND CSMA/CD PROTOCOLS
DATE:
AIM:
To create scenario and study the performance of CSMA / CD protocol using NS2.
SOFTWARE REQUIREMENTS:
NS-2 Simulator
THEORY:
Ethernet is a LAN (Local area Network) protocol operating at the MAC (Medium Access Control) layer.
Ethernet has been standardized as per IEEE 802.3. The underlying protocol in Ethernet is known as the CSMA /
CD – Carrier Sense Multiple Access / Collision Detection. The working of the Ethernet protocol is as explained
below, A node which has data to transmit senses the channel. If the channel is idle then, the data is transmitted.
If the channel is busy then, the station defers transmission until the channel is sensed to be idle and then
immediately transmitted. If more than one node starts data transmission at the same time, the data collides. This
collision is heard by the transmitting nodes which enter into contention phase. The contending nodes resolve
contention using an algorithm called Truncated binary exponential back off.
ALGORITHM:
PROGRAM:
CSMA/CA
OUTPUT:
CSMA/CD
35
OUTPUT:
VIVA QUESTIONS:
RESULT:
36
EXPT.NO 10 SIMULATION OF GO BACK N PROTOCOL AND SELECTIVE REPEAT
DATE: PROTOCOLS
AIM:
To Simulate and to study of Go Back N protocol using NS2.
SOFTWARE REQUIREMENTS:
1. NS-2 Simulator
THEORY:
Go Back N is a connection-oriented transmission. The sender transmits the frames continuously. Each frame in
the buffer has a sequence number starting from 1 and increasing up to the window size. The sender has a
window i.e. a buffer to store the frames. This buffer size is the number of frames to be transmitted continuously.
The size of the window depends on the protocol designer.
OPERATIONS:
8. The source node retransmits all frames of window from the first error frame.
37
9. If the frames are errorless in the next transmission and if the acknowledgment is error free, the window
slides by the number of error-free frames being transmitted.
10. If the acknowledgment is transmitted with error, all the frames of window at source are retransmitted, and
window doesn’t slide.
11. This concept of repeating the transmission from the first error frame in the window is called as GOBACKN
transmission flow control protocol
OUTPUT:
39
Selective Repeat ARQ is a specific instance of the Automatic Repeat-reQuest (ARQ) Protocol. It may be used
as a protocol for the delivery and acknowledgement of message units, or it may be used as a protocol for the
delivery of subdivided message sub-units. When used as the protocol for the delivery of messages, the sending
process continues to send a number of frames specified by a window size even after a frame loss. Unlike Go-
Back-N ARQ, the receiving process will continue to accept and acknowledge frames sent after an initial error.
The receiver process keeps track of the sequence number of the earliest frame it has not received, and sends that
number with every ACK it sends. If a frame from the sender does not reach the receiver, the sender continues to
send subsequent frames until it has emptied its window. The receiver continues to fill its receiving window with
the subsequent frames, replying each time with an ACK containing the sequence number of the earliest missing
frame. Once the sender has sent all the frames in its window, it re-sends the frame number given by the ACKs,
and then continues where it left off. The size of the sending and receiving windows must be equal, and half the
maximum sequence number (assuming that sequence numbers are numbered from 0 to n-1) to avoid
miscommunication in all cases of packets being dropped. To understand this, consider the case when all ACKs
are destroyed. If the receiving window is larger than half the maximum sequence number, some, possibly even
all, of the packages that are resent after timeouts are duplicates that are not recognized as such. The sender
moves its window for every packet that is acknowledged.
Advantage over Go Back N:
1. Fewer retransmissions.
Disadvantages:
1. More complexity at sender and receiver
2. Receiver may receive frames out of sequence
40
#PROGRAM FOR SELECTIVE REPEAT:
#send packets one by one
set ns [new Simulator]
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
$n0 color "red"
$n1 color "red"
$n2 color "green"
$n3 color "green"
$n4 color "black"
$n5 color "black"
$n0 shape circle ;
$n1 shape circle ;
$n2 shape circle ;
$n3 shape circle ;
$n4 shape circle ;
$n5 shape circle ;
$ns at 0.0 "$n0 label SYS1"
$ns at 0.0 "$n1 label SYS2"
$ns at 0.0 "$n2 label SYS3"
$ns at 0.0 "$n3 label SYS4"
$ns at 0.0 "$n4 label SYS5"
$ns at 0.0 "$n5 label SYS6"
set nf [open Srepeat.nam w]
$ns namtrace-all $nf
set f [open Srepeat.tr w]
$ns trace-all $f
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns duplex-link-op $n0 $n2 orient right-down
$ns queue-limit $n0 $n2 5
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link $n2 $n3 1Mb 10ms DropTail
$ns duplex-link-op $n2 $n3 orient right
$ns duplex-link $n3 $n4 1Mb 10ms DropTail
$ns duplex-link-op $n3 $n4 orient right-up
$ns duplex-link $n3 $n5 1Mb 10ms DropTail
$ns duplex-link-op $n3 $n5 orient right-down
Agent/TCP set_nam_tracevar_true
set tcp [new Agent/TCP]
$tcp set fid 1
$ns attach-agent $n1 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n4 $sink
$ns connect $tcp $sink
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns at 0.05 "$ftp start"
$ns at 0.06 "$tcp set windowlnit 8"
$ns at 0.06 "$tcp set maxcwnd 8"
$ns at 0.25 "$ns queue-limit $n3 $n4 0"
$ns at 0.26 "$ns queue-limit $n3 $n4 10"
$ns at 0.30 "$tcp set windowlnit 1"
$ns at 0.30 "$tcp set maxcwnd 1"
$ns at 0.30 "$ns queue-limit $n3 $n4 10"
41
$ns at 0.47 "$ns detach-agent $n1 $tcp;$ns detach-agent $n4 $sink"
$ns at 1.75 "finish"
$ns at 0.0 "$ns trace-annotate \"Select and repeat\""
$ns at 0.05 "$ns trace-annotate \"FTP starts at 0.01\""
$ns at 0.06 "$ns trace-annotate \"Send 8Packets from SYS1 to SYS4\""
$ns at 0.26 "$ns trace-annotate \"Error Occurs in 4th packet \""
$ns at 0.30 "$ns trace-annotate \"Retransmit Packet_4 from SYS1 to SYS4\""
$ns at 1.5 "$ns trace-annotate \"FTP stops\""
proc finish {} {
global ns nf
$ns flush-trace
close $nf
puts "filtering..."
#exec tclsh../bin/namfilter.tcl Srepeat.nam
#puts "running nam..."
exec nam Srepeat.nam &
exit 0
}
$ns run
VIVA QUESTIONS:
OUTPUT:
RESULT:
Thus, the Go back N and Selective Repeat protocols were Simulated and studied.
42
EXPT.NO 11 STUDY OF SOCKET PROGRAMMING AND CLIENT-SERVER MODEL
DATE:
AIM:
To study the client/server model of socket programming using Java.
SOFTWARE REQUIREMENTS:
Java
THEORY:
ALGORITHM:
PROGRAM:
// CLIENT // Client.java
import java.io.*;
import java.net.*;
class Client{
public static void main(String args[]){
String data;
Socket socket1;
DataInputStream key_in=new DataInputStream(System.in);
DataInputStream s_in;
PrintStream s_out;
System.out.println("Client:");
try{
socket1=new Socket("127.0.0.1",9000);
s_in=new DataInputStream(socket1.getInputStream());
s_out=new PrintStream(socket1.getOutputStream());
while(true){
data=key_in.readLine();
if(data.charAt(0)=='Q')
break;
s_out.println(data);
System.out.println("Client: "+s_in.readLine());
}
43
socket1.close();
}
catch(Exception e){}
}
}
import java.io.*;
import java.net.*;
class Server {
static Socket socket1;
static DataInputStream s_in;
static PrintStream s_out;
public static void main(String args[]) throws IOException{
String data="";
ServerSocket sc;
System.out.println("Server:");
sc=new ServerSocket(9000);
while(true){
try{
socket1=sc.accept();
s_in=new DataInputStream(socket1.getInputStream());
s_out=new PrintStream(socket1.getOutputStream());
}
catch(IOException e){}
try{
while(!(data.equals("exit"))){
data=s_in.readLine();
if(data==null) {
System.out.println("Server: ");
break;
}
s_out.println(data);
System.out.println(data);
}
socket1.close();
}
catch(IOException e){}
}
}
}
44
OUTPUT:
CLIENT:
SERVER:
VIVA QUESTIONS:
1. Define Socket
2. What is socket programming?
3. What is the function of command bind?
4. What is the syntax for connecting Client and Server?
5. What is the command to assign port number to client and server?
RESULT:
45
EXPT.NO.12 SOCKET PROGRAM FOR ECHO/PING/TALK COMMANDS
DATE
AIM:
To write a Java program to implement ping command using Java.
SOFTWARE REQUIREMENTS:
Java
THEORY:
ICMP ping flood is a kind of DOS attack that can be performed on remote machines connected via a network. It
involves sending a large number of ping echo requests (packets) to the target system such that it is not able to
tackle so fast. So, the result is that the host either gets too busy into replying these echo requests that it gets no
time to serve its original purpose, or it might crash or something similar. So, if a machine connected to the
internet gets flooded by such a large quantity of echo packets then it won’t be able to process other network
activities it was intended to, and will keep very busy in replying to the echo requests. Different machines handle
this differently depending on the network security and kind of operating system setup etc. Slowly all machines
connected to the internet are securing themselves from such dos attacks. The most common technique is the use
of a firewall, that will block the sending ip if it receives an unexpected amount of echo request. Other
techniques involve not replying to ping packets at all from over the internet. Each of the techniques has its own
pros and cons and has limitations.If it’s a website or online network then using the firewalls or other blocking
policies would work well. If it’s a broadband router of a home user that is connected to internet, then flooding
such a device will, depending on the make and model, either crash it or make it so slow that the users would be
thrown off. To test this out flood your own broadband router.
ALGORITHM:
PROGRAM:
import java.io.*;
import java.net.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String ipaddr;
System.out.print("Enter the IP address : ");
ipaddr = br.readLine();
boolean reachable = (java.lang.Runtime.getRuntime().exec("ping -n 1"+ipaddr).waitFor()==0);
if(reachable)
{
46
System.out.println("IP is reachable:: "+ipaddr);
try
{
Process p = Runtime.getRuntime().exec("Tracert "+ipaddr);
Scanner scan = new Scanner(p.getInputStream());
while(scan.hasNextLine())
{
System.out.println(scan.nextLine());
}
}
catch(Exception ex)
{
System.out.println("Error "+ex);
}
}
else
{
System.out.println("IP is not reachable: "+ipaddr);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
47
OUTPUT:
VIVA QUESTIONS:
RESULT:
48
EXPT.NO.13 IMPLEMENTING A WIRELESS SENSOR NETWORK
DATE:
AIM:
To simulate a wireless sensor network using NS2.
SOFTWARE REQUIREMENTS:
NS-2 Simulator
THEORY:
A wireless sensor network (WSN) consists of a large number of small sensor nodes that are deployed in
the area in which a factor is to be monitored. In wireless sensor network, energy model is one of the optional
attributes of a node. The energy model denotes the level of energy in a mobile node. The components required
for designing energy model includes initialEnergy, txPower, rxPower, and idlePower. The “initialEnergy”
represents the level of energy the node has at the initial stage of simulation. “txPower” and “rxPower” denotes
the energy consumed for transmitting and receiving the packets. If the node is a sensor, the energy model should
include a special component called “sensePower”. It denotes the energy consumed during the sensing operation.
Apart from these components, it is important to specify the communication range (RXThresh_) and sensing
range of a node (CSThresh_). The sample13.tcl designs a WSN in which sensor nodes are configured with
different communication and sensing range. Base Station is configured with highest communication range. Data
Transmission is established between nodes using UDP agent and CBR traffic.
ALGORITHM:
PROGRAM:
50
set udp [new Agent/UDP]
set sink [new Agent/LossMonitor]
#$ns attach-agent $node_(5) $udp
#$ns attach-agent $node_(8) $sink
$ns attach-agent $node_(8) $udp
$ns attach-agent $node_(5) $sink
$ns connect $udp $sink
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$node_(8) color Green
$ns at 10.0 "$node_(8) color yellow"
$ns at 10.0 "$node_(5) label node5 "
$ns at 10.0 "$node_(8) label node8 "
$ns at 10.0 "$cbr start"
$ns at 10.45 "$cbr stop"
# Set a udp connection between node_(8) and node_(6)
set udp1 [new Agent/UDP]
set sink1 [new Agent/LossMonitor]
$ns attach-agent $node_(8) $udp1
$ns attach-agent $node_(6) $sink1
$ns connect $udp1 $sink1
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
$node_(6) color yellow
$ns at 10.0 "$node_(6) color yellow"
$ns at 10.0 "$node_(6) label node6 "
$ns at 10.0 "$cbr1 start"
$ns at 10.45 "$cbr1 stop"
# Set a udp connection between node_(8) and node_(6)
set udp2 [new Agent/UDP]
set sink2 [new Agent/LossMonitor]
$ns attach-agent $node_(5) $udp2
$ns attach-agent $node_(8) $sink2
$ns connect $udp2 $sink2
set cbr2 [new Application/Traffic/CBR]
$cbr2 attach-agent $udp2
$node_(6) color yellow
$ns at 12.0 "$cbr2 start"
$ns at 13.45 "$cbr2 stop"
# Set a udp connection between node_(8) and node_(6)
set udp3 [new Agent/UDP]
set sink3 [new Agent/LossMonitor]
$ns attach-agent $node_(8) $udp3
$ns attach-agent $node_(6) $sink3
$ns connect $udp3 $sink3
set cbr3 [new Application/Traffic/CBR]
$cbr3 attach-agent $udp1
$node_(6) color yellow
$ns at 14.0 "$cbr3 start"
$ns at 16.45 "$cbr3 stop"
# Printing the window size
proc plotWindow {tcpSource file} {
global nss
set time 0.01
set now [$ns now]
set cwnd [$tcpSource set cwnd_]
puts $file "$now $cwnd"
$ns at [expr $now+$time] "plotWindow $tcpSource $file" }
#$ns at 10.1 "plotWindow $tcp $windowVsTime2"
51
# Define node initial position in nam
for {set i 0} {$i < $val(nn)} { incr i } {
# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
# Telling nodes when the simulation ends
for {set i 0} {$i < $val(nn) } { incr i } {
#$ns at $val(stop) "$node_($i) reset";
#$ns at 200.25 "$node_($i) reset";
$ns at 21.25 "$node_($i) reset";
}
$ns at 0.00 "$ns trace-annotate \"Wireless Mac Protocol \""
$ns at 10.0 "$ns trace-annotate \" Data send in node5 to node8 \""
$ns at 10.0 "$ns trace-annotate \" Data send in node6 to node8 \""
$ns at 10.45 "$ns trace-annotate \" Data Collision \""
$ns at 12.00 "$ns trace-annotate \"Data send in node5 to node8\""
$ns at 14.00 "$ns trace-annotate \"Data send in node6 to node8\""
$ns at 21.25 "$ns trace-annotate \"End simulation\""
$ns at 21.25 "$ns nam-end-wireless 21.01"
$ns at 21.25 "stop"
$ns at 22.01 "puts \"end simulation\" ; $ns halt"
proc stop {} {
global ns tracefd namtrace
$ns flush-trace
close $tracefd
close $namtrace
exec nam dsdv.nam &
exit 0
}
$ns run
OUTPUT:
52
VIVA QUESTIONS:
1. What is a Wireless Sensor Network?
2. How is the Network Configured?
3. How long does a node operates in a battery power?
4. What is the range of a wireless sensor node?
5. Can I use the wireless nodes in outside environment?
RESULT:
Thus, the wireless sensor network is successfully implemented using NS2 simulator.
53
EXPT.NO: 14
SIMULATE A MOBILE ADHOC NETWORK
DATE:
AIM:
To simulate a Mobile Adhoc network (MANET) using NS2.
SOFTWARE REQUIREMENTS:
Network Simulator -2
THEORY:
A mobile ad hoc network or MANET does not depend on a fixed infrastructure for its networking
operation. MANET is an autonomous and short-lived association of group of mobile nodes that communicate
with each other over wireless links. A node can directly communicate to the nodes that lie within its
communication range. If a node wants to communicate with a node that is not directly within its communication
range, it uses intermediate nodes as routers.
ALGORITHM:
PROGRAM:
create-god $val(nn)
54
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace OFF \
-macTrace OFF \
-movementTrace OFF
$ns run
55
OUTPUT:
VIVA QUESTIONS:
RESULT:
Thus, the mobile adhoc network is simulated successfully using network simulator2.
56
EXPT.NO: 15
IMPLEMENT TRANSPORT CONTROL PROTOCOL IN SENSOR NETWORK
DATE:
AIM:
To implement a Transport Control Protocol in sensor network using NS2.
SOFTWARE REQUIREMENTS:
Network Simulator -2
THEORY:
The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It
originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore,
the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery
of a stream of octets (bytes) between applications running on hosts communicating by an IP network. Major
Internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP.
Applications that do not require reliable data stream service may use the User Datagram Protocol (UDP), which
provides a connectionless datagram service that emphasizes reduced latency over reliability.
ALGORITHM:
PROGRAM:
58
OUTPUT:
VIVA QUESTIONS:
1. What is TCP?
2. Explain the three-way Handshake process?
3. Which layer is closer to a user?
4. Explain how TCP avoids a network meltdown?
5. What is the difference between flow control and Error control?
RESULT:
Thus, the Transport control protocol in sensor network is simulated successfully using NS2.
59
EXPT.NO: 16 SIMULATION OF A WIRED NETWORK AND DATA TRANSMISSION
DATE: BETWEEN THE NODES WITH FOUR NODES
AIM:
To implement a wired network and data transmission between the nodes with four nodes using NS2.
SOFTWARE REQUIREMENTS:
Network Simulator -2
THEORY:
The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It
originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore,
the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery
of a stream of octets (bytes) between applications running on hosts communicating by an IP network. Major
Internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP.
Applications that do not require reliable data stream service may use the User Datagram Protocol (UDP), which
provides a connectionless datagram service that emphasizes reduced latency over reliability.
60
ALGORITHM:
PROGRAM:
61
#Create links between the nodes
$ns duplex-link $n0 $n2 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail
62
#Print CBR packet size and interval
puts "CBR packet size = [$cbr set packet_size_]"
puts "CBR interval = [$cbr set interval_]"
OUTPUT:
RESULT:
Thus, Wired Network Scenario is implemented using Network Simulator and its performance is analyzed.
63
EXPT.NO: 17 SIMULATION OF THE DATA TRANSFER BETWEEN THE NODES USING
DATE: TCP/UDP AND USE FOR LOOP AND SESSION ROUTING PROTOCOL
AIM:
To implement a wired network and data transmission between the nodes with at least four nodes using
for loop in NS2.
SOFTWARE REQUIREMENTS:
Network Simulator -2
THEORY:
The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It
originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore,
the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery
of a stream of octets (bytes) between applications running on hosts communicating by an IP network. Major
Internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP.
Applications that do not require reliable data stream service may use the User Datagram Protocol (UDP), which
provides a connectionless datagram service that emphasizes reduced latency over reliability.
ALGORITHM:
PROGRAM:
proc finish { } {
global ns nr nf
$ns flush-trace
close $nf
close $nr
exec nam thro.nam &
exit 0
}
65
$cbr1 set interval_ 0.005
$cbr1 attach-agent $udp1
set null0 [new Agent/Null]
$ns attach-agent $n(5) $null0
$ns connect $udp1 $null0
$ns at 45 "finish"
$ns run
OUTPUT:
RESULT:
Thus, Wired Network Scenario is implemented using Network Simulator and its performance is analyzed.
66
EXPT.NO: 18 SIMULATION OF A WIRELESS NETWORK AND DATA TRANSMISSION
DATE: BETWEEN THE NODES WITH TWELVE NODES
AIM:
To implement a wireless network and data transmission between the nodes with at least four nodes using
NS2.
SOFTWARE REQUIREMENTS:
Network Simulator -2
THEORY:
A wireless sensor network (WSN) consists of a large number of small sensor nodes that are deployed in
the area in which a factor is to be monitored. In wireless sensor network, energy model is one of the optional
attributes of a node. The energy model denotes the level of energy in a mobile node. The components required
for designing energy model includes initialEnergy, txPower, rxPower, and idlePower. The “initialEnergy”
represents the level of energy the node has at the initial stage of simulation. “txPower” and “rxPower” denotes
the energy consumed for transmitting and receiving the packets. If the node is a sensor, the energy model should
include a special component called “sensePower”. It denotes the energy consumed during the sensing operation.
Apart from these components, it is important to specify the communication range (RXThresh_) and sensing
range of a node (CSThresh_). The sample13.tcl designs a WSN in which sensor nodes are configured with
different communication and sensing range. Base Station is configured with highest communication range. Data
Transmission is established between nodes using UDP agent and CBR traffic.
ALGORITHM:
PROGRAM:
#===================================
# Simulation parameters setup
#===================================
set val(chan) Channel/WirelessChannel ;# channel type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(nn) 13 ;# number of mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 872 ;# X dimension of topography
set val(y) 555 ;# Y dimension of topography
set val(stop) 28.0 ;# time of simulation end
67
# Initialization
#===================================
#Create a ns simulator
set ns [new Simulator]
# Nodes Definition
#===================================
#Create 13 nodes
set n0 [$ns node]
$n0 color black
$n0 set X_ 330
$n0 set Y_ 411
$n0 set Z_ 0.0
68
$ns initial_node_pos $n0 20
set n1 [$ns node]
$n1 color black
$n1 set X_ 256
$n1 set Y_ 300
$n1 set Z_ 0.0
$ns initial_node_pos $n1 20
set n2 [$ns node]
$n2 color black
$n2 set X_ 588
$n2 set Y_ 350
$n2 set Z_ 0.0
$ns initial_node_pos $n2 20
set n3 [$ns node]
$n3 color black
$n3 set X_ 435
$n3 set Y_ 167
$n3 set Z_ 0.0
$ns initial_node_pos $n3 20
set n4 [$ns node]
$n4 color black
$n4 set X_ 480
$n4 set Y_ 402
$n4 set Z_ 0.0
$ns initial_node_pos $n4 20
set n5 [$ns node]
$n5 color black
$n5 set X_ 602
$n5 set Y_ 455
$n5 set Z_ 0.0
$ns initial_node_pos $n5 20
set n6 [$ns node]
$n6 color black
$n6 set X_ 641
$n6 set Y_ 238
$n6 set Z_ 0.0
$ns initial_node_pos $n6 20
set n7 [$ns node]
$n7 color black
$n7 set X_ 772
$n7 set Y_ 358
$n7 set Z_ 0.0
$ns initial_node_pos $n7 20
set n8 [$ns node]
$n8 color black
69
$n8 set X_ 749
$n8 set Y_ 181
$n8 set Z_ 0.0
$ns initial_node_pos $n8 20
set n9 [$ns node]
$n9 color black
$n9 set X_ 580
$n9 set Y_ 104
$n9 set Z_ 0.0
$ns initial_node_pos $n9 20
set n10 [$ns node]
$n10 color black
$n10 set X_ 272
$n10 set Y_ 167
$n10 set Z_ 0.0
$ns initial_node_pos $n10 20
set n11 [$ns node]
$n11 color black
$n11 set X_ 387
$n11 set Y_ 294
$n11 set Z_ 0.0
$ns initial_node_pos $n11 20
set n12 [$ns node]
$n12 color black
$n12 set X_ 168
$n12 set Y_ 423
$n12 set Z_ 0.0
70
$ns at 0.1 "$n0 label Node0"
$ns at 0.1 "$n1 label Node1"
$ns at 0.1 "$n2 label Node2"
$ns at 0.1 "$n3 label Node3"
$ns at 0.1 "$n4 label Node4"
$ns at 0.1 "$n5 label Node5"
$ns at 0.1 "$n6 label Node6"
$ns at 0.1 "$n7 label Node7"
$ns at 0.1 "$n8 label Node8"
$ns at 0.1 "$n9 label Node9"
$ns at 0.1 "$n10 label Node10"
$ns at 0.1 "$n11 label Node11"
$ns at 0.1 "$n12 label Node12"
# Agents Definition
#===================================
#Setup a TCP connection
set tcp0 [new Agent/TCP]
$ns attach-agent $n12 $tcp0
set sink3 [new Agent/TCPSink]
$ns attach-agent $n9 $sink3
$ns connect $tcp0 $sink3
$tcp0 set packetSize_ 1500
# Applications Definition
#===================================
#Setup a FTP Application over TCP connection
set ftp0 [new Application/FTP]
$ftp0 attach-agent $tcp0
$ns at 0.2 "$ftp0 start"
$ns at 18.0 "$ftp0 stop"
# Termination
#===================================
#Define a 'finish' procedure
proc finish {} {
global ns tracefile namfile
$ns flush-trace
close $tracefile
close $namfile
exec nam out.nam &
exit 0
}
for {set i 0} {$i < $val(nn) } { incr i } {
$ns at $val(stop) "\$n$i reset"
}
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "finish"
$ns at $val(stop) "puts \"done\" ; $ns halt"
$ns run
OUTPUT:
RESULT:
Thus, Wireless Network Scenario is implemented using Network Simulator and its performance is analyzed.
72
EXPT.NO: 19a IMPLEMENT THE DATA LINK LAYER FRAMING METHODS:
DATE: CHARACTER STUFFING
AIM:
To implement Data Link Layer Framing Methods: Character Stuffing using MATLAB
SOFTWARE REQUIREMENTS:
MATLAB
THEORY:
In byte stuffing (or character stuffing), a particular byte is added to the data section of the frame when
there is a character with the same pattern as the flag. The data section is stuffed with an extra byte. This byte is
usually known as the escape character (ESC), which has a predefined bit pattern. Whenever the receiver
encounters the ESC character, it deletes it from the data section and treats the next character as data, not a
delimiting flag.
PROGRAM:
clc
close all
clear all
disp('Framing Method is Character Stuffing ')
plain_text=input('Enter Plain Text: ','s');
interval=input('Enter the Interval length: ');
insert_string=input('Enter the character to be inserted: ','s');
lpt=length(plain_text);
remainder=rem(lpt,interval);
encrypted_text='';
for i=1:interval:lpt-interval+1
encrypted_text=[encrypted_text,plain_text(1,i:i+interval-1),insert_string];
end
if remainder~=0
encrypted_text=[encrypted_text,plain_text(1,end-remainder+1:end),insert_string];
end
disp('The Encrypted Text is')
disp(encrypted_text)
decrypted_text='';
lis=length(insert_string);
let=length(encrypted_text);
for j=1:interval+lis:let
if j+interval+lis>let
decrypted_text=[decrypted_text,encrypted_text(1,j:end-lis)];
else
decrypted_text=[decrypted_text,encrypted_text(1,j:j+interval-1)];
end
end
disp('The Decrypted Text is')
disp(decrypted_text)
73
OUTPUT:
RESULT:
74
EXPT.NO: 19b IMPLEMENT THE DATA LINK LAYER FRAMING METHODS:
DATE: BIT STUFFING
AIM:
To implement Data Link Layer Framing Methods: Bit Stuffing using MATLAB
SOFTWARE REQUIREMENTS:
MATLAB
THEORY:
Data link layer is responsible for something called Framing, which is the division of stream of bits from
network layer into manageable units (called frames). Frames could be of fixed size or variable size. In variable-
size framing, we need a way to define the end of the frame and the beginning of the next frame.
Bit stuffing is the insertion of non-information bits into data. Note that stuffed bits should not be
confused with overhead bits. Overhead bits are non-data bits that are necessary for transmission (usually as part
of headers, checksums etc.).
Run length limited coding – To limit the number of consecutive bits of the same value (i.e., binary value) in the
data to be transmitted. A bit of opposite value is inserted after the maximum allowed number of consecutive bits.
PROGRAM:
clc
close all
clear all
msg=input('Input Message Binary Bit Stream: ');
count=0;
stuffcount=0;
[M N]=size(msg);
for j=1:N-5+stuffcount
for i=j:j+5
if msg(i)==1
count=count+1;
else
count=0;
break;
end
end
if count==6
msg=[msg(1:j+4) 0 msg(j+5:end)];
count=0;
stuffcount=stuffcount+1;
end
end
fprintf('Stream after the bit is stuffed:');
disp(msg);
75
OUTPUT:
RESULT:
76
EXPT.NO: 20a IMPLEMENTATION OF ERROR DETECTION TECHNIQUE:
DATE: CYCLIC REDUNDANCY CHECK (CRC)
AIM:
To implement Error Detection Technique: Cyclic Redundancy Check (CRC) using MATLAB and NS2.
SOFTWARE REQUIREMENTS:
MATLAB
THEORY:
1. The binary data is first augmented by adding k-1 zeros in the end of the data
2. Use modulo-2 binary division to divide binary data by the key and store remainder of division.
3. Append the remainder at the end of the data to form the encoded data and send the same
Perform modulo-2 division again and if the remainder is 0, then there are no errors.
In this article we will focus only on finding the remainder i.e. check word and the code word.
Modulo 2 Division:
The process of modulo-2 binary division is the same as the familiar division process we use for decimal
numbers. Just that instead of subtraction, XOR is used here.
• In each step, a copy of the divisor (or data) is XORed with the k bits of the dividend (or key).
• The result of the XOR operation (remainder) is (n-1) bits, which is used for the next step after 1
extra bit is pulled down to make it n bits long.
• When there are no bits left to pull down, we have a result. The (n-1)-bit remainder which is
appended at the sender side.
Illustration:
77
Sender Side:
Therefore, the remainder is all zeros. Hence, the data received has no error.
78
PROGRAM AT THE TRANSMITTER:
clc
close all
clear all
m=input('enter message: ');
g=input('enter pattern: ');
lm=length(m);
lg=length(g);
t=[m,zeros(1,lg-1)];
lt=length(t);
xm=t(1:lg);
rem1=[];
for i=lg:lt
if(xm(1)==g(1))
rem1=bitxor(xm,g);
end
if i==lt
rem1=rem1(2:end);
break;
end
rem1=[rem1(2:end),t(i+1)];
xm=rem1;
end
tm=[m,rem1];
disp(['frame to be transmitted is ']);
disp(tm);
OUTPUT:
79
PROGRAM AT THE RECEIVER:
clc
clear
tm=input('enter transmitted frame ');
g=input('enter pattern ');
lg=length(g);
ltm=length(tm);
txm=tm(1:lg);
rem1=[];
for i=lg:1:ltm
if(txm(1)==g(1))
rem1=bitxor(txm,g);
end
if i==ltm
rem1=rem1(2:end);
break;
end
rem1=[rem1(2:end),tm(i+1)];
txm=rem1;
end
if rem1==zeros(1,lg-1)
rem1
disp('"NO ERROR" ready to receive another frame');
else
rem1
disp('"ERROR" please retransmit');
dy=input('if u want to retansmit press "y" else "n" ','s');
if(dy=='y')
DCRCmat
end
end
OUTPUT:
RESULT:
80
PROGRAM AT THE TRANSMITTER:
set res {}
if {$i<0} {
set sign -
set i [expr {abs($i)}]
} else {
set sign {}
}
while {$i>0} {
set res [expr {$i%2}]$res
set i [expr {$i/2}]
}
if {$res eq {}} {set res 0}
if {$width ne {}} {
append d [string repeat 0 $width] $res
set res [string range $d [string length $res] end]
}
return $sign$res
}
set a2 $a1
set Zero 0
set appendzeros [expr $Length2 - 1]
set s [dec2bin $Zero $appendzeros]
append a2 $s
puts "\nThe Message After Appending Zeros is $a2\n"
81
set Length3 [string length $a2]
puts "\nThe length of the Message to be After Appending Zeros is $Length3\n"
OUTPUT:
82
83
PROGRAM AT THE RECEIVER:
proc dec2bin {i {width {}}} {
set res {}
if {$i<0} {
set sign -
set i [expr {abs($i)}]
} else {
set sign {}
}
while {$i>0} {
set res [expr {$i%2}]$res
set i [expr {$i/2}]
}
if {$res eq {}} {set res 0}
if {$width ne {}} {
append d [string repeat 0 $width] $res
set res [string range $d [string length $res] end]
}
return $sign$res
}
84
set s3 "[string range $a1 0 $L]"
set s [bindec $s3]
set b [bindec $b1]
set Zero 0
set appendzeros [expr $Length2 - 1]
set z [dec2bin $Zero $appendzeros]
if {$rem1==$z} {
puts "The Message Received is Error Free"
set R [expr {$Length3-$Length2}];
set F "[string range $a1 0 $R]"
puts "The Final Message Received after Removing Check bits is $F"
} else {
puts "The Message Received has Errors, Kindly Resend"
}
OUTPUT:
85
86
EXPT.NO: 20b IMPLEMENTATION OF SINGLE BIT ERROR DETECTION AND
DATE: CORRECTION TECHNIQUE: HAMMING CODE
AIM:
To implement Error Correction Technique: Hamming Code using MATLAB.
SOFTWARE REQUIREMENTS:
MATLAB
THEORY:
Hamming code is a set of error-correction codes that can be used to detect and correct the errors that can
occur when the data is moved or stored from the sender to the receiver. It is technique developed by R.W.
Hamming for error correction.
Redundant bits –
Redundant bits are extra binary bits that are generated and added to the information-carrying bits of data
transfer to ensure that no bits were lost during the data transfer.
The number of redundant bits can be calculated using the following formula:
2^r ≥ m + r + 1
where, r = redundant bit, m = data bit
Suppose the number of data bits is 7, then the number of redundant bits can be calculated using:
2^4 ≥ 7 + 4 + 1
Thus, the number of redundant bits= 4
Parity bits –
A parity bit is a bit appended to a data of binary bits to ensure that the total number of 1’s in the data is even
or odd. Parity bits are used for error detection. There are two types of parity bits:
ALGORITHM:
The Hamming Code is simply the use of extra parity bits to allow the identification of an error.
1. Write the bit positions starting from 1 in binary form (1, 10, 11, 100, etc).
2. All the bit positions that are a power of 2 are marked as parity bits (1, 2, 4, 8, etc).
3. All the other bit positions are marked as data bits.
4. Each data bit is included in a unique set of parity bits, as determined its bit position in binary form.
a. Parity bit 1 covers all the bits positions whose binary representation includes a 1 in the least
significant position (1, 3, 5, 7, 9, 11, etc).
b. Parity bit 2 covers all the bits positions whose binary representation includes a 1 in the second
position from the least significant bit (2, 3, 6, 7, 10, 11, etc).
c. Parity bit 4 covers all the bits positions whose binary representation includes a 1 in the third
position from the least significant bit (4–7, 12–15, 20–23, etc).
87
d. Parity bit 8 covers all the bits positions whose binary representation includes a 1 in the fourth
position from the least significant bit bits (8–15, 24–31, 40–47, etc).
e. In general, each parity bit covers all bits where the bitwise AND of the parity position and the bit
position is non-zero.
5. Since we check for even parity set a parity bit to 1 if the total number of ones in the positions it checks
is odd.
6. Set a parity bit to 0 if the total number of ones in the positions it checks is even.
PROGRAM:
clc
close all
clear all
Message=input('Enter Message Bits to be transmitted (Binary Data Only in matrix form):');
disp(dec2bin(Message)')
if size(dec2bin(Message)',1)~=1
disp('The Entered Message is not Binary data, Please wait for 5 seconds to re-enter the Message');
pause(5);
hamming_code_encode;
else
disp('The Message to be Transmitted is');
disp(Message);
Message=flip(Message);
disp('The length of the Message is ')
disp(length(Message));
for K=1:length(Message)
if (power(2,K)-1) >= length(Message)+K
disp('The total number of Parity bits required are ');
disp(K);
break;
end
end
disp('The total length of the message with Parity bits is ');
disp(length(Message)+K);
PB=-K:-1;
disp('The Parity bits to be appended initially are ');
disp(PB);
for s=1:length(Message)+K
for t=0:K
if s==power(2,t)
tx(s)=PB(end-t);
elseif s>power(2,t-1) && s<power(2,t)
tx(s)=Message(s-t);
end
end
end
88
disp('The Message generated with initially generated parity bits is ');
disp(flip(tx));
txlength=1:length(Message)+K;
dec_num = dec2bin(txlength,K)-'0';
for j=size(dec_num,2):-1:1
Parity_bit_positions=find((dec_num(:,j))');
actual_parity_bit_positions=Parity_bit_positions(2:end);
PB(j)=rem(sum(tx(actual_parity_bit_positions)),2);
end
disp('The actual Parity bits to be appended are ');
disp(PB);
for s=1:length(Message)+K
for t=0:K
if s==power(2,t)
tx(s)=PB(end-t);
end
end
end
end
disp('The actual Message to be transmitted with parity bits is');
disp(flip(tx))
OUTPUT:
RESULT:
Single bit Error Detection and Correction Technique: Hamming Code is implemented in MATLAB.
89
EXPT.NO.21
SIMULATION OF STATIC ROUTING PROTOCOL
DATE:
AIM:
To simulate and study the static routing protocol using NS2.
SOFTWARE REQUIRED:
NS-2
THEORY:
This is the default route-finding technique in which Dijkstra’s all-pairs shortest paths algorithm is used to
compute the route between the source and the destination. The routing algorithm runs only once after the
topology is formed, and the routing table formed is stored until the end of the simulation interval. Therefore, it
cannot accommodate any link failure due to topology changes while executing the simulation.
PROCEDURE:
Let us consider a network as shown in the figure below, where each link has a communication cost associated
with it. Suppose that node 0 communicates with node 3; then there are three possible paths as follows.
path I: 0 → 3: 1 hop: cost = 10
path II: 0 → 1 → 2 → 3: 3 hops: cost = 9
path III: 0 → 6 → 5 → 4 → 4: 4 hops: cost = 8
Out of these paths, path III is the lowest cost path and path I is the highest cost path. Therefore, path III is
chosen by the routing protocol.
PROGRAM:
#creating nodes
for { set i 0 } { $i < 7} { incr i} {
set n($i) [$ns node]}
90
# trace
set nf [open out.nam w]
$ns namtrace-all $nf
# creating links
for { set i 0} { $i < 7} { incr i} {
$ns duplex-link $n($i) $n([expr ($i +1)%7]) 1Mb 10ms DropTail
}
$ns duplex-link $n(0) $n(3) 1Mb 10ms DropTail
# Create a UDP agent and attach it to node n (0) and sink to n(3)
set udp0 [new Agent/UDP]
$ns attach-agent $n(0) $udp0
set null0 [new Agent/Null]
$ns attach-agent $n(3) $null0
$udp0 set fid_ 1
# link failure
$ns rtmodel-at 1.5 down $n(4) $n(5)
$ns rtmodel-at 2.5 up $n(4) $n(5)
91
OUTPUT:
VIVA QUESTIONS:
1. What is Routing?
2. What is Static routing?
3. Compare Static and Dynamic routing protocols?
RESULT:
AIM:
To implement Dijkstra’s Shortest Path Algorithm.
SOFTWARE REQUIREMENTS:
Turbo C Software
THEORY:
In Dijkstra’s algorithm, a SPT (shortest path tree) is generated with given source as root. Two sets are
maintained, one set contains vertices included in shortest path tree, other set includes vertices not yet
included in shortest path tree. At every step of the algorithm, we find a vertex which is in the other set (set of
not yet included) and has a minimum distance from the source.
Below are the detailed steps used in Dijkstra’s algorithm to find the shortest path from a single source vertex
to all other vertices in the given graph.
1. Create a set sptSet (shortest path tree set) that keeps track of vertices included in shortest path tree,
i.e., whose minimum distance from source is calculated and finalized. Initially, this set is empty.
2. Assign a distance value to all vertices in the input graph. Initialize all distance values as INFINITE.
Assign distance value as 0 for the source vertex so that it is picked first.
a) Pick a vertex u which is not there in sptSet and has minimum distance value.
b) Include u to sptSet.
c) Update distance value of all adjacent vertices of u. To update the distance values, iterate
through all adjacent vertices. For every adjacent vertex v, if sum of distance value of u (from
source) and weight of edge u-v, is less than the distance value of v, then update the distance
value of v.
Let us understand with the following example:
The set sptSet is initially empty and distances assigned to vertices are {0, INF, INF, INF, INF, INF, INF,
INF} where INF indicates infinite. Now pick the vertex with minimum distance value. The vertex 0 is picked,
include it in sptSet. So sptSet becomes {0}. After including 0 to sptSet, update distance values of its adjacent
vertices. Adjacent vertices of 0 are 1 and 7. The distance values of 1 and 7 are updated as 4 and 8. Following
subgraph shows vertices and their distance values, only the vertices with finite distance values are shown.
93
The vertices included in SPT are shown in green color.
Pick the vertex with minimum distance value and not already included in SPT (not in sptSET). The vertex 1 is
picked and added to sptSet. So sptSet now becomes {0, 1}. Update the distance values of adjacent vertices of
1. The distance value of vertex 2 becomes 12.
Pick the vertex with minimum distance value and not already included in SPT (not in sptSET). Vertex 7 is
picked. So sptSet now becomes {0, 1, 7}. Update the distance values of adjacent vertices of 7. The distance
value of vertex 6 and 8 becomes finite (15 and 9 respectively).
Pick the vertex with minimum distance value and not already included in SPT (not in sptSET). Vertex 6 is
picked. So sptSet now becomes {0, 1, 7, 6}. Update the distance values of adjacent vertices of 6. The distance
value of vertex 5 and 8 are updated.
Repeat the above steps until sptSet does include all vertices of given graph. Finally, we get the following
Shortest Path Tree (SPT).
94
PROGRAM:
#include <limits.h>
#include <stdio.h>
// A utility function to find the vertex with minimum distance value, from
// the set of vertices not yet included in shortest path tree
int minDistance(int dist[], bool sptSet[])
{
// Initialize min value
int min = INT_MAX, min_index;
return min_index;
}
dijkstra(graph, 0);
return 0;
}
OUTPUT:
RESULT:
96
EXPT.NO: 23 IMPLEMENTATION OF BROADCAST TREE FOR A GIVEN SUBNET
DATE: HOSTS
AIM:
To implement Broadcast Tree for a given subnet hosts.
SOFTWARE REQUIREMENTS:
Turbo C Software
THEORY:
This technique is widely used because it is simple and easy to understand. The idea of this algorithm is to
build a graph of the subnet with each node of the graph representing a router and each arc of the graph
representing a communication line. To choose a route between a given pair of routers the algorithm just finds
the broadcast between them on the graph.
PROGRAM:
97
min=edge[i][j];
u=i;
v=j;
}
p=find(u);
q=find(v);
if(p!=q)
{
t[i][0]=u;
t[i][1]=v;
mincost=mincost+edge[u][v];
sunion(p,q);
}
else
{
t[i][0]=-1;t[i][1]=-1;
}
min=99;
}
printf("Minimum cost is %d\n Minimum spanning tree is\n" ,mincost);
for(i=0;i<n;i++)
if(t[i][0]!=-1 && t[i][1]!=-1)
{
printf("%c %c %d", 65+t[i][0],65+t[i][1],edge[t[i][0]][t[i][1]]);printf("\n");
}
getch();
}
sunion(int l,int m)
{
parent[l]=m;
}
find(int l)
{
if(parent[l]>0)
i=parent[i];
return i;
}
98
OUTPUT:
VIVA QUESTIONS:
RESULT:
99