{"id":16936454,"url":"https://github.com/jonhoo/rust-ibverbs","last_synced_at":"2025-05-15T11:06:42.239Z","repository":{"id":42520177,"uuid":"90795456","full_name":"jonhoo/rust-ibverbs","owner":"jonhoo","description":"Bindings for RDMA ibverbs through rdma-core","archived":false,"fork":false,"pushed_at":"2025-04-08T19:19:54.000Z","size":187,"stargazers_count":172,"open_issues_count":13,"forks_count":43,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-05-15T01:49:09.235Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonhoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-05-09T21:56:50.000Z","updated_at":"2025-05-14T04:45:45.000Z","dependencies_parsed_at":"2024-10-30T18:00:47.520Z","dependency_job_id":"ee9f0f7b-8891-46a9-9b2f-93572279011e","html_url":"https://github.com/jonhoo/rust-ibverbs","commit_stats":{"total_commits":156,"total_committers":21,"mean_commits":7.428571428571429,"dds":"0.19871794871794868","last_synced_commit":"55be7d2687a04df8bfa13c27456e5a39da25b32f"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Frust-ibverbs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Frust-ibverbs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Frust-ibverbs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Frust-ibverbs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonhoo","download_url":"https://codeload.github.com/jonhoo/rust-ibverbs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254259314,"owners_count":22040810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T20:57:01.433Z","updated_at":"2025-05-15T11:06:42.204Z","avatar_url":"https://github.com/jonhoo.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# ibverbs\n\n[![Crates.io](https://img.shields.io/crates/v/ibverbs.svg)](https://crates.io/crates/ibverbs)\n[![Documentation](https://docs.rs/ibverbs/badge.svg)](https://docs.rs/ibverbs/)\n[![codecov](https://codecov.io/gh/jonhoo/rust-ibverbs/graph/badge.svg?token=3nylKSTA6R)](https://codecov.io/gh/jonhoo/rust-ibverbs)\n[![Dependency status](https://deps.rs/repo/github/jonhoo/rust-ibverbs/status.svg)](https://deps.rs/repo/github/jonhoo/rust-ibverbs)\n\nRust API wrapping the `ibverbs` Remote Direct Memory Access (RDMA) library.\n\n`libibverbs` is a library that allows userspace processes to use RDMA \"verbs\" to perform\nhigh-throughput, low-latency network operations for both Infiniband (according to the\nInfiniband specifications) and iWarp (iWARP verbs specifications). It handles the control path\nof creating, modifying, querying and destroying resources such as Protection Domains,\nCompletion Queues, Queue-Pairs, Shared Receive Queues, Address Handles, and Memory Regions. It\nalso handles sending and receiving data posted to QPs and SRQs, and getting completions from\nCQs using polling and completions events.\n\nA good place to start is to look at the programs in [`examples/`](ibverbs/examples/), and the\nupstream [C examples]. You can test RDMA programs on modern Linux kernels even without specialized\nRDMA hardware by using [SoftRoCE][soft].\n\n## For the detail-oriented\n\nThe control path is implemented through system calls to the `uverbs` kernel module, which\nfurther calls the low-level HW driver. The data path is implemented through calls made to\nlow-level HW library which, in most cases, interacts directly with the HW provides kernel and\nnetwork stack bypass (saving context/mode switches) along with zero copy and an asynchronous\nI/O model.\n\niWARP ethernet NICs support RDMA over hardware-offloaded TCP/IP, while InfiniBand is a general\nhigh-throughput, low-latency networking technology. InfiniBand host channel adapters (HCAs) and\niWARP NICs commonly support direct hardware access from userspace (kernel bypass), and\n`libibverbs` supports this when available.\n\nFor more information on RDMA verbs, see the [InfiniBand Architecture Specification][infini]\nvol. 1, especially chapter 11, and the RDMA Consortium's [RDMA Protocol Verbs\nSpecification][RFC5040]. See also the upstream [`libibverbs/verbs.h`] file for the original C\ndefinitions, as well as the manpages for the `ibv_*` methods.\n\n## Library dependency\n\n`libibverbs` is usually available as a free-standing [library package]. It [used to be][1]\nself-contained, but has recently been adopted into [`rdma-core`]. `cargo` will automatically\nbuild the necessary library files and place them in `vendor/rdma-core/build/lib`. If a\nsystem-wide installation is not available, those library files can be used instead by copying\nthem to `/usr/lib`, or by adding that path to the dynamic linking search path.\n\n## Thread safety\n\nAll interfaces are `Sync` and `Send` since the underlying ibverbs API [is thread safe][safe].\n\n## Documentation\n\nMuch of the documentation of this crate borrows heavily from the excellent posts over at\n[RDMAmojo]. If you are going to be working a lot with ibverbs, chances are you will want to\nhead over there. In particular, [this overview post][1] may be a good place to start.\n\n[`rdma-core`]: https://github.com/linux-rdma/rdma-core\n[`libibverbs/verbs.h`]: https://github.com/linux-rdma/rdma-core/blob/master/libibverbs/verbs.h\n[library package]: https://launchpad.net/ubuntu/+source/libibverbs\n[C examples]: https://github.com/linux-rdma/rdma-core/tree/master/libibverbs/examples\n[1]: https://git.kernel.org/pub/scm/libs/infiniband/libibverbs.git/about/\n[infini]: http://www.infinibandta.org/content/pages.php?pg=technology_public_specification\n[RFC5040]: https://tools.ietf.org/html/rfc5040\n[safe]: http://www.rdmamojo.com/2013/07/26/libibverbs-thread-safe-level/\n[soft]: https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home\n[RDMAmojo]: http://www.rdmamojo.com/\n[1]: http://www.rdmamojo.com/2012/05/18/libibverbs/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonhoo%2Frust-ibverbs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonhoo%2Frust-ibverbs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonhoo%2Frust-ibverbs/lists"}