<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.2 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-tiesel-taps-socketintents-00" category="exp">

  <front>
    <title abbrev="SocketIntents">Socket Intents</title>

    <author initials="P.S." surname="Tiesel" fullname="Philipp S. Tiesel">
      <organization>Berlin Institute of Technology</organization>
      <address>
        <postal>
          <street>Marchstr. 23</street>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>philipp@inet.tu-berlin.de</email>
      </address>
    </author>
    <author initials="T." surname="Enghardt" fullname="Theresa Enghardt">
      <organization>Berlin Institute of Technology</organization>
      <address>
        <postal>
          <street>Marchstr. 23</street>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>theresa@inet.tu-berlin.de</email>
      </address>
    </author>

    <date year="2017" month="June" day="15"/>

    <area>General</area>
    <workgroup>TAPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document outlines an API-independent concept that allows
applications to share their knowledge about upcoming communication and
express their performance preferences in a portable and abstract way:
Socket Intents.
Socket Intents express what an application knows, assumes, expects or wants to
prioritize regarding its own network communication.
The information provided by Socket Intents should be taken into account
by the network stack in a best-effort way.</t>

<t>Socket Intent can be used to stem against the complexity and make
use of multiple provisioning domains as well as new transport protocols
and features available to a larger user base by expressing the
applications intents in an abstract and portable way.</t>



    </abstract>


  </front>

  <middle>


<section anchor="conventions-and-definitions" title="Conventions and Definitions">

<t>The words “MUST”, “MUST NOT”, “SHALL”, “SHALL NOT”, “SHOULD”, and
“MAY” are used in this document. It’s not shouting; when these
words are capitalized, they have a special meaning as defined
in <xref target="RFC2119"/>.</t>

<t>Flow, Association, Stream, or Object are used as defined in <xref target="I-D.tiesel-taps-communitgrany"/>:</t>

</section>
<section anchor="intro" title="Introduction">

<t>Despite recent advances in the transport area, the adaption of new
transport protocols and transport protocol features is slow and only
happens in limited domains (primarily in the Web browser and within
datacenters).
The same problem occurs for taking advantage of multiple available access
networks or provisioning domains (PvDs).
In both cases, the benefits of the new transport diversity comes at
the cost of an increased complexity that has to be mastered by the
application programmer.</t>

<t>Enabling features like TCP fast open <xref target="RFC7413"/> or controlling how
MPTCP <xref target="RFC6824"/> creates subflows requires specialized APIs
that are not part of the standard socket API, often require deep
knowledge of the transport protocol internals, and are not portable
across different implementations.</t>

<t>Applications that want to use multiple network interfaces usually have to use
their own heuristics to select which access network to use.
Choosing the right interface is difficult as their characteristics
differ, e.g. in terms of performance, and obtaining the necessary
information is often not easy since it may require special privileges
and differs heavily by implementation.</t>

<t>In all cases mentioned above, an application that wants to take
advantage of the available transport diversity is faced with
substantially higher complexity regarding network APIs and
networking code.</t>

</section>
<section anchor="problem-statement" title="Problem Statement">

<t>Application programmers opening a communication channel typically know
how this channel will be used. Beside the hard requirements already
necessary for establishing the communication channels, e.g., reliable
in-order stream transport, there is more information available: An
application developer has an intuition about optimization preferences,
e.g., optimize for bandwidth, latency, or cost, about expectations, e.g.
towards data loss, and possibly also about specifics, such as how many bytes
will be sent or received.</t>

<t>This information does not directly map to the choice of a transport
protocol, to certain protocol parameters, nor to which PvD to use, but the
information can imply that the application can benefit from certain
transport options or help to choose between multiple PvD as described
in <xref target="RFC7556"/>, Section 6.2, and therefore enable the OS to adjust its
defaults for this communication channel accordingly.</t>

<t>The preferences, expectations and other information known about the
upcoming communication MAY be expressible in an intuitive, abstract
way independent of the network- and transport protocol.
Its representation SHOULD be independent of the actual API used for
network communication, e.g., these SHOULD be expressible
in whatever API available, e.g., as “socketopts” for BSD sockets or
as part of the address resolution configuration for
<xref target="I-D.trammell-taps-post-sockets">Post Sockets</xref>.
Finally, given the expectations and external constraints known, the OS
SHOULD use the information provided via Socket Intents in an best-effort
fashion and therefore try to choose the best transport protocol, default
parameters and PvDs available and MAY try to further optimize based on them.</t>

