-
Notifications
You must be signed in to change notification settings - Fork 2
/
8.RED.java
230 lines (212 loc) · 7.37 KB
/
8.RED.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
/*Write a program to implement random early detection (RED)
congestion control algorithm*/
import java.util.Random;
import java.util.Scanner;
public class RedCongestionControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the maximum number of packets:");//number of packets to be sent
int maxPackets = scanner.nextInt();
System.out.println("Enter the queue size:");//size of the queue the packets can be stored
int queueSize = scanner.nextInt();
System.out.println("Enter the maximum probability:");
double maxProbability = scanner.nextDouble();
System.out.println("Enter the minimum probability:");//used to calculated the drop probabilty (max-min)
double minProbability = scanner.nextDouble();
System.out.println("Enter the threshold value:");//the value after which the congestion control comes to action
int threshold = scanner.nextInt();
simulateCongestion(maxPackets, queueSize, maxProbability, minProbability, threshold);
}
private static void simulateCongestion(int maxPackets, int queueSize, double maxProbability, double minProbability, int threshold) {
Random rand = new Random(System.currentTimeMillis());
int queueLength = 0;
for (int i = 0; i < maxPackets; i++) {
double dropProbability = calculateDropProbability(queueLength, queueSize, maxProbability, minProbability, threshold);
if (queueLength >= threshold && rand.nextDouble() < dropProbability) {
System.out.println("Packet dropped (CONGESTION AVOIDANCE)");
//checking the threshold value and the probabilty to check whether to accept or reject the packet
} else {
System.out.println("Packet accepted " + (i + 1));
queueLength++;
}
}
}
private static double calculateDropProbability(int currentQueueLength, int queueSize, double maxProbability, double minProbability, int threshold) {
double slope = (maxProbability - minProbability) / (queueSize - threshold);
return minProbability + slope * (currentQueueLength - threshold);
}
}
/*
output:-
Enter the maximum number of packets:
100
Enter the queue size:
20
Enter the maximum probability:
0.8
Enter the minimum probability:
0.2
Enter the threshold value:
10
Packet accepted 1
Packet accepted 2
Packet accepted 3
Packet accepted 4
Packet accepted 5
Packet accepted 6
Packet accepted 7
Packet accepted 8
Packet accepted 9
Packet accepted 10
Packet accepted 11
Packet accepted 12
Packet accepted 13
Packet accepted 14
Packet accepted 15
Packet accepted 16
Packet accepted 17
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 19
Packet accepted 20
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 23
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 33
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 40
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 47
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Output 2:-
Enter the maximum number of packets:
50
Enter the queue size:
10
Enter the maximum probability:
0.6
Enter the minimum probability:
0.4
Enter the threshold value:
5
Packet accepted 1
Packet accepted 2
Packet accepted 3
Packet accepted 4
Packet accepted 5
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 9
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 13
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 17
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 19
Packet accepted 20
Packet accepted 21
Packet accepted 22
Packet accepted 23
Packet accepted 24
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 27
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 29
Packet dropped (CONGESTION AVOIDANCE)
Packet accepted 31
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
Packet dropped (CONGESTION AVOIDANCE)
*/