It ensures error-free delivery of TLPs (Transaction Layer Packets) across every link, using automatic retransmission when errors are detected.
👉 Think of it like a “guaranteed delivery receipt” system at the Data Link Layer.
Data Link Layer Replay Mechanism.png


🧩 How It Works (Step by Step)

  1. Sending a TLP
    • Every outgoing TLP gets:
      • A Sequence Number (unique ID for ordering and tracking)
      • An LCRC (Link CRC, error detection checksum)
    • The transmitter also stores a copy of the TLP in its Replay Buffer until it knows the receiver got it safely.

  1. Receiver Checks It
    • The receiver checks:

      • LCRC → verifies integrity
      • Sequence Number → checks order
    • Then one of two things happens:

      • No error → Receiver sends an Ack DLLP with the last good sequence number.
      • Error detected → Receiver drops the TLP and sends a Nak DLLP.
        TLP and DLLP Structure at the Data Link Layer.png

  1. Transmitter Responds
    • If Ack received → Transmitter flushes the TLP (and any older ones) from the Replay Buffer.
    • If Nak received → Transmitter replays all unacknowledged TLPs from its Replay Buffer.

Since most errors are transient, simply replaying usually fixes the problem.


🔁 Example Walkthrough (Memory Read across a Switch)

At every hop (Requester ↔ Switch ↔ Completer), Ack/Nak ensures reliability.