#rdma #ro-ce #infini-band #verbs #rdma-core

nightly sys rdma-core-sys

rdma-core-sys FFI bindings

12 releases

Uses old Rust 2015

0.1.10 Apr 4, 2018
0.1.9 Mar 26, 2018
0.0.1 Jun 1, 2017

#1 in #infini-band

Download history 76/week @ 2023-10-19 83/week @ 2023-10-26 62/week @ 2023-11-02 64/week @ 2023-11-09 76/week @ 2023-11-16 87/week @ 2023-11-23 93/week @ 2023-11-30 71/week @ 2023-12-07 80/week @ 2023-12-14 77/week @ 2023-12-21 41/week @ 2023-12-28 60/week @ 2024-01-04 59/week @ 2024-01-11 76/week @ 2024-01-18 58/week @ 2024-01-25 36/week @ 2024-02-01

244 downloads per month
Used in 18 crates (2 directly)

MIT license

2.5MB
74K SLoC

C 67K SLoC // 0.1% comments Rust 5.5K SLoC // 0.1% comments RPM Specfile 896 SLoC // 0.1% comments Shell 300 SLoC // 0.1% comments Python 161 SLoC // 0.2% comments Bitbake 22 SLoC // 0.8% comments

rdma-core

rdma-core is a project to develop rust code to wrap the rdma-core C libraries which provide access to InfiniBand networks and RDMA over Ethernet (aka RoCE and SoftRoCE). Currently it provides:-

  • rdma-core-sys, a Rust crate that provides a low-level FFI binding of libibverbs, as of version r14-rc1
  • rdma-core, an incomplete mid-level binding that uses rdma-core-sys, rdma
  • gaspi-reference-sys, a non-linking* binding to the GASPI 2 specification C headers
  • openshmem-reference-sys, a non-linking* binding to the OpenSHMEM 1.3 specification C headers

The rdma-core-sys crate will compile on Alpine Linux and Mac OS X, but bindings generation has only been tested on Mac OS X. rdma-core-sys also includes generated bindings to static inline functions present in libiberbs. Please note that there is another Rust project to provide rdma-core bindings, https://github.com/jonhoo/rust-ibverbs. There is a complexity with libibverbs, in that Mellanox ships a different version with enhancements for their own code (MLNX_OFED). This code currently uses the official GitHub versions, but may switch; Mellanox are the most effective innovators currently in this space.

This project exists currently in an experimental form and primarily is being developed to serve the development needs of StormMQ. It may never stablise or support a development ecosystem that you are using. It also uses naming and code layout conventions that we prefer and are not accepted by the rust community. It requires Rust nightly, and likely will do so for some time (it uses unions, associated constants and the like). It prefers shell script over Cargo build scripts. Eventually, it is planned to incorporate it into Libertine Linux, a small, in-memory, secure and built-from-source Linux distribution that is ideal for modern microservice clusters.

Crates are present in the workspace folder along with IntelliJ module files.

Pull requests are not likely to be accepted at this time.

* ie provides the functions but does not link to an ELF .a or .so file. This is because there are multiple implementations of these specifications.

Licensing

The license for this project is MIT.

Dependencies