</section>
<section anchor="concept" title="General Concept">

<t>With Socket Intents, applications MAY express their communication
preferences in order to take advantage of the available transfer
diversity.
Depending on the API used, Socket Intents can be used on a per
Flow, Association, Stream, or Object level.
Communication preference refers to desired transport characteristics,
e.g., low delay or high throughput, stable transport or minimal cost,
and is optional information.</t>

<section anchor="typespec" title="Socket Intent Types">

<t>The following sections contain a list or Socket Intent types and
their possible values.</t>

<t>Socket Intents are structured as key / value pair. The key is expressed by a short name, the value has a fixed data type (Enum, Int or Float).</t>

<t>The namespace for the short names is portioned as follows:
- Experimental Socket Intent type MUST start with “x-“.
- Private or vendor specific Socket Intent type MUST start with “y-[vendor]-“.
- The remming Socket Intent type namespace SHOULD be managed by
  an IANA registry. The assignment of new types requires an RFC or expert review.</t>

<t>For Enum data types, a list of valid values MUST be provides by the document specifying that intent.</t>

<t>An implementation faced with unknown intent types or invalid or
unknown values MAY ignore that Intent but SHOULD return an error code to the application.</t>

</section>
<section anchor="interactions-between-socket-intents-and-qos" title="Interactions between Socket Intents and QoS">
<t>Socket Intents are not QoS labels, but have an orthogonal meaning.</t>

<t><list style="symbols">
  <t>Socket Intents SHALL be purely advisory.</t>
  <t>Socket Intents MUST NOT be used to derive IntServ / RSVP style guarantees.</t>
  <t>Socket Intents SHOULD be taken into account on a best-effort basis and MAY be used to derive DiffServ Service Classes as described in <xref target="RFC4594"/>.</t>
</list></t>

</section>
</section>
<section anchor="types" title="Initial Socket Intent Types">

<t><list style="hanging">
  <t hangText='Note:'>
  Recommended default values for Enum types are marked with an asterisk (*) behind the level name.</t>
</list></t>

<section anchor="traffic-category" title="Traffic Category">

<t>The Traffic Category describes the dominating traffic pattern of the
respective communication unit expected by the application.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  category</t>
  <t hangText='Applicability:'>
  Flow, Association, Stream</t>
  <t hangText='Data type:'>
  Enum</t>
</list></t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>query</c>
      <c>Single request / response style workload, latency bound</c>
      <c>control</c>
      <c>Long lasting low bandwidth control channel, not bandwidth bound</c>
      <c>stream</c>
      <c>Stream of bytes/objects with steady data rate</c>
      <c>bulk</c>
      <c>Bulk transfer of large objects, presumably bandwidth bound</c>
      <c>mixed*</c>
      <c>Don’t know or none of the above</c>
</texttable>

<t><list style="hanging">
  <t hangText='Note:'>
  Most categories suggest the use of other intents to further describe the traffic pattern anticipated, e.g., the bulk category suggesting the use of the Object Size intents or the stream category suggesting the
Stream Bitrate and Duration intents.</t>
</list></t>

</section>
<section anchor="object-size-to-be-sent-received" title="Object Size to be Sent / Received">

<t>This Intent is used to communicate the expected size of a transfer.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  sndobjsz / recvobjsz</t>
  <t hangText='Applicability:'>
  Flow, Association, Stream, Object</t>
  <t hangText='Data type:'>
  Int (bytes)</t>
</list></t>

</section>
<section anchor="duration" title="Duration">

<t>This Intent is used to communicate the expected lifetime of the
respective communication unit.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  duration</t>
  <t hangText='Applicability:'>
  Flow, Association, Stream</t>
  <t hangText='Data type:'>
  Int (msec)</t>
</list></t>

</section>
<section anchor="stream-bitrate-sent-received" title="Stream Bitrate Sent / Received">

