Skip to content

Latest commit

Β 

History

History
121 lines (84 loc) Β· 3.43 KB

File metadata and controls

121 lines (84 loc) Β· 3.43 KB

YANET

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.

🌐 Key Features

πŸš€ High Performance

  • 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.

🧩 Modular Architecture

  • 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.

πŸ›‘οΈ Safe Initialization Process

  • Controlled system initialization with failsafe mechanisms.
  • BGP route announcement control based on system health.

πŸ—οΈ Architecture

YANET follows a modular architecture with clear separation between control and data planes:

Data Plane (C & DPDK)

  • 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.

Control Plane (Go)

  • Exposes management API.
  • Handles configuration and management functions.
  • Manages routing tables and policy.
  • ACL compilation (TDB).

πŸ› οΈ Technologies

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.

πŸ”§ Building & Requirements

System Requirements

  • Linux-based operating system (Ubuntu 22.04+ or equivalent recommended).
  • Hardware supporting DPDK (Mellanox NICs recommended).
  • At least 64GB RAM recommended for production.

Dependencies

  • Go 1.21+.
  • Rust 1.84+.
  • Protobuf compiler 3.0+.
  • Meson 0.61+.
  • Ninja build system.
  • GCC/Clang.

Build Instructions

  1. Clone the repository:

    git clone https://github.com/yanet-platform/yanet2.git
    cd yanet2
    git submodule update --init   
  2. Configure and build with Meson:

    meson setup build
    meson compile -C build
  3. Build CLI tools:

    cargo build --release
  4. Install:

    meson install -C build

Testing

meson test -C build

Running in a Virtual Environment

YANET includes QEMU virtualization support for development and testing without physical hardware:

  1. Configure QEMU VM with virtual network interfaces.
  2. Set up shared folder for code access.
  3. Follow detailed instructions in the documentation.

πŸ“„ License

YANET2 is licensed under the Apache License, Version 2.0.

πŸ”— Additional Resources