Initial commit with basic TCP reno

TCP slowstart/congestion avoidance phases
duplicate acknowledgement detection
Implemented Go-Back-N

Implemented Go-Back-N in Host resources to send back acknowledgement ids
with the id of the packet they expect next. It is commented out right
now in resources. The Reno code gave some errors at runtime.
repushing code
Revert "repushing code"

This reverts commit ddf647dc966f797e957bc8c340887df839f9225f.
TCP packet drop detection added

still have to do timeout
Revert ddf647d..1a63cf7

This rolls back to commit ddf647dc966f797e957bc8c340887df839f9225f.
Added dual window sending

Implementing Flow packet sending to start sending the next window's
packet on acknowledgements.
Dual Window sending done
Revert "Added dual window sending"

This reverts commit c72d6c2da483732c1b0a38e79874170a3a9d3a37.
Merge branch 'TCP-Reno' of https://github.com/WalkerMills/network_simulator into TCP-Reno
Bugs from last commit fixed

Pls don’t be checking these commits walker.
sort of fixed immediate errors, but code is buggy.
Changed TCP reno to a class
Initial implementation of dynamic routing

I added a routing packet class to the resources module. Also added methods
that handle routing packets and data packets to the Router class.
Updates test casaes to use FAST TCP

Since we're working on dynamic routing, we need the routing test cases
working, so I updated them to use FAST TCP.  FAST TCP also needs to be
tested on a working network, beyond test case 0.
Adds MonitoredEnvironment, minor bugfix

I created a subclass of simpy.Environment which adds monitoring
functionality, MonitoredEnvironment.  You can add a variable to monitor by
registering an identifier & a getter function which will return a valid
value for that variable with the environment.  Fixed some minor syntax
errors.
Bugfix

Fixed a bug in the TCP reno class,
Minor bugfix, barrier updates

Changed the network class to actually use MonitoredEnvironment, and
fixed some scope errors in MonitoredEnvironment.  I also made a minor
change to the way that updates are performed; now, values are only
updated at the end of a time period.  Thus, if multiple "simultaneous"
processes modify the same value, it is only updated once, after all
events in the present are finished (potentially modifying values)
Switch to TCP RENO

Updated the program to use TCP generate and acknowledge from the flow.
Added in the retransmit function, updated duplicate checking and
acknowledgement
Routers now use timeout to update routing tables.

Created a new subclass of Routing, Finish, which is a type of packet used
to convey when routers have locally converged and can update their
routing tables. Also added a loop that initiates Bellman-Ford updates at
a given frequency.
Merge branch 'dynamic_routing' of https://github.com/WalkerMills/network_simulator into dynamic_routing