Skip to content
Docs

Bandwidth requirements

This page lets you translate the measured feed into capacity checks for one receiver path.

Before you start

  • Know the bandwidth limit of the public interface, virtual machine, firewall, and internal path.
  • Know whether the receiver stores every payload or processes it in memory.
  • Have access to network-interface and UDP-drop counters.

Use the published measurement

One destination receives a feed measured at ${FEED.mbps} Mbps, ${FEED.packetsPerSecond.toLocaleString("en-US")} packets per second, and ${FEED.meanPacketBytes} mean payload bytes. Sustained delivery corresponds to approximately ${FEED.terabytesPerMonth} TB per month.

These values were measured from the running relay on ${FEED.measuredOn}. They are capacity inputs, not documented minimums, maximums, or availability guarantees. Peak rate, burst duration, and a required headroom factor are not currently specified.

Provision every component in the path, not only the nominal network link. A firewall, virtual network interface, packets-per-second quota, kernel queue, socket, application queue, decoder, or storage device can become the first bottleneck.

Reproduce the traffic arithmetic

The mean payload calculation is:

text

5,585 packets/second x 1,216 bytes/packet x 8 bits/byte
= 54,323,200 bits/second
= 54.3232 Mbps using decimal megabits

That result rounds to the published ${FEED.mbps} Mbps. It describes UDP payload bits derived from the measured packet rate and mean size. IP, UDP, Ethernet, VLAN, tunnel, and other network overhead consume additional link capacity.

At ${FEED.mbps} decimal megabits per second, the payload rate is approximately 6.7875 MB per second, 24.435 GB per hour, 586.44 GB per day, and 17.5932 TB per 30 days. The published monthly figure rounds to approximately ${FEED.terabytesPerMonth} TB.

Do not mix decimal network units with binary memory units without labeling the conversion. Firewall and cloud bandwidth displays may use different definitions.

Check packet-rate capacity

Bandwidth alone is insufficient. The receiver must handle ${FEED.packetsPerSecond.toLocaleString("en-US")} packets per second at the measured rate. Per-packet work such as allocation, logging, locking, checksums, queue operations, or context switches can limit throughput before the link is full.

Keep the socket reader small. Reuse buffers when the language and ownership model permit. Batch downstream operations when that preserves complete datagram boundaries. Move decoding and storage away from the receive loop.

The required CPU count, language runtime, queue depth, receive-buffer size, and batching policy are not currently specified. Benchmark the actual implementation on the intended host.

Measure the interface

Identify the receiving interface:

bash

ip -br link

Capture a first counter snapshot after replacing eth0 with that interface:

bash

ip -s link show dev eth0

Wait through an observation interval selected by your operating procedure, then run the same command again. Calculate byte, packet, drop, and error deltas. A required interval is not currently specified.

Use a packet capture filtered to ${SOURCE_IP} and the destination port when interface counters include unrelated traffic. Do not run a full payload dump at sustained rate.

Measure the socket and kernel

Record UDP receive counters before and after the same interval. On Linux with net-tools installed:

bash

netstat -su

Track received datagrams and receive errors. The exact command and counter names depend on the operating system, which the product does not specify.

Read the effective socket receive buffer through the receiver API. A requested buffer can be capped or transformed by the kernel. A required buffer size is not currently specified because required capacity depends on burst behavior and scheduling pauses, which are also not currently specified.

Measure the application

Count accepted datagrams, accepted bytes, source rejections, queue drops, decoder failures, and processing delay. Report counters over fixed UTC windows. Avoid reporting only cumulative totals after a restart.

Compare application accepted packets with source-filtered capture counts and kernel receive counters. Differences locate loss between the network interface, kernel, socket, and application queue.

Do not count a malformed or undecodable payload as a network drop. Preserve separate delivery and decoding metrics.

Plan storage explicitly

Storing every raw payload uses approximately ${FEED.terabytesPerMonth} TB per 30 days before filesystem, index, replication, backup, and metadata overhead. A retention period, compression ratio, storage format, and historical replay feature are not currently specified.

At the measured rate, one day of raw UDP payloads is approximately 586.44 GB in decimal units. Multiply by the customer-selected retention days, then add the overhead of the chosen format and replication policy.

Do not assume that coding shreds, duplicate content, or protocol fields can be discarded unless the downstream use case and chosen Solana decoder explicitly permit it. The product delivers the raw feed and does not document server-side filtering.

Account for cloud limits and cost

Check both bits per second and packets per second on cloud instances, virtual NICs, load balancers, NAT gateways, firewalls, and network appliances. Some platforms tie network capacity to instance size or impose packet-processing limits below the advertised link rate.

Cloud ingress pricing, cross-zone charges, NAT processing fees, and storage cost depend on the customer's provider and are not product facts. Calculate them using the selected provider's current terms.

Avoid placing a TCP-only load balancer in the path. The delivery protocol is UDP, and a product-supported load-balancer configuration is not currently specified.

Choose headroom from measurements

Do not invent a universal percentage. Observe short-window peaks on the actual destination, record drop-free capacity, and choose headroom according to workload and loss tolerance. Recheck after enabling a tunnel, packet inspection, verbose logging, or downstream decoder.

Alert before queue or interface saturation. Exact alert thresholds, peak multipliers, and service-side rate envelopes are not currently specified.

Parameters

NameTypeDefaultNotes
measured bit ratedecimal Mbps54.3Published measured payload rate for one feed.
measured packet ratepackets per second5585Use for per-packet processing capacity.
measured mean payloadbytes1216Observed mean, not a fixed packet length.
monthly payload volumeapproximate decimal TB17.6Approximate 30-day raw payload volume before customer storage overhead.
required headroom factormultipliernot currently specifiedSelect from measurements on the customer path.

When it goes wrong

Interface drops increase. Example error: `RX dropped 18420`.

Cause. The virtual NIC, firewall, host, or driver cannot sustain the incoming bit or packet rate.

Fix. Compare path counters, remove avoidable per-packet work, and increase the constrained customer resource.

UDP receive errors rise while link utilization looks moderate. Example error: `packet receive errors: 7301`.

Cause. Packet-rate processing, socket buffering, or application scheduling is the bottleneck rather than link bits per second.

Fix. Shorten the receive loop, inspect effective buffers, benchmark packet handling, and add processing headroom.

Storage fills sooner than planned. Example error: `No space left on device`.

Cause. Planning omitted the approximately 17.6 TB monthly payload volume or customer format overhead.

Fix. Recalculate retention from measured bytes, include metadata and replication, and enforce the customer storage policy.

Questions

How much network capacity does one destination need?
The feed was measured at ${FEED.mbps} Mbps and ${FEED.packetsPerSecond.toLocaleString("en-US")} packets per second. Add IP, UDP, link, and tunnel overhead, then select headroom from measurements on the intended path. A peak rate, burst duration, minimum rate, and required headroom multiplier are not currently specified.
How much data arrives in 30 days?
The published approximation is ${FEED.terabytesPerMonth} TB per month for the raw payload. At ${FEED.mbps} Mbps, the arithmetic yields about 17.5932 decimal TB over 30 days. Customer storage requires additional capacity for filesystems, indexes, metadata, replication, and backups. Compression and retention behavior are not currently specified.
Why can packets drop below the link's bandwidth limit?
The measured ${FEED.packetsPerSecond.toLocaleString("en-US")} packets per second creates per-packet CPU, queue, firewall, and scheduling work. A system can hit a packet-processing or socket-queue limit while aggregate Mbps remains below the nominal link rate. Compare interface, kernel, socket, and application counters over the same interval to locate the constraint.