Skip to content

Latest commit

 

History

History
147 lines (83 loc) · 3.76 KB

STATUS.md

File metadata and controls

147 lines (83 loc) · 3.76 KB

Currently implemented functionality:

  1. RFC5389 (new STUN protocol) full server and client implementations. We do not maintain strict compatibility with the obsolete RFC 3489 "old STUN" protocol.

  2. RFC5766 TURN protocol full server and client implementations. We support file-based long term user credentials, for now. We added experimental DTLS protocol, too.

  3. RFC6156 TURN IPv6 extension.

  4. We support the following client-to-server network transports for TURN messages: a) UDP b) TCP c) TLS d) DTLS

  5. Performance tested.

  6. Torture and stability tests.

  7. Multiple *NIX platforms tested and supported.

  8. TTL field handling implemented for all platforms, preferred behavior in RFC5766.

  9. TOS (DiffServ and ECN) field handling (preferred behavior of RFC 5766) implemented, for Linux. Other platforms support the alternative behavior of RFC 5766.

  10. DF field alternative behavior of RFC 5766 implemented.

  11. Bandwidth limitation per session implemented.

  12. RFC 5769 test vectors implemented (where applicable).

  13. RFC 5780 STUN extension: NAT behavior discovery.

  14. C++ mapping implemented.

  15. RFC 6062 TCP relaying implemented.

  16. Users can be stored in PostgreSQL database.

  17. Users can be stored in MySQL database.

  18. TURN Server REST API implemented.

  19. Short-term credentials mechanism implemented.

  20. Simple load-balancing with ALTERNATE-SERVER implemented.

  21. Redis database support added.

  22. RFC3489 backward compatibility.

  23. Multithreaded TCP relay processing (UDP relay has been multithreaded from the beginning).

  24. Networking engine 2.0 implemented, with more scalable approach to the UDP sockets handling.

  25. DOS attack prevention logic added to the server; DOS attack client emulation implemented.

  26. Linux UDP sockets workaround added to counter RFC 1122 behavior.

  27. DTLS sockets re-implemented for better scalability and for Cygwin compatibility.

  28. A number of TLS/DTLS improvements added: multiple protocols support, certificate check option.

  29. SHA256 support added (experimental).

  30. UDP network engine optimized for the new Linux kernels (3.9+).

  31. ICE Mobility draft implemented (experimental).

  32. CLI implemented.

  33. DH and EC TLS ciphers added.

  34. HTTP "keep alive" request supported.

  35. Optimized (for thousands and more sessions) timers implementation.

  36. TCP network engine optimized for the new Linux kernels (3.9+).

  37. telnet-based monitor implemented.

  38. Package memory copy eliminated in traffic routing.

  39. Congestion avoidance implemented, for all protocols.

  40. Coturn project forked from rfc5766-turn-server.

  41. Multi-tenant server implemented (ORIGIN support).

  42. Bandwidth draft support added.

  43. MongoDB support added.

  44. Double (dual) allocation added (SSODA draft).

  45. Secure MySQL connection implemented.

  46. Third-party security mechanism (through oAuth) implemented.

  47. SQLite support added as default database.

  48. DTLS1.2 supported.

  49. ALPN stun.turn and stun.nat-discovery supported.

  50. SSLv2 support cancelled.

  51. The short-term credentials server-side support cancelled (still supported in the client library).

  52. Web HTTPS admin interface implemented.

  53. SHA384 and SHA512 support added (experimental).

  54. native SCTP experimental support.

  55. Multi-tenant implementation based upon third-party authorization (oAuth).

  56. TLS1.3 support (with openssl-1.1.1+)

  57. openssl-3.0 support

  58. Windows build support, MSVC and MinGW

  59. Add support to Prometheus as metrics interface

  60. Sanitize DB connection strings before printing to log

  61. Syslog facility support as an additional logging mechanism provider

  62. Support LibreSSL

  63. CMake as an alternative build system

Things to be implemented in future (the development roadmap) are described in the TODO file.