Micro Transport Protocol (üTP, sometimes uTP) is an open User Datagram Protocol-based (UDP-based) variant of the BitTorrent peer-to-peer file-sharing protocol intended to mitigate poor latency and other congestion control problems found in conventional BitTorrent over Transmission Control Protocol (TCP), while providing reliable, ordered delivery.
It was devised to automatically slow down the rate at which packets of data are transmitted between users of peer-to-peer file-sharing torrents when it interferes with other applications. For example, the protocol should automatically allow the sharing of a DSL line between a BitTorrent application and a web browser.
üTP emerged from research at Internet2 on QoS and high-performance bulk transport, was adapted for use as a background transport protocol by Plicto, founded by Stanislav Shalunov and Ben Teitelbaum and later acquired by BitTorrent, Inc. in 2006, and further developed within its new owner. It was first introduced in the üTorrent 1.8.x beta branches, and publicized in the alpha builds of üTorrent 1.9.
The implementation of üTP used in üTorrent was later separated into the "libutp" library and published under the MIT license.
The first free software client to implement üTP was KTorrent 4.0. libtorrent implements üTP since version 0.16.0 and it is used in qBittorrent since 2.8.0. Tixati implements üTP since version 1.72. Vuze (formerly Azureus) implements üTP since version 4.6.0.0. Transmission implements üTP since version 2.30.
The congestion control algorithm used by üTP, known as Low Extra Delay Background Transport (LEDBAT), aims to decrease the latency caused by applications using the protocol while maximizing bandwidth when latency is not excessive. Additionally, information from the üTP congestion controller can be used to choose the transfer rate of TCP connections.
LEDBAT is described in . As of 2009, the details of the üTP implementation were different from those of the then-current Internet Draft.
üTP also adds support for NAT traversal using UDP hole punching between two port-restricted peers where a third unrestricted peer acts as a STUN server.