Datagram Congestion Control Protocol

Download Report

Transcript Datagram Congestion Control Protocol

Datagram
Congestion Control
Protocol
Timothy Sohn
Eiman Zolfaghari
CS268 Project
May 15, 2002
Motivation



Real-time applications built on top of UDP are
growing in bandwidth usage on the Internet
(RealAudio, Counter Strike, IP Telephony)
Do not need Additive Increase Multiplicative
Decrease congestion mechanism
But congestion control is difficult to correctly
implement
Protocol Overview




Plug and Play congestion control mechanisms
on the fly
Half-Connections allow each client can choose
its own congestion control id (CCID) to use
Low overhead like UDP
Applications using UDP can easily change to
this new protocol
Congestion Control ID3
(TFRC)



TCP-Friendly Rate Control is intended for applications
that do not require a fully reliable connection and to be
“friendly” towards TCP flows in terms of send rates
Receiver sends rate estimate and loss event history
Sender uses equation that models SACK TCP to
determine appropriate send rate
T
s
2bp
3bp
R
 t RTO (3
) p(1  32 p 2 )
3
8
Implementation


Basic Protocol implemented in user space on
top of UDP using an event-based model
rather than thread-based
CCID3 implementation based off of TFRC
code in ns-simulator
Testing


Tests done using two machines running Nistnet
(network emulation tool), tcpdump, some
parsing scripts, and gnuplot to make graphs.
Performance Metrics
Send rate over time
 TCP-Friendliness of a single CCID3 over time
 Average TCP-Friendliness of a single CCID3 flow
competing with TCP flows

Friendliness


Measured friendliness of
DCCP with CCID3 with
respect to increasing
TCP connections
Exhibits relatively fair
rate changes with respect
to background flows
More Friendliness

Friendliness ratio of
DCCP with respect to
itself and with respect
to background TCP
connections
Results


CCID3 implementation is complete
CCID3 is, on average, TCP-Friendly
Future Work



We hope to implement CCID2 (TCP-like
congestion control) and test the idea of halfconnections
There is no sense of reliability in DCCP, but
implementing and testing a layer on top of the
protocol would be interesting
Move our implementation from user space to
kernel space