This repository collects the different repositories used for the implementation of the scalable zero-touch routing architecture KIRA in Rust started by Moritz Hepp (2022) at the Institute of Telematics at KIT. This implementation supplies a routing daemon that provides IPv6 connectivity without configuration as well as a distributed hash table that can be used to provide a simple key-value store to map names to IPv6 addresses. The IPv6 addresses are currently randomly generated from the ULA address realm and are as such not routable on the Internet. As KIRA is designed to be a routing solution for control planes it deliberately uses ULAs for now.
This implementation is in version 0.0.0 (pre-MVP) and therefore is still work-in-progress in many parts.
For a working example see DNS-DHT-Example.
- KIRA Routing Daemon: Contains the crate representing the routing daemon executable.
- Sans-I/O R²/KAD: Contains the implementation of the routing protocol of KIRA R²/KAD.
- KIRA Library: Contains the different abstract modules, classes, traits to implement a complete routing daemon. Crucially this provides the i/o implementation of R²/KAD.
- KIRA Forwarding: Contains the traits and implementations of the fast forwarding layer of KIRA.
- Examples: Contains minimal examples of running KIRA in an emulated network using Containernet
More specific information can be found in the respective folders and in the following chapters.
The majority of the KIRA routing daemon is written in Rust. To access the rustdoc of the respective packages run
make docTo simply clone the repository use this:
git clone git@gitlab.kit.edu:kit/tm/telematics/kira/kira-rust.git| Task | Command | Description |
|---|---|---|
| Build (release) | make build-release, cargo build --release |
Compiles the daemon with release profile and creates an executable |
| Build (docker) | make build-images |
Compiles and builds scratch and benchmark docker images (no rust install required) |
| Install Daemon | make install |
Compiles the daemon with release profile and installs it in the system |
Some of the above tasks require some dependencies to be installed to run them. Here are the instructions to install them.
- docker: To run benchmarks and build docker images. Additionaly one has to configure the docker daemon to support IPv6.
- Rust
- Userspace utilities of nftables.
Specifically the daemon must have access to the
nftutility.
To Run the task on a physical host we recommend using the provided systemd-service file.
make install: install the daemon and its files to the systemsystemctl daemon-reload: make systemd pickup newly installed unit files
systemctl enable --now kirad.service
Currently, you can only blacklist interfaces using the kirad@.service by using the numbers of the interfaces:
systemctl enable --now kirad@$(systemd-escape 4,2).service
This will exclude the interface 4 and 2 interface from being managed by the routing daemon.
You can obtain a list of all your interfaces by running ip link.
Check tests/README.md for further information.