An Introduction to UDT Internet2 Spring Meeting Yunhong Gu Robert L. Grossman (Advisor) National Center for Data Mining University of Illinois at Chicago
What's UDT? UDT: UDP-based Data Transfer Protocol Application level, end-to-end, unicast, reliable, connection-oriented, streaming data transport protocol. Successor of SABUL Open source C++ Implementation
Layered Architecture UDP OS Socket Interface UDT UDT Socket API Applications User Space Kernel Memory Copy Avoidance
Flow/Congestion Control AIMD: Additive Increases Multiplicative Decreases Increase Parameter Related to available bandwidth Bandwidth estimation: automatic parameter tuning Decrease Factor Randomized decrease factor: alleviate loss synchronization problem
Performance Characteristics Efficiency Approximately constant time to probe 90% of available bandwidth Fairness Intra-protocol fairness (max-min) RTT independent TCP friendly
Configurable Congestion Control UDP OS Socket Interface UDT UDT Socket API Applications User Space Kernel CC
How to Use UDT? Linux Ported to Windows, UNIX, BSD, and OS X C++ API socket-like API Transport Middleware XIO UDT Driver C API No changes for existing applications, just recompilation and link Limitation: no "fork" Java and Python wrapper
Non-objectives and limitations Not a replacement to TCP For bulk data transfer over high-speed wide area networks, where TCP does not work well UDT is designed to co-exist with TCP Built-in control algorithm is not suitable for applications requires real-time, messaging, lossy, or smooth data traffic. Not suitable for high concurrency (a large number of flows sharing the network)
UDT Source Code Stable release (v2.0) CVS (most recent update and bug fixes) Technical papers Online documentation
Questions?