Skip to content

Commit a955004

Browse files
committed
Merge commit 'dcd4de5784ad6d4dd35a7ef7a67dc68face654b2' into tfp/greasing
* commit 'dcd4de5784ad6d4dd35a7ef7a67dc68face654b2': Join as author Update draft-edm-protocol-greasing.md Update draft-edm-protocol-greasing.md Update draft-edm-protocol-greasing.md Fix references Editorial pass on title/abstract/intro
2 parents b293fcb + dcd4de5 commit a955004

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

draft-edm-protocol-greasing.md

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: "Maintaining Protocols Using Grease and Variability"
2+
title: "Considerations For Maintaining Protocols Using Grease and Variability"
33
abbrev: "Protocol Greasing"
44
category: 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

3236
normative:
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
7494
considerations about how intentionally increasing the variability of protocols
7595
can 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

278298
The use of protocol features, extensions, and versions can already allow

0 commit comments

Comments
 (0)