CCN - Lab - Manual (17 Scheme)
CCN - Lab - Manual (17 Scheme)
Education Trust’s
B.E., VI Semester
• 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:
Mission:
M1: To develop an active learning environment that ensures participation of students in both curricular as well
as co- Curricular activities.
M4: To inculcate, amongst students, team-spirit, leadership qualities, positive attitude and effective
Communication skills to solve societal needs.
PEO1: Be Successful in their professional career, higher studies and research by providing contextually relevant
Academic environment.
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.
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.
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.
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
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++
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 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.
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 ]
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.
proc finish {} {
global f nf ns
$ns flush-trace
close $f
close $nf
exec nam lab1.nam &
exit 0
}
$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
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}”
➢
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.
proc finish {} {
global ns f nf
$ns flush-trace
close $f
close $nf
exec nam lab2.nam &
exit 0
}
3
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0
$ns connect $udp0 $null0
4
3. Implement Ethernet LAN using n (6-10) nodes. Compare the throughput by
changing the error rate and data rate.
proc finish { } {
global nf ns tf
exec nam lab3.nam &
close $naf
close $trf
exit 0
}
$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
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}”
$err set rate_ 0.7 #vary error rate 0.1, 0.4, 0.5 and 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.
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
}
$ns make-lan "$n0 $n1 $n2 $n3 $n4 $n5 " 10Mb 30ms LL Queue/DropTail Mac/802_3
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"
}
8
5. Implement ESS with transmission nodes in Wireless LAN and obtain the
performance parameters.
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"
9
$ftp1 attach-agent $tcp1
set sink2 [new Agent/TCPSink]
$ns attach-agent $n2 $sink2
$ns connect $tcp1 $sink2
proc finish { } {
global ns nf tf
$ns flush-trace
exec nam lab5.nam &
close $tf
exit 0
}
$ns at 20 "finish"
$ns run
10
6. Implementation of Link state routing algorithm
$ns rtproto LS
proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam lab6.nam &
exit 0
}
$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++
2. Write a program for distance vector algorithm to find suitable path for transmission.
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
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;
}
for(i=0;i<n;i++) {
printf("%d",a[i]);
}
14
Execution:
[root@localhost code]# gcc 1a.c
[root@localhost code]# ./a.out
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
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
0 2 999 1
2 0 5 2
999 5 0 6
1 2 6 0
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
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
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:
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
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
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 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
Bucket overflow
Bucket overflow
Bucket overflow
Bucket overflow
28
29
30