Micro Transport Protocol: Difference between revisions

Content deleted Content added
mNo edit summary
Citation bot (talk | contribs)
Added date. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Internet protocols | #UCB_Category 84/248
 
(168 intermediate revisions by 100 users not shown)
Line 1:
{{Short description|Peer-to-peer file-sharing protocol}}
'''Micro Transport Protocol''' or '''µTP''' is a [[Protocol (computing)|protocol]] used by the [[µTorrent]] implementation of the [[BitTorrent (protocol)|bittorrent protocol]] to communicate across the internet.
{{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 increaseautomatically theslow speeddown<ref>{{Citationcite neededweb|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 [[torrentsBitTorrent|torrent]]s when it interferes with other applications. For example, whichthe allowsprotocol individualsshould toautomatically shareallow filesthe sharing of anya kind[[Digital withsubscriber groupsline|DSL ofline]] otherbetween usersa BitTorrent application and a web browser.
 
As it is difficult for some people to type the [[Greek alphabet|Greek]] letter ''mu'', µTP is often written uTP.
 
==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>
Based upon the [[User Datagram Protocol]] (UDP), '''µTP''' aims to decrease latency caused by applications using the protocol while maximizing bandwidth when latency is not excessive<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"
| accessdate = 2009-03-08}}</ref>. Information from the transport can be 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>
 
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>
µTP was first publicly introduced in the alpha builds of [[µTorrent]] 1.9, though partial support for the protocol was already implemented in the µTorrent 1.8.x Beta branches.<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>
 
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>
Because it is still being implemented, µTP protocol features are typically hidden or made obscure in the client user interfaces of the BitTorrent clients that support it. There is no open source µTP protocol codebase at this time, making this feature's support with other BitTorrent clients much less uniform. It may take until late 2010 or early 2011 until this feature is readily accessible with a user friendly interface.
 
==μ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]]
* [http://bittorrent.org/beps/bep_0029.html BitTorrent Enhancement Proposal 29] - µTorrent transport protocol
* [[Real-Time Media Flow Protocol]] (RTMFP)
* [[TCP congestion avoidance algorithm]]
* [[Stream Control Transmission Protocol]] (SCTP UDP Encapsulation; {{IETF RFC|6951}})
* [http://www.ece.rice.edu/networks/TCP-LP/ TCP-LP]
* [[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μTorrent transport protocol
* [https://users.cs.northwestern.edu/~akuzma/rice/TCP-LP/ TCP Low Priority]
* [http://libswift.org/ swift - the multiparty transport protocol]
 
{{BitTorrent}}
[[es:Micro Transport Protocol]]
{{File sharing protocols}}
{{software-stub}}
 
{{internet-stub}}
[[Category:BitTorrent]]
{{telecom-stub}}
[[Category:Internet protocols]]