You are on page 1of 5

Andrew Emrazian

u0349111
CS 4480: Computer Networks
PA2-B
April 3, 2016

Design that describes the program design, how it works and any design tradeoffs considered and
made.

In order to simplify things, I decided to follow the FSM for Go-Back-N fairly closely:

Sender Receiver

I was getting a warning with trying to “restart the timer” so I created some flags in order to
keep track state. There are a couple of helper methods and I’m sure that I could have done
more to simplify the program but it fairly lean. I did add a method call to in the Project class in
order to print the statistics at the end of the program.

Testing that describes the tests you executed to convince yourself that the program works
correctly. Also document any cases for which your program is known not to work correctly. 


I took the advice of the assignment specifications and incrementally tested the program. I
decided to implement an error free version and then tested sending several messages. Then I
implemented the packet loss mechanism with timeouts and tested that thoroughly. Finally, I
added the corruption detection and retransmission. I also tested small probabilities and large
probabilities and calculated the numbers from the total statistics at the end to verify the total
counts and probabilities. Part B of the assignment seemed to be trickier with testing the
program on different input settings. I admit that my program is not bug free and was not able
to get it 100% for large number of messages but it seems to work well for the specified output
parameters.
Output that shows output that illustrates the correct functioning of your program. 


Andrews-MacBook-Pro-2:pa2b Emrazian$ javac Event.java EventList.java EventListImpl.java Message.java


NetworkSimulator.java Packet.java Project.java StudentNetworkSimulator.java
Note: EventListImpl.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Andrews-MacBook-Pro-2:pa2b Emrazian$ java Project
Network Simulator v1.0
Enter number of messages to simulate (> 0): [10] 20
Enter the packet loss probability (0.0 for no loss): [0.0] .05
Enter the packet corruption probability (0.0 for no corruption): [0.0] .05
Enter the average time between messages from sender's layer 5 (> 0.0): [1000] 10
Enter trace level (>= 0): [0] 2
Enter random seed: [random]

EVENT time: 7.287184791916581 type: 1 entity: 0


Message from upper layer A. Mesage: aaaaaaaaaaaaaaaaaaaa

EVENT time: 10.376001423484709 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 0, Packet aaaaaaaaaaaaaaaaaaaa

EVENT time: 19.236658993659887 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 0, Packet aaaaaaaaaaaaaaaaaaaa

EVENT time: 25.070055669515018 type: 1 entity: 0


Message from upper layer A. Mesage: bbbbbbbbbbbbbbbbbbbb

EVENT time: 34.61879505097798 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 1, Packet bbbbbbbbbbbbbbbbbbbb

EVENT time: 40.780141489260814 type: 1 entity: 0


Message from upper layer A. Mesage: cccccccccccccccccccc

EVENT time: 43.50551225320818 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 2, Packet cccccccccccccccccccc
toLayer3: packet being corrupted

EVENT time: 43.66769973575625 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 1, Packet bbbbbbbbbbbbbbbbbbbb

EVENT time: 52.20806596141044 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 2, Packet ?c

EVENT time: 58.02419368087697 type: 1 entity: 0


Message from upper layer A. Mesage: dddddddddddddddddddd

EVENT time: 63.96885689884145 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 3, Packet dddddddddddddddddddd

EVENT time: 68.08126919671182 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 3, Packet dddddddddddddddddddd

EVENT time: 70.21104317518711 type: 1 entity: 0


Message from upper layer A. Mesage: eeeeeeeeeeeeeeeeeeee
toLayer3: packet being corrupted

EVENT time: 72.42791899209499 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 4, Packet ?e

EVENT time: 76.32795528232927 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 3, Packet dddddddddddddddddddd
EVENT time: 85.71889905866773 type: 1 entity: 0
Message from upper layer A. Mesage: ffffffffffffffffffff

EVENT time: 94.90185157389367 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 5, Packet ffffffffffffffffffff
toLayer3: packet being lost

EVENT time: 102.53073469066908 type: 1 entity: 0


Message from upper layer A. Mesage: gggggggggggggggggggg

EVENT time: 111.04477151334238 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 6, Packet gggggggggggggggggggg

EVENT time: 119.96453554456765 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 3, Packet dddddddddddddddddddd

EVENT time: 120.21104317518711 type: 0 entity: 0


A timed out. Retransmitting
packets[4]: ACK # 4 , data eeeeeeeeeeeeeeeeeeee
packets[5]: ACK # 5 , data ffffffffffffffffffff
packets[6]: ACK # 6 , data gggggggggggggggggggg

EVENT time: 122.3372484985224 type: 1 entity: 0


Message from upper layer A. Mesage: hhhhhhhhhhhhhhhhhhhh

EVENT time: 129.35778792474122 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 4, Packet eeeeeeeeeeeeeeeeeeee

EVENT time: 133.1508609358321 type: 1 entity: 0


Message from upper layer A. Mesage: iiiiiiiiiiiiiiiiiiii

EVENT time: 135.19303986746638 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 4, Packet eeeeeeeeeeeeeeeeeeee

EVENT time: 136.07524181636902 type: 1 entity: 0


Message from upper layer A. Mesage: jjjjjjjjjjjjjjjjjjjj

