Project3 - Congestion Control
Outline Overview Project Specification and Tasks Tools and Time Table
Overview BitTorrent-like file transfer application Reliability and congestion control protocol similar to TCP UDP based and C programming Allow regroup up to 3 members
Project Specification Intro to BitTorrent file transfer protocol Congestion control mechanism to ensure fair and efficient network utilization. Smart optimizations to get the best possible transfer time (extra credit).
Intro to BitTorrent A fixed-size chunk of 512Kbytes in pro3 Verification by rehashing Flooding, no tracker server Single master-file, different ownership BT = TCP, Project3 = UDP Hash( ) = =.torrent
Terminology master-data-file master-chunk-file 1e 34 b4 27 Peer A Peer B 1e 34 has- chunk-file Node.map Peer A Peer B GET b4 b4 27 has- chunk-file GET 34
File Transfer Requesting peer send “WHOHAS ” Responding peer send “IHAVE ” Decide, and send “GET ” Responding peer send multiple “DATA”
Packet Format MagicVersionType Header LenPacket Len Seq Num Ack Num Packet TypeCode WHOHAS0 IHAVE1 GET2 DATA3 ACK4 DENIED5 Packet Header Payload = hash list or data SPLIT PACKET LONGER THAN 1500 BYTES!
Provided Files hupsim.pl – Emulates network topology using topo.map sha.[ch] - The SHA-1 hash generator input buffer.[ch]+bt parse.[ch] - Handle user input debug.[ch] - helpful utilities for debugging output peer.c - A skeleton peer file nodes.map+topo.map - the hidden network topology
Project Tasks 100% Reliability & Sliding Window Congestion control *Intelligent Peer Selection and Caching
100% Reliability & Sliding window Cumulative ACK Duplicate ACK SENDERRECEIVER Last ACKedLast Sent Last Available Next Expected Last Received
Congestion control Slow start : ACK received => window++ Congestion Avoidance : Window size = 1 after a loss (Simple Version) Fast Retransmit : Retransmit after 3 duplicate ACK Fast Recovery : No need to implement (But you may need it in Task3)
Tools Spiffy: Simulating Networks with Loss & Congestion sendto() => spiffy_sendto() Gnuplot and etc
TimeTable DateEventDescription 5/23Project3 releasedSTART EARLY 5/27CheckPoint1 (NO Hand in) WHOHAS flooding and IHAVE response 6/3CheckPoint2 (Hand in) Simple Chunk Download with stop-and-wait 6/8CheckPoint3 (NO Hand in) Sliding window flow-control with reliability 6/15CheckPoint4(Hand in) Simple Congestion Avoidance, with cwnd = 1 after any loss 6/19Early bird deadlineRequired functionality (+10 bonus points) 6/26DeadlineNo penalty
Thanks Good Luck & START EARLY!