RFC 9065

Considerations around Transport Header Confidentiality, Network Operations, and the Evolution of Internet Transport Protocols

๐Ÿ“… published July 2021, from ietf

Okay bestie, let's get into it, this one is SO good ๐Ÿ’…โœจ

Title Block ๐ŸŽ€

Okay so before we dive in, here's the lowdown on this doc. It's RFC 9065 ๐Ÿฆ‹, titled "Considerations around Transport Header Confidentiality, Network Operations, and the Evolution of Internet Transport Protocols." It's an Informational RFC (so it's NOT a Standards Track spec, it's just here to share info ๐Ÿงš), published in July 2021 with ISSN 2070-1721. The authors are G. Fairhurst (University of Aberdeen) and C. Perkins (University of Glasgow). It doesn't obsolete or update any other RFCs, so it's giving independent energy ๐Ÿ’œ.

Abstract ๐ŸŒธ

Okay so, to keep user data and privacy safe, transport protocols have been encrypting and authenticating their payloads for a while now ๐Ÿ”. Now they're starting to do the same thing to the transport headers too ๐Ÿ‘€. This helps stop middleboxes from ossifying the protocol ๐ŸงŠ, helps mitigate attacks against the transport protocol ๐Ÿ›ก๏ธ, and protects metadata about the communication ๐Ÿซถ. The catch is that some networks currently look inside transport headers as part of normal operations, and that stops working once those headers are encrypted ๐Ÿ˜ญ.

This doc talks about what can happen when traffic uses a protocol with an encrypted transport header ๐Ÿ”. It also gives you some things to think about when you're designing new transport protocols or features ๐Ÿง โœจ.

Status of This Memo ๐Ÿ“œ

This document is not an Internet Standards Track specification; it is published for informational purposes ๐Ÿฆ‹.

It's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community ๐Ÿซถ. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved doc is a candidate for any level of Internet Standard, so check out Section 2 of RFC 7841 for that ๐ŸŽ€.

For info on the current status, errata, and how to give feedback, go to https://www.rfc-editor.org/info/rfc9065 ๐Ÿ’Œ.

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved ๐Ÿ’–.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stood on the publication date. Please actually read these, they explain your rights and restrictions for this doc ๐Ÿ“š. Code Components pulled out of this document must include the Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they're provided without warranty as described in the Simplified BSD License ๐Ÿ“.

Table of Contents ๐Ÿ—บ๏ธ

1.  Introduction
2.  Current Uses of Transport Headers within the Network
  2.1.  To Separate Flows in Network Devices
  2.2.  To Identify Transport Protocols and Flows
  2.3.  To Understand Transport Protocol Performance
  2.4.  To Support Network Operations
  2.5.  To Mitigate the Effects of Constrained Networks
  2.6.  To Verify SLA Compliance
3.  Research, Development, and Deployment
  3.1.  Independent Measurement
  3.2.  Measurable Transport Protocols
  3.3.  Other Sources of Information
4.  Encryption and Authentication of Transport Headers
5.  Intentionally Exposing Transport Information to the Network
  5.1.  Exposing Transport Information in Extension Headers
  5.2.  Common Exposed Transport Information
  5.3.  Considerations for Exposing Transport Information
6.  Addition of Transport OAM Information to Network-Layer Headers
  6.1.  Use of OAM within a Maintenance Domain
  6.2.  Use of OAM across Multiple Maintenance Domains
7.  Conclusions
8.  Security Considerations
9.  IANA Considerations
10. Informative References
Acknowledgements
Authors' Addresses

1. Introduction ๐ŸŒท

Okay so the transport layer is what moves data end-to-end across a network path ๐Ÿ›ค๏ธ. It gives you stuff like connection establishment, reliability, framing, ordering, congestion control, and flow control, whatever an app needs ๐Ÿ’ช. One of its core jobs is figuring out and adapting to the characteristics of the network path it's currently using ๐Ÿ”Ž.

For a while now, it's been super common for the transport-layer payload to be protected with encryption and authentication, but the transport-layer headers get sent out in the open ๐Ÿ‘€. Examples that work this way include Transport Layer Security (TLS) over TCP [RFC8446], Datagram TLS [RFC6347] [DTLS], the Secure Real-time Transport Protocol [RFC3711], and tcpcrypt [RFC8548] ๐ŸŽ€. Because those headers are visible, some network operators, researchers, and others have built tools and processes that watch transport headers, both in aggregate and per flow, to figure out what the network is doing and make operational decisions ๐Ÿ•ต๏ธโ€โ™€๏ธ.

New transport protocols are now encrypting some or all of their transport headers as well as the payload ๐Ÿ”. The QUIC transport protocol [RFC9000] is one example ๐Ÿฆ‹. Encrypting the headers makes it hard to see transport protocol behaviour from the network's point of view ๐Ÿ™ˆ. This doc looks at what that means for network operators and researchers who used to see those headers, and it flags some issues for transport protocol designers to keep in mind ๐Ÿ’ญ.

As [RFC7258] explains, the IETF has concluded that Pervasive Monitoring (PM) is a technical attack that has to be mitigated in the design of IETF protocols ๐Ÿšจ. This doc backs that conclusion up ๐Ÿ’–. It also acknowledges what [RFC7258] says: "Making networks unmanageable to mitigate PM is not an acceptable outcome, but ignoring PM would go against the consensus documented here. An appropriate balance will emerge over time as real instances of this tension are considered." ๐Ÿค So this doc is here to feed into the conversation about what that appropriate balance looks like, by pointing out some of the implications of encrypting transport headers โš–๏ธ.

Next up, the doc explains how network devices on the Internet path use transport header information today. Those uses can be beneficial or malicious ๐Ÿ˜ฌ. This is also meant to feed into the balance discussion, by highlighting the implications of transport header encryption ๐ŸŒˆ.

2. Current Uses of Transport Headers within the Network ๐Ÿ›ฐ๏ธ

Okay so after the pervasive surveillance [RFC7624] revelations and the IETF consensus that "Pervasive Monitoring Is an Attack" [RFC7258], people are working hard to encrypt more Internet traffic ๐Ÿ”’โœจ. Encrypting transport header fields can boost privacy and help mitigate certain attacks or packet manipulation by devices on the path, but it can also get in the way of network operations and measurement [RFC8404] ๐Ÿ™ƒ.

When you're deciding which parts of the transport headers should be encrypted for confidentiality, and which parts should stay visible to network devices (including headers that are unencrypted but authenticated), you have to weigh the impact on network operations and management against the implications for ossification and user privacy [Measurement] โš–๏ธ. Different parties will rank these concerns differently ๐Ÿ’…. Some folks think the benefits of encrypting all the transport headers are worth the impact, while others might look at the security, privacy, and ossification effects and land on a different trade-off ๐Ÿคทโ€โ™€๏ธ.

This section looks at examples of transport-layer headers being observed inside the network, either by devices on the path or through information exported by an on-path device ๐Ÿ‘€. Unencrypted transport headers give you information that supports network operations and management, and this section covers some of the ways that's been done ๐Ÿ› ๏ธ. Unencrypted transport header info also adds metadata that can be exploited for stuff that has nothing to do with transport measurement, diagnostics, or troubleshooting (for example, blocking or throttling traffic from a specific content provider) ๐Ÿšซ. This section also covers some threats linked to unencrypted transport headers ๐Ÿ˜ฑ.

Exposed transport info also feeds linked data sets, which could be used to deduce private information like user patterns, user location, tracking behaviour, and so on ๐Ÿ•ต๏ธ. That might reveal stuff the parties never meant to share ๐Ÿ™Š. [RFC6973] exists to make designers, implementers, and users of Internet protocols aware of privacy-related design choices in IETF protocols ๐Ÿง ๐Ÿ’œ.

This section doesn't cover intentional changes to transport headers by middleboxes, like devices doing Network Address Translation (NAT) or firewalls ๐Ÿšง.

2.1. To Separate Flows in Network Devices ๐Ÿง

Some network-layer mechanisms separate traffic by flow without needing to identify what type of traffic it is ๐Ÿชž. Examples are hash-based load sharing across paths (like Equal-Cost Multipath (ECMP)), sharing across a group of links (like a Link Aggregation Group (LAG)), making sure everyone gets equal access to link capacity (like Fair Queuing (FQ)), and distributing traffic to servers (like load balancing) ๐Ÿฐ. To avoid packet reordering, forwarding engines can keep the same transport flows on the same forwarding path ๐Ÿ›ฃ๏ธ. That's often done by calculating a hash over an n-tuple built from a mix of link header info and transport header info, all the way up through the transport header ๐Ÿงฎ. This n-tuple can use the Media Access Control (MAC) address and IP addresses, and it can include observable transport header info too ๐Ÿ‘‘.

When transport header info can't be observed, there's less to work with for separating flows at equipment along the path ๐Ÿ˜ต. Flow separation might not be possible when a transport bundles traffic into an encrypted aggregate ๐Ÿ”. For IPv6, the Flow Label [RFC6437] can still be used even when all transport info is encrypted, which enables Flow Label-based ECMP [RFC6438] and load sharing [RFC7098] ๐Ÿฆ‹โœจ.

2.2. To Identify Transport Protocols and Flows โœจ

Okay so, the network can look at the transport-layer headers that are exposed and figure out which transport protocol and which flow it's looking at [RFC8558]. ๐Ÿฆ‹ Being able to identify protocols, flows, and sessions is a whole thing that happens all the time. Measurement tools do it, QoS classifiers do it, and firewalls do it too. ๐Ÿ’… When the end user is on board and it's helping them, that's great. But the exact same tricks can also be used against the end user, like blocking, deprioritising, or monitoring their traffic without asking. Not cute ๐Ÿ˜ญ.

Observable transport header info, combined with the network header, can be used to track flows and their connection state, plus which set of protocol options is in use. ๐ŸŒธ Transport protocols like TCP [RFC7414] and the Stream Control Transmission Protocol (SCTP) [RFC4960] have a standard base header that carries sequence number info and other stuff. They can also negotiate extra headers during connection setup, and those are identified by an option number in the transport header. Iconic design, honestly. ๐Ÿ‘‘

Assigned transport ports (for example, 0..49151) can sometimes tell you which upper-layer protocol or service you're dealing with [RFC7605]. โœจ BUT port info on its own is not enough to be certain. Apps can use any port they want and don't have to use the assigned ones. A port number can also get used by a protocol it wasn't meant for. Multiple sessions can share one port, and ports get reused by later sessions too. Chaotic, but that's the vibe. ๐Ÿ™ˆ

Some flows can be identified by looking at signalling data (see [RFC3261] and [RFC8837]), or by checking for magic numbers placed in the first byte(s) of a datagram payload [RFC7983]. ๐Ÿงš

When transport header info can't be observed, that takes away info that passive observers along the path could have used to sort flows. ๐Ÿ’€ People can also go way harder and try to collect, estimate, or infer flow info using heuristics. That includes looking at traffic patterns, classifying flows by timing, volume, or how multiple flows line up with each other. For example, an operator that can't read the Session Description Protocol (SDP) session descriptions [RFC8866] to tell that a flow is audio might guess instead. They could use (possibly less-reliable) heuristics, like assuming short UDP packets with regular spacing are carrying audio. ๐ŸŽ€ Operational practises aimed at inferring transport parameters are out of scope for this document. I'm only mentioning them to point out that encryption does not stop operators from trying the same practises they used with unencrypted transport headers. Wild, right? ๐Ÿ˜ค

The IAB [RFC8546] put together a summary of the expected effects that more encryption will have on network functions that use observable headers. It also describes the expected benefits of designs that explicitly declare protocol-invariant header information that can be used for this purpose. ๐Ÿซถ Very important reading, bestie. ๐Ÿ“


2.3. To Understand Transport Protocol Performance ๐Ÿ“ˆ

Okay this next bit is the setup for the performance stuff. This subsection covers how the network uses exposed transport-layer headers to understand how transport protocols perform and behave. ๐ŸŒˆ

2.3.1. Using Information Derived from Transport-Layer Headers

Okay bestie, this is where the transport headers get to be the main character ๐Ÿฆ‹ Observable transport headers let anyone along the Internet path do explicit measurement and analysis of protocol performance and spot network anomalies, no matter where they're sitting โœจ Some operators use passive monitoring to manage their own slice of the Internet by characterising how link and network segments are performing. Inferences from transport headers are used to derive performance metrics, and honestly it's giving detective energy ๐Ÿ•ต๏ธโ€โ™€๏ธ

Traffic Rate and Volume: Per-application traffic rate and volume measures can be used to characterise the traffic that uses a network segment, or the pattern of network usage ๐Ÿ“Š Observing the protocol sequence number and packet size is one way to measure this ๐Ÿ’– (e.g., measurements observing counters in periodic reports, such as RTCP [RFC3550] [RFC3711] [RFC4585], or measurements observing protocol sequence numbers in statistical samples of packet flows or specific control packets, such as those observed at the start and end of a flow).

Measurements can be per endpoint or for an endpoint aggregate. These could be used to assess usage or for subscriber billing ๐Ÿ’…

Such measurements can be used to trigger traffic shaping and to associate QoS support within the network and lower layers. This can be done with consent and in support of an end user to improve quality of service, or it could be used by the network to deprioritise certain flows without user consent ๐Ÿ™ˆ That part is not it, no cap.

The traffic rate and volume can be determined, providing that the packets belonging to individual flows can be identified. But there might be no additional information about a flow when the transport headers cannot be observed ๐Ÿซถ

Loss Rate and Loss Pattern: Flow loss rate can be derived (e.g., from transport sequence numbers, or inferred from observing transport protocol interactions) and has been used as a metric for performance assessment and to characterise transport behaviour ๐ŸŒธ Network operators have used the variation in patterns to detect changes in the offered service. Understanding the location and root cause of loss can help an operator determine whether this requires corrective action ๐Ÿ”ฅ

There are various causes of loss, including: corruption of link frames (e.g., due to interference on a radio link); buffering loss (e.g., overflow due to congestion, Active Queue Management (AQM) [RFC7567], or inadequate provision following traffic preemption); and policing (e.g., traffic management [RFC2475]). Understanding 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 or transport headers, or comparing a per-flow packet counter with the number of packets that the flow actually sent ๐Ÿงš Per-hop loss can also sometimes be monitored at the interface level by devices on the network path, or by using in-situ methods operating over a network segment (see Section 3.3).

The pattern of loss can provide insight into the cause of loss. Losses can often occur as bursts, randomly timed events, etc. It can also be valuable to understand the conditions under which loss occurs. This usually requires relating loss to the traffic flowing at a network node or segment at the time of loss. Transport header information can help identify cases where loss could have been wrongly identified, or where the transport did not require retransmission of a lost packet ๐Ÿ’€

Throughput and Goodput: Throughput is the amount of payload data sent by a flow per time interval ๐Ÿ“ Goodput (the subset of throughput consisting of useful traffic; see Section 2.5 of [RFC7928] and [RFC5166]) is a measure of useful data exchanged โœจ The throughput of a flow can be determined in the absence of transport header information, providing that the individual flow can be identified and the overhead is known. Goodput requires the ability to differentiate loss and retransmission of packets, for example by observing packet sequence numbers in the TCP or RTP headers [RFC3550] ๐Ÿ‘‘

Latency: Latency is a key performance metric that impacts application and user-perceived response times ๐Ÿ˜ญ It often indirectly impacts throughput and flow completion time. It determines the reaction time of the transport protocol itself, impacting flow setup, congestion control, loss recovery, and other transport mechanisms. The observed latency can have many components [Latency]. Of these, unnecessary or unwanted queueing in buffers of the network devices on the path has often been observed as a significant factor [bufferbloat]. Once the cause of unwanted latency has been identified, this can often be eliminated ๐ŸŽ€

To measure latency across a part of a path, an observation point [RFC7799] can measure the experienced round-trip time (RTT) by using packet sequence numbers and acknowledgements, or by observing header timestamp information. Such information allows an observation point on the network path to determine not only the path RTT, but also allows measurement of the upstream and downstream contribution to the RTT. This 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 for a part of a path ๐Ÿ”

The service offered by network operators can benefit from latency information to understand the impact of configuration changes and to tune deployed services. Latency metrics are key to evaluating and deploying AQM [RFC7567], Diffserv [RFC2474], and Explicit Congestion Notification (ECN) [RFC3168] [RFC8087]. Measurements could identify excessively large buffers, indicating where to deploy or configure AQM. An AQM method is often deployed in combination with other techniques, such as scheduling [RFC7567] [RFC8290], and although parameter-less methods are desired [RFC7567], current methods often require tuning [RFC8290] [RFC8289] [RFC8033] because they cannot scale across all possible deployment scenarios ๐ŸŒˆ

Latency and round-trip time information can potentially expose some information useful for approximate geolocation, as discussed in [PAM-RTT] ๐Ÿ—บ๏ธ

Variation in Delay: Some network applications are 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 network path ๐ŸŽง For example, jitter metrics are often cited when characterising paths supporting real-time traffic. The expected performance of such applications can be inferred from a measure of the variation in delay observed along a portion of the path [RFC3393] [RFC5481]. The requirements resemble those for the measurement of latency ๐Ÿ’œ

Flow Reordering: Significant packet reordering within a flow can impact time-critical applications, and can be interpreted as loss by reliable transports ๐Ÿ˜ต Many transport protocol techniques are impacted by reordering (e.g., triggering TCP retransmission or rebuffering of real-time applications). Packet reordering can occur for many reasons, e.g., from equipment design to misconfiguration of forwarding rules. Flow identification is often required to avoid significant packet misordering (e.g., when using ECMP, or LAG) ๐Ÿ›ค๏ธ Network tools can detect and measure unwanted or excessive reordering and the impact on transport performance.

There have been initiatives in the IETF transport area to reduce the impact of reordering within a transport flow, possibly leading to a reduction in the requirements for preserving ordering. These have potential to simplify network equipment design, as well as the potential to improve robustness of the transport service ๐Ÿ™Œ Measurements of reordering can help understand the present level of reordering and inform decisions about how to progress new mechanisms.

Techniques for measuring reordering typically observe packet sequence numbers. Metrics have been defined that evaluate whether a network path has maintained packet order on a packet-by-packet basis [RFC4737] [RFC5236]. Some protocols provide in-built monitoring and reporting functions. Transport fields in the RTP header [RFC3550] [RFC4585] can be observed to derive traffic volume measurements and provide information on the progress and quality of a session using RTP. Metadata assists in understanding the context under which the data was collected, including the time, observation point [RFC7799], and way in which metrics were accumulated. The RTCP protocol directly reports some of this information in a form that can be directly visible by devices on the network path ๐Ÿ“ก

In some cases, measurements could involve active injection of test traffic to perform a measurement (see Section 3.4 of [RFC7799]). 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 incur an additional cost in running such tests (e.g., the implications of capacity tests in a mobile network segment are obvious). Some active measurements [RFC7799] (e.g., response under load or particular workloads) perturb other traffic and could require dedicated access to the network segment ๐Ÿšง

Passive measurements (see Section 3.6 of [RFC7799]) can have advantages in terms of eliminating unproductive test traffic, reducing the influence of test traffic on the overall traffic mix, and having the ability to choose the point of observation (see Section 2.4.1). Measurements can rely on observing packet headers, which is not possible if those headers are encrypted, but could utilise information about traffic volumes or patterns of interaction to deduce metrics ๐Ÿ”

Passive packet sampling techniques are also often used to scale the processing involved in observing packets on high-rate links. This exports only the packet header information of (randomly) selected packets. Interpretation of the exported information relies on understanding of the header information. The utility of these measurements depends on the type of network segment or link and the number of mechanisms used by the network devices. Simple routers are relatively easy to manage, but a device with more complexity demands understanding of the choice of many system parameters ๐Ÿง 

2.3.2. Using Information Derived from Network-Layer Header Fields โœจ

Okay so the transport header is literally giving a multi-field (MF) classifier so much info ๐Ÿ’…, and the classifier can use it as part of a policy framework ๐Ÿงš. Policies are a whole thing for managing QoS or Quality of Experience (QoE) in resource-constrained networks, and firewalls use them to enforce access rules (see also Section 2.2.2 of [RFC8404]). They can back up user applications and services, or protect against unwanted or lower-priority traffic (Section 2.4.4).

Transport-layer info can also be explicitly carried in network-layer header fields that aren't encrypted ๐Ÿ”“. These fields can replace or add to the transport header info that's already exposed [RFC8558]. The result is that devices along the network path can give the traffic a different forwarding treatment, even when the transport encrypts the rest of its header info ๐Ÿฆ‹.

On the one hand, a transport that multiplexes multiple subflows might want to keep the presence and characteristics of those subflows a secret ๐Ÿคซ. On the other hand, an encrypted transport could set the network-layer info to say "hey, these subflows exist" and to show what each subflow needs service-wise ๐Ÿซถ. There are a few ways this could be done:

IP Address:

Applications normally expose the endpoint addresses that network devices use for forwarding decisions ๐ŸŒธ. An MF classifier can use addresses and other protocol info to decide how traffic is treated [RFC2475], which means it affects the quality of experience for a flow. Common issues with IP address sharing are described in [RFC6269].

Using the IPv6 Network-Layer Flow Label:

A bunch of Standards Track and Best Current Practice RFCs (e.g., [RFC8085], [RFC6437], and [RFC6438]) encourage endpoints to set the IPv6 Flow Label field in the network-layer header ๐ŸŽ€. As per [RFC6437], IPv6 source nodes "SHOULD assign each unrelated transport connection and application data stream to a new flow." A multiplexing transport could use multiple flow labels so the network can forward its subflows independently ๐Ÿงš. [RFC6437] also gives more guidance on picking a flow label value. It says these "should be chosen such that their bits exhibit a high degree of variability," and chosen so that "third parties should be unlikely to be able to guess the next value that a source of flow labels will choose." Iconic, right? ๐Ÿ˜ญ

Once it's set, a flow label can help inform network-layer queueing and forwarding ๐Ÿ”ฅ. That includes use with IPsec [RFC6294], Equal-Cost Multipath routing, and Link Aggregation [RFC6438].

Be careful here, bestie ๐Ÿ™ˆ: how you assign a flow label needs to avoid creating links between flows that a network device couldn't otherwise see. If the transport handles it badly, that can cause privacy problems. For example, giving the same label to two independent flows that shouldn't be classified similarly is a privacy fail ๐Ÿ’€.

Using the Network-Layer Differentiated Services Code Point:

Applications can tell network devices what delivery they expect by setting the Differentiated Services Code Point (DSCP) field in IPv4 and IPv6 packets [RFC2474] ๐Ÿ“. For example, WebRTC applications give different forwarding treatments to individual subflows (audio vs. video) based on the value of the DSCP field [RFC8837]). This is explicit info that helps with network-layer queueing and forwarding. It's way better than an operator guessing what traffic needs by digging through transport and application headers with an MF classifier ๐Ÿ‘‘. Bad use can still cause privacy issues too. For instance, giving a subflow a different DSCP could help a network device figure out the traffic pattern an application is using ๐Ÿ‘€.

The field is mutable, meaning some network devices are expected to change it ๐ŸŒˆ. Since the DSCP value can affect the quality of experience for a flow, anyone observing service performance has to take this field into account when a network path supports differentiated service treatment โญ.

Using Explicit Congestion Notification:

Explicit Congestion Notification (ECN) [RFC3168] is a transport mechanism that uses the ECN field in the network-layer header ๐Ÿ’œ. Using ECN explicitly tells the network layer that the transport is ECN capable and asks for ECN treatment of the flow. An ECN-capable transport can be a total win on a path with equipment that runs an AQM method with Congestion Experienced (CE) marking of IP packets [RFC8087]. That's because it can react to congestion without also having to recover from lost packets ๐Ÿฆ‹.

ECN exposes the presence of congestion โœจ. Receiving CE-marked packets can help estimate how much incipient congestion there is on the upstream part of the path, from the point of observation (Section 2.5 of [RFC8087]). Interpreting the marking behaviour (i.e., assessing congestion and diagnosing faults) needs context from the transport layer, like path RTT ๐Ÿงš.

AQM and ECN come with a whole range of algorithms and configuration options ๐ŸŒธ. So tools have to be available to network operators and researchers to understand what their configuration choices mean and how transport behaves, especially as ECN use grows and new methods show up [RFC7567] ๐Ÿ’–.

Network-Layer Options:

Network protocols can carry optional headers (see Section 5.1) ๐ŸŽ€. These can explicitly expose transport header info to on-path devices that work at the network layer (as discussed further in Section 6).

IPv4 [RFC0791] has provisions for optional header fields. IP routers can look at these headers and are required to ignore IPv4 options they don't recognise ๐Ÿ™ˆ. Lots of current paths include network devices that send packets carrying options down a slower processing path. Some network devices (e.g., firewalls) can be (and are) set up to drop these packets [RFC7126]. BCP 186 [RFC7126] gives guidance on how operators should treat IPv4 packets that specify options ๐Ÿซถ.

IPv6 can encode optional network-layer info in separate headers that may sit between the IPv6 header and the upper-layer header [RFC8200] (e.g., the IPv6 Alternate Marking Method [IPV6-ALT-MARK], which can be used to measure packet loss and delay metrics) ๐Ÿ“Š. The Hop-by-Hop Options header, when it's present, comes right after the IPv6 header. IPv6 lets any node along the path examine this header if it's explicitly configured to do so [RFC8200] ๐Ÿ‘‘.

Careful use of the network-layer features (e.g., extension headers can; see Section 5) can help provide similar info when the network can't inspect transport protocol headers ๐Ÿ’….


2.4. To Support Network Operations

Some network operators look at on-path observations of transport headers to analyse the service offered to users of a network segment ๐Ÿ”. That info helps them inform operational practice and detect and locate network problems. [RFC8517] gives an operator's perspective on this kind of use ๐Ÿงš.

When observable transport header info isn't available, people trying to understand transport behaviour and dynamics might learn to work without it ๐ŸŒ™. Or they might use more limited measurements combined with pattern inference and other heuristics to infer network behaviour (see Section 2.1.1 of [RFC8404]). Operational practises aimed at inferring transport parameters are out of scope for this document. They're only mentioned here to recognise that encryption doesn't necessarily stop operators from trying to apply practises that worked with unencrypted transport headers ๐Ÿ™ƒ.

This section talks about observing transport flows, with a focus on transport measurement ๐Ÿ’œ.

2.4.1. Problem Location

Observations of transport header info can help locate the source of problems or assess how well a network segment is performing ๐Ÿ•ต๏ธโ€โ™€๏ธ. Issues often only make sense in the context of the other flows sharing a particular path, device configuration, interface port, and so on. A simple example is monitoring a network device that uses a scheduler or active queue management technique [RFC7567]. There, it could be really useful to know whether the algorithms are correctly controlling latency, or whether overload protection is working ๐Ÿ”ฅ. This means knowing how traffic gets assigned to any subqueues used for flow scheduling, and it can also require info about how the traffic dynamics affect active queue management, starvation prevention mechanisms, and circuit breakers ๐Ÿ˜ตโ€๐Ÿ’ซ.

Sometimes correlating header observations at multiple points along the path (e.g., at the ingress and egress of a network segment) lets an observer figure out how much a portion of the path contributes to an observed metric ๐Ÿฆ‹. For example, that could help locate a source of delay, jitter, loss, reordering, or congestion marking โœจ.

2.4.2. Network Planning and Provisioning

Traffic rate and volume measurements help plan the deployment of new equipment and configuration in networks ๐Ÿ“ˆ. Equipment vendors also find this data valuable, since it shows traffic trends and usage patterns that feed into decisions about planning products and provisioning for new deployments ๐Ÿ› ๏ธ.

Trends in aggregate traffic can be observed and related to the endpoint addresses being used ๐ŸŒธ. But when transport header info isn't observable, it might be impossible to match patterns in measurements with changes in transport protocols ๐Ÿ˜ฉ. That means planning and provisioning lean even harder on other indirect sources of info ๐Ÿฅบ.

2.4.3. Compliance with Congestion Control โœจ

Okay so bestie, this is the part where we talk about whether everyone's traffic is playing fair in the shared Internet sandbox ๐Ÿงš๐Ÿ’– The "wire image" is what on-path devices can see, and it's shaped by transport protocol design and options, how the network gets used, the apps, and even what the users are like ๐ŸŒธ Lowkey, when only a tiny slice of traffic is doing something different, nobody really panics about it ๐Ÿ™ˆ But the more of it there is, the more people want to understand it, and it gets extra spicy when several versions of an evolving protocol are all sharing the same capacity ๐Ÿ’…

Operators can manage traffic load (e.g., when the network is severely overloaded) by deploying rate limiters, traffic shaping, or network transport circuit breakers [RFC8084]. Transport headers that get observed can give them the info they need to make those calls ๐ŸŽ€

Congestion Control Compliance of Traffic:

Congestion control is a key transport function [RFC2914]. Honestly, many network operators just kinda assume that TCP traffic behaves in a way that's fine for the shared Internet ๐Ÿซถ TCP algorithms have been getting better for decades, and they're so efficient and correct that custom application-layer mechanisms have a hard time matching them [RFC8085] ๐Ÿ‘‘

A standards-compliant TCP stack gives congestion control that's judged safe to use across the Internet โœจ Apps built on well-designed transports should control their own network usage, backing off and easing the load when the network gets congested. That's the normal, expected behaviour for IETF-specified transports (e.g., TCP and SCTP) ๐Ÿ’–

Congestion Control Compliance for UDP Traffic:

UDP is a minimal datagram transport with no built-in congestion control ๐Ÿฆ‹ Because congestion control is critical to keeping the Internet stable, apps and other protocols that use UDP have to bring their own mechanisms to prevent collapse, avoid nasty jitter and latency, and get a fair share of capacity alongside other traffic [RFC8085] ๐Ÿ˜ญ

UDP flows that expose a well-known header can be observed to understand a flow's dynamics and how it handles congestion control ๐Ÿ” For example, tools can monitor RTP header info and RTCP reports for real-time flows (see Section 2.3) ๐Ÿ’œ The Secure RTP and RTCP extensions [RFC3711] were deliberately designed to expose some header info for this kind of observation while still protecting the payload data ๐Ÿ”

