# Receivers

Prepare a public IPv4 UDP receiver, allowlist the source addresses supplied at setup and configure socket buffers for the stream.

Source: https://docs.zerocopy.sh/shredstream/receivers

Each receiver has:

- A public routable IPv4 address. IPv6 receivers are not supported.
- A UDP port from 1 to 65535.
- One [metro](/shredstream#metros).
- An optional label of up to 64 characters to identify it in the console.

A team can have at most 16 receivers. Receivers in different metros receive their own
copies of the stream; [deduplicate them](/shredstream/processing#deduplicate-valid-shreds)
if your application combines those streams.

## Firewall [#firewall]

ZeroCopy provides the source addresses when it sets up delivery. Allowlist the sending
metro's source addresses in your firewall and open the receiver's UDP port for those
addresses. Do not leave the port open to arbitrary sources.

The UDP stream has no authentication. Anyone who can reach the port can send a datagram,
so the source allowlist is the receiving-side traffic filter. It does not replace
[verification of the leader's signature](/shredstream/processing#verify-the-leader-signature).

## Socket and buffers [#socket-and-buffers]

Bind a UDP socket to the configured port on the receiver host. Check that the socket
and firewall use the same port.

Configure the operating system's UDP receive buffer and the application's socket buffer
for the stream. Drain the socket promptly; use batched reads where the runtime supports
them. Avoid blocking receive work on logging or block processing. Size the receiver's
network connection for the stream and monitor local socket drops.

UDP does not retransmit lost datagrams. Larger buffers do not recover a datagram already
lost. Your application must handle missing shreds through [FEC recovery](/shredstream/processing#recover-data-shreds)
and treat unrecoverable data as incomplete.

The [receiver example](/shredstream/processing#receiver-example) shows how to bind a socket
and read the common header. It does not implement signature verification or FEC recovery.

## Check setup [#check-setup]

After the receiver is active, compare incoming traffic with the
[Receivers panel](/shredstream/monitoring-and-billing#receivers-panel). The console reports
what ZeroCopy measured; check local reception as well. If traffic is absent,
check the configured destination, source allowlist and bound UDP port before
[contacting support](mailto:support@zerocopy.sh).
