Files
libdatachannel/examples/client-benchmark
Murat Dogan ec1a358e66 fix typos
2021-03-25 14:43:51 +03:00
..
2021-03-12 15:17:33 +03:00
2021-03-12 15:17:33 +03:00
2021-03-12 15:17:33 +03:00
2021-03-12 15:17:33 +03:00
2021-03-19 09:30:11 +03:00
2021-03-19 09:26:13 +03:00
2021-03-25 14:43:51 +03:00

libdatachannel - client-benchmark

This directory contains a native client to open Data Channels with WebSocket signaling using libdatachannel and benchmark functionalities. It offers two functionalities;

  • Benchmark: Bi-directional data transfer benchmark (Also supports One-Way testing)
  • Constant Throughput Set: Send desired amount of data per second

Start Signaling Server

  • Start one of the signaling server from the examples folder. For example start signaling-server-nodejs like;
    • cd examples/signaling-server-nodejs/
    • npm i
    • npm run start

Start client-benchmark Applications

Start 2 applications by using example calls below. Than copy one of the client's ID and paste to the other peer's screen to start offering process.

Usage Examples

Benchmark for 300 seconds

./client-benchmark -d 300

Example Output (Offering Peer's Output);

Stun server is stun:stun.l.google.com:19302
The local ID is: EQmF
Url is ws://localhost:8000/EQmF
Waiting for signaling to be connected...
2021-03-25 14:21:58.045 INFO  [21386] [rtc::impl::TcpTransport::connect@159] Connected to localhost:8000
2021-03-25 14:21:58.045 INFO  [21386] [rtc::impl::TcpTransport::runLoop@327] TCP connected
2021-03-25 14:21:58.046 INFO  [21386] [rtc::impl::WsTransport::incoming@118] WebSocket open
WebSocket connected, signaling ready
Enter a remote ID to send an offer:
0tDf
Offering to 0tDf
Creating DataChannel with label "benchmark"
2021-03-25 14:22:07.972 INFO  [21379] [rtc::impl::IceTransport::IceTransport@106] Using STUN server "stun.l.google.com:19302"
2021-03-25 14:22:07.973 INFO  [21379] [rtc::impl::PeerConnection::changeSignalingState@992] Changed signaling state to new
2021-03-25 14:22:07.973 INFO  [21379] [rtc::impl::PeerConnection::changeGatheringState@981] Changed gathering state to in-progress
Gathering State: in-progress
2021-03-25 14:22:07.974 INFO  [21379] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to gathering
2021-03-25 14:22:07.974 WARN  [21379] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:239: Local description already has the maximum number of host candidates
Benchmark will run for 300 seconds
2021-03-25 14:22:07.976 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to connecting
2021-03-25 14:22:07.976 INFO  [21396] [rtc::impl::PeerConnection::changeState@964] Changed state to connecting
State: connecting
2021-03-25 14:22:08.055 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:610: Using STUN server stun.l.google.com:19302
2021-03-25 14:22:08.055 INFO  [21386] [rtc::impl::PeerConnection::changeSignalingState@992] Changed signaling state to connecting
2021-03-25 14:22:08.105 WARN  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:426: Send failed, errno=101
2021-03-25 14:22:08.105 WARN  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:1483: STUN message send failed, errno=101
2021-03-25 14:22:08.105 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:843: STUN binding failed
2021-03-25 14:22:08.107 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:1302: STUN server binding successful
2021-03-25 14:22:08.107 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:2148: Candidate gathering done
2021-03-25 14:22:08.107 INFO  [21396] [rtc::impl::PeerConnection::changeGatheringState@981] Changed gathering state to complete
Gathering State: complete
2021-03-25 14:22:08.155 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to connected
2021-03-25 14:22:08.206 INFO  [21396] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to completed
#1 Received: 0 KB/s   Sent: 0 KB/s   BufferSize: 0
2021-03-25 14:22:09.059 INFO  [21399] [rtc::impl::DtlsTransport::runRecvLoop@503] DTLS handshake finished
2021-03-25 14:22:09.069 INFO  [21382] [rtc::impl::SctpTransport::processNotification@708] SCTP connected
2021-03-25 14:22:09.069 INFO  [21382] [rtc::impl::PeerConnection::changeState@964] Changed state to connected
State: connected
DataChannel from 0tDf open
#2 Received: 41488 KB/s   Sent: 42465 KB/s   BufferSize: 65535
#3 Received: 43925 KB/s   Sent: 43729 KB/s   BufferSize: 65535
#4 Received: 42491 KB/s   Sent: 42361 KB/s   BufferSize: 65535
#5 Received: 45878 KB/s   Sent: 45682 KB/s   BufferSize: 65535
Stats# Received Total: 174 MB   Sent Total: 175 MB   RTT: 17 ms

#6 Received: 43665 KB/s   Sent: 43599 KB/s   BufferSize: 65535
#7 Received: 45749 KB/s   Sent: 45488 KB/s   BufferSize: 65535
#8 Received: 44055 KB/s   Sent: 44055 KB/s   BufferSize: 65535
#9 Received: 21572 KB/s   Sent: 58199 KB/s   BufferSize: 65535
#10 Received: 22940 KB/s   Sent: 55005 KB/s   BufferSize: 65535
Stats# Received Total: 353 MB   Sent Total: 422 MB   RTT: 15 ms

#11 Received: 27501 KB/s   Sent: 53112 KB/s   BufferSize: 65535
#12 Received: 29914 KB/s   Sent: 48162 KB/s   BufferSize: 65535
#13 Received: 31869 KB/s   Sent: 45946 KB/s   BufferSize: 65535
#14 Received: 22484 KB/s   Sent: 53636 KB/s   BufferSize: 65535
#15 Received: 16294 KB/s   Sent: 56833 KB/s   BufferSize: 65535
Stats# Received Total: 482 MB   Sent Total: 682 MB   RTT: 13 ms

Benchmark for 300 seconds (Only Send, One Way)

Start first peer as;

./client-benchmark -d 300 -o

Start second peer as;

./client-benchmark -d 300

Example Output (Offering Peer's Output);

Stun server is stun:stun.l.google.com:19302
The local ID is: XLLn
Url is ws://localhost:8000/XLLn
Waiting for signaling to be connected...
2021-03-25 14:34:24.479 INFO  [22332] [rtc::impl::TcpTransport::connect@159] Connected to localhost:8000
2021-03-25 14:34:24.479 INFO  [22332] [rtc::impl::TcpTransport::runLoop@327] TCP connected
2021-03-25 14:34:24.479 INFO  [22332] [rtc::impl::WsTransport::incoming@118] WebSocket open
WebSocket connected, signaling ready
Enter a remote ID to send an offer:
Okt4
Offering to Okt4
Creating DataChannel with label "benchmark"
2021-03-25 14:34:37.948 INFO  [22325] [rtc::impl::IceTransport::IceTransport@106] Using STUN server "stun.l.google.com:19302"
2021-03-25 14:34:37.949 INFO  [22325] [rtc::impl::PeerConnection::changeSignalingState@992] Changed signaling state to new
2021-03-25 14:34:37.949 INFO  [22325] [rtc::impl::PeerConnection::changeGatheringState@981] Changed gathering state to in-progress
Gathering State: in-progress
2021-03-25 14:34:37.950 INFO  [22325] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to gathering
2021-03-25 14:34:37.951 WARN  [22325] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:239: Local description already has the maximum number of host candidates
Benchmark will run for 300 seconds
2021-03-25 14:34:37.952 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to connecting
2021-03-25 14:34:37.952 INFO  [22334] [rtc::impl::PeerConnection::changeState@964] Changed state to connecting
State: connecting
2021-03-25 14:34:37.969 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:610: Using STUN server stun.l.google.com:19302
2021-03-25 14:34:37.969 INFO  [22332] [rtc::impl::PeerConnection::changeSignalingState@992] Changed signaling state to connecting
2021-03-25 14:34:37.970 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to connected
2021-03-25 14:34:37.971 INFO  [22337] [rtc::impl::DtlsTransport::runRecvLoop@503] DTLS handshake finished
2021-03-25 14:34:37.977 INFO  [22327] [rtc::impl::SctpTransport::processNotification@708] SCTP connected
2021-03-25 14:34:37.977 INFO  [22327] [rtc::impl::PeerConnection::changeState@964] Changed state to connected
State: connected
DataChannel from Okt4 open
2021-03-25 14:34:38.019 WARN  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:426: Send failed, errno=101
2021-03-25 14:34:38.019 WARN  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:1483: STUN message send failed, errno=101
2021-03-25 14:34:38.019 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:843: STUN binding failed
2021-03-25 14:34:38.022 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:1302: STUN server binding successful
2021-03-25 14:34:38.022 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:2148: Candidate gathering done
2021-03-25 14:34:38.022 INFO  [22334] [rtc::impl::PeerConnection::changeGatheringState@981] Changed gathering state to complete
Gathering State: complete
2021-03-25 14:34:38.069 INFO  [22334] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to completed
#1 Received: 0 KB/s   Sent: 92223 KB/s   BufferSize: 65535
#2 Received: 0 KB/s   Sent: 89291 KB/s   BufferSize: 65535
#3 Received: 0 KB/s   Sent: 95087 KB/s   BufferSize: 65535
#4 Received: 0 KB/s   Sent: 101050 KB/s   BufferSize: 65535
#5 Received: 0 KB/s   Sent: 99778 KB/s   BufferSize: 0
Stats# Received Total: 0 MB   Sent Total: 480 MB   RTT: 8 ms

#6 Received: 0 KB/s   Sent: 100366 KB/s   BufferSize: 65535
#7 Received: 0 KB/s   Sent: 101201 KB/s   BufferSize: 65535
#8 Received: 0 KB/s   Sent: 100892 KB/s   BufferSize: 65535
#9 Received: 0 KB/s   Sent: 101288 KB/s   BufferSize: 65535
#10 Received: 0 KB/s   Sent: 95676 KB/s   BufferSize: 65535
Stats# Received Total: 0 MB   Sent Total: 982 MB   RTT: 8 ms

#11 Received: 0 KB/s   Sent: 96254 KB/s   BufferSize: 65535
#12 Received: 0 KB/s   Sent: 105473 KB/s   BufferSize: 65535
#13 Received: 0 KB/s   Sent: 95549 KB/s   BufferSize: 65535
#14 Received: 0 KB/s   Sent: 100366 KB/s   BufferSize: 65535
#15 Received: 0 KB/s   Sent: 101336 KB/s   BufferSize: 65535
Stats# Received Total: 0 MB   Sent Total: 1484 MB   RTT: 8 ms

Constant Throughput Set 8000 byte, for 300 seconds, send buffer 10000 byte

./client-benchmark -p -d 300 -r 8000 -b 10000

Example Output (Offering Peer's Output);

Stun server is stun:stun.l.google.com:19302
The local ID is: 1w9O
Url is ws://localhost:8000/1w9O
Waiting for signaling to be connected...
2021-03-25 14:29:38.697 INFO  [21844] [rtc::impl::TcpTransport::connect@159] Connected to localhost:8000
2021-03-25 14:29:38.697 INFO  [21844] [rtc::impl::TcpTransport::runLoop@327] TCP connected
2021-03-25 14:29:38.698 INFO  [21844] [rtc::impl::WsTransport::incoming@118] WebSocket open
WebSocket connected, signaling ready
Enter a remote ID to send an offer:
zi4B
Offering to zi4B
Creating DataChannel with label "benchmark"
2021-03-25 14:29:48.729 INFO  [21837] [rtc::impl::IceTransport::IceTransport@106] Using STUN server "stun.l.google.com:19302"
2021-03-25 14:29:48.729 INFO  [21837] [rtc::impl::PeerConnection::changeSignalingState@992] Changed signaling state to new
2021-03-25 14:29:48.729 INFO  [21837] [rtc::impl::PeerConnection::changeGatheringState@981] Changed gathering state to in-progress
Gathering State: in-progress
2021-03-25 14:29:48.729 INFO  [21837] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to gathering
2021-03-25 14:29:48.730 WARN  [21837] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:239: Local description already has the maximum number of host candidates
Benchmark will run for 300 seconds
2021-03-25 14:29:48.730 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to connecting
2021-03-25 14:29:48.731 INFO  [21866] [rtc::impl::PeerConnection::changeState@964] Changed state to connecting
State: connecting
2021-03-25 14:29:48.732 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:610: Using STUN server stun.l.google.com:19302
2021-03-25 14:29:48.732 INFO  [21844] [rtc::impl::PeerConnection::changeSignalingState@992] Changed signaling state to connecting
2021-03-25 14:29:48.782 WARN  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:426: Send failed, errno=101
2021-03-25 14:29:48.782 WARN  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:1483: STUN message send failed, errno=101
2021-03-25 14:29:48.782 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:843: STUN binding failed
2021-03-25 14:29:48.787 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:1302: STUN server binding successful
2021-03-25 14:29:48.787 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:2148: Candidate gathering done
2021-03-25 14:29:48.787 INFO  [21866] [rtc::impl::PeerConnection::changeGatheringState@981] Changed gathering state to complete
Gathering State: complete
2021-03-25 14:29:48.832 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to connected
2021-03-25 14:29:48.882 INFO  [21866] [rtc::impl::IceTransport::LogCallback@339] juice: agent.c:787: Changing state to completed
2021-03-25 14:29:49.735 INFO  [21869] [rtc::impl::DtlsTransport::runRecvLoop@503] DTLS handshake finished
2021-03-25 14:29:49.742 INFO  [21841] [rtc::impl::SctpTransport::processNotification@708] SCTP connected
2021-03-25 14:29:49.742 INFO  [21841] [rtc::impl::PeerConnection::changeState@964] Changed state to connected
State: connected
DataChannel from zi4B open
#1 Received: 0 KB/s   Sent: 78 KB/s   BufferSize: 0
#2 Received: 8002 KB/s   Sent: 7999 KB/s   BufferSize: 0
#3 Received: 8002 KB/s   Sent: 7998 KB/s   BufferSize: 0
#4 Received: 7995 KB/s   Sent: 8000 KB/s   BufferSize: 0
#5 Received: 8000 KB/s   Sent: 8001 KB/s   BufferSize: 0
Stats# Received Total: 33 MB   Sent Total: 33 MB   RTT: 0 ms

#6 Received: 8001 KB/s   Sent: 7999 KB/s   BufferSize: 0
#7 Received: 7997 KB/s   Sent: 7998 KB/s   BufferSize: 0
#8 Received: 8001 KB/s   Sent: 7999 KB/s   BufferSize: 0
#9 Received: 7998 KB/s   Sent: 8001 KB/s   BufferSize: 0
#10 Received: 8003 KB/s   Sent: 7998 KB/s   BufferSize: 0
Stats# Received Total: 74 MB   Sent Total: 74 MB   RTT: 0 ms

#11 Received: 7990 KB/s   Sent: 7998 KB/s   BufferSize: 0
#12 Received: 7999 KB/s   Sent: 8000 KB/s   BufferSize: 0
#13 Received: 8001 KB/s   Sent: 8002 KB/s   BufferSize: 0
#14 Received: 7998 KB/s   Sent: 7999 KB/s   BufferSize: 0
#15 Received: 8000 KB/s   Sent: 7998 KB/s   BufferSize: 0
Stats# Received Total: 115 MB   Sent Total: 115 MB   RTT: 0 ms