From cbb3dc585121c613d97a2777000d487eeaa95cb2 Mon Sep 17 00:00:00 2001 From: Dave Thaler Date: Mon, 7 Jul 2025 11:15:44 -0700 Subject: [PATCH 1/3] Some editorial changes up through end of section 3.2 1. Fix grammar 2. Change "client" to "sender" since greasing isn't just for "clients" and some protocols don't have a role called "client" per se but use other terms instead. Signed-off-by: Dave Thaler --- draft-edm-protocol-greasing.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/draft-edm-protocol-greasing.md b/draft-edm-protocol-greasing.md index b2b36a9..1e3f7c2 100644 --- a/draft-edm-protocol-greasing.md +++ b/draft-edm-protocol-greasing.md @@ -144,11 +144,11 @@ protocol constraints. For instance, protocols that use 8-bit fields may find it too costly to dedicate many grease values, while 32-bit or 64-bit fields are likely to have no such limitations. -It is recommended to use an algorithm to reserving large sets of values. -For example, {{QUIC}} uses and algorithm of `31 * N + 27` to allocate -transport parameters grease values. +It is recommended to use an algorithm to reserve large sets of values. +For example, {{QUIC}} use and algorithm of `31 * N + 27` to allocate +grease values for transport parameters. -One possible problem with some algorithms is how they will spread out +One possible problem with some algorithms is that they will spread out values over the space, and impact the ability to use or reserve contiguous blocks of non-grease values. It is common for protocol extension designers to want to reserve contiguous blocks of codepoints in order to aid @@ -165,7 +165,7 @@ IANA registries that contain reserved grease values must indicate that the values are reserved. The specifics of how to represent the reservations is up to the documents that define the registries. -Some registries list out the reserved grease values specifically, marked as +Some registries list out the reserved grease values individually, marked as "Reserved". For example, the TLS registry uses this approach (https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml). @@ -183,16 +183,18 @@ to label the reservation with a clear identifier, such as "reserved for greasing ## Use Unpredictable Grease Values In order to gain the benefits of active use and avoid ossification, grease values -need to be sent in ways that won't become a predictable pattern that implementations +used in actual packets +need to be sent in ways that won't become a predictable pattern that receiver and +middlebox implementations and deployments ossify around. Implementations that generate grease values should pick unpredictable entries from the set of reserved grease values. It is most important that values be unpredictable across the set of all protocol participants for particular deployments. -This can be achieved in multiple ways: for example, an individual client device +This can be achieved in multiple ways: for example, an individual sender might pick random values from the grease value space on each interaction; -alternatively, a single client could pick a specific grease value to use, while -other clients pick other values. +alternatively, a single sender could pick a specific grease value to use, while +other senders pick other values. In order to support picking unpredictable values, the set of reserved values should be large, when possible. See {{define}} for a discussion of how to allocate From c6595a5474184407d5e18ed947972f1fad7a9f69 Mon Sep 17 00:00:00 2001 From: Dave Thaler Date: Mon, 7 Jul 2025 11:20:26 -0700 Subject: [PATCH 2/3] More grammar fixes Signed-off-by: Dave Thaler --- draft-edm-protocol-greasing.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/draft-edm-protocol-greasing.md b/draft-edm-protocol-greasing.md index 1e3f7c2..0c3832d 100644 --- a/draft-edm-protocol-greasing.md +++ b/draft-edm-protocol-greasing.md @@ -207,7 +207,7 @@ can be made unpredictable. Implementations can vary their behavior by including no grease values, one grease value, or multiple grease values for a given protocol extension point. -How consistently an frequently to use grease values is a choice that implementations +How consistently and frequently to use grease values is a choice that implementations and deployments need to consider and weigh against several factors. Deployments of greasing should consider how they expect errors exposed by @@ -321,7 +321,7 @@ when they receive grease values. # Considerations for Increasing Protocol Variability {#variability} Greasing can maintain protocol extensibility by falsifying active use of its -extension points. However, greasing alone does not ensure positive use of extension mechanisms. A protocol may +extension points (see {{Section 3.3 of VIABILITY}}). However, greasing alone does not ensure positive use of extension mechanisms. A protocol may define a wide-ranging extension capability that remains unused in the absence of real use cases. This can lead to ossification that does not expect extensions, leading to interoperability problems later on. @@ -331,7 +331,7 @@ extension points positively. To some extent this can be thought of as protocol fuzzing. This might be difficult to exercise because varying the protocol elements might change the outcome of interactions, leading to real errors. However, some protocols allow elements to be be safely changed, as shown in the -following examples. +following example. ## Example: QUIC frames @@ -346,8 +346,8 @@ reassemble frames, which could arrive in any order, into an ordered reliable byte stream that is readable by applications. A form of positive testing is for a sender to unpredictably order the STREAM -frames that it transmits. For example, varying the sequence order of offset -values. This allows to exercise the QUIC reassembly features of the receiver +frames that it transmits. For example, the sender can vary the sequence order of offset +values. This allows exercising the QUIC reassembly features of the receiver with the expectation that no failure would occur. However, doing this may introduce delay or stream head-of-line blocking that affects the performance aspects of a transmission, which may not be acceptable for a given use case. As From b5c668851b3f9b1ed2324c8febdc2e8dd6cc1a1c Mon Sep 17 00:00:00 2001 From: Dave Thaler Date: Mon, 21 Jul 2025 13:05:52 -0700 Subject: [PATCH 3/3] Update draft-edm-protocol-greasing.md Co-authored-by: Tommy Pauly --- draft-edm-protocol-greasing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-edm-protocol-greasing.md b/draft-edm-protocol-greasing.md index 0c3832d..641041a 100644 --- a/draft-edm-protocol-greasing.md +++ b/draft-edm-protocol-greasing.md @@ -145,7 +145,7 @@ find it too costly to dedicate many grease values, while 32-bit or 64-bit fields are likely to have no such limitations. It is recommended to use an algorithm to reserve large sets of values. -For example, {{QUIC}} use and algorithm of `31 * N + 27` to allocate +For example, {{QUIC}} uses an algorithm of `31 * N + 27` to allocate grease values for transport parameters. One possible problem with some algorithms is that they will spread out