200 likes | 308 Views
EE228A Project, Fall 2000. Modular TCP. Yunfei Deng, Kenneth Cheung, Daniil Khidekel Professor Jean Walrand 12/5/2000. Outline. TCP basics New Challenges at Internet Era Transport Protocol Design Modular TCP Issues in Implementation Summary. Development of TCP.
E N D
EE228A Project, Fall 2000 Modular TCP Yunfei Deng, Kenneth Cheung, Daniil Khidekel Professor Jean Walrand 12/5/2000
Outline • TCP basics • New Challenges at Internet Era • Transport Protocol Design • Modular TCP • Issues in Implementation • Summary
Development of TCP • Stream Data Transfer on IP • Connection based • Reliable delivery by retransmissions • In order delivery • Flow control • Congestion Control • Extensions, T/TCP etc.
New Challenges • Vast Internet resources and users • Various kinds of contents: multimedia • Various conditions of Internet connections, from High-speed Broadband access to slow modem • Various requirements on quality of transportation: timing, ordering, and integrity
Examples • A FTP program: may retransmit received but dropped out-of-order data, add traffic into network • A Stock quote program for Day-trader: only the newest correct quotes are meaningful • Online Video playing: lost tolerable, timing is important, out-of-order frames might be useful
TCP RSTP … UDP IP Network Link Current Status • Existing TCP not suitable • UDP is not enough • Various Protocols built on top of UDP: RTSP, SRDP • Opportunity in extending TCP
Transport Protocol Design • Reliability on-demand • Constraints on ordering • Flow Control • Congestion Control • Applications involved Congestion control (M)TCP Reliability RSTP … UDP IP Network Link
Modular TCP • Key idea: Application Level Framing (ALF), D.Clark 1990, M.I.T. • Goals: must-have congestion control, on-demand reliability control, on-demand ordering constraints • Compatible with TCP • Based on existing TCP/IP implementations
ADU in Modular TCP • ADU: Application Data Unit • MTCP deals with ADU from Applications • Different ADU types: • Reliable, In-Order • Reliable, Out-of-Order OK. • Unreliable, In-Order • Unreliable, Out-of-Order OK.
Begin the connection • Add Modular TCP options into TCP header: {MTCP option kind, requested ADU Policy} • When send SYN to initialize connection, mark MTCP option in the header as “MTCP supported”, also in replies • Use Modular TCP only when both sides support it, otherwise use traditional TCP
During the connection • More ADU options in TCP header un-favored • Additional ADU header after TCP header: {name, seq#, range, options} • ADU Policies: • Reliable, In-Order delivery • Reliable, Out-of-Order delivery • Unreliable, In-Order delivery • Unreliable, Out-of-Order delivery • Mixture delivery
During the connection (cont’d) • More About mixture ADU types: • Conservative approach: use the most constrained level of delivery • More complex scheme: permit various types of ADU in the same connection, but need additional semantics defining the ordering constraints between different types of ADU
Sender of the connection • Sender receives ADUs from Applications • ADU Fragmentation, Packet queuing, … • Sender keeps the sliding window proceeding with the coming ACKs • Reaction of lost packet: • Reliable ADU packets need to be retransmitted • Unreliable ADU packets don’t need to retransmitted, but need congestion control
Receiver of the connection • Calculate checksum, Acknowledgement • Queue partial ADU packets • Re-organize the packets into ADUs • Delivery to Applications • In-Order required: queue/drop out-of-order ADUs • Out-of-Order OK.: instantaneous delivery to application
Acknowledgements • TCP’s positive cumulative ACK scheme doesn’t work for unreliable ADUs • SACK: Selective Acknowledgement • Selectively acknowledge non-contiguous blocks of data not covered by the Cumulative Acknowledgement field • Update Cumulative ACK field when ADU delivered (reliable or unreliable) or dropped (unreliable)
Flow and Congestion Control • SACK for all types of ADU • Use SACK info to detect lost, congestion • Apply normal TCP slow start, congestion avoidance, fast recovery
Implementation Modular TCP • linux