1 / 17

UDT Tutorial

UDT Tutorial. Yunhong Gu & Robert Grossman University of Illinois at Chicago. Outline. Introduction Installation Programming using UDT Performance tuning Conclusion. Introduction. UDT – UDP-based Data Transfer Application level End-to-end Bi-directional For shared networks

eydie
Download Presentation

UDT Tutorial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UDT Tutorial Yunhong Gu & Robert Grossman University of Illinois at Chicago

  2. Outline • Introduction • Installation • Programming using UDT • Performance tuning • Conclusion

  3. Introduction • UDT – UDP-based Data Transfer • Application level • End-to-end • Bi-directional • For shared networks • But can be tuned for private networks • C++ library

  4. UDT 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

  5. Project Online • sf.net/projects/udt • Source code, documentations, mailing lists, bug reports • Tarball release and CVS

  6. Installation • Make the C++ source code • Tested support hardware • IA32, IA64, AMD64, Power PC, SPARC • Tested support OS • Linux, OS X, Windows, UNIX • make -e arch=XXX os=YYY

  7. Post-Installation • LD_LIBRARY_PATH • Testing using appserver and appclient • ./appserver [port] • ./appclient <server-addr> <server-port>

  8. Programming using UDT • socket-like API • UDT:: namespace qualifier • UDTSOCKET • UDTERROR

  9. Programming 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 = UDT::socket(AF_INET, SOCK_STREAM, 0); UDT::connect(client, (sockaddr*)&serv_addr, sizeof(serv_addr)); If (UDTERROR== UDT::send(client, data, size, 0)) { //error processing }

  10. Configuration • setsockopt/getsockopt

  11. Overlapped 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);

  12. Overlapped IO bool getoverlappedresult(  UDTSOCKET u,  const int& handle,  int& progress,  const bool& wait);

  13. Overlapped IO New Data User Buffer Data Protocol Buffer Protocol Buffer

  14. Performance monitoring • Monitor UDT performance statistics • Monitor internal UDT parameters • Diagnose network and application configurations int perfmon( UDTSOCKET u, TRACEINFO* perf );

  15. Performance 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.

  16. Performance Tuning • UDT buffer size • Larger is better • UDP buffer size • SNDBUF << RCVBUF • Larger is NOT better • IO block size • Larger is better, but better less than the UDT buffer size • File IO block size: mystery

  17. Thank you!

More Related