Server operation
Learn about the basic operation that can be run for the passive or server 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_bind_addr
- Sets the local port number on which the event listens.
- rdma_listen
- Starts listening to the connection requests.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_CONNECT_REQUESTevent with a newrdma_cm_ididentifier. - rdma_create_qp
- Allocates a queue pair (QP) for the communication on the new
rdma_cm_ididentifier. - rdma_accept
- Accepts the connection request.
- rdma_ack_cm_event
- Acknowledges the event.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_ESTABLISHEDevent. - rdma_ack_cm_event
- Acknowledges the event.
- ibv_post_send()
- Performs the data transfer over the connection.
- rdma_get_cm_event
- Waits for the
RDMA_CM_EVENT_DISCONNECTEDevent. - rdma_ack_cm_event
- Acknowledges the event.
- rdma_disconnect
- Tears down the connection.
- rdma_destroy_qp
- Destroys the QP.
- rdma_destroy_id
- Releases the connected rdma_cm_id identifier.
- rdma_destroy_id
- Releases the listening
rdma_cm_ididentifier. - rdma_destroy_event_channel
- Releases the event channel.