Client Operation
Learn about the overview of the basic operation for the active or client communication.
A general connection flow follows:
- rdma_create_event_channel
- Creates a channel to receive events.
- rdma_create_id
- Allocates an
rdma_cm_ididentifier that is conceptually similar to a socket. - rdma_resolve_addr
- Obtains a local Remote Direct memory Access (RDMA) device to reach the remote address.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_ADDR_RESOLVEDevent. - rdma_ack_cm_event
- Acknowledges the received event.
- rdma_create_qp
- Allocates a queue pair (QP) for the communication.
- rdma_resolve_route
- Determines the route to the remote address.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_ROUTE_RESOLVEDevent. - rdma_ack_cm_event
- Acknowledges the received event.
- rdma_connect
- Connects to the remote server.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_ESTABLISHEDevent. - rdma_ack_cm_event
- Acknowledges the received event.
- ibv_post_send()
- Performs data transfer over the connection.
- rdma_disconnect
- Tears down the connection.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_DISCONNECTEDevent. - rdma_ack_cm_event
- Acknowledges the event.
- rdma_destroy_qp
- Destroys the QP.
- rdma_destroy_id
- Releases the
rdma_cm_ididentifier. - rdma_destroy_event_channel
- Releases the event channel.
Note: In the example, the client initiated the disconnect. However,
either the client or server operation can initiate the disconnect
process.