| 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/ | ||||