<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-welzl-quantumbug-00" indexInclude="true" ipr="trust200902" number="8774" prepTime="2020-04-01T09:04:15" scripts="Common,Latin" sortRefs="true" submissionType="independent" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-welzl-quantumbug-00" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8774" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="The Quantum Bug">The Quantum Bug</title>
    <seriesInfo name="RFC" value="8774" stream="independent"/>
    <author fullname="Michael Welzl" initials="M." surname="Welzl">
      <organization showOnFrontPage="true">University of Oslo</organization>
      <address>
        <postal>
          <street>PO Box 1080 Blindern</street>
          <code>N-0316</code>
          <city>Oslo</city>
          <region/>
          <country>Norway</country>
        </postal>
        <phone>+47 22 85 24 20</phone>
        <email>michawe@ifi.uio.no</email>
      </address>
    </author>
    <date month="04" year="2020" day="01"/>
    <workgroup>Independent Submission</workgroup>
    <keyword>Teleportation</keyword>
    <keyword>Entanglement</keyword>
    <keyword>0-RTT</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">The age of quantum networking is upon us, and with it comes
"entanglement": a procedure in which a state (i.e., a bit) can be
transferred instantly, with no measurable delay between peers. This will
lead to a perceived round-trip time of zero seconds
on some Internet paths, a capability which was not predicted and so not
included as a possibility in many protocol specifications.
Worse than the millennium bug, this unexpected value is bound to cause
serious Internet failures unless the specifications are fixed in time.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.
        </t>
        <t pn="section-boilerplate.1-2">
            This is a contribution to the RFC Series, independently of any
            other RFC stream.  The RFC Editor has chosen to publish this
            document at its discretion and makes no statement about its value
            for implementation or deployment.  Documents approved for
            publication by the RFC Editor are not candidates for any level of
            Internet Standard; see Section 2 of RFC 7841.
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8774" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-protocols-and-protocol-mech">Protocols and Protocol Mechanisms That Will Fail</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ledbat">LEDBAT</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multipath-tcp-mptcp">Multipath TCP (MPTCP)</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t keepWithNext="true" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rtp-circuit-breakers">RTP Circuit Breakers</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-what-can-be-done">What can be done?</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conclusion">Conclusion</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sec-intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1"><xref target="RFC6921" format="default" sectionFormat="of" derivedContent="RFC6921"/> discusses faster-than-light
      communication, where packets arrive before they are sent. 
      While it is amusing to entertain the possibility of time travel, we have
      to accept the cold facts: time travel will never work (or it would
      already have been used). Quantum networking,
      however, is an entirely different matter -- commercial products are
      already available, and quantum networks will without a doubt become the
      prevalent Internet link-layer technology across the globe within the
      next five to ten years. 
      </t>
      <t pn="section-1-2">With the help of entanglement, implemented in quantum repeaters,
      quantum networks can transfer information faster than ever before: a
      state can be transmitted over a long distance instantly, with no delay.
      This is so cool that it is also called (and, by some, mistaken
      for) teleportation. If a path between a sender and a receiver is fully
      quantum-ized, the measured one-way delay (OWD) will be zero. What's
      more, assuming that there are blazing fast quantum computers involved on
      both ends, the processing time will be well below anything measurable;
      hence, even the round-trip time (RTT) will be zero in these
      scenarios. 
      </t>
      <t pn="section-1-3">In today's Internet, only very few protocols are prepared for such
      "0-RTT" situations (e.g., TCP with "TCP Fast Open" (TFO) <xref target="RFC7413" format="default" sectionFormat="of" derivedContent="RFC7413"/>, TLS 1.3 <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>, and QUIC <xref target="I-D.ietf-quic-transport" format="default" sectionFormat="of" derivedContent="QUIC-TRANS"/>). Many others will fail in interesting ways; we coin
      the term "Quantum Bug" for such failures. In the following section, we
      will discuss some examples of Quantum Bugs. 
      </t>
    </section>
    <section anchor="Problems" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-protocols-and-protocol-mech">Protocols and Protocol Mechanisms That Will Fail</name>
      <t pn="section-2-1">The number of protocols and protocol mechanisms that
                will fail in the face of a zero RTT is too large to
                report here; we are truly
                heading towards something close to an Internet meltdown. We
		can only provide some guidance to those who hunt for the
		Quantum Bug, by discussing examples of specification mistakes
		that will need to be fixed. 
      </t>
      <section anchor="LEDBAT" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-ledbat">LEDBAT</name>
        <t pn="section-2.1-1">The Low Extra Delay Background Transfer (LEDBAT) congestion control
	mechanism <xref target="RFC6817" format="default" sectionFormat="of" derivedContent="RFC6817"/> is a very
	interesting failure case: designed to "get out of the way" of other
	traffic; it will end up sending as fast as possible. Specifically,
	when the algorithm described in <xref target="RFC6817" sectionFormat="of" section="2.4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6817#section-2.4.2" derivedContent="RFC6817"/> obtains a delay
	sample, it updates a list of base delays that will all become 0
	and current delays that will also all become 0. It calculates
	a queuing delay as the difference between the current delay and the
	base delay (resulting in 0) and keeps increasing the Congestion Window
	(cwnd) until the queuing delay reaches a predefined parameter value
	TARGET (100 milliseconds or less). 
        </t>
        <t pn="section-2.1-2">A TARGET value of 100 milliseconds will never be reached, because
	the queuing delay does not grow when the sender increases its cwnd;
	this means that LEDBAT would endlessly increase its cwnd, limited only
	by the number of bits that are used to represent cwnd. However, given
	that TARGET=0 is also allowed, this parameter choice may seem to be a
	way out. Always staying at the target means that the sender would
	maintain its initial cwnd, which should be set to 2. This may seem
	like a small number, but remember that cwnd is the number of bytes
	that can be transmitted per RTT (which is 0). Thus, irrespective of
	the TARGET value, the sender will send data as fast as it can. 
        </t>
      </section>
      <section anchor="TCP-MPTCP" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-multipath-tcp-mptcp">Multipath TCP (MPTCP)</name>
        <t pn="section-2.2-1">The coupled congestion control mechanism proposed for MPTCP in
	<xref target="RFC6356" format="default" sectionFormat="of" derivedContent="RFC6356"/> requires calculating a value
	called "alpha". Equation 2 in <xref target="RFC6356" format="default" sectionFormat="of" derivedContent="RFC6356"/>
        contains a term where a value called "cwnd_i" is divided by the square
        of the RTT, and another term where this value is divided by the
        RTT. Enough said.</t>
      </section>
      <section anchor="CircuitBreakers" numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-rtp-circuit-breakers">RTP Circuit Breakers</name>
        <t pn="section-2.3-1">The RTP Circuit Breakers <xref target="RFC8083" format="default" sectionFormat="of" derivedContent="RFC8083"/>
	require calculation of a well-known equation which yields the
	throughput of a TCP connection: 
        </t>
        <artwork name="" type="" align="left" alt="" pn="section-2.3-2">
                          s
