Skip to main content
RunBook Academy

CephVI · Ceph ArchitectureCeph Architecture

The client protocol and msgr2 — how clients talk to the cluster

Intermediate⏱ ~15 mincephss

What you'll learn

  • Describe what msgr2 provides over the legacy protocol
  • Read Ceph address notation and identify ports in use
  • Choose between crc and secure connection modes
  • Diagnose connectivity faults from client-side symptoms

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

Everything a client does goes over msgr2, and a surprising share of “Ceph is broken” reports are connectivity faults with Ceph-shaped symptoms. Knowing which ports matter and how addresses are written makes those quick to resolve.

What msgr2 provides

msgr2 replaced the original protocol and is the default in current releases. It adds:

  • Authentication before data, so cephx negotiation happens on a connection that has not yet carried payload.
  • Optional encryption in transit through the secure mode.
  • Integrity checking with CRC32c in crc mode.
  • A distinct port, 3300, alongside legacy 6789.

Reading Ceph addresses

Addresses appear in a compound notation:

[v2:10.0.1.10:3300/0,v1:10.0.1.10:6789/0]

That is one monitor reachable on msgr2 at port 3300 and on the legacy protocol at 6789. OSDs use a range of ports, typically 6800-7300, with each OSD binding several — separate ports for public traffic, cluster traffic, and heartbeats.

ceph mon dump
ceph osd find 12
ss -tlnp | grep ceph

crc versus secure

ceph config set global ms_cluster_mode secure
ceph config set global ms_service_mode secure
ceph config set global ms_client_mode secure
ModeProvidesCost
crcintegrity against corruptionnegligible
secureintegrity plus AES-128-GCM encryptionmeasurable CPU, some throughput

crc is the default and is right for a trusted network. secure is appropriate when traffic crosses untrusted segments, when compliance requires encryption in transit, or for multi-tenant environments. Measure before and after on a representative workload — the cost depends heavily on CPU and on whether AES-NI is available.

Diagnosing from symptoms

SymptomLikely cause
client hangs on connectmonitor ports blocked or monitors unreachable
ceph status fine, I/O hangsOSD port range blocked
large writes hang, small ones workMTU mismatch
intermittent, correlates with loadnetwork congestion or a degrading link
auth errors on connectcephx keyring or clock skew

Each row points at a different test, which is the value of the table: it converts a vague report into one command.

Quiz

Knowledge check · 4 questions

  1. Q1. A new client can run ceph status successfully but every attempt to read or write an object hangs. What is the most likely cause?

  2. Q2. An MTU mismatch on a jumbo-frame network can leave monitors healthy and client connections working while large writes hang.

  3. Q3. A compliance requirement mandates encryption in transit for all storage traffic. Plan the change and its verification.

    96-OSD cluster serving RBD for 400 VMs and RGW for backups. Currently ms modes are at the default crc. Hosts are recent Xeon with AES-NI. Cluster network is 25 GbE, currently peaking around 8 Gb/s during recovery. The compliance deadline is in six weeks and there is a staging cluster available.

  4. Q4. List the ports a Ceph client needs reachable and explain why the OSD range is required.

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

Production discipline

Put the full port set in the build checklist — 3300, 6789, and the OSD range — because clients talk to OSDs directly and the partial rule produces a healthy-looking cluster that cannot serve I/O. On any jumbo-frame network, run a do-not-fragment probe at full payload size between every pair of hosts before declaring the build complete. Choose secure mode deliberately with measurements from a representative workload rather than from a datasheet, and enable it in stages so a regression can be attributed.

Cross-course references

  • Ceph: Part XXVIII (Ceph Networking) for the full network model.
  • Ceph: Part XXXI (Ceph Authentication) for cephx on top of msgr2.
  • Ceph: Part XXXIII (Encryption) for in-transit and at-rest options together.