Research: can we get rid of the stream-level sendme cells
Ian and Mashael opined a year or so ago that our stream-level sendmes are not helpful, and perhaps harmful.
I'm inclined to agree. All they do is introduce yet another reason for us to sometimes not send a cell that we would otherwise send.
They were originally designed for fairness between streams in a given circuit, but once you have more than two streams in the circuit, I think the stream-level sendmes start to get in the way rather than help.
Step one is that we should analyze whether this is really true. Are there any cases where stream-level sendmes are still necessary? Do they help enough in the two-stream case to merit keeping them around? Do they harm enough in the three-stream case to merit taking them out?
Step two is to write a patch that rips them out assuming everybody in the network is running that patch, and then runs some private networks to make sure nothing crashes (easy to notice) or wedges (harder to notice).
Step three is to simulate this patched Tor in Shadow and/or ExperimenTor to see if there are any surprises on the performance front.
Step four is to design a backward-compatible way to phase them out, and get that started.