0

I am trying to figure out how does the RDMA - INFINIBAND understands and sends the message by just using the traditional POSIX API.

I looked over every documents and paper related to INFNIBAND but failed to answer my question.

Would it be possible to know how INFINIBAND understands and gets the message from POSIX? because I have tried directly using the verb interface or using libvma library which intercepts the data from socket API and uses verb interface.

Obviously, both of this method has much higher performance compared to just using POSIX socket API with INFINIBAND.

The results from the Mellanox libvma also indicates the same

My suspicion is when userspace application sends data using socket API, the process goes to the kernel space to use the POSIX TCP stack and then somehow RDMA gets the data from it, but I really wish to know exactly how.

Would anyone familiar with RDMA can answer my question? Thanks

Sungho Hong
  • 340
  • 2
  • 16
  • I'm not an expert, but as far as I understand libvma provides a socket interface but internally uses verb primitives. So in this case, I believe the TCP messages go from userspace to the receiver through RDMA/verbs without passing through the TCP stack. – JC1 Mar 06 '18 at 08:18
  • @JC1 Yeah. thanks for the reply, that's also what I'am thinking right now, but in that case, do you have any idea how the native socket API is processed in INFINIBAND? does it go through the tcp stack in kernel? and then go to rdma? – Sungho Hong Mar 06 '18 at 21:14
  • I would look into the code. I don't think it goes through the TCP stack because one of the main points of having sockets over RDMA is to combine the high-level abstraction of sockets (ugly but still much nicer than verbs) with the high performance of RDMA. – JC1 Mar 11 '18 at 06:03

0 Answers0