0% found this document useful (0 votes)
125 views41 pages

CCN - Lab - Manual (17 Scheme)

This document outlines the vision, mission, objectives, and syllabus for the Computer Networks Laboratory course at S. S. Education Trust’s S. G. Balekundri Institute of Technology. The course aims to teach students how to model networks, simulate networking concepts and protocols using tools like NS2 and C/C++ programming, and analyze network performance under different configurations. The syllabus includes simulation experiments using network simulation tools and implementing data link and routing protocols in C programming. Students will learn to illustrate the use of simulators, construct network protocols, measure performance parameters, and develop and implement data link and routing protocols.

Uploaded by

Vijay Patil
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)
125 views41 pages

CCN - Lab - Manual (17 Scheme)

This document outlines the vision, mission, objectives, and syllabus for the Computer Networks Laboratory course at S. S. Education Trust’s S. G. Balekundri Institute of Technology. The course aims to teach students how to model networks, simulate networking concepts and protocols using tools like NS2 and C/C++ programming, and analyze network performance under different configurations. The syllabus includes simulation experiments using network simulation tools and implementing data link and routing protocols in C programming. Students will learn to illustrate the use of simulators, construct network protocols, measure performance parameters, and develop and implement data link and routing protocols.

Uploaded by

Vijay Patil
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/ 41

S. S.

Education Trust’s

S. G. Balekundri Institute of Technology


[ Affiliated to Visvesvaraya Technological University ( VTU ), Belagavi, Karnataka ]

ELECTRONICS AND COMMUNICATION


ENGINEERING

COMPUTER NETWORKS LABORATORY


[As per Choice Based Credit System (CBCS) scheme 17ECL68]

B.E., VI Semester

Compiled by: Approved By

Prof. Sujay Gejji Dr. Jayashri M. Rudagi


Prof. Kiran Nandi HOD, ECE
ECE, SGBIT
The Vision of SGBIT
Impart quality education with human values and emerge as one of the Nation’s
leading Institutions in the field of Technical Education and Research.

The Mission of SGBIT


• Strive to encourage ideas, talents and value systems.

• Guide students to be successful in the endeavor with moral and ethical values.

• Build relation with Industries and National Laboratories to support in the field of
Engineering and Technology.

• Inculcate a thirst for knowledge in students and help them to achieve Academic
Excellence and Placement.

• Train and develop the faculty to achieve Professional, Organizational Objectives, and
excel in Research and Development.
Department Vision:

To be the Department of Electronics and Communication Engineering striving hard to develop


responsive teaching–learning methodology, research and employable skills in allied fields by empowering
students to become globally competent and socially responsible citizens.

Mission:

M1: To develop an active learning environment that ensures participation of students in both curricular as well
as co- Curricular activities.

M2: To foster research, innovation and creativity amongst students.

M3: To encourage development of entrepreneurial skills.

M4: To inculcate, amongst students, team-spirit, leadership qualities, positive attitude and effective
Communication skills to solve societal needs.

Program Educational Objectives:

To prepare E&CE students to

PEO1: Be Successful in their professional career, higher studies and research by providing contextually relevant
Academic environment.

PEO2: Be committed citizen with social and professional concern.

PEO3: Demonstrate leadership qualities and managerial skills in heterogeneous team globally.

PEO4: Be independent lifelong learners to keep the pace of technological change and industry expectations.

Program Specific Outcomes:

1. Apply the concepts of VLSI, Signal Processing, Embedded Systems, Communication and Networking in the
design and implementation of application oriented engineering systems.

2. Solve the Engineering problems using hardware and software tools along with soft skills leading to
Employability.

PSO (Program Specific outcomes)


Course Outcome (CO) PSO1 PSO2

C318.1
1 -
C318.2
1 2
C318.3
1 -
C318.4
1 2
Program Outcomes (POs):

As identified by National Board of Accreditation (NBA), India are what the graduates of an undergraduate engineering
program should be able to do at the time of graduation. The POs are discipline non-specific.

PO1: Engineering knowledge: Apply the knowledge of mathematics, science, engineering fundamentals, and
an engineering specialization to the solution of complex engineering problems.

PO2: Problem analysis: Identify, formulate, research literature, and analyze complex engineering
problems reaching substantiated conclusions using first principles of mathematics, natural sciences,
and engineering sciences

PO3: 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 the public health
and safety, and the cultural, societal, and environmental considerations.

PO4: Conduct investigations of complex problems: Use research-based knowledge and research methods
including design of experiments, analysis and interpretation of data, and synthesis of the information to
provide valid conclusions.

PO5: Modern tool usage: Create, select, and apply appropriate techniques, resources, and modern engineering and
IT tools including prediction and modeling to complex engineering activities with an understanding of the
limitations.

PO6: 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.

PO7: 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.

PO8: Ethics: Apply ethical principles and commit to professional ethics and responsibilities and norms of the
engineering practice.

PO9: Individual and team work: Function effectively as an individual, and as a member or leader in diverse teams,
and in multidisciplinary settings.

PO10: Communication: Communicate effectively on complex engineering activities with the engineering
community and with society at large, such as, being able to comprehend and write effective reports and
design documentation, make effective presentations, and give and receive clear instructions.

