Skip to content

Posts Tagged ‘Programming ’

What is a loopback message? A loopback message is a message that was sent in an RDMA device, in a specific port from one QP to another/same QP on that device at the same port; the destination address of the...

By default, all Work Requests generate Work Completions when their processing is finished. However, Send Request may or may not generate Work Completions when their processing is finished - this is fully controllable by the application and this is called...

Solicited Event is a mechanism for the requester side to send a message that will generate a special (i.e. solicited) event on the responder side when the message is received. The event will be generated for the message when a...

Sometimes, within an InfiniBand fabric (i.e. a set of endnodes physically connected by cables to switches and routers) there is a need to provide an isolation between specific nodes and create "virtual fabrics" that only they will be able to...

General In RDMA there are two options for establishing a connection between two sides: Changing the QP state explicitly in the application by calling ibv_modify_qp() Using librdmacm (in iWARP this is the only way to do it) In this post,...

Since in RDMA any UD QP can send/receive a packet to/from any other UD QP in the subnet, there is a need for a protection mechanism to allow a UD QP to specify from which other UD QPs it wishes...

The InfiniBand spec defines several features and verbs that the verbs implementation (i.e. RDMA stack in the Linux kernel and libibverbs) didn't implement or implemented in a different way. In this post I will cover missing verbs and functionality that...

RDMA supports zero byte messages, and this can be done by posting a Send Request without a scatter/gather list (i.e. a list with zero entries). Zero byte messages can be done with the following opcodes: Send Send with immediate RDMA...

Let's start with the bottom line: the verbs API is fully thread safe and verbs can be called from every thread in the process. Part of the thread safe is implemented at the libibverbs level and part of it is...

When one wishes to stop the outstanding Work Requests from being processed, flushing the Work Queues may be useful. The most common reason for doing this is to reclaim the memory buffers that the Work Requests refer to. Another reason...