Opened 3 years ago

Last modified 3 years ago

#2197 closed enhancement

Support TURN extensions for TCP allocations (RFC 6062) — at Initial Version

Reported by: nanang Owned by:
Priority: normal Milestone: release-2.9
Component: pjnath Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no


This ticket will enable TURN client to establish TCP connection with the client's peers:

client <--[tcp]--> TURN server <--[tcp]--> peer

The RFC 6062 describes two modes: open outgoing TCP connection to peer and accept incoming TCP connection from peer, this ticket implements only the latter mode, i.e: accept mode.

General flow for accept mode:

  1. Client establishes TCP connection to TURN server, this is called control connection.
  2. Client sends Allocate request with REQUESTED-TRANSPORT attribute with value set to TCP.
  3. Client sends CreatePermission request to allow peer to initiate TCP connection to TURN server.
  4. When peer initiates TCP connection to the allocated address on TURN server, client will receive ConnectionAttempt indication with CONNECTION-ID attribute.
  5. If client decides to accept the connection, it should establish another TCP connection to TURN server, this connection is for data connection.
  6. Client sends ConnectionBind request on that data connection with CONNECTION-ID attribute with value set to the same value in previous ConnectionAttempt indication.
  7. Once client receives ConnectionBind success response, the data connection is fully established, the TURN server will simply relay data until any side closes the connection.

Thank you Guillaume Roguez and Sébastien Blin from Savoir-faire Linux for the patch.

Change History (0)

Note: See TracTickets for help on using tickets.