readme v1

This commit is contained in:
Milo Turner 2020-03-14 18:17:54 -04:00
parent cc8ae71ff4
commit 59f6aa1eed
1 changed files with 22 additions and 3 deletions

View File

@ -8,12 +8,31 @@
## High level approach
TODO
For this assignment we developed a new protocol that would be particularly efficient at
transferring a file over an unreliable connection. The protocol devides the input file
into fixed-length "segments", numbers them sequentially, and attempts to transfer them to
the receiver. It repeatedly retransmits segments that it is not confident that the
receiever has obtained. The receiever periodically sends batched-acknowledgements that
list receieved segments. The segments are compressed using state-of-the-art compression
algorithms to ensure expedient delivery. The rate of sending and acknowledgement is
continuously tuned to optimize for network conditions.
## Challenges
TODO
We faced many challenges implementing this protocol, such as the following:
- Learning how to use cutting-edge event-loop libraries in Rust
- Selecting a re-transmission algorithms that would be resistant to drops and duplicates
- Choosing constants that would tune the transmission rate to adjust automatically to
network latency and bandwidth
- Ensuring that *both* connections would close once the file had been successfully
transferred.
## Testing
TODO
Various internal algorithms and datastructures were tested using simple unit tests. For
instance, we have unit tests to check that our packet encoding/decoding schemes work
correctly.
However, testing general consistency of the protocol was done by running the scripts
provided to us, which automatically adjust network conditions and send large files.