Skip to content

Double Computation ProblemΒ #1638

@baum

Description

@baum

Double Computation Problem

When write requests flow through the gateway stack with data digest enabled:

  1. NVMe-oF Transport Layer: Computes CRC32C checksums for incoming data to verify data integrity during transport. This computation occurs as part of the data digest validation process required by the NVMe-oF protocol.

  2. SPDK NVMe-oF Framework: Processes the validated requests and forwards them to block device layers. The validated CRC32C is available but traditionally discarded after validation.

  3. RBD Block Device Layer: would recompute CRC32C checksums before writing to Ceph RADOS, as Ceph also uses CRC32C for data integrity verification.

This approach resultes in double computation of CRC32C checksums:

  • First computation at the NVMe-oF TCP transport layer (required for transport integrity via data digest)
  • Second computation at the RBD layer before writing to Ceph (required for storage integrity)

Both computations use the same CRC32C algorithm on the same data, making the second computation redundant when data digest is enabled.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    πŸ†• New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions