#30707 closed enhancement (duplicate)

Revise our pluggable transport specification

Reported by: phw Owned by: phw
Priority: High Milestone:
Component: Circumvention/Pluggable transport Version:
Severity: Normal Keywords: sponsor28
Cc: arma, cohosh, gaba Actual Points:
Parent ID: Points: 10
Reviewer: Sponsor: Sponsor28-must


As part of our work for Sponsor 28, we will revise our PT specification. This will happen in two steps. First, we need to reach out to implementors and ask them about their experience, feedback, and suggestions. We also need to review the independently-developed PT v2.1 specification. Once we have a comprehensive understanding of the spec's shortcomings (both ours and PT v2.1's), we need to update our spec and implementations (e.g., goptlib). Ideally, we should try to merge our efforts with PT v2.1, so the community has a single specification that we all agree on.

Here's a preliminary list of issues with our current spec:

  • The PT should be able to communicate its bootstrap status to the invoking process.
  • The spec should incorporate the proposed dormant mode (see #28849).
  • Some PTs such as meek and snowflake don't rely on an IP address. The current workaround is to use awkward pseudo IP addresses.
  • Other transports may want to rely on multiple IP address. We need to reconsider the outdated notion of a bridge line.

Child Tickets

Change History (2)

comment:1 Changed 14 months ago by phw

An incomplete list of existing library implementations:

  • A seemingly unnamed Swift implementation of the v2.1 specification, maintained by the Operator Foundation.
  • PLUTO2 is a Java implementation of the v2.x specification, maintained by the Guardian Project.
  • goptlib is a Go implementation of the v1.0 specification, maintained by the Tor Project.
  • pyptlib is a Python implementation of the v1.0 specification, (formerly) maintained by the Tor Project.

comment:2 Changed 14 months ago by phw

Resolution: duplicate
Status: assignedclosed

Closing this because it's a duplicate of #29285.

Note: See TracTickets for help on using tickets.