[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #29285 [Circumvention/Pluggable transport]: Improve the PT spec and how PTs interface with Tor
#29285: Improve the PT spec and how PTs interface with Tor
-------------------------------------------------+-------------------------
Reporter: cohosh | Owner: phw
Type: project | Status:
| assigned
Priority: High | Milestone:
Component: Circumvention/Pluggable transport | Version:
Severity: Normal | Resolution:
Keywords: network-team-roadmap-2019-Q1Q2, | Actual Points:
anti-censorship-roadmap |
Parent ID: | Points: 15
Reviewer: | Sponsor:
| Sponsor28-must
-------------------------------------------------+-------------------------
Comment (by dcf):
Replying to [comment:5 phw]:
> And here's an incomplete list of existing library implementations:
Really there are two types of PT implementations, or three if you count PT
2.0 additions. There aren't really standard names for these.
1. IPC manager/dispatcher. As far as I know, tor and
[https://github.com/twisteroidambassador/ptadapter] are the only two
implementations of this. This is the thing that sets e.g.
`TOR_PT_MANAGED_TRANSPORT_VER` and manages subprocesses of type (2).
2. IPC transport/plugin. This is goptlib and pyptlib. It's a subprocess
managed by an implementation of type (1). This is the thing that writes
e.g. `CMETHOD` to stdout.
3. From PT 2.0, there are also plugin/transport implementations that you
are meant to link with directly in the same executable, without going
through the IPC interface. There are [https://github.com/Pluggable-
Transports/Pluggable-Transports-
spec/blob/master/releases/PTSpecV2.1Draft1/Pluggable%20Transport%20Specification%20v2.1%20-%20Go%20Transport%20API%20v2.1%2C%20Draft%201.pdf
Go] and [https://github.com/Pluggable-Transports/Pluggable-Transports-
spec/blob/master/releases/PTSpecV2.1Draft1/Pluggable%20Transport%20Specification%20v2.1%20-%20Swift%20Transport%20API%20v1.0%2C%20Draft%201.pdf
Swift] API spec. From talking to Brandon Wiley, my understanding is that
everything that uses PT other than tor and ptadapter uses such an API, or
something like it, not the IPC model.
[https://github.com/OperatorFoundation/shapeshifter-dispatcher
shapeshifter-dispatcher] converts implementations of type (3) into type
(2).
The [https://github.com/Pluggable-Transports/Pluggable-Transports-
spec/blob/master/releases/PTSpecV2.1Draft1/Pluggable%20Transport%20Specification%20v2.1%20-%20Base%20Specification%20v2.1%2C%20Draft%201.pdf
Pluggable Transports Base Spec v2.1] calls types (1) and (2) "IPC" and
type (3) "API".
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29285#comment:7>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs