Skip to content

Commit 1675766

Browse files
authored
Merge pull request #9 from intarchboard/tfpauly-patch-1
Editorial suggestions
2 parents ef71147 + 934b197 commit 1675766

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

draft-edm-protocol-greasing.md

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ informative:
3838

3939
Long-term interoperability of protocols is an important goal of the network
4040
standards process. Part of realizing long-term protocol deployment success is
41-
the ability to support change. Change can require adjustments such as extension
42-
to the protocol, modifying usage patterns within the current protocol
43-
constraints, or a replacement protocol. This document present considerations for
44-
protocol designers and implementers about applying techniques such as greasing
45-
or protocol variability as a means to exercise maintenance concepts.
41+
the ability to support change. Change can require adjustments such as extending
42+
the protocol, modifying usage patterns within the current protocol
43+
constraints, or a creating a replacement protocol. This document presents
44+
considerations for protocol designers and implementers about applying techniques
45+
such as greasing or protocol variability as a means to exercise maintenance
46+
concepts.
4647

4748

4849

@@ -53,18 +54,19 @@ or protocol variability as a means to exercise maintenance concepts.
5354
Long-term interoperability of protocols is an important goal of the network
5455
standards process {{?MAINTENANCE=RFC9413}}. Part of realizing long-term protocol
5556
deployment success {{?SUCCESS=RFC5218}} is the ability to support change. Change
56-
can require adjustments such as extension to the protocol, modifying usage
57-
patterns within the current protocol constraints, or a replacement protocol.
57+
can require adjustments such as extending the protocol, modifying usage
58+
patterns within the current protocol constraints, or creating a replacement
59+
protocol.
5860

5961
Greasing is one technique that supports the long term-viability of protocol
6062
extension points. It was originally designed for TLS {{?GREASE=RFC8701}} as a
6163
later addition to help mitigate observed deployment issues. Subsequently, other
62-
protocols such as QUIC {{?QUIC=RFC9000}} and HTTP/3 {{RFC9114}} embedded
63-
greasing capability into the protocol, along with policies and IANA registries,
64-
in order to avoid ossification-related problems emerging in the first place.
65-
Greasing is suitable for many protocols but not all. {{Section 3.3 of
66-
?VIABILITY=RFC9170}} discusses the applicability and limitations of greasing.
67-
{{grease}} presents considerations for applying grease that help
64+
protocols such as QUIC {{?QUIC=RFC9000}} and HTTP/3 {{RFC9114}} added
65+
greasing capability into their initial versions, along with policies and
66+
IANA registries, in order to avoid ossification-related problems emerging in
67+
the first place. Greasing is suitable for many protocols but not all.
68+
{{Section 3.3 of ?VIABILITY=RFC9170}} discusses the applicability and limitations
69+
of greasing. {{grease}} presents considerations for applying grease that help
6870
to ensure it can most effectively reach its maintenance goals.
6971

7072
Changing user needs {{?END-USERS=RFC8890}} may require that applications modify
@@ -74,12 +76,12 @@ to enable support for user uploads. This would change interactions and traffic
7476
flows but still behave completely within the design constraints of the network
7577
protocols. Implementations and deployments might discover ossification affects
7678
this form of change because expectations form around patterns of usage.
77-
{{variability}} presents considerations about how increasing the variability of
78-
protocols can mitigate some of these concerns.
79+
{{variability}} presents considerations about how intentionally increasing the
80+
variability of protocols can mitigate some of these concerns.
7981

8082
Replacing a protocol may be required where the changing needs or environment
8183
push protocol usage outside its original design parameters and extensions cannot
82-
elegantly fill the gap. Replacing a protocol may also be desirable as a form of
84+
effectively fill the gap. Replacing a protocol may also be desirable as a form of
8385
baseline, a formal declaration of protocol and extension(s) combination that is
8486
common, that may simplify deployment by reducing failures related to
8587
combinatorial extensions problems. A replacement protocol version may or may not
@@ -97,10 +99,10 @@ designing for and/or implementing version negotiation and migration.
9799
Greasing can take many forms, depending on the protocol and the nature of its
98100
extension points.
99101

100-
Where a protocol uses registered values (i.e. codepoints) or numbers in a well
101-
defined range, a common approach (see {{GREASE}}, {{Section 18.1 of QUIC}}, or
102-
{{Section 7.2.8 of RFC9114}}), is to reserve a subset of the range for the
103-
purposes of greasing. Ths approach is detailed more thoroughly in {{Section 3.3
102+
In cases where a protocol uses registered values (i.e. codepoints) or numbers in
103+
a well defined range, a common approach (see {{GREASE}}, {{Section 18.1 of QUIC}},
104+
or {{Section 7.2.8 of RFC9114}}), is to reserve a subset of the range for the
105+
purposes of greasing. This approach is detailed more thoroughly in {{Section 3.3
104106
of ?VIABILITY=RFC9170}}. However, protocol designers or implementers may find it
105107
difficult to apply those suggestions in abstract. The likely success or
106108
efficacy of this method can be improved by the following suggestions.
@@ -122,7 +124,7 @@ that range with diversity and non-determinism. The specific nature of size and
122124
distribution of the grease range needs to accommodate the protocol constraints.
123125
For instance, an 8-bit field can only represent a small range of values and it
124126
may be too costly to dedicate many of them solely for the purpose of greasing.
125-
However, protocols that use 32-bit or 64-bit fields are unlikely to have
127+
However, protocols that use 32-bit or 64-bit fields are unlikely to have such
126128
restrictions.
127129

128130
It is beneficial to have a large set of reserved numbers for the purpose of
@@ -160,18 +162,20 @@ values they send.
160162

161163
# Considerations for Increasing Protocol Variability {#variability}
162164

163-
While greasing is one method to deal with falsifying active use of a protocols
164-
extensions points, it cannot address positive use. A protocol may define a
165-
wide-ranging extension capability but if senders do not use it, then
166-
interoperability problems may not arise, leading to ossification until a real
167-
use case emerges.
165+
While greasing is one method to maintain protocol extensibility by falsifying
166+
active use of a protocol's extensions points, it does not ensure that an
167+
extension point has positive use. A protocol may define a wide-ranging extension
168+
capability but if senders do not use it, then interoperability problems might
169+
exist and remain hidden, leading to ossification until a real use case emerges.
168170

169171
Variation of protocol extension points with positive use in mind can help
170172
exercise protocols and ensure long-term maintenance and interoperability. This
171173
can be thought of, to some extent, as protocol fuzzing. It can be a difficult
172174
area to exercise because varying the protocol elements may change the actual
173175
outcome of interactions, leading to real errors. However, some elements can be
174-
safely changed and the following are some examples.
176+
safely changed, as the following examples describe.
177+
178+
## Example: QUIC frames
175179

176180
QUIC packets contain frames. Receivers might build expectations on the
177181
longitudinal aspects of packets or frames - size, ordering, frequency, etc. A

0 commit comments

Comments
 (0)