PO11: 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.

PO12: 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.
Course objectives:
This course will enable students to:
• Choose suitable tools to model a network and understand the protocols at various OSI reference levels.
• Design a suitable network and simulate using a Network simulator tool.
• Simulate the networking concepts and protocols using C/C++ programming.
• Model the networks for different configurations and analyze the results.

Course Outcomes:
On the completion of this laboratory course, the students will be able to:
C318.1: Illustrate the Use of network simulator for the practice of networking algorithms.
C318.2: Construct the network protocols and algorithms using C programming.
C318.3: Measure the performance parameters by simulating the networks with different Configurations.
C318.4: Develop and Implement the data link and routing protocols using C programming.

Program Outcomes (PO)


Course
Outcome
(CO)
PO1 PO2 PO3 PO4 PO5 PO6 PO7 PO8 PO9 PO10 PO11 PO12

C318.1 1 - - 1 - - 2 2 1 - -
2
C318.2 1 - 1 - - 2 2 1 - -
1 1
C318.3 1 2 2 - - 2 2 1 - -
2 2
C318.4 1 1 - - - - 2 2 1 - -
2
Do’s:
• Students should come with thorough preparation for the experiment to be conducted.
• Students should take prior permission from the concerned faculty before availing the leave.
• Students should come with formals and to be present on time in the laboratory.
• Students will not be permitted to attend the laboratory unless they bring the practical record fully completed
in all respects pertaining to the experiment conducted in the previous class.
• Students will be permitted to attend laboratory unless they bring the observation book fully
completed in all respects pertaining to the experiment conducted in the present class.
• They should obtain the signature of the staff-in-charge in the observation book after
completing each experiment.
• Practical record and observation book should be maintained neatly.
• Use devices carefully.

Don’ts:
• Use cell phones.
• Use Pen drives.
• Eat, drink, and chew gum in the lab.
Syllabus
Computer Networks Lab
15ECL68

IA Marks 20 Exam Marks 80


Exam Hours 03 Laboratory = 03 ( 01Hr Tutorial (Instructions) + 02 Hrs)

Laboratory Experiments

PART-A:
Simulation experiments using NS2/ NS3/ OPNET/ NCTUNS/ NetSim/ QualNet/ Packet Tracer
or any other equivalent tool

1. Implement a point to pint network with four nodes and duplex links between them. Analyze
the network performance by setting the queue size and varying the bandwidth.
2. Implement a four node point to point network with links n0-n2, n1-n2 and n2-n3. Apply TCP
agent between n0-n3 and UDP between n1-n3. Apply relevant applications over TCP and UDP
agents changing the parameter and determine the number of packets sent by TCP/UDP.
3. Implement Ethernet LAN using n (6-10) nodes. Compare the throughput by changing the error
rate and data rate.
4. Implement Ethernet LAN using n nodes and assign multiple traffic to the nodes and obtain
congestion window for different sources/ destinations.
5. Implement ESS with transmission nodes in Wireless LAN and obtain the performance
parameters.
6. Implementation of Link state routing algorithm

PART-B:
Implement the following in C/C++

1. Write a program for a HLDC frame to perform the following.


i) Bit stuffing
ii) Character stuffing.
2. Write a program for distance vector algorithm to find suitable path for transmission.
3. Implement Dijkstra’s algorithm to compute the shortest routing path.
4. For the given data, use CRC-CCITT polynomial to obtain CRC code. Verify the program for the
cases
a. Without error
b. With error
5. Implementation of Stop and Wait Protocol and Sliding Window Protocol
6. Write a program for congestion control using leaky bucket algorithm.
INDEX

Sl
Name of the Experiment Page
No
No

PART A :
Experiments to be conducted using NS2
Implement 4 node n/w with duplex link. Analyze N/W performance varying the 1
1 bandwidth.

Implement 4 node point to point n/w (n0-n2, n1-n2, n2-n3). Apply relevant 3
2 applications over TCP&UDP. Calculate no of packets.

Implement Ethernet LAN using n (6-10) nodes. Compare throughput by changing 5


3 error rate.

Implement Ethernet LAN to analyze multiple traffic. Calculate size of congestion 7


4 window

Implement ESS with transmission nodes in Wireless LAN and obtain the 9
5 performance parameters.

11
6 Implementation of Link state routing algorithm.

PART B:
Experiments to be conducted using “c”
Program to perform 14
i) Bit stuffing
1 ii) Character stuffing.

Implement distance vector algorithm. 18


2
Implement Dijkstra’s algorithm. 20
3
Implement CRC-CCITT error detection algorithm 22
i) Without error
4 ii) With error

Implementation of Stop and Wait Protocol and Sliding Window Protocol 24


5
Implementation of leaky bucket algorithm. For congestion control 27
6
Introduction of Computer Networks Laboratory

