1

I'm new to RDMA technology, and I'm confused by several rdma libraries. I cannot figure out the relationship among them. The libraries and kernel headers I'm confused with are as follows:

1.rdma-core/libibverbs

2.rdma-core/librdmacm

3.linux-5.4.2/include/rdma

4.linux-5.4.2/iniclude/uapi/rdma

My question is:

1.As far as I know. libibverbs provides the userspace applications with verbs api(i.e. functions with prefix ibv_), but it does not offer any connection-related functions, so applications need to exchange connection information using sockets(I see this operation in the libibverbs example rc_pingpong.c). librdmacm provides the user with easier connection management mechanism(e.g. rdma_get_cm_event). However, it seems that librdmacm does more work than connection management, since it also defines several apis(e.g. rdma_create_qp in rdma_cma.h) which looks similar to the ibv_function in libibverbs. So I do not know whether librdmacm is a superset of libibverbs? If not, what's the relationship between them?

2.In the example rc_pingpong.c of libibverbs, I cound see it includes the header file verbs.h, and it seems that linux-5.4.2/include/rdma and linux-5.4.2/iniclude/uapi do not play any role in the program(no heaer files in these two directories are included). So what are the header files in these two directories aimed at?

I have refer to several materials but have not made it clear. Any explanation or related resources are well-appreciated. Thanks!

MitsuiYang
  • 21
  • 2

0 Answers0