Crate rotonda_store

Source
Expand description

A library that provides abstractions for a BGP Routing Information Base (RIB) for different AFI/SAFI types, as a database.

The data structures provided by this crate can be used to store and query routes (and route-like data) in memory and on-disk, for both current and historical data.

The main data structures that this crate implements are firstly a tree bitmap, largely as described in this paper1 - but with a twist. There’s also a blog post2 about the tree bitmap, and similar data structures. Secondly, this repo implements a concurrent chained hash table (called cht throughout this repo), geared towards keys that are “prefix-like”, i.e. variable-length bitfields, that fit within a primitive integer type.

The log-structured merge tree (“lsm_tree”) used in this library is provided by the lsm_tree crate - the crate that powers fjall.

Re-exports§

pub use crossbeam_epoch as epoch;

Modules§

addr
IP address resources.
errors
Error types returned by a RIB
match_options
Types used to create match queries on a RIB
prefix_record
Record, Record Iterator and related types/traits
rib
RIBs for various AFI/SAFI types
stats
Statistics and metrics types returned by methods on a RIB

Structs§

Guard
A guard that keeps the current thread pinned.

Traits§

AddressFamily
Trait that defines the AFIs 1 (IPv4) and 2 (IPv6). The address family of an IP address as a Trait.
IntoIpAddr
Trait that describes the conversion of a u32 or u128 in to a IPv4, or IPV6 respectively.

Type Aliases§

IPv4
The underlying value (u32) and trait impl for AFI 1. Exactly fitting IPv4 bytes (4 octets).
IPv6
The underlying value (u128) and trait impl for AFI 2. Exactly fitting IPv6 bytes (16 octets).