This course provides the students with hands on training with respect to designing, Development,
implementation and evaluation of Computer networks. The evaluation and analysis is performed using NS2
simulator. The implementation is done using TCL scripts.
In this course students will be able to model and implement the simple networks with some nodes and duplex
link between them. Apply the different transport layer (TCP and UDP), routing (LS, DVR) and application layer
(FTP, CBR and HTTP) protocols, then evaluate/analyze the network performance by setting the queue size, varying
bandwidth, error rate and data rate.
Also to implement the wired and wireless LAN with n nodes and multiple traffics and to obtain the
congestion windows for different sources and destinations.
In part B,, it is to write “ C “ code for Data link layer / network layer / transport layer protocols and
services. The programs are compiled using GCC compiler.
Software Tools used in the Computer Networks Lab

OS Ubuntu [ Linux ]

NS2 [ Network Simulator -2 ]


Simulator ( ns-allinone2.35 )

C Compiler GCC
1. Implement a point to pint network with four nodes and duplex links between
them. Analyze the network performance by setting the queue size and varying
the bandwidth.

set ns [new Simulator]


set f [open lab1.tr w]
$ns trace-all $f

set nf [open lab1.nam w]


$ns namtrace-all $nf

proc finish {} {
global f nf ns
$ns flush-trace
close $f
close $nf
exec nam lab1.nam &
exit 0
}

set n0 [$ns node]


set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]

$ns duplex-link $n0 $n1 0.3Mb 10ms DropTail #vary bandwidth 0.3, 0.4, 0.5 0.7
$ns duplex-link $n1 $n2 0.3Mb 20ms DropTail #vary bandwidth 0.3, 0.4, 0.5 0.7
$ns duplex-link $n2 $n3 0.3Mb 20ms DropTail #vary bandwidth 0.3, 0.4, 0.5 0.7
$ns queue-limit $n0 $n1 20
$ns queue-limit $n1 $n2 20
$ns queue-limit $n2 $n3 20

set udp0 [new Agent/UDP]


$ns attach-agent $n0 $udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005

set null0 [new Agent/Null]


$ns attach-agent $n3 $null0

$ns connect $udp0 $null0

$ns at 0.1 "$cbr0 start"


$ns at 4.5 "$cbr0 stop"
$ns at 5.0 "finish"
$ns run

1
Steps for execution:

Open gedit editor and type program. Program name should have the extension “ .tcl ”
[root@localhost ~]# gedit lab1.tcl

Save the program and quit.

Run the simulation program
[root@localhost~]# ns lab1.tcl

Here “ns” indicates network simulator. We get the topology shown in the network animator. Now press the play button in the
simulation window and the simulation will begins.

To calculate the network performance. Execute the following command. For
calculating number of received packets
[root@localhost~]#grep ^r lab1.tr | grep “cbr” | awk “{s+=$6}END{print s}”
For calculating total time
[root@localhost~]#grep ^r lab1.tr | grep “cbr” | awk “{s+=$2}END{print s}”

Network performace = (Packet received/ Total Time) (bps)



Write the value of network performance in observation sheet. Repeat the above step by changing the bandwidth to [0.3Mb,
0.4Mb, 0.5Mb, 0.7Mb]to the following line of the program.
➢ $ns duplex-link $n0 $n1 0.7Mb 10ms DropTail #vary bandwidth 0.3, 0.4, 0.5 0.7

$ns duplex-link $n1 $n2 0.7Mb 20ms DropTail #vary bandwidth 0.3, 0.4, 0.5 0.7

$ns duplex-link $n2 $n3 0.7Mb 20ms DropTail #vary bandwidth 0.3, 0.4, 0.5 0.7
Sl. Bandwidth Network performance
No.
1. 0.3
2. 0.4
3. 0.5
4. 0.7


Plot a graph with x- axis with bandwidth and y-axis with network performance of UDP protocol.

2
2. Implement a four node point to point network with links n0-n2, n1-n2 and n2-
n3. Apply TCP agent between n0-n3 and UDP between n1-n3.
Apply relevant applications over TCP and UDP agents changing the parameter
and determine the number of packets sent by TCP/UDP.

set ns [new Simulator]

set f [open lab2.tr w]


$ns trace-all $f

set nf [open lab2.nam w]


$ns namtrace-all $nf

$ns color 1 "Blue"


$ns color 2 "Red"

proc finish {} {
global ns f nf
$ns flush-trace
close $f
close $nf
exec nam lab2.nam &
exit 0
}

set n0 [$ns node]


set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]

$ns duplex-link $n0 $n2 2Mb 10ms DropTail


$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n2 $n3 2.75Mb 20ms DropTail

$ns queue-limit $n2 $n3 50

set tcp0 [new Agent/TCP]


$ns attach-agent $n0 $tcp0
$tcp0 set class_ 1

set ftp0 [new Application/FTP]


$ftp0 attach-agent $tcp0

set sink [new Agent/TCPSink]


$ns attach-agent $n3 $sink
$ns connect $tcp0 $sink

set udp0 [new Agent/UDP]


$ns attach-agent $n1 $udp0
$udp0 set class_ 2

set cbr0 [new Application/Traffic/CBR]


$cbr0 attach-agent $udp0
$cbr0 set packetSize_ 1000
$cbr0 set interval_ 0.005

3
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0
$ns connect $udp0 $null0

$ns at 0.1 "$cbr0 start"