EVENT time: 137.7607395148183 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 5, Packet ffffffffffffffffffff

EVENT time: 145.3112967480265 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 5, Packet ffffffffffffffffffff

EVENT time: 147.22025519828432 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 6, Packet gggggggggggggggggggg

EVENT time: 148.24949876521512 type: 1 entity: 0


Message from upper layer A. Mesage: kkkkkkkkkkkkkkkkkkkk

EVENT time: 150.73051561945772 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 6, Packet gggggggggggggggggggg

EVENT time: 156.07427979694526 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 7, Packet hhhhhhhhhhhhhhhhhhhh

EVENT time: 158.8247267059082 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 8, Packet iiiiiiiiiiiiiiiiiiii
toLayer3: packet being lost

EVENT time: 163.90590727226407 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 7, Packet hhhhhhhhhhhhhhhhhhhh

EVENT time: 165.21603146542466 type: 1 entity: 0


Message from upper layer A. Mesage: llllllllllllllllllll

EVENT time: 165.46218697106883 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 9, Packet jjjjjjjjjjjjjjjjjjjj

EVENT time: 167.75906258200362 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 9, Packet jjjjjjjjjjjjjjjjjjjj

EVENT time: 175.36232906036898 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 10, Packet kkkkkkkkkkkkkkkkkkkk

EVENT time: 177.19875473731128 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 10, Packet kkkkkkkkkkkkkkkkkkkk

EVENT time: 178.82624625410745 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 11, Packet llllllllllllllllllll

EVENT time: 182.92224740585613 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 11, Packet llllllllllllllllllll
stopTimer: Warning: Unable to cancel your timer

EVENT time: 182.93639048009712 type: 1 entity: 0


Message from upper layer A. Mesage: mmmmmmmmmmmmmmmmmmmm

EVENT time: 185.61759233644818 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 12, Packet mmmmmmmmmmmmmmmmmmmm

EVENT time: 188.18579315186332 type: 1 entity: 0


Message from upper layer A. Mesage: nnnnnnnnnnnnnnnnnnnn

EVENT time: 189.17244364960771 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 12, Packet mmmmmmmmmmmmmmmmmmmm

EVENT time: 192.9908021048648 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 13, Packet nnnnnnnnnnnnnnnnnnnn

EVENT time: 195.71676750943743 type: 1 entity: 0


Message from upper layer A. Mesage: oooooooooooooooooooo
toLayer3: packet being corrupted

EVENT time: 195.896951607756 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 13, Packet nnnnnnnnnnnnnnnnnnnn

EVENT time: 199.69079322900822 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 14, Packet ?o

EVENT time: 204.44711414422082 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 13, Packet nnnnnnnnnnnnnnnnnnnn

EVENT time: 209.80063685069862 type: 1 entity: 0


Message from upper layer A. Mesage: pppppppppppppppppppp

EVENT time: 214.33975331803592 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 15, Packet pppppppppppppppppppp

EVENT time: 215.9231323075829 type: 1 entity: 0


Message from upper layer A. Mesage: qqqqqqqqqqqqqqqqqqqq
toLayer3: packet being corrupted

EVENT time: 219.47990300495002 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 16, Packet ?q

EVENT time: 220.3662693849823 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 13, Packet nnnnnnnnnnnnnnnnnnnn
EVENT time: 221.7328285721298 type: 2 entity: 0
Packet received at A. Seq # 0 , ACK # 13, Packet nnnnnnnnnnnnnnnnnnnn

EVENT time: 229.30479790211922 type: 1 entity: 0


Message from upper layer A. Mesage: rrrrrrrrrrrrrrrrrrrr

EVENT time: 231.29011756732606 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 17, Packet rrrrrrrrrrrrrrrrrrrr

EVENT time: 232.93639048009712 type: 0 entity: 0


A timed out. Retransmitting
packets[14]: ACK # 14 , data oooooooooooooooooooo
toLayer3: packet being corrupted
packets[15]: ACK # 15 , data pppppppppppppppppppp
packets[16]: ACK # 16 , data qqqqqqqqqqqqqqqqqqqq
packets[17]: ACK # 17 , data rrrrrrrrrrrrrrrrrrrr

EVENT time: 233.23683838222325 type: 2 entity: 0


Packet received at A. Seq # 0 , ACK # 13, Packet nnnnnnnnnnnnnnnnnnnn

EVENT time: 241.9687312399848 type: 2 entity: 1


Packet received at B. Sequence # 0 , ACK # 14, Packet oooooooooooooooooooo

EVENT time: 243.69291885335645 type: 1 entity: 0


Message from upper layer A. Mesage: ssssssssssssssssssss

EVENT time: 245.02264082890858 type: 1 entity: 0


Message from upper layer A. Mesage: tttttttttttttttttttt
toLayer3: packet being lost

EVENT time: 250.65699319394727 type: 2 entity: 1

********************* Statistics **********************


Go-Back-N. Window size: 8

Packets sent/received by application: 49


Packets lost by application: 3
Packets corrupted by application: 5

Packets sent/received by my protcol: 49


Packets lost by my protcol: 3
Packets corrupted by my protcol: 4
ACKs sent: 49
ACKs received: 41
*******************************************************

You might also like