11---
2- title : " Maintaining Protocols Using Grease and Variability"
2+ title : " Considerations For Maintaining Protocols Using Grease and Variability"
33abbrev : " Protocol Greasing"
44category : info
55
@@ -28,6 +28,10 @@ author:
2828 fullname : Lucas Pardue
2929 organization : Cloudflare
3030 email : " lucas@lucaspardue.com"
31+ -
32+ fullname : Tommy Pauly
33+ organization : Apple
34+ email : " tpauly@apple.com"
3135
3236normative :
3337
@@ -37,40 +41,56 @@ informative:
3741
3842--- abstract
3943
40- Long-term interoperability of protocols is an important goal of the network
41- standards process. Deployment success can depend on supporting change, which
42- can include modifying how the protocol is used, extending the protocol, or
43- replacing the protocol. This document presents concepts, considerations, and
44- techniques related to protocol maintenance, such as greasing or variability. The
45- intended audience is protocol designers and implementers.
44+ Active use and maintenance of network protocols is an important way to
45+ ensure that protocols remain interoperable and extensible over time.
46+ Techniques such as intentionally exercising extension points with
47+ non-meaningful values (referred to as "grease") or adding variability
48+ to how protocol elements are used help generate this active use.
4649
50+ Grease and variability are used across various protocols developed
51+ by the IETF. This document discusses considerations when designing
52+ and deploying grease and variability mechanisms, and provides
53+ advice for making them as effective as possible.
4754
4855--- middle
4956
5057# Introduction
5158
52- Long-term interoperability of protocols is an important goal of the network
53- standards process {{?MAINTENANCE=RFC9413}}. Protocol deployment success
54- {{?SUCCESS=RFC5218}} can depend on supporting change, which
55- can include modifying how the protocol is used, extending the protocol, or
56- replacing the protocol.
57-
58- Greasing, a technique initially designed for TLS {{?GREASE=RFC8701}} and later
59- adopted by other protocols such as QUIC {{?QUIC=RFC9000}}, can help support the
60- long-term viability of protocol extension points. In these protocols, extension
61- codepoints are reserved only for greasing and when received must be ignored.
62- Greasing is suitable for many protocols but not all; {{Section 3.3 of
59+ {{Section 3 of ?VIABILITY=RFC9170}} discusses "active use" as a category
60+ of techniques that protocol designers and implementers employ to ensure
61+ that protocol extension mechanisms are exercised and can be used in the
62+ future. This ability to change (to handle protocol updates and extensions)
63+ is an important factor in the success of protocol deployment, as discussed
64+ in {{?SUCCESS=RFC5218}}.
65+
66+ Active use of protocol features and extensions often requires intentional
67+ efforts beyond what would organically occur in deployments. Some extension
68+ points do not frequently see new values being used, but are still important
69+ to be usable in the future. Some patterns of protocol usage might be
70+ relatively static without specific efforts to ensure that they can change
71+ in the future.
72+
73+ One key techique for intentional use is "grease", or "greasing".
74+ Greasing was initially designed for TLS {{?GREASE=RFC8701}} and was later
75+ adopted by other protocols such as QUIC {{?QUIC=RFC9000}}. In these protocols,
76+ extension codepoints are reserved only for greasing and must be ignored
77+ upon receipt. Greasing is suitable for many protocols but not all; {{Section 3.3 of
6378?VIABILITY=RFC9170}} discusses the applicability and limitations of greasing.
64- {{grease-considerations}} provides additional protocol maintenance
65- considerations.
66-
67- Applications are built with the intent of serving user needs {{?END-USERS=RFC8890}}, which might only
68- require support for a subset of protocol features. Adapting to changing user
69- needs is a maintenance activity. For example, an HTTP deployment focused on
70- downloads might want to add support for uploads. Changing use of the application
71- and transport protocol features can affect the deployment's network traffic
72- profile. If expectations have been formed around historical patterns of use
73- i.e., ossification, introducing change might lead to deployment problems. {{variability}} presents
79+
80+ While it is becoming more common, designing and applying grease is not
81+ necessarily trivial. There are best practices, and some common pitfalls to
82+ avoid, that have been developed by the protocols using grease thus far.
83+ {{grease-considerations}} takes these learnings and provides considerations
84+ for new protocol design and deployment.
85+
86+ Separate from greasing using reserved values, protocol deployments can
87+ intentionally add variability to ensure that network endpoints and
88+ middleboxes do not end up ossifying certain patterns. For example, an HTTP
89+ deployment focused on downloads might want to add support for uploads.
90+ Changing use of the application and transport protocol features can affect
91+ the deployment's network traffic profile. If expectations have been formed
92+ around historical patterns of use, i.e., ossification, introducing change
93+ might lead to deployment problems. {{variability}} presents
7494considerations about how intentionally increasing the variability of protocols
7595can mitigate some of these concerns.
7696
@@ -272,7 +292,7 @@ designers and implementers about how to approach these problems.
272292
273293# Security Considerations
274294
275- The considerations in {{MAINTENANCE}}, {{GREASE}}, {{END-USERS}}, and
295+ The considerations in {{? MAINTENANCE=RFC9413 }}, {{GREASE}}, {{? END-USERS=RFC8890 }}, and
276296{{VIABILITY}} all apply to the topics discussed in this document.
277297
278298The use of protocol features, extensions, and versions can already allow
0 commit comments