Clean Slate Research Projects
10.) Rate Control Protocol
Overview
Rate Control Protocol (RCP) is a new congestion control algorithm designed for fast download times (i.e. aka user response times, or flow-completion times). Whereas other modifications to TCP (e.g. STCP, Fast TCP, XCP) are designed to work for specialized applications that use long-lived flows (scientific applications and super computer centers), RCP is designed for the typical flows of typical users in the Internet today. For example, a mid-size flow in the Internet today contains 1000 packets and TCP typically makes them last 10x longer than need-be (XCP is even worse). RCP makes flows finish close to the minimum possible, leading to a perceptible improvement for web users, distributed computing, and distributed file-systems. We believe RCP is the only congestion control algorithm to do this.
The main properties of RCP are:
- Typical Internet flows will see 10 times faster download times than TCP and 30 times faster than XCP. Winners are the greater than 90% of sessions that never leave slow-start today.
- Efficiently uses high bandwidth-delay product networks such as the long haul optical links
- Provably stable network independent of link-capacities, round-trip times and number of flows
- Flows are easy to police, to ensure they adhere to congestion control (not generally possible with other schemes)
- Network operators can give preference (or weighted preference) to some flows/aggregates.
RCP has two components: (1) End-host congestion control layer that sits between IP and TCP/UDP. During introduction, the end-host could adapt by testing for RCP at each end and along the path, falling back to TCP if need-be. (2) Each router maintains a single fair-share rate per link. Each packet carries the rate of the bottleneck link. For each packet, the router compares the two values. If the router's fair-share rate is smaller, it overwrites the value in the packet. This way, the source learns the fair-share rate of bottleneck link. It is simple, requires a very minor change to switches/routers, requires no per-flow state or per-packet computation.
Researchers
Nick McKeown
(Faculty) Faculty Director, Clean Slate Program, Associate Professor of EE and CS
Nandita Dukkipati
(Student) Electrical Engineering
Collaboration
- Masayoshi Kobayashi, Visiting Scholar from NEC Labs, Japan
- Rui Zhang-Shen, Stanford
- Hamsa Balakrishnan, NASA
- Ashvin Lakshmikantha, UIUC
- Glen Gibb, Stanford
- Claire Tomlin, Stanford and UC Berkeley
- R. Srikant, UIUC
Funding
This research is funded in part by NSF under ITR award ANI-0331653. RCP is part of the 100x100 Clean Slate Design Project.
Implementation
- We have a RCP implementation in ns-2.28. Download RCP files rcp-v1.tar.gz (also includes sample .tcl files for RCP, TCP and XCP used in RCP papers).
- Glen Gibb (EE, Stanford) is implementing the RCP router module in hardware on NetFPGA.
- We have the RCP end-host implementation in the Virtual Network System (VNS) and are working on a Linux implementation.










