Abol
A high-performance, asynchronous RADIUS implementation for Rust
Type-safe โข Runtime-agnostic โข Dictionary-driven โข Memory-safe
๐ Quick Start
[]
= "0.1.0"
= { = "0.1.0", = ["tokio"] }
= { = "1.0", = ["full"] }
๐ What is Abol?
Abol is a high-performance, asynchronous RADIUS server framework written in Rust.
It provides a robust, type-safe foundation for building modern authentication and authorization systems, featuring a powerful dictionary-driven code generator that turns standard RADIUS dictionaries into strongly-typed Rust APIs.
Abol is designed for correctness, extensibility, and performance --- without sacrificing ergonomics.
โ What's in a Name?
In the traditional Ethiopian coffee ceremony, Abol is the first round of brewing.
It is the strongest, most potent, and most important cup --- representing clarity, connection, and readiness.
Like its namesake, Abol serves as the primary and reliable connection point for your network authentication infrastructure.
โก Why Abol?
๐ Runtime-Agnostic Core
Optimized for high performance while remaining compatible with multiple async runtimes, including Tokio and Smol.
๐ง Zero-Cost Abstractions
Leverages Rust's type system and traits to provide type-safe attribute access with zero runtime overhead.
๐ Dictionary-Driven Design
Automatically generate Rust traits and helpers from standard RADIUS dictionary files at build time.
๐ก Memory Safety by Default
Implemented 100% in safe Rust, protecting your authentication gateway from memory corruption and buffer overflows.
๐ Performance
Abol is engineered for high-concurrency environments. Below are the results of a benchmark conducted on a standard development machine using radperf.
Test Environment
- OS: Kali GNU/Linux 2025.3 (Kernel 6.17.10)
- CPU: Intelยฎ Coreโข i7-8850H @ 2.60GHz (12 Cores)
- RAM: 32 GiB DDR4
- Platform: Wayland / KDE Plasma 6.3.6
Benchmark Command:
| Metric | Result |
|---|---|
| Throughput | ๐ 34,141 packets/s |
| Success Rate | โ 100% (0 failures) |
| Latency | โฑ๏ธ < 10ms (93.5% of reqs) |
| Total Workload | ๐ฆ 100,000 requests |
| Execution Time | โณ 2.92 seconds |
๐ Dictionaries & Vendor Support
Supported RFCs
- RFC 2865 --- Remote Authentication
- RFC 2866 --- Accounting
- RFC 2869 --- Extensions
- RFC 3576 --- Dynamic Authorization
- RFC 6911 --- IPv6 Attributes
Vendor-Specific Attributes
- Aruba
- Microsoft
- WISPr
๐งช Example: Simple Authentication Server
use Rfc2865Ext;
use ;
use Runtime;
use ;
use TokioRuntime;
use SocketAddr;
use Arc;
/// A simple "Global Password" provider for your RADIUS server.
///
/// Use this if you want every single client (NAS) to use the same shared secret,
/// regardless of their IP address. It is the easiest way to get started.
async
๐ Running the Examples
Tokio
Smol
๐ Project Architecture
abol-core -- Packet encoding/decoding and trait definitions\
- abol-server -- Async network layer (multi-runtime compatible)\
- abol-dict-gen -- Build-time dictionary parsing and code generation rt -- Runtime abstraction
๐บ Roadmap
- RADIUS Client implementation
โ๏ธ License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Crafted with โ in the spirit of the first brew.