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_id identifier 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_RESOLVED event.
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_RESOLVED event.
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_ESTABLISHED event.
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_DISCONNECTED event.
rdma_ack_cm_event
Acknowledges the event.
rdma_destroy_qp
Destroys the QP.
rdma_destroy_id
Releases the rdma_cm_id identifier.
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.