<t>This Intent is used to communicate the bitrate of the respective
communication unit.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  sndrate / recvrate</t>
  <t hangText='Applicability:'>
  Flow, Association, Stream</t>
  <t hangText='Data type:'>
  Int (bytes/sec)</t>
</list></t>

</section>
<section anchor="burstiness" title="Burstiness">

<t>This Intent describes the anticipated sender-side burst characteristics of the
traffic for this communication unit. It expresses how the traffic sent by the
application is expected to vary over time, and, consequently, how long
sequences of consecutively sent packets will be.
Note that the actual burst characteristics of the traffic at the receiver
side will depend on the network.</t>

<t>This Intent can provide hints to the application on what the resource usage
pattern for this communication unit will look like, which can be useful for
balancing the requirements of different application.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  burst</t>
  <t hangText='Applicability:'>
  Association,  Connection, Stream</t>
  <t hangText='Data type:'>
  Enum</t>
</list></t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>no_bursts</c>
      <c>Application sends traffic at a constant rate</c>
      <c>regular_bursts</c>
      <c>Application sends bursts of traffic periodically</c>
      <c>random_bursts</c>
      <c>Application sends bursts of traffic irregularly</c>
      <c>bulk</c>
      <c>Application sends a bulk of traffic</c>
      <c>mixed*</c>
      <c>Don’t know or none of the above</c>
</texttable>

</section>
<section anchor="timeliness" title="Timeliness">

<t>This Intent describes the desired delay characteristics for this communication unit.
It provides hints for the OS whether to optimize for low delay or for other criteria.
There are no hard requirements or implied guarantees on whether these requirements can
actually be satisfied.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  timeliness</t>
  <t hangText='Applicability:'>
  Association,  Connection, Stream, Object</t>
  <t hangText='Data type:'>
  Enum</t>
</list></t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>stream</c>
      <c>Delay and packet delay variation should be kept as low as possible</c>
      <c>interactive</c>
      <c>Delay should be kept as low as possible, but some variation is tolerable</c>
      <c>transfer*</c>
      <c>Delay and packet delay variation should be reasonable, but are not critical</c>
      <c>background</c>
      <c>Delay and packet delay variation is no concern</c>
</texttable>

</section>
<section anchor="application-resilience" title="Application Resilience">

<t>This Intent describes how an application deals with disruption of its communication,
e.g. connection loss. It communicates how well the application can recover from such
disturbance and can have implications on how many resources the OS should allocate to
failover techniques for this particular communication unit.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  resilience</t>
  <t hangText='Applicability:'>
  Association,  Connection, Stream, Object</t>
  <t hangText='Data type:'>
  Enum</t>
</list></t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>sensitive*</c>
      <c>Disruptions result in application failure, disrupting user experience</c>
      <c>recoverable</c>
      <c>Disruptions are inconvenient for the application, but can be recovered from</c>
      <c>resilient</c>
      <c>Disruptions have minimal impact for the application</c>
</texttable>

</section>
<section anchor="cost-preferences" title="Cost Preferences">

<t>This describes the Intents of an Application towards costs cased by
the respective communication unit. It should guide the OS how to
handle cost vs. performance and reliability tradeoffs.</t>

<t><list style="hanging">
  <t hangText='Short name:'>
  cost</t>
  <t hangText='Applicability:'>
  Association,  Connection, Stream, Object</t>
  <t hangText='Data type:'>
  Enum</t>
</list></t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>no_expense</c>
      <c>Avoid expensive transports and consider failing otherwise</c>
      <c>optimize_cost</c>
      <c>Prefer inexpensive transports and accept service degradation</c>
      <c>balance_cost*</c>
      <c>Use system policy to balance cost and other criteria</c>
      <c>ignore_cost</c>
      <c>Ignore cost, choose transport solely based on other criteria</c>
</texttable>

</section>
</section>
<section anchor="usage-examples" title="Usage examples">

<section anchor="example-1" title="Example 1">

<t>Consider a cellphone performing an OS upgrade.
This process usually implies downloading a large file.
This is a bulk transfer for which the application may already know
the file size.
Timing is typically noncritical and the data can be downloaded as
background traffic with minimal cost and power overhead.
It would not hurt if the TCP connection was closed during the
transfer as the download can be continued.</t>

