{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-17",
  "slug": "nvme-tcp-digest",
  "term": "NVMe/TCP digest",
  "aliases": [
    "NVMe/TCP header digest",
    "NVMe/TCP data digest",
    "HDGST",
    "DDGST"
  ],
  "definition": "An NVMe/TCP digest is an optional CRC32C error-detection value protecting a protocol data unit's header or data after negotiation at connection establishment.",
  "note": "Coverage: Header and data digests are negotiated separately; padding is not protected by either [tcp].\n\nSecurity boundary: CRCs can detect accidental alteration but cannot authenticate data against an attacker who can recompute the code [crc].\n\nConfiguration: nvme-cli v2.11 provides distinct header-digest, data-digest and TLS options; a requested option is not by itself evidence of the negotiated connection state [connect].",
  "related": [
    "nvme-tcp",
    "nvme-of",
    "checksum",
    "authenticated-encryption",
    "end-to-end-data-protection"
  ],
  "citations": [
    {
      "id": "tcp",
      "title": "NVM Express NVMe over TCP Transport 1.3, sections 2, 3.1, 3.2, 3.3.1.1 and 3.6",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-NVMe-over-TCP-Transport-Specification-Revision-1.3-Ratified-2026.07.31.pdf",
      "accessed": "2026-10-17"
    },
    {
      "id": "crc",
      "title": "RFC 3385, section 10: CRCs do not protect against intentional alteration",
      "url": "https://www.rfc-editor.org/rfc/rfc3385.html#section-10",
      "accessed": "2026-10-17"
    },
    {
      "id": "connect",
      "title": "nvme-cli v2.11: nvme-connect digest and TLS options",
      "url": "https://github.com/linux-nvme/nvme-cli/blob/v2.11/Documentation/nvme-connect.txt",
      "accessed": "2026-10-17"
    }
  ],
  "provenance": [
    "Protocol scope: TCP Transport 1.3. No hardware error rate, cryptographic guarantee or end-to-end persistence result is inferred."
  ]
}