A network operator can observe the headers of transport protocols layered above UDP to figure out whether the datagram flows follow congestion control expectations ๐ŸŒˆ That can help decide whether it makes sense to deploy things like rate limiters to enforce acceptable usage ๐Ÿ”ฅ How precisely flows can be classified depends on how much info is available, and that shapes the options for conditioning mechanisms (e.g., rate-limiting, circuit breaker techniques [RFC8084], or blocking uncharacterised traffic) [RFC5218] ๐Ÿซง

When anomalies show up, tools can read the transport header info to understand how specific transport protocols (or protocol mechanisms) affect the other traffic sharing the network ๐Ÿ•ต๏ธโ€โ™€๏ธ An observer on the path can get a feel for a flow's dynamics and congestion control behaviour. Analysing observed flows can help build confidence that an application flow backs off its share of the network under persistent congestion, and so tell whether that behaviour is appropriate for sharing limited capacity ๐Ÿ’… For example, it's super common to plot TCP sequence numbers against time to see how a flow shares available capacity and how it reacts to congestion ๐Ÿ“ˆ

Being able to identify the sources and flows that contribute to persistent congestion is important for the safe operation of network infrastructure ๐Ÿ›ก๏ธ It can guide how network devices are configured to back up endpoint congestion avoidance mechanisms [RFC7567] [RFC8084], so a chunk of the network doesn't get driven into congestion collapse [RFC2914] ๐Ÿ’€

2.4.4. To Characterise "Unknown" Network Traffic โœจ

The patterns and types of traffic sharing Internet capacity keep changing as apps, usage patterns, and protocols evolve ๐ŸŒˆ

Encryption can bump up the amount of "unknown" or "uncharacterised" traffic the network sees ๐Ÿ™ˆ If these patterns are only a small part of the aggregate going through a device or network segment, their dynamics probably won't have a big collateral impact on other traffic sharing that segment ๐Ÿซถ Once that proportion grows, monitoring the traffic can tell whether safety measures need to be put in place ๐Ÿ”ฅ

Tracking new mechanisms and protocols means measuring traffic volume and identifying new transport behaviours ๐Ÿ“Š This is especially true for protocols running over a UDP substrate ๐Ÿ’– The level and style of encryption needs to be factored into how this is done ๐Ÿ”

Traffic that can't be classified usually gets a default treatment ๐ŸŽ€ Some networks block or rate-limit traffic they can't classify ๐Ÿšซ

2.4.5. To Support Network Security Functions โœจ

On-path observation of packets' transport headers can be used for all kinds of security functions ๐Ÿ›ก๏ธ For example, Denial of Service (DoS) and Distributed DoS (DDoS) attacks against the infrastructure or an endpoint can be detected and mitigated by characterising anomalous traffic (see Section 2.4.4) on a shorter timescale ๐Ÿ’€ Other uses include supporting security audits (e.g., verifying compliance with cipher suites), client and application fingerprinting for inventory, and alerts for network intrusion detection and other next generation firewall functions ๐Ÿ‘‘

When an encrypted transport is in use, endpoints can directly provide info to support these security functions ๐Ÿฆ‹ If the endpoints don't provide it, another method is an on-path network device that relies on pattern inferences in the traffic, plus heuristics or machine learning, instead of processing observed header info ๐Ÿงš An endpoint could also explicitly cooperate with an on-path device (e.g., a QUIC endpoint could share info about current uses of connection IDs) ๐Ÿค

2.4.6. Network Diagnostics and Troubleshooting โœจ

Operators monitor the health of a network segment to support a variety of operational tasks [RFC8404] ๐Ÿ“Š That includes procedures for early warning and triggering action, e.g., diagnosing network problems, managing security threats (including DoS), evaluating equipment or protocol performance, or answering user performance questions ๐Ÿ” Info about transport flows can help set buffer sizes and check whether link or network tuning is working ๐Ÿ› ๏ธ It can also support debugging and diagnosing the root causes of faults affecting a particular user's traffic, and help with postmortem investigation after an anomaly ๐Ÿ•ฐ๏ธ Sections 3.1.2 and 5 of [RFC8404] have more examples ๐Ÿ’…

Network segments vary a lot in complexity ๐ŸŒธ The design trade-offs for radio networks are often very different from wired ones [RFC8462] ๐Ÿ“ก A radio-based network (e.g., cellular mobile, enterprise Wireless LAN (WLAN), satellite access/backhaul, point-to-point radio) adds a subsystem that handles radio resource management, which can affect available capacity and potentially cause packet loss or reordering ๐Ÿ˜ฌ That impact can differ by traffic type and can be correlated with link propagation and interference ๐ŸŒฉ๏ธ These things affect the cost and performance of a service, and they're expected to matter more as operators combine heterogeneous equipment and use opportunistic methods to access shared radio spectrum ๐Ÿง 

2.4.7. Tooling and Network Operations โœจ

A bunch of open source and proprietary tools have been deployed that use the transport header info visible with widely used protocols, like TCP or RTP/UDP/IP ๐Ÿงฐ Tools that dissect network traffic flows can flag potential problems that are hard to spot from volume measurements, link statistics, or device measurements alone ๐Ÿšจ

Any new transport protocol, protocol feature, or application might require changes to these tools and could affect operational practice and policies ๐Ÿ˜ค Those changes cost the network operators who have to update their tooling or develop alternative practises that work without access to the changed or removed info ๐Ÿ’ธ

Encryption has the really good effect of preventing unintended observation of payload data, and these tools rarely try to observe the payload or other app details ๐Ÿ”’ A flow that hides its transport header info could signal "don't touch" to some operators ๐Ÿ™…โ€โ™€๏ธ That might limit troubleshooting to "can't help, no trouble found" ๐Ÿคทโ€โ™€๏ธ

An alternative that doesn't need access to observable transport headers is to use endpoint diagnostic tools, or to involve users in diagnosing and troubleshooting unusual use cases or nontrivial problems ๐Ÿง‘โ€๐Ÿ’ป Another approach is traffic pattern analysis ๐Ÿ“‰ These tools can be useful during network anomalies (e.g., detecting significant reordering, high or intermittent loss); however, indirect measurements need to be carefully designed to give useful diagnostic and troubleshooting info ๐ŸŽฏ

If new protocols, or protocol extensions, closely resemble or match existing mechanisms, the changes to tooling and the associated costs can be small ๐Ÿฅฐ On the flip side, more extensive changes to the transport tend to need more extensive, and more expensive, changes to tooling and operational practice ๐Ÿ’ธ Protocol designers can soften these costs by explicitly choosing to expose selected info as invariants that are guaranteed not to change for a particular protocol (e.g., the header invariants and the spin bit in QUIC [RFC9000]) ๐Ÿซถ Specifying common log formats and developing alternative approaches can also help reduce the costs of transport changes ๐ŸŒŸ

2.5. To Mitigate the Effects of Constrained Networks โœจ

okay so some link and network segments are constrained by how much capacity they can offer, or by how long it takes to even get access to that capacity (think underlying radio resource management methods ๐Ÿ“ก). Sometimes it's asymmetry built into the design too. Lots of links are designed so the capacity is different in the forward and return directions, and some radio technologies use different access methods each way because of differences in the power budget ๐Ÿ”‹. bestie, this is so real.

The impact of path constraints can be mitigated with a proxy operating at or above the transport layer, which uses an alternate transport protocol ๐Ÿฆ‹.

ngl, in many cases one or both endpoints have no idea what the constraining link or network segment looks like ๐Ÿ™ˆ, so the mitigations happen below the transport layer. Packet classification and QoS methods (covered in various sections) can be super helpful for differentially prioritising certain traffic when there's a capacity constraint or extra delay in scheduling link transmissions ๐Ÿ’–. Another common move is header compression over that specific link or subnetwork (see Section 2.5.1) ๐ŸŽ€.

2.5.1. To Provide Header Compression ๐Ÿงš

Header compression saves link capacity by compressing network and transport protocol headers on a per-hop basis ๐Ÿ’œ. It's been used a lot with low bandwidth dial-up access links, and it still finds a home on wireless links that are capacity constrained ๐Ÿ“ถ. These methods work well for bit-congestive links sending small packets, like cutting the cost of sending control packets or small data packets over radio links โœจ.

Examples include use with TCP/IP and RTP/UDP/IP flows [RFC2507] [RFC6846] [RFC2508] [RFC5795] [RFC8724] ๐ŸŒธ. Here's the catch: compression depends on observing the transport headers and understanding how the fields change between packets, so it's totally incompatible with header encryption ๐Ÿ˜ญ. Devices that compress transport headers also depend on a stable header format, which means that format ends up ossified ๐ŸงŠ.

Introducing a new transport protocol, or changing the format of the transport header information, will limit how effective header compression is until the network devices get updated ๐Ÿ”ง. If the transport protocol headers get encrypted, compression tends to fall back to only compressing the network-layer headers, and the efficiency drops off a lot ๐Ÿ“‰. That can limit connectivity if the resulting flow exceeds the link capacity, or if packets get dropped because they're bigger than the link Maximum Transmission Unit (MTU) ๐Ÿšง.

The Secure RTP (SRTP) extensions [RFC3711] were explicitly designed to leave the transport protocol headers unencrypted but authenticated, since support for header compression was considered important ๐Ÿซถ.

2.6. To Verify SLA Compliance ๐Ÿ“‹

Observable transport headers, coupled with published transport specifications, let operators and regulators explore and verify compliance with Service Level Agreements (SLAs) ๐Ÿ”. It can also be used to understand whether a service is giving differential treatment to certain flows ๐Ÿ‘€.

When transport header information can't be observed, other methods have to be found to confirm that the traffic produced conforms to what the operator or developer expects ๐Ÿ•ต๏ธ.

Independently verifiable performance metrics can be used to demonstrate regulatory compliance in some jurisdictions, and as a basis for informing design decisions ๐Ÿ“Š. This brings assurance to those operating networks, and often avoids deploying complex techniques that routinely monitor and manage Internet traffic flows (like the capital and operational costs of deploying flow rate-limiting and network circuit breaker methods [RFC8084]) ๐Ÿ’ธ.


3. Research, Development, and Deployment ๐Ÿ”ฌ

