CephXXVIII · Ceph NetworkingCeph Networking
Replication traffic and what it multiplies
What you'll learn
- Compute replication traffic from client write volume
- Compare the multiplier for replicated and EC pools
- Size the cluster network against write load
- Recognise replication traffic as a latency contributor
Prerequisites
None — start here.
Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18
Why this matters in production
Network sizing based on client throughput understates the requirement by the replication factor, and the error compounds during recovery. The multiplier is simple arithmetic and it is routinely omitted from capacity plans.
The multipliers
Replicated, size N. The primary receives the client write on the public network and sends it to N−1 replicas on the cluster network.
client writes 1 GB/s to a size-3 pool
public network: 1 GB/s in
cluster network: 2 GB/s out from primaries
Erasure coded, k+m. The primary receives the write, encodes, and distributes k+m chunks, keeping one:
client writes 1 GB/s to a 4+2 pool
public network: 1 GB/s in
cluster network: (6−1)/4 × 1 GB/s = 1.25 GB/s
EC actually moves less replication traffic than size-3 replication for the same client volume — the chunks are fractions of the object. The EC network cost appears at recovery time, not at write time.
| Pool | Cluster-network traffic per 1 GB/s of client writes |
|---|---|
| replicated size 2 | 1.0 GB/s |
| replicated size 3 | 2.0 GB/s |
| replicated size 4 | 3.0 GB/s |
| EC 4+2 | 1.25 GB/s |
| EC 8+3 | 1.375 GB/s |
Sizing consequence
Without a cluster network, all of this shares the public link:
size-3 pool, 1 GB/s of client writes
total on the single network: 1 + 2 = 3 GB/s
→ a 10 Gb link (1.25 GB/s) saturates at ~400 MB/s of client writes
That calculation surprises people, and it is the most common reason a cluster fails to reach expected write throughput.
Latency contribution
Replication is synchronous — the client waits for all replicas. So the cluster network’s round-trip time is added to every write, and congestion on it shows up directly as client write latency:
ceph daemon osd.12 dump_historic_ops | \
jq -r '.ops[].type_data.events[] | select(.event|test("sub_op|subop"))'
Operations spending time at waiting for subops with healthy destination
devices point at the cluster network rather than at storage.
Quiz
Knowledge check · 4 questions
Q1. Clients write 800 MB/s to a size-3 replicated pool. How much traffic does that generate on the cluster network?
Q2. An EC 4+2 pool generates more cluster-network traffic per client write than a size-3 replicated pool.
Q3. Explain a write throughput ceiling.
A cluster with a single 10 Gb network serving size-3 replicated pools cannot exceed roughly 400 MB/s of aggregate client writes, despite the OSDs having ample device throughput and the cluster reporting healthy. Read throughput reaches close to 1.1 GB/s.
Q4. Why does cluster network latency directly affect client write latency?
Passing score: 75%. Answers are checked in this browser.
Production discipline
Start network capacity calculations from the expected write rate and apply the replication multiplier explicitly, showing the working in the design document. Where reads and writes have very different observed ceilings, check the multiplier arithmetic before investigating the storage layer — the asymmetry is usually the whole explanation.
Cross-course references
- Kubernetes: synchronous replication in stateful workloads adds the same per-write network term
- Linux: synchronous DRBD replication has the identical latency and bandwidth characteristics