Skip to content

kit-tm/KIRA-Rust

Repository files navigation

KIRA Implementation

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.

Implementation Status

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.

Structure

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

Rustdoc

The majority of the KIRA routing daemon is written in Rust. To access the rustdoc of the respective packages run

make doc

Cloning the repository

To simply clone the repository use this:

git clone git@gitlab.kit.edu:kit/tm/telematics/kira/kira-rust.git

Tasks

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

Dependencies

Some of the above tasks require some dependencies to be installed to run them. Here are the instructions to install them.

Running on physical hosts

To Run the task on a physical host we recommend using the provided systemd-service file.

Installation

  1. make install: install the daemon and its files to the system
  2. systemctl daemon-reload: make systemd pickup newly installed unit files

Manage all interfaces

systemctl enable --now kirad.service

Manage some interfaces

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.

Running docker test scenarios

Check tests/README.md for further information.

About

Implementation of KIRA (Kademlia-directed ID-based Routing Architecture) in Rust

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors