Note: This project is currently in active development.
YANET is a high-performance modular software router built on DPDK (Data Plane Development Kit) that provides exceptional packet processing capabilities. It's designed to be a versatile network solution that functions as a router, decapsulator, firewall, L3 load balancer, and NAT device, all in one platform.
- DPDK-accelerated packet processing bypasses the kernel networking stack for maximum throughput.
- Achieves near-hardware performance with the flexibility of software.
- NUMA-aware resource management for optimal multi-socket performance.
- Optimized memory management with huge pages support.
- Module system allows enabling only required networking functions.
- Clean separation between control plane and data plane components.
- Flexible pipeline configuration for customized packet processing flows.
- Add or remove functionality without affecting the entire system.
- Multi-stage configuration process orchestrated by the Coordinator component.
- Controlled system initialization with failsafe mechanisms.
- BGP route announcement control based on system health.
YANET follows a modular architecture with clear separation between control and data planes:
- Implements fast-path packet processing.
- Uses DPDK for direct hardware access and kernel bypass.
- Applies routing decisions, filtering, and packet transformations.
- Achieves high packet throughput with minimal latency.
- Exposes management API.
- Handles configuration and management functions.
- Manages routing tables and policy.
- ACL compilation (TDB).
- Module System - Pluggable modules (route, acl, balancer, etc.) providing specific network functions.
- Pipeline System - Configurable packet processing chains.
- Coordinator - Orchestrates multi-stage system configuration.
- Announcer (TDB) - Monitors system health and controls BGP announcements.
- CLI Tools - Management interfaces with consistent command structure.
- Web UI (TDB) - Browser-based management interface.
YANET employs a multi-language approach to leverage the strengths of different programming languages:
- C - Data plane and performance-critical components.
- Go - Control plane and orchestration components.
- Rust - CLI tools.
- DPDK - Kernel-bypass networking for high-performance packet processing.
- gRPC - Communication framework for inter-component messaging.
- Protocol Buffers - Efficient binary serialization format.
- Meson - Build system for core components.
- Linux-based operating system (Ubuntu 22.04+ or equivalent recommended).
- Hardware supporting DPDK (Mellanox NICs recommended).
- At least 64GB RAM recommended for production.
- Go 1.21+.
- Rust 1.84+.
- Protobuf compiler 3.0+.
- Meson 0.61+.
- Ninja build system.
- GCC/Clang.
-
Clone the repository:
git clone https://github.com/yanet-platform/yanet2.git cd yanet2 git submodule update --init
-
Configure and build with Meson:
meson setup build meson compile -C build
-
Build CLI tools:
cargo build --release
-
Install:
meson install -C build
meson test -C build
YANET includes QEMU virtualization support for development and testing without physical hardware:
- Configure QEMU VM with virtual network interfaces.
- Set up shared folder for code access.
- Follow detailed instructions in the documentation.
YANET2 is licensed under the Apache License, Version 2.0.