Title: UDT Tutorial
1UDT Tutorial
- Yunhong Gu Robert Grossman
- University of Illinois at Chicago
2Outline
- Introduction
- Installation
- Programming using UDT
- Performance tuning
- Conclusion
3Introduction
- UDT UDP-based Data Transfer
- Application level
- End-to-end
- Bi-directional
- For shared networks
- But can be tuned for private networks
- C library
4UDT History
- 2000 SABUL Concept
- 2001 SABUL version 1.0
- 2002 dSABUL
- 2002 SABUL version 2.0, 2.1, 2.2, 2.3,
- 2003 UDT 1.0
- 2004 UDT 1.1 1.2
- 2004 UDT 2.0
- 2005 UDT 3.0
5Project Online
- sf.net/projects/udt
- Source code, documentations, mailing lists, bug
reports - Tarball release and CVS
6Installation
- Make the C source code
- Tested support hardware
- IA32, IA64, AMD64, Power PC, SPARC
- Tested support OS
- Linux, OS X, Windows, UNIX
- make -e archXXX osYYY
7Post-Installation
- LD_LIBRARY_PATH
- Testing using appserver and appclient
- ./appserver port
- ./appclient ltserver-addrgt ltserver-portgt
8Programming using UDT
- socket-like API
- UDT namespace qualifier
- UDTSOCKET
- UDTERROR
9Programming using UDT
int client socket(AF_INET, SOCK_STREAM, 0)
connect(client, (sockaddr)serv_addr,
sizeof(serv_addr)) If (-1 send(client, data,
size, 0)) //error processing
UDTSOCKET client UDTsocket(AF_INET,
SOCK_STREAM, 0) UDTconnect(client,
(sockaddr)serv_addr, sizeof(serv_addr)) If
(UDTERROR UDTsend(client, data, size, 0))
//error processing
10Configuration
11Overlapped IO
- int send( UDTSOCKET, const char
buf, int len, int flags, - int handle NULL,
- UDT_MEM_ROUTINE routine NULL
- )
- void (UDT_MEME_ROUTINE)(char, int)
12Overlapped IO
- bool getoverlappedresult( UDTSOCKET u, const
int handle, int progress, const bool
wait)
13Overlapped IO
New Data
User Buffer
Data
Protocol Buffer
Protocol Buffer
14Performance monitoring
- Monitor UDT performance statistics
- Monitor internal UDT parameters
- Diagnose network and application configurations
- int perfmon(
- UDTSOCKET u,
- TRACEINFO perf
- )
15Performance monitoring
- TRACEINFO structure
- Aggregate information
- Timestamp, Total send/recv/retrans/loss, etc.
- Local information (values since last time perfmon
was called) - Local send/recv/retrans/loss, send/recv rate
- Instant value
- RTT, cwnd, ipt, etc.
16Performance Tuning
- UDT buffer size
- Larger is better
- UDP buffer size
- SNDBUF ltlt RCVBUF
- Larger is NOT better
- IO block size
- Larger is better, but better less than the UDT
buffer size - File IO block size mystery
17Thank you!