A Rust-based Layer 4 load balancer with dynamic configuration reloading, supporting proxy, passthrough, and direct server return modes.
Convey is a Layer 4 load balancer written in Rust that dynamically distributes TCP traffic across backend servers. It solves the problem of managing traffic in environments where server configurations change frequently, offering automatic health checks and configuration reloading without service interruption. The load balancer supports three modes—proxy, passthrough, and direct server return—to fit different network and performance needs.
System administrators, DevOps engineers, and network operators who need a lightweight, performant load balancer for TCP‑based services and want dynamic configuration updates without restarting.
Developers choose Convey for its Rust‑based performance, zero‑downtime configuration reloading, and flexible operational modes that cater to specific networking scenarios like DSR for reduced latency. Its simplicity and focus on Layer 4 make it a reliable, efficient alternative to heavier solutions.
Layer 4 load balancer with dynamic configuration loading
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Reloads backend servers and weights from a TOML file without restarting, enabling zero-downtime updates in dynamic environments, as highlighted in the README's features.
Supports proxy, passthrough, and DSR modes to handle different network architectures, such as preserving client IPs or reducing latency with direct server return, detailed in the usage sections.
Performs TCP-based health checks at configurable intervals, automatically removing unhealthy backends and re-adding them upon recovery, ensuring reliability without manual intervention.
Built on tokio for event-driven, asynchronous handling, ensuring efficient and scalable TCP load balancing, as noted in the proxy features.
Passthrough and DSR modes require manual configuration of iptables rules and Traffic Control (tc) commands, which can be intricate and error-prone for those unfamiliar with Linux networking, as detailed in the README's setup instructions.
Only handles TCP traffic at Layer 4, lacking support for HTTP, SSL/TLS, or any Layer 7 features, making it unsuitable for web services that require protocol-aware load balancing.
AF_XDP support for enhanced performance is still a work-in-progress in a separate branch and requires kernel 5.4+, indicating it's not yet stable for production use, as mentioned in the README.