Skip to main content
RunBook Academy

CephLXX · Network PerformanceNetwork Performance

Ceph's network traffic patterns

Intermediate⏱ ~17 minssceph

What you'll learn

  • Describe Ceph's network protocols and patterns
  • Compute the connection count for a cluster
  • Identify the fabric requirements that follow
  • Dispel the common misconceptions

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

Not yet marked complete on this device.

Why this matters in production

Ceph’s requirements of a network are specific and modest, and several widely repeated beliefs about them are wrong. Getting this right avoids both over-engineering and surprises at scale.

What Ceph actually uses

PropertyCeph
TransportTCP only
Addressingunicast only
Multicastnever used
Broadcastnever used
Protocolmsgr2 (v2), with msgr1 for legacy
Ports3300 (v2) and 6789 (v1) for monitors; 6800–7300 for OSDs
Discoveryvia the monitor map, not via any discovery protocol

There is no multicast requirement, no IGMP configuration, and no broadcast domain requirement beyond ordinary IP reachability. Clusters routinely span routed layer 3 fabrics.

ss -tn state established '( sport >= :6800 and sport <= :7300 )' | wc -l
ceph config get mon ms_bind_msgr2
ceph config get mon ms_bind_msgr1

Connection scaling

Each OSD maintains connections to every other OSD it shares PGs with, which on a well-distributed cluster is most of them:

connections ≈ N_osds × (N_osds - 1)   cluster-wide, both directions counted
per OSD     ≈ N_osds - 1              plus client connections
OSDsApproximate per-OSD peer connections
2423
10099
500499
1000999
# what one OSD actually holds
ss -tn | awk '$5 ~ /:68[0-9][0-9]|:69/ {n++} END {print n, "connections"}'

At large scale this drives file descriptor and memory requirements per OSD:

ceph config get osd ms_async_op_threads
cat /proc/$(pidof -s ceph-osd)/limits | grep -i 'open files'

Heartbeats

ceph config get osd osd_heartbeat_interval
ceph config get osd osd_heartbeat_grace
ceph config get osd osd_heartbeat_min_peers

Heartbeats are small unicast messages between OSD peers on both the public and cluster networks. They are frequent and tiny, which makes them sensitive to loss and to latency spikes but negligible in bandwidth.

What the fabric must provide

RequirementWhy
Low, consistent latencyevery operation crosses it twice
Loss-free under burstheartbeat loss causes OSD flapping
Adequate aggregate bandwidthrecovery and backfill are bulk transfers
Full IP reachability between all nodesthe connection mesh is dense
Sufficient buffer for incastmany-to-one patterns are inherent

Notably absent: multicast support, a shared broadcast domain, or any layer 2 adjacency requirement.

Common misconceptions

BeliefReality
Ceph needs multicastit does not; TCP unicast only
OSDs must share a layer 2 segmentrouted layer 3 works fine
A cluster network is mandatoryit is optional; a single network is supported
Jumbo frames are requiredthey are optional
Ceph uses UDP for heartbeatsheartbeats are TCP like everything else

Quiz

Knowledge check · 4 questions

  1. Q1. What transport and addressing does Ceph use for all its traffic?

  2. Q2. Ceph OSDs must share a layer 2 broadcast domain.

  3. Q3. Review network requirements for a large cluster.

    A 1000-OSD cluster is being planned. The draft network requirements specify multicast support, a single VLAN spanning all racks, and mandatory jumbo frames.

  4. Q4. Why do large clusters need raised file descriptor limits and more per-OSD memory?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Specify full IP reachability rather than a shared VLAN in network requirements — Ceph is TCP unicast throughout and runs correctly across routed layer 3. At large scale, raise per-OSD file descriptor limits and size memory for a peer connection to nearly every other OSD.

Cross-course references

  • Kubernetes: overlay networks similarly need only IP reachability, not layer 2 adjacency
  • Linux: connection-count scaling drives descriptor limits in any mesh architecture