Research and development of new protocols and mechanisms need to be informed by measurement data (as described in the previous section) ๐Ÿ“ˆ. Data can also help promote acceptance of proposed standards specifications by the wider community, for example as a way to judge the safety of Internet deployment ๐Ÿค.

Observed data is important for keeping the research and development communities healthy, and it provides the data needed to evaluate new proposals for standardisation ๐ŸŒˆ. Open standards motivate a desire to include independent observation and evaluation of performance and deployment data ๐Ÿ‘‘. Independent data helps compare different methods, judge the level of deployment, and make sure the results apply more widely โœจ. This matters when deciding whether a protocol or mechanism should be standardised for use in the general Internet. That in turn demands control over, and understanding of, where and when measurement samples are collected ๐Ÿง. It requires thinking about the methods used to observe information, and about the right balance between encrypting all transport header information and encrypting none of it โš–๏ธ.

There can be performance and operational trade-offs in exposing selected information to network tools ๐Ÿ’…. This section explores key implications of tools and procedures that observe transport protocols, but it doesn't endorse or condemn any specific practises ๐Ÿ™Œ.

3.1. Independent Measurement ๐Ÿ”Ž

Encrypting transport header information has implications for the way network data is collected and analysed ๐Ÿ”. Independent observations by multiple actors are currently used by the transport community to keep an accurate understanding of the network, within transport area working groups, IRTF research groups, and the broader research community ๐Ÿง‘โ€๐Ÿ”ฌ. This matters for accountability and for demonstrating that protocols behave as intended. Still, when providing or using such information, it's important to consider the privacy of the user and their incentive for providing accurate and detailed information ๐Ÿซฃ.

Protocols that expose the state of the transport protocol in their header (for example timestamps used to calculate the RTT, packet numbers used to assess congestion, and requests for retransmission) give a sending endpoint an incentive to provide consistent information, because the protocol won't work otherwise ๐Ÿ’ช. An on-path observer can have confidence that well-known (and ossified) transport header information represents the actual state of the endpoints, when that information is necessary for the protocol's correct operation ๐Ÿ‘€.

Encryption of transport header information could reduce the range of actors that can observe useful data ๐Ÿ™. That would limit the information sources available to the Internet community for understanding how new transport protocols operate, which reduces the information available to inform design decisions and the standardisation of new protocols and related operational practises ๐Ÿ“‰. The cooperating dependence of network, application, and host to provide communication performance on the Internet becomes uncertain when only endpoints (that is, user devices and service platforms) can observe performance, and when performance can't be independently verified by all parties ๐Ÿ˜ฌ.

3.2. Measurable Transport Protocols ๐Ÿ“ก

Transport protocol evolution and the ability to measure and understand the impact of protocol changes have to proceed hand-in-hand ๐Ÿค๐Ÿ’•. A transport protocol that provides observable headers can be used to provide open and verifiable measurement data ๐Ÿฆ‹. Observation of pathologies plays a critical role in the design of transport protocol mechanisms, and in developing new mechanisms and protocols. It aids in understanding the interactions between cooperating protocols and network mechanisms, the implications of sharing capacity with other traffic, and the impact of different patterns of usage ๐Ÿง . The ability of other stakeholders to review transport header traces helps build insight into the performance and traffic contribution of specific variants of a protocol ๐Ÿ”.

Development of new transport protocol mechanisms has to consider the scale of deployment and the range of environments in which the transport is used ๐ŸŒ. Experience has shown that it is often difficult to implement new mechanisms correctly [RFC8085], and that mechanisms often evolve as a protocol matures, or in response to changes in network conditions, in network traffic, or in application usage ๐Ÿ”„. Analysis is especially valuable when it's based on the behaviour experienced across a range of topologies, vendor equipment, and traffic patterns ๐Ÿงฉ.

Encryption lets a transport protocol choose which internal state to reveal to devices on the network path, what information to encrypt, and what fields to grease [RFC8701] ๐ŸŽญ. A new design can provide summary information about its performance, congestion control state, and so on, or make explicit measurement information available ๐Ÿ“Š. For example, [RFC9000] specifies a way for a QUIC endpoint to optionally set the spin bit, to explicitly reveal the RTT of an encrypted transport session to on-path network devices ๐ŸŒ€. There's a choice about what information to expose. For some operational uses, the information has to contain enough detail to understand, and possibly reconstruct, the network traffic pattern for further testing ๐Ÿ› ๏ธ. Interpreting the information needs to consider whether it reflects the actual transport state of the endpoints. That might require trusting transport protocol implementers to correctly reveal the desired information ๐Ÿคž.

New transport protocol formats are expected to speed up transport evolution, and with it the chance to 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 transport methods, including a larger initial window, Proportional Rate Reduction (PRR), congestion control methods based on measuring bottleneck bandwidth and round-trip propagation time, the introduction of AQM techniques, and new forms of ECN response (such as Data Centre TCP, DCTCP, and methods proposed for Low Latency Low Loss Scalable throughput (L4S)) ๐ŸŒˆ. The growth and diversity of applications and protocols using the Internet also keeps expanding ๐ŸŒฑ. For each new method or application, it's desirable to build a body of data reflecting its behaviour across a wide range of deployment scenarios, traffic loads, and interactions with other deployed or candidate methods ๐Ÿ’œโœจ.

3.3. Other Sources of Information โœจ

okay so bestie, some measurements that used to rely only on what's visible on the wire can now be done with endpoint-based logging ๐Ÿ’ป ๐Ÿฆ‹ Think QUIC trace [Quic-Trace] and qlog [QLOG]! It's giving "record what your own endpoint saw" energy. ๐Ÿซถ This info is lowkey iconic because it helps different people for different reasons: developers who want to debug and understand the transport and application protocols they work with ๐Ÿ› ๏ธ, researchers hunting for trends and anomalies ๐Ÿ”, and anyone trying to characterise variants of protocols ๐Ÿงฌ. A standard format for endpoint logging would let people share these logs (after proper anonymisation, obviously ๐Ÿ™ˆ) so everyone can understand performance and pathologies together. Literally a group project moment ๐ŸŒˆ

When servers or client endpoints publish measurement datasets, they usually need extra metadata too ๐Ÿ“‹ Things like the state of the network and the conditions the system was observed in. Without that context, interpreting the data to answer performance questions or figure out a pathology is really hard ๐Ÿ˜ญ And collecting and coordinating that metadata is even harder when the observation point is in a different location from the bottleneck or device being evaluated [RFC7799]. Not me getting a headache just thinking about it ๐Ÿ’€

Now, endpoint logs are useful in some scenarios, but they are NOT the same as on-path measurements made by devices inside the network ๐Ÿ™…โ€โ™€๏ธ Endpoint logs only capture part of what you need to understand how network devices behave and to spot issues like link performance or how capacity gets shared between multiple flows. Analysing this stuff can require coordination between actors at different layers, so you can properly characterise flows and connect a specific mechanism's performance or behaviour to an equipment configuration and to the traffic running through operational equipment along a network path ๐Ÿ›ฃ๏ธ For example, combining transport and network measurements to explore congestion control dynamics helps you understand what traffic means for designs like active queue management or circuit breakers โšก Main character energy in data analysis, fr fr ๐Ÿ‘‘

Another source of information is Operations, Administration, and Maintenance (OAM) (see Section 6) ๐Ÿงš OAM lets information data records get embedded into header information at different layers. That supports functions like performance evaluation, path tracing, path verification, classification, and a bunch of other uses ๐ŸŽ€

In-situ OAM (IOAM) data fields [IOAM-DATA] can be encapsulated into a variety of protocols so they record operational and telemetry information inside an existing packet while that packet travels along part of the path between two points in a network (for example, within a particular IOAM management domain) ๐Ÿฆ‹ IOAM-Data-Fields are independent from the protocols they get encapsulated into, which is so iconic ๐Ÿ’… For example, IOAM can provide proof that a traffic flow takes a predefined path โœ…, SLA verification for live data traffic ๐Ÿ“ˆ, and statistics about traffic distribution ๐Ÿ“ Periodt ๐Ÿ’–

4. Encryption and Authentication of Transport Headers โœจ

okay so let's talk about why we'd even encrypt transport headers ๐Ÿ” there are a few big motives, bestie ๐Ÿ’…

One motive is to stop network ossification ๐ŸงŠ from network devices that inspect well-known transport headers. Once a network device observes a transport header and becomes reliant on it, the overall use of that field can get ossified, which blocks new versions of the protocol and new mechanisms from being deployed. Examples, iykyk:

  • During the development of TLS 1.3 [RFC8446], the design needed to work with deployed middleboxes that relied on certain header fields exposed in TLS 1.2 [RFC5426].
  • The design of Multipath TCP (MPTCP) [RFC8684] had to account for middleboxes (known as "TCP Normalizers") that watch how the window advertised in the TCP header evolves, then reset connections when the window didn't grow the way they expected. ๐Ÿ˜ญ
  • TCP Fast Open [RFC7413] can run into problems because of middleboxes that modify the transport header of packets by removing "unknown" TCP options. Segments with unrecognised TCP options can get dropped, segments that contain data and set the SYN bit can get dropped, and some middleboxes that disrupt connections can send data before the three-way handshake finishes. ๐Ÿ™ˆ
  • Other examples of TCP ossification include middleboxes that rewrite TCP sequence and acknowledgement numbers but don't understand the (newer) TCP selective acknowledgement (SACK) option. They fail to correctly rewrite the SACK information to match the changes made to the fixed TCP header, which breaks correct SACK operation. ๐Ÿ’€

In all of these cases, middleboxes with a hard-coded, but incomplete, understanding of a specific transport behaviour (i.e., TCP) clashed with transport protocols after that transport behaviour changed. In some cases, the middleboxes modified or replaced information in the transport protocol header. Messy, not cute. ๐ŸŒธ

Transport header encryption stops an on-path device from observing the transport headers, which means ossified mechanisms that directly rely on or infer the semantics of the transport header information can't get used. This encryption is normally paired with authentication of the protected information. [RFC8546] sums this up, saying that "[t]he wire image, not the protocol's specification, determines how third parties on the network paths among protocol participants will interact with that protocol" (Section 1 of [RFC8546]). It's giving: anything unencrypted will probably get ossified. ๐Ÿฆ‹

