coturn 4.12.0
This release focuses on high-throughput UDP relay performance, new multiplexed peer relay mode, improved load testing tools, and documentation cleanup.
Highlights
-
Added optional
--multiplex-peermode, which uses shared per-thread IPv4/IPv6 relay sockets instead of one relay port per allocation.- Helps lift the usual relay port range allocation ceiling.
- Uses exact peer IP:port demultiplexing.
- Rejects
EVEN-PORTallocations in this mode. - Documented in
docs/multiplex-peer.md.
-
Added Linux UDP fast paths:
--udp-recvmmsgfor batched UDP receives.--udp-gsofor UDP-GSO relay send batching when used with multiplex-peer.- sendmmsg/recvmmsg improvements across relay, peer, and uclient paths.
-
Improved
turnutils_uclientload generation:- Multi-threaded listener/receive pool.
- Sender thread pool.
- UDP-GSO send batching.
recv_ppsreporting.--no-even-portoption for clean multiplex-peer testing.
Added
-
New
turnserveroptions:--multiplex-peer--multiplex-peer-port--udp-recvmmsg--udp-recvmmsg-log--udp-gso
-
New
turnutils_uclientoptions:--listener-threads--sender-threads--no-even-port
-
CI coverage for uclient thread pools, UDP-GSO, recv PPS reporting, and multiplex-peer tests.
Fixed
- Fixed TTL/TOS type conversion.
- Fixed a memory leak introduced by the
recvmmsgpath. - Removed stale
--neoption fromturnserver --help. - Fixed fuzzing dictionary encoding for HTTP end-of-header bytes.
Changed
- Updated bundled
khash. - Restored CodeQL permissions, category, and manual build mode.
- Updated examples and docs for CLI behavior, invalid packet handling, RFC5780 behavior, and current command-line options.
Documentation
- Added multiplex-peer design and implementation guide.
- Synced
turnserver,turnutils, and man page documentation with current options. - Added DeepWiki link to the README.
Contributors
Thanks to:
- Corey Siltala
- Gustavo Garcia
- Kai Ren
- Pavel Punsky
- nfuhler