There are a few things that can be done to the spec to improve them.
For the basics, we can improve the sectioning and also add some indentation to make it more clear how sections are structured (for example, to make it clear the distinctions between histograms and prob distrs).
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items
0
Link issues together to show that they're related.
Learn more.
Let's just supercede the proposal with the padding-spec and a doc for creating state machines. The actual final spec is more important than the historical proposal archive anyway.
Trac: Priority: Medium to High Summary: Improve quality of prop254 spec to Write padidng spec and a doc for researchers
Ideas that are popping into my head now that #28634 (moved) is done:
One section of the doc should walk the reader through the fields of circpad_machine_spec_t, circpad_state_t, and their interaction with circpad_machine runtime_t (which is invisible to them but feature choice has consequences on how much memory and CPU time circpad_machine_runtime_t requires). This section of the doc should also describe potential features from the wtf-pad tag ticket list, but make it clear we're unlikely to implement them unless someone tells us them need them. And also mention that we're happy to accept patches for any useful feature or flag.
The second section of the doc should have a pile of example machines, to show that the system can do much much more than we're currently using it for. We should not only explain #28634 (moved) and why it chose the options it did for performance reasons, but also explain that there's more features we can implement easily. We should highlight a few of those from the wtf-pad tag ticket list, and also show some example machines that do the following:
Netflow/channelpadding as circuitpadding to the guard
Constant rate cover traffic from the guard (will require #29494 (moved) implementation to make cell delivery decisions based on cmux queue status, but as far as machines are concerned, this will just be a flag they set)
A reduced padding machine vs not (perhaps using a heavier-padding-count #28634 (moved) example)
We also want to discuss some high level interactions with Tor:
Explain our load balancing plans
Explain how machine precedence is meant to work when multiple machines exist for the same conditions
Other things to do: I want to stop referring to what we implemented as "WTF-PAD" in technical documentation. WTF-PAD was the implementation of the system described by the research paper http://arxiv.org/pdf/1512.00524. The stuff in Tor now is NOT WTF-PAD. If people start writing research papers about how they attacked the new WTF-PAD as implemented in Tor, all hell will break loose and nobody will know what anybody is talking about anymore.
One more thing to cover in the research doc: We should explain how we will accept and deploy changes to the padding machine featureset itself (one potentially useful change is for all state transitions have a probability associated with them, to explicitly support HMM representations).
We should be sure to document potential shutdown sync issues of #30992 (moved) in a "known bugs/implementation issues" section. I bet there will be other things for such a section, too.
Ok, here's a branch with an updated padding-spec. Has a couple XXX's (we need the new NSF numbers and it needs to cite the researcher developer doc that still needs to be written).
Oops I thought this was needs_review so I took a look, but it seems like it's not.
Anyhow, spec patch looks good.
And also some high-level comments on the developer doc:
Let's make it markdown since both github and gitlab support md files these days and it seems to be the norm? I doubt researchers appreciate text files that much.
Let's add a "High-level system overview" section before the "Header walkthrough" that explains how this whole system works in two paragraphs or so.
On the 2. What to consider when creating a new machine, I'd also like an explanation of how machine numbers should work, and how to choose your machine number to avoid conflicts with other tor versions etc.