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§
- Address
Family - Trait that defines the AFIs 1 (IPv4) and 2 (IPv6). The address family of an IP address as a Trait.
- Into
IpAddr - Trait that describes the conversion of a u32 or u128 in to a IPv4, or IPV6 respectively.