readme v1
This commit is contained in:
parent
cc8ae71ff4
commit
59f6aa1eed
25
README.md
25
README.md
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue