Hi anti-censorship team and others,
We are in the process in increase the scalability of the snowflake
bridge. Here is the design I have drafted for informing proxy about
which WebSocket address it should connect to and the security issue
associated with that.
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…
Comments are encouraged so that the design can be improved before moving
to the next stage.
Shelikhoo
As an experiment to wring more performance from the snowflake bridge, I
started a rough port of the extor-static-cookie shim to Rust. It's not
in what I would call a production-ready state with regard to
documentation and tests—I wanted to hack something together quickly in
order to decide whether it's worth spending more time on. I am also
pretty new to Rust async programming. As a side consideration, I wanted
to get an idea of what a pluggable transports library for Rust might
look like.
https://gitlab.torproject.org/dcf/extor-static-cookie/-/tree/rust
Currently commit 559fb5e292b45d82464bdaf978c6e1783c796e3d
I have the Rust implementation running now (since 2022-02-27 03:00)
under the flakey4 instance. The other three instances are running the Go
implementation. It's too early to say whether it reduces CPU usage; an
hour after being restarted, the flakey4 instance is still catching up to
the traffic of the other instances. But it looks like it's stable and
functional, at least.