title: What is the difference between SDP and VMA?
body: <p>As known for Infiniband or RoCE-Ethernet we can use:</p>
  
  <ul>
  <li><p><a href="http://www.mellanox.com/page/software_vma?mtag=vma" rel="nofollow noreferrer"><strong>VMA</strong></a> - Voltaire Messaging Accelerator (VMA) Mellanox's Messaging Accelerator (VMA) boosts performance for message-based and streaming applications... The result is a reduction in latency by as much as 300% and an increase in application throughput by as much as 200% per server...</p></li>
  <li><p><a href="http://www.mellanox.com/pdf/whitepapers/SDPCluster2006.pdf" rel="nofollow noreferrer"><strong>SDP</strong></a> -  Sockets Direct Protocol (SDP) is a byte stream protocol that utilizes the capabilities of the InfiniBand fabric to transparently achieve performance gains for existing socket-based networked applications. </p></li>
  </ul>
  
  <p>Also - Page 9: <a href="http://www.informatix-sol.com/docs/TCP_bypass_overview.pdf" rel="nofollow noreferrer">http://www.informatix-sol.com/docs/TCP_bypass_overview.pdf</a></p>
  
  <p><a href="https://i.stack.imgur.com/9dUXg.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9dUXg.jpg" alt="enter image description here"></a></p>
  
  <p>And known, that both SDP and VMA use RDMA-Verbs and can be used for already compiled binary of program as (libpreload) LD_PRELOAD: <a href="http://www.informatix-sol.com/low-latency.html" rel="nofollow noreferrer">http://www.informatix-sol.com/low-latency.html</a></p>
  
  <blockquote>
    <p>As with Openonload, SDP and Mellanox's VMA all preload to accelerate
    an existing TCP/IP socket program. Openonload retains the TCP/IP
    protocol so can be used single ended. SDP and VMA both map to VERBS so
    must be deployed on both ends of the wire.</p>
  </blockquote>
  
  <p>Also get image from:</p>
  
  <ul>
  <li>Page 15 figure 2-1: <a href="http://lists.openfabrics.org/pipermail/general/attachments/20081016/3fe4fd45/attachment.obj" rel="nofollow noreferrer">http://lists.openfabrics.org/pipermail/general/attachments/20081016/3fe4fd45/attachment.obj</a></li>
  <li>Page 76: <a href="http://ircc.fiu.edu/download/sc13/Infiniband_Slides.pdf" rel="nofollow noreferrer">http://ircc.fiu.edu/download/sc13/Infiniband_Slides.pdf</a></li>
  </ul>
  
  <p><a href="https://i.stack.imgur.com/rwWbo.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/rwWbo.jpg" alt="enter image description here"></a></p>
  
  <p>But if SDP and VMA both:</p>
  
  <ul>
  <li>bypasses TCP/IP-stack</li>
  <li>uses RDMA-verb</li>
  <li>must be deployed on both ends of the wire</li>
  <li>can be used for already compiled binary of program as (libpreload), run program.bin as: <code>LD_PRELOAD=libsdp.so program.bin</code> or <code>LD_PRELOAD=libvma.so program.bin</code></li>
  </ul>
  
  <p>then why such a big difference in speed (latency and bandwidth)?</p>
  
  <ul>
  <li><strong>VMA has latency in 2.5 times lower than SDP</strong></li>
  <li><strong>VMA has bandwidth in 1.8 times bigger than SDP</strong></li>
  </ul>