Traversal Using Relay NAT (TURN protocol)

TURN is an extension for STUN-bis protocol to facilitate NAT traversal when one or both endpoints are behind NAT. With TURN, media traffic for the session will have to go to a relay server. Since relaying is expensive, in terms of bandwidth that must be provided by the provider and additional delay for the media traffic, TURN is normally used as the last resort when endpoints cannot talk directly. The ICE protocol provides a mechanism for both endpoints to discover the most optimized path to be used for the media traffic.

TURN uses STUN-bis binary protocol, but it defines new requests, attributes, and a totally new set of functionality. Unlike STUN-bis, TURN is a stateful protocol: it defines sessions, and each session has its own lifetime and its own context.

The IETF (Transport Area) RFC 5766 for TURN, Apr 2010, is http://tools.ietf.org/html/rfc5766.

The original TURN RFC 5766 defines only IPv4 functionality, RFC 6156 http://tools.ietf.org/html/rfc6156 is an extension of TURN specs for IPv6.


  • PJNATH library from pjsip.org project is an Open Source NAT traversal library supporting STUN-bis, TURN, and ICE.
  • TURN Server is an Open Source TURN Server supporting STUN-bis, TURN, IPv6 TURN extension (RFC6156) and (as an experimental feature) DTLS client protocol.
  • Numb is a free STUN/TURN server.
  • libnice: includes the client-side implementation of TURN (draft 11), also does ICE (draft 19) and STUN (RFC 3489 and 5389)
  • OfficeSIP TURN Server is open source C# implementation of MS-TURN.pdf compatible TURN server.
  • MindBricks TURN SDK is a commercial implementation of the latest TURN specification (RFC 5766) and provides support for ICE as well.

See also:

Created by: busywiki, Last modification: Mon 14 of Jan, 2013 (22:24 UTC) by mom040267
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+