Encryption doesn't by itself stop ossification of the network service, though. People trying to understand or classify network traffic could still end up relying on pattern inferences and other heuristics or machine learning to derive measurement data and as the basis for network forwarding decisions [RFC8546]. That can also create dependencies on the transport protocol or on the patterns of traffic it can generate, which also results in ossification of the service. ๐Ÿค”

Another motivation for transport header encryption is to improve privacy and decrease opportunities for surveillance. Users value being able to protect their identity and location and defend against analysis of their traffic. Revelations about the use of pervasive surveillance [RFC7624] have, to some extent, eroded trust in the service offered by network operators and led to increased use of encryption. People have also voiced concerns about third parties adding metadata to packets for analytics, customisation, advertising, cross-site tracking of users, customer billing, or selectively allowing or blocking content. Not it. ๐Ÿ™…โ€โ™€๏ธ

Whatever the reasons, the IETF is designing protocols that include transport header encryption (e.g., QUIC [RFC9000]) to supplement the already widespread payload encryption and to further limit exposure of transport metadata to the network. โœจ

If a transport protocol uses header encryption, the designers have to decide whether to encrypt all or only part of the transport-layer information. Section 4 of [RFC8558] states, "Anything exposed to the path should be done with the intent that it be used by the network elements on the path." ๐Ÿ‘‘

Certain transport header fields can be made observable to on-path network devices, or new fields can be defined to explicitly expose observable transport-layer information to the network. Where exposed fields are intended to be immutable (i.e., they can be observed but not modified by a network device), endpoints are encouraged to use authentication to provide a cryptographic integrity check that can detect whether these immutable fields have been modified by network devices. Authentication can help prevent attacks that rely on sending packets that fake exposed control signals in transport headers (e.g., TCP RST spoofing). Making part of a transport header observable, or exposing new header fields, can lead to ossification of that part of the header, because network devices come to rely on observations of the exposed fields. ๐Ÿ”

The use of transport header authentication and encryption therefore creates a tussle between middlebox vendors, operators, researchers, application developers, and end users:

  • On the one hand, future Internet protocols that support transport header encryption help restore the end-to-end nature of the Internet by returning complex processing to the endpoints. Since middleboxes can't modify what they can't see, transport header encryption can improve application and end-user privacy by reducing leakage of transport metadata to operators that deploy middleboxes. ๐Ÿซถ
  • On the other hand, encrypting transport-layer information has implications for network operators and researchers trying to understand the dynamics of protocols and traffic patterns, since it reduces the information available to them. ๐Ÿฅบ

The following briefly reviews some security design options for transport protocols. "A Survey of the Interaction between Security Protocols and Transport Services" [RFC8922] provides more detail on commonly used encryption methods at the transport layer. ๐Ÿ“š

Security work typically uses a design technique that seeks to expose only what is needed [RFC3552]. This approach gives incentives not to reveal any information that isn't necessary for the end-to-end communication. The IETF has provided guidelines for writing security considerations for IETF specifications [RFC3552]. ๐Ÿ›ก๏ธ

Endpoint design choices that affect privacy also need to be considered as part of the design process [RFC6973]. The IAB has provided guidance for analysing and documenting privacy considerations within IETF specifications [RFC6973]. ๐ŸŽ€

Authenticating the Transport Protocol Header: Transport-layer header information can be authenticated. An example transport authentication mechanism is TCP Authentication Option (TCP-AO) [RFC5925]. This TCP option authenticates the IP pseudo-header, TCP header, and TCP data. TCP-AO protects the transport layer, preventing attacks that would disable the TCP connection itself, and provides replay protection. Such authentication might interact with middleboxes, depending on their behaviour [RFC3234].

The IPsec Authentication Header (AH) [RFC4302] was designed to work at the network layer and authenticate the IP payload. This approach authenticates all transport headers and verifies their integrity at the receiver, preventing modification by network devices on the path. The IPsec Encapsulating Security Payload (ESP) [RFC4303] can also provide authentication and integrity without confidentiality, using the NULL encryption algorithm [RFC2410]. SRTP [RFC3711] is another example of a transport protocol that allows header authentication. ๐Ÿ”

Integrity Check: Transport protocols usually employ integrity checks on the transport header information. Security methods usually employ stronger checks and can combine these with authentication. An integrity check that protects the immutable transport header fields, but still exposes the transport header information in the clear, allows on-path network devices to observe those fields. An integrity check can't prevent modification by network devices on the path, but it can stop a receiving endpoint from accepting changes and avoid impact on transport protocol operation, including some types of attack. ๐Ÿง

Selectively Encrypting Transport Headers and Payload: A transport protocol design that encrypts selected header fields allows specific transport header fields to be made observable by network devices on the path. This information is explicitly exposed either in a transport header field or in a lower-layer protocol header. A design that only exposes immutable fields can also perform end-to-end authentication of these fields across the path, to prevent undetected modification of the immutable transport headers. โœจ

Mutable fields in the transport header create opportunities for on-path network devices to modify transport behaviour (e.g., the extended headers described in [PLUS-ABSTRACT-MECH]). An example of a method that encrypts some, but not all, transport header information is GRE-in-UDP [RFC8086] when used with GRE encryption. ๐Ÿฆ‹

Optional Encryption of Header Information: Using optional header encryption in a transport protocol design has implications. Support for optional mechanisms can increase the complexity of the protocol and its implementation, and of the management decisions that have to be made to use variable-format fields. Instead, fields of a specific type ought to be sent with the same level of confidentiality or integrity protection. ๐ŸŒˆ

Greasing: Protocols often provide extensibility features, reserving fields or values for use by future versions of a specification. The specification of receivers has traditionally ignored unspecified values. However, on-path network devices have emerged that ossify by requiring a certain value in a field, or by reusing a field for another purpose. When the specification is later updated, it's impossible to deploy the new use of the field, and forwarding of the protocol could even become conditional on a specific header field value. ๐Ÿ˜ฑ

A protocol can intentionally vary the value, format, and/or presence of observable transport header fields at random [RFC8701]. This prevents a network device from 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 security mechanism, although the use can be combined with an authentication mechanism. ๐ŸŽฒ

Different transports use encryption to protect their header information to varying degrees. The trend is towards increased protection. ๐Ÿ’–

5. Intentionally Exposing Transport Information to the Network ๐Ÿฆ‹

okay so a transport protocol can totally choose to expose certain transport info to on-path devices that work at the network layer, and it does that by sending observable fields ๐Ÿ‘€. One approach is to make a deliberate choice to leave certain transport header fields unencrypted, so an on-path network device can see them. Another approach is to expose transport info in a network-layer extension header (see Section 5.1). Both are examples of explicit info that's meant to be used by network devices on the path [RFC8558] ๐Ÿ’…

Whatever mechanism you use to expose the info, deciding to expose only specific info puts the transport endpoint in control of what shows up outside of the encrypted transport header ๐Ÿ‘‘. That decision can be made independently of the transport protocol's functionality, which is so clean. You can do it by exposing part of the transport header, or as a network-layer option or extension โœจ

5.1. Exposing Transport Information in Extension Headers ๐ŸŽ€

At the network layer, packets can carry optional headers that explicitly expose transport header info to the on-path devices operating at the network layer (Section 2.3.2). For example, an endpoint that sends an IPv6 hop-by-hop option [RFC8200] can provide explicit transport-layer info that can be observed and used by network devices on the path. Now the tea: new hop-by-hop options are not recommended in [RFC8200] ๐Ÿ™ˆ, and here's why:

"because nodes may be configured to ignore the Hop-by-Hop Options header, drop packets containing a Hop-by-Hop Options header, or assign packets containing a Hop-by-Hop Options header to a slow processing path. Designers considering defining new hop-by-hop options need to be aware of this likely behavior."

Network-layer optional headers explicitly tell you what info is being exposed ๐Ÿ“ฆ. Using exposed transport header info, on the other hand, first requires an observer to figure out which transport protocol it is and what format it's in. See Section 2.2.

An arbitrary path can include one or more network devices that drop packets carrying a specific header or option used for this purpose (see [RFC7872]) ๐Ÿ’€. That could mess with the proper functioning of protocols using the path. The good news is protocol methods can be designed to probe and discover whether the specific option(s) can be used along the current path, which makes them usable on arbitrary paths ๐Ÿงš

5.2. Common Exposed Transport Information ๐ŸŒˆ

There are opportunities for multiple transport protocols to consistently supply common observable info [RFC8558]. A common approach can lead to an open definition of the observable fields, which is giving standardisation energy ๐Ÿซถ The same info could then be used across a whole range of operational and analysis tools ๐Ÿ”ฅ

5.3. Considerations for Exposing Transport Information ๐Ÿ’œ

Here's what to think about when deciding what info (if any) it's appropriate to expose:

  • On the one hand, explicitly exposing derived fields that contain relevant transport info (e.g., metrics for loss, latency, etc.) can save network devices from having to derive this info from other header fields. This could lead to development and evolution of transport-independent tools built around a common observable header, and it lets transport protocols keep evolving independently of this ossified header [RFC8558] โœจ
  • On the other hand, protocols and implementations might be designed to avoid consistently exposing external info that corresponds to the actual internal info the protocol itself uses. An endpoint or protocol could choose to expose transport header info to get the most benefit out of the network [RFC8558]. The value of this info for analysing how the transport layer operates would go way up if the exposed info could be verified to match the transport protocol's observed behavior ๐Ÿ“

The motivation to include actual transport header info, and the implications of network devices using that info, has to be considered when proposing a method like this. [RFC8558] sums it up like this:

"When signals from endpoints to the path are independent from the signals used by endpoints to manage the flow's state mechanics, they may be falsified by an endpoint without affecting the peer's understanding of the flow's state. For encrypted flows, this divergence is not detectable by on-path devices."

6. Addition of Transport OAM Information to Network-Layer Headers ๐Ÿงš

Even when the transport headers are encrypted, on-path devices can still make measurements by using additional protocol headers that carry OAM info in an extra packet header ๐Ÿ”. OAM info can be included with packets to do things like identify transport protocols and flows, help people understand network or transport performance, support network operations, or mitigate the effects of specific network segments ๐Ÿ› ๏ธ