<t>For this case, the application should set the “Traffic Category”
to “bulk”, “Timeliness” to “background”, and “Application Resilience”
to “resilient”.
In addition, “Object Size to be Received” can be provided.
Finally, the application may set the the “Cost Preferences” to “no_expense”.</t>

<t>The OS can use this information and therefore may schedule this
transfer on a flaky but not traffic-billed WiFi link and may reject
the connection attempt if no cheap access link is available.</t>

</section>
<section anchor="example-2" title="Example 2">

<t>Consider a user watching non-live video content using MPEG-DASH <xref target="DASH"/>.
This usually means fetching a stream of video chunks.
The application should know the size of each chunk and may know
the bitrate and the duration of each chunk and the whole video.
Disconnection of the TCP connection should be avoided
because that might have an effect that is visible to the user.</t>

<t>For this case, the application should set the “Traffic Category” to 
“stream”, the “Timeliness” to “stream”, and “Application Resilience”
to “sensitive”. It may also provide the “Stream Bitrate Received”
and “Duration” expected.
Finally, the application may set the the “Cost Preferences” to 
“balance_cost”.</t>

<t>The OS can use this information and, e.g, use MPTCP <xref target="RFC6824"/> if
available to schedule the traffic on the cheaper link (e.g, WiFi)
while establishing an additional subflow over an expensive link
(e.g., LTE).
If the desired bandwidth cannot be matched by the cheaper link, the
more expensive link can be added to satisfy the desired bandwidth.</t>

<t>If the application would set the “Cost Preferences” to
“optimize_cost”, the OS would not schedule traffic on the second
subflow and the application would reduce the video quality to
adapt to the available data rate.</t>

</section>
<section anchor="example-3" title="Example 3">
<t>Consider a user managing a remote machine via SSH.
This usually involves at least one long-lived console session and 
possibly file transfers using SCP or rsync multiplexed on the same 
association (e.g. TCP connection).</t>

<t>For the console session, the application can set the “Traffic Category”
to “control”, the “Burstiness” to “random bursts”, the timeliness to 
“interactive” and the resilience to “sensitive”.</t>

<t>For the file transfers, SSH may set both, the “Traffic Category” and
“Burstiness” to “bulk”. It may also know the size of the transfer
and therefore sets “Object Size to be Sent” or “Object Size to be
Received”.</t>

<t>Assuming there are transport opportunities supporting multiple
streams in a single association (e.g. SCPT <xref target="RFC4960"/>),
the OS can use this information to schedule the streams
over different links to meet their requirements (latency vs. bandwidth).
In case the OS has to use TCP, it can still optimize by disabling 
TCP Nagle Algorithm for console session related transmissions.</t>

</section>
</section>
<section anchor="implementation-guidelines" title="Implementation Guidelines">

<t>TBD</t>

</section>
<section anchor="sec" title="Security Considerations">

<section anchor="performance-degradation-attacks" title="Performance Degradation Attacks">

<t>We assume that applications specify their preferences in a selfish, but
not malicious way and that it is up to the OS to find a compromise
between demands.</t>

<t>A malicious application could confuse the OS in a way that leads to scheduling traffic with certain Intents on amore expensive interface, 
penalizing this traffic, or even rejecting it.
The attack vector added by this is negligible:
As the malicious application could also generate the traffic it claims 
to intent, it already has a much more powerful attack vector.</t>

<t>As a mitigation, the OS could monitor and compare the intents specified 
with the traffic actually generated and notify the user if the usage
of Socket Intents is unusual or defective.</t>

</section>
<section anchor="information-leakage" title="Information Leakage">

<t>Varying the transport or IP layer parameters of packets belonging to 
different Streams or Objects multiplexed in the same encrypted 
association might enable an attacker to gain some ground truth
about the shares of different kinds of traffic. As this might also
be implied by packet timings, application developers might weight the
small additional information disclosure against the possible 
performance gains. Using Socket Intents on Association level can be 
considered safe.</t>

</section>
</section>
<section anchor="iana" title="IANA Considerations">