$ns at 1.0 "$ftp0 start"
$ns at 4.0 "$ftp0 stop"
$ns at 4.5 "$cbr0 stop"

$ns at 5.0 "finish"


$ns run

Steps for execution:



Open gedit editor and type program. Program name should have the extension “ .tcl ”
[root@localhost ~]# gedit lab2.tcl

Save the program and quit.

Run the simulation program
[root@localhost~]# ns lab2.tcl

Here “ns” indicates network simulator. We get the topology shown in the network animator. Now press the play button in the
simulation window and the simulation will begins.

To calculate the number of packets sent by TCP. Execute the following command.

[root@localhost~]#grep ^r lab2.tr | grep “tcp” -c



To calculate the number of packets sent by UDP. Execute the following command.

[root@localhost~]#grep ^r lab2.tr | grep “cbr” –c

4
3. Implement Ethernet LAN using n (6-10) nodes. Compare the throughput by
changing the error rate and data rate.

set ns [new Simulator]


set trf [open lab3.tr w]
$ns trace-all $trf
set naf [open lab3.nam w]
$ns namtrace-all $naf

proc finish { } {
global nf ns tf
exec nam lab3.nam &
close $naf
close $trf
exit 0
}

set n0 [$ns node]


set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]

$n1 label "Source"


$n2 label "Error Node"
$n5 label "Destination"

$ns make-lan "$n0 $n1 $n2 $n3" 10Mb 10ms LL Queue/DropTail Mac/802_3
$ns make-lan "$n4 $n5 $n6" 10Mb 10ms LL Queue/DropTail Mac/802_3

$ns duplex-link $n2 $n6 30Mb 100ms DropTail

set udp0 [new Agent/UDP]


