-
Notifications
You must be signed in to change notification settings - Fork 4
Add section on incentives #39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -156,6 +156,35 @@ cause a new class of interoperability failure. Therefore a label such as | |
"reserved for greasing" may help to avoid the confusion. | ||
|
||
|
||
# Deployment Considerations and Incentives for Greasing | ||
|
||
Greasing can be used as a tool to improve the active use of existing protocol | ||
elements (which weren't necessarily designed with greasing to begin with, or | ||
weren't deployed with greasing); or as part of new protocol design and deployments. | ||
|
||
When greasing isn't used from the beginning of protocol deployment, starting to use | ||
greasing comes with the risk of triggering failures. These failures might be innocuous, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it just failures, or are these also potential anomolies (i.e., artefacts in logs, triggering operational/management events,...) |
||
but they also might be very impactful and visible to users. This risk creates a | ||
disincentive to deploy greasing in existing systems, since generally the change that | ||
triggers failures is often blamed for the failure. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This text in this para is good. However, one clarification point I'd like to make is to confirm what you mean by "existing systems". One scenario I can think of is where a new entrant comes to the market e.g. a ground-up Web server that employs greasing practices and operates well in isolated testing. Is the Web an existing system in this scenario? I tend to think yes. Lets imagine the new server was operated by a new CDN, as they gather business websites transition to it, the user agent diversity increase and there may be clients unable to deal with grease. The change that triggered failure is not the protocol deployment itself, but the transition of clients to this system. There are a few outcomes in a scenario like that. The website owner receives the complains and opens a support ticket to their new CDN, who can try to find the root cause and add accommodation for the interop issue (such as disabling grease on a blanket level, or for some subset of the clients that are seeing issues, reaching out to the affected client etc.). That's quite optimistic though. Its equally likely that the website owner or CDN operator can't figure out the problem, and the pragmatic solution is for the owner to switch away from the CDN. Does that fit in your mental model for this text? or would we need to say something a bit different / in addition? |
||
|
||
Some approaches to avoid failures due to greasing include: | ||
|
||
- Designing, implementing, and using greasing very early on in protocol development | ||
and deployment. This avoids the risks of adding greasing later. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. /risks/ ... are they risk? concern? issues? |
||
- Enabling greasing along with other major protocol feature changes or deployment changes. | ||
For example, when upgrading to a new protocol version that requires implementation updates | ||
on multiple systems, greasing can be added for the new version specifically. This approach | ||
works well for situations where the protocol participants are known and already need | ||
to cooperate (such as within an encrypted protocol between two endpoints). This approach | ||
applies less well for situations where non-cooperating entities (such as middleboxes) | ||
are the source of ossification. | ||
- Using heuristics to disable greasing when errors are encountered. For example, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I read this a couple of times and I'm not sure if the intention is to describe dynamic behaviour using heuristics specifically when errors are encounterd, or if static methods / pre-empting failue are covered too. In other words, I might know apriori that a subset of clients have a known issue with greasing without needing to encounter the problem myself. One approach to avoiding the problem is to partition the "existing system" based on something like a client identifer (ASN, versions exchanged in a handshake prior to when problematic greasing might be encountered, etc.) and special case them for a time period (which might extend to infinity). |
||
if a protocol operation fails multiple times when grease values are used, it can be retried | ||
without any grease values. This reduces the effectiveness of grease values in removing | ||
existing ossification, but can still have benefits for flagging issues in new implementations | ||
when they receive grease values. | ||
|
||
# Considerations for Increasing Protocol Variability {#variability} | ||
|
||
Greasing can maintain protocol extensibility by falsifying active use of its | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is "improve the active use" correct here? ... it seems like this could improve/exercise extensibility or something?