Zero byte messages
RDMA supports zero byte messages, and this can be done by posting a Send Request without a scatter/gather list (i.e. a list with zero entries).
Zero byte messages can be done with the following opcodes:
- Send with immediate
- RDMA Write
- RDMA Write with Immediate
- RDMA Read
To the RDMA operations, the remote address and remote key aren't being actually used or validated, so those values don't have to contain the details of a valid remote Memory Region.
What zero byte messages are good for?
Zero byte messages can be useful in the following scenarios:
- When only the immediate data is used - This can be useful to mark a directive or a status update.
- For keep alive messages in a reliable QP - Zero byte messages of RDMA Write or RDMA Read are a good idea for a non-intrusive keep alive messages in a reliable QP: to make sure that the remote QP is still alive and functioning. If the remote QP will be offline, for example, if the QP was transitioned to Error or Reset state, or if the process was terminated or if even the node itself was rebooted, there will be a Work Completion with Retry Exceeded status. Using one of the other above-mentioned opcodes will consume a Receive Request from the remote side QP.
Tell us what do you think.