@@ -280,6 +280,42 @@ above, as guidance to implementers on how to correctly process protocol elements
280
280
Documents can also provide test vectors, when applicable, that include grease values
281
281
to ensure they are processed correctly.
282
282
283
+ # Deployment Considerations and Incentives for Greasing
284
+
285
+ Greasing can be used as a tool to improve the active use of existing protocol
286
+ elements (which weren't necessarily designed with greasing to begin with, or
287
+ weren't deployed with greasing); or as part of new protocol design and deployments.
288
+
289
+ When greasing isn't used from the beginning of protocol deployment, starting to use
290
+ greasing comes with the risk of triggering failures or anomalies. These failures might be innocuous,
291
+ but they also might be very impactful and visible to users. This risk creates a
292
+ disincentive to deploy greasing in existing systems, since generally the change that
293
+ triggers failures is often blamed for the failure. The risk is highest when
294
+ adding greasing to a particular protocol flow that doesn't require any
295
+ change of behavior or adoption to hit the greasing behavior. For example,
296
+ if a service migrates to use a new web server implementation that enables
297
+ greasing, while the previous server didn't, some new failures may be hit
298
+ if clients react poorly to greasing.
299
+
300
+ Some approaches to avoid failures due to greasing include :
301
+
302
+ - Designing, implementing, and using greasing very early on in protocol development
303
+ and deployment. This avoids the aforementioned risk of adding greasing late in a deployment.
304
+ - Enabling greasing along with other major protocol feature changes or deployment changes.
305
+ For example, when upgrading to a new protocol version that requires implementation updates
306
+ on multiple systems, greasing can be added for the new version specifically. This approach
307
+ works well for situations where the protocol participants are known and already need
308
+ to cooperate (such as within an encrypted protocol between two endpoints). This approach
309
+ applies less well for situations where non-cooperating entities (such as middleboxes)
310
+ are the source of ossification.
311
+ - Using heuristics to disable greasing when errors are encountered. For example,
312
+ if a client-initiated protocol operation fails multiple times when grease values are used, it can be retried
313
+ without any grease values. Alternatively, if a server recognizes a property of a client that always fails
314
+ when greasing is used, it could choose to disable greasing when that client is detected.
315
+ This reduces the effectiveness of grease values in removing
316
+ existing ossification, but can still have benefits for flagging issues in new implementations
317
+ when they receive grease values.
318
+
283
319
# Considerations for Increasing Protocol Variability {#variability}
284
320
285
321
Greasing can maintain protocol extensibility by falsifying active use of its
0 commit comments