#xdp #linux #sockets #queue #rings #buffer #interaction

no-std xdpilone

Interaction with Linux XDP sockets and rings. No libbpf/libxpd-sys. Lightweight, high-performance.

3 stable releases

1.0.3 Feb 3, 2024
1.0.2 Feb 1, 2024
1.0.1 Jan 17, 2023
1.0.0 Jan 16, 2023

#183 in Unix APIs

Download history 248/week @ 2024-01-01 439/week @ 2024-01-08 470/week @ 2024-01-15 494/week @ 2024-01-22 634/week @ 2024-01-29 658/week @ 2024-02-05 477/week @ 2024-02-12 479/week @ 2024-02-19 521/week @ 2024-02-26 469/week @ 2024-03-04 464/week @ 2024-03-11 355/week @ 2024-03-18 272/week @ 2024-03-25 430/week @ 2024-04-01 413/week @ 2024-04-08 345/week @ 2024-04-15

1,514 downloads per month

EUPL-1.2

71KB
1K SLoC

The XDP Rust access library.

Motivation

For the Linux AF_XDP all existing libraries are based on or around the C access libraries. The goal is develop a Rust centric library that can take advantage of its added thread-safety benefits for socket types, as well as high-level abstractions (such as closures, Arc) for interacting with the packet buffers.

The primary metrics for decision making are performance, and latency.

Overview

Goals:

  • No more latency than the C implementation in the data paths.
  • Enable and simplify correct multi-threading on the same Umem.

Non-Goals:

  • Handling BPF / XSK_MAP. This is necessary to accept packets on any of the RX sockets created, however it can be setup at any point with no interaction with the actual queues. Hence we keep this large dependency tree separate. (You could choose a pure-Rust libbpf alternative if you want to).
  • Dealing with any aspects of buffer allocation.

Name Origin

The drug Ixabepilone is a pharmaceutical against cancer.

Dependencies

~190KB