Skip to content

Commit cb37796

Browse files
committed
Editorialize variability considerations
1 parent 1675766 commit cb37796

File tree

1 file changed

+27
-22
lines changed

1 file changed

+27
-22
lines changed

draft-edm-protocol-greasing.md

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -162,34 +162,39 @@ values they send.
162162

163163
# Considerations for Increasing Protocol Variability {#variability}
164164

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.
170-
171-
Variation of protocol extension points with positive use in mind can help
172-
exercise protocols and ensure long-term maintenance and interoperability. This
173-
can be thought of, to some extent, as protocol fuzzing. It can be a difficult
174-
area to exercise because varying the protocol elements may change the actual
175-
outcome of interactions, leading to real errors. However, some elements can be
176-
safely changed, as the following examples describe.
165+
Greasing can maintain protocol extensibility by falsifying active use of it's
166+
extensions points. However, it does not ensure positive use. A protocol may
167+
define a wide-ranging extension capability that remains unused in the absence of
168+
real use cases. This can lead to ossification that does not expect extensions,
169+
leading to interoperability problems later on.
170+
171+
Long-term maintenance and interoperability can be ensured by exercising
172+
extension points positively. To some extent this can be thought of as protocol
173+
fuzzing. This might be difficult to exercise because varying the protocol
174+
elements might change the outcome of interactions, leading to real errors.
175+
However, some protocols allow elements to be be safely changed, as shown in the
176+
following examples.
177177

178178
## Example: QUIC frames
179179

180180
QUIC packets contain frames. Receivers might build expectations on the
181181
longitudinal aspects of packets or frames - size, ordering, frequency, etc. A
182182
sender can quite often manipulate these parameters and stay compliant to the
183-
requirements of the QUIC protocol. For example, QUIC streams are an ordered
184-
reliable byte stream that is serialized as a sequence of STREAM frames with a
185-
length and offset. Receivers are expected to reassemble frames into an ordered
186-
reliable byte stream such that an application reading from a stream can be
187-
abstracted from matters of the transport later. A sender that purposefully
188-
reorders STREAM frames will help exercise the reassembly features of the
189-
receiver. It is not expected that this would cause a functional failure in the
190-
application layer. However, it may introduce delays or stream head-of-line
191-
blocking that affect the performance aspects of a transmission, which may not be
192-
acceptable for a given use case.
183+
requirements of the QUIC protocol.
184+
185+
QUIC streams are an ordered reliable byte stream that is serialized as a
186+
sequence of STREAM frames with a length and offset. Receivers are expected to
187+
reassemble frames, which could arrive in any order, into an ordered reliable
188+
byte stream that is readable by applications.
189+
190+
A form of positive testing is for a sender to unpredictably order the STREAM
191+
frames that it transmits. For example, varying the sequence order of offset
192+
values. This allows to exercise the QUIC reassembly features of the receiver
193+
with the expectation that no failure would occur. However, doing this may
194+
introduce delay or stream head-of-line blocking that affects the performance
195+
aspects of a transmission, which may not be acceptable for a given use case. As
196+
such, positive testing might be most appropriate to use in a subset of
197+
connections, or phases within a connection.
193198

194199
# Considerations for Protocol Versions {#versions}
195200

0 commit comments

Comments
 (0)