All Projects → claudebarthels → Infinity

claudebarthels / Infinity

Licence: mit
A lightweight C++ RDMA library for InfiniBand networks.

Projects that are alternatives of or similar to Infinity

Game Networking Resources
A Curated List of Game Network Programming Resources
Stars: ✭ 4,208 (+4793.02%)
Mutual labels:  networking, network-programming
Capsule
A framework for network function development. Written in Rust, inspired by NetBricks and built on DPDK.
Stars: ✭ 217 (+152.33%)
Mutual labels:  networking, network-programming
Ubernet
Flexible networking library for Unity
Stars: ✭ 10 (-88.37%)
Mutual labels:  networking, network-programming
Pynms
A vendor-agnostic NMS for carrier-grade network simulation and automation
Stars: ✭ 73 (-15.12%)
Mutual labels:  networking, network-programming
Xdp
Package xdp allows one to use XDP sockets from the Go programming language.
Stars: ✭ 36 (-58.14%)
Mutual labels:  networking, network-programming
Vos backend
vangav open source - backend; a backend generator (generates more than 90% of the code needed for big scale backend services)
Stars: ✭ 71 (-17.44%)
Mutual labels:  networking
Reflect
Use Bonjour discovery to allow you to send file data from your Mac to iOS devices.
Stars: ✭ 76 (-11.63%)
Mutual labels:  networking
Tanya
GC-free, high-performance D library: Containers, networking, metaprogramming, memory management, utilities
Stars: ✭ 70 (-18.6%)
Mutual labels:  networking
Secure If
Android USB Control app
Stars: ✭ 68 (-20.93%)
Mutual labels:  interface
Iced
A cross-platform GUI library for Rust, inspired by Elm
Stars: ✭ 12,176 (+14058.14%)
Mutual labels:  interface
Panoptes
A Global Scale Network Telemetry Ecosystem
Stars: ✭ 80 (-6.98%)
Mutual labels:  networking
Water
A simple TUN/TAP library written in native Go.
Stars: ✭ 1,198 (+1293.02%)
Mutual labels:  networking
Mads.jl
MADS: Model Analysis & Decision Support
Stars: ✭ 71 (-17.44%)
Mutual labels:  high-performance-computing
Bluesocket
Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux.
Stars: ✭ 1,209 (+1305.81%)
Mutual labels:  networking
Networktoolkit
This project contains networking primitives for use with .NET.
Stars: ✭ 71 (-17.44%)
Mutual labels:  networking
Ship
A simple, handy network addressing multitool with plenty of features
Stars: ✭ 81 (-5.81%)
Mutual labels:  networking
Lance
Multiplayer game server based on Node.JS
Stars: ✭ 1,161 (+1250%)
Mutual labels:  networking
Network Threats Taxonomy
Machine Learning based Intrusion Detection Systems are difficult to evaluate due to a shortage of datasets representing accurately network traffic and their associated threats. In this project we attempt at solving this problem by presenting two taxonomies
Stars: ✭ 79 (-8.14%)
Mutual labels:  networking
Tooter
Add 'Toot' and 'Share to Mastodon' buttons to the web
Stars: ✭ 75 (-12.79%)
Mutual labels:  networking
Addon Wireguard
WireGuard - Home Assistant Community Add-ons
Stars: ✭ 72 (-16.28%)
Mutual labels:  networking

Infinity - A lightweight C++ RDMA library for InfiniBand

Infinity is a simple, powerful, object-oriented abstraction of ibVerbs. The library enables users to build sophisticated applications that use Remote Direct Memory Access (RDMA) without sacrificing performance. It significantly lowers the barrier to get started with RDMA programming. Infinity provides support for two-sided (send/receive) as well as one-sided (read/write/atomic) operations. The library is written in C++ and has been ported to Rust (Infinity-Rust) by @utaal.

Installation

Installing ''ibVerbs'' is a prerequisite before building Infinity. The output is located in ''release/libinfinity.a''.

$ make library # Build the library
$ make examples # Build the examples

Using Infinity

Using Infinity is straight-forward and requires only a few lines of C++ code.

// Create new context
infinity::core::Context *context = new infinity::core::Context();

// Create a queue pair
infinity::queues::QueuePairFactory *qpFactory = new  infinity::queues::QueuePairFactory(context);
infinity::queues::QueuePair *qp = qpFactory->connectToRemoteHost(SERVER_IP, PORT_NUMBER);

// Create and register a buffer with the network
infinity::memory::Buffer *localBuffer = new infinity::memory::Buffer(context, BUFFER_SIZE);

// Get information from a remote buffer
infinity::memory::RegionToken *remoteBufferToken = new infinity::memory::RegionToken(REMOTE_BUFFER_INFO);

// Read (one-sided) from a remote buffer and wait for completion
infinity::requests::RequestToken requestToken(context);
qp->read(localBuffer, remoteBufferToken, &requestToken);
requestToken.waitUntilCompleted();

// Write (one-sided) content of a local buffer to a remote buffer and wait for completion
qp->write(localBuffer, remoteBufferToken, &requestToken);
requestToken.waitUntilCompleted();

// Send (two-sided) content of a local buffer over the queue pair and wait for completion
qp->send(localBuffer, &requestToken);
requestToken.waitUntilCompleted();

// Close connection
delete remoteBufferToken;
delete localBuffer;
delete qp;
delete qpFactory;
delete context;

Citing Infinity in Academic Publications

This library has been created in the context of my work on parallel and distributed join algorithms. Detailed project descriptions can be found in two papers published at ACM SIGMOD 2015 and VLDB 2017. Further publications concerning the use of RDMA have been submitted to several leading systems conferences and are currently under review. Therefore, for the time being, please refer to the publications listed below when referring to this library.

Claude Barthels, Simon Loesing, Gustavo Alonso, Donald Kossmann. Rack-Scale In-Memory Join Processing using RDMA. Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, June 2015.
PDF: http://barthels.net/publications/barthels-sigmod-2015.pdf

Claude Barthels, Ingo Müller, Timo Schneider, Gustavo Alonso, Torsten Hoefler. Distributed Join Algorithms on Thousands of Cores. Proceedings of the VLDB Endowment, Volume 10, Issue 5, January 2017.
PDF: http://barthels.net/publications/barthels-vldb-2017.pdf


@inproceedings{barthels-sigmod-2015,
  author    = {Claude Barthels and
               Simon Loesing and
               Gustavo Alonso and
               Donald Kossmann},
  title     = {Rack-Scale In-Memory Join Processing using {RDMA}},
  booktitle = {{SIGMOD}},
  pages     = {1463--1475},
  year      = {2015},
  url       = {http://doi.acm.org/10.1145/2723372.2750547}
}
@article{barthels-pvldb-2017,
  author    = {Claude Barthels and
               Ingo M{\"{u}}ller and
               Timo Schneider and
               Gustavo Alonso and
               Torsten Hoefler},
  title     = {Distributed Join Algorithms on Thousands of Cores},
  journal   = {{PVLDB}},
  volume    = {10},
  number    = {5},
  pages     = {517--528},
  year      = {2017},
  url       = {http://www.vldb.org/pvldb/vol10/p517-barthels.pdf}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].