RFC 9065
Considerations around Transport Header Confidentiality, Network Operations, and the Evolution of Internet Transport Protocols
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 Notice ๐
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
SYNbit 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 ๐งพ๐
- [RFC3393] Demichelis, C. and P. Chimento, "IP Packet Delay Variation Metric for IP Performance Metrics (IPPM)", RFC 3393, DOI 10.17487/RFC3393, November 2002,
<https://www.rfc-editor.org/info/rfc3393>. ๐ฆ - [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, July 2003,
<https://www.rfc-editor.org/info/rfc3550>. ๐ - [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on Security Considerations", BCP 72, RFC 3552, DOI 10.17487/RFC3552, July 2003,
<https://www.rfc-editor.org/info/rfc3552>. ๐ - [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, DOI 10.17487/RFC3711, March 2004,
<https://www.rfc-editor.org/info/rfc3711>. ๐ธ - [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, DOI 10.17487/RFC4302, December 2005,
<https://www.rfc-editor.org/info/rfc4302>. ๐ - [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC 4303, DOI 10.17487/RFC4303, December 2005,
<https://www.rfc-editor.org/info/rfc4303>. ๐ - [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, "Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, DOI 10.17487/RFC4585, July 2006,
<https://www.rfc-editor.org/info/rfc4585>. ๐ - [RFC4737] Morton, A., Ciavattone, L., Ramachandran, G., Shalunov, S., and J. Perser, "Packet Reordering Metrics", RFC 4737, DOI 10.17487/RFC4737, November 2006,
<https://www.rfc-editor.org/info/rfc4737>. ๐ - [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol", RFC 4960, DOI 10.17487/RFC4960, September 2007,
<https://www.rfc-editor.org/info/rfc4960>. ๐ง - [RFC5166] Floyd, S., Ed., "Metrics for the Evaluation of Congestion Control Mechanisms", RFC 5166, DOI 10.17487/RFC5166, March 2008,
<https://www.rfc-editor.org/info/rfc5166>. ๐ - [RFC5218] Thaler, D. and B. Aboba, "What Makes for a Successful Protocol?", RFC 5218, DOI 10.17487/RFC5218, July 2008,
<https://www.rfc-editor.org/info/rfc5218>. โญ - [RFC5236] Jayasumana, A., Piratla, N., Banka, T., Bare, A., and R. Whitner, "Improved Packet Reordering Metrics", RFC 5236, DOI 10.17487/RFC5236, June 2008,
<https://www.rfc-editor.org/info/rfc5236>. ๐ - [RFC5426] Okmianski, A., "Transmission of Syslog Messages over UDP", RFC 5426, DOI 10.17487/RFC5426, March 2009,
<https://www.rfc-editor.org/info/rfc5426>. ๐ - [RFC5481] Morton, A. and B. Claise, "Packet Delay Variation Applicability Statement", RFC 5481, DOI 10.17487/RFC5481, March 2009,
<https://www.rfc-editor.org/info/rfc5481>. ๐ - [RFC5795] Sandlund, K., Pelletier, G., and L-E. Jonsson, "The RObust Header Compression (ROHC) Framework", RFC 5795, DOI 10.17487/RFC5795, March 2010,
<https://www.rfc-editor.org/info/rfc5795>. ๐๏ธ - [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP Authentication Option", RFC 5925, DOI 10.17487/RFC5925, June 2010,
<https://www.rfc-editor.org/info/rfc5925>. ๐ - [RFC6056] Larsen, M. and F. Gont, "Recommendations for Transport-Protocol Port Randomization", BCP 156, RFC 6056, DOI 10.17487/RFC6056, January 2011,
<https://www.rfc-editor.org/info/rfc6056>. ๐ฒ - [RFC6269] Ford, M., Ed., Boucadair, M., Durand, A., Levis, P., and P. Roberts, "Issues with IP Address Sharing", RFC 6269, DOI 10.17487/RFC6269, June 2011,
<https://www.rfc-editor.org/info/rfc6269>. ๐ - [RFC6294] Hu, Q. and B. Carpenter, "Survey of Proposed Use Cases for the IPv6 Flow Label", RFC 6294, DOI 10.17487/RFC6294, June 2011,
<https://www.rfc-editor.org/info/rfc6294>. ๐ท๏ธ - [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012,
<https://www.rfc-editor.org/info/rfc6347>. ๐ - [RFC6437] Amante, S., Carpenter, B., Jiang, S., and J. Rajahalme, "IPv6 Flow Label Specification", RFC 6437, DOI 10.17487/RFC6437, November 2011,
<https://www.rfc-editor.org/info/rfc6437>. ๐ท๏ธ - [RFC6438] Carpenter, B. and S. Amante, "Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels", RFC 6438, DOI 10.17487/RFC6438, November 2011,
<https://www.rfc-editor.org/info/rfc6438>. ๐ฃ๏ธ - [RFC6846] Pelletier, G., Sandlund, K., Jonsson, L-E., and M. West, "RObust Header Compression (ROHC): A Profile for TCP/IP (ROHC-TCP)", RFC 6846, DOI 10.17487/RFC6846, January 2013,
<https://www.rfc-editor.org/info/rfc6846>. ๐๏ธ - [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., Morris, J., Hansen, M., and R. Smith, "Privacy Considerations for Internet Protocols", RFC 6973, DOI 10.17487/RFC6973, July 2013,
<https://www.rfc-editor.org/info/rfc6973>. ๐ - [RFC7098] Carpenter, B., Jiang, S., and W. Tarreau, "Using the IPv6 Flow Label for Load Balancing in Server Farms", RFC 7098, DOI 10.17487/RFC7098, January 2014,
<https://www.rfc-editor.org/info/rfc7098>. โ๏ธ - [RFC7126] Gont, F., Atkinson, R., and C. Pignataro, "Recommendations on Filtering of IPv4 Packets Containing IPv4 Options", BCP 186, RFC 7126, DOI 10.17487/RFC7126, February 2014,
<https://www.rfc-editor.org/info/rfc7126>. ๐ง - [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May 2014,
<https://www.rfc-editor.org/info/rfc7258>. ๐ - [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014,
<https://www.rfc-editor.org/info/rfc7413>. โก - [RFC7414] Duke, M., Braden, R., Eddy, W., Blanton, E., and A. Zimmermann, "A Roadmap for Transmission Control Protocol (TCP) Specification Documents", RFC 7414, DOI 10.17487/RFC7414, February 2015,
<https://www.rfc-editor.org/info/rfc7414>. ๐บ๏ธ - [RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF Recommendations Regarding Active Queue Management", BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015,
<https://www.rfc-editor.org/info/rfc7567>. ๐ชฃ - [RFC7594] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., Aitken, P., and A. Akhter, "A Framework for Large-Scale Measurement of Broadband Performance (LMAP)", RFC 7594, DOI 10.17487/RFC7594, September 2015,
<https://www.rfc-editor.org/info/rfc7594>. ๐ถ - [RFC7605] Touch, J., "Recommendations on Using Assigned Transport Port Numbers", BCP 165, RFC 7605, DOI 10.17487/RFC7605, August 2015,
<https://www.rfc-editor.org/info/rfc7605>. ๐ข - [RFC7624] Barnes, R., Schneier, B., Jennings, C., Hardie, T., Trammell, B., Huitema, C., and D. Borkmann, "Confidentiality in the Face of Pervasive Surveillance: A Threat Model and Problem Statement", RFC 7624, DOI 10.17487/RFC7624, August 2015,
<https://www.rfc-editor.org/info/rfc7624>. ๐ต๏ธ - [RFC7799] Morton, A., "Active and Passive Metrics and Methods (with Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, May 2016,
<https://www.rfc-editor.org/info/rfc7799>. ๐ - [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, "Observations on the Dropping of Packets with IPv6 Extension Headers in the Real World", RFC 7872, DOI 10.17487/RFC7872, June 2016,
<https://www.rfc-editor.org/info/rfc7872>. ๐๏ธ - [RFC7928] Kuhn, N., Ed., Natarajan, P., Ed., Khademi, N., Ed., and D. Ros, "Characterization Guidelines for Active Queue Management (AQM)", RFC 7928, DOI 10.17487/RFC7928, July 2016,
<https://www.rfc-editor.org/info/rfc7928>. ๐ - [RFC7983] Petit-Huguenin, M. and G. Salgueiro, "Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) Extension for Datagram Transport Layer Security (DTLS)", RFC 7983, DOI 10.17487/RFC7983, September 2016,
<https://www.rfc-editor.org/info/rfc7983>. ๐งฉ - [RFC8033] Pan, R., Natarajan, P., Baker, F., and G. White, "Proportional Integral Controller Enhanced (PIE): A Lightweight Control Scheme to Address the Bufferbloat Problem", RFC 8033, DOI 10.17487/RFC8033, February 2017,
<https://www.rfc-editor.org/info/rfc8033>. ๐ซง - [RFC8084] Fairhurst, G., "Network Transport Circuit Breakers", BCP 208, RFC 8084, DOI 10.17487/RFC8084, March 2017,
<https://www.rfc-editor.org/info/rfc8084>. โก - [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, March 2017,
<https://www.rfc-editor.org/info/rfc8085>. ๐ฆ - [RFC8086] Yong, L., Ed., Crabbe, E., Xu, X., and T. Herbert, "GRE-in-UDP Encapsulation", RFC 8086, DOI 10.17487/RFC8086, March 2017,
<https://www.rfc-editor.org/info/rfc8086>. ๐ - [RFC8087] Fairhurst, G. and M. Welzl, "The Benefits of Using Explicit Congestion Notification (ECN)", RFC 8087, DOI 10.17487/RFC8087, March 2017,
<https://www.rfc-editor.org/info/rfc8087>. ๐ฆ - [RFC8095] Fairhurst, G., Ed., Trammell, B., Ed., and M. Kuehlewind, Ed., "Services Provided by IETF Transport Protocols and Congestion Control Mechanisms", RFC 8095, DOI 10.17487/RFC8095, March 2017,
<https://www.rfc-editor.org/info/rfc8095>. ๐ง - [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", STD 86, RFC 8200, DOI 10.17487/RFC8200, July 2017,
<https://www.rfc-editor.org/info/rfc8200>. ๐ - [RFC8250] Elkins, N., Hamilton, R., and M. Ackermann, "IPv6 Performance and Diagnostic Metrics (PDM) Destination Option", RFC 8250, DOI 10.17487/RFC8250, September 2017,
<https://www.rfc-editor.org/info/rfc8250>. ๐ฉบ - [RFC8289] Nichols, K., Jacobson, V., McGregor, A., Ed., and J. Iyengar, Ed., "Controlled Delay Active Queue Management", RFC 8289, DOI 10.17487/RFC8289, January 2018,
<https://www.rfc-editor.org/info/rfc8289>. โฑ๏ธ - [RFC8290] Hoeiland-Joergensen, T., McKenney, P., Taht, D., Gettys, J., and E. Dumazet, "The Flow Queue CoDel Packet Scheduler and Active Queue Management Algorithm", RFC 8290, DOI 10.17487/RFC8290, January 2018,
<https://www.rfc-editor.org/info/rfc8290>. ๐ - [RFC8404] Moriarty, K., Ed. and A. Morton, Ed., "Effects of Pervasive Encryption on Operators", RFC 8404, DOI 10.17487/RFC8404, July 2018,
<https://www.rfc-editor.org/info/rfc8404>. ๐ - [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
https://www.rfc-editor.org/info/rfc8446. ๐ - [RFC8462] Rooney, N. and S. Dawkins, Ed., "Report from the IAB Workshop on Managing Radio Networks in an Encrypted World (MaRNEW)", RFC 8462, DOI 10.17487/RFC8462, October 2018,
https://www.rfc-editor.org/info/rfc8462. ๐ก - [RFC8517] Dolson, D., Ed., Snellman, J., Boucadair, M., Ed., and C. Jacquenet, "An Inventory of Transport-Centric Functions Provided by Middleboxes: An Operator Perspective", RFC 8517, DOI 10.17487/RFC8517, February 2019,
https://www.rfc-editor.org/info/rfc8517. ๐งพ - [RFC8546] Trammell, B. and M. Kuehlewind, "The Wire Image of a Network Protocol", RFC 8546, DOI 10.17487/RFC8546, April 2019,
https://www.rfc-editor.org/info/rfc8546. ๐ผ๏ธ - [RFC8548] Bittau, A., Giffin, D., Handley, M., Mazieres, D., Slack, Q., and E. Smith, "Cryptographic Protection of TCP Streams (tcpcrypt)", RFC 8548, DOI 10.17487/RFC8548, May 2019,
https://www.rfc-editor.org/info/rfc8548. ๐ฆ - [RFC8558] Hardie, T., Ed., "Transport Protocol Path Signals", RFC 8558, DOI 10.17487/RFC8558, April 2019,
https://www.rfc-editor.org/info/rfc8558. ๐ฆ - [RFC8684] Ford, A., Raiciu, C., Handley, M., Bonaventure, O., and C. Paasch, "TCP Extensions for Multipath Operation with Multiple Addresses", RFC 8684, DOI 10.17487/RFC8684, March 2020,
https://www.rfc-editor.org/info/rfc8684. ๐ฃ๏ธ - [RFC8701] Benjamin, D., "Applying Generate Random Extensions And Sustain Extensibility (GREASE) to TLS Extensibility", RFC 8701, DOI 10.17487/RFC8701, January 2020,
https://www.rfc-editor.org/info/rfc8701. ๐ฒ - [RFC8724] Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and JC. Zรบรฑiga, "SCHC: Generic Framework for Static Context Header Compression and Fragmentation", RFC 8724, DOI 10.17487/RFC8724, April 2020,
https://www.rfc-editor.org/info/rfc8724. ๐๏ธ - [RFC8837] Jones, P., Dhesikan, S., Jennings, C., and D. Druta, "Differentiated Services Code Point (DSCP) Packet Markings for WebRTC QoS", RFC 8837, DOI 10.17487/RFC8837, January 2021,
https://www.rfc-editor.org/info/rfc8837. ๐ฅ - [RFC8866] Begen, A., Kyzivat, P., Perkins, C., and M. Handley, "SDP: Session Description Protocol", RFC 8866, DOI 10.17487/RFC8866, January 2021,
https://www.rfc-editor.org/info/rfc8866. ๐ - [RFC8922] Enghardt, T., Pauly, T., Perkins, C., Rose, K., and C. Wood, "A Survey of the Interaction between Security Protocols and Transport Services", RFC 8922, DOI 10.17487/RFC8922, October 2020,
https://www.rfc-editor.org/info/rfc8922. ๐ - [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, May 2021,
https://www.rfc-editor.org/info/rfc9000. โก
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
- ietf: rfc9065 2021-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms