Micro Transport Protocol: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Added date. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Internet protocols | #UCB_Category 84/248
 
(189 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|Peer-to-peer file-sharing protocol}}
{{context}}
{{fsb}}
'''Micro Transport Protocol''' ('''μTP''', sometimes '''uTP''') is an [[open standard|open]] [[User Datagram Protocol]]-based (UDP-based) variant of the [[BitTorrent]] [[peer-to-peer file sharing|peer-to-peer file-sharing]] [[protocol (computing)|protocol]] intended to mitigate poor [[network latency|latency]] and other [[network congestion#Congestion control|congestion control]] problems found in conventional BitTorrent over [[Transmission Control Protocol]] (TCP), while providing reliable, ordered delivery.
 
It was devised to automatically slow down<ref>{{cite web|url=http://forum.bittorrent.org/viewtopic.php?pid%3D762#p762 |title=Forum.bittorrent.org / A few comments about µTP (BEP-29) |access-date=November 15, 2009 |url-status=dead|archive-url=https://web.archive.org/web/20100301125306/http://forum.bittorrent.org/viewtopic.php?pid=762 |archive-date=March 1, 2010 }}</ref> the rate at which packets of data are transmitted between users of [[peer-to-peer]] file-sharing [[BitTorrent|torrent]]s when it interferes with other applications. For example, the protocol should automatically allow the sharing of a [[Digital subscriber line|DSL line]] between a BitTorrent application and a web browser.
'''UDP Torrent Protocol''' or '''uTP''' is a [[Protocol (computing)|protocol]] based upon the [[User Datagram Protocol]] (UDP). It aims to decrease latency of Bit Torrent peers, but still maximize bandwidth when the latency is not excessive. In addition, information from uTP transport, if active, is used to control the transfer rate of [[Transmission Control Protocol|TCP]] connections to prevent disruption of the used internet connection.<ref>[http://searchnetworking.techtarget.com.au/articles/27957-Torrents-of-Disruption-on-the-Way- Technical information about UDP]</ref> uTP will be fully featured in the new [[µTorrent]] 1.9 but has partially been featured in 1.8.x, the latest uTorrent public beta versions also use uTP.<ref>[http://arstechnica.com/news.ars/post/20081201-utorrents-switch-to-udp-and-why-the-sky-isnt-falling.html µTorrent's switch to UDP and why the sky isn't falling]</ref><ref>[http://www.thinkbroadband.com/news/3807-utorrent-shifts-towards-udp-to-make-it-work-better.html uTorrent shifts towards UDP to make it work better]</ref>
 
==Development==
 
μTP emerged from research at [[Internet2]] on [[Quality of service|QoS]] and high-performance [[bulk transport]], was adapted for use as a background transport protocol by Plicto, founded by [[Stanislav Shalunov]] and Ben Teitelbaum<ref>[http://www.fastcolabs.com/3014951/why-your-bittorrent-downloads-move-so-fast This Is How Your BitTorrent Downloads Move So Fast], Fastcolabs, 2013-07-29, Retrieved November 6, 2013</ref> and later acquired by [[BitTorrent (company)|BitTorrent, Inc.]] in 2006, and further developed within its new owner.<ref>http://www.slideshare.net/eCommConf/eric-klinker-presentation-at-emerging-communication-conference-awards-2010-america/11 uTP timeline, slide 11, "This Green Revolution-improving the yield of your network investment", eComm America Conference, San Francisco, CA, April 2010.</ref> It was first introduced in the μTorrent 1.8.x beta branches, and publicized in the alpha builds of [[μTorrent]] 1.9.<ref>{{Cite web|last=Beijnum|first=Iljitsch van|date=2008-12-02|title=?Torrent's switch to UDP and why the sky isn't falling|url=https://arstechnica.com/uncategorized/2008/12/utorrents-switch-to-udp-and-why-the-sky-isnt-falling/|access-date=2021-05-11|website=Ars Technica|language=en-us}}</ref><ref>{{Cite web|title=uTorrent shifts towards UDP to make it work better|url=https://www.thinkbroadband.com/news/3807-utorrent-shifts-towards-udp-to-make-it-work-better|access-date=2021-05-11|website=www.thinkbroadband.com|date=3 December 2008 }}</ref>
 
The implementation of μTP used in μTorrent was later separated into the "libutp" library and published under the [[MIT license]].<ref>{{cite web |url=http://forum.utorrent.com/viewtopic.php?id=76640 |title=Libutp, an open source implementation of µTP, has now been released (Page 1) / Announcements / µTorrent Community Forums |access-date=2011-01-15 |url-status=dead|archive-url=https://web.archive.org/web/20110123183649/http://forum.utorrent.com/viewtopic.php?id=76640 |archive-date=2011-01-23 }}</ref><ref>{{Citation|title=bittorrent/libutp|date=2021-05-08|url=https://github.com/bittorrent/libutp|publisher=BitTorrent Inc.|access-date=2021-05-11}}</ref>
 
The first [[free software]] client to implement μTP was [[KTorrent]] 4.0.<ref>{{Cite web|title=KTorrent First BitTorrent Client To Adopt Open Source uTP * TorrentFreak|url=https://torrentfreak.com/ktorrent-first-bittorrent-client-to-adopt-open-source-utp-100528/|access-date=2021-05-11|language=en}}</ref><ref>{{Cite web|date=24 May 2010|title=KTorrent 4.0 is out|url=http://ktorrent.pwsp.net/?q=node%2F42|url-status=live|archive-url=https://web.archive.org/web/20150402090740/http://ktorrent.pwsp.net/?q=node%2F42|archive-date=2015-04-02}}</ref> [[libtorrent]] implements μTP since version 0.16.0<ref>{{Cite web|title=Google Code Archive - Long-term storage for Google Code Project Hosting.|url=https://code.google.com/archive/p/libtorrent/downloads|access-date=2021-05-11|website=code.google.com}}</ref> and it is used in [[qBittorrent]] since 2.8.0.<ref>{{Cite web|title=qBittorrent Official Website|url=https://www.qbittorrent.org/news.php|access-date=2021-05-11|website=www.qbittorrent.org}}</ref> [[Tixati]] implements μTP since version 1.72.<ref>{{Cite web|title=Tixati.com - News|url=https://www.tixati.com/news/|access-date=2021-05-11|website=www.tixati.com}}</ref> [[Vuze]] (formerly Azureus) implements μTP since version 4.6.0.0.<ref>{{Cite web|title=Version 4400 4702 Changelog - VuzeWiki|url=https://wiki.vuze.com/w/Version_4400_4702_Changelog|access-date=2021-05-11|website=wiki.vuze.com}}</ref> [[Transmission (BitTorrent client)|Transmission]] implements μTP since version 2.30.<ref>{{Cite web |url=https://trac.transmissionbt.com/wiki/Changes#version-2.30 |title=Changes – Transmission |access-date=2012-07-12 |archive-url=https://web.archive.org/web/20150524013026/https://trac.transmissionbt.com/wiki/Changes#version-2.30 |archive-date=2015-05-24 |url-status=dead }}</ref>
 
==μTP congestion control==
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.<ref>{{Cite web |url=http://searchnetworking.techtarget.com.au/articles/27957-Torrents-of-Disruption-on-the-Way- |title=Technical information about UDP |access-date=2008-12-23 |archive-url=https://web.archive.org/web/20090512123108/http://searchnetworking.techtarget.com.au/articles/27957-Torrents-of-Disruption-on-the-Way- |archive-date=2009-05-12 |url-status=dead }}</ref><ref>{{cite web|url=http://forum.bittorrent.org/viewtopic.php?pid%3D762#p762 |title=Forum.bittorrent.org / A few comments about µTP (BEP-29) |access-date=November 15, 2009 |url-status=dead|archive-url=https://web.archive.org/web/20100301125306/http://forum.bittorrent.org/viewtopic.php?pid=762 |archive-date=March 1, 2010 }}</ref> Additionally, information from the μTP congestion controller can be used to choose the transfer rate of TCP connections.<ref>{{cite web|url=http://forum.utorrent.com/viewtopic.php?pid=377209#p377209 |date=2008-11-26 |title=Post by developer "Greg Hazel" in thread "μTorrent 1.9 alpha" |access-date=2009-03-08 |url-status=dead|archive-url=https://web.archive.org/web/20090208093326/http://forum.utorrent.com/viewtopic.php?pid=377209 |archive-date=February 8, 2009 }}</ref>
 
{{Internet|expanded=Protocols}}
LEDBAT is described in {{IETF RFC|6817}}. As of 2009, the details of the μTP implementation were different from those of the then-current Internet Draft.<ref>{{cite web|url=http://forum.bittorrent.org/viewtopic.php?pid%3D753#p753 |title=Forum.bittorrent.org / A few comments about µTP (BEP-29) |access-date=November 15, 2009 |url-status=dead|archive-url=https://web.archive.org/web/20110725080523/http://forum.bittorrent.org/viewtopic.php?pid=753 |archive-date=July 25, 2011 }}{{Full citation needed|date=December 2014}}</ref>
 
μ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.<ref>{{cite web|url=http://forum.utorrent.com/viewtopic.php?id%3D49813 |title=ΜTorrent 1.9 alpha 15380 (Page 1) / Announcements / µTorrent Community Forums |access-date=December 23, 2012 |url-status=dead|archive-url=https://web.archive.org/web/20130325195455/http://forum.utorrent.com/viewtopic.php?id=49813 |archive-date=March 25, 2013 }}</ref><ref>{{cite web|url=http://forum.utorrent.com/viewtopic.php?pid%3D407732#p407732 |title=Distributed UDP hole punching for the BitTorrent protocol (Page 1) / Protocol Design Discussion / µTorrent Community Forums |access-date=December 23, 2012 |url-status=dead|archive-url=https://web.archive.org/web/20130619125216/http://forum.utorrent.com/viewtopic.php?pid=407732 |archive-date=June 19, 2013 }}</ref>
 
==See also==
* [[µTorrentTCP congestion control]]
* [[Multipurpose Transaction Protocol]] (MTP)
* [[BitTorrent (protocol)|BitTorrent]]
* [[QUIC]]
* [[Real-Time Media Flow Protocol]] (RTMFP)
* [[Stream Control Transmission Protocol]] (SCTP UDP Encapsulation; {{IETF RFC|6951}})
* [[UDP-based Data Transfer Protocol]] (UDT)
 
==References==
{{Reflist|30em}}
 
== External links ==
[[Category:BitTorrent]]
* [http://bittorrent.org/beps/bep_0029.html BitTorrent Enhancement Proposal 29] - μTorrent transport protocol
* [https://users.cs.northwestern.edu/~akuzma/rice/TCP-LP/ TCP Low Priority]
* [http://libswift.org/ swift - the multiparty transport protocol]
 
{{BitTorrent}}
{{File sharing protocols}}
 
[[Category:BitTorrent]]
{{software-stub}}
[[Category:Internet protocols]]
{{internet-stub}}
{{telecom-stub}}