[tor-dev] Introducing Snowflake (webrtc pt)
keroserene at riseup.net
Mon Jan 25 22:34:42 UTC 2016
Snowflake is a webrtc pluggable transport inspired by flashproxy.
Arlo, David, and I have made lots of progress on it lately, and it now
appears to have reached minimum viability.
The following should result in a 100% bootstrap over WebRTC:
git clone https://git.torproject.org/pluggable-transports/snowflake.git
tor -f torrc
In case you have a moment, it'd be cool if you tried it out and let us
know whether it works for you. I'd really appreciate hearing about
all the thoughts / concerns / issues before we move forward.
-- More info --
Q: What are the benefits of this PT compared with other PTs?
Snowflake combines the advantages of flashproxy and meek. Primarily:
- It has the convenience of Meek, but can support magnitudes more
users with negligible CDN costs. (Domain fronting only used for brief
signalling / NAT-piercing to setup P2P webrtc which handles the actual
- Arbitrarily high numbers of volunteer proxies are possible like in
flashproxy, but NATs are no longer a usability barrier - no need for
manual port forwarding!
Q: How does it work?
1. Volunteers visit websites which host the "snowflake" proxy. (just
2. Tor clients automatically find available browser proxies over the
domain fronted signaling channel.
3. Tor client and browser proxy establish a WebRTC peer connection.
4. Proxy connects to some relay.
5. Tor occurs.
Q: Why is it called Snowflake?
There's a bunch of "ICE" negotiation happening for WebRTC, and it also
involves a great abundance of ephemeral and short-lived (and special!)
Anyhow, if Snowflake seems like it would be useful / desired here, it
would be awesome if we had more help getting it stable, polished,
audited, deployable, etc...
Plenty of work to do!
P.S. Make sure you're using a recent version of Go (1.5+)
P.P.S. The repo is available in these locations:
More information about the tor-dev