$ns attach-agent $n1 $udp0
set cbr0 [ new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
set null5 [new Agent/Null]
$ns attach-agent $n5 $null5
$ns connect $udp0 $null5

$cbr0 set packetSize_ 100


$cbr0 set interval_ 0.001
$udp0 set class_ 1

set err [new ErrorModel]


$ns lossmodel $err $n2 $n6
$err set rate_ 0.7 #vary error rate 0.1, 0.4, 0.5 and 0.7

$ns at 6.0 "finish"


$ns at 0.1 "$cbr0 start"
$ns run

5
Steps for execution:

Open gedit editor and type program. Program name should have the extension “ .tcl ”
[root@localhost ~]# gedit lab3.tcl

Save the program and quit.

Run the simulation program
[root@localhost~]# ns lab3.tcl

Here “ns” indicates network simulator. We get the topology shown in the network animator. Now press the play button in the
simulation window and the simulation will begins.

To calculate the throughput. Execute the following command. For
calculating number of received packets
[root@localhost~]#grep ^r lab3.tr | grep “2 6” | awk “{s+=$6}END{print s}”
For calculating total time
[root@localhost~]#grep ^r lab3.tr | grep “2 6” | awk “{s+=$2}END{print s}”

Throughput = (Packet received/ Total Time) (bps)



Write the value of throughput in observation sheet. Repeat the above step by changing the error rate to the following
line of the program.

$err set rate_ 0.7 #vary error rate 0.1, 0.4, 0.5 and 0.7

Sl. Error rate Throughput


No.
1. 0.1
2. 0.4
3. 0.5
4. 0.7


Plot a graph with x- axis with Error rate and y-axis with Throughput.

6
4. Implement Ethernet LAN using n nodes and assign multiple traffic to the
nodes and obtain congestion window for different sources/ destinations.

set ns [new Simulator]


set tf [open lab4.tr w]
$ns trace-all $f

set nf [open lab4.nam w]


$ns namtrace-all $nf

proc finish {} {
global ns tf nf outFile1 outFile2
$ns flush-trace
close $tf
close $nf
exec nam lab4.nam &
exec xgraph Congestion1.xg Congestion2.xg -geometry 400x400
& exit 0
}

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 label "Src1"


$n4 label "Dst1"
$n1 label "Src2"
$n5 label "Dst2"

$ns make-lan "$n0 $n1 $n2 $n3 $n4 $n5 " 10Mb 30ms LL Queue/DropTail Mac/802_3

set tcp1 [new Agent/TCP]


$ns attach-agent $n0 $tcp1
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
set sink1 [new Agent/TCPSink]
$ns attach-agent $n4 $sink1
$ftp1 set maxPkts_ 1000
$ns connect $tcp1 $sink1

set tcp2 [new Agent/TCP/Reno]


$ns attach-agent $n1 $tcp2
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
set sink2 [new Agent/TCPSink]
$ns attach-agent $n5 $sink2
$ftp2 set maxPkts_ 1000
$ns connect $tcp2 $sink2

set outFile1 [open Congestion1.xg w]


set outFile2 [open Congestion2.xg w]

7
proc findWindowSize {tcpSource outFile} {
global ns
set now [$ns now]
set cWindSize [$tcpSource set cwnd_]
puts $outFile "$now $cWindSize"
$ns at [expr $now + 0.1] "findWindowSize $tcpSource $outFile"
}

$ns at 0.0 "findWindowSize $tcp1 $outFile1"


$ns at 0.1 "findWindowSize $tcp2 $outFile2"
$ns at 0.3 "$ftp1 start"
$ns at 0.5 "$ftp2 start"
$ns at 50.0 "$ftp1 stop"
$ns at 50.0 "$ftp2 stop"
$ns at 50.0 "finish"
$ns run

Steps for execution:



Open gedit editor and type program. Program name should have the extension “ .tcl ”
[root@localhost ~]# gedit lab4.tcl

Save the program and quit.

Run the simulation program
[root@localhost~]# ns lab4.tcl

Here “ns” indicates network simulator. We get the topology shown in the network animator. Now press the play button in the
simulation window and the simulation will begins.

The xgraph automatically calculates and plot the two graph of Congestion window with TCP1 and TCP2.

8
5. Implement ESS with transmission nodes in Wireless LAN and obtain the
performance parameters.

set ns [new Simulator]


set tf [open lab5.tr w]
$ns trace-all $tf
set topo [new Topography]
$topo load_flatgrid 1300 1300
set nf [open lab5.nam w]
$ns namtrace-all-wireless $nf 1300 1300

$ns node-config -adhocRouting DSDV \


-llType LL \
-macType Mac/802_11 \
-ifqType Queue/DropTail/PriQueue\
-channelType Channel/WirelessChannel \
-propType Propagation/TwoRayGround \
-antType Antenna/OmniAntenna \
-ifqLen 50 \
-phyType Phy/WirelessPhy \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON

create-god 3
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
$n0 label "ESS"
$n1 label "mob1"
$n2 label "mob2"
$n0 set X_ 10
$n0 set Y_ 600
$n0 set Z_ 0
$n1 set X_ 80
$n1 set Y_ 600
$n1 set Z_ 0
$n2 set X_ 1200
$n2 set Y_ 600
$n2 set Z_ 0
$ns at 0.1 "$n0 setdest 10 600 15"
$ns at 0.1 "$n1 setdest 80 600 25"
$ns at 0.1 "$n2 setdest 1200 600 25"

set tcp0 [new Agent/TCP]


$ns attach-agent $n0 $tcp0
set ftp0 [new Application/FTP]
$ftp0 attach-agent $tcp0
set sink1 [new Agent/TCPSink]
$ns attach-agent $n1 $sink1
$ns connect $tcp0 $sink1

set tcp1 [new Agent/TCP]


$ns attach-agent $n0 $tcp1
set ftp1 [new Application/FTP]

9
$ftp1 attach-agent $tcp1
set sink2 [new Agent/TCPSink]
$ns attach-agent $n2 $sink2
$ns connect $tcp1 $sink2

$ns at 2 "$ftp0 start"


$ns at 15 "$ftp1 start"
$ns at 3 "$n1 setdest 1000 600 250"
$ns at 3 "$n2 setdest 80 600 250"

proc finish { } {
global ns nf tf
$ns flush-trace
exec nam lab5.nam &
close $tf
exit 0
}
$ns at 20 "finish"
$ns run

Steps for execution:



Open gedit editor and type program. Program name should have the extension “ .tcl ”
[root@localhost ~]# gedit lab5.tcl

Save the program and quit.

Run the simulation program
[root@localhost~]# ns lab5.tcl

Here “ns” indicates network simulator. We get the topology shown in the network animator. Now press the play button in the
simulation window and the simulation will begins.

To calculate the throughput. Execute the following command. For
calculating number of received packets
[root@localhost~]#grep ^r lab5.tr | grep “AGT” | grep “tcp” | awk “{s+=$8}END{print s}”
For calculating total time
[root@localhost~]#grep ^r lab5.tr | grep “AGT” | grep “tcp” | awk “{s+=$2}END{print s}”

Throughput = (Packet received/ Total Time) (bps)

10
6. Implementation of Link state routing algorithm

set ns [new Simulator]

$ns rtproto LS

set nf [open lab6.nam w]


$ns namtrace-all $nf

proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam lab6.nam &
exit 0
}

for {set i 0} {$i < 7} {incr i} {


set n($i) [$ns node]
}

for {set i 0} {$i < 7} {incr i} {


$ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail
}

set udp0 [new Agent/UDP]


$ns attach-agent $n(0) $udp0

set cbr0 [new Application/Traffic/CBR]


$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0

set null0 [new Agent/Null]


$ns attach-agent $n(3) $null0

$ns connect $udp0 $null0

$ns at 0.5 "$cbr0 start"


$ns rtmodel-at 1.0 down $n(1) $n(2)
$ns rtmodel-at 2.0 up $n(1) $n(2)
$ns at 4.5 "$cbr0 stop"
$ns at 5.0 "finish"

$ns run

11
Steps for execution:

Open gedit editor and type program. Program name should have the extension “ .tcl ”
[root@localhost ~]# gedit lab6.tcl

Save the program and quit.

Run the simulation program
[root@localhost~]# ns lab6.tcl

Here “ns” indicates network simulator. We get the topology shown in the network animator. Now press the play button in the
simulation window and the simulation will begins.

Explain link state routing algorithm using animation. How link state break and rerouting take place.

12
PART-B:
Implement the following in C/C++