Using network-layer approaches to reveal info has the potential that the same method (and therefore the same observation and analysis tools) can be used consistently across multiple transport protocols ๐Ÿค This approach could also be applied to methods beyond OAM (see Section 5). There can be less desirable side effects too, though, from separating the operation of the transport protocol from the measurement framework ๐Ÿ˜ฌ

6.1. Use of OAM within a Maintenance Domain ๐Ÿ 

OAM info can be restricted to a maintenance domain, which is typically owned and operated by a single entity. OAM info can be added at the ingress to the maintenance domain. For example, that could be an Ethernet protocol header with timestamps and sequence number info, using a method such as 802.11ag or in-situ OAM [IOAM-DATA], or it could be part of the encapsulation protocol. This additional header info is not delivered to the endpoints, and it's typically removed at the egress of the maintenance domain ๐Ÿšช

Some types of measurements are supported this way, but this approach doesn't cover the entire range of measurements described in this document ๐Ÿ™ƒ In some cases it can be hard to position measurement tools at the right segments or nodes, and there can be challenges correlating the downstream and upstream info when in-band OAM data gets inserted by an on-path device ๐ŸŒ€

6.2. Use of OAM across Multiple Maintenance Domains ๐ŸŒ

OAM info can also be added at the network layer by the sender, as an IPv6 extension header or an IPv4 option, or in an encapsulation/tunnel header that also includes an extension header or option. This info can be used across multiple network segments or between the transport endpoints ๐Ÿฆ‹

One example is the IPv6 Performance and Diagnostic Metrics (PDM) destination option [RFC8250]. It lets a sender optionally include a destination option that carries header fields which can be used to observe timestamps and packet sequence numbers โฑ๏ธ This info could be authenticated by a receiving transport endpoint when it's added at the sender and visible at the receiving endpoint, although methods to do this haven't been proposed yet ๐Ÿคทโ€โ™€๏ธ And to be clear, this needs to be explicitly enabled at the sender ๐Ÿ’…

7. Conclusions ๐ŸŽ€

Okay so, header authentication, encryption, and strong integrity checks are being built into new transport protocols, and they have seriously important benefits ๐Ÿ”โœจ. The WebRTC data channel and QUIC have both taken off so fast because they run on UDP as a substrate while also providing confidentiality and authentication for the encapsulated transport headers and payload. Iconic combo, no cap ๐Ÿ’….

This document has walked through some current practises, and what they mean for different stakeholders, when transport-layer header encryption is used ๐Ÿง. It does not judge whether those practises are necessary, and it does not endorse any specific practise. The real goal is to highlight operational tools and practises to keep in mind when designing and modifying transport protocols, so protocol designers can make informed choices about which transport header fields to encrypt, and whether it's worth making an explicit choice to expose certain fields to devices on the network path ๐Ÿฆ‹. When making that call, it's important to balance the following:

User Privacy:

The less transport header information exposed to the network, the lower the risk of leaking metadata that could have user privacy implications ๐Ÿ™ˆ. Transports that choose to expose some header fields need to do a privacy assessment to understand the privacy cost versus the benefit of making that information available. The design of the QUIC spin bit to the network is an example of that kind of considered analysis โœจ.

Transport Ossification:

Unencrypted transport header fields are likely to ossify rapidly, because network devices come to rely on them being there, which makes it hard to change the transport later ๐ŸงŠ. So the choice to expose information to the network has to be made deliberately and with care, since it basically defines a stable interface between the transport and the network. Some protocols will want to make that interface as limited as possible ๐Ÿค. Other protocols might find value in exposing certain information to signal the network, or in letting the network change certain header fields as signals to the transport ๐Ÿ“ก. The visible wire image of a protocol should be explicitly designed ๐Ÿ’–.

Network Ossification:

Encryption can reduce ossification of the transport protocol, but it does not, by itself, stop ossification of the network service ๐Ÿ˜ฌ. People trying to understand network traffic could still rely on pattern inferences and other heuristics, or on machine learning, to derive measurement data and to make network forwarding decisions [RFC8546]. That creates dependencies on the transport protocol, or on the patterns of traffic it can generate, which results in ossification of the service ๐Ÿซ .

Impact on Operational Practice:

The network operations community has long depended on being able to understand Internet traffic patterns, both in aggregate and at the flow level, for network management, traffic engineering, and troubleshooting ๐Ÿ“Š. Operational practice has grown up around the information available from unencrypted transport headers. The IETF has supported this by developing operations and management specifications, interface specifications, and associated Best Current Practices ๐Ÿ“š. Widespread deployment of transport protocols that encrypt their information will affect network operations, unless operators can develop alternative practises that work without access to the transport header ๐Ÿ˜ญ.

Pace of Evolution:

Removing obstacles to change can speed up evolution ๐Ÿš€. If a protocol changes its transport header format (wire image) or its transport behaviour, the tools and methods that are currently deployed can stop being relevant. When that happens, and appropriate operational support functions and procedures need to be developed alongside it, there's a cost in new tooling to catch up with each change ๐Ÿ› ๏ธ. Protocols that consistently expose observable data don't need that kind of development, but they can suffer from ossification, and they need to think about whether the exposed protocol metadata has privacy implications ๐Ÿ‘€. There's no single deployment context, so designers need to consider the diversity of operational networks, such as ISPs, enterprises, DDoS mitigation and firewall maintainers, and so on ๐ŸŒˆ.

Supporting Common Specifications:

Common, open transport specifications can get developers, users, researchers, and the wider community excited and engaged ๐Ÿ™Œ. More protocol diversity can help meet new requirements, but innovating without public scrutiny risks point solutions that are optimised for specific cases and that can accidentally disrupt operations of or in different parts of the network ๐Ÿ˜ค. The social contract that keeps the Internet stable relies on accepting common transport specifications, and on it being possible to detect violations ๐Ÿค. Independent measurements, transparency, and public scrutiny of transport protocol behaviour help the community enforce the social norm that protocol implementations behave fairly and conform (at least mostly) to the specifications ๐Ÿ”. It's important to find new ways of keeping that community trust as increased use of transport header encryption limits visibility into transport behaviour (see also Section 5.3) ๐Ÿฅน.

Impact on Benchmarking and Understanding Feature Interactions:

An appropriate vantage point for observation, combined with timing information about traffic flows, is a super valuable tool for benchmarking network devices, endpoint stacks, and/or configurations ๐Ÿ“ˆ. It can help people understand complex feature interactions. Not being able to observe transport header information makes it harder to diagnose and explore interactions between features at different protocol layers. That's a side effect of not allowing a choice of vantage point from which this information is observed ๐Ÿ•ต๏ธ. New approaches might have to be developed ๐Ÿ’ก.

Impact on Research and Development:

Hiding transport header information can get in the way of independent research into new mechanisms, measurements of behaviour, and development initiatives ๐Ÿงช. Experience shows that transport protocols are complicated to design, complex to deploy, and that individual mechanisms have to be evaluated while considering other mechanisms across a broad range of network topologies, with attention to the impact on traffic sharing the capacity ๐Ÿง . If increased use of transport header encryption results in less open data being available, it could eliminate the independent checks on the standardisation process that research and academic contributors have provided in the past. Examples include the role of the IRTF Internet Congestion Control Research Group (ICCRG), and research publications that review new transport mechanisms and assess the impact of their deployment ๐ŸŽ“.

Observable transport header information might be useful to various stakeholders ๐Ÿ‘€. Other sets of stakeholders have incentives to limit 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 how this will be achieved ๐Ÿ™…. There are also design choices about where observable fields are placed. For example, one location could be a part of the transport header outside of the encryption envelope, and another alternative is to carry the information in a network-layer option or extension header ๐Ÿ“ฆ. New transport protocol designs ought to explicitly identify any fields that are intended to be observed, consider whether there are alternative ways of providing the information, and reflect on the implications of observable fields being used by on-path network devices. They should also think about how this might affect user privacy and protocol evolution when those fields become ossified ๐Ÿ”ฎ.

As [RFC7258] notes, "Making networks unmanageable to mitigate PM is not an acceptable outcome, but ignoring PM would go against the consensus documented here." ๐Ÿซถ Providing explicit information can help avoid traffic being inappropriately classified, which would impact application performance โšก. An appropriate balance will emerge over time as real instances of this tension are analysed [RFC7258]. The balance between information exposed and information hidden ought to be carefully considered when specifying new transport protocols ๐ŸŒธ.

8. Security Considerations ๐Ÿ”โœจ

okay bestie, this section is SO important so buckle up ๐Ÿ’… the whole document is about design and deployment stuff for transport protocols, and security issues get brought up all throughout it ๐Ÿงš

Authentication, confidentiality protection, and integrity protection are listed as transport features by [RFC8095] ๐ŸŽ€ and, as things are deployed on the Internet right now, these are usually handled by a protocol or layer sitting on top of the transport protocol [RFC8922] ๐Ÿ’œ

Confidentiality and strong integrity checks can also be baked into the design of a transport protocol, or added to an existing one ๐ŸŒธ integrity checks protect an endpoint from sneaky changes to protocol fields made by on-path network devices ๐Ÿ‘€, and encryption plus obfuscation or greasing can stop those headers being used by network devices at all [RFC8701] ๐Ÿซถ. Hiding headers gives you more freedom to update protocols and makes it way easier to experiment with new techniques and then actually deploy them in endpoints ๐Ÿฆ‹. A protocol spec has to weigh the cost of ossifying common headers against the upside of exposing specific info that can be seen along the network path, since that's how you get tools to manage new protocol variants ๐Ÿ“

Header encryption can give confidentiality for some or all of the transport header info ๐Ÿ”’. This stops an on-path device from learning the value of a header field, so mechanisms that directly rely on that field, or try to guess what it means, can't get built ๐Ÿ™ˆ Less visibility into transport metadata can limit how well you can measure and characterise traffic, but on the flip side it can give privacy benefits ๐Ÿ’–

Extending the transport payload security context so it also covers the transport protocol header means both kinds of info are protected with the same key ๐Ÿ—๏ธ Here's the catch: if that key gets shared with a third party, that's a privacy problem. For example, giving someone access to transport headers to debug a performance issue would also expose the transport payload data to that same third party ๐Ÿ˜ญ These risks can be reduced with a layered design that has one protection domain and its own keys for the payload and encrypted transport headers, and a separate protection domain with its own keys for any observable transport header fields ๐Ÿ‘‘

