Network bandwidth estimation
How to calculate the network load of your data collection
Here is the method for calculating the amount of data expected to travel over your internet connection each second.
Packet size in bytes
This is the protocol overhead (AMQP, TLS, TCP) plus the variable content size
222 + 10 * number_of_tags
Packets per second
This can be calculated as an average or estimated peak. Peak values should be used as a guide only since there are many factors that would cause a peak to smooth out over a few seconds.
SUM(number_of_sources * polls per second)
For example:
10 sources at 1s = 10 packets/s
100 source at 60s = 1.7 packets/s (100/s peak)
Total bandwidth
You will need to calculate the bandwidth for each record/rate combination. Generally, bandwidth is measured in bits per seconds (not bytes), so multiply bytes by 8 to get bits.
Let's go through a worked example. We have
1 Meter: 10 tags per second
10 Inverters: 20 tags per second
1 weather station: 15 tags per minute
Meter
Packet size: 222 + 10 * 10 = 322
1 meter @ 1/s = 1 packets/s
bandwidth: (322 * 8)bits * 1 packet/s = 2576bps / 1024 = 2.52Kbps
Inverters
Packet size: 222 + 10 * 20 = 422
10 inverters @ 1/s = 10 packets/s
bandwidth: (422 * 8)bits * 10 packet/s / 1024 = 32.97Kbps
Weather station
Packet size: 222 + 10 * 15 = 372
1 station @ 1/m = 0.0167 packets/s
bandwidth: (372 * 8)bits * 0.0167 packet/s = 49.6bps
Total
Baseline: 2.52 + 32.97 + 0.05 = 35.54Kbps
We generally recommend adding 15% for TCP overhead (ACK, retransmission) and a safety margin of 30%, giving an overall estimate of:
35.54 * 1.15 * 1.3 = 53.13Kbps
Data capture
Generally speaking, all data capture happens on the local network where the Ardexa node resides. Local traffic depends on how often each device is polled and how its registers are laid out, not on how much data is sent to the cloud. So it can't be reliably derived from the outgoing rate.
For Modbus TCP, estimate it per device:
Requests per poll: registers are read in contiguous blocks of up to
max_countregisters (125 by default). A register map spread over many areas needs more requests.Bytes per request: about 230 bytes of protocol overhead (Ethernet, IP, TCP and Modbus headers, plus the TCP acknowledgement), plus 2 bytes per register read.
Polling rate: use the configured poll rate for each device.
Example: a device with 227 registers read in 11 requests every 5 s uses 11 × 230 + 2 × 227 ≈ 3,000 bytes per poll, which is about 4.7 Kbps.
For other protocols, as a rough guide, expect similar (OPC UA) to double (certain databases) the outgoing data rate on the local network.
Last updated
Was this helpful?