1. Write a program for a HLDC frame to perform the following.


i) Bit stuffing
ii) Character stuffing.

2. Write a program for distance vector algorithm to find suitable path for transmission.

3. Implement Dijkstra’s algorithm to compute the shortest routing path.

4. For the given data, use CRC-CCITT polynomial to obtain CRC code. Verify the program for the cases
a. Without error
b. With error

5. Implementation of Stop and Wait Protocol and Sliding Window Protocol

6. Write a program for congestion control using leaky bucket algorithm.

13
1. Write a program for a HLDC frame to perform the following.
i) Bit stuffing

Bit stuffing is a process of inserting an extra bit as 0, once the frame sequence encountered 5 consecutive 1's.

Program
#include<stdio.h>
int main()
{
int a[15];
int i,j,k,n,c=0,pos=0;
printf("\n Enter the number of bits");
scanf("%d",&n);
printf("\n Enter the bits");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
if(a[i]==1)
{
c++;
if(c==5)
{
pos=i+1;
c=0;
for(j=n;j>=pos;j--)
{
k=j+1;
a[k]=a[j];
}
a[pos]=0;
n=n+1;
}
}
else
c=0;
}

printf("\n DATA AFTER STUFFING \n");

for(i=0;i<n;i++) {
printf("%d",a[i]);
}

14
Execution:
[root@localhost code]# gcc 1a.c
[root@localhost code]# ./a.out

Enter the number of bits


12

Enter the bits


1
0
1
1
1
1
1
1
1
0
1
1

DATA AFTER STUFFING


1011111011011

15
ii) Character stuffing.

Character Stuffing is process in which DLESTX and DLEETX are used to denote start and end of character data with
some constraints imposed on repetition of characters.

Program:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int main()
{
char c[50],d[50],t[50];
int i,m,j;
printf("enter the number of characters\n");
scanf("%d",&m);
printf("\n enter the characters\n");
for(i=0;i<m+1;i++)
{
scanf("%c",&c[i]);
}
printf("\n original data\n");
for(i=0;i<m+1;i++)
printf("%c",c[i]);
d[0]='d';
d[1]='l';
d[2]='e';
d[3]='s';
d[4]='t';
d[5]='x';
for(i=0,j=6;i<m+1;i++,j++)
{
if((c[i]=='d'&&c[i+1]=='l'&& c[i+2]=='e'))
{
d[j]='d';
j++;
d[j]='l';
j++;
d[j]='e';
j++;
m=m+3;
}
d[j]=c[i];
}
m=m+6;
m++;
d[m]='d';
m++;
d[m]='l';
m++;
d[m]='e';
m++;
d[m]='e';

16
m++;
d[m]='t';
m++;
d[m]='x';
m++;
printf("\n\n transmitted data: \n");
for(i=0;i<m;i++)
{
printf("%c",d[i]);
}
for(i=6,j=0;i <m-6;i++,j++)
{
if(d[i]=='d'&&d[i+1]=='l'&&d[i+2]=='e'&&d[i+3]=='d'&&d[i+4]=='l'&&d[i+5]=='e')
i=i+3;
t[j]=d[i];
}
printf("\n\nreceived data:");
for(i=0;i<j;i++)
{printf("%c",t[i]);
}
}

Execution:
[root@localhost code]# gcc 1b.c
[root@localhost code]# ./a.out
enter the number of characters
9

enter the characters


abcdabcde

original data

abcdabcde

transmitted data:
dlestx
abcdabcdedleetx

received data:
abcdabcde

17
2. Write a program for distance vector algorithm to find suitable path for transmission.
Distance vector routing algorithms operate by having each router maintain a table (i.e., vector) giving the best
known distance to each destination and which line to get there. These tables are updated by exchanging
information with the neighbors.

Program:
#include<stdio.h>

struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];