<t>The Socket Intents type namespace SHOULD be managed by the IANA
registry. Details conforming to <xref target="RFC5226"/> are laid out in
<xref target="typespec"/>, the initial types for the registry are described in
<xref target="types"/>.</t>

</section>
<section anchor="publications-history" title="Publications History">

<t><list style="symbols">
  <t>The original idea of Socket Intents was published in <xref target="CoNEXT2013"/>.</t>
  <t>A performance study “Socket Intents: OS Support for Using Multiple Access Networks and its Benefits for Web Browsing” is under submission.</t>
</list></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC5226" target='http://www.rfc-editor.org/info/rfc5226'>
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author initials='T.' surname='Narten' fullname='T. Narten'><organization /></author>
<author initials='H.' surname='Alvestrand' fullname='H. Alvestrand'><organization /></author>
<date year='2008' month='May' />
<abstract><t>Many protocols make use of identifiers consisting of constants and other well-known values.  Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec).  To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority.  For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t><t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made.  If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role.  This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t><t>This document obsoletes RFC 2434.  This document specifies an Internet Best  Current Practices for the Internet Community, and requests discussion and  suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='26'/>
<seriesInfo name='RFC' value='5226'/>
<seriesInfo name='DOI' value='10.17487/RFC5226'/>
</reference>



<reference  anchor="RFC2119" target='http://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC4594" target='http://www.rfc-editor.org/info/rfc4594'>
<front>
<title>Configuration Guidelines for DiffServ Service Classes</title>
<author initials='J.' surname='Babiarz' fullname='J. Babiarz'><organization /></author>
<author initials='K.' surname='Chan' fullname='K. Chan'><organization /></author>
<author initials='F.' surname='Baker' fullname='F. Baker'><organization /></author>
<date year='2006' month='August' />
<abstract><t>This document describes service classes configured with Diffserv and recommends how they can be used and how to construct them using Differentiated Services Code Points (DSCPs), traffic conditioners, Per-Hop Behaviors (PHBs), and Active Queue Management (AQM) mechanisms.  There is no intrinsic requirement that particular DSCPs, traffic conditioners, PHBs, and AQM be used for a certain service class, but as a policy and for interoperability it is useful to apply them consistently.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='4594'/>
<seriesInfo name='DOI' value='10.17487/RFC4594'/>
</reference>



<reference  anchor="RFC4960" target='http://www.rfc-editor.org/info/rfc4960'>
<front>
<title>Stream Control Transmission Protocol</title>
<author initials='R.' surname='Stewart' fullname='R. Stewart' role='editor'><organization /></author>
<date year='2007' month='September' />
<abstract><t>This document obsoletes RFC 2960 and RFC 3309.  It describes the Stream Control Transmission Protocol (SCTP).  SCTP is designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks, but is capable of broader applications.</t><t>SCTP is a reliable transport protocol operating on top of a connectionless packet network such as IP.  It offers the following services to its users:</t><t>--  acknowledged error-free non-duplicated transfer of user data,</t><t>--  data fragmentation to conform to discovered path MTU size,</t><t>--  sequenced delivery of user messages within multiple streams, with an option for order-of-arrival delivery of individual user messages,</t><t>--  optional bundling of multiple user messages into a single SCTP packet, and</t><t>--  network-level fault tolerance through supporting of multi-homing at either or both ends of an association.</t><t> The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4960'/>
<seriesInfo name='DOI' value='10.17487/RFC4960'/>
</reference>



