@@ -38,11 +38,12 @@ informative:
38
38
39
39
Long-term interoperability of protocols is an important goal of the network
40
40
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.
46
47
47
48
48
49
@@ -53,18 +54,19 @@ or protocol variability as a means to exercise maintenance concepts.
53
54
Long-term interoperability of protocols is an important goal of the network
54
55
standards process {{?MAINTENANCE=RFC9413}}. Part of realizing long-term protocol
55
56
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.
58
60
59
61
Greasing is one technique that supports the long term-viability of protocol
60
62
extension points. It was originally designed for TLS {{?GREASE=RFC8701}} as a
61
63
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
68
70
to ensure it can most effectively reach its maintenance goals.
69
71
70
72
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
74
76
flows but still behave completely within the design constraints of the network
75
77
protocols. Implementations and deployments might discover ossification affects
76
78
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.
79
81
80
82
Replacing a protocol may be required where the changing needs or environment
81
83
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
83
85
baseline, a formal declaration of protocol and extension(s) combination that is
84
86
common, that may simplify deployment by reducing failures related to
85
87
combinatorial extensions problems. A replacement protocol version may or may not
@@ -97,10 +99,10 @@ designing for and/or implementing version negotiation and migration.
97
99
Greasing can take many forms, depending on the protocol and the nature of its
98
100
extension points.
99
101
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
104
106
of ?VIABILITY=RFC9170}}. However, protocol designers or implementers may find it
105
107
difficult to apply those suggestions in abstract. The likely success or
106
108
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
122
124
distribution of the grease range needs to accommodate the protocol constraints.
123
125
For instance, an 8-bit field can only represent a small range of values and it
124
126
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
126
128
restrictions.
127
129
128
130
It is beneficial to have a large set of reserved numbers for the purpose of
@@ -160,18 +162,20 @@ values they send.
160
162
161
163
# Considerations for Increasing Protocol Variability {#variability}
162
164
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.
168
170
169
171
Variation of protocol extension points with positive use in mind can help
170
172
exercise protocols and ensure long-term maintenance and interoperability. This
171
173
can be thought of, to some extent, as protocol fuzzing. It can be a difficult
172
174
area to exercise because varying the protocol elements may change the actual
173
175
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
175
179
176
180
QUIC packets contain frames. Receivers might build expectations on the
177
181
longitudinal aspects of packets or frames - size, ordering, frequency, etc. A
0 commit comments