int main()
{
int dmat[20][20];
int n,i,j,k,count=0;
printf("\nEnter the number of nodes : ");
scanf("%d",&n);
printf("\nEnter the cost matrix (999 for no link):\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&dmat[i][j]);
dmat[i][i]=0;
rt[i].dist[j]=dmat[i][j];
rt[i].from[j]=j;
}
do
{
count=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
if(rt[i].dist[j]>dmat[i][k]+rt[k].dist[j])
{
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}while(count!=0);
for(i=0;i<n;i++)
{
printf("\n\nState value for router %d is
\n",i+1); for(j=0;j<n;j++)
{
printf("\t\nnode %d via %d Distance%d",j+1,rt[i].from[j]+1,rt[i].dist[j]);
}
}
printf("\n\n");
}

18
Execution:
[root@localhost code]# gcc 2.c
[root@localhost code]# ./a.out

Enter the number of nodes : 4

Enter the cost matrix (999 for no link):

0 2 999 1
2 0 5 2
999 5 0 6
1 2 6 0

State value for router 1 is

node 1 via 1 Distance0


node 2 via 2 Distance2
node 3 via 2 Distance7
node 4 via 4 Distance1

State value for router 2 is

node 1 via 1 Distance2


node 2 via 2 Distance0
node 3 via 3 Distance5
node 4 via 4 Distance2

State value for router 3 is

node 1 via 2 Distance7


node 2 via 2 Distance5
node 3 via 3 Distance0
node 4 via 4 Distance6

State value for router 4 is

node 1 via 1 Distance1


node 2 via 2 Distance2
node 3 via 3 Distance6
node 4 via 4 Distance0

19
3. Implement Dijkstra’s algorithm to compute the shortest routing path.
Dijkstra algorithm is also called single source shortest path algorithm. The algorithm maintains a list visited[ ]
of vertices, whose shortest distance from the source is calculated.
Program:
#include<stdio.h>
#define INFINITY 9999
#define MAX 10
void dijkstra(int G[MAX][MAX],int n,int startnode);
int main()
{
int G[MAX][MAX],i,j,n,u;
printf("Enter no. of vertices:");
scanf("%d",&n);
printf("\nEnter the adjacency matrix:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&G[i][j]);
printf("\nEnter the starting node:");
scanf("%d",&u);
dijkstra(G,n,u);
return 0;
}
void dijkstra(int G[MAX][MAX],int n,int startnode)
{
int cost[MAX][MAX],distance[MAX],pred[MAX];
int visited[MAX],count,mindistance,nextnode,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(G[i][j]==0)
cost[i][j]=INFINITY;
else
cost[i][j]=G[i][j];

for(i=0;i<n;i++)
{
distance[i]=cost[startnode][i];
pred[i]=startnode;
visited[i]=0;
}
distance[startnode]=0;
visited[startnode]=1;
count=1;
while(count<n-1)
{
mindistance=INFINITY;

for(i=0;i<n;i++)
if(distance[i]<mindistance&&!visited[i])
{
mindistance=distance[i];
nextnode=i;
}

visited[nextnode]=1;

20
for(i=0;i<n;i++)
if(!visited[i])
if(mindistance+cost[nextnode][i]<distance[i])
{
distance[i]=mindistance+cost[nextnode][i];
pred[i]=nextnode;
}
count++;
}

for(i=0;i<n;i++)
if(i!=startnode)
{
printf("\nDistance of node%d=%d",i,distance[i]);
printf("\nPath=%d",i);
j=i;
do
{
j=pred[j];
printf("<-%d",j);
}while(j!=startnode);
}
}

Execution:
[root@localhost code]# gcc 3.c
[root@localhost code]# ./a.out
Enter no. of vertices:5

Enter the adjacency matrix:


0 10 0 30 100
10 0 50 0 0
0 50 0 20 10
30 0 20 0 60
100 0 10 60 0

Enter the starting node:0

Distance of node1=10
Path=1<-0
Distance of node2=50
Path=2<-3<-0
Distance of node3=30
Path=3<-0
Distance of node4=60
Path=4<-2<-3<-0

21
4. For the given data, use CRC-CCITT polynomial to obtain CRC code. Verify the program for the cases
a. Without error
b. With error
Cylic Redundency Check is error checking technique it does error checking via polynomial division.
Progtam:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N strlen(g)
char t[128],cs[128],g[]="1000100000010001";
int a,e,c;
void xor(){
for(c=1;c<N;c++)
cs[c]=((cs[c]==g[c])?'0':'1');
}
void crc(){
for(e=0;e<N;e++)
cs[e]=t[e];
do{
if(cs[0]=='1')
xor();
for(c=0;c<N-1;c++)
cs[c]=cs[c+1];
cs[c]=t[e++];
}while(e<=a+N-1);
}
int main(){
printf("\nEnter poly:");
scanf("%s",t);
printf("\nGenerating Polynomial is: %s",g);
a=strlen(t);
for(e=a;e<a+N-1;e++)
t[e]='0';
printf("\nModified t[u] is: %s",t);
crc();
printf("\nChecksum is: %s",cs);
for(e=a;e<a+N-1;e++)
t[e]=cs[e-a];
printf("\nFinal Codeword is: %s",t);
printf("\nTest Error detection 0 (Yes) 1 (No) ? : ");
scanf("%d",&e);
if(e==0){
printf("Enter postion where error is to be inserted:");
scanf("%d",&e);
t[e]=(t[e]=='0')?'1':'0';
printf("Erroneous Data: %s\n",t);

22
}
crc();
for(e=0;(e<N-1)&&(cs[e]!='1');e++);
if(e<N-1)
printf("Error Detected");
else printf("No Error Detected");
return 0;
}

Execution:
[root@localhost code]# gcc 4.c
[root@localhost code]# ./a.out

Enter poly : 1011101


Generating Polynomial is : 10001000000100001
Modified t[u] is : 10111010000000000000000
Checksum is : 1000101101011000
Final Codeword is : 10111011000101101011000
Test Error detection 0(yes) 1(no) ? : 0
Enter position where you want to insert error : 3
Errorneous data : 10101011000101101011000
Error detected.

Enter poly : 1011101


Generating Polynomial is : 10001000000100001
Modified t[u] is : 10111010000000000000000
Checksum is : 1000101101011000
Final Codeword is : 10111011000101101011000
Test Error detection 0(yes) 1(no) ? :
1 0No Error Detected.

23
5. Implementation of Stop and Wait Protocol and Sliding Window Protocol
5a. Stop and Wait protocol

Program:
#include<stdio.h>
#define w 1
int main()
{
int i,f,frames[50];
printf("\nEnter number of frames to transmit:");
scanf("%d",&f);
printf("\nEnter %d frames: ",f);
for(i=1;i<=f;i++)
scanf("%d",&frames[i]);
printf("\nWith stop and wait protocol the frames will be sent in the following
manner (assuming no corruption of frames)\n\n");
printf("After sending %d frames at each stage sender waits for acknowledgement
sent by the receiver\n\n",w);
printf("if error occur negative acknowledge is detected same frame is resend
back\n");
for(i=1;i<=f;i++)
{
if((random()%2)==1)
{
if(i%w==0)
{
printf("%d\n",frames[i]);
printf("Acknowledgement of above frames sent is received
by sender\n\n");
}
else
printf("%d ",frames[i]);
}
else
{
sleep(3);
printf("negative acknowledge resend %d frame\n",i);
i=i-1;
sleep(1);
}

}
return 0;
}

24
Execution:

[root@localhost code]# gcc 5b.c


[root@localhost code]# ./a.out

Enter number of frames to transmit: 6

Enter 6 frames: 1
4
5
7
8
9

With stop and wait protocol the frames will be sent in the following
manner (assuming no corruption of frames)

After sending 1 frames at each stage sender waits for acknowledgement sent by the
receiver

if error occur negative acknowledge is detected same frame is resend back


1
Acknowledgement of above frames sent is received by sender

negative acknowledge resend 2 frame


4
Acknowledgement of above frames sent is received by sender

5
Acknowledgement of above frames sent is received by sender

7
Acknowledgement of above frames sent is received by sender

8
Acknowledgement of above frames sent is received by sender

negative acknowledge resend 6 frame


negative acknowledge resend 6 frame
9
Acknowledgement of above frames sent is received by sender

25
5b. Sliding window protocol program
Program
#include<stdio.h>

int main()
{
int w,i,f,frames[50];
printf("Enter window size: ");
scanf("%d",&w);
printf("\nEnter number of frames to transmit:
"); scanf("%d",&f);
printf("\nEnter %d frames: ",f);
for(i=1;i<=f;i++)
scanf("%d",&frames[i]);
printf("\nWith sliding window protocol the frames will be sent in the
following manner (assuming no corruption of frames)\n\n");
printf("After sending %d frames at each stage sender waits for acknowledgement
sent by the receiver\n\n",w);
for(i=1;i<=f;i++)
{
if(i%w==0)
{
printf("%d\n",frames[i]);
printf("Acknowledgement of above frames sent is received by sender\n\n");
}
else
printf("%d ",frames[i]);
}
if(f%w!=0)
printf("\nAcknowledgement of above frames sent is received by sender\n");
return 0;
}

Execution:
[root@localhost code]# gcc 5b.c
[root@localhost code]# ./a.out
Enter window size: 3

Enter number of frames to transmit: 5

Enter 5 frames: 12 20 87 65 4

With sliding window protocol the frames will be sent in the following manner
(assuming no corruption of frames)

After sending 3 frames at each stage sender waits for acknowledgement sent by the
receiver

12 20 87
Acknowledgement of above frames sent is received by sender

65 4
Acknowledgement of above frames sent is received by sender

26
6. Write a program for congestion control using leaky bucket algorithm
In Leaky bucket, each host is connected to the network by an interface containing a leaky bucket, that is, a
finite internal queue. If a packet arrives at the queue when it is full, the packet is discarded.

Program:
#include<stdio.h>
#include<stdlib.h>
int bucket_size;
void bucket_input ( int pkt_sz, int op_rt )
{
if( pkt_sz > bucket_size )
printf(" \n\nBucket overflow\n ");
else
{
sleep(1);
while ( pkt_sz > op_rt )
{
printf(" \n %d bytes outputted ", op_rt );
pkt_sz-= op_rt;
sleep(1);
}
if ( pkt_sz > 0 )
printf(" \nLast %d bytes sent\n", pkt_sz );
printf(" \n Bucket output successful \n" );
}
}
int main()
{
int i, op_rate, packet_size;
printf("\n Enter Bucket Size: " );
scanf( "%d", &bucket_size );
printf(" \n Enter output rate: " );
scanf( "%d", &op_rate );
for( i=1; i<=5; i++ )
{
sleep(1);
packet_size = random()%1000;
printf(" \n Packet number [%d] \t Packet size = %d ", i, packet_size );
bucket_input( packet_size, op_rate ); }

return 0;
}

27
Execution:
[root@localhost code]# gcc 6.c
[root@localhost code]# ./a.out

Enter Bucket Size: 500

Enter output rate: 80

Packet number [1] Packet size = 383


80 bytes outputted
80 bytes outputted
80 bytes outputted
80 bytes outputted
Last 63 bytes sent

Bucket output successful

Packet number [2] Packet size = 886

Bucket overflow

Packet number [3] Packet size = 777

Bucket overflow

Packet number [4] Packet size = 915

Bucket overflow

Packet number [5] Packet size = 793

Bucket overflow

28
29
30

You might also like