rfc9065xml2.original.xml | rfc9065.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<!ENTITY RFC0791 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.0791.xml"> | ||||
<!ENTITY RFC1273 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.1273.xml"> | ||||
<!ENTITY RFC2410 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2410.xml"> | ||||
<!ENTITY RFC2474 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2474.xml"> | ||||
<!ENTITY RFC2475 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2475.xml"> | ||||
<!ENTITY RFC2507 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2507.xml"> | ||||
<!ENTITY RFC2508 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2508.xml"> | ||||
<!ENTITY RFC2914 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.2914.xml"> | ||||
<!ENTITY RFC3168 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3168.xml"> | ||||
<!ENTITY RFC3234 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3234.xml"> | ||||
<!ENTITY RFC3261 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3261.xml"> | ||||
<!ENTITY RFC3393 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3393.xml"> | ||||
<!ENTITY RFC3550 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3550.xml"> | ||||
<!ENTITY RFC3711 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3711.xml"> | ||||
<!ENTITY RFC3819 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3819.xml"> | ||||
<!ENTITY RFC4302 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.4302.xml"> | ||||
<!ENTITY RFC4303 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.4303.xml"> | ||||
<!ENTITY RFC4566 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.4566.xml"> | ||||
<!ENTITY RFC4585 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.4585.xml"> | ||||
<!ENTITY RFC4737 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.4737.xml"> | ||||
<!ENTITY RFC4960 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.4960.xml"> | ||||
<!ENTITY RFC5166 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5166.xml"> | ||||
<!ENTITY RFC5795 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5795.xml"> | ||||
<!ENTITY RFC5218 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5218.xml"> | ||||
<!ENTITY RFC5236 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5236.xml"> | ||||
<!ENTITY RFC8446 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8446.xml"> | ||||
<!ENTITY RFC5426 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5426.xml"> | ||||
<!ENTITY RFC5481 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5481.xml"> | ||||
<!ENTITY RFC3449 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3449.xml"> | ||||
<!ENTITY RFC5925 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.5925.xml"> | ||||
<!ENTITY RFC6056 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6056.xml"> | ||||
<!ENTITY RFC6294 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6294.xml"> | ||||
<!ENTITY RFC6269 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6269.xml"> | ||||
<!ENTITY RFC6347 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6347.xml"> | ||||
<!ENTITY RFC6437 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6437.xml"> | ||||
<!ENTITY RFC6438 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6438.xml"> | ||||
<!ENTITY RFC6973 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6973.xml"> | ||||
<!ENTITY RFC7098 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen ce.RFC.7098.xml"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-tsvwg-transp ort-encrypt-21" number="9065" ipr="trust200902" obsoletes="" updates="" submissi onType="IETF" category="info" consensus="true" xml:lang="en" tocInclude="true" t ocDepth="2" symRefs="true" sortRefs="true" version="3"> | |||
<!ENTITY RFC7605 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | <!-- xml2rfc v2v3 conversion 3.7.0 --> | |||
ce.RFC.7605.xml"> | ||||
<!ENTITY RFC7126 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7126.xml"> | ||||
<!ENTITY RFC7258 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7258.xml"> | ||||
<!ENTITY RFC7525 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7525.xml"> | ||||
<!ENTITY RFC7413 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7413.xml"> | ||||
<!ENTITY RFC7414 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7414.xml"> | ||||
<!ENTITY RFC7567 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7567.xml"> | ||||
<!ENTITY RFC7624 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7624.xml"> | ||||
<!ENTITY RFC7713 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7713.xml"> | ||||
<!ENTITY RFC7872 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7872.xml"> | ||||
<!ENTITY RFC7928 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7928.xml"> | ||||
<!ENTITY RFC7594 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7594.xml"> | ||||
<!ENTITY RFC7799 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7799.xml"> | ||||
<!ENTITY RFC7983 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7983.xml"> | ||||
<!ENTITY RFC8033 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8033.xml"> | ||||
<!ENTITY RFC8084 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8084.xml"> | ||||
<!ENTITY RFC8085 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8085.xml"> | ||||
<!ENTITY RFC8086 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8086.xml"> | ||||
<!ENTITY RFC8087 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8087.xml"> | ||||
<!ENTITY RFC8095 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8095.xml"> | ||||
<!ENTITY RFC8200 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8200.xml"> | ||||
<!ENTITY RFC8404 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8404.xml"> | ||||
<!ENTITY RFC8250 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8250.xml"> | ||||
<!ENTITY RFC8257 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8257.xml"> | ||||
<!ENTITY RFC8289 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8289.xml"> | ||||
<!ENTITY RFC8290 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8290.xml"> | ||||
<!ENTITY RFC8462 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8462.xml"> | ||||
<!ENTITY RFC8517 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8517.xml"> | ||||
<!ENTITY RFC8546 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8546.xml"> | ||||
<!ENTITY RFC8548 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8548.xml"> | ||||
<!ENTITY RFC8684 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8684.xml"> | ||||
<!ENTITY RFC8558 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8558.xml"> | ||||
<!ENTITY RFC6846 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6846.xml"> | ||||
<!ENTITY RFC3552 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3552.xml"> | ||||
<!ENTITY RFC8724 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8724.xml"> | ||||
<!ENTITY I-D.ietf-quic-transport SYSTEM "http://xml2rfc.tools.ietf.org/public/rf | ||||
c/bibxml3/reference.I-D.draft-ietf-quic-transport-29.xml"> | ||||
<!ENTITY RFC8701 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8701.xml"> | ||||
<!ENTITY I-D.trammell-plus-abstract-mech SYSTEM "http://xml2rfc.tools.ietf.org/p | ||||
ublic/rfc/bibxml3/reference.I-D.draft-trammell-plus-abstract-mech-00.xml"> | ||||
<!ENTITY I-D.ietf-tcpm-accurate-ecn SYSTEM "http://xml2rfc.tools.ietf.org/public | ||||
/rfc/bibxml3/reference.I-D.draft-ietf-tcpm-accurate-ecn-11.xml"> | ||||
<!ENTITY I-D.ietf-tsvwg-l4s-arch SYSTEM "http://xml2rfc.tools.ietf.org/public/rf | ||||
c/bibxml3/reference.I-D.draft-ietf-tsvwg-l4s-arch-06.xml"> | ||||
<!ENTITY I-D.ietf-ippm-ioam-data SYSTEM "http://xml2rfc.tools.ietf.org/public/rf | ||||
c/bibxml3/reference.I-D.draft-ietf-ippm-ioam-data-10.xml"> | ||||
<!ENTITY RFC8922 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8922.xml"> | ||||
<!ENTITY I-D.ietf-tsvwg-rtcweb-qos SYSTEM "http://xml2rfc.tools.ietf.org/public/ | ||||
rfc/bibxml3/reference.I-D.draft-ietf-tsvwg-rtcweb-qos-18.xml"> | ||||
<!ENTITY RFC8837 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8837.xml"> | ||||
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bi | ||||
bxml3/reference.I-D.draft-ietf-tls-dtls13-38.xml"> | ||||
<!ENTITY I-D.marx-qlog-main-schema SYSTEM "http://xml2rfc.tools.ietf.org/public/ | ||||
rfc/bibxml3/reference.I-D.draft-marx-qlog-main-schema-02.xml"> | ||||
<!-- Note XML for rev -04 is currently broken, RFC-Ed needs to fix latest rev. - | ||||
-> | ||||
<!ENTITY I-D.ietf-6man-ipv6-alt-mark SYSTEM "http://xml2rfc.tools.ietf.org/publi | ||||
c/rfc/bibxml3/reference.I-D.ietf-6man-ipv6-alt-mark-00.xml"> | ||||
]> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes"?> | ||||
<?rfc strict="yes"?> | ||||
<?rfc tocompact="yes"?> | ||||
<?rfc rfcedstyle="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc tocdepth="2"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes" ?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes" ?> | ||||
<?rfc compact='yes'?> | ||||
<rfc category="info" docName="draft-ietf-tsvwg-transport-encrypt-21" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="Transport Header Encryption">Considerations around | <title abbrev="Transport Header Encryption">Considerations around | |||
Transport Header Confidentiality, Network Operations, and the Evolution of | Transport Header Confidentiality, Network Operations, and the Evolution of | |||
Internet Transport Protocols</title> | Internet Transport Protocols</title> | |||
<seriesInfo name="RFC" value="9065"/> | ||||
<author fullname="Godred Fairhurst" initials="G." surname="Fairhurst"> | <author fullname="Godred Fairhurst" initials="G." surname="Fairhurst"> | |||
<organization>University of Aberdeen</organization> | <organization>University of Aberdeen</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Department of Engineering</street> | <extaddr>Department of Engineering</extaddr> | |||
<street>Fraser Noble Building</street> | <street>Fraser Noble Building</street> | |||
<city>Aberdeen, Scotland</city> | ||||
<city>Aberdeen</city> | ||||
<code>AB24 3UE</code> | <code>AB24 3UE</code> | |||
<country>United Kingdom</country> | ||||
<country>Scotland</country> | ||||
</postal> | </postal> | |||
<email>gorry@erg.abdn.ac.uk</email> | <email>gorry@erg.abdn.ac.uk</email> | |||
<uri>http://www.erg.abdn.ac.uk/</uri> | <uri>http://www.erg.abdn.ac.uk/</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Colin Perkins" initials="C." surname="Perkins"> | ||||
<author fullname="Colin Perkins" initials="C.S." surname="Perkins"> | ||||
<organization>University of Glasgow</organization> | <organization>University of Glasgow</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>School of Computing Science</street> | <extaddr>School of Computing Science</extaddr> | |||
<city>Glasgow, Scotland</city> | ||||
<city>Glasgow</city> | ||||
<code>G12 8QQ</code> | <code>G12 8QQ</code> | |||
<country>United Kingdom</country> | ||||
<country>Scotland</country> | ||||
</postal> | </postal> | |||
<email>csp@csperkins.org</email> | <email>csp@csperkins.org</email> | |||
<uri>https://csperkins.org/</uri> | <uri>https://csperkins.org/</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="July" year="2021"/> | ||||
<date day="18" month="April" year="2021" /> | ||||
<area>Transport</area> | <area>Transport</area> | |||
<workgroup>TSVWG</workgroup> | <workgroup>TSVWG</workgroup> | |||
<keyword>transport design</keyword> | ||||
<keyword>transport design, operations and management</keyword> | <keyword>operations and management</keyword> | |||
<abstract> | <abstract> | |||
<t>To protect user data and privacy, Internet transport protocols have | <t>To protect user data and privacy, Internet transport protocols have | |||
supported payload encryption and authentication for some time. Such | supported payload encryption and authentication for some time. Such | |||
encryption and authentication is now also starting to be applied to the | encryption and authentication are now also starting to be applied to the | |||
transport protocol headers. This helps avoid transport protocol | transport protocol headers. This helps avoid transport protocol | |||
ossification by middleboxes, mitigate attacks against the transport | ossification by middleboxes, mitigate attacks against the transport | |||
protocol, and protect metadata about the communication. Current | protocol, and protect metadata about the communication. Current | |||
operational practice in some networks inspect transport header | operational practice in some networks inspect transport header | |||
information within the network, but this is no longer possible when | information within the network, but this is no longer possible when | |||
those transport headers are encrypted.</t> | those transport headers are encrypted.</t> | |||
<t>This document discusses the possible impact when network traffic uses | <t>This document discusses the possible impact when network traffic uses | |||
a protocol with an encrypted transport header. It suggests issues to | a protocol with an encrypted transport header. It suggests issues to | |||
consider when designing new transport protocols or features.</t> | consider when designing new transport protocols or features.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t>The transport layer supports the end-to-end flow of data across a | <t>The transport layer supports the end-to-end flow of data across a | |||
network path, providing features such as connection establishment, | network path, providing features such as connection establishment, | |||
reliability, framing, ordering, congestion control, flow control, etc., | reliability, framing, ordering, congestion control, flow control, etc., | |||
as needed to support applications. One of the core functions of an | as needed to support applications. One of the core functions of an | |||
Internet transport is to discover and adapt to the characteristics of | Internet transport is to discover and adapt to the characteristics of | |||
the network path that is currently being used.</t> | the network path that is currently being used.</t> | |||
<t>For some years, it has been common for the transport-layer payload to | ||||
<t>For some years, it has been common for the transport layer payload to | be protected by encryption and authentication but for the transport-layer | |||
be protected by encryption and authentication, but for the transport | headers to be sent unprotected. Examples of protocols that behave | |||
layer headers to be sent unprotected. Examples of protocols that behave | in this manner include Transport Layer Security | |||
in this manner include <xref target="RFC8446"> Transport Layer Security | (TLS) over TCP <xref target="RFC8446" format="default"/>, Datagram TLS <xr | |||
(TLS) over TCP</xref>, Datagram TLS <xref target="RFC6347"></xref> <xref | ef target="RFC6347" format="default"/> <xref target="I-D.ietf-tls-dtls13" format | |||
target="I-D.ietf-tls-dtls13"></xref>, the <xref target="RFC3711"> Secure | ="default"/>, the Secure | |||
Real-time Transport Protocol</xref>, and <xref target="RFC8548"> | Real-time Transport Protocol <xref target="RFC3711" format="default"/>, an | |||
tcpcrypt </xref>. The use of unencrypted transport headers has led some | d tcpcrypt <xref target="RFC8548" format="default"/>. The use of unencrypted tra | |||
nsport headers has led some | ||||
network operators, researchers, and others to develop tools and | network operators, researchers, and others to develop tools and | |||
processes that rely on observations of transport headers both in | processes that rely on observations of transport headers both in | |||
aggregate and at the flow level to infer details of the network's | aggregate and at the flow level to infer details of the network's | |||
behaviour and inform operational practice.</t> | behaviour and inform operational practice.</t> | |||
<t>Transport protocols are now being developed that encrypt some or all | <t>Transport protocols are now being developed that encrypt some or all | |||
of the transport headers, in addition to the transport payload data. The | of the transport headers, in addition to the transport payload data. The | |||
QUIC transport protocol <xref target="I-D.ietf-quic-transport"></xref> | QUIC transport protocol <xref target="RFC9000" format="default"/> | |||
is an example of such a protocol. Such transport header encryption makes | is an example of such a protocol. Such transport header encryption makes | |||
it difficult to observe transport protocol behaviour from the vantage | it difficult to observe transport protocol behaviour from the vantage | |||
point of the network. This document discusses some implications of | point of the network. This document discusses some implications of | |||
transport header encryption for network operators and researchers that | transport header encryption for network operators and researchers that | |||
have previously observed transport headers, and highlights some issues | have previously observed transport headers, and it highlights some issues | |||
to consider for transport protocol designers.</t> | to consider for transport protocol designers.</t> | |||
<t>As discussed in <xref target="RFC7258" format="default"/>, the IETF has | ||||
<t>As discussed in <xref target="RFC7258"></xref>, the IETF has | ||||
concluded that Pervasive Monitoring (PM) is a technical attack that | concluded that Pervasive Monitoring (PM) is a technical attack that | |||
needs to be mitigated in the design of IETF protocols. This document | needs to be mitigated in the design of IETF protocols. This document | |||
supports that conclusion. It also recognises that RFC7258 states "Making | supports that conclusion. It also recognises that <xref target="RFC7258" f | |||
networks unmanageable to mitigate PM is not an acceptable outcome, but | ormat="default"/> | |||
states, "Making networks unmanageable to mitigate PM is not an acceptable | ||||
outcome, but | ||||
ignoring PM would go against the consensus documented here. An | ignoring PM would go against the consensus documented here. An | |||
appropriate balance will emerge over time as real instances of this | appropriate balance will emerge over time as real instances of this | |||
tension are considered". This document is written to provide input to | tension are considered." This document is written to provide input to | |||
the discussion around what is an appropriate balance, by highlighting | the discussion around what is an appropriate balance by highlighting | |||
some implications of transport header encryption.</t> | some implications of transport header encryption.</t> | |||
<t>Current uses of transport header information by network devices on | <t>Current uses of transport header information by network devices on | |||
the Internet path are explained. These uses can be beneficial or | the Internet path are explained. These uses can be beneficial or | |||
malicious. This is written to provide input to the discussion around | malicious. This is written to provide input to the discussion around | |||
what is an appropriate balance, by highlighting some implications of | what is an appropriate balance by highlighting some implications of | |||
transport header encryption.</t> | transport header encryption.</t> | |||
</section> | </section> | |||
<section anchor="Current" numbered="true" toc="default"> | ||||
<section anchor="Current" | <name>Current Uses of Transport Headers within the Network</name> | |||
title="Current uses of Transport Headers within the Network"> | <t>In response to pervasive surveillance <xref target="RFC7624" format="de | |||
<t>In response to pervasive monitoring <xref target="RFC7624"></xref> | fault"/> | |||
revelations and the IETF consensus that "Pervasive Monitoring is an | revelations and the IETF consensus that "Pervasive Monitoring Is an | |||
Attack" <xref target="RFC7258"></xref>, efforts are underway to increase | Attack" <xref target="RFC7258" format="default"/>, efforts are underway to | |||
increase | ||||
encryption of Internet traffic. Applying confidentiality to transport | encryption of Internet traffic. Applying confidentiality to transport | |||
header fields can improve privacy, and can help to mitigate certain | header fields can improve privacy and can help to mitigate certain | |||
attacks or manipulation of packets by devices on the network path, but | attacks or manipulation of packets by devices on the network path, but | |||
it can also affect network operations and measurement <xref | it can also affect network operations and measurement <xref target="RFC840 | |||
target="RFC8404"></xref>.</t> | 4" | |||
format="default"/>.</t> | ||||
<t>When considering what parts of the transport headers should be | <t>When considering what parts of the transport headers should be | |||
encrypted to provide confidentiality, and what parts should be visible | encrypted to provide confidentiality and what parts should be visible | |||
to network devices (including non-encrypted but authenticated headers), | to network devices (including unencrypted but authenticated headers), | |||
it is necessary to consider both the impact on network operations and | it is necessary to consider both the impact on network operations and | |||
management, and the implications for ossification and user privacy <xref | management and the implications for ossification and user privacy <xref | |||
target="Measurement"></xref>. Different parties will view the relative | target="Measurement" format="default"/>. Different parties will view the r | |||
elative | ||||
importance of these concerns differently. For some, the benefits of | importance of these concerns differently. For some, the benefits of | |||
encrypting all the transport headers outweigh the impact of doing so; | encrypting all the transport headers outweigh the impact of doing so; | |||
others might analyse the security, privacy, and ossification impacts and | others might analyse the security, privacy, and ossification impacts and | |||
arrive at a different trade-off.</t> | arrive at a different trade-off.</t> | |||
<t>This section reviews examples of the observation of transport-layer | ||||
<t>This section reviews examples of the observation of transport layer | headers within the network by using devices on the network path or by usin | |||
headers within the network by devices on the network path, or using | g | |||
information exported by an on-path device. Unencrypted transport headers | information exported by an on-path device. Unencrypted transport headers | |||
provide information that can support network operations and management, | provide information that can support network operations and management, | |||
and this section notes some ways in which this has been done. | and this section notes some ways in which this has been done. | |||
Unencrypted transport header information also contributes metadata that | Unencrypted transport header information also contributes metadata that | |||
can be exploited for purposes unrelated to network transport | can be exploited for purposes unrelated to network transport | |||
measurement, diagnostics or troubleshooting (e.g., to block or to | measurement, diagnostics, or troubleshooting (e.g., to block or to | |||
throttle traffic from a specific content provider), and this section | throttle traffic from a specific content provider), and this section | |||
also notes some threats relating to unencrypted transport headers.</t> | also notes some threats relating to unencrypted transport headers.</t> | |||
<t>Exposed transport information also provides a source of information | <t>Exposed transport information also provides a source of information | |||
that contributes to linked data sets, which could be exploited to deduce | that contributes to linked data sets, which could be exploited to deduce | |||
private information, e.g., user patterns, user location, tracking | private information, e.g., user patterns, user location, tracking | |||
behaviour, etc. This might reveal information the parties did not intend | behaviour, etc. This might reveal information the parties did not intend | |||
to be revealed. <xref target="RFC6973"></xref> aims to make designers, | to be revealed. <xref target="RFC6973" format="default"/> aims to make des igners, | |||
implementers, and users of Internet protocols aware of privacy-related | implementers, and users of Internet protocols aware of privacy-related | |||
design choices in IETF protocols.</t> | design choices in IETF protocols.</t> | |||
<t>This section does not consider intentional modification of transport | <t>This section does not consider intentional modification of transport | |||
headers by middleboxes, such as devices performing Network Address | headers by middleboxes, such as devices performing Network Address | |||
Translation (NAT) or Firewalls.</t> | Translation (NAT) or firewalls.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="To Separate Flows in Network Devices"> | <name>To Separate Flows in Network Devices</name> | |||
<t>Some network layer mechanisms separate network traffic by flow, | <t>Some network-layer mechanisms separate network traffic by flow | |||
without resorting to identifying the type of traffic. Hash-based | without resorting to identifying the type of traffic: hash-based | |||
load-sharing sharing across paths (e..g., equal cost multi path, | load sharing across paths (e.g., Equal-Cost Multipath | |||
ECMP), sharing across a group of links (e.g., using a link aggregation | (ECMP)); sharing across a group of links (e.g., using a Link Aggregation | |||
group, LAG), ensuring equal access to link capacity (e.g., fair | Group (LAG)); ensuring equal access to link capacity (e.g., Fair | |||
queuing, FQ), or distributing traffic to servers (e.g., load | Queuing (FQ)); or distributing traffic to servers (e.g., load | |||
balancing). To prevent packet reordering, forwarding engines can | balancing). To prevent packet reordering, forwarding engines can | |||
consistently forward the same transport flows along the same | consistently forward the same transport flows along the same | |||
forwarding path, often achieved by calculating a hash using an n-tuple | forwarding path, often achieved by calculating a hash using an n-tuple | |||
gleaned from a combination of link header information through to | gleaned from a combination of link header information through to | |||
transport header information. This n-tuple can use the MAC address, IP | transport header information. This n-tuple can use the Media Access Cont | |||
addresses, and can include observable transport header information. | rol | |||
(MAC) address and IP | ||||
addresses and can include observable transport header information. | ||||
</t> | </t> | |||
<t>When transport header information cannot be observed, there can be | <t>When transport header information cannot be observed, there can be | |||
less information to separate flows at equipment along the path. Flow | less information to separate flows at equipment along the path. | |||
separation might not be possible when, a transport that forms traffic | Flow | |||
into an encrypted aggregate. For IPv6, the Flow Label <xref | separation might not be possible when a transport forms traffic | |||
target="RFC6437"></xref> can be used even when all transport | into an encrypted aggregate. For IPv6, the Flow Label <xref target="RFC6 | |||
information is encrypted, enabling Flow Label-based ECMP <xref | 437" format="default"/> can be used even when all transport | |||
target="RFC6438"></xref> and Load-Sharing <xref | information is encrypted, enabling Flow Label-based ECMP <xref target="R | |||
target="RFC7098"></xref>.</t> | FC6438" format="default"/> and load sharing <xref target="RFC7098" format="defau | |||
lt"/>.</t> | ||||
</section> | </section> | |||
<section anchor="Current-demux" numbered="true" toc="default"> | ||||
<section anchor="Current-demux" | <name>To Identify Transport Protocols and Flows</name> | |||
title="To Identify Transport Protocols and Flows"> | <t>Information in exposed transport-layer headers can be used by the | |||
<t>Information in exposed transport layer headers can be used by the | network to identify transport protocols and flows <xref target="RFC8558" | |||
network to identify transport protocols and flows <xref | format="default"/>. The ability to identify transport protocols, | |||
target="RFC8558"></xref>. The ability to identify transport protocols, | ||||
flows, and sessions is a common function performed, for example, by | flows, and sessions is a common function performed, for example, by | |||
measurement activities, Quality of Service (QoS) classifiers, and | measurement activities, Quality of Service (QoS) classifiers, and | |||
firewalls. These functions can be beneficial, and performed with the | firewalls. These functions can be beneficial and performed with the | |||
consent of, and in support of, the end user. Alternatively, the same | consent of, and in support of, the end user. Alternatively, the same | |||
mechanisms could be used to support practises that might be | mechanisms could be used to support practises that might be | |||
adversarial to the end user, including blocking, de-prioritising, and | adversarial to the end user, including blocking, deprioritising, and | |||
monitoring traffic without consent.</t> | monitoring traffic without consent.</t> | |||
<t>Observable transport header information, together with information | <t>Observable transport header information, together with information | |||
in the network header, has been used to identify flows and their | in the network header, has been used to identify flows and their | |||
connection state, together with the set of protocol options being | connection state, together with the set of protocol options being | |||
used. Transport protocols, such as TCP <xref target="RFC7414"></xref> | used. Transport protocols, such as TCP <xref target="RFC7414" format="de | |||
and the Stream Control Transport Protocol (SCTP) <xref | fault"/> | |||
target="RFC4960"></xref>, specify a standard base header that includes | and the Stream Control Transmission Protocol (SCTP) <xref target="RFC496 | |||
0" format="default"/>, specify a standard base header that includes | ||||
sequence number information and other data. They also have the | sequence number information and other data. They also have the | |||
possibility to negotiate additional headers at connection setup, | possibility to negotiate additional headers at connection setup, | |||
identified by an option number in the transport header.</t> | identified by an option number in the transport header.</t> | |||
<t>In some uses, an assigned transport port (e.g., 0..49151) can | <t>In some uses, an assigned transport port (e.g., 0..49151) can | |||
identify the upper-layer protocol or service <xref | identify the upper-layer protocol or service <xref target="RFC7605" form | |||
target="RFC7605"></xref>. However, port information alone is not | at="default"/>. However, port information alone is not | |||
sufficient to guarantee identification. Applications can use arbitrary | sufficient to guarantee identification. Applications can use arbitrary | |||
ports and do not need to use assigned port numbers. The use of an | ports and do not need to use assigned port numbers. The use of an | |||
assigned port number is also not limited to the protocol for which the | assigned port number is also not limited to the protocol for which the | |||
port is intended. Multiple sessions can also be multiplexed on a | port is intended. Multiple sessions can also be multiplexed on a | |||
single port, and ports can be re-used by subsequent sessions.</t> | single port, and ports can be reused by subsequent sessions.</t> | |||
<t>Some flows can be identified by observing signalling data | ||||
<t>Some flows can be identified by observing signalling data (e.g., | (e.g., see <xref target="RFC3261" format="default"/> and <xref target="R | |||
<xref target="RFC3261"></xref>, <xref target="RFC8837"></xref>) or | FC8837" format="default"/>) or | |||
through the use of magic numbers placed in the first byte(s) of a | through the use of magic numbers placed in the first byte(s) of a | |||
datagram payload <xref target="RFC7983"></xref>.</t> | datagram payload <xref target="RFC7983" format="default"/>.</t> | |||
<t>When transport header information cannot be observed, this removes | <t>When transport header information cannot be observed, this removes | |||
information that could have been used to classify flows by passive | information that could have been used to classify flows by passive | |||
observers along the path. More ambitious ways could be used to | observers along the path. More ambitious ways could be used to | |||
collect, estimate, or infer flow information, including heuristics | collect, estimate, or infer flow information, including heuristics | |||
based on the analysis of traffic patterns, such as classification of | based on the analysis of traffic patterns, such as classification of | |||
flows relying on timing, volumes of information, and correlation | flows relying on timing, volumes of information, and correlation | |||
between multiple flows. For example, an operator that cannot access | between multiple flows. For example, an operator that cannot access | |||
the Session Description Protocol (SDP) session descriptions <xref | the Session Description Protocol (SDP) session descriptions <xref target | |||
target="RFC4566"></xref> to classify a flow as audio traffic, might | ="RFC8866" format="default"/> to classify a flow as audio traffic might | |||
instead use (possibly less-reliable) heuristics to infer that short | instead use (possibly less-reliable) heuristics to infer that short | |||
UDP packets with regular spacing carry audio traffic. Operational | UDP packets with regular spacing carry audio traffic. Operational | |||
practises aimed at inferring transport parameters are out of scope for | practises aimed at inferring transport parameters are out of scope for | |||
this document, and are only mentioned here to recognise that | this document, and are only mentioned here to recognise that | |||
encryption does not prevent operators from attempting to apply | encryption does not prevent operators from attempting to apply | |||
practises that were used with unencrypted transport headers.</t> | practises that were used with unencrypted transport headers.</t> | |||
<t>The IAB <xref target="RFC8546" format="default"/> has provided a summ | ||||
<t>The IAB <xref target="RFC8546"></xref> have provided a summary of | ary of | |||
expected implications of increased encryption on network functions | expected implications of increased encryption on network functions | |||
that use the observable headers and describe the expected benefits of | that use the observable headers and describe the expected benefits of | |||
designs that explicitly declare protocol invariant header information | designs that explicitly declare protocol-invariant header information | |||
that can be used for this purpose.</t> | that can be used for this purpose.</t> | |||
</section> | </section> | |||
<section anchor="stats" numbered="true" toc="default"> | ||||
<section anchor="stats" | <name>To Understand Transport Protocol Performance</name> | |||
title="To Understand Transport Protocol Performance"> | <t>This subsection describes use by the network of exposed transport-lay | |||
<t>This subsection describes use by the network of exposed transport | er headers to | |||
layer headers to understand transport protocol performance and | understand transport protocol performance and | |||
behaviour.</t> | behaviour.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Using Information Derived from Transport Layer Headers"> | <name>Using Information Derived from Transport-Layer Headers</name> | |||
<t>Observable transport headers enable explicit measurement and | <t>Observable transport headers enable explicit measurement and | |||
analysis of protocol performance, and detection of network anomalies | analysis of protocol performance and detection of network anomalies | |||
at any point along the Internet path. Some operators use passive | at any point along the Internet path. Some operators use passive | |||
monitoring to manage their portion of the Internet by characterising | monitoring to manage their portion of the Internet by characterising | |||
the performance of link/network segments. Inferences from transport | the performance of link/network segments. Inferences from transport | |||
headers are used to derive performance metrics:</t> | headers are used to derive performance metrics:</t> | |||
<dl newline="true" spacing="normal"> | ||||
<t><list style="hanging"> | <dt>Traffic Rate and Volume:</dt> | |||
<t hangText="Traffic Rate and Volume:">Per-application traffic | <dd><t>Per-application traffic | |||
rate and volume measures can be used to characterise the traffic | rate and volume measures can be used to characterise the traffic | |||
that uses a network segment or the pattern of network usage. | that uses a network segment or the pattern of network usage. | |||
Observing the protocol sequence number and packet size offers | Observing the protocol sequence number and packet size offers | |||
one way to measure this (e.g., measurements observing counters | one way to measure this (e.g., measurements observing counters | |||
in periodic reports such as RTCP; or measurements observing | in periodic reports, such as RTCP <xref target="RFC3550" | |||
format="default"/> <xref target="RFC3711" format="default"/> <xref | ||||
target="RFC4585" format="default"/>, or measurements observing | ||||
protocol sequence numbers in statistical samples of packet | protocol sequence numbers in statistical samples of packet | |||
flows, or specific control packets, such as those observed at | flows or specific control packets, such as those observed at | |||
the start and end of a flow).</t> | the start and end of a flow).</t> | |||
<t>Measurements can be per endpoint or for an | ||||
<t hangText="">Measurements can be per endpoint, or for an | ||||
endpoint aggregate. These could be used to assess usage or for | endpoint aggregate. These could be used to assess usage or for | |||
subscriber billing.</t> | subscriber billing.</t> | |||
<t>Such measurements can be used to trigger traffic | ||||
<t hangText="">Such measurements can be used to trigger traffic | shaping and to associate QoS support within the network and | |||
shaping, and to associate QoS support within the network and | ||||
lower layers. This can be done with consent and in support of an | lower layers. This can be done with consent and in support of an | |||
end user, to improve quality of service; or could be used by the | end user to improve quality of service or could be used by the | |||
network to de-prioritise certain flows without user consent.</t> | network to deprioritise certain flows without user consent.</t> | |||
<t>The traffic rate and volume can be determined, | ||||
<t hangText="">The traffic rate and volume can be determined | ||||
providing that the packets belonging to individual flows can be | providing that the packets belonging to individual flows can be | |||
identified, but there might be no additional information about a | identified, but there might be no additional information about a | |||
flow when the transport headers cannot be observed.</t> | flow when the transport headers cannot be observed.</t> | |||
</dd> | ||||
<t hangText="Loss Rate and Loss Pattern:">Flow loss rate can be | <dt>Loss Rate and Loss Pattern:</dt> | |||
<dd><t>Flow loss rate can be | ||||
derived (e.g., from transport sequence numbers or inferred from | derived (e.g., from transport sequence numbers or inferred from | |||
observing transport protocol interactions) and has been used as | observing transport protocol interactions) and has been used as | |||
a metric for performance assessment and to characterise | a metric for performance assessment and to characterise | |||
transport behaviour. Network operators have used the variation | transport behaviour. Network operators have used the variation | |||
in patterns to detect changes in the offered service. | in patterns to detect changes in the offered service. | |||
Understanding the location and root cause of loss can help an | Understanding the location and root cause of loss can help an | |||
operator determine whether this requires corrective action.</t> | operator determine whether this requires corrective action.</t> | |||
<t>There are various causes of loss, including: corruption of | ||||
<t>There are various causes of loss, including: corruption of | link frames (e.g., due to interference on a radio link); | |||
link frames (e.g., due to interference on a radio link), | ||||
buffering loss (e.g., overflow due to congestion, Active Queue | buffering loss (e.g., overflow due to congestion, Active Queue | |||
Management, AQM <xref target="RFC7567"></xref>, or inadequate | Management (AQM) <xref target="RFC7567" format="default"/>, or ina | |||
provision following traffic pre-emption), and policing (traffic | dequate | |||
management <xref target="RFC2475"></xref>). Understanding flow | provision following traffic preemption), and policing (e.g., traff | |||
loss rates requires maintaining per-flow state (flow | ic | |||
identification often requires transport layer information) and | management <xref target="RFC2475" format="default"/>). Understandi | |||
ng flow | ||||
loss rates requires maintaining the per-flow state (flow | ||||
identification often requires transport-layer information) and | ||||
either observing the increase in sequence numbers in the network | either observing the increase in sequence numbers in the network | |||
or transport headers, or comparing a per-flow packet counter | or transport headers or comparing a per-flow packet counter | |||
with the number of packets that the flow actually sent. Per-hop | with the number of packets that the flow actually sent. Per-hop | |||
loss can also sometimes be monitored at the interface level by | loss can also sometimes be monitored at the interface level by | |||
devices on the network path, or using in-situ methods operating | devices on the network path or by using in-situ methods operating | |||
over a network segment (see <xref | over a network segment (see <xref target="other-sources" format="d | |||
target="other-sources"></xref>).</t> | efault"/>).</t> | |||
<t>The pattern of loss can provide insight into the cause of | ||||
<t>The pattern of loss can provide insight into the cause of | loss. Losses can often occur as bursts, randomly timed events, | |||
loss. Losses can often occur as bursts, randomly-timed events, | ||||
etc. It can also be valuable to understand the conditions under | etc. It can also be valuable to understand the conditions under | |||
which loss occurs. This usually requires relating loss to the | which loss occurs. This usually requires relating loss to the | |||
traffic flowing at a network node or segment at the time of | traffic flowing at a network node or segment at the time of | |||
loss. Transport header information can help identify cases where | loss. Transport header information can help identify cases where | |||
loss could have been wrongly identified, or where the transport | loss could have been wrongly identified or where the transport | |||
did not require retransmission of a lost packet.</t> | did not require retransmission of a lost packet.</t> | |||
</dd> | ||||
<t hangText="Throughput and Goodput:">Throughput is the amount | <dt>Throughput and Goodput:</dt> | |||
<dd>Throughput is the amount | ||||
of payload data sent by a flow per time interval. Goodput (the | of payload data sent by a flow per time interval. Goodput (the | |||
subset of throughput consisting of useful traffic) <xref | subset of throughput consisting of useful traffic; see <xref targe | |||
target="RFC7928">(see Section 2.5 of </xref> and <xref | t="RFC7928" | |||
target="RFC5166"></xref>) is a measure of useful data exchanged. | sectionFormat="of" section="2.5"/> and <xref target="RFC5166" forma | |||
t="default"/>) is | ||||
a measure of useful data exchanged. | ||||
The throughput of a flow can be determined in the absence of | The throughput of a flow can be determined in the absence of | |||
transport header information, providing that the individual flow | transport header information, providing that the individual flow | |||
can be identified, and the overhead known. Goodput requires | can be identified, and the overhead known. Goodput requires the | |||
ability to differentiate loss and retransmission of packets, for | ability to differentiate loss and retransmission of packets, for | |||
example by observing packet sequence numbers in the TCP or RTP | example, by observing packet sequence numbers in the TCP or RTP | |||
headers <xref target="RFC3550"></xref>.</t> | headers <xref target="RFC3550" format="default"/>.</dd> | |||
<dt>Latency:</dt> | ||||
<t hangText="Latency:">Latency is a key performance metric that | <dd><t>Latency is a key performance metric that | |||
impacts application and user-perceived response times. It often | impacts application and user-perceived response times. It often | |||
indirectly impacts throughput and flow completion time. This | indirectly impacts throughput and flow completion time. This | |||
determines the reaction time of the transport protocol itself, | determines the reaction time of the transport protocol itself, | |||
impacting flow setup, congestion control, loss recovery, and | impacting flow setup, congestion control, loss recovery, and | |||
other transport mechanisms. The observed latency can have many | other transport mechanisms. The observed latency can have many | |||
components <xref target="Latency"></xref>. Of these, | components <xref target="Latency" format="default"/>. Of these, | |||
unnecessary/unwanted queueing in buffers of the network devices | unnecessary/unwanted queueing in buffers of the network devices | |||
on the path has often been observed as a significant factor | on the path has often been observed as a significant factor | |||
<xref target="bufferbloat"></xref>. Once the cause of unwanted | <xref target="bufferbloat" format="default"/>. Once the cause of u nwanted | |||
latency has been identified, this can often be eliminated.</t> | latency has been identified, this can often be eliminated.</t> | |||
<t>To measure latency across a part of a path, an observation | ||||
<t>To measure latency across a part of a path, an observation | point <xref target="RFC7799" format="default"/> can measure the ex | |||
point <xref target="RFC7799"></xref> can measure the experienced | perienced | |||
round trip time (RTT) using packet sequence numbers and | round-trip time (RTT) by using packet sequence numbers and | |||
acknowledgements, or by observing header timestamp information. | acknowledgements or by observing header timestamp information. | |||
Such information allows an observation point on the network path | Such information allows an observation point on the network path | |||
to determine not only the path RTT, but also allows measurement | to determine not only the path RTT but also allows measurement | |||
of the upstream and downstream contribution to the RTT. This | of the upstream and downstream contribution to the RTT. This | |||
could be used to locate a source of latency, e.g., by observing | could be used to locate a source of latency, e.g., by observing | |||
cases where the median RTT is much greater than the minimum RTT | cases where the median RTT is much greater than the minimum RTT | |||
for a part of a path.</t> | for a part of a path.</t> | |||
<t>The service offered by network operators can benefit from | ||||
<t>The service offered by network operators can benefit from | ||||
latency information to understand the impact of configuration | latency information to understand the impact of configuration | |||
changes and to tune deployed services. Latency metrics are key | changes and to tune deployed services. Latency metrics are key | |||
to evaluating and deploying AQM <xref target="RFC7567"></xref>, | to evaluating and deploying AQM <xref target="RFC7567" format="def | |||
DiffServ <xref target="RFC2474"></xref>, and Explicit Congestion | ault"/>, | |||
Notification (ECN) <xref target="RFC3168"></xref> <xref | Diffserv <xref target="RFC2474" format="default"/>, and | |||
target="RFC8087"></xref>. Measurements could identify | Explicit Congestion | |||
Notification (ECN) <xref target="RFC3168" format="default"/> <xref | ||||
target="RFC8087" | ||||
format="default"/>. Measurements could identify | ||||
excessively large buffers, indicating where to deploy or | excessively large buffers, indicating where to deploy or | |||
configure AQM. An AQM method is often deployed in combination | configure AQM. An AQM method is often deployed in combination | |||
with other techniques, such as scheduling <xref | with other techniques, such as scheduling <xref target="RFC7567" f | |||
target="RFC7567"> </xref> <xref target="RFC8290"> </xref> and | ormat="default"> | |||
although parameter-less methods are desired <xref | </xref> <xref target="RFC8290" format="default"> </xref>, and | |||
target="RFC7567"> </xref>, current methods often require tuning | although parameter-less methods are desired <xref target="RFC7567" | |||
<xref target="RFC8290"></xref> <xref target="RFC8289"> </xref> | format="default"> | |||
<xref target="RFC8033"> </xref> because they cannot scale across | </xref>, current methods often require tuning | |||
<xref target="RFC8290" format="default"/> <xref target="RFC8289" f | ||||
ormat="default"> | ||||
</xref> | ||||
<xref target="RFC8033" format="default"> </xref> because they cann | ||||
ot scale across | ||||
all possible deployment scenarios.</t> | all possible deployment scenarios.</t> | |||
<t>Latency and round-trip time information can potentially | ||||
<t>Latency and round-trip time information can potentially | ||||
expose some information useful for approximate geolocation, as | expose some information useful for approximate geolocation, as | |||
discussed in <xref target="PAM-RTT"></xref>.</t> | discussed in <xref target="PAM-RTT" format="default"/>.</t> | |||
</dd> | ||||
<t hangText="Variation in delay:">Some network applications are | <dt>Variation in Delay:</dt> | |||
sensitive to (small) changes in packet timing (jitter). Short | <dd>Some network applications are | |||
and long-term delay variation can impact on the latency of a | sensitive to (small) changes in packet timing (jitter). Short- | |||
and long-term delay variation can impact the latency of a | ||||
flow and hence the perceived quality of applications using a | flow and hence the perceived quality of applications using a | |||
network path. For example, jitter metrics are often cited when | network path. For example, jitter metrics are often cited when | |||
characterising paths supporting real-time traffic. The expected | characterising paths supporting real-time traffic. The expected | |||
performance of such applications, can be inferred from a measure | performance of such applications can be inferred from a measure | |||
of the variation in delay observed along a portion of the path | of the variation in delay observed along a portion of the path | |||
<xref target="RFC3393"></xref> <xref target="RFC5481"></xref>. | <xref target="RFC3393" format="default"/> <xref target="RFC5481" f ormat="default"/>. | |||
The requirements resemble those for the measurement of | The requirements resemble those for the measurement of | |||
latency.</t> | latency.</dd> | |||
<dt>Flow Reordering:</dt> | ||||
<t hangText="Flow Reordering:">Significant packet reordering | <dd><t>Significant packet reordering | |||
within a flow can impact time-critical applications and can be | within a flow can impact time-critical applications and can be | |||
interpreted as loss by reliable transports. Many transport | interpreted as loss by reliable transports. Many transport | |||
protocol techniques are impacted by reordering (e.g., triggering | protocol techniques are impacted by reordering (e.g., triggering | |||
TCP retransmission or re-buffering of real-time applications). | TCP retransmission or rebuffering of real-time applications). | |||
Packet reordering can occur for many reasons, from equipment | Packet reordering can occur for many reasons, e.g., from equipment | |||
design to misconfiguration of forwarding rules. Flow | design to misconfiguration of forwarding rules. Flow | |||
identification is often required to avoid significant packet | identification is often required to avoid significant packet | |||
mis-ordering (e.g., when using ECMP, or LAG). Network tools can | misordering (e.g., when using ECMP, or LAG). Network tools can | |||
detect and measure unwanted/excessive reordering, and the impact | detect and measure unwanted/excessive reordering and the impact | |||
on transport performance.</t> | on transport performance.</t> | |||
<t>There have been initiatives in the IETF transport area to | ||||
<t>There have been initiatives in the IETF transport area to | ||||
reduce the impact of reordering within a transport flow, | reduce the impact of reordering within a transport flow, | |||
possibly leading to a reduction in the requirements for | possibly leading to a reduction in the requirements for | |||
preserving ordering. These have potential to simplify network | preserving ordering. These have potential to simplify network | |||
equipment design as well as the potential to improve robustness | equipment design as well as the potential to improve robustness | |||
of the transport service. Measurements of reordering can help | of the transport service. Measurements of reordering can help | |||
understand the present level of reordering, and inform decisions | understand the present level of reordering and inform decisions | |||
about how to progress new mechanisms.</t> | about how to progress new mechanisms.</t> | |||
<t>Techniques for measuring reordering typically observe packet | ||||
<t>Techniques for measuring reordering typically observe packet | ||||
sequence numbers. Metrics have been defined that evaluate | sequence numbers. Metrics have been defined that evaluate | |||
whether a network path has maintained packet order on a | whether a network path has maintained packet order on a | |||
packet-by-packet basis <xref target="RFC4737"></xref> <xref | packet-by-packet basis <xref target="RFC4737" format="default"/> < | |||
target="RFC5236"></xref>. Some protocols provide in-built | xref | |||
target="RFC5236" format="default"/>. Some protocols provide in-buil | ||||
t | ||||
monitoring and reporting functions. Transport fields in the RTP | monitoring and reporting functions. Transport fields in the RTP | |||
header <xref target="RFC3550"></xref> <xref | header <xref target="RFC3550" format="default"/> <xref target="RFC | |||
target="RFC4585"></xref> can be observed to derive traffic | 4585" | |||
format="default"/> can be observed to derive traffic | ||||
volume measurements and provide information on the progress and | volume measurements and provide information on the progress and | |||
quality of a session using RTP. Metadata assists in | quality of a session using RTP. Metadata assists in | |||
understanding the context under which the data was collected, | understanding the context under which the data was collected, | |||
including the time, observation point <xref | including the time, observation point <xref target="RFC7799" forma | |||
target="RFC7799"></xref>, and way in which metrics were | t="default"/>, and | |||
way in which metrics were | ||||
accumulated. The RTCP protocol directly reports some of this | accumulated. The RTCP protocol directly reports some of this | |||
information in a form that can be directly visible by devices on | information in a form that can be directly visible by devices on | |||
the network path.</t> | the network path.</t> | |||
</list></t> | </dd> | |||
</dl> | ||||
<t>In some cases, measurements could involve active injection of | <t>In some cases, measurements could involve active injection of | |||
test traffic to perform a measurement (see Section 3.4 of <xref | test traffic to perform a measurement (see <xref target="RFC7799" sect | |||
target="RFC7799"></xref>). However, most operators do not have | ionFormat="of" | |||
access to user equipment, therefore the point of test is normally | section="3.4"/>). However, most operators do not have | |||
access to user equipment; therefore, the point of test is normally | ||||
different from the transport endpoint. Injection of test traffic can | different from the transport endpoint. Injection of test traffic can | |||
incur an additional cost in running such tests (e.g., the | incur an additional cost in running such tests (e.g., the | |||
implications of capacity tests in a mobile network segment are | implications of capacity tests in a mobile network segment are | |||
obvious). Some active measurements <xref target="RFC7799"></xref> | obvious). Some active measurements <xref target="RFC7799" format="defa ult"/> | |||
(e.g., response under load or particular workloads) perturb other | (e.g., response under load or particular workloads) perturb other | |||
traffic, and could require dedicated access to the network | traffic and could require dedicated access to the network | |||
segment.</t> | segment.</t> | |||
<t>Passive measurements (see <xref target="RFC7799" sectionFormat="of" | ||||
<t>Passive measurements (see Section 3.6 of <xref | section="3.6"/>) | |||
target="RFC7799"></xref>) can have advantages in terms of | can have advantages in terms of | |||
eliminating unproductive test traffic, reducing the influence of | eliminating unproductive test traffic, reducing the influence of | |||
test traffic on the overall traffic mix, and the ability to choose | test traffic on the overall traffic mix, and having the ability to cho | |||
the point of observation (see <xref target="point"></xref>). | ose | |||
the point of observation (see <xref target="point" format="default"/>) | ||||
. | ||||
Measurements can rely on observing packet headers, which is not | Measurements can rely on observing packet headers, which is not | |||
possible if those headers are encrypted, but could utilise | possible if those headers are encrypted, but could utilise | |||
information about traffic volumes or patterns of interaction to | information about traffic volumes or patterns of interaction to | |||
deduce metrics.</t> | deduce metrics.</t> | |||
<t>Passive packet sampling techniques are also often used to scale | <t>Passive packet sampling techniques are also often used to scale | |||
the processing involved in observing packets on high rate links. | the processing involved in observing packets on high-rate links. | |||
This exports only the packet header information of (randomly) | This exports only the packet header information of (randomly) | |||
selected packets. Interpretation of the exported information relies | selected packets. Interpretation of the exported information relies | |||
on understanding of the header information. The utility of these | on understanding of the header information. The utility of these | |||
measurements depends on the type of network segment/link and number | measurements depends on the type of network segment/link and number | |||
of mechanisms used by the network devices. Simple routers are | of mechanisms used by the network devices. Simple routers are | |||
relatively easy to manage, but a device with more complexity demands | relatively easy to manage, but a device with more complexity demands | |||
understanding of the choice of many system parameters.</t> | understanding of the choice of many system parameters.</t> | |||
</section> | </section> | |||
<section anchor="tunlhf" numbered="true" toc="default"> | ||||
<section anchor="tunlhf" | <name>Using Information Derived from Network-Layer Header Fields</name | |||
title="Using Information Derived from Network Layer Header Fiel | > | |||
ds"> | ||||
<t>Information from the transport header can be used by a | <t>Information from the transport header can be used by a | |||
multi-field (MF) classifier as a part of policy framework. Policies | multi-field (MF) classifier as a part of policy framework. Policies | |||
are commonly used for management of the QoS or Quality of Experience | are commonly used for management of the QoS or Quality of Experience | |||
(QoE) in resource-constrained networks, or by firewalls to implement | (QoE) in resource-constrained networks or by firewalls to implement | |||
access rules (see also Section 2.2.2 of <xref | access rules (see also <xref target="RFC8404" sectionFormat="of" secti | |||
target="RFC8404"></xref>). Policies can support user | on ="2.2.2"/>). | |||
applications/services or protect against unwanted, or lower priority | Policies can support user | |||
traffic (<xref target="Implic-Unknown"></xref>).</t> | applications/services or protect against unwanted or lower-priority | |||
traffic (<xref target="Implic-Unknown" format="default"/>).</t> | ||||
<t>Transport layer information can also be explicitly carried in | <t>Transport-layer information can also be explicitly carried in | |||
network-layer header fields that are not encrypted, serving as a | network-layer header fields that are not encrypted, serving as a | |||
replacement/addition to the exposed transport header information | replacement/addition to the exposed transport header information | |||
<xref target="RFC8558"></xref>. This information can enable a | <xref target="RFC8558" format="default"/>. This information can enable a | |||
different forwarding treatment by the devices forming the network | different forwarding treatment by the devices forming the network | |||
path, even when a transport employs encryption to protect other | path, even when a transport employs encryption to protect other | |||
header information.</t> | header information.</t> | |||
<t>On the one hand, the user of a transport that multiplexes | <t>On the one hand, the user of a transport that multiplexes | |||
multiple sub-flows might want to obscure the presence and | multiple subflows might want to obscure the presence and | |||
characteristics of these sub-flows. On the other hand, an encrypted | characteristics of these subflows. On the other hand, an encrypted | |||
transport could set the network-layer information to indicate the | transport could set the network-layer information to indicate the | |||
presence of sub-flows, and to reflect the service requirements of | presence of subflows and to reflect the service requirements of | |||
individual sub-flows. There are several ways this could be done:</t> | individual subflows. There are several ways this could be done:</t> | |||
<dl newline="true" spacing="normal"> | ||||
<t><list style="hanging"> | <dt>IP Address:</dt> | |||
<t hangText="IP Address:">Applications normally expose the | <dd>Applications normally expose the | |||
endpoint addresses used in the forwarding decisions in network | endpoint addresses used in the forwarding decisions in network | |||
devices. Address and other protocol information can be used by a | devices. Address and other protocol information can be used by an | |||
MF-classifier to determine how traffic is treated <xref | MF classifier to determine how traffic is treated <xref target="RF | |||
target="RFC2475"></xref>, and hence affect the quality of | C2475" | |||
format="default"/> and hence affects the quality of | ||||
experience for a flow. Common issues concerning IP address | experience for a flow. Common issues concerning IP address | |||
sharing are described in <xref target="RFC6269"></xref>.</t> | sharing are described in <xref target="RFC6269" format="default"/> | |||
.</dd> | ||||
<t hangText="Using the IPv6 Network-Layer Flow Label:">A number | <dt>Using the IPv6 Network-Layer Flow Label:</dt> | |||
of Standards Track and Best Current Practice RFCs (e.g., <xref | <dd><t>A number | |||
target="RFC8085"></xref>, <xref target="RFC6437"></xref>, <xref | of Standards Track and Best Current Practice RFCs (e.g., <xref tar | |||
target="RFC6438"></xref>) encourage endpoints to set the IPv6 | get="RFC8085" | |||
flow label field of the network-layer header. IPv6 “source | format="default"/>, <xref target="RFC6437" format="default"/>, and | |||
nodes SHOULD assign each unrelated transport connection and | <xref | |||
application data stream to a new flow” <xref | target="RFC6438" format="default"/>) encourage endpoints to set the | |||
target="RFC6437"></xref>. A multiplexing transport could choose | IPv6 | |||
Flow Label field of the network-layer header. | ||||
As per <xref target="RFC6437"/>, IPv6 source nodes "<bcp14>SHOULD</ | ||||
bcp14> assign each | ||||
unrelated transport connection and application data stream to a | ||||
new flow." | ||||
A multiplexing transport could choose | ||||
to use multiple flow labels to allow the network to | to use multiple flow labels to allow the network to | |||
independently forward sub-flows. RFC6437 provides further | independently forward subflows. <xref target="RFC6437" format="def ault"/> provides further | |||
guidance on choosing a flow label value, stating these | guidance on choosing a flow label value, stating these | |||
“should be chosen such that their bits exhibit a high | "should be chosen such that their bits exhibit a high | |||
degree of variability”, and chosen so that “third | degree of variability" and chosen so that "third | |||
parties should be unlikely to be able to guess the next value | parties should be unlikely to be able to guess the next value | |||
that a source of flow labels will choose”.</t> | that a source of flow labels will choose."</t> | |||
<t>Once set, a flow label can provide information | ||||
<t hangText="">Once set, a flow label can provide information | ||||
that can help inform network-layer queueing and forwarding, | that can help inform network-layer queueing and forwarding, | |||
including use with IPsec, <xref target="RFC6294"></xref> and use | including use with IPsec <xref target="RFC6294" format="default"/> | |||
with Equal Cost Multi-Path routing and Link Aggregation<xref | , | |||
target="RFC6438"> </xref>.</t> | Equal-Cost Multipath routing, and Link Aggregation <xref target="R | |||
FC6438" | ||||
<t hangText="">The choice of how to assign a flow label needs to | format="default"></xref>.</t> | |||
<t>The choice of how to assign a flow label needs to | ||||
avoid introducing linkages between flows that a network device | avoid introducing linkages between flows that a network device | |||
could not otherwise observe. Inappropriate use by the transport | could not otherwise observe. Inappropriate use by the transport | |||
can have privacy implications (e.g., assigning the same label to | can have privacy implications (e.g., assigning the same label to | |||
two independent flows that ought not to be classified the | two independent flows that ought not to be classified similarly).< | |||
same).</t> | /t> | |||
</dd> | ||||
<t | <dt>Using the Network-Layer Differentiated Services Code Point:</dt> | |||
hangText="Using the Network-Layer Differentiated Services Code Poi | <dd>Applications | |||
nt:">Applications | ||||
can expose their delivery expectations to network devices by | can expose their delivery expectations to network devices by | |||
setting the Differentiated Services Code Point (DSCP) field of | setting the Differentiated Services Code Point (DSCP) field of | |||
IPv4 and IPv6 packets <xref target="RFC2474"></xref>. For | IPv4 and IPv6 packets <xref target="RFC2474" format="default"/>. F or | |||
example, WebRTC applications identify different forwarding | example, WebRTC applications identify different forwarding | |||
treatments for individual sub-flows (audio vs. video) based on | treatments for individual subflows (audio vs. video) based on | |||
the value of the DSCP field <xref | the value of the DSCP field <xref target="RFC8837" format="default | |||
target="I-D.ietf-tsvwg-rtcweb-qos"></xref>). This provides | "/>). This provides | |||
explicit information to inform network-layer queueing and | explicit information to inform network-layer queueing and | |||
forwarding, rather than an operator inferring traffic | forwarding, rather than an operator inferring traffic | |||
requirements from transport and application headers via a | requirements from transport and application headers via a | |||
multi-field classifier. Inappropriate use by the transport can | multi-field classifier. Inappropriate use by the transport can | |||
have privacy implications (e.g., assigning a different DSCP to a | have privacy implications (e.g., assigning a different DSCP to a | |||
subflow could assist in a network device discovering the traffic | subflow could assist in a network device discovering the traffic | |||
pattern used by an application). The field is mutable, i.e., | pattern used by an application). The field is mutable, i.e., | |||
some network devices can be expected to change this field. Since | some network devices can be expected to change this field. Since | |||
the DSCP value can impact the quality of experience for a flow, | the DSCP value can impact the quality of experience for a flow, | |||
observations of service performance have to consider this field | observations of service performance have to consider this field | |||
when a network path supports differentiated service | when a network path supports differentiated service | |||
treatment.</t> | treatment.</dd> | |||
<dt>Using Explicit Congestion Notification:</dt> | ||||
<t hangText="Using Explicit Congestion Marking:">ECN <xref | <dd><t>Explicit Congestion Notification (ECN) <xref target="RFC3168" | |||
target="RFC3168"> </xref> is a transport mechanism that uses the | format="default"> | |||
</xref> is a transport mechanism that uses the | ||||
ECN field in the network-layer header. Use of ECN explicitly | ECN field in the network-layer header. Use of ECN explicitly | |||
informs the network-layer that a transport is ECN-capable, and | informs the network layer that a transport is ECN capable and | |||
requests ECN treatment of the flow. An ECN-capable transport can | requests ECN treatment of the flow. An ECN-capable transport can | |||
offer benefits when used over a path with equipment that | offer benefits when used over a path with equipment that | |||
implements an AQM method with CE marking of IP packets <xref | implements an AQM method with Congestion Experienced (CE) marking | |||
target="RFC8087"></xref>, since it can react to congestion | of IP packets <xref target="RFC8087" format="default"/>, since it can react to c | |||
ongestion | ||||
without also having to recover from lost packets.</t> | without also having to recover from lost packets.</t> | |||
<t>ECN exposes the presence of congestion. The reception of | ||||
<t>ECN exposes the presence of congestion. The reception of | ||||
CE-marked packets can be used to estimate the level of incipient | CE-marked packets can be used to estimate the level of incipient | |||
congestion on the upstream portion of the path from the point of | congestion on the upstream portion of the path from the point of | |||
observation (Section 2.5 of <xref target="RFC8087"> </xref>). | observation (<xref target="RFC8087" sectionFormat="of" section="2. 5"/>). | |||
Interpreting the marking behaviour (i.e., assessing congestion | Interpreting the marking behaviour (i.e., assessing congestion | |||
and diagnosing faults) requires context from the transport | and diagnosing faults) requires context from the transport | |||
layer, such as path RTT.</t> | layer, such as path RTT.</t> | |||
<t>AQM and ECN offer a range of algorithms and configuration | ||||
<t>AQM and ECN offer a range of algorithms and configuration | ||||
options. Tools therefore have to be available to network | options. Tools therefore have to be available to network | |||
operators and researchers to understand the implication of | operators and researchers to understand the implication of | |||
configuration choices and transport behaviour as the use of ECN | configuration choices and transport behaviour as the use of ECN | |||
increases and new methods emerge <xref target="RFC7567"> | increases and new methods emerge <xref target="RFC7567" format="de fault"> | |||
</xref>.</t> | </xref>.</t> | |||
</dd> | ||||
<t hangText="Network-Layer Options">Network protocols can carry | <dt>Network-Layer Options:</dt> | |||
optional headers (see <xref target="EH"></xref>). These can | <dd><t>Network protocols can carry | |||
optional headers (see <xref target="EH" format="default"/>). These | ||||
can | ||||
explicitly expose transport header information to on-path | explicitly expose transport header information to on-path | |||
devices operating at the network layer (as discussed further in | devices operating at the network layer (as discussed further in | |||
<xref target="OAM"></xref>).</t> | <xref target="OAM" format="default"/>).</t> | |||
<t>IPv4 <xref target="RFC0791" format="default"/> has provisions | ||||
<t hangText="">IPv4 <xref target="RFC0791"></xref> has provision | ||||
for optional header fields. IP routers can examine these headers | for optional header fields. IP routers can examine these headers | |||
and are required to ignore IPv4 options that they do not | and are required to ignore IPv4 options that they do not | |||
recognise. Many current paths include network devices that | recognise. Many current paths include network devices that | |||
forward packets that carry options on a slower processing path. | forward packets that carry options on a slower processing path. | |||
Some network devices (e.g., firewalls) can be (and are) | Some network devices (e.g., firewalls) can be (and are) | |||
configured to drop these packets <xref target="RFC7126"></xref>. | configured to drop these packets <xref target="RFC7126" format="de | |||
BCP 186 <xref target="RFC7126"></xref> provides Best Current | fault"/>. | |||
Practice guidance on how operators should treat IPv4 packets | BCP 186 <xref target="RFC7126" format="default"/> provides | |||
guidance on how operators should treat IPv4 packets | ||||
that specify options.</t> | that specify options.</t> | |||
<t>IPv6 can encode optional network-layer | ||||
<t hangText="">IPv6 can encode optional network-layer | ||||
information in separate headers that may be placed between the | information in separate headers that may be placed between the | |||
IPv6 header and the upper-layer header <xref | IPv6 header and the upper-layer header <xref target="RFC8200" form | |||
target="RFC8200"></xref>. (e.g., the IPv6 Alternate Marking | at="default"/> | |||
Method <xref target="I-D.ietf-6man-ipv6-alt-mark"></xref>, which | (e.g., the IPv6 Alternate Marking | |||
Method <xref target="I-D.ietf-6man-ipv6-alt-mark" format="default" | ||||
/>, which | ||||
can be used to measure packet loss and delay metrics). The | can be used to measure packet loss and delay metrics). The | |||
Hop-by-Hop options header, when present, immediately follows the | Hop-by-Hop Options header, when present, immediately follows the | |||
IPv6 header. IPv6 permits this header to be examined by any node | IPv6 header. IPv6 permits this header to be examined by any node | |||
along the path if explicitly configured <xref | along the path if explicitly configured <xref target="RFC8200" | |||
target="RFC8200"></xref>.</t> | format="default"/>.</t> | |||
</list>Careful use of the network layer features (e.g., Extension | </dd> | |||
Headers can <xref target="EH2"></xref>) help provide similar | </dl> | |||
<t>Careful use of the network-layer features (e.g., extension | ||||
headers can; see <xref target="EH2" format="default"/>) help provide s | ||||
imilar | ||||
information in the case where the network is unable to inspect | information in the case where the network is unable to inspect | |||
transport protocol headers.</t> | transport protocol headers.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Measure" numbered="true" toc="default"> | ||||
<section anchor="Measure" title="To Support Network Operations"> | <name>To Support Network Operations</name> | |||
<t>Some network operators make use of on-path observations of | <t>Some network operators make use of on-path observations of | |||
transport headers to analyse the service offered to the users of a | transport headers to analyse the service offered to the users of a | |||
network segment, and to inform operational practice, and can help | network segment and inform operational practice and can help | |||
detect and locate network problems. <xref target="RFC8517"></xref> | detect and locate network problems. <xref target="RFC8517" format="defau | |||
lt"/> | ||||
gives an operator's perspective about such use.</t> | gives an operator's perspective about such use.</t> | |||
<t>When observable transport header information is not available, | <t>When observable transport header information is not available, | |||
those seeking an understanding of transport behaviour and dynamics | those seeking an understanding of transport behaviour and dynamics | |||
might learn to work without that information. Alternatively, they | might learn to work without that information. Alternatively, they | |||
might use more limited measurements combined with pattern inference | might use more limited measurements combined with pattern inference | |||
and other heuristics to infer network behaviour (see Section 2.1.1 of | and other heuristics to infer network behaviour (see <xref target="RFC84 | |||
<xref target="RFC8404"></xref>). Operational practises aimed at | 04" | |||
inferring transport parameters are out of scope for this document, and | sectionFormat="of" section="2.1.1"/>). Operational practises aimed at | |||
inferring transport parameters are out of scope for this document and | ||||
are only mentioned here to recognise that encryption does not | are only mentioned here to recognise that encryption does not | |||
necessarily stop operators from attempting to apply practises that | necessarily stop operators from attempting to apply practises that | |||
have been used with unencrypted transport headers.</t> | have been used with unencrypted transport headers.</t> | |||
<t>This section discusses topics concerning observation of transport | <t>This section discusses topics concerning observation of transport | |||
flows, with a focus on transport measurement.</t> | flows, with a focus on transport measurement.</t> | |||
<section anchor="point" numbered="true" toc="default"> | ||||
<section anchor="point" title="Problem Location"> | <name>Problem Location</name> | |||
<t>Observations of transport header information can be used to | <t>Observations of transport header information can be used to | |||
locate the source of problems or to assess the performance of a | locate the source of problems or to assess the performance of a | |||
network segment. Often issues can only be understood in the context | network segment. Often issues can only be understood in the context | |||
of the other flows that share a particular path, particular device | of the other flows that share a particular path, particular device | |||
configuration, interface port, etc. A simple example is monitoring | configuration, interface port, etc. A simple example is monitoring | |||
of a network device that uses a scheduler or active queue management | of a network device that uses a scheduler or active queue management | |||
technique <xref target="RFC7567"></xref>, where it could be | technique <xref target="RFC7567" format="default"/>, where it could be | |||
desirable to understand whether the algorithms are correctly | desirable to understand whether the algorithms are correctly | |||
controlling latency, or if overload protection is working. This | controlling latency or if overload protection is working. This | |||
implies knowledge of how traffic is assigned to any sub-queues used | implies knowledge of how traffic is assigned to any subqueues used | |||
for flow scheduling, but can require information about how the | for flow scheduling but can require information about how the | |||
traffic dynamics impact active queue management, starvation | traffic dynamics impact active queue management, starvation | |||
prevention mechanisms, and circuit-breakers.</t> | prevention mechanisms, and circuit breakers.</t> | |||
<t>Sometimes correlating observations of headers at multiple points | <t>Sometimes correlating observations of headers at multiple points | |||
along the path (e.g., at the ingress and egress of a network | along the path (e.g., at the ingress and egress of a network | |||
segment), allows an observer to determine the contribution of a | segment) allows an observer to determine the contribution of a | |||
portion of the path to an observed metric. e.g., to locate a source | portion of the path to an observed metric (e.g., to locate a source | |||
of delay, jitter, loss, reordering, or congestion marking.</t> | of delay, jitter, loss, reordering, or congestion marking).</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Network Planning and Provisioning"> | <name>Network Planning and Provisioning</name> | |||
<t>Traffic rate and volume measurements are used to help plan | <t>Traffic rate and volume measurements are used to help plan | |||
deployment of new equipment and configuration in networks. Data is | deployment of new equipment and configuration in networks. Data is | |||
also valuable to equipment vendors who want to understand traffic | also valuable to equipment vendors who want to understand traffic | |||
trends and patterns of usage as inputs to decisions about planning | trends and patterns of usage as inputs to decisions about planning | |||
products and provisioning for new deployments.</t> | products and provisioning for new deployments.</t> | |||
<t>Trends in aggregate traffic can be observed and can be related to | <t>Trends in aggregate traffic can be observed and can be related to | |||
the endpoint addresses being used, but when transport header | the endpoint addresses being used, but when transport header | |||
information is not observable, it might be impossible to correlate | information is not observable, it might be impossible to correlate | |||
patterns in measurements with changes in transport protocols. This | patterns in measurements with changes in transport protocols. This | |||
increases the dependency on other indirect sources of information to | increases the dependency on other indirect sources of information to | |||
inform planning and provisioning.</t> | inform planning and provisioning.</t> | |||
</section> | </section> | |||
<section anchor="Compliance" numbered="true" toc="default"> | ||||
<section anchor="Compliance" | <name>Compliance with Congestion Control</name> | |||
title="Compliance with Congestion Control"> | ||||
<t>The traffic that can be observed by on-path network devices (the | <t>The traffic that can be observed by on-path network devices (the | |||
"wire image") is a function of transport protocol design/options, | "wire image") is a function of transport protocol design/options, | |||
network use, applications, and user characteristics. In general, | network use, applications, and user characteristics. In general, | |||
when only a small proportion of the traffic has a specific | when only a small proportion of the traffic has a specific | |||
(different) characteristic, such traffic seldom leads to operational | (different) characteristic, such traffic seldom leads to operational | |||
concern, although the ability to measure and monitor it is lower. | concern, although the ability to measure and monitor it is lower. | |||
The desire to understand the traffic and protocol interactions | The desire to understand the traffic and protocol interactions | |||
typically grows as the proportion of traffic increases. The | typically grows as the proportion of traffic increases. The | |||
challenges increase when multiple instances of an evolving protocol | challenges increase when multiple instances of an evolving protocol | |||
contribute to the traffic that share network capacity.</t> | contribute to the traffic that share network capacity.</t> | |||
skipping to change at line 787 ¶ | skipping to change at line 626 ¶ | |||
<t>The traffic that can be observed by on-path network devices (the | <t>The traffic that can be observed by on-path network devices (the | |||
"wire image") is a function of transport protocol design/options, | "wire image") is a function of transport protocol design/options, | |||
network use, applications, and user characteristics. In general, | network use, applications, and user characteristics. In general, | |||
when only a small proportion of the traffic has a specific | when only a small proportion of the traffic has a specific | |||
(different) characteristic, such traffic seldom leads to operational | (different) characteristic, such traffic seldom leads to operational | |||
concern, although the ability to measure and monitor it is lower. | concern, although the ability to measure and monitor it is lower. | |||
The desire to understand the traffic and protocol interactions | The desire to understand the traffic and protocol interactions | |||
typically grows as the proportion of traffic increases. The | typically grows as the proportion of traffic increases. The | |||
challenges increase when multiple instances of an evolving protocol | challenges increase when multiple instances of an evolving protocol | |||
contribute to the traffic that share network capacity.</t> | contribute to the traffic that share network capacity.</t> | |||
<t>Operators can manage traffic load (e.g., when the network is | <t>Operators can manage traffic load (e.g., when the network is | |||
severely overloaded) by deploying rate-limiters, traffic shaping, or | severely overloaded) by deploying rate limiters, traffic shaping, or | |||
network transport circuit breakers <xref target="RFC8084"></xref>. | network transport circuit breakers <xref target="RFC8084" format="defa | |||
ult"/>. | ||||
The information provided by observing transport headers is a source | The information provided by observing transport headers is a source | |||
of data that can help to inform such mechanisms.</t> | of data that can help to inform such mechanisms.</t> | |||
<dl newline="true" spacing="normal"> | ||||
<t><list style="hanging"> | <dt>Congestion Control Compliance of Traffic:</dt> | |||
<t | <dd><t>Congestion control is a key transport function <xref target=" | |||
hangText="Congestion Control Compliance of Traffic:">Congestion | RFC2914" | |||
control is a key transport function <xref | format="default"/>. Many network operators implicitly | |||
target="RFC2914"></xref>. Many network operators implicitly | ||||
accept that TCP traffic complies with a behaviour that is | accept that TCP traffic complies with a behaviour that is | |||
acceptable for the shared Internet. TCP algorithms have been | acceptable for the shared Internet. TCP algorithms have been | |||
continuously improved over decades, and have reached a level of | continuously improved over decades and have reached a level of | |||
efficiency and correctness that is difficult to match in custom | efficiency and correctness that is difficult to match in custom | |||
application-layer mechanisms <xref target="RFC8085"></xref>.</t> | application-layer mechanisms <xref target="RFC8085" format="defaul | |||
t"/>.</t> | ||||
<t>A standards-compliant TCP stack provides congestion control | <t>A standards-compliant TCP stack provides congestion control | |||
that is judged safe for use across the Internet. Applications | that is judged safe for use across the Internet. Applications | |||
developed on top of well-designed transports can be expected to | developed on top of well-designed transports can be expected to | |||
appropriately control their network usage, reacting when the | appropriately control their network usage, reacting when the | |||
network experiences congestion, by back-off and reduce the load | network experiences congestion, by backing off and reducing the lo ad | |||
placed on the network. This is the normal expected behaviour for | placed on the network. This is the normal expected behaviour for | |||
IETF-specified transports (e.g., TCP and SCTP).</t> | IETF-specified transports (e.g., TCP and SCTP).</t> | |||
</dd> | ||||
<t hangText="Congestion Control Compliance for UDP traffic:">UDP | <dt>Congestion Control Compliance for UDP Traffic:</dt> | |||
<dd><t>UDP | ||||
provides a minimal message-passing datagram transport that has | provides a minimal message-passing datagram transport that has | |||
no inherent congestion control mechanisms. Because congestion | no inherent congestion control mechanisms. Because congestion | |||
control is critical to the stable operation of the Internet, | control is critical to the stable operation of the Internet, | |||
applications and other protocols that choose to use UDP as a | applications and other protocols that choose to use UDP as a | |||
transport have to employ mechanisms to prevent collapse, avoid | transport have to employ mechanisms to prevent collapse, avoid | |||
unacceptable contributions to jitter/latency, and to establish | unacceptable contributions to jitter/latency, and establish | |||
an acceptable share of capacity with concurrent traffic <xref | an acceptable share of capacity with concurrent traffic <xref targ | |||
target="RFC8085"></xref>.</t> | et="RFC8085" | |||
format="default"/>.</t> | ||||
<t>UDP flows that expose a well-known header can be observed to | <t>UDP flows that expose a well-known header can be observed to | |||
gain understanding of the dynamics of a flow and its congestion | gain understanding of the dynamics of a flow and its congestion | |||
control behaviour. For example, tools exist to monitor various | control behaviour. For example, tools exist to monitor various | |||
aspects of RTP header information and RTCP reports for real-time | aspects of RTP header information and RTCP reports for real-time | |||
flows (see <xref target="stats"></xref>). The Secure RTP and | flows (see <xref target="stats" format="default"/>). The Secure RT | |||
RTCP extensions <xref target="RFC3711"></xref> were explicitly | P and | |||
RTCP extensions <xref target="RFC3711" format="default"/> were exp | ||||
licitly | ||||
designed to expose some header information to enable such | designed to expose some header information to enable such | |||
observation, while protecting the payload data.</t> | observation while protecting the payload data.</t> | |||
<t>A network operator can observe the headers of transport | ||||
<t>A network operator can observe the headers of transport | ||||
protocols layered above UDP to understand if the datagram flows | protocols layered above UDP to understand if the datagram flows | |||
comply with congestion control expectations. This can help | comply with congestion control expectations. This can help | |||
inform a decision on whether it might be appropriate to deploy | inform a decision on whether it might be appropriate to deploy | |||
methods such as rate-limiters to enforce acceptable usage. The | methods, such as rate limiters, to enforce acceptable usage. The | |||
available information determines the level of precision with | available information determines the level of precision with | |||
which flows can be classified and the design space for | which flows can be classified and the design space for | |||
conditioning mechanisms (e.g., rate limiting, circuit breaker | conditioning mechanisms (e.g., rate-limiting, circuit breaker | |||
techniques <xref target="RFC8084"></xref>, or blocking of | techniques <xref target="RFC8084" format="default"/>, or blocking | |||
uncharacterised traffic) <xref target="RFC5218"></xref>.</t> | uncharacterised traffic) <xref target="RFC5218" format="default"/> | |||
</list></t> | .</t> | |||
</dd> | ||||
</dl> | ||||
<t>When anomalies are detected, tools can interpret the transport | <t>When anomalies are detected, tools can interpret the transport | |||
header information to help understand the impact of specific | header information to help understand the impact of specific | |||
transport protocols (or protocol mechanisms) on the other traffic | transport protocols (or protocol mechanisms) on the other traffic | |||
that shares a network. An observer on the network path can gain an | that shares a network. An observer on the network path can gain an | |||
understanding of the dynamics of a flow and its congestion control | understanding of the dynamics of a flow and its congestion control | |||
behaviour. Analysing observed flows can help to build confidence | behaviour. Analysing observed flows can help to build confidence | |||
that an application flow backs-off its share of the network load | that an application flow backs off its share of the network load | |||
under persistent congestion, and hence to understand whether the | under persistent congestion and hence to understand whether the | |||
behaviour is appropriate for sharing limited network capacity. For | behaviour is appropriate for sharing limited network capacity. For | |||
example, it is common to visualise plots of TCP sequence numbers | example, it is common to visualise plots of TCP sequence numbers | |||
versus time for a flow to understand how a flow shares available | versus time for a flow to understand how a flow shares available | |||
capacity, deduce its dynamics in response to congestion, etc.</t> | capacity, deduce its dynamics in response to congestion, etc.</t> | |||
<t>The ability to identify sources and flows that contribute to | <t>The ability to identify sources and flows that contribute to | |||
persistent congestion is important to the safe operation of network | persistent congestion is important to the safe operation of network | |||
infrastructure, and can inform configuration of network devices to | infrastructure and can inform configuration of network devices to | |||
complement the endpoint congestion avoidance mechanisms <xref | complement the endpoint congestion avoidance mechanisms <xref target=" | |||
target="RFC7567"></xref> <xref target="RFC8084"></xref> to avoid a | RFC7567" format="default"/> <xref target="RFC8084" format="default"/> to avoid a | |||
portion of the network being driven into congestion collapse <xref | portion of the network being driven into congestion collapse <xref tar | |||
target="RFC2914"></xref>.</t> | get="RFC2914" format="default"/>.</t> | |||
</section> | </section> | |||
<section anchor="Implic-Unknown" numbered="true" toc="default"> | ||||
<section anchor="Implic-Unknown" | <name>To Characterise "Unknown" Network Traffic</name> | |||
title="To Characterise "Unknown" Network Traffic"> | ||||
<t>The patterns and types of traffic that share Internet capacity | <t>The patterns and types of traffic that share Internet capacity | |||
change over time as networked applications, usage patterns and | change over time as networked applications, usage patterns, and | |||
protocols continue to evolve.</t> | protocols continue to evolve.</t> | |||
<t>Encryption can increase the volume of "unknown" or | <t>Encryption can increase the volume of "unknown" or | |||
"uncharacterised" traffic seen by the network. If these traffic | "uncharacterised" traffic seen by the network. If these traffic | |||
patterns form a small part of the traffic aggregate passing through | patterns form a small part of the traffic aggregate passing through | |||
a network device or segment of the network path, the dynamics of the | a network device or segment of the network path, the dynamics of the | |||
uncharacterised traffic might not have a significant collateral | uncharacterised traffic might not have a significant collateral | |||
impact on the performance of other traffic that shares this network | impact on the performance of other traffic that shares this network | |||
segment. Once the proportion of this traffic increases, monitoring | segment. Once the proportion of this traffic increases, monitoring | |||
the traffic can determine if appropriate safety measures have to be | the traffic can determine if appropriate safety measures have to be | |||
put in place.</t> | put in place.</t> | |||
<t>Tracking the impact of new mechanisms and protocols requires | <t>Tracking the impact of new mechanisms and protocols requires | |||
traffic volume to be measured and new transport behaviours to be | traffic volume to be measured and new transport behaviours to be | |||
identified. This is especially true of protocols operating over a | identified. This is especially true of protocols operating over a | |||
UDP substrate. The level and style of encryption needs to be | UDP substrate. The level and style of encryption needs to be | |||
considered in determining how this activity is performed.</t> | considered in determining how this activity is performed.</t> | |||
<t>Traffic that cannot be classified typically receives a default | <t>Traffic that cannot be classified typically receives a default | |||
treatment. Some networks block or rate-limit traffic that cannot be | treatment. Some networks block or rate-limit traffic that cannot be | |||
classified.</t> | classified.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="To Support Network Security Functions"> | <name>To Support Network Security Functions</name> | |||
<t>On-path observation of the transport headers of packets can be | <t>On-path observation of the transport headers of packets can be | |||
used for various security functions. For example, Denial of Service | used for various security functions. For example, Denial of Service | |||
(DoS) and Distributed DoS (DDoS) attacks against the infrastructure | (DoS) and Distributed DoS (DDoS) attacks against the infrastructure | |||
or against an endpoint can be detected and mitigated by | or against an endpoint can be detected and mitigated by | |||
characterising anomalous traffic (see <xref | characterising anomalous traffic (see <xref target="Implic-Unknown" fo | |||
target="Implic-Unknown"></xref>) on a shorter timescale. Other uses | rmat="default"/>) on a shorter timescale. Other uses | |||
include support for security audits (e.g., verifying the compliance | include support for security audits (e.g., verifying the compliance | |||
with cipher suites), client and application fingerprinting for | with cipher suites), client and application fingerprinting for | |||
inventory, and to provide alerts for network intrusion detection and | inventory, and alerts provided for network intrusion detection and | |||
other next generation firewall functions.</t> | other next generation firewall functions.</t> | |||
<t>When using an encrypted transport, endpoints can directly provide | <t>When using an encrypted transport, endpoints can directly provide | |||
information to support these security functions. Another method, if | information to support these security functions. Another method, if | |||
the endpoints do not provide this information, is to use an on-path | the endpoints do not provide this information, is to use an on-path | |||
network device that relies on pattern inferences in the traffic, and | network device that relies on pattern inferences in the traffic and | |||
heuristics or machine learning instead of processing observed header | heuristics or machine learning instead of processing observed header | |||
information. An endpoint could also explicitly cooperate with an | information. An endpoint could also explicitly cooperate with an | |||
on-path device (e.g., a QUIC endpoint could share information about | on-path device (e.g., a QUIC endpoint could share information about | |||
current uses of connection IDs).</t> | current uses of connection IDs).</t> | |||
</section> | </section> | |||
<section anchor="Current-diag" numbered="true" toc="default"> | ||||
<section anchor="Current-diag" | <name>Network Diagnostics and Troubleshooting</name> | |||
title="Network Diagnostics and Troubleshooting "> | ||||
<t>Operators monitor the health of a network segment to support a | <t>Operators monitor the health of a network segment to support a | |||
variety of operational tasks <xref target="RFC8404"></xref> | variety of operational tasks <xref target="RFC8404" format="default"/> | |||
including procedures to provide early warning and trigger action: to | , | |||
including procedures to provide early warning and trigger action, e.g. | ||||
, to | ||||
diagnose network problems, to manage security threats (including | diagnose network problems, to manage security threats (including | |||
DoS), to evaluate equipment or protocol performance, or to respond | DoS), to evaluate equipment or protocol performance, or to respond | |||
to user performance questions. Information about transport flows can | to user performance questions. Information about transport flows can | |||
assist in setting buffer sizes, and help identify whether | assist in setting buffer sizes and help identify whether | |||
link/network tuning is effective. Information can also support | link/network tuning is effective. Information can also support | |||
debugging and diagnosis of the root causes of faults that concern a | debugging and diagnosis of the root causes of faults that concern a | |||
particular user's traffic and can support post-mortem investigation | particular user's traffic and can support postmortem investigation | |||
after an anomaly. Section 3.1.2 and Section 5 of <xref | after an anomaly. Sections <xref target="RFC8404" section="3.1.2" sect | |||
target="RFC8404"></xref> provide further examples.</t> | ionFormat="bare"/> | |||
and <xref target="RFC8404" section="5" sectionFormat="bare"/> of <xref | ||||
target="RFC8404"/> provide further examples.</t> | ||||
<t>Network segments vary in their complexity. The design trade-offs | <t>Network segments vary in their complexity. The design trade-offs | |||
for radio networks are often very different from those of wired | for radio networks are often very different from those of wired | |||
networks <xref target="RFC8462"></xref>. A radio-based network | networks <xref target="RFC8462" format="default"/>. A radio-based netw ork | |||
(e.g., cellular mobile, enterprise Wireless LAN (WLAN), satellite | (e.g., cellular mobile, enterprise Wireless LAN (WLAN), satellite | |||
access/back-haul, point-to-point radio) adds a subsystem that | access/backhaul, point-to-point radio) adds a subsystem that | |||
performs radio resource management, with impact on the available | performs radio resource management, with impact on the available | |||
capacity, and potentially loss/reordering of packets. This impact | capacity and potentially loss/reordering of packets. This impact | |||
can differ by traffic type, and can be correlated with link | can differ by traffic type and can be correlated with link | |||
propagation and interference. These can impact the cost and | propagation and interference. These can impact the cost and | |||
performance of a provided service, and is expected to increase in | performance of a provided service and is expected to increase in | |||
importance as operators bring together heterogeneous types of | importance as operators bring together heterogeneous types of | |||
network equipment and deploy opportunistic methods to access shared | network equipment and deploy opportunistic methods to access a shared | |||
radio spectrum.</t> | radio spectrum.</t> | |||
</section> | </section> | |||
<section anchor="Implic-Cost" numbered="true" toc="default"> | ||||
<section anchor="Implic-Cost" title="Tooling and Network Operations"> | <name>Tooling and Network Operations</name> | |||
<t>A variety of open source and proprietary tools have been deployed | <t>A variety of open source and proprietary tools have been deployed | |||
that use the transport header information observable with widely | that use the transport header information observable with widely | |||
used protocols such as TCP or RTP/UDP/IP. Tools that dissect network | used protocols, such as TCP or RTP/UDP/IP. Tools that dissect network | |||
traffic flows can alert to potential problems that are hard to | traffic flows can alert to potential problems that are hard to | |||
derive from volume measurements, link statistics or device | derive from volume measurements, link statistics, or device | |||
measurements alone.</t> | measurements alone.</t> | |||
<t>Any introduction of a new transport protocol, protocol feature, | <t>Any introduction of a new transport protocol, protocol feature, | |||
or application might require changes to such tools, and so could | or application might require changes to such tools and could | |||
impact operational practice and policies. Such changes have | impact operational practice and policies. Such changes have | |||
associated costs that are incurred by the network operators that | associated costs that are incurred by the network operators that | |||
need to update their tooling or develop alternative practises that | need to update their tooling or develop alternative practises that | |||
work without access to the changed/removed information.</t> | work without access to the changed/removed information.</t> | |||
<t>The use of encryption has the desirable effect of preventing | <t>The use of encryption has the desirable effect of preventing | |||
unintended observation of the payload data and these tools seldom | unintended observation of the payload data, and these tools seldom | |||
seek to observe the payload, or other application details. A flow | seek to observe the payload or other application details. A flow | |||
that hides its transport header information could imply "don't | that hides its transport header information could imply "don't | |||
touch" to some operators. This might limit a trouble-shooting | touch" to some operators. This might limit a trouble-shooting | |||
response to "can't help, no trouble found".</t> | response to "can't help, no trouble found".</t> | |||
<t>An alternative that does not require access to an observable | ||||
<t>An alternative that does not require access to observable | ||||
transport headers is to access endpoint diagnostic tools or to | transport headers is to access endpoint diagnostic tools or to | |||
include user involvement in diagnosing and troubleshooting unusual | include user involvement in diagnosing and troubleshooting unusual | |||
use cases or to troubleshoot non-trivial problems. Another approach | use cases or to troubleshoot nontrivial problems. Another approach | |||
is to use traffic pattern analysis. Such tools can provide useful | is to use traffic pattern analysis. Such tools can provide useful | |||
information during network anomalies (e.g., detecting significant | information during network anomalies (e.g., detecting significant | |||
reordering, high or intermittent loss), however indirect | reordering, high or intermittent loss); however, indirect | |||
measurements need to be carefully designed to provide information | measurements need to be carefully designed to provide information | |||
for diagnostics and troubleshooting.</t> | for diagnostics and troubleshooting.</t> | |||
<t>If new protocols, or protocol extensions, are made to closely | <t>If new protocols, or protocol extensions, are made to closely | |||
resemble or match existing mechanisms, then the changes to tooling | resemble or match existing mechanisms, then the changes to tooling | |||
and the associated costs can be small. Equally, more extensive | and the associated costs can be small. Equally, more extensive | |||
changes to the transport tend to require more extensive, and more | changes to the transport tend to require more extensive, and more | |||
expensive, changes to tooling and operational practice. Protocol | expensive, changes to tooling and operational practice. Protocol | |||
designers can mitigate these costs by explicitly choosing to expose | designers can mitigate these costs by explicitly choosing to expose | |||
selected information as invariants that are guaranteed not to change | selected information as invariants that are guaranteed not to change | |||
for a particular protocol (e.g., the header invariants and the | for a particular protocol (e.g., the header invariants and the | |||
spin-bit in QUIC <xref target="I-D.ietf-quic-transport"></xref>). | spin bit in QUIC <xref target="RFC9000" format="default"/>). | |||
Specification of common log formats and development of alternative | Specification of common log formats and development of alternative | |||
approaches can also help mitigate the costs of transport | approaches can also help mitigate the costs of transport | |||
changes.</t> | changes.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="To Mitigate the Effects of Constrained Networks"> | <name>To Mitigate the Effects of Constrained Networks</name> | |||
<t>Some link and network segments are constrained by the capacity they | <t>Some link and network segments are constrained by the capacity they | |||
can offer, by the time it takes to access capacity (e.g., due to | can offer by the time it takes to access capacity (e.g., due to | |||
under-lying radio resource management methods), or by asymmetries in | underlying radio resource management methods) or by asymmetries in | |||
the design (e.g., many link are designed so that the capacity | the design (e.g., many link are designed so that the capacity | |||
available is different in the forward and return directions; some | available is different in the forward and return directions; some | |||
radio technologies have different access methods in the forward and | radio technologies have different access methods in the forward and | |||
return directions resulting from differences in the power budget).</t> | return directions resulting from differences in the power budget).</t> | |||
<t>The impact of path constraints can be mitigated using a proxy | <t>The impact of path constraints can be mitigated using a proxy | |||
operating at or above the transport layer to use an alternate | operating at or above the transport layer to use an alternate | |||
transport protocol.</t> | transport protocol.</t> | |||
<t>In many cases, one or both endpoints are unaware of the | <t>In many cases, one or both endpoints are unaware of the | |||
characteristics of the constraining link or network segment and | characteristics of the constraining link or network segment, and | |||
mitigations are applied below the transport layer: Packet | mitigations are applied below the transport layer. Packet | |||
classification and QoS methods (described in various sections) can be | classification and QoS methods (described in various sections) can be | |||
beneficial in differentially prioritising certain traffic when there | beneficial in differentially prioritising certain traffic when there | |||
is a capacity constraint or additional delay in scheduling link | is a capacity constraint or additional delay in scheduling link | |||
transmissions. Another common mitigation is to apply header | transmissions. Another common mitigation is to apply header | |||
compression over the specific link or subnetwork (see <xref | compression over the specific link or subnetwork (see <xref target="HC" | |||
target="HC"></xref>).</t> | format="default"/>).</t> | |||
<section anchor="HC" numbered="true" toc="default"> | ||||
<section anchor="HC" title="To Provide Header Compression"> | <name>To Provide Header Compression</name> | |||
<t>Header compression saves link capacity by compressing network and | <t>Header compression saves link capacity by compressing network and | |||
transport protocol headers on a per-hop basis. This has been widely | transport protocol headers on a per-hop basis. This has been widely | |||
used with low bandwidth dial-up access links, and still finds | used with low bandwidth dial-up access links and still finds | |||
application on wireless links that are subject to capacity | application on wireless links that are subject to capacity | |||
constraints. These methods are effective for bit-congestive links | constraints. These methods are effective for bit-congestive links | |||
sending small packets (e.g., reducing the cost for sending control | sending small packets (e.g., reducing the cost for sending control | |||
packets or small data packets over radio links).</t> | packets or small data packets over radio links).</t> | |||
<t>Examples of header compression include use with TCP/IP and | <t>Examples of header compression include use with TCP/IP and | |||
RTP/UDP/IP flows <xref target="RFC2507"></xref>, <xref | RTP/UDP/IP flows <xref target="RFC2507" format="default"/> <xref targe | |||
target="RFC6846"></xref>, <xref target="RFC2508"></xref>, <xref | t="RFC6846" format="default"/> <xref target="RFC2508" format="default"/> <xref t | |||
target="RFC5795"></xref>, <xref target="RFC8724"></xref>. Successful | arget="RFC5795" format="default"/> <xref target="RFC8724" format="default"/>. Su | |||
ccessful | ||||
compression depends on observing the transport headers and | compression depends on observing the transport headers and | |||
understanding of the way fields change between packets, and is hence | understanding the way fields change between packets and is hence | |||
incompatible with header encryption. Devices that compress transport | incompatible with header encryption. Devices that compress transport | |||
headers are dependent on a stable header format, implying | headers are dependent on a stable header format, implying | |||
ossification of that format.</t> | ossification of that format.</t> | |||
<t>Introducing a new transport protocol, or changing the format of | <t>Introducing a new transport protocol, or changing the format of | |||
the transport header information, will limit the effectiveness of | the transport header information, will limit the effectiveness of | |||
header compression until the network devices are updated. Encrypting | header compression until the network devices are updated. Encrypting | |||
the transport protocol headers will tend to cause the header | the transport protocol headers will tend to cause the header | |||
compression to fall back to compressing only the network layer | compression to fall back to compressing only the network-layer | |||
headers, with a significant reduction in efficiency. This can limit | headers, with a significant reduction in efficiency. This can limit | |||
connectivity if the resulting flow exceeds the link capacity, or if | connectivity if the resulting flow exceeds the link capacity or if | |||
the packets are dropped because they exceed the link MTU.</t> | the packets are dropped because they exceed the link Maximum | |||
Transmission Unit (MTU).</t> | ||||
<t>The Secure RTP (SRTP) extensions <xref target="RFC3711"></xref> | <t>The Secure RTP (SRTP) extensions <xref target="RFC3711" format="def | |||
ault"/> | ||||
were explicitly designed to leave the transport protocol headers | were explicitly designed to leave the transport protocol headers | |||
unencrypted, but authenticated, since support for header compression | unencrypted, but authenticated, since support for header compression | |||
was considered important.</t> | was considered important.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="To Verify SLA Compliance"> | <name>To Verify SLA Compliance</name> | |||
<t>Observable transport headers coupled with published transport | <t>Observable transport headers coupled with published transport | |||
specifications allow operators and regulators to explore and verify | specifications allow operators and regulators to explore and verify | |||
compliance with Service Level Agreements (SLAs). It can also be used | compliance with Service Level Agreements (SLAs). It can also be used | |||
to understand whether a service is providing differential treatment to | to understand whether a service is providing differential treatment to | |||
certain flows.</t> | certain flows.</t> | |||
<t>When transport header information cannot be observed, other methods | <t>When transport header information cannot be observed, other methods | |||
have to be found to confirm that the traffic produced conforms to the | have to be found to confirm that the traffic produced conforms to the | |||
expectations of the operator or developer.</t> | expectations of the operator or developer.</t> | |||
<t>Independently verifiable performance metrics can be utilised to | <t>Independently verifiable performance metrics can be utilised to | |||
demonstrate regulatory compliance in some jurisdictions, and as a | demonstrate regulatory compliance in some jurisdictions and as a | |||
basis for informing design decisions. This can bring assurance to | basis for informing design decisions. This can bring assurance to | |||
those operating networks, often avoiding deployment of complex | those operating networks, often avoiding deployment of complex | |||
techniques that routinely monitor and manage Internet traffic flows | techniques that routinely monitor and manage Internet traffic flows | |||
(e.g., avoiding the capital and operational costs of deploying flow | (e.g., avoiding the capital and operational costs of deploying flow | |||
rate-limiting and network circuit-breaker methods <xref | rate-limiting and network circuit breaker methods <xref target="RFC8084" | |||
target="RFC8084"></xref>).</t> | format="default"/>).</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Implic" numbered="true" toc="default"> | ||||
<section anchor="Implic" title="Research, Development and Deployment"> | <name>Research, Development, and Deployment</name> | |||
<t>Research and development of new protocols and mechanisms need to be | <t>Research and development of new protocols and mechanisms need to be | |||
informed by measurement data (as described in the previous section). | informed by measurement data (as described in the previous section). | |||
Data can also help promote acceptance of proposed standards | Data can also help promote acceptance of proposed standards | |||
specifications by the wider community (e.g., as a method to judge the | specifications by the wider community (e.g., as a method to judge the | |||
safety for Internet deployment).</t> | safety for Internet deployment).</t> | |||
<t>Observed data is important to ensure the health of the research and | <t>Observed data is important to ensure the health of the research and | |||
development communities, and provides data needed to evaluate new | development communities and provides data needed to evaluate new | |||
proposals for standardisation. Open standards motivate a desire to | proposals for standardisation. Open standards motivate a desire to | |||
include independent observation and evaluation of performance and | include independent observation and evaluation of performance and | |||
deployment data. Independent data helps compare different methods, judge | deployment data. Independent data helps compare different methods, judge | |||
the level of deployment and ensure the wider applicability of the | the level of deployment, and ensure the wider applicability of the | |||
results. This is important when considering when a protocol or mechanism | results. This is important when considering when a protocol or mechanism | |||
should be standardised for use in the general Internet. This, in turn, | should be standardised for use in the general Internet. This, in turn, | |||
demands control/understanding about where and when measurement samples | demands control/understanding about where and when measurement samples | |||
are collected. This requires consideration of the methods used to | are collected. This requires consideration of the methods used to | |||
observe information and the appropriate balance between encrypting all | observe information and the appropriate balance between encrypting all | |||
and no transport header information.</t> | and no transport header information.</t> | |||
<t>There can be performance and operational trade-offs in exposing | <t>There can be performance and operational trade-offs in exposing | |||
selected information to network tools. This section explores key | selected information to network tools. This section explores key | |||
implications of tools and procedures that observe transport protocols, | implications of tools and procedures that observe transport protocols | |||
but does not endorse or condemn any specific practises.</t> | but does not endorse or condemn any specific practises.</t> | |||
<section anchor="Implic-Independent" numbered="true" toc="default"> | ||||
<section anchor="Implic-Independent" title="Independent Measurement"> | <name>Independent Measurement</name> | |||
<t>Encrypting transport header information has implications on the way | <t>Encrypting transport header information has implications on the way | |||
network data is collected and analysed. Independent observation by | network data is collected and analysed. Independent observations by | |||
multiple actors is currently used by the transport community to | multiple actors is currently used by the transport community to | |||
maintain an accurate understanding of the network within transport | maintain an accurate understanding of the network within transport | |||
area working groups, IRTF research groups, and the broader research | area working groups, IRTF research groups, and the broader research | |||
community. This is important to be able to provide accountability, and | community. This is important to be able to provide accountability and | |||
demonstrate that protocols behave as intended, although when providing | demonstrate that protocols behave as intended; although, when providing | |||
or using such information, it is important to consider the privacy of | or using such information, it is important to consider the privacy of | |||
the user and their incentive for providing accurate and detailed | the user and their incentive for providing accurate and detailed | |||
information.</t> | information.</t> | |||
<t>Protocols that expose the state of the transport protocol in their | <t>Protocols that expose the state of the transport protocol in their | |||
header (e.g., timestamps used to calculate the RTT, packet numbers | header (e.g., timestamps used to calculate the RTT, packet numbers | |||
used to assess congestion and requests for retransmission) provide an | used to assess congestion, and requests for retransmission) provide an | |||
incentive for a sending endpoint to provide consistent information, | incentive for a sending endpoint to provide consistent information, | |||
because a protocol will not work otherwise. An on-path observer can | because a protocol will not work otherwise. An on-path observer can | |||
have confidence that well-known (and ossified) transport header | have confidence that well-known (and ossified) transport header | |||
information represents the actual state of the endpoints, when this | information represents the actual state of the endpoints when this | |||
information is necessary for the protocol's correct operation.</t> | information is necessary for the protocol's correct operation.</t> | |||
<t>Encryption of transport header information could reduce the range | <t>Encryption of transport header information could reduce the range | |||
of actors that can observe useful data. This would limit the | of actors that can observe useful data. This would limit the | |||
information sources available to the Internet community to understand | information sources available to the Internet community to understand | |||
the operation of new transport protocols, reducing information to | the operation of new transport protocols, reducing information to | |||
inform design decisions and standardisation of the new protocols and | inform design decisions and standardisation of the new protocols and | |||
related operational practises. The cooperating dependence of network, | related operational practises. The cooperating dependence of network, | |||
application, and host to provide communication performance on the | application, and host to provide communication performance on the | |||
Internet is uncertain when only endpoints (i.e., at user devices and | Internet is uncertain when only endpoints (i.e., at user devices and | |||
within service platforms) can observe performance, and when | within service platforms) can observe performance and when | |||
performance cannot be independently verified by all parties.</t> | performance cannot be independently verified by all parties.</t> | |||
</section> | </section> | |||
<section anchor="Implic-design" numbered="true" toc="default"> | ||||
<section anchor="Implic-design" title="Measurable Transport Protocols"> | <name>Measurable Transport Protocols</name> | |||
<t>Transport protocol evolution, and the ability to measure and | <t>Transport protocol evolution and the ability to measure and | |||
understand the impact of protocol changes, have to proceed | understand the impact of protocol changes have to proceed | |||
hand-in-hand. A transport protocol that provides observable headers | hand-in-hand. A transport protocol that provides observable headers | |||
can be used to provide open and verifiable measurement data. | can be used to provide open and verifiable measurement data. | |||
Observation of pathologies has a critical role in the design of | Observation of pathologies has a critical role in the design of | |||
transport protocol mechanisms and development of new mechanisms and | transport protocol mechanisms and development of new mechanisms and | |||
protocols, and aides understanding of the interactions between | protocols and aides in understanding the interactions between | |||
cooperating protocols and network mechanisms, the implications of | cooperating protocols and network mechanisms, the implications of | |||
sharing capacity with other traffic and the impact of different | sharing capacity with other traffic, and the impact of different | |||
patterns of usage. The ability of other stakeholders to review | patterns of usage. The ability of other stakeholders to review | |||
transport header traces helps develop insight into the performance and | transport header traces helps develop insight into the performance and | |||
the traffic contribution of specific variants of a protocol.</t> | the traffic contribution of specific variants of a protocol.</t> | |||
<t>Development of new transport protocol mechanisms has to consider | <t>Development of new transport protocol mechanisms has to consider | |||
the scale of deployment and the range of environments in which the | the scale of deployment and the range of environments in which the | |||
transport is used. Experience has shown that it is often difficult to | transport is used. Experience has shown that it is often difficult to | |||
correctly implement new mechanisms <xref target="RFC8085"></xref>, and | correctly implement new mechanisms <xref target="RFC8085" format="defaul | |||
that mechanisms often evolve as a protocol matures, or in response to | t"/> and | |||
changes in network conditions, changes in network traffic, or changes | that mechanisms often evolve as a protocol matures or in response to | |||
changes in network conditions, in network traffic, or | ||||
to application usage. Analysis is especially valuable when based on | to application usage. Analysis is especially valuable when based on | |||
the behaviour experienced across a range of topologies, vendor | the behaviour experienced across a range of topologies, vendor | |||
equipment, and traffic patterns.</t> | equipment, and traffic patterns.</t> | |||
<t>Encryption enables a transport protocol to choose which internal | <t>Encryption enables a transport protocol to choose which internal | |||
state to reveal to devices on the network path, what information to | state to reveal to devices on the network path, what information to | |||
encrypt, and what fields to grease <xref target="RFC8701"></xref>. A | encrypt, and what fields to grease <xref target="RFC8701" format="defaul t"/>. A | |||
new design can provide summary information regarding its performance, | new design can provide summary information regarding its performance, | |||
congestion control state, etc., or to make available explicit | congestion control state, etc., or make explicit | |||
measurement information. For example, <xref | measurement information available. For example, <xref target="RFC9000" f | |||
target="I-D.ietf-quic-transport"></xref> specifies a way for a QUIC | ormat="default"/> | |||
endpoint to optionally set the spin-bit to explicitly reveal the RTT | specifies a way for a QUIC | |||
endpoint to optionally set the spin bit to explicitly reveal the RTT | ||||
of an encrypted transport session to the on-path network devices. | of an encrypted transport session to the on-path network devices. | |||
There is a choice of what information to expose. For some operational | There is a choice of what information to expose. For some operational | |||
uses, the information has to contain sufficient detail to understand, | uses, the information has to contain sufficient detail to understand, | |||
and possibly reconstruct, the network traffic pattern for further | and possibly reconstruct, the network traffic pattern for further | |||
testing. The interpretation of the information needs to consider | testing. The interpretation of the information needs to consider | |||
whether this information reflects the actual transport state of the | whether this information reflects the actual transport state of the | |||
endpoints. This might require the trust of transport protocol | endpoints. This might require the trust of transport protocol | |||
implementers, to correctly reveal the desired information.</t> | implementers to correctly reveal the desired information.</t> | |||
<t>New transport protocol formats are expected to facilitate an | <t>New transport protocol formats are expected to facilitate an | |||
increased pace of transport evolution, and with it the possibility to | increased pace of transport evolution and with it the possibility to | |||
experiment with and deploy a wide range of protocol mechanisms. At the | experiment with and deploy a wide range of protocol mechanisms. At the | |||
time of writing, there has been interest in a wide range of new | time of writing, there has been interest in a wide range of new | |||
transport methods, e.g., Larger Initial Window, Proportional Rate | transport methods, e.g., larger initial window, Proportional Rate | |||
Reduction (PRR), congestion control methods based on measuring | Reduction (PRR), congestion control methods based on measuring | |||
bottleneck bandwidth and round-trip propagation time, the introduction | bottleneck bandwidth and round-trip propagation time, the introduction | |||
of AQM techniques and new forms of ECN response (e.g., Data Centre | of AQM techniques, and new forms of ECN response (e.g., Data Centre | |||
TCP, DCTCP, and methods proposed for L4S). The growth and diversity of | TCP, DCTCP, and methods proposed for Low Latency Low Loss Scalable throu | |||
ghput (L4S)). The growth and diversity of | ||||
applications and protocols using the Internet also continues to | applications and protocols using the Internet also continues to | |||
expand. For each new method or application, it is desirable to build a | expand. For each new method or application, it is desirable to build a | |||
body of data reflecting its behaviour under a wide range of deployment | body of data reflecting its behaviour under a wide range of deployment | |||
scenarios, traffic load, and interactions with other | scenarios, traffic load, and interactions with other | |||
deployed/candidate methods.</t> | deployed/candidate methods.</t> | |||
</section> | </section> | |||
<section anchor="other-sources" numbered="true" toc="default"> | ||||
<section anchor="other-sources" title="Other Sources of Information"> | <name>Other Sources of Information</name> | |||
<t>Some measurements that traditionally rely on observable transport | <t>Some measurements that traditionally rely on observable transport | |||
information could be completed by utilising endpoint-based logging | information could be completed by utilising endpoint-based logging | |||
(e.g., based on <xref target="Quic-Trace">Quic-Trace</xref> and qlog | (e.g., based on <xref target="Quic-Trace" format="default">QUIC trace</x | |||
<xref target="I-D.marx-qlog-main-schema"></xref>). Such information | ref> and | |||
<xref target="I-D.ietf-quic-qlog-main-schema" format="default">qlog</xre | ||||
f>). Such information | ||||
has a diversity of uses, including developers wishing to | has a diversity of uses, including developers wishing to | |||
debug/understand the transport/application protocols with which they | debug/understand the transport/application protocols with which they | |||
work, researchers seeking to spot trends and anomalies, and to | work, researchers seeking to spot trends and anomalies, and | |||
characterise variants of protocols. A standard format for endpoint | to characterise variants of protocols. A standard format for endpoint | |||
logging could allow these to be shared (after appropriate | logging could allow these to be shared (after appropriate | |||
anonymisation) to understand performance and pathologies.</t> | anonymisation) to understand performance and pathologies.</t> | |||
<t>When measurement datasets are made available by servers or client | <t>When measurement datasets are made available by servers or client | |||
endpoints, additional metadata, such as the state of the network and | endpoints, additional metadata, such as the state of the network and | |||
conditions in which the system was observed, is often necessary to | conditions in which the system was observed, is often necessary to | |||
interpret this data to answer questions about network performance or | interpret this data to answer questions about network performance or | |||
understand a pathology. Collecting and coordinating such metadata is | understand a pathology. Collecting and coordinating such metadata is | |||
more difficult when the observation point is at a different location | more difficult when the observation point is at a different location | |||
to the bottleneck or device under evaluation <xref | to the bottleneck or device under evaluation <xref target="RFC7799" form | |||
target="RFC7799"></xref>.</t> | at="default"/>.</t> | |||
<t>Despite being applicable in some scenarios, endpoint logs do not | <t>Despite being applicable in some scenarios, endpoint logs do not | |||
provide equivalent information to on-path measurements made by devices | provide equivalent information to on-path measurements made by devices | |||
in the network. In particular, endpoint logs contain only a part of | in the network. In particular, endpoint logs contain only a part of | |||
the information to understand the operation of network devices and | the information to understand the operation of network devices and | |||
identify issues such as link performance or capacity sharing between | identify issues, such as link performance or capacity sharing between | |||
multiple flows. An analysis can require coordination between actors at | multiple flows. An analysis can require coordination between actors at | |||
different layers to successfully characterise flows and correlate the | different layers to successfully characterise flows and correlate the | |||
performance or behaviour of a specific mechanism with an equipment | performance or behaviour of a specific mechanism with an equipment | |||
configuration and traffic using operational equipment along a network | configuration and traffic using operational equipment along a network | |||
path (e.g., combining transport and network measurements to explore | path (e.g., combining transport and network measurements to explore | |||
congestion control dynamics, to understand the implications of traffic | congestion control dynamics to understand the implications of traffic | |||
on designs for active queue management or circuit breakers).</t> | on designs for active queue management or circuit breakers).</t> | |||
<t>Another source of information could arise from Operations, | ||||
<t>Another source of information could arise from operations, | Administration, and Maintenance (OAM) (see <xref target="OAM" format="de | |||
administration and management (OAM) (see <xref target="OAM"></xref>) | fault"/>). | |||
information data records could be embedded into header information at | Information data records could be embedded into header information at | |||
different layers to support functions such as performance evaluation, | different layers to support functions, such as performance evaluation, | |||
path-tracing, path verification information, classification and a | path tracing, path verification information, classification, and a | |||
diversity of other uses.</t> | diversity of other uses.</t> | |||
<t>In-situ OAM (IOAM) data fields <xref target="I-D.ietf-ippm-ioam-data" | ||||
<t>In-situ OAM (IOAM) data fields <xref | format="default"/> can be encapsulated into a | |||
target="I-D.ietf-ippm-ioam-data"></xref> can be encapsulated into a | ||||
variety of protocols to record operational and telemetry information | variety of protocols to record operational and telemetry information | |||
in an existing packet, while that packet traverses a part of the path | in an existing packet while that packet traverses a part of the path | |||
between two points in a network (e.g., within a particular IOAM | between two points in a network (e.g., within a particular IOAM | |||
management domain). The IOAM-Data-Fields are independent from the | management domain). IOAM-Data-Fields are independent from the | |||
protocols into which the IOAM-Data-Fields are encapsulated. For | protocols into which IOAM-Data-Fields are encapsulated. For example, IOA | |||
example, IOAM can provide proof that a certain traffic flow takes a | M | |||
pre-defined path, SLA verification for the live data traffic, and | can provide proof that a traffic flow takes a | |||
predefined path, SLA verification for the live data traffic, and | ||||
statistics relating to traffic distribution.</t> | statistics relating to traffic distribution.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Transport-encrypt" numbered="true" toc="default"> | ||||
<section anchor="Transport-encrypt" | <name>Encryption and Authentication of Transport Headers</name> | |||
title="Encryption and Authentication of Transport Headers"> | ||||
<t>There are several motivations for transport header encryption.</t> | <t>There are several motivations for transport header encryption.</t> | |||
<t>One motive to encrypt transport headers is to prevent network | <t>One motive to encrypt transport headers is to prevent network | |||
ossification from network devices that inspect well-known transport | ossification from network devices that inspect well-known transport | |||
headers. Once a network device observes a transport header and becomes | headers. Once a network device observes a transport header and becomes | |||
reliant upon using it, the overall use of that field can become | reliant upon using it, the overall use of that field can become | |||
ossified, preventing new versions of the protocol and mechanisms from | ossified, preventing new versions of the protocol and mechanisms from | |||
being deployed. Examples include:</t> | being deployed. Examples include:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>During the development of TLS 1.3 <xref target="RFC8446" format="def | |||
<t>During the development of TLS 1.3 <xref target="RFC8446"></xref>, | ault"/>, | |||
the design needed to function in the presence of deployed | the design needed to function in the presence of deployed | |||
middleboxes that relied on the presence of certain header fields | middleboxes that relied on the presence of certain header fields | |||
exposed in TLS 1.2 <xref target="RFC5426"></xref>.</t> | exposed in TLS 1.2 <xref target="RFC5426" format="default"/>.</li> | |||
<li>The design of Multipath TCP (MPTCP) <xref target="RFC8684" format="d | ||||
<t>The design of Multipath TCP (MPTCP) <xref | efault"/> had to account for middleboxes (known as | |||
target="RFC8684"></xref> had to account for middleboxes (known as | ||||
"TCP Normalizers") that monitor the evolution of the window | "TCP Normalizers") that monitor the evolution of the window | |||
advertised in the TCP header and then reset connections when the | advertised in the TCP header and then reset connections when the | |||
window did not grow as expected.</t> | window did not grow as expected.</li> | |||
<li>TCP Fast Open <xref target="RFC7413" format="default"/> can experien | ||||
<t>TCP Fast Open <xref target="RFC7413"></xref> can experience | ce | |||
problems due to middleboxes that modify the transport header of | problems due to middleboxes that modify the transport header of | |||
packets by removing "unknown" TCP options. Segments with | packets by removing "unknown" TCP options. Segments with | |||
unrecognised TCP options can be dropped, segments that contain data | unrecognised TCP options can be dropped, segments that contain data | |||
and set the SYN bit can be dropped, and some middleboxes that | and set the SYN bit can be dropped, and some middleboxes that | |||
disrupt connections that send data before completion of the | disrupt connections can send data before completion of the | |||
three-way handshake.</t> | three-way handshake.</li> | |||
<li>Other examples of TCP ossification have included middleboxes that | ||||
<t>Other examples of TCP ossification have included middleboxes that | ||||
modify transport headers by rewriting TCP sequence and | modify transport headers by rewriting TCP sequence and | |||
acknowledgement numbers, but are unaware of the (newer) TCP | acknowledgement numbers but are unaware of the (newer) TCP | |||
selective acknowledgement (SACK) option and therefore fail to | selective acknowledgement (SACK) option and therefore fail to | |||
correctly rewrite the SACK information to match the changes made to | correctly rewrite the SACK information to match the changes made to | |||
the fixed TCP header, preventing correct SACK operation.</t> | the fixed TCP header, preventing correct SACK operation.</li> | |||
</list></t> | </ul> | |||
<t>In all these cases, middleboxes with a hard-coded, but incomplete, | <t>In all these cases, middleboxes with a hard-coded, but incomplete, | |||
understanding of a specific transport behaviour (i.e., TCP), interacted | understanding of a specific transport behaviour (i.e., TCP) interacted | |||
poorly with transport protocols after the transport behaviour was | poorly with transport protocols after the transport behaviour was | |||
changed. In some cases, the middleboxes modified or replaced information | changed. In some cases, the middleboxes modified or replaced information | |||
in the transport protocol header.</t> | in the transport protocol header.</t> | |||
<t>Transport header encryption prevents an on-path device from observing | <t>Transport header encryption prevents an on-path device from observing | |||
the transport headers, and therefore stops ossified mechanisms being | the transport headers and therefore stops ossified mechanisms being | |||
used that directly rely on or infer semantics of the transport header | used that directly rely on or infer semantics of the transport header | |||
information. This encryption is normally combined with authentication of | information. This encryption is normally combined with authentication of | |||
the protected information. RFC 8546 summarises this approach, stating | the protected information. <xref target="RFC8546" format="default"/> summa | |||
that it is "The wire image, not the protocol's specification, determines | rises this | |||
approach, stating | ||||
that "[t]he wire image, not the protocol's specification, determines | ||||
how third parties on the network paths among protocol participants will | how third parties on the network paths among protocol participants will | |||
interact with that protocol" <xref target="RFC8546">(Section 1 of | interact with that protocol" (<xref target="RFC8546" sectionFormat="of" | |||
</xref>), and it can be expected that header information that is not | section="1"/>), and it can be expected that header information that is not | |||
encrypted will become ossified.</t> | encrypted will become ossified.</t> | |||
<t>Encryption does not itself prevent ossification of the network | <t>Encryption does not itself prevent ossification of the network | |||
service. People seeking to understand or classify network traffic could | service. People seeking to understand or classify network traffic could | |||
still come to rely on pattern inferences and other heuristics or machine | still come to rely on pattern inferences and other heuristics or machine | |||
learning to derive measurement data and as the basis for network | learning to derive measurement data and as the basis for network | |||
forwarding decisions <xref target="RFC8546"></xref>. This can also | forwarding decisions <xref target="RFC8546" format="default"/>. This can a | |||
create dependencies on the transport protocol, or the patterns of | lso | |||
create dependencies on the transport protocol or the patterns of | ||||
traffic it can generate, also resulting in ossification of the | traffic it can generate, also resulting in ossification of the | |||
service.</t> | service.</t> | |||
<t>Another motivation for using transport header encryption is to | <t>Another motivation for using transport header encryption is to | |||
improve privacy and to decrease opportunities for surveillance. Users | improve privacy and to decrease opportunities for surveillance. Users | |||
value the ability to protect their identity and location, and defend | value the ability to protect their identity and location and defend | |||
against analysis of the traffic. Revelations about the use of pervasive | against analysis of the traffic. Revelations about the use of pervasive | |||
surveillance <xref target="RFC7624"></xref> have, to some extent, eroded | surveillance <xref target="RFC7624" format="default"/> have, to some exten t, eroded | |||
trust in the service offered by network operators and have led to an | trust in the service offered by network operators and have led to an | |||
increased use of encryption. Concerns have also been voiced about the | increased use of encryption. Concerns have also been voiced about the | |||
addition of metadata to packets by third parties to provide analytics, | addition of metadata to packets by third parties to provide analytics, | |||
customisation, advertising, cross-site tracking of users, to bill the | customisation, advertising, cross-site tracking of users, | |||
customer, or to selectively allow or block content.</t> | customer billing, or selectively allowing or blocking content.</t> | |||
<t>Whatever the reasons, the IETF is designing protocols that include | <t>Whatever the reasons, the IETF is designing protocols that include | |||
transport header encryption (e.g., QUIC <xref | transport header encryption (e.g., QUIC <xref target="RFC9000" format="def | |||
target="I-D.ietf-quic-transport"></xref>) to supplement the already | ault"/>) to supplement the already | |||
widespread payload encryption, and to further limit exposure of | widespread payload encryption and to further limit exposure of | |||
transport metadata to the network.</t> | transport metadata to the network.</t> | |||
<t>If a transport protocol uses header encryption, the designers have to | <t>If a transport protocol uses header encryption, the designers have to | |||
decide whether to encrypt all, or a part of, the transport layer | decide whether to encrypt all or a part of the transport-layer | |||
information. Section 4 of <xref target="RFC8558"></xref> states: | information. <xref target="RFC8558" sectionFormat="of" section="4"/> state | |||
s, | ||||
"Anything exposed to the path should be done with the intent that it be | "Anything exposed to the path should be done with the intent that it be | |||
used by the network elements on the path".</t> | used by the network elements on the path."</t> | |||
<t>Certain transport header fields can be made observable to on-path | <t>Certain transport header fields can be made observable to on-path | |||
network devices, or can define new fields designed to explicitly expose | network devices or can define new fields designed to explicitly expose | |||
observable transport layer information to the network. Where exposed | observable transport-layer information to the network. Where exposed | |||
fields are intended to be immutable (i.e., can be observed, but not | fields are intended to be immutable (i.e., can be observed but not | |||
modified by a network device), the endpoints are encouraged to use | modified by a network device), the endpoints are encouraged to use | |||
authentication to provide a cryptographic integrity check that can | authentication to provide a cryptographic integrity check that can | |||
detect if these immutable fields have been modified by network devices. | detect if these immutable fields have been modified by network devices. | |||
Authentication can help to prevent attacks that rely on sending packets | Authentication can help to prevent attacks that rely on sending packets | |||
that fake exposed control signals in transport headers (e.g., TCP RST | that fake exposed control signals in transport headers (e.g., TCP RST | |||
spoofing). Making a part of a transport header observable or exposing | spoofing). Making a part of a transport header observable or exposing | |||
new header fields can lead to ossification of that part of a header as | new header fields can lead to ossification of that part of a header as | |||
network devices come to rely on observations of the exposed fields.</t> | network devices come to rely on observations of the exposed fields.</t> | |||
<t>The use of transport header authentication and encryption therefore | <t>The use of transport header authentication and encryption therefore | |||
exposes a tussle between middlebox vendors, operators, researchers, | exposes a tussle between middlebox vendors, operators, researchers, | |||
applications developers, and end-users: <list style="symbols"> | applications developers, and end users: </t> | |||
<t>On the one hand, future Internet protocols that support transport | <ul spacing="normal"> | |||
<li>On the one hand, future Internet protocols that support transport | ||||
header encryption assist in the restoration of the end-to-end nature | header encryption assist in the restoration of the end-to-end nature | |||
of the Internet by returning complex processing to the endpoints. | of the Internet by returning complex processing to the endpoints. | |||
Since middleboxes cannot modify what they cannot see, the use of | Since middleboxes cannot modify what they cannot see, the use of | |||
transport header encryption can improve application and end-user | transport header encryption can improve application and end-user | |||
privacy by reducing leakage of transport metadata to operators that | privacy by reducing leakage of transport metadata to operators that | |||
deploy middleboxes.</t> | deploy middleboxes.</li> | |||
<li>On the other hand, encryption of transport-layer information has | ||||
<t>On the other hand, encryption of transport layer information has | ||||
implications for network operators and researchers seeking to | implications for network operators and researchers seeking to | |||
understand the dynamics of protocols and traffic patterns, since it | understand the dynamics of protocols and traffic patterns, since it | |||
reduces the information that is available to them.</t> | reduces the information that is available to them.</li> | |||
</list></t> | </ul> | |||
<t>The following briefly reviews some security design options for | <t>The following briefly reviews some security design options for | |||
transport protocols. A Survey of the Interaction between Security | transport protocols. "A Survey of the Interaction between Security | |||
Protocols and Transport Services <xref target="RFC8922"></xref> provides | Protocols and Transport Services" <xref target="RFC8922" format="default"/ | |||
> provides | ||||
more details concerning commonly used encryption methods at the | more details concerning commonly used encryption methods at the | |||
transport layer.</t> | transport layer.</t> | |||
<t>Security work typically employs a design technique that seeks to | <t>Security work typically employs a design technique that seeks to | |||
expose only what is needed <xref target="RFC3552"></xref>. This approach | expose only what is needed <xref target="RFC3552" format="default"/>. This approach | |||
provides incentives to not reveal any information that is not necessary | provides incentives to not reveal any information that is not necessary | |||
for the end-to-end communication. The IETF has provided guidelines for | for the end-to-end communication. The IETF has provided guidelines for | |||
writing Security Considerations for IETF specifications <xref | writing security considerations for IETF specifications <xref target="RFC3 | |||
target="RFC3552"></xref>.</t> | 552" format="default"/>.</t> | |||
<t>Endpoint design choices impacting privacy also need to be considered | <t>Endpoint design choices impacting privacy also need to be considered | |||
as a part of the design process <xref target="RFC6973"></xref>. The IAB | as a part of the design process <xref target="RFC6973" format="default"/>. | |||
has provided guidance for analyzing and documenting privacy | The IAB | |||
considerations within IETF specifications <xref | has provided guidance for analysing and documenting privacy | |||
target="RFC6973"></xref>.</t> | considerations within IETF specifications <xref target="RFC6973" format="d | |||
efault"/>.</t> | ||||
<t><list style="hanging"> | <dl newline="true" spacing="normal"> | |||
<t | <dt>Authenticating the Transport Protocol Header:</dt> | |||
hangText="Authenticating the Transport Protocol Header:">Transport | <dd><t>Transport-layer header information can be authenticated. An examp | |||
layer header information can be authenticated. An example transport | le transport | |||
authentication mechanism is TCP-Authentication (TCP-AO) <xref | authentication mechanism is TCP Authentication Option (TCP-AO) <xref t | |||
target="RFC5925"> </xref>. This TCP option authenticates the IP | arget="RFC5925" format="default"> </xref>. This TCP option authenticates the IP | |||
pseudo header, TCP header, and TCP data. TCP-AO protects the | pseudo-header, TCP header, and TCP data. TCP-AO protects the | |||
transport layer, preventing attacks from disabling the TCP | transport layer, preventing attacks from disabling the TCP | |||
connection itself and provides replay protection. Such | connection itself and provides replay protection. Such | |||
authentication might interact with middleboxes, depending on their | authentication might interact with middleboxes, depending on their | |||
behaviour <xref target="RFC3234"> </xref>.</t> | behaviour <xref target="RFC3234" format="default"> </xref>.</t> | |||
<t>The IPsec Authentication Header (AH) <xref target="RFC4302" format="d | ||||
<t>The IPsec Authentication Header (AH) <xref target="RFC4302"> | efault"> | |||
</xref> was designed to work at the network layer and authenticate | </xref> was designed to work at the network layer and authenticate | |||
the IP payload. This approach authenticates all transport headers, | the IP payload. This approach authenticates all transport headers | |||
and verifies their integrity at the receiver, preventing | and verifies their integrity at the receiver, preventing | |||
modification by network devices on the path. The IPsec Encapsulating | modification by network devices on the path. The IPsec Encapsulating | |||
Security Payload (ESP) <xref target="RFC4303"></xref> can also | Security Payload (ESP) <xref target="RFC4303" format="default"/> can a lso | |||
provide authentication and integrity without confidentiality using | provide authentication and integrity without confidentiality using | |||
the NULL encryption algorithm <xref target="RFC2410"></xref>. SRTP | the NULL encryption algorithm <xref target="RFC2410" format="default"/ | |||
<xref target="RFC3711"></xref> is another example of a transport | >. SRTP | |||
<xref target="RFC3711" format="default"/> is another example of a tran | ||||
sport | ||||
protocol that allows header authentication.</t> | protocol that allows header authentication.</t> | |||
</dd> | ||||
<t hangText="Integrity Check">Transport protocols usually employ | <dt>Integrity Check:</dt> | |||
<dd>Transport protocols usually employ | ||||
integrity checks on the transport header information. Security | integrity checks on the transport header information. Security | |||
method usually employ stronger checks and can combine this with | methods usually employ stronger checks and can combine this with | |||
authentication. An integrity check that protects the immutable | authentication. An integrity check that protects the immutable | |||
transport header fields, but can still expose the transport header | transport header fields, but can still expose the transport header | |||
information in the clear, allows on-path network devices to observe | information in the clear, allows on-path network devices to observe | |||
these fields. An integrity check is not able to prevent modification | these fields. An integrity check is not able to prevent modification | |||
by network devices on the path, but can prevent a receiving endpoint | by network devices on the path but can prevent a receiving endpoint | |||
from accepting changes and avoid impact on the transport protocol | from accepting changes and avoid impact on the transport protocol | |||
operation, including some types of attack.</t> | operation, including some types of attack.</dd> | |||
<dt>Selectively Encrypting Transport Headers and Payload:</dt> | ||||
<t | <dd><t>A | |||
hangText="Selectively Encrypting Transport Headers and Payload:">A | transport protocol design that encrypts selected header fields | |||
transport protocol design that encrypts selected header fields, | ||||
allows specific transport header fields to be made observable by | allows specific transport header fields to be made observable by | |||
network devices on the path. This information is explicitly exposed | network devices on the path. This information is explicitly exposed | |||
either in a transport header field or lower layer protocol header. A | either in a transport header field or lower layer protocol header. A | |||
design that only exposes immutable fields can also perform | design that only exposes immutable fields can also perform | |||
end-to-end authentication of these fields across the path to prevent | end-to-end authentication of these fields across the path to prevent | |||
undetected modification of the immutable transport headers.</t> | undetected modification of the immutable transport headers.</t> | |||
<t>Mutable fields in the transport header provide opportunities | ||||
<t>Mutable fields in the transport header provide opportunities | ||||
where on-path network devices can modify the transport behaviour | where on-path network devices can modify the transport behaviour | |||
(e.g., the extended headers described in <xref | (e.g., the extended headers described in <xref target="I-D.trammell-pl | |||
target="I-D.trammell-plus-abstract-mech"></xref>). An example of a | us-abstract-mech" | |||
format="default"/>). An example of a | ||||
method that encrypts some, but not all, transport header information | method that encrypts some, but not all, transport header information | |||
is GRE-in-UDP <xref target="RFC8086"> </xref> when used with GRE | is GRE-in-UDP <xref target="RFC8086" format="default"> </xref> when us ed with GRE | |||
encryption.</t> | encryption.</t> | |||
</dd> | ||||
<t hangText="Optional Encryption of Header Information:">There are | <dt>Optional Encryption of Header Information:</dt> | |||
<dd>There are | ||||
implications to the use of optional header encryption in the design | implications to the use of optional header encryption in the design | |||
of a transport protocol, where support of optional mechanisms can | of a transport protocol, where support of optional mechanisms can | |||
increase the complexity of the protocol and its implementation, and | increase the complexity of the protocol and its implementation and | |||
in the management decisions that have to be made to use variable | in the management decisions that have to be made to use variable | |||
format fields. Instead, fields of a specific type ought to be sent | format fields. Instead, fields of a specific type ought to be sent | |||
with the same level of confidentiality or integrity protection.</t> | with the same level of confidentiality or integrity protection.</dd> | |||
<dt>Greasing:</dt> | ||||
<t hangText="Greasing:">Protocols often provide extensibility | <dd><t>Protocols often provide extensibility | |||
features, reserving fields or values for use by future versions of a | features, reserving fields or values for use by future versions of a | |||
specification. The specification of receivers has traditionally | specification. The specification of receivers has traditionally | |||
ignored unspecified values, however on-path network devices have | ignored unspecified values; however, on-path network devices have | |||
emerged that ossify to require a certain value in a field, or re-use | emerged that ossify to require a certain value in a field or reuse | |||
a field for another purpose. When the specification is later | a field for another purpose. When the specification is later | |||
updated, it is impossible to deploy the new use of the field, and | updated, it is impossible to deploy the new use of the field and | |||
forwarding of the protocol could even become conditional on a | forwarding of the protocol could even become conditional on a | |||
specific header field value.</t> | specific header field value.</t> | |||
<t>A protocol can intentionally vary the value, format, | ||||
<t hangText="">A protocol can intentionally vary the value, format, | ||||
and/or presence of observable transport header fields at random | and/or presence of observable transport header fields at random | |||
<xref target="RFC8701"></xref>. This prevents a network device | <xref target="RFC8701" format="default"/>. This prevents a network dev ice | |||
ossifying the use of a specific observable field and can ease future | ossifying the use of a specific observable field and can ease future | |||
deployment of new uses of the value or code-point. This is not a | deployment of new uses of the value or code point. This is not a | |||
security mechanism, although the use can be combined with an | security mechanism, although the use can be combined with an | |||
authentication mechanism.</t> | authentication mechanism.</t> | |||
</list></t> | </dd> | |||
</dl> | ||||
<t>Different transports use encryption to protect their header | <t>Different transports use encryption to protect their header | |||
information to varying degrees. The trend is towards increased | information to varying degrees. The trend is towards increased | |||
protection.</t> | protection.</t> | |||
</section> | </section> | |||
<section anchor="EH2" numbered="true" toc="default"> | ||||
<section anchor="EH2" | <name>Intentionally Exposing Transport Information to the Network</name> | |||
title="Intentionally Exposing Transport Information to the Network" | ||||
> | ||||
<t>A transport protocol can choose to expose certain transport | <t>A transport protocol can choose to expose certain transport | |||
information to on-path devices operating at the network layer by sending | information to on-path devices operating at the network layer by sending | |||
observable fields. One approach is to make an explicit choice not to | observable fields. One approach is to make an explicit choice not to | |||
encrypt certain transport header fields, making this transport | encrypt certain transport header fields, making this transport | |||
information observable by an on-path network device. Another approach is | information observable by an on-path network device. Another approach is | |||
to expose transport information in a network-layer extension header (see | to expose transport information in a network-layer extension header (see | |||
<xref target="EH"></xref>). Both are examples of explicit information | <xref target="EH" format="default"/>). Both are examples of explicit infor | |||
intended to be used by network devices on the path <xref | mation | |||
target="RFC8558"></xref>.</t> | intended to be used by network devices on the path <xref target="RFC8558" | |||
format="default"/>.</t> | ||||
<t>Whatever the mechanism used to expose the information, a decision to | <t>Whatever the mechanism used to expose the information, a decision to | |||
expose only specific information places the transport endpoint in | expose only specific information places the transport endpoint in | |||
control of what to expose outside of the encrypted transport header. | control of what to expose outside of the encrypted transport header. | |||
This decision can then be made independently of the transport protocol | This decision can then be made independently of the transport protocol | |||
functionality. This can be done by exposing part of the transport header | functionality. This can be done by exposing part of the transport header | |||
or as a network layer option/extension.</t> | or as a network-layer option/extension.</t> | |||
<section anchor="EH" numbered="true" toc="default"> | ||||
<section anchor="EH" | <name>Exposing Transport Information in Extension Headers</name> | |||
title="Exposing Transport Information in Extension Headers"> | <t>At the network layer, packets can carry optional headers that | |||
<t>At the network-layer, packets can carry optional headers that | ||||
explicitly expose transport header information to the on-path devices | explicitly expose transport header information to the on-path devices | |||
operating at the network layer (<xref target="tunlhf"></xref>). For | operating at the network layer (<xref target="tunlhf" format="default"/> | |||
example, an endpoint that sends an IPv6 Hop-by-Hop option <xref | ). For | |||
target="RFC8200"></xref> can provide explicit transport layer | example, an endpoint that sends an IPv6 hop-by-hop option <xref target=" | |||
RFC8200" | ||||
format="default"/> can provide explicit transport-layer | ||||
information that can be observed and used by network devices on the | information that can be observed and used by network devices on the | |||
path. New hop-by-hop options are not recommended in <xref | path. New hop-by-hop options are not recommended in <xref target="RFC820 | |||
target="RFC8200">RFC 8200</xref> "because nodes may be configured to | 0" | |||
format="default"/> "because nodes may be configured to | ||||
ignore the Hop-by-Hop Options header, drop packets containing a | ignore the Hop-by-Hop Options header, drop packets containing a | |||
Hop-by-Hop Options header, or assign packets containing a Hop-by-Hop | Hop-by-Hop Options header, or assign packets containing a Hop-by-Hop | |||
Options header to a slow processing path. Designers considering | Options header to a slow processing path. Designers considering | |||
defining new hop-by-hop options need to be aware of this likely | defining new hop-by-hop options need to be aware of this likely | |||
behavior."</t> | behavior."</t> | |||
<t>Network-layer optional headers explicitly indicate the information | <t>Network-layer optional headers explicitly indicate the information | |||
that is exposed, whereas use of exposed transport header information | that is exposed, whereas use of exposed transport header information | |||
first requires an observer to identify the transport protocol and its | first requires an observer to identify the transport protocol and its | |||
format. (See <xref target="Current-demux"></xref>.)</t> | format. See <xref target="Current-demux" format="default"/>.</t> | |||
<t>An arbitrary path can include one or more network devices that drop | <t>An arbitrary path can include one or more network devices that drop | |||
packets that include a specific header or option used for this purpose | packets that include a specific header or option used for this purpose | |||
(see <xref target="RFC7872"></xref>). This could impact the proper | (see <xref target="RFC7872" format="default"/>). This could impact the p roper | |||
functioning of the protocols using the path. Protocol methods can be | functioning of the protocols using the path. Protocol methods can be | |||
designed to probe to discover whether the specific option(s) can be | designed to probe to discover whether the specific option(s) can be | |||
used along the current path, enabling use on arbitrary paths.</t> | used along the current path, enabling use on arbitrary paths.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Common Exposed Transport Information"> | <name>Common Exposed Transport Information</name> | |||
<t>There are opportunities for multiple transport protocols to | <t>There are opportunities for multiple transport protocols to | |||
consistently supply common observable information <xref | consistently supply common observable information <xref target="RFC8558" | |||
target="RFC8558"></xref>. A common approach can result in an open | format="default"/>. A common approach can result in an open | |||
definition of the observable fields. This has the potential that the | definition of the observable fields. This has the potential that the | |||
same information can be utilised across a range of operational and | same information can be utilised across a range of operational and | |||
analysis tools.</t> | analysis tools.</t> | |||
</section> | </section> | |||
<section anchor="exposing" numbered="true" toc="default"> | ||||
<section anchor="exposing" | <name>Considerations for Exposing Transport Information</name> | |||
title="Considerations for Exposing Transport Information"> | ||||
<t>Considerations concerning what information, if any, it is | <t>Considerations concerning what information, if any, it is | |||
appropriate to expose include:</t> | appropriate to expose include:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>On the one hand, explicitly exposing derived fields containing | |||
<t>On the one hand, explicitly exposing derived fields containing | ||||
relevant transport information (e.g., metrics for loss, latency, | relevant transport information (e.g., metrics for loss, latency, | |||
etc) can avoid network devices needing to derive this information | etc.) can avoid network devices needing to derive this information | |||
from other header fields. This could result in development and | from other header fields. This could result in development and | |||
evolution of transport-independent tools around a common | evolution of transport-independent tools around a common | |||
observable header, and permit transport protocols to also evolve | observable header and permit transport protocols to also evolve | |||
independently of this ossified header <xref | independently of this ossified header <xref target="RFC8558" format= | |||
target="RFC8558"></xref>.</t> | "default"/>.</li> | |||
<li>On the other hand, protocols and implementations might be | ||||
<t>On the other hand, protocols and implementations might be | ||||
designed to avoid consistently exposing external information that | designed to avoid consistently exposing external information that | |||
corresponds to the actual internal information used by the | corresponds to the actual internal information used by the | |||
protocol itself. An endpoint/protocol could choose to expose | protocol itself. An endpoint/protocol could choose to expose | |||
transport header information to optimise the benefit it gets from | transport header information to optimise the benefit it gets from | |||
the network <xref target="RFC8558"></xref>. The value of this | the network <xref target="RFC8558" format="default"/>. The value of this | |||
information for analysing operation of the transport layer would | information for analysing operation of the transport layer would | |||
be enhanced if the exposed information could be verified to match | be enhanced if the exposed information could be verified to match | |||
the transport protocol's observed behavior.</t> | the transport protocol's observed behavior.</li> | |||
</list></t> | </ul> | |||
<t>The motivation to include actual transport header information and | <t>The motivation to include actual transport header information and | |||
the implications of network devices using this information has to be | the implications of network devices using this information has to be | |||
considered when proposing such a method. RFC 8558 summarises this as | considered when proposing such a method. <xref target="RFC8558" format=" | |||
"When signals from endpoints to the path are independent from the | default"/> | |||
summarises this as:</t> | ||||
<blockquote> | ||||
When signals from endpoints to the path are independent from the | ||||
signals used by endpoints to manage the flow's state mechanics, they | signals used by endpoints to manage the flow's state mechanics, they | |||
may be falsified by an endpoint without affecting the peer's | may be falsified by an endpoint without affecting the peer's | |||
understanding of the flow's state. For encrypted flows, this | understanding of the flow's state. For encrypted flows, this | |||
divergence is not detectable by on-path devices <xref | divergence is not detectable by on-path devices.</blockquote> | |||
target="RFC8558"></xref>.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="OAM" numbered="true" toc="default"> | ||||
<section anchor="OAM" | <name>Addition of Transport OAM Information to Network-Layer Headers</name | |||
title="Addition of Transport OAM Information to Network-Layer Heade | > | |||
rs"> | ||||
<t>Even when the transport headers are encrypted, on-path devices can | <t>Even when the transport headers are encrypted, on-path devices can | |||
make measurements by utilising additional protocol headers carrying OAM | make measurements by utilising additional protocol headers carrying OAM | |||
information in an additional packet header. OAM information can be | information in an additional packet header. OAM information can be | |||
included with packets to perform functions such as identification of | included with packets to perform functions, such as identification of | |||
transport protocols and flows, to aide understanding of network or | transport protocols and flows, to aide understanding of network or | |||
transport performance, or to support network operations or mitigate the | transport performance or to support network operations or mitigate the | |||
effects of specific network segments.</t> | effects of specific network segments.</t> | |||
<t>Using network-layer approaches to reveal information has the | <t>Using network-layer approaches to reveal information has the | |||
potential that the same method (and hence same observation and analysis | potential that the same method (and hence same observation and analysis | |||
tools) can be consistently used by multiple transport protocols. This | tools) can be consistently used by multiple transport protocols. This | |||
approach also could be applied to methods beyond OAM (see <xref | approach also could be applied to methods beyond OAM (see <xref target="EH | |||
target="EH2"></xref>). There can also be less desirable implications | 2" format="default"/>). There can also be less desirable implications | |||
from separating the operation of the transport protocol from the | from separating the operation of the transport protocol from the | |||
measurement framework.</t> | measurement framework.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Use of OAM within a Maintenance Domain"> | <name>Use of OAM within a Maintenance Domain</name> | |||
<t>OAM information can be restricted to a maintenance domain, | <t>OAM information can be restricted to a maintenance domain, | |||
typically owned and operated by a single entity. OAM information can | typically owned and operated by a single entity. OAM information can | |||
be added at the ingress to the maintenance domain (e.g., an Ethernet | be added at the ingress to the maintenance domain (e.g., an Ethernet | |||
protocol header with timestamps and sequence number information using | protocol header with timestamps and sequence number information using | |||
a method such as 802.11ag or in-situ OAM <xref | a method such as 802.11ag or in-situ OAM <xref target="I-D.ietf-ippm-ioa | |||
target="I-D.ietf-ippm-ioam-data"></xref>, or as a part of the | m-data" format="default"/> or as a part of the | |||
encapsulation protocol). This additional header information is not | encapsulation protocol). This additional header information is not | |||
delivered to the endpoints and is typically removed at the egress of | delivered to the endpoints and is typically removed at the egress of | |||
the maintenance domain.</t> | the maintenance domain.</t> | |||
<t>Although some types of measurements are supported, this approach | <t>Although some types of measurements are supported, this approach | |||
does not cover the entire range of measurements described in this | does not cover the entire range of measurements described in this | |||
document. In some cases, it can be difficult to position measurement | document. In some cases, it can be difficult to position measurement | |||
tools at the appropriate segments/nodes and there can be challenges in | tools at the appropriate segments/nodes, and there can be challenges in | |||
correlating the downstream/upstream information when in-band OAM data | correlating the downstream/upstream information when in-band OAM data | |||
is inserted by an on-path device.</t> | is inserted by an on-path device.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Use of OAM across Multiple Maintenance Domains"> | <name>Use of OAM across Multiple Maintenance Domains</name> | |||
<t>OAM information can also be added at the network layer by the | <t>OAM information can also be added at the network layer by the | |||
sender as an IPv6 extension header or an IPv4 option, or in an | sender as an IPv6 extension header or an IPv4 option or in an | |||
encapsulation/tunnel header that also includes an extension header or | encapsulation/tunnel header that also includes an extension header or | |||
option. This information can be used across multiple network segments, | option. This information can be used across multiple network segments | |||
or between the transport endpoints.</t> | or between the transport endpoints.</t> | |||
<t>One example is the IPv6 Performance and Diagnostic Metrics (PDM) | <t>One example is the IPv6 Performance and Diagnostic Metrics (PDM) | |||
destination option <xref target="RFC8250"></xref>. This allows a | destination option <xref target="RFC8250" format="default"/>. This allow s a | |||
sender to optionally include a destination option that carries header | sender to optionally include a destination option that carries header | |||
fields that can be used to observe timestamps and packet sequence | fields that can be used to observe timestamps and packet sequence | |||
numbers. This information could be authenticated by a receiving | numbers. This information could be authenticated by a receiving | |||
transport endpoint when the information is added at the sender and | transport endpoint when the information is added at the sender and | |||
visible at the receiving endpoint, although methods to do this have | visible at the receiving endpoint, although methods to do this have | |||
not currently been proposed. This needs to be explicitly enabled at | not currently been proposed. This needs to be explicitly enabled at | |||
the sender.</t> | the sender.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Conclusions"> | <name>Conclusions</name> | |||
<t>Header encryption and strong integrity checks are being incorporated | <t>Header authentication and encryption and strong integrity checks are be | |||
into new transport protocols and have important benefits. The pace of | ing incorporated | |||
development of transports using the WebRTC data channel, and the rapid | into new transport protocols and have important benefits. The pace of the | |||
deployment of the QUIC transport protocol, can both be attributed to | development of transports using the WebRTC data channel and the rapid | |||
deployment of the QUIC transport protocol can both be attributed to | ||||
using the combination of UDP as a substrate while providing | using the combination of UDP as a substrate while providing | |||
confidentiality and authentication of the encapsulated transport headers | confidentiality and authentication of the encapsulated transport headers | |||
and payload.</t> | and payload.</t> | |||
<t>This document has described some current practises, and the | <t>This document has described some current practises, and the | |||
implications for some stakeholders, when transport layer header | implications for some stakeholders, when transport-layer header | |||
encryption is used. It does not judge whether these practises are | encryption is used. It does not judge whether these practises are | |||
necessary, or endorse the use of any specific practise. Rather, the | necessary or endorse the use of any specific practise. Rather, the | |||
intent is to highlight operational tools and practises to consider when | intent is to highlight operational tools and practises to consider when | |||
designing and modifying transport protocols, so protocol designers can | designing and modifying transport protocols, so protocol designers can | |||
make informed choices about what transport header fields to encrypt, and | make informed choices about what transport header fields to encrypt and | |||
whether it might be beneficial to make an explicit choice to expose | whether it might be beneficial to make an explicit choice to expose | |||
certain fields to devices on the network path. In making such a | certain fields to devices on the network path. In making such a | |||
decision, it is important to balance: <list style="symbols"> | decision, it is important to balance: </t> | |||
<t>User Privacy: The less transport header information that is | <dl newline="true" spacing="normal"> | |||
<dt>User Privacy:</dt> | ||||
<dd>The less transport header information that is | ||||
exposed to the network, the lower the risk of leaking metadata that | exposed to the network, the lower the risk of leaking metadata that | |||
might have user privacy implications. Transports that chose to | might have user privacy implications. Transports that chose to | |||
expose some header fields need to make a privacy assessment to | expose some header fields need to make a privacy assessment to | |||
understand the privacy cost versus benefit trade-off in making that | understand the privacy cost versus benefit trade-off in making that | |||
information available. The design of the QUIC spin bit to the | information available. The design of the QUIC spin bit to the | |||
network is an example of such considered analysis.</t> | network is an example of such considered analysis.</dd> | |||
<dt>Transport Ossification:</dt> | ||||
<t>Transport Ossification: Unencrypted transport header fields are | <dd>Unencrypted transport header fields are | |||
likely to ossify rapidly, as network devices come to rely on their | likely to ossify rapidly, as network devices come to rely on their | |||
presence, making it difficult to change the transport in future. | presence, making it difficult to change the transport in future. | |||
This argues that the choice to expose information to the network is | This argues that the choice to expose information to the network is | |||
made deliberately and with care, since it is essentially defining a | made deliberately and with care, since it is essentially defining a | |||
stable interface between the transport and the network. Some | stable interface between the transport and the network. Some | |||
protocols will want to make that interface as limited as possible; | protocols will want to make that interface as limited as possible; | |||
other protocols might find value in exposing certain information to | other protocols might find value in exposing certain information to | |||
signal to the network, or in allowing the network to change certain | signal to the network or in allowing the network to change certain | |||
header fields as signals to the transport. The visible wire image of | header fields as signals to the transport. The visible wire image of | |||
a protocol should be explicitly designed.</t> | a protocol should be explicitly designed.</dd> | |||
<dt>Network Ossification:</dt> | ||||
<t>Network Ossification: While encryption can reduce ossification of | <dd>While encryption can reduce ossification of | |||
the transport protocol, it does not itself prevent ossification of | the transport protocol, it does not itself prevent ossification of | |||
the network service. People seeking to understand network traffic | the network service. People seeking to understand network traffic | |||
could still come to rely on pattern inferences and other heuristics | could still come to rely on pattern inferences and other heuristics | |||
or machine learning to derive measurement data and as the basis for | or machine learning to derive measurement data and as the basis for | |||
network forwarding decisions <xref target="RFC8546"></xref>. This | network forwarding decisions <xref target="RFC8546" format="default"/> | |||
creates dependencies on the transport protocol, or the patterns of | . This | |||
creates dependencies on the transport protocol or the patterns of | ||||
traffic it can generate, resulting in ossification of the | traffic it can generate, resulting in ossification of the | |||
service.</t> | service.</dd> | |||
<dt>Impact on Operational Practice:</dt> | ||||
<t>Impact on Operational Practice: The network operations community | <dd>The network operations community | |||
has long relied on being able to understand Internet traffic | has long relied on being able to understand Internet traffic | |||
patterns, both in aggregate and at the flow level, to support | patterns, both in aggregate and at the flow level, to support | |||
network management, traffic engineering, and troubleshooting. | network management, traffic engineering, and troubleshooting. | |||
Operational practice has developed based on the information | Operational practice has developed based on the information | |||
available from unencrypted transport headers. The IETF has supported | available from unencrypted transport headers. The IETF has supported | |||
this practice by developing operations and management | this practice by developing operations and management specifications, | |||
specifications, interface specifications, and associated Best | interface | |||
Current Practises. Widespread deployment of transport protocols that | specifications, and associated Best | |||
encrypt their information will impact network operations, unless | Current Practices. Widespread deployment of transport protocols that | |||
encrypt their information will impact network operations unless | ||||
operators can develop alternative practises that work without access | operators can develop alternative practises that work without access | |||
to the transport header.</t> | to the transport header.</dd> | |||
<dt>Pace of Evolution:</dt> | ||||
<t>Pace of Evolution: Removing obstacles to change can enable an | <dd>Removing obstacles to change can enable an | |||
increased pace of evolution. If a protocol changes its transport | increased pace of evolution. If a protocol changes its transport | |||
header format (wire image), or its transport behaviour, this can | header format (wire image) or its transport behaviour, this can | |||
result in the currently deployed tools and methods becoming no | result in the currently deployed tools and methods becoming no | |||
longer relevant. Where this needs to be accompanied by development | longer relevant. Where this needs to be accompanied by development | |||
of appropriate operational support functions and procedures, it can | of appropriate operational support functions and procedures, it can | |||
incur a cost in new tooling to catch-up with each change. Protocols | incur a cost in new tooling to catch up with each change. Protocols | |||
that consistently expose observable data do not require such | that consistently expose observable data do not require such | |||
development, but can suffer from ossification and need to consider | development but can suffer from ossification and need to consider | |||
if the exposed protocol metadata has privacy implications. There is | if the exposed protocol metadata has privacy implications. There is | |||
no single deployment context, and therefore designers need to | no single deployment context; therefore, designers need to | |||
consider the diversity of operational networks (ISPs, enterprises, | consider the diversity of operational networks (ISPs, enterprises, | |||
DDoS mitigation and firewall maintainers, etc.).</t> | DDoS mitigation and firewall maintainers, etc.).</dd> | |||
<!----> | ||||
<!----> | ||||
<t>Supporting Common Specifications: Common, open, transport | <dt>Supporting Common Specifications:</dt> | |||
<dd>Common, open, transport | ||||
specifications can stimulate engagement by developers, users, | specifications can stimulate engagement by developers, users, | |||
researchers, and the broader community. Increased protocol diversity | researchers, and the broader community. Increased protocol diversity | |||
can be beneficial in meeting new requirements, but the ability to | can be beneficial in meeting new requirements, but the ability to | |||
innovate without public scrutiny risks point solutions that optimise | innovate without public scrutiny risks point solutions that optimise | |||
for specific cases, and that can accidentally disrupt operations | for specific cases and that can accidentally disrupt operations | |||
of/in different parts of the network. The social contract that | of/in different parts of the network. The social contract that | |||
maintains the stability of the Internet relies on accepting common | maintains the stability of the Internet relies on accepting common | |||
transport specifications, and on it being possible to detect | transport specifications and on it being possible to detect | |||
violations. The existence of independent measurements, transparency, | violations. The existence of independent measurements, transparency, | |||
and public scrutiny of transport protocol behaviour, help the | and public scrutiny of transport protocol behaviour helps the | |||
community to enforce the social norm that protocol implementations | community to enforce the social norm that protocol implementations | |||
behave fairly and conform (at least mostly) to the specifications. | behave fairly and conform (at least mostly) to the specifications. | |||
It is important to find new ways of maintaining that community trust | It is important to find new ways of maintaining that community trust | |||
as increased use of transport header encryption limits visibility | as increased use of transport header encryption limits visibility | |||
into transport behaviour (see also <xref | into transport behaviour (see also <xref target="exposing" format="def | |||
target="exposing"></xref>).</t> | ault"/>).</dd> | |||
<dt>Impact on Benchmarking and Understanding Feature Interactions:</dt> | ||||
<t>Impact on Benchmarking and Understanding Feature Interactions: An | <dd>An appropriate vantage point for observation, coupled with timing | |||
appropriate vantage point for observation, coupled with timing | ||||
information about traffic flows, provides a valuable tool for | information about traffic flows, provides a valuable tool for | |||
benchmarking network devices, endpoint stacks, and/or | benchmarking network devices, endpoint stacks, and/or | |||
configurations. This can help understand complex feature | configurations. This can help understand complex feature | |||
interactions. An inability to observe transport header information | interactions. An inability to observe transport header information | |||
can make it harder to diagnose and explore interactions between | can make it harder to diagnose and explore interactions between | |||
features at different protocol layers, a side-effect of not allowing | features at different protocol layers, a side effect of not allowing | |||
a choice of vantage point from which this information is observed. | a choice of vantage point from which this information is observed. | |||
New approaches might have to be developed.</t> | New approaches might have to be developed.</dd> | |||
<dt>Impact on Research and Development:</dt> | ||||
<t>Impact on Research and Development: Hiding transport header | <dd>Hiding transport header | |||
information can impede independent research into new mechanisms, | information can impede independent research into new mechanisms, | |||
measurement of behaviour, and development initiatives. Experience | measurements of behaviour, and development initiatives. Experience | |||
shows that transport protocols are complicated to design and complex | shows that transport protocols are complicated to design and complex | |||
to deploy, and that individual mechanisms have to be evaluated while | to deploy and that individual mechanisms have to be evaluated while | |||
considering other mechanisms, across a broad range of network | considering other mechanisms across a broad range of network | |||
topologies and with attention to the impact on traffic sharing the | topologies and with attention to the impact on traffic sharing the | |||
capacity. If increased use of transport header encryption results in | capacity. If increased use of transport header encryption results in | |||
reduced availability of open data, it could eliminate the | reduced availability of open data, it could eliminate the | |||
independent checks to the standardisation process that have | independent checks to the standardisation process that have | |||
previously been in place from research and academic contributors | previously been in place from research and academic contributors | |||
(e.g., the role of the IRTF Internet Congestion Control Research | (e.g., the role of the IRTF Internet Congestion Control Research | |||
Group (ICCRG) and research publications in reviewing new transport | Group (ICCRG) and research publications in reviewing new transport | |||
mechanisms and assessing the impact of their deployment).</t> | mechanisms and assessing the impact of their deployment).</dd> | |||
</list></t> | </dl> | |||
<t>Observable transport header information might be useful to various | <t>Observable transport header information might be useful to various | |||
stakeholders. Other sets of stakeholders have incentives to limit what | stakeholders. Other sets of stakeholders have incentives to limit what | |||
can be observed. This document does not make recommendations about what | can be observed. This document does not make recommendations about what | |||
information ought to be exposed, to whom it ought to be observable, or | information ought to be exposed, to whom it ought to be observable, or | |||
how this will be achieved. There are also design choices about where | how this will be achieved. There are also design choices about where | |||
observable fields are placed. For example, one location could be a part | observable fields are placed. For example, one location could be a part | |||
of the transport header outside of the encryption envelope, another | of the transport header outside of the encryption envelope; another | |||
alternative is to carry the information in a network-layer option or | alternative is to carry the information in a network-layer option or | |||
extension header. New transport protocol designs ought to explicitly | extension header. New transport protocol designs ought to explicitly | |||
identify any fields that are intended to be observed, consider if there | identify any fields that are intended to be observed, consider if there | |||
are alternative ways of providing the information, and reflect on the | are alternative ways of providing the information, and reflect on the | |||
implications of observable fields being used by on-path network devices, | implications of observable fields being used by on-path network devices | |||
and how this might impact user privacy and protocol evolution when these | and how this might impact user privacy and protocol evolution when these | |||
fields become ossified.</t> | fields become ossified.</t> | |||
<t>As <xref target="RFC7258" format="default"/> notes, "Making networks | ||||
<t>As <xref target="RFC7258"></xref> notes, "Making networks | unmanageable to mitigate PM is not an acceptable | |||
unmanageable to mitigate (pervasive monitoring) is not an acceptable | outcome, but ignoring PM would go against the | |||
outcome, but ignoring (pervasive monitoring) would go against the | ||||
consensus documented here." Providing explicit information can help | consensus documented here." Providing explicit information can help | |||
avoid traffic being inappropriately classified, impacting application | avoid traffic being inappropriately classified, impacting application | |||
performance. An appropriate balance will emerge over time as real | performance. An appropriate balance will emerge over time as real | |||
instances of this tension are analysed <xref target="RFC7258"></xref>. | instances of this tension are analysed <xref target="RFC7258" format="defa ult"/>. | |||
This balance between information exposed and information hidden ought to | This balance between information exposed and information hidden ought to | |||
be carefully considered when specifying new transport protocols.</t> | be carefully considered when specifying new transport protocols.</t> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>This document is about design and deployment considerations for | <t>This document is about design and deployment considerations for | |||
transport protocols. Issues relating to security are discussed | transport protocols. Issues relating to security are discussed | |||
throughout this document.</t> | throughout this document.</t> | |||
<t>Authentication, confidentiality protection, and integrity protection | <t>Authentication, confidentiality protection, and integrity protection | |||
are identified as Transport Features by <xref target="RFC8095"></xref>. | are identified as transport features by <xref target="RFC8095" format="def ault"/>. | |||
As currently deployed in the Internet, these features are generally | As currently deployed in the Internet, these features are generally | |||
provided by a protocol or layer on top of the transport protocol <xref | provided by a protocol or layer on top of the transport protocol <xref tar | |||
target="RFC8922"></xref>.</t> | get="RFC8922" format="default"/>.</t> | |||
<t>Confidentiality and strong integrity checks have properties that can | <t>Confidentiality and strong integrity checks have properties that can | |||
also be incorporated into the design of a transport protocol or to | also be incorporated into the design of a transport protocol or to | |||
modify an existing transport. Integrity checks can protect an endpoint | modify an existing transport. Integrity checks can protect an endpoint | |||
from undetected modification of protocol fields by on-path network | from undetected modification of protocol fields by on-path network | |||
devices, whereas encryption and obfuscation or greasing can further | devices, whereas encryption and obfuscation or greasing can further | |||
prevent these headers being utilised by network devices <xref | prevent these headers being utilised by network devices <xref target="RFC8 | |||
target="RFC8701"></xref>. Preventing observation of headers provides an | 701" | |||
format="default"/>. Preventing observation of headers provides an | ||||
opportunity for greater freedom to update the protocols and can ease | opportunity for greater freedom to update the protocols and can ease | |||
experimentation with new techniques and their final deployment in | experimentation with new techniques and their final deployment in | |||
endpoints. A protocol specification needs to weigh the costs of | endpoints. A protocol specification needs to weigh the costs of | |||
ossifying common headers, versus the potential benefits of exposing | ossifying common headers versus the potential benefits of exposing | |||
specific information that could be observed along the network path to | specific information that could be observed along the network path to | |||
provide tools to manage new variants of protocols.</t> | provide tools to manage new variants of protocols.</t> | |||
<t>Header encryption can provide confidentiality of some or all of the | <t>Header encryption can provide confidentiality of some or all of the | |||
transport header information. This prevents an on-path device from | transport header information. This prevents an on-path device from | |||
gaining knowledge of the header field. It therefore prevents mechanisms | gaining knowledge of the header field. It therefore prevents mechanisms | |||
being built that directly rely on the information or seeks to infer | being built that directly rely on the information or seeks to infer | |||
semantics of an exposed header field. Reduced visibility into transport | semantics of an exposed header field. Reduced visibility into transport | |||
metadata can limit the ability to measure and characterise traffic, and | metadata can limit the ability to measure and characterise traffic and | |||
conversely can provide privacy benefits.</t> | conversely can provide privacy benefits.</t> | |||
<t>Extending the transport payload security context to also include the | <t>Extending the transport payload security context to also include the | |||
transport protocol header protects both types of information with the | transport protocol header protects both types of information with the | |||
same key. A privacy concern would arise if this key was shared with a | same key. A privacy concern would arise if this key was shared with a | |||
third party, e.g., providing access to transport header information to | third party, e.g., providing access to transport header information to | |||
debug a performance issue, would also result in exposing the transport | debug a performance issue would also result in exposing the transport | |||
payload data to the same third party. Such risks would be mitigated | payload data to the same third party. Such risks would be mitigated | |||
using a layered security design that provides one domain of protection | using a layered security design that provides one domain of protection | |||
and associated keys for the transport payload and encrypted transport | and associated keys for the transport payload and encrypted transport | |||
headers; and a separate domain of protection and associated keys for any | headers and a separate domain of protection and associated keys for any | |||
observable transport header fields.</t> | observable transport header fields.</t> | |||
<t>Exposed transport headers are sometimes utilised as a part of the | <t>Exposed transport headers are sometimes utilised as a part of the | |||
information to detect anomalies in network traffic. "While PM is an | information to detect anomalies in network traffic. As stated in <xref tar | |||
get="RFC7258" | ||||
format="default"/>, "While PM is an | ||||
attack, other forms of monitoring that might fit the definition of PM | attack, other forms of monitoring that might fit the definition of PM | |||
can be beneficial and not part of any attack, e.g., network management | can be beneficial and not part of any attack, e.g., network management | |||
functions monitor packets or flows and anti-spam mechanisms need to see | functions monitor packets or flows and anti-spam mechanisms need to see | |||
mail message content." <xref target="RFC7258"></xref>. This can be used | mail message content." This can be used | |||
as the first line of defence to identify potential threats from DoS or | as the first line of defence to identify potential threats from DoS or | |||
malware and redirect suspect traffic to dedicated nodes responsible for | malware and redirect suspect traffic to dedicated nodes responsible for | |||
DoS analysis, malware detection, or to perform packet "scrubbing" (the | DoS analysis, for malware detection, or to perform packet "scrubbing" (the | |||
normalisation of packets so that there are no ambiguities in | normalisation of packets so that there are no ambiguities in | |||
interpretation by the ultimate destination of the packet). These | interpretation by the ultimate destination of the packet). These | |||
techniques are currently used by some operators to also defend from | techniques are currently used by some operators to also defend from | |||
distributed DoS attacks.</t> | distributed DoS attacks.</t> | |||
<t>Exposed transport header fields can also form a part of the | <t>Exposed transport header fields can also form a part of the | |||
information used by the receiver of a transport protocol to protect the | information used by the receiver of a transport protocol to protect the | |||
transport layer from data injection by an attacker. In evaluating this | transport layer from data injection by an attacker. In evaluating this | |||
use of exposed header information, it is important to consider whether | use of exposed header information, it is important to consider whether | |||
it introduces a significant DoS threat. For example, an attacker could | it introduces a significant DoS threat. For example, an attacker could | |||
construct a DoS attack by sending packets with a sequence number that | construct a DoS attack by sending packets with a sequence number that | |||
falls within the currently accepted range of sequence numbers at the | falls within the currently accepted range of sequence numbers at the | |||
receiving endpoint. This would then introduce additional work at the | receiving endpoint. This would then introduce additional work at the | |||
receiving endpoint, even though the data in the attacking packet might | receiving endpoint, even though the data in the attacking packet might | |||
not finally be delivered by the transport layer. This is sometimes known | not finally be delivered by the transport layer. This is sometimes known | |||
skipping to change at line 1830 ¶ | skipping to change at line 1576 ¶ | |||
<t>Exposed transport header fields can also form a part of the | <t>Exposed transport header fields can also form a part of the | |||
information used by the receiver of a transport protocol to protect the | information used by the receiver of a transport protocol to protect the | |||
transport layer from data injection by an attacker. In evaluating this | transport layer from data injection by an attacker. In evaluating this | |||
use of exposed header information, it is important to consider whether | use of exposed header information, it is important to consider whether | |||
it introduces a significant DoS threat. For example, an attacker could | it introduces a significant DoS threat. For example, an attacker could | |||
construct a DoS attack by sending packets with a sequence number that | construct a DoS attack by sending packets with a sequence number that | |||
falls within the currently accepted range of sequence numbers at the | falls within the currently accepted range of sequence numbers at the | |||
receiving endpoint. This would then introduce additional work at the | receiving endpoint. This would then introduce additional work at the | |||
receiving endpoint, even though the data in the attacking packet might | receiving endpoint, even though the data in the attacking packet might | |||
not finally be delivered by the transport layer. This is sometimes known | not finally be delivered by the transport layer. This is sometimes known | |||
as a “shadowing attack”. An attack can, for example, disrupt | as a "shadowing attack". An attack can, for example, disrupt | |||
receiver processing, trigger loss and retransmission, or make a | receiver processing, trigger loss and retransmission, or make a | |||
receiving endpoint perform unproductive decryption of packets that | receiving endpoint perform unproductive decryption of packets that | |||
cannot be successfully decrypted (forcing a receiver to commit | cannot be successfully decrypted (forcing a receiver to commit | |||
decryption resources, or to update and then restore protocol state).</t> | decryption resources, or to update and then restore protocol state).</t> | |||
<t>One mitigation to off-path attacks is to deny knowledge of what header | ||||
<t>One mitigation to off-path attack is to deny knowledge of what header | ||||
information is accepted by a receiver or obfuscate the accepted header | information is accepted by a receiver or obfuscate the accepted header | |||
information, e.g., setting a non-predictable initial value for a | information, e.g., setting a nonpredictable initial value for a | |||
sequence number during a protocol handshake, as in <xref | sequence number during a protocol handshake, as in <xref target="RFC3550" | |||
target="RFC3550"></xref> and <xref target="RFC6056"></xref>, or a port | format="default"/> | |||
value that cannot be predicted (see Section 5.1 of <xref | and <xref target="RFC6056" format="default"/>, or a port | |||
target="RFC8085"></xref>). A receiver could also require additional | value that cannot be predicted (see <xref target="RFC8085" sectionFormat=" | |||
of" | ||||
section="5.1"/>). A receiver could also require additional | ||||
information to be used as a part of a validation check before accepting | information to be used as a part of a validation check before accepting | |||
packets at the transport layer (e.g., utilising a part of the sequence | packets at the transport layer, e.g., utilising a part of the sequence | |||
number space that is encrypted; or by verifying an encrypted token not | number space that is encrypted or by verifying an encrypted token not | |||
visible to an attacker). This would also mitigate against on-path | visible to an attacker. This would also mitigate against on-path | |||
attacks. An additional processing cost can be incurred when decryption | attacks. An additional processing cost can be incurred when decryption | |||
is attempted before a receiver discards an injected packet.</t> | is attempted before a receiver discards an injected packet.</t> | |||
<t>The existence of open transport protocol standards and a research | ||||
<t>The existence of open transport protocol standards, and a research | ||||
and operations community with a history of independent observation and | and operations community with a history of independent observation and | |||
evaluation of performance data, encourages fairness and conformance to | evaluation of performance data encourage fairness and conformance to | |||
those standards. This suggests careful consideration will be made over | those standards. This suggests careful consideration will be made over | |||
where, and when, measurement samples are collected. An appropriate | where, and when, measurement samples are collected. An appropriate | |||
balance between encrypting some or all of the transport header | balance between encrypting some or all of the transport header | |||
information needs to be considered. Open data, and accessibility to | information needs to be considered. Open data and accessibility to | |||
tools that can help understand trends in application deployment, network | tools that can help understand trends in application deployment, network | |||
traffic and usage patterns can all contribute to understanding security | traffic, and usage patterns can all contribute to understanding security | |||
challenges.</t> | challenges.</t> | |||
<t>The security and privacy considerations in "A Framework for | ||||
<t>The Security and Privacy Considerations in the Framework for | Large-Scale Measurement of Broadband Performance (LMAP)" <xref target="RFC | |||
Large-Scale Measurement of Broadband Performance (LMAP) <xref | 7594" | |||
target="RFC7594"></xref> contain considerations for Active and Passive | format="default"/> contain considerations for Active and Passive | |||
measurement techniques and supporting material on measurement | measurement techniques and supporting material on measurement | |||
context.</t> | context.</t> | |||
<t>Addition of observable transport information to the path increases | <t>Addition of observable transport information to the path increases | |||
the information available to an observer and may, when this information | the information available to an observer and may, when this information | |||
can be linked to a node or user, reduce the privacy of the user. See the | can be linked to a node or user, reduce the privacy of the user. See the | |||
security considerations of <xref target="RFC8558"></xref>.</t> | security considerations of <xref target="RFC8558" format="default"/>.</t> | |||
</section> | ||||
<section anchor="IANA" title="IANA Considerations"> | ||||
<t>This memo includes no request to IANA.</t> | ||||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<section anchor="Acknowledgements" title="Acknowledgements"> | <name>IANA Considerations</name> | |||
<t>The authors would like to thank Mohamed Boucadair, Spencer Dawkins, | <t>This document has no IANA actions.</t> | |||
Tom Herbert, Jana Iyengar, Mirja Kuehlewind, Kyle Rose, Kathleen | ||||
Moriarty, Al Morton, Chris Seal, Joe Touch, Brian Trammell, Chris Wood, | ||||
Thomas Fossati, Mohamed Boucadair, Martin Thomson, David Black, Martin | ||||
Duke, Joel Halpern and members of TSVWG for their comments and | ||||
feedback.</t> | ||||
<t>This work has received funding from the European Union’s | ||||
Horizon 2020 research and innovation programme under grant agreement No | ||||
688421, and the EU Stand ICT Call 4. The opinions expressed and | ||||
arguments employed reflect only the authors' view. The European | ||||
Commission is not responsible for any use that might be made of that | ||||
information.</t> | ||||
<t>This work has received funding from the UK Engineering and Physical | ||||
Sciences Research Council under grant EP/R04144X/1.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Informative References"> | ||||
&RFC4566; | ||||
&RFC8684; | ||||
&RFC5426; | ||||
&RFC0791; | ||||
&RFC2410; | ||||
&RFC2474; | ||||
&RFC2475; | ||||
&RFC2507; | ||||
&RFC2508; | ||||
&RFC2914; | ||||
&RFC3168; | ||||
&RFC3234; | ||||
&RFC3261; | ||||
&RFC3393; | ||||
&RFC3550; | ||||
&RFC3711; | ||||
&RFC4302; | ||||
&RFC4303; | ||||
&RFC4585; | ||||
&RFC4737; | ||||
&RFC4960; | ||||
&RFC5166; | ||||
&RFC5795; | ||||
&RFC5218; | ||||
&RFC5236; | ||||
&RFC8446; | ||||
&RFC5481; | ||||
&RFC5925; | ||||
&RFC6056; | ||||
&RFC6294; | ||||
&RFC6269; | ||||
&RFC6347; | ||||
&RFC6438; | ||||
&RFC6437; | ||||
&RFC6973; | ||||
&RFC7258; | ||||
&RFC7413; | ||||
&RFC7414; | ||||
&RFC7567; | ||||
&RFC7624; | ||||
&RFC7872; | ||||
&RFC7928; | ||||
&RFC7983; | ||||
&RFC7594; | ||||
&RFC7799; | ||||
&RFC8033; | ||||
&RFC8084; | ||||
&RFC8085; | ||||
&RFC8086; | <displayreference target="I-D.trammell-plus-abstract-mech" to="PLUS-ABSTRACT-MEC | |||
H"/> | ||||
&RFC8087; | <displayreference target="I-D.ietf-ippm-ioam-data" to="IOAM-DATA"/> | |||
<displayreference target="I-D.ietf-quic-qlog-main-schema" to="QLOG"/> | ||||
&RFC8095; | <displayreference target="I-D.ietf-6man-ipv6-alt-mark" to="IPV6-ALT-MARK"/> | |||
<displayreference target="I-D.ietf-tls-dtls13" to="DTLS"/> | ||||
&RFC8200; | ||||
&RFC8250; | ||||
&RFC8289; | ||||
&RFC8290; | ||||
&RFC8404; | ||||
&RFC8462; | ||||
&RFC8517; | ||||
&RFC8546; | ||||
&RFC8548; | ||||
&RFC8558; | ||||
&RFC7605; | ||||
&RFC7098; | ||||
&RFC7126; | <references> | |||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8866.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8684.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5426.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.0791.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.2410.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.2474.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.2475.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.2507.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.2508.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.2914.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.3168.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.3234.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.3261.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.3393.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.3550.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.3711.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.4302.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.4303.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.4585.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.4737.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.4960.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5166.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5795.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5218.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5236.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8446.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5481.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.5925.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6056.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6294.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6269.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6347.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6438.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6437.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6973.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7258.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7413.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7414.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7567.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7624.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7872.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7928.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7983.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7594.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7799.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8033.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8084.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8085.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8086.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8087.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8095.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8200.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8250.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8289.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8290.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8404.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8462.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8517.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8546.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8548.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8558.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7605.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7098.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.7126.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.6846.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8701.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.9000.xml"/> | ||||
&RFC6846; | <!-- [I-D.trammell-plus-abstract-mech] IESG state Expired --> | |||
&RFC8701; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.t rammell-plus-abstract-mech-00.xml"/> | |||
&I-D.ietf-quic-transport; | <!-- [I-D.ietf-ippm-ioam-data] IESG state IESG Evaluation::Revised I-D Needed -- > | |||
&I-D.trammell-plus-abstract-mech; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.i etf-ippm-ioam-data-12.xml"/> | |||
&I-D.ietf-ippm-ioam-data; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC .8922.xml"/> | |||
&RFC8922; | <!-- [I-D.ietf-tsvwg-rtcweb-qos] Published as RFC 8837 --> | |||
&I-D.ietf-tsvwg-rtcweb-qos; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC .8837.xml"/> | |||
&RFC8837; | <!-- [I-D.ietf-quic-qlog-main-schema] IESG state I-D Exists --> | |||
&I-D.marx-qlog-main-schema; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.i etf-quic-qlog-main-schema-00.xml"/> | |||
&I-D.ietf-tls-dtls13; | <!-- [I-D.ietf-tls-dtls13] in MISSREF state --> | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.d | ||||
raft-ietf-tls-dtls13-43.xml"/> | ||||
&I-D.ietf-6man-ipv6-alt-mark; | <!-- [I-D.ietf-6man-ipv6-alt-mark] IESG state I-D Exists --> | |||
&RFC3552; | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.i etf-6man-ipv6-alt-mark-06.xml"/> | |||
&RFC8724; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | |||
.3552.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.8724.xml"/> | ||||
<reference anchor="Measurement"> | <reference anchor="Measurement"> | |||
<front> | <front> | |||
<title>Measurement-based Protocol Design, Eur. Conf. on Networks and | <title>Measurement-based Protocol Design</title> | |||
Communications, Oulu, Finland.</title> | <author initials="G" surname="Fairhurst" fullname="Gorry Fairhurst"/> | |||
<author initials="M" surname="Kuehlewind" fullname="Mirja Kuehlewind"/ | ||||
<author initials="G" surname="Fairhurst"></author> | > | |||
<author initials="D" surname="Lopez" fullname="Diego Lopez"/> | ||||
<author initials="M" surname="Kuehlewind"></author> | <date month="June" year="2017"/> | |||
<author initials="D" surname="Lopez"></author> | ||||
<date month="June" year="2017" /> | ||||
</front> | </front> | |||
<refcontent>European Conference on Networks and Communications, Oulu, Fin land.</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="Latency"> | <reference anchor="Latency"> | |||
<front> | <front> | |||
<title>Reducing Internet Latency: A Survey of Techniques and Their | <title>Reducing Internet Latency: A Survey of Techniques and Their | |||
Merits, IEEE Comm. Surveys & Tutorials. 26;18(3) | Merits</title> | |||
p2149-2196</title> | <author initials="B" surname="Briscoe" fullname="Bob Briscoe"/> | |||
<author initials="A" surname="Brunstrom" fullname="Anna Brunstrom"/> | ||||
<author initials="B" surname="Briscoe"></author> | <author initials="A" surname="Petlund" fullname="Andreas Petlund"/> | |||
<author initials="D" surname="Hayes" fullname="David Hayes"/> | ||||
<date month="November" year="2014" /> | <author initials="D" surname="Ros" fullname="David Ros"/> | |||
<author initials="I" surname="Tsang" fullname="Ing-Jyh Tsang"/> | ||||
<author initials="S" surname="Gjessing" fullname="Stein Gjessing"/> | ||||
<author initials="G" surname="Fairhurst" fullname="Gorry Fairhurst"/> | ||||
<author initials="C" surname="Griwodz" fullname="Carsten Griwodz"/> | ||||
<author initials="M" surname="Welzl" fullname="Michael Welzl"/> | ||||
<date month="November" year="2014"/> | ||||
</front> | </front> | |||
<seriesInfo name="DOI" value="10.1109/COMST.2014.2375213"/> | ||||
<refcontent>IEEE Communications Surveys & Tutorials, vol. 18, no. 3, | ||||
pp. 2149-2196, | ||||
thirdquarter 2016</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="bufferbloat"> | <reference anchor="bufferbloat"> | |||
<front> | <front> | |||
<title>Bufferbloat: dark buffers in the Internet. Communications of | <title>Bufferbloat: Dark Buffers in the Internet</title> | |||
the ACM, 55(1):57-65</title> | <author initials="J" surname="Gettys" fullname="Jim Gettys"/> | |||
<author initials="K" surname="Nichols" fullname="Kathleen Nichols"/> | ||||
<author initials="J" surname="Gettys"></author> | <date month="January" year="2012"/> | |||
<author initials="K" surname="Nichols"></author> | ||||
<date month="January" year="2012" /> | ||||
</front> | </front> | |||
<seriesInfo name="DOI" value="10.1145/2063176.2063196"/> | ||||
<refcontent>Communications of the ACM, Vol. 55, no. 1, pp. 57-65</refcont | ||||
ent> | ||||
</reference> | </reference> | |||
<reference anchor="Quic-Trace"> | <reference anchor="Quic-Trace" target="https://github.com/google/quic-trac e"> | |||
<front> | <front> | |||
<title>https:QUIC trace utilities | <title>QUIC trace utilities | |||
//github.com/google/quic-trace</title> | </title> | |||
<author> | <author> | |||
<organization></organization> | <organization/> | |||
</author> | </author> | |||
<date /> | ||||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="PAM-RTT"> | <reference anchor="PAM-RTT"> | |||
<front> | <front> | |||
<title>Revisiting the Privacy Implications of Two-Way Internet | <title>Revisiting the Privacy Implications of Two-Way Internet | |||
Latency Data (in Proc. PAM 2018)</title> | Latency Data</title> | |||
<author initials="B." surname="Trammell" fullname="Brian Trammell"> | ||||
<author initials="B." surname="Trammell"> | <organization/> | |||
<organization></organization> | ||||
</author> | </author> | |||
<author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind" | ||||
<author initials="M." surname="Kuehlewind"> | > | |||
<organization></organization> | <organization/> | |||
</author> | </author> | |||
<date month="March" year="2018"/> | ||||
<date month="March" year="2018" /> | ||||
</front> | </front> | |||
<refcontent>Passive and Active Measurement</refcontent> | ||||
</reference> | </reference> | |||
</references> | </references> | |||
<section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
<section title="Revision information"> | <name>Acknowledgements</name> | |||
<t>-00 This is an individual draft for the IETF community.</t> | <t>The authors would like to thank <contact fullname="Mohamed Boucadair"/> | |||
, <contact | ||||
<t>-01 This draft was a result of walking away from the text for a few | fullname="Spencer Dawkins"/>, <contact fullname="Tom Herbert"/>, <contact | |||
days and then reorganising the content.</t> | fullname="Jana | |||
Iyengar"/>, <contact fullname="Mirja Kühlewind"/>, <contact fullname="Kyle | ||||
<t>-02 This draft fixes textual errors.</t> | Rose"/>, | |||
<contact fullname="Kathleen Moriarty"/>, <contact fullname="Al Morton"/>, | ||||
<t>-03 This draft follows feedback from people reading this draft.</t> | <contact | |||
fullname="Chris Seal"/>, <contact fullname="Joe Touch"/>, <contact fullnam | ||||
<t>-04 This adds an additional contributor and includes significant | e="Brian | |||
reworking to ready this for review by the wider IETF community Colin | Trammell"/>, <contact fullname="Chris Wood"/>, | |||
Perkins joined the author list.</t> | <contact fullname="Thomas Fossati"/>, <contact fullname="Mohamed Boucadair | |||
"/>, <contact | ||||
<t>Comments from the community are welcome on the text and | fullname="Martin Thomson"/>, <contact fullname="David Black"/>, <contact f | |||
recommendations.</t> | ullname="Martin | |||
Duke"/>, <contact fullname="Joel Halpern"/>, and members of TSVWG for thei | ||||
<t>-05 Corrections received and helpful inputs from Mohamed | r comments and | |||
Boucadair.</t> | feedback.</t> | |||
<t>This work has received funding from the European Union's | ||||
<t>-06 Updated following comments from Stephen Farrell, and feedback via | Horizon 2020 research and innovation programme under grant agreement No | |||
email. Added a draft conclusion section to sketch some strawman | 688421 and the EU Stand ICT Call 4. The opinions expressed and | |||
scenarios that could emerge.</t> | arguments employed reflect only the authors' views. The European | |||
Commission is not responsible for any use that might be made of that | ||||
<t>-07 Updated following comments from Al Morton, Chris Seal, and other | information.</t> | |||
feedback via email.</t> | <t>This work has received funding from the UK Engineering and Physical | |||
Sciences Research Council under grant EP/R04144X/1.</t> | ||||
<t>-08 Updated to address comments sent to the TSVWG mailing list by | ||||
Kathleen Moriarty (on 08/05/2018 and 17/05/2018), Joe Touch on | ||||
11/05/2018, and Spencer Dawkins.</t> | ||||
<t>-09 Updated security considerations.</t> | ||||
<t>-10 Updated references, split the Introduction, and added a paragraph | ||||
giving some examples of why ossification has been an issue.</t> | ||||
<t>-01 This resolved some reference issues. Updated section on | ||||
observation by devices on the path.</t> | ||||
<t>-02 Comments received from Kyle Rose, Spencer Dawkins and Tom | ||||
Herbert. The network-layer information has also been re-organised after | ||||
comments at IETF-103.</t> | ||||
<t>-03 Added a section on header compression and rewriting of sections | ||||
referring to RTP transport. This version contains author editorial work | ||||
and removed duplicate section.</t> | ||||
<t>-04 Revised following SecDir Review</t> | ||||
<t><list style="symbols"> | ||||
<t>Added some text on TLS story (additional input sought on relevant | ||||
considerations).</t> | ||||
<t>Section 2, paragraph 8 - changed to be clearer, in particular, | ||||
added "Encryption with secure key distribution prevents"</t> | ||||
<t>Flow label description rewritten based on PS/BCP RFCs.</t> | ||||
<t>Clarify requirements from RFCs concerning the IPv6 flow label and | ||||
highlight ways it can be used with encryption. (section 3.1.3)</t> | ||||
<t>Add text on the explicit spin-bit work in the QUIC DT. Added | ||||
greasing of spin-bit. (Section 6.1)</t> | ||||
<t>Updated section 6 and added more explanation of impact on | ||||
operators.</t> | ||||
<t>Other comments addressed.</t> | ||||
</list>-05 Editorial pass and minor corrections noted on TSVWG | ||||
list.</t> | ||||
<t>-06 Updated conclusions and minor corrections. Responded to request | ||||
to add OAM discussion to Section 6.1.</t> | ||||
<t><!-- | ||||
Three example scenarios illustrate different directions in which this | ||||
could evolve: | ||||
In one scenario, transport protocol designs expose the transport heade | ||||
r and do not use confidentiality to protect the transport information. Middlebox | ||||
es could utilise this information and could rely on the presence and format of a | ||||
ny exposed information to build tooling and procedures that support troubleshoot | ||||
ing, measurement and other functions. As the design evolves, these tools will ha | ||||
ve to be updated to reflect the format of the header information in updated vers | ||||
ions of the protocol. The protocol could then experience unintentional impact fr | ||||
om the middlebox dependencies either loosing functionality or requiring the midd | ||||
leboxes to be updated to track the protocol evolution. This could limit the abil | ||||
ity to deploy changes to the protocol. | ||||
In another scenario, transport protocols could be designed to intentio | ||||
nally expose information to the network as a part of the transport header. This | ||||
design fixes the invariant format of the exposed information between versions of | ||||
the protocol. Only the exposed part of the transport information can be utilise | ||||
d by an operator to support measurement and other operational procedures. Common | ||||
approaches between versions of the protocol and between different operators cou | ||||
ld emerge based on the ossified header information, enabling consistent traffic | ||||
management as the protocol evolves. | ||||
In a third scenario, a protocol that encrypts all header information p | ||||
revents tooling from directly using transport header information. This could lea | ||||
d to network operators acting independently from apps/transport developments to | ||||
extract the information to operate and manage their network. A range of approach | ||||
es could proliferate to support specific goals. For some applications, operators | ||||
could introduce on addition of a shim header to each packet in a flow as the fl | ||||
ow crosses a network segment; other operators/managers could develop heuristics | ||||
and pattern recognition to derive information that classifies flows and estimate | ||||
s quality metrics for the service being used; some could decide to rate-limit or | ||||
block traffic until new tooling is in place. | ||||
Other scenarios could also prevail, and time will tell the final impac | ||||
t on network operation and evolution of the Internet. | ||||
-->-07 Addressed feedback from Ruediger and Thomas.</t> | ||||
<t>Section 2 deserved some work to make it easier to read and avoid | ||||
repetition. This edit finally gets to this, and eliminates some | ||||
duplication. This also moves some of the material from section 2 to | ||||
reform a clearer conclusion. The scope remains focussed on the usage of | ||||
transport headers and the implications of encryption - not on proposals | ||||
for new techniques/specifications to be developed.</t> | ||||
<t>-08 Addressed feedback and completed editorial work, including | ||||
updating the text referring to RFC7872, in preparation for a WGLC.</t> | ||||
<t>-09 Updated following WGLC. In particular, thanks to Joe Touch | ||||
(specific comments and commentary on style and tone); Dimitri Tikonov | ||||
(editorial); Christian Huitema (various); David Black (various). Amended | ||||
privacy considerations based on SECDIR review. Emile Stephan (inputs on | ||||
operations measurement); Various others.</t> | ||||
<t>Added summary text and refs to key sections. Note to editors: The | ||||
section numbers are hard-linked.</t> | ||||
<t>-10 Updated following additional feedback from 1st WGLC. Comments | ||||
from David Black; Tommy Pauly; Ian Swett; Mirja Kuehlewind; Peter | ||||
Gutmann; Ekr; and many others via the TSVWG list. Some people thought | ||||
that "needed" and "need" could</t> | ||||
<t>represent requirements in the document, etc. this has been | ||||
clarified.</t> | ||||
<t>-11 Updated following additional feedback from Martin Thomson, and | ||||
corrections from other reviewers.</t> | ||||
<t>-12 Updated following additional feedback from reviewers.</t> | ||||
<t>-13 Updated following 2nd WGLC with comments from D.L.Black; T. | ||||
Herbert; Ekr; and other reviewers.</t> | ||||
<t>-14 Update to resolve feedback to rev -13. This moves the general | ||||
discussion of adding fields to transport packets to section 6, and | ||||
discusses with reference to material in RFC8558.</t> | ||||
<t>-15 Feedback from D.L. Black, T. Herbert, J. Touch, S. Dawkins and M. | ||||
Duke. Update to add reference to RFC7605. Clarify a focus on immutable | ||||
transport fields, rather than modifying middleboxes with Tom H. | ||||
Clarified Header Compression discussion only provides a list of examples | ||||
of HC methods for transport. Clarified port usage with Tom H/Joe T. | ||||
Removed some duplicated sentences, and minor edits. Added NULL-ESP. | ||||
Improved after initial feedback from Martin Duke.</t> | ||||
<t>-16 Editorial comments from Mohamed Boucadair. Added DTLS 1.3.</t> | ||||
<t>-17 Revised to satisfy ID-NITs and updates REFs to latest rev, | ||||
updated HC Refs; cited IAB guidance on security and privacy within IETF | ||||
specs.</t> | ||||
<t>-18 Revised based on AD review.</t> | ||||
<t>-19 Revised after additional AD review request, and request to | ||||
restructure.</t> | ||||
<t>-20 Revised after directorate reviews and IETF LC comments.</t> | ||||
<t>Gen-ART:</t> | ||||
<t><list style="symbols"> | ||||
<t>While section 2 does include a discussion of traffic | ||||
mis-ordering, it does not include a discussion of ECMP, and the | ||||
dependence of ECMP on flow identification to avoid significant | ||||
packet mis-ordering.:: ECMP added as example.</t> | ||||
<t>Section 5.1 of this document discusses the use of Hop-by-Hop IPv6 | ||||
options. It seems that it should acknowledge and discuss the | ||||
applicability of the sentence "New hop-by-hop options are not | ||||
recommended..." from section 4.8 of RFC 8200. I think a good | ||||
argument can be made in this case as to why (based on the rest of | ||||
the sentence from 8200) the recommendation does not apply to this | ||||
proposal. The document should make the argument.:: Quoted RFC | ||||
sentences directly to avoid interpretting them.</t> | ||||
<t>I found the discussion of header compression slightly confusing. | ||||
Given that the TCP / UDP header is small even compared to the IP | ||||
header, it is difficult to see why encrypting it would have a | ||||
significant impact on header compression efficacy. :: Added a | ||||
preface that explains that HC methods are most effective for | ||||
bit-congestive links.</t> | ||||
<t>The wording in section 6.2 on adding header information to an IP | ||||
packet has the drawback of seeming to imply that one could add (or | ||||
remove) such information in the network, without adding an | ||||
encapsulating header. That is not permitted by RFC 8200 (IPv6). It | ||||
would be good to clarify the first paragraph. (The example, which | ||||
talks about the sender putting in the information is, of course, | ||||
fine.) :: Unintended - added a sentence of preface.</t> | ||||
</list></t> | ||||
<t>SECDIR:: Previous revisions were updated following Early Review | ||||
comments.</t> | ||||
<t>OPSEC:: No additional changes were requested in the OPSEC review.</t> | ||||
<t>IETF LC:: Tom Herbert: Please refer to 8200 on EH :: addressed in | ||||
response to Joel above. Michael Richardson, Fernando Gont, Tom Herbert: | ||||
Continuation of discussion on domains where EH might be (or not) useful | ||||
and the tussle on what information to reveal. Unclear yet what | ||||
additional text should be changed within this ID.</t> | ||||
<t>------------</t> | ||||
<t>- 21 Revised after IESG review:</t> | ||||
<t>Revision 21 includes revised text after comments from Zahed, Erik Kline | ||||
, Rob Wilton, Eric Vyncke, Roman Danyliw, and Benjamin Kaduk.</t> | ||||
<t></t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 425 change blocks. | ||||
1424 lines changed or deleted | 1015 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |