Skip to content

Instantly share code, notes, and snippets.

@rmacy
Forked from santisaez/gist:3187798
Last active August 29, 2015 14:12
Show Gist options
  • Save rmacy/7992fe9403000fadbae1 to your computer and use it in GitHub Desktop.
Save rmacy/7992fe9403000fadbae1 to your computer and use it in GitHub Desktop.

Revisions

  1. Santi Saez created this gist Jul 27, 2012.
    60 changes: 60 additions & 0 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,60 @@
    ### STUN implementations

    * [stund](http://sourceforge.net/projects/stun)
    * Content: server daemon and test client for STUN, **RFC-3489 only**
    * [URL](http://www.vovida.org/applications/downloads/stun) does not load, the project **seems abandoned**
    * The code is also available on [SourceForge](http://sourceforge.net/projects/stun), last update was on January 2012
    * **TCP and TLS modes not supported**
    * The server [needs two IPs](http://stackoverflow.com/a/7650970), it’s mandatory and can not be configured
    * C++, no extra libraries required, Windows port available
    * Version = 0.97 (0.96 package available on Debian, 5 years without updates)

    * [stunserver](http://www.stunprotocol.org) aka stuntman
    * Content: high performance STUN server, a client application and code libraries
    * **RFC-5389 + backwards compatibility with RFC-3489**
    * UDP and TCP modes with either IPv4 or IPv6
    * STUN code library and client application implement all NAT detection tests specified in RFC-5780
    * "Basic" and "Full" modes to facilitate NAT + firewall behavior detection (with 1 or 2 IPs/ports)
    * Available on [GitHub](https://github.com/jselbie/stunserver), last commit 2 months ago
    * C++ and boost library (libboost-dev package available on Debian)
    * License: Apache 2.0
    * Version = 1.1.3
    * **TLS mode + multi-core support in the roadmap, not implemented**
    * Example C++ code available to implement your own authentication system
    * --maxconn feature

    ### STUN + TURN implementations

    * [restund] (http://www.creytiv.com/restund.html)
    * Content: **modular** STUN + TURN server (in the same daemon), designed around the principle of a lightweight core and plugins that extend its functionality
    * RFC-compliancy: **RFC-5389** (STUN), RFC-5766 (TURN), RFC-5780 and RFC-6156
    * **UDP, TCP and TLS support, IPv4 and IPv6**
    * C89 and C99 source code and [re](http://www.creytiv.com/re.html) library is needed (real-time communications with async IO support and a complete SIP stack)
    * Version = 0.4.1 (last update: 21-Apr-2012)
    * **User Authentication through MySQL**: in order to provide user auth and relay traffic the server needs to access a database backend, storing a copy of the entire user database in a local hash table (this might be a problem)
    * Statistics about received STUN messages
    * "Basic" and "Full" modes (1 or 2 IPs for NAT type discovery)
    * Max connections for TURN service + max lifetime
    * BINDING requests support
    * **Status Interface module that provides server status through HTTP**

    * [TurnServer](http://turnserver.sourceforge.net)
    * The project aims to be compliant with the TURN and STUN standards (respectively, **RFC-5766** and **RFC-5389**)
    * TURN-IPv6 support (RFC-6156)
    * **RFC-6062 support aka TURN-TCP (relay data with TCP)**
    * **TLS support**
    * License: GPLv3
    * Current stable version = 0.6 (released on 2012-02-24)
    * DTLS (Datagram TLS) support, experimental feature not defined in TURN standard
    * Max TURN relay connections per user and max connection lifetime
    * **Limit user bandwidth + quota support (in KBytes/s)**
    * ACLs to deny relaying
    * Run as unprivileged user on Linux

    * [ReTurn](http://www.resiprocate.org/ReTurn_Overview)
    * STUN/TURN server and client library (RFC-5389 and RFC-5766)
    * Support for UDP, TCP and TLS protocols, both IPv4 and IPv6
    * Synchronous and asynchrounous client APIs provided
    * RFC-3489 backwards compatibility support
    * Channel Binding
    * **Hardcoded Settings = changed by modifying the code in ReTurnConfig.cxx and recompiling**