Manual:Tools/Speed Test
The Speed Test is an easy test tool for measuring ping, jitter, TCP and UDP throughput from one MikroTik device, to another.
«speed-test» command is based on Ping Tool and Bandwidth Test. In order to use this command — Bandwidth test server needs to be accessible.
General interface properties
Sub-menu: /tool speed-test
address (IP address; Default: «») | IP address of host |
connection-count (integer; Default: 20) | If device has more than 20 cores — core count will be used |
password (string; Default: ) | Password for the remote device |
test-duration (integer; Default: 10) | Duration for each test (By default: 5 tests * 10 sec duration + 1sec pause between each test = 55sec) |
user (string; Default: admin) | Remote device username |
Usage example
Bandwidth and speed tests should be conducted through the devices, not on them to ensure real life simulation and not to overload the CPU on the devices under testing,(DUT) due to traffic generating process.
To run a simple test from device A (192.168.88.1) to device B (192.168.88.2):
[admin@MikroTik]] > /tool speed-test address=192.168.88.1 status: done time-remaining: 0s ping-min-avg-max: 541us / 609us / 3.35ms jitter-min-avg-max: 0s / 76us / 2.76ms loss: 0% (0/100) tcp-download: 921Mbps local-cpu-load:30% tcp-upload: 920Mbps local-cpu-load:30% remote-cpu-load:25% udp-download: 917Mbps local-cpu-load:6% remote-cpu-load:21% udp-upload: 916Mbps local-cpu-load:20% remote-cpu-load:6%
If any of device CPU utilization during test reaches 100% warning message will appear:
[admin@MikroTik]] > /tool speed-test address=192.168.88.1 ;;; results can be limited by cpu, note that traffic generation/termination performance might not be representative of forwarding performance status: done time-remaining: 0s ping-min-avg-max: 541us / 609us / 3.35ms jitter-min-avg-max: 0s / 76us / 2.76ms loss: 0% (0/100) tcp-download: 721Mbps local-cpu-load:78% tcp-upload: 820Mbps local-cpu-load:100% remote-cpu-load:84% udp-download: 906Mbps local-cpu-load:10% remote-cpu-load:54% udp-upload: 895Mbps local-cpu-load:55% remote-cpu-load:12%
«test-duration» parameter allows changing duration of all of the 5 tests:
- ) Ping test with 50ms delay
- ) TCP recieve
- ) TCP send
- ) UDP recieve
- ) UDP send
Introduction
The Speed Test is an easy test tool for measuring ping, jitter, TCP and UDP throughput from one MikroTik device, to another. The «speed-test» command is based on the Ping Tool and Bandwidth Test. In order to use this command — Bandwidth test server needs to be accessible.
General interface properties
The speed-test is based on five configurable properties:
- address — IP address of host;
- connection-count — If a device has more than 20 cores — core count will be used (default is 20);
- password — Password for the remote device;
- test-duration — Duration for each test (By default: 5 tests * 10 sec duration + 1sec pause between each test = 55sec);
- user — Remote device username;
Configuration Example
Bandwidth and speed tests should be conducted through the devices, not on them to ensure real-life simulation and not to overload the CPU on the devices under testing,(DUT) due to the traffic generating process.
To run a simple test from device A (192.168.88.1) to device B (192.168.88.2):
[admin@MikroTik] > /tool/speed-test address=192.168.88.1 status: done time-remaining: 0s ping-min-avg-max: 541us / 609us / 3.35ms jitter-min-avg-max: 0s / 76us / 2.76ms loss: 0% (0/100) tcp-download: 921Mbps local-cpu-load:30% tcp-upload: 920Mbps local-cpu-load:30% remote-cpu-load:25% udp-download: 917Mbps local-cpu-load:6% remote-cpu-load:21% udp-upload: 916Mbps local-cpu-load:20% remote-cpu-load:6%
If any of device CPU utilization during test reaches 100% warning message will appear:
[admin@MikroTik]] > /tool/speed-test address=192.168.88.1 ;;; results can be limited by cpu, note that traffic generation/termination performance might not be representative of forwarding performance status: done time-remaining: 0s ping-min-avg-max: 541us / 609us / 3.35ms jitter-min-avg-max: 0s / 76us / 2.76ms loss: 0% (0/100) tcp-download: 721Mbps local-cpu-load:78% tcp-upload: 820Mbps local-cpu-load:100% remote-cpu-load:84% udp-download: 906Mbps local-cpu-load:10% remote-cpu-load:54% udp-upload: 895Mbps local-cpu-load:55% remote-cpu-load:12%
«test-duration» parameter allows changing the duration of all of the 5 tests:
- ) Ping test with 50ms delay
- ) TCP receive
- ) TCP send
- ) UDP receive
- ) UDP send
Summary
The Bandwidth Tester can be used to measure the throughput to another MikroTik router (either wired or wireless) and thereby help to discover network «bottlenecks».
The TCP test uses the standard TCP protocol with acknowledgments and follows the TCP algorithm on how many packets to send according to latency, dropped packets, and other features in the TCP algorithm. Please review the TCP protocol for details on its internal speed settings and how to analyze its behavior. Statistics for throughput are calculated using the entire size of the TCP data stream. As acknowledgments are an internal working of TCP, their size and usage of the link are not included in the throughput statistics. Therefore this statistic is not as reliable as the UDP statistic when estimating throughput.
The UDP tester sends 110% or more packets than currently reported as received on the other side of the link. To see the maximum throughput of a link, the packet size should be set for the maximum MTU allowed by the links which is usually 1500 bytes. There is no acknowledgment required by UDP; this implementation means that the closest approximation of the throughput can be seen.
- Up to RouterOS version 6.44beta39 Bandwidth Test used only single CPU core and reached its limits when core was 100% loaded.
- Bandwidth Test uses all available bandwidth (by default) and may impact network usability.
- Bandwidth Test uses a lot of resources. If you want to test real throughput of a router, you should run bandwidth test through the tested router not from or to it. To do this you need at least 3 routers connected in chain: the Bandwidth Server, the router being tested and the Bandwidth Client.
- If you use UDP protocol then Bandwidth Test counts IP header+UDP header+UDP data. In case if you use TCP then Bandwidth Test counts only TCP data (TCP header and IP header are not included).
Bandwidth Test Server
Manual:Tools/Bandwidth Test
The Bandwidth Tester can be used to measure the throughput to another MikroTik router (either wired or wireless) and thereby help to discover network «bottlenecks».
The TCP test uses the standard TCP protocol with acknowledgments and follows the TCP algorithm on how many packets to send according to latency, dropped packets, and other features in the TCP algorithm. Please review the TCP protocol for details on its internal speed settings and how to analyze its behavior. Statistics for throughput are calculated using the entire size of the TCP data stream. As acknowledgments are an internal working of TCP, their size and usage of the link are not included in the throughput statistics. Therefore this statistic is not as reliable as the UDP statistic when estimating throughput.
The UDP tester sends 110% or more packets than currently reported as received on the other side of the link. To see the maximum throughput of a link, the packet size should be set for the maximum MTU allowed by the links which is usually 1500 bytes. There is no acknowledgment required by UDP; this implementation means that the closest approximation of the throughput can be seen.
- Up to RouterOS version 6.44beta39 Bandwidth Test used only single CPU core and reached its limits when core was 100% loaded.
- Bandwidth Test uses all available bandwidth (by default) and may impact network usability.
- Bandwidth Test uses a lot of resources. If you want to test real throughput of a router, you should run bandwidth test through the tested router not from or to it. To do this you need at least 3 routers connected in chain: the Bandwidth Server, the router being tested and the Bandwidth Client.
- If you use UDP protocol then Bandwidth Test counts IP header+UDP header+UDP data. In case if you use TCP then Bandwidth Test counts only TCP data (TCP header and IP header are not included).
Bandwidth Test Server
Sub-menu: /tool bandwidth-server
Property | Description |
---|---|
allocate-udp-ports-from (integer 1000..64000; Default: 2000) | Beginning of UDP port range |
authenticate (yes | no; Default: yes) | Communicate only with authenticated clients |
enabled (yes | no; Default: yes) | Defines whether bandwidth server is enabled or not |
max-sessions (integer 1..1000; Default: 100) | Maximal simultaneous test count |
Example
[admin@MikroTik] /tool bandwidth-server> print enabled: yes authenticate: yes allocate-udp-ports-from: 2000 max-sessions: 100 [admin@MikroTik] /tool bandwidth-server>
[admin@MikroTik] /tool bandwidth-server session> print # CLIENT PROTOCOL DIRECTION USER 0 35.35.35.1 udp send admin 1 25.25.25.1 udp send admin 2 36.36.36.1 udp send admin [admin@MikroTik] /tool bandwidth-server session>
To enable bandwidth-test server without client authentication:
[admin@MikroTik] /tool bandwidth-server> set enabled=yes authenticate=no [admin@MikroTik] /tool bandwidth-server> print enabled: yes authenticate: no allocate-udp-ports-from: 2000 max-sessions: 100 [admin@MikroTik] /tool bandwidth-server>
Bandwidth Test Client
Command name: /tool bandwidth-test
Property | Description |
---|---|
address (IP address | IPv6 prefix[%interface]; Default: ) | IP address of host |
direction (both | receive | transmit; Default: receive) | Direction of data flow |
duration (time; Default: ) | Duration of the test |
interval (time: 20ms..5s; Default: 1s) | Delay between reports (in seconds) |
local-tx-speed (integer 0..4294967295; Default: ) | Transfer test maximum speed (bits per second) |
local-udp-tx-size (integer: 28..64000 ) | Local transmit packet size in bytes |
password (string; Default: «») | Password for the remote user |
protocol (udp | tcp; Default: udp) | Protocol to use |
random-data (yes | no; Default: no) | If random-data is set to yes, the payload of the bandwidth test packets will have incompressible random data stream so that links that use data compression will not distort the results (this is CPU intensive and random-data should be set to no for low speed CPUs) |
remote-tx-speed (integer 0..4294967295; Default: ) | Receive test maximum speed (bits per second) |
remote-udp-tx-size (integer: 28..64000 ) | Remote transmit packet size in bytes |
tcp-connection-count (integer 1..100; Default: 20) | Number of TCP connections to use |
user (string; Default: «») | Remote user |
Example
To run 15-second long bandwidth-test to the 10.0.0.32 host sending and receiving 1000-byte UDP packets and using username admin to connect:
[admin@MikroTik] /tool> bandwidth-test 10.0.0.32 duration=15s \ \. direction=both local-udp-tx-size=1000 protocol=udp \ \. remote-udp-tx-size=1000 user=admin status: done testing duration: 15s tx-current: 272.8Mbps tx-10-second-average: 200.3Mbps tx-total-average: 139.5Mbps rx-current: 169.6Mbps rx-10-second-average: 164.8Mbps rx-total-average: 117.0Mbps lost-packets: 373 random-data: no direction: both tx-size: 1000 rx-size: 1000 [admin@MikroTik] /tool>
Link-local IPv6 example:
[admin@dzeltenais_burkaans] > /tool bandwidth-test fe80::34:23ff:fe6a:570c%local status: running duration: 5s rx-current: 23.9Mbps rx-10-second-average: 15.1Mbps rx-total-average: 15.1Mbps lost-packets: 0 random-data: no direction: receive rx-size: 1500