Exposed transport headers are sometimes used as part of the info for spotting anomalies in network traffic ๐Ÿ”ฅ As [RFC7258] puts it, "While PM is an 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 functions monitor packets or flows and anti-spam mechanisms need to see mail message content." ๐Ÿ“œ This can be the first line of defence for spotting possible DoS or malware threats, and for sending suspect traffic to dedicated nodes that handle DoS analysis, malware detection, or packet "scrubbing" (the normalisation of packets so there's no ambiguity about how the ultimate destination will interpret them) ๐Ÿงผ Some operators already use these techniques to defend against distributed DoS attacks too โญ

Exposed transport header fields can also be part of the info a transport protocol receiver uses to protect the transport layer from data injection by an attacker ๐Ÿ›ก๏ธ When you evaluate using exposed header info this way, it's important to check whether it creates a real DoS risk ๐Ÿ’€ For example, an attacker could flood packets with sequence numbers that fall inside the range the receiving endpoint currently accepts ๐Ÿ˜ฑ That makes the receiver do extra work, even though the attacking packet's data might never get delivered by the transport layer ๐Ÿฅด This is sometimes called a "shadowing attack" ๐ŸŒˆ An attack like this can disrupt receiver processing, trigger loss and retransmission, or force the receiving endpoint into pointless decryption of packets that can't be decrypted successfully, which makes it spend decryption resources or update and then restore protocol state ๐Ÿซ 

One mitigation against off-path attacks is to hide what header info a receiver accepts, or to obfuscate it ๐Ÿ™ˆ For example, you can set an unpredictable initial value for a sequence number during the protocol handshake, as in [RFC3550] and [RFC6056], or use a port value that can't be predicted (see Section 5.1 of [RFC8085]) ๐ŸŽ€ A receiver could also require extra info to be part of a validation check before accepting packets at the transport layer, such as using a part of the sequence number space that's encrypted, or verifying an encrypted token an attacker can't see ๐Ÿ” This also helps against on-path attacks ๐Ÿงš The catch is that there's an extra processing cost when decryption is attempted before a receiver throws away an injected packet ๐Ÿ’ธ

The existence of open transport protocol standards, plus a research and operations community with a history of independently observing and evaluating performance data, encourages fairness and conformance to those standards ๐ŸŒŸ So it suggests that careful thought should go into where and when measurement samples are collected ๐Ÿ“ An appropriate balance has to be found between encrypting some or all of the transport header info ๐ŸŽ€ Open data, and access to tools that help people understand trends in application deployment, network traffic, and usage patterns, can all help with understanding security challenges ๐Ÿ“Š

The security and privacy considerations in "A Framework for Large-Scale Measurement of Broadband Performance (LMAP)" [RFC7594] cover both Active and Passive measurement techniques, along with supporting material on measurement context ๐ŸŒธ

Adding observable transport info to the path gives an observer more information ๐Ÿ‘€ When that info can be linked to a node or user, it can reduce the user's privacy ๐Ÿ˜ญ See the security considerations of [RFC8558] ๐Ÿ’–


9. IANA Considerations ๐Ÿ“‹

This document has no IANA actions ๐ŸŒท

10. Informative References ๐Ÿ“š

[bufferbloat]
           Gettys, J. and K. Nichols, "Bufferbloat: Dark Buffers in
           the Internet", Communications of the ACM, Vol. 55, no. 1,
           pp. 57-65, DOI 10.1145/2063176.2063196, January 2012,
           <https://doi.org/10.1145/2063176.2063196>.

[DTLS]     Rescorla, E., Tschofenig, H., and N. Modadugu, "The
           Datagram Transport Layer Security (DTLS) Protocol Version
           1.3", Work in Progress, Internet-Draft, draft-ietf-tls-
           dtls13-43, 30 April 2021,
           <https://datatracker.ietf.org/doc/html/draft-ietf-tls-
           dtls13-43>.

[IOAM-DATA]
           Brockners, F., Bhandari, S., and T. Mizrahi, "Data Fields
           for In-situ OAM", Work in Progress, Internet-Draft, draft-
           ietf-ippm-ioam-data-12, 21 February 2021,
           <https://datatracker.ietf.org/doc/html/draft-ietf-ippm-
           ioam-data-12>.

[IPV6-ALT-MARK]
           Fioccola, G., Zhou, T., Cociglio, M., Qin, F., and R.
           Pang, "IPv6 Application of the Alternate Marking Method",
           Work in Progress, Internet-Draft, draft-ietf-6man-ipv6-
           alt-mark-06, 31 May 2021,
           <https://datatracker.ietf.org/doc/html/draft-ietf-6man-
           ipv6-alt-mark-06>.

[Latency]  Briscoe, B., Brunstrom, A., Petlund, A., Hayes, D., Ros,
           D., Tsang, I., Gjessing, S., Fairhurst, G., Griwodz, C.,
           and M. Welzl, "Reducing Internet Latency: A Survey of
           Techniques and Their Merits", IEEE Communications Surveys
           & Tutorials, vol. 18, no. 3, pp. 2149-2196, thirdquarter
           2016, DOI 10.1109/COMST.2014.2375213, November 2014,
           <https://doi.org/10.1109/COMST.2014.2375213>.

[Measurement]
           Fairhurst, G., Kuehlewind, M., and D. Lopez, "Measurement-
           based Protocol Design", European Conference on Networks
           and Communications, Oulu, Finland., June 2017.

[PAM-RTT]  Trammell, B. and M. Kuehlewind, "Revisiting the Privacy
           Implications of Two-Way Internet Latency Data", Passive
           and Active Measurement, March 2018.

[PLUS-ABSTRACT-MECH]
           Trammell, B., "Abstract Mechanisms for a Cooperative Path
           Layer under Endpoint Control", Work in Progress, Internet-
           Draft, draft-trammell-plus-abstract-mech-00, 28 September
           2016, <https://datatracker.ietf.org/doc/html/draft-
           trammell-plus-abstract-mech-00>.

[QLOG]     Marx, R., Niccolini, L., and M. Seemann, "Main logging
           schema for qlog", Work in Progress, Internet-Draft, draft-
           ietf-quic-qlog-main-schema-00, 10 June 2021,
           <https://datatracker.ietf.org/doc/html/draft-ietf-quic-
           qlog-main-schema-00>.

[Quic-Trace]
           "QUIC trace utilities", Commit 413c3a4,
           <https://github.com/google/quic-trace>.

[RFC0791]  Postel, J., "Internet Protocol", STD 5, RFC 791,
           DOI 10.17487/RFC0791, September 1981,
           <https://www.rfc-editor.org/info/rfc791>.

[RFC2410]  Glenn, R. and S. Kent, "The NULL Encryption Algorithm and
           Its Use With IPsec", RFC 2410, DOI 10.17487/RFC2410,
           November 1998, <https://www.rfc-editor.org/info/rfc2410>.

[RFC2474]  Nichols, K., Blake, S., Baker, F., and D. Black,
           "Definition of the Differentiated Services Field (DS
           Field) in the IPv4 and IPv6 Headers", RFC 2474,
           DOI 10.17487/RFC2474, December 1998,
           <https://www.rfc-editor.org/info/rfc2474>.

[RFC2475]  Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z.,
           and W. Weiss, "An Architecture for Differentiated
           Services", RFC 2475, DOI 10.17487/RFC2475, December 1998,
           <https://www.rfc-editor.org/info/rfc2475>.

[RFC2507]  Degermark, M., Nordgren, B., and S. Pink, "IP Header
           Compression", RFC 2507, DOI 10.17487/RFC2507, February
           1999, <https://www.rfc-editor.org/info/rfc2507>.

[RFC2508]  Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP
           Headers for Low-Speed Serial Links", RFC 2508,
           DOI 10.17487/RFC2508, February 1999,
           <https://www.rfc-editor.org/info/rfc2508>.

[RFC2914]  Floyd, S., "Congestion Control Principles", BCP 41,
           RFC 2914, DOI 10.17487/RFC2914, September 2000,
           <https://www.rfc-editor.org/info/rfc2914>.

[RFC3168]  Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
           of Explicit Congestion Notification (ECN) to IP",
           RFC 3168, DOI 10.17487/RFC3168, September 2001,
           <https://www.rfc-editor.org/info/rfc3168>.

[RFC3234]  Carpenter, B. and S. Brim, "Middleboxes: Taxonomy and
           Issues", RFC 3234, DOI 10.17487/RFC3234, February 2002,
           <https://www.rfc-editor.org/info/rfc3234>.

[RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
           A., Peterson, J., Sparks, R., Handley, M., and E.
           Schooler, "SIP: Session Initiation Protocol", RFC 3261,
           DOI 10.17487/RFC3261, June 2002,
           <https://www.rfc-editor.org/info/rfc3261>.

Here are the receipts, bestie ๐Ÿงพ๐Ÿ’…


Acknowledgements โœจ

Bestie, the authors want to give a huge shoutout to Mohamed Boucadair, Spencer Dawkins, Tom Herbert, Jana Iyengar, Mirja Kรผhlewind, 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 everyone in TSVWG ๐Ÿซถ for their comments and feedback. They literally made this doc better. ๐Ÿ’–

This work got 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' views. The European Commission is not responsible for any use that might be made of that information. ๐Ÿ‡ช๐Ÿ‡บ

This work also got funded by the UK Engineering and Physical Sciences Research Council under grant EP/R04144X/1. ๐Ÿ‡ฌ๐Ÿ‡ง


Authors' Addresses ๐ŸŽ€

Godred Fairhurst
University of Aberdeen
Department of Engineering
Fraser Noble Building
Aberdeen, Scotland
AB24 3UE
United Kingdom

Email: gorry@erg.abdn.ac.uk
URI:   http://www.erg.abdn.ac.uk/


Colin Perkins
University of Glasgow
School of Computing Science
Glasgow, Scotland
G12 8QQ
United Kingdom

Email: csp@csperkins.org
URI:   https://csperkins.org/
๐Ÿ“ฆ where this page comes from