Overview
Our
'newtcp' program began in 2005 with support from Cisco Systems (multiple grants via
their University Research Program). We were initially focused on
independent, interoperable implementations of new 'high speed' TCP
congestion control (CC) algorithms in FreeBSD and exploration of
possible delay-based and rate-based enhancements to existing loss-based
TCP CC techniques. Along the way we have also implemented and released
new tools to instrument FreeBSD-based testbeds for experimental TCP
research and explored how aggressive loss-based CC algorithms can dramatically increase round trip times (RTTs).
In 2011 and 2012 we received new funding to (a) extend our work on
delay-based TCP (particularly to mitigate the
impact of bufferbloat, and work well in
wireless/wired scenarios), and (b) implement multipath TCP (MPTCP) for
FreeBSD and explore the impact of blending loss-based and delay-based
CC on
sub-flows of individual MPTCP connections.
We
are revisiting path delay and flow rate as
interesting congestion indicators for TCP CC. They can potentially
allow TCP connections to utilise the network without excessive filling
of queues (cf. traditional TCP which requires queues to fill and drop
packets in order to trigger feedback). We are also exploring ways in
which delay indications can help a TCP sender differentiate between
packet losses caused by congestion or other reasons. If a delay-based
CC algorithm can exhibit loss-tolerance it may out-perform loss-based
TCP algorithms across naturally lossy paths (such as wireless links). In
2010 we released our first examples of delay-based TCP for FreeBSD.
Outcomes
Between 2005 and 2011 we have :
- Designed and implemented Kernel-resident tools to enhance
FreeBSD-based TCP research: 'Statistical Information For TCP Research' (SIFTR), providing detailed, event-driven logging of TCP state variables during active TCP sessions, and
'Deterministic Packet Discard' (DPD), allowing for fine-grained control of dummynet packet drops for testing CC algorithms
- Designed and implemented a new modular
congestion control framework for FreeBSD's network stack
- Designed and implemented FreeBSD CC modules for New Reno and H-TCP
- Compared induced latency caused by H-TCP vs NewReno in FreeBSD [paper]
- Explored how much more queuing delay is induced by CUBIC relative to NewReno over congested links [paper,paper]
- Designed and implemented FreeBSD CC modules for HD (a delay-based TCP from the Hamilton
Institute), CUBIC and Vegas
- Received FreeBSD Foundation support to port our SIFTR work into the official FreeBSD source tree -- SIFTR is now available in FreeBSD 8.2 and later.
- Designed new delay-threshold (CHD) and delay-gradient (CDG) TCP
congestion control algorithms that include a new idea -- the "shadow
window" -- to help delay-based connections compete with traditional
loss-based flows
- Implemented CHD and CDG as FreeBSD modules
- Published early analysis of our delay-threshold [paper] and delay-gradient [slides][paper] TCP variants
- Received FreeBSD Foundation support
to port our modular congestion control framework and five congestion
control algorithms into the official FreeBSD tree -- they are now
available in FreeBSD 9.0 and later.
Program Members
Collaborators
- Michael Welzl (University of Oslo, Norway)
- David Hayes (CAIA Adjunct Research Fellow)
Alumni
- David Hayes
- James Healy
- Alana Huebner