[tor-commits] [flashproxy/master] add more documentation on inner vs outer transports

infinity0 at torproject.org infinity0 at torproject.org
Sat Nov 9 15:49:24 UTC 2013


commit a96f70206da9c646bd7cb7fb6b1ca82a51dff548
Author: Ximin Luo <infinity0 at gmx.com>
Date:   Sat Nov 9 15:44:28 2013 +0000

    add more documentation on inner vs outer transports
---
 doc/design.txt          |   34 +++++++++++++++++++++++++++++++++-
 facilitator/facilitator |    6 ++++--
 2 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/doc/design.txt b/doc/design.txt
index 94f8403..319dd9c 100644
--- a/doc/design.txt
+++ b/doc/design.txt
@@ -206,4 +206,36 @@ Design of flash proxies
 
 10. Inner and outer transports
 
-  TODO: import discussion from #9349.
+  The client can talk to the relay using not only the Tor protocol, but
+  any transport protocol implemented by e.g. another pluggable transport
+  that sits between tor and the flashproxy PT. For the facilitator to
+  match a client with a relay that understands it, flashproxy-client
+  must be given the name of the transport protocol, via the --transport
+  option. This is divided into two parts, the inner and outer transport,
+  written like "inner|outer" or just "outer" if the inner transport is
+  the plain Tor protocol.
+
+  The inner transport is the protocol that the non-flashproxy parts of
+  the client and relay talk to each other with, and must be the same for
+  each connected pair. Beyond that, the semantics of the transport are
+  opaque to flashproxy; it does not know or care.
+
+  The outer transports are the protocols that the browser proxy uses to
+  talk to the client and relay, and may be different for each. The proxy
+  un-applies the outer transport of the client so that only the inner
+  traffic remains, then re-applies the outer transport of the relay to
+  this and sends it to the relay; and vice-versa for traffic going in
+  the opposite direction.
+
+  Diagram:
+
+    client <======outer-C=======> proxy <======outer-S=======> relay
+           <=======inner=========-------========inner========>
+
+  Currently the only supported outer transport is "websocket", but we
+  will also add support for newer technologies such as webRTC.
+
+  (We have also seen third-party proxies running outside the browser
+  on NodeJS that can open plain TCP connections, so that the outer
+  transport is effectively just "tcp", although this is not currently
+  recognised by the facilitator.)
diff --git a/facilitator/facilitator b/facilitator/facilitator
index ebce31b..3bc8f92 100755
--- a/facilitator/facilitator
+++ b/facilitator/facilitator
@@ -140,9 +140,11 @@ class Endpoints(object):
             return True
 
     def _findInnerForOuter(self, *supported_outer):
-        """
+        """Find all endpoint addresses that support any of the given outer
+        transports. Results are grouped by the inner transport.
+
         :returns: { inner: [addr] }, where each address supports some outer
-            from supported_outer. TODO(infinity0): describe better
+            transport from supported_outer.
         """
         inners = defaultdict(set)
         for outer in set(supported_outer) & set(self._indexes.iterkeys()):



More information about the tor-commits mailing list