Crates.io | turnhammer |
lib.rs | turnhammer |
version | 0.2.0 |
source | src |
created_at | 2019-02-06 18:19:27.373005 |
updated_at | 2021-08-19 16:04:58.452289 |
description | A tool to stress-test TURN (RFC 5766) servers |
homepage | |
repository | https://github.com/vi/turnhammer |
max_upload_size | |
id | 113193 |
size | 47,013 |
A tool to stress-test TURN (RFC 5766) servers and measure resulting packet loss and RTT.
There are pre-built versions on Github Releases
Usage: turnhammer <server> <username> <password> [-j <parallel-connections>] [-s <pkt-size>] [--pps <pps>] [-d <duration>] [--delay-after-stopping-sender <delay-after-stopping-sender>] [--delay-between-allocations <delay-between-allocations>] [--calc] [-f] [--video] [--audio] [-J] [-C]
Options:
-j, --parallel-connections
number of simultaneous connections
-s, --pkt-size packet size
--pps packets per second
-d, --duration experiment duration, seconds
--delay-after-stopping-sender
seconds to wait and receive after stopping sender
--delay-between-allocations
microseconds to wait between TURN allocations
--calc don't actually run, only calculate bandwidth and traffic
-f, --force override bandwidth or traffic limitation
--video set pps to 90 and pktsize to 960
--audio set pps to 16 and pktsize to 192
-J, --json output as JSON instead of plain text
-C, --no-channels do not use chanels
--help display usage information
Output sample:
The test would do approx 11.878 Mbit/s and consume 158.379 megabytes of traffic
My external address: 178.122.56.8:40475
Allocated 200 TURN clients
Received the first datagram
Received 365652 packets from 384000 window of total 384000 || Loss: 04.7781% bad loss: 00.0000%
RTT4 brackets: 0-49ms: 00.0000% 180-399ms: 50.7474% 1000-1999ms: 00.0000%
50-179ms: 44.4745% 500-999ms: 00.0000% 2000+ms: 00.0000%
<<< Overall score: 8.2 / 10.0 >>>
Stopping TURN clients
JSON output sample:
$ turnhammer -J --video -j 3 104.131.203.210:3478 u153 p1994421 2> /dev/null
{"status":"ok"
,"received_packets":1350 ,"min_max_window":1350 ,"sent_packets":1350
,"loss":0 ,"bad_loss":0
,"rtt4":{"0_49":0 ,"50_179":0 ,"180_399":100 ,"400_999":0 ,"1000_1999":0 ,"2000+":0}
,"score":9.5
}
0.0.0.0:0
.0.0.0.0:0
and obtain K allocations from specified TURN serverThere is old Tokio 0.1-based version of turnhammer, tagged v0.1.0
that can be built with older Rust and may support more old systems. It should work with rustc 1.34.2.