Skip to content

stack-rs/rattan

Repository files navigation

Rattan

GitHub Release crates.io CI

Rattan is a fast and extensible Internet path emulator framework.

We provide a simple and easy-to-use API to create and manage network emulations. Rattan is designed to be used in a wide range of scenarios, from testing network applications to debugging complex network performance issues.

Our modular design makes it easy to extend Rattan with different network effects. We provide a set of built-in modules that can be used to emulate different network conditions, such as bandwidth, latency, packet loss, ISP policies and etc.

We support Linux only at the moment. Currently, kernel version v5.4, v5.15, v6.8 and v6.10 are tested.

Usage

We provide users with a CLI tool to use our pre-defined channels or cells and also a Rust library to build custom channels or cells.

Please check our User Guide for how to use Rattan.

Design Targets

  • High Performance. Rattan provides both high peak performance and execution efficiency.
  • Flexible. Rattan tries to be agnostic of the underlying path emulation model.
  • Extensible. Rattan provides rich features out-of-the-box, meanwhile tends to be easily extensible for custom conditions.
  • User-Friendly. Rattan aims to provide a simple and intuitive interface for quick usage on common cases and ensure complete controllability under the hood to cover the corner as well.

Contributing

Rattan is free and open source. You can find the source code on GitHub and issues and feature requests can be posted on the GitHub issue tracker. Rattan relies on the community to fix bugs and add features: if you'd like to contribute, please read the CONTRIBUTING guide and consider opening a pull request.