<reference  anchor="RFC6824" target='http://www.rfc-editor.org/info/rfc6824'>
<front>
<title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
<author initials='A.' surname='Ford' fullname='A. Ford'><organization /></author>
<author initials='C.' surname='Raiciu' fullname='C. Raiciu'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<author initials='O.' surname='Bonaventure' fullname='O. Bonaventure'><organization /></author>
<date year='2013' month='January' />
<abstract><t>TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers.  The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and, thus, improve user experience through higher throughput and improved resilience to network failure.</t><t>Multipath TCP provides the ability to simultaneously use multiple paths between peers.  This document presents a set of extensions to traditional TCP to support multipath operation.  The protocol offers the same type of service to applications as TCP (i.e., reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.  This  document defines an Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='6824'/>
<seriesInfo name='DOI' value='10.17487/RFC6824'/>
</reference>



<reference  anchor="RFC7413" target='http://www.rfc-editor.org/info/rfc7413'>
<front>
<title>TCP Fast Open</title>
<author initials='Y.' surname='Cheng' fullname='Y. Cheng'><organization /></author>
<author initials='J.' surname='Chu' fullname='J. Chu'><organization /></author>
<author initials='S.' surname='Radhakrishnan' fullname='S. Radhakrishnan'><organization /></author>
<author initials='A.' surname='Jain' fullname='A. Jain'><organization /></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="RFC7556" target='http://www.rfc-editor.org/info/rfc7556'>
<front>
<title>Multiple Provisioning Domain Architecture</title>
<author initials='D.' surname='Anipko' fullname='D. Anipko' role='editor'><organization /></author>
<date year='2015' month='June' />
<abstract><t>This document is a product of the work of the Multiple Interfaces Architecture Design team.  It outlines a solution framework for some of the issues experienced by nodes that can be attached to multiple networks simultaneously.  The framework defines the concept of a Provisioning Domain (PvD), which is a consistent set of network configuration information.  PvD-aware nodes learn PvD-specific information from the networks they are attached to and/or other sources.  PvDs are used to enable separation and configuration consistency in the presence of multiple concurrent connections.</t></abstract>
</front>
<seriesInfo name='RFC' value='7556'/>
<seriesInfo name='DOI' value='10.17487/RFC7556'/>
</reference>



<reference anchor="I-D.pauly-taps-guidelines">
<front>
<title>Software Guidelines for Protocol Evolution</title>

<author initials='T' surname='Pauly' fullname='Tommy Pauly'>
    <organization />
</author>

<date month='February' day='7' year='2017' />

<abstract><t>This document outlines a set of recommendations and guidelines for how networking software should be designed to enable the development, testing, and deployment of new protocols and protocol features.  The focus is primarily on the API contract that a client-side networking library should present to applications using networking features, and how that library can be architected to maximize flexibility and longevity.  Specific areas of protocol development that should be enabled include:  o  Making security and privacy easy to use  o  Reducing latency with 0-RTT protocols  o  Allowing wider use of multi-stream protocols  o  Providing a simple interface for multi-path protocols</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-pauly-taps-guidelines-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-pauly-taps-guidelines-00.txt' />
</reference>



<reference anchor="I-D.trammell-taps-post-sockets">
<front>
<title>Post Sockets, An Abstract Programming Interface for the Transport Layer</title>

<author initials='B' surname='Trammell' fullname='Brian Trammell'>
    <organization />
</author>

<author initials='C' surname='Perkins' fullname='Colin Perkins'>
    <organization />
</author>

<author initials='T' surname='Pauly' fullname='Tommy Pauly'>
    <organization />
</author>

<author initials='M' surname='Kuehlewind' fullname='Mirja Kuehlewind'>
    <organization />
</author>

<date month='March' day='8' year='2017' />

<abstract><t>This document describes Post Sockets, an asynchronous abstract programming interface for the atomic transmission of messages in an inherently multipath environment.  Post replaces connections with long-lived associations between endpoints, with the possibility to cache cryptographic state in order to reduce amortized connection latency.  We present this abstract interface as an illustration of what is possible with present developments in transport protocols when freed from the strictures of the current sockets API.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-trammell-taps-post-sockets-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-trammell-taps-post-sockets-00.txt' />
</reference>


<reference anchor="I-D.tiesel-taps-communitgrany" >
  <front>
    <title>Communication Units Granularity Considerations for using Transport Diversity or Multiple Provisioning Domains</title>
    <author initials="P.S." surname="Tiesel" fullname="Philipp S. Tiesel">
      <organization></organization>
    </author>
    <author initials="T." surname="Enghardt" fullname="Theresa Enghardt">
      <organization></organization>
    </author>
    <date year="2017" month="July"/>
  </front>
  <seriesInfo name="draft-tiesel-taps-communitgrany-00 (work in progress)" value=""/>
</reference>
<reference anchor="DASH" target="https://www.iso.org/standard/65274.html">
  <front>
    <title>Dynamic adaptive streaming over HTTP (DASH) - Part 1: Media presentation description and segment formats</title>
    <author >
      <organization>International Organization for Standardization</organization>
    </author>
    <date year="2011" month="June"/>
  </front>
  <seriesInfo name="Standard ISO/IEC 23009-1:2014" value=""/>
</reference>


<reference anchor="CoNEXT2013" >
  <front>
    <title>Socket intents</title>
    <author initials="P." surname="Schmidt" fullname="Philipp S. Schmidt">
      <organization></organization>
    </author>
    <author initials="T." surname="Enghardt" fullname="Theresa Enghardt">
      <organization></organization>
    </author>
    <author initials="R." surname="Khalili" fullname="Ramin Khalili">
      <organization></organization>
    </author>
    <author initials="A." surname="Feldmann" fullname="Anja Feldmann">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
  <seriesInfo name="Proceedings of the ninth ACM conference on Emerging networking experiments and technologies - CoNEXT '13" value=""/>
  <seriesInfo name="DOI" value="10.1145/2535372.2535405"/>
</reference>




    </references>




  </back>

<!-- ##markdown-source:
H4sIALSpQlkAA+Vca28bR5b9Xr+iwHwYOyDpR2xno8UCK1tOIsCOtZEy2cXM
YFBkF8kaNbuZrm4xHMf/fc65VdUvUo6TWWAHWH2wqGZ3Pe7j3HNv3fZsNlO1
q3N7pq/L5a2t9WVR26L2yiwWlb1Ll9PVrFwWZou7s8qs6lntrLf5rDY7P/Ny
ows3znJTW1+rDL/O9NPHT76cPX4xe/JcLXFhXVaHM21/3inldtWZrqvG108f
P/7q8VNlKmvO9De2sJXJ1b6sbtdV2ezO9M351bX+EX+7Yq2/4TV1aw+4ITuT
NVeFrWcXXJVSvjZF9leTlwUmP1ivdu5M/6kul1Pty6qu7Mrj02HLD39RyjT1
pqzOlJ4pjR9X+DN9NdfXc30j+5OrYdtXG5e73W70XVmtTeH+bmpXFmf6pa1y
V2BRHpJtaqvLlb6xy01R5uX6IA94rMHWZ/qtqZYb/DHXT7+QL5auPqQRwoWy
KWqK6xtbbU0RHrdb4/IzvQuL+U+Hrc/rZraQx+aZHezkZq5fF+uNqbK6t5Gb
ja2sN8Ov/o/2UYe1nNiHKkrcXbs7C+3o779+9fzp0xfx49MnT746gwUVq9E9
z55/9Sx9/OrF4/jxxb89TVe/fPbki/Tx+XMZ73J2Md+ZJj8EW143LrNYg/Xp
y7oy263No63vSl9Hg+/u6PnCstxum8LV6wpbPZO9Ri+bvApfLUXI+gfc5GHO
pmhyU0Fo+lVZeExeyfdeY3O68bT5G9zkdzBffYG9Vp4348u3TV67XW71VVXe
OY+HePNFCdEWfiJT953wS7nSWrz8zOLvjxv5/a5xPMJJ67rXIr2tMBgVmVZ0
jC4Dic4eP9YPiA0YT++qco3J/EM8e3F+/W0aY7hHMe6EFCJbk+t3PXsXSV8T
OLCueC0+m1R3ccDu3FKbzOxob2L+uAJ5l9CI/vbm5ko/4Boe6pm+MlDVE/iG
zZzBKrGXog5TZdYvK7eTz5gQAlhv8aUOlhy11tPbE4BnWoup1vS4TV3v/Nmj
R/v9fu58OcfuHvm4+kcvnj/98tl8U2+Tfo4lrNu96svrd48uX7+C6wKCZ0/O
MOEz3PWq/O71f9/gjy/O9MW7y/mTx/MnT549f/T0+RfPv/jy6Zy/nz1+rtRs
NtNmAVmYJbD3ZuO8RphoZEdlU4sbYZv6/Opy5orM7iz+wXfLsljaXQ33N7U2
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

-->

</rfc>