X = -------------------------------------------------------------
  Tr*sqrt(2*b*p/3)+(t_RTO * (3*sqrt(3*b*p/8) * p * (1+32*p*p)))</artwork>
        <t pn="section-2.3-3">
            where Tr is the RTT and t_RTO is the retransmission timeout of TCP
	    (we don't need to care about the other variables). As we will
	    discuss in <xref target="Solution" format="default" sectionFormat="of" derivedContent="Section 3"/>, t_RTO is
	    lower-bounded with 1 second; therefore, it saves us from a
	    division by zero. However, there is also a simplified version
	    of this equation: 
        </t>
        <artwork name="" type="" align="left" alt="" pn="section-2.3-4">
          s
X = ----------------
    Tr*sqrt(2*b*p/3)</artwork>
        <t pn="section-2.3-5">Unfortunately, <xref target="RFC8083" format="default" sectionFormat="of" derivedContent="RFC8083"/> states:
	"It is RECOMMENDED that this simplified throughput equation be used 
        since the reduction in accuracy is small, and it is much simpler to
        calculate than the full equation." Due to this simplification, many 
        multimedia applications will crash.</t>
      </section>
    </section>
    <section anchor="Solution" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-what-can-be-done">What can be done?</name>
      <t pn="section-3-1">Fear not: when everything else fails, TCP will still work.
      Its retransmission timeout is lower-bounded by 1 second <xref target="RFC6298" format="default" sectionFormat="of" derivedContent="RFC6298"/>. Moreover, while its cwnd may grow up to the maximum storable number, data
      transmission is limited by the Receiver Window (rwnd). This means that
      flow control will save TCP from failing.</t>
      <t pn="section-3-2">From this, we can learn two simple rules: lower-bound any values
      calculated from the RTT (and, obviously, do not divide by the RTT), and
      use flow control. Specifications will need to be updated by fixing all
      RTT-based calculations and introducing flow control everywhere. For example,
      UDP will have to be extended with a receiver window, e.g., as a UDP
      option <xref target="I-D.ietf-tsvwg-udp-options" format="default" sectionFormat="of" derivedContent="UDP-OPT"/>.</t>
    </section>
    <section anchor="conclusion" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-conclusion">Conclusion</name>
      <t pn="section-4-1">We are in trouble, and there is only one way out: develop a
      comprehensive list of all RFCs containing "0-RTT" mistakes (taking <xref target="RFC2626" format="default" sectionFormat="of" derivedContent="RFC2626"/> as a guideline), and update all
      code. This needs to happen fast, the clock is ticking. Luckily, if we
      are too slow, we will still be able to use TCP to access the
      specifications. With DNS over TCP <xref target="RFC7766" format="default" sectionFormat="of" derivedContent="RFC7766"/>, name resolution to find the server containing the
      specifications should also work.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t pn="section-5-1">This document has no IANA actions.</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-6-1">Flow control must be used on 0-RTT paths, or else an
            attacker can completely overwhelm a sender with data
            in a denial-of-service (DoS) attack within an instant.
            Flow control will need to be added to protocols that do
            not currently have it, such as UDP or ICMP.
                IPv6 will not save us.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-quic-transport" to="QUIC-TRANS"/>
    <displayreference target="I-D.ietf-tsvwg-udp-options" to="UDP-OPT"/>
    <references pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2626" target="https://www.rfc-editor.org/info/rfc2626" quoteTitle="true" derivedAnchor="RFC2626">
          <front>
            <title>The Internet and the Millennium Problem (Year 2000)</title>
            <author initials="P." surname="Nesser II" fullname="P. Nesser II">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1999" month="June"/>
            <abstract>
              <t>The Year 2000 Working Group (WG) has conducted an investigation into the millennium problem as it regards Internet related protocols.  This investigation only targeted the protocols as documented in the Request For Comments Series (RFCs).  This investigation discovered little reason for concern with regards to the functionality of the protocols.  A few minor cases of older implementations still using two digit years (ala RFC 850) were discovered, but almost all Internet protocols were given a clean bill of health.  Several cases of "period" problems were discovered, where a time field would "roll over" as the size of field was reached.  In particular, there are several protocols, which have 32 bit, signed integer representations of the number of seconds since January 1, 1970 which will turn negative at Tue Jan 19 03:14:07 GMT 2038.  Areas whose protocols will be effected by such problems have been notified so that new revisions will remove this limitation.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2626"/>
          <seriesInfo name="DOI" value="10.17487/RFC2626"/>
        </reference>
        <reference anchor="RFC6921" target="https://www.rfc-editor.org/info/rfc6921" quoteTitle="true" derivedAnchor="RFC6921">
          <front>
            <title>Design Considerations for Faster-Than-Light (FTL) Communication</title>
            <author initials="R." surname="Hinden" fullname="R. Hinden">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="April"/>
            <abstract>
              <t>We are approaching the time when we will be able to communicate faster than the speed of light.  It is well known that as we approach the speed of light, time slows down.  Logically, it is reasonable to assume that as we go faster than the speed of light, time will reverse.  The major consequence of this for Internet protocols is that packets will arrive before they are sent.  This will have a major impact on the way we design Internet protocols.  This paper outlines some of the issues and suggests some directions for additional analysis of these issues.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6921"/>
          <seriesInfo name="DOI" value="10.17487/RFC6921"/>
        </reference>
      </references>
      <references pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-quic-transport" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-quic-transport-27" derivedAnchor="QUIC-TRANS">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author initials="J" surname="Iyengar" fullname="Jana Iyengar">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Thomson" fullname="Martin Thomson">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="February" day="21" year="2020"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. Accompanying documents describe QUIC's loss detection and congestion control and the use of TLS for key negotiation.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org), which is archived at &lt;https://mailarchive.ietf.org/arch/search/?email_list=quic&gt;.  Working Group information can be found at &lt;https://github.com/ quicwg&gt;; source code and issues list for this draft can be found at &lt;https://github.com/quicwg/base-drafts/labels/-transport&gt;.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-27"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-27.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC6298" target="https://www.rfc-editor.org/info/rfc6298" quoteTitle="true" derivedAnchor="RFC6298">
          <front>
            <title>Computing TCP's Retransmission Timer</title>
            <author initials="V." surname="Paxson" fullname="V. Paxson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Allman" fullname="M. Allman">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Chu" fullname="J. Chu">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Sargent" fullname="M. Sargent">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="June"/>
            <abstract>
              <t>This document defines the standard algorithm that Transmission Control Protocol (TCP) senders are required to use to compute and manage their retransmission timer.  It expands on the discussion in Section 4.2.3.1 of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHOULD to a MUST.  This document obsoletes RFC 2988.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6298"/>
          <seriesInfo name="DOI" value="10.17487/RFC6298"/>
        </reference>
        <reference anchor="RFC6356" target="https://www.rfc-editor.org/info/rfc6356" quoteTitle="true" derivedAnchor="RFC6356">
          <front>
            <title>Coupled Congestion Control for Multipath Transport Protocols</title>
            <author initials="C." surname="Raiciu" fullname="C. Raiciu">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Wischik" fullname="D. Wischik">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="October"/>
            <abstract>
              <t>Often endpoints are connected by multiple paths, but communications are usually restricted to a single path per connection.  Resource usage within the network would be more efficient were it possible for these multiple paths to be used concurrently.  Multipath TCP is a proposal to achieve multipath transport in TCP.</t>
              <t>New congestion control algorithms are needed for multipath transport protocols such as Multipath TCP, as single path algorithms have a series of issues in the multipath context.  One of the prominent problems is that running existing algorithms such as standard TCP independently on each path would give the multipath flow more than its fair share at a bottleneck link traversed by more than one of its subflows.  Further, it is desirable that a source with multiple paths available will transfer more traffic using the least congested of the paths, achieving a property called "resource pooling" where a bundle of links effectively behaves like one shared link with bigger capacity.  This would increase the overall efficiency of the network and also its robustness to failure.</t>
              <t>This document presents a congestion control algorithm that couples the congestion control algorithms running on different subflows by linking their increase functions, and dynamically controls the overall aggressiveness of the multipath flow.  The result is a practical algorithm that is fair to TCP at bottlenecks while moving traffic away from congested links.  This document defines an Experimental  Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6356"/>
          <seriesInfo name="DOI" value="10.17487/RFC6356"/>
        </reference>
        <reference anchor="RFC6817" target="https://www.rfc-editor.org/info/rfc6817" quoteTitle="true" derivedAnchor="RFC6817">
          <front>
            <title>Low Extra Delay Background Transport (LEDBAT)</title>
            <author initials="S." surname="Shalunov" fullname="S. Shalunov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Hazel" fullname="G. Hazel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Iyengar" fullname="J. Iyengar">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Kuehlewind" fullname="M. Kuehlewind">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="December"/>
            <abstract>
              <t>Low Extra Delay Background Transport (LEDBAT) is an experimental delay-based congestion control algorithm that seeks to utilize the available bandwidth on an end-to-end path while limiting the consequent increase in queueing delay on that path.  LEDBAT uses changes in one-way delay measurements to limit congestion that the flow itself induces in the network.  LEDBAT is designed for use by background bulk-transfer applications to be no more aggressive than standard TCP congestion control (as specified in RFC 5681) and to yield in the presence of competing flows, thus limiting interference with the network performance of competing flows.  This document defines  an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6817"/>
          <seriesInfo name="DOI" value="10.17487/RFC6817"/>
        </reference>
        <reference anchor="RFC7413" target="https://www.rfc-editor.org/info/rfc7413" quoteTitle="true" derivedAnchor="RFC7413">
          <front>
            <title>TCP Fast Open</title>
            <author initials="Y." surname="Cheng" fullname="Y. Cheng">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Chu" fullname="J. Chu">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Radhakrishnan" fullname="S. Radhakrishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Jain" fullname="A. Jain">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="December"/>
            <abstract>
              <t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO).  TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged.  However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.  Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7413"/>
          <seriesInfo name="DOI" value="10.17487/RFC7413"/>
        </reference>
        <reference anchor="RFC7766" target="https://www.rfc-editor.org/info/rfc7766" quoteTitle="true" derivedAnchor="RFC7766">
          <front>
            <title>DNS Transport over TCP - Implementation Requirements</title>
            <author initials="J." surname="Dickinson" fullname="J. Dickinson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Dickinson" fullname="S. Dickinson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Bellis" fullname="R. Bellis">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Mankin" fullname="A. Mankin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Wessels" fullname="D. Wessels">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="March"/>
            <abstract>
              <t>This document specifies the requirement for support of TCP as a transport protocol for DNS implementations and provides guidelines towards DNS-over-TCP performance on par with that of DNS-over-UDP. This document obsoletes RFC 5966 and therefore updates RFC 1035 and RFC 1123.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7766"/>
          <seriesInfo name="DOI" value="10.17487/RFC7766"/>
        </reference>
        <reference anchor="RFC8083" target="https://www.rfc-editor.org/info/rfc8083" quoteTitle="true" derivedAnchor="RFC8083">
          <front>
            <title>Multimedia Congestion Control: Circuit Breakers for Unicast RTP Sessions</title>
            <author initials="C." surname="Perkins" fullname="C. Perkins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Singh" fullname="V. Singh">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="March"/>
            <abstract>
              <t>The Real-time Transport Protocol (RTP) is widely used in telephony, video conferencing, and telepresence applications.  Such applications are often run on best-effort UDP/IP networks.  If congestion control is not implemented in these applications, then network congestion can lead to uncontrolled packet loss and a resulting deterioration of the user's multimedia experience.  The congestion control algorithm acts as a safety measure by stopping RTP flows from using excessive resources and protecting the network from overload.  At the time of this writing, however, while there are several proprietary solutions, there is no standard algorithm for congestion control of interactive RTP flows.</t>
              <t>This document does not propose a congestion control algorithm.  It instead defines a minimal set of RTP circuit breakers: conditions under which an RTP sender needs to stop transmitting media data to protect the network from excessive congestion.  It is expected that, in the absence of long-lived excessive congestion, RTP applications running on best-effort IP networks will be able to operate without triggering these circuit breakers.  To avoid triggering the RTP circuit breaker, any Standards Track congestion control algorithms defined for RTP will need to operate within the envelope set by these RTP circuit breaker algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8083"/>
          <seriesInfo name="DOI" value="10.17487/RFC8083"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="I-D.ietf-tsvwg-udp-options" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-tsvwg-udp-options-08" derivedAnchor="UDP-OPT">
          <front>
            <title>Transport Options for UDP</title>
            <author initials="J" surname="Touch" fullname="Joseph Touch">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="September" day="12" year="2019"/>
            <abstract>
              <t>Transport protocols are extended through the use of transport header options. This document extends UDP by indicating the location, syntax, and semantics for UDP transport layer options.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-udp-options-08"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-udp-options-08.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Michael Welzl" initials="M." surname="Welzl">
        <organization showOnFrontPage="true">University of Oslo</organization>
        <address>
          <postal>
            <street>PO Box 1080 Blindern</street>
            <code>N-0316</code>
            <city>Oslo</city>
            <region/>
            <country>Norway</country>
          </postal>
          <phone>+47 22 85 24 20</phone>
          <email>michawe@ifi.uio.no</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
