Skip to content

Latest commit

 

History

History
79 lines (54 loc) · 4.82 KB

README.md

File metadata and controls

79 lines (54 loc) · 4.82 KB

ORCA Framework

The ORCA (Open-Source Resource Control API) framework is a toolset enabling efficient, fine-grained, and distributed resource control with off-the-shelf Linux-based WiFi transceivers.

Components

Quick overview

Component Repository Description
ORCA-UAPI scnx-openwrt Kernel to userspace interface for Linux Kernel
ORCA-RCD orca-rcd Remote control daemon to use ORCA-UAPI remotely
RateMan scnx-rateman Python-based package for easy-to-use resource control on multiple access points
MMRRS (Manual MRR Setter) scnx-manual-mrr-setter Example application, using Rateman to perform fixed-setting resource control

ORCA-UAPI

The ORCA-UAPI is the core part of the ORCA framework which exposes otherwise internal information and controllable parameters to user space by leveraging debugfs and relayfs interfaces on a single device.

The source code of ORCA-UAPI consists of several patches and changes against OpenWrt Linux.
The changes include:

  • patches against mac80211
  • patches against mt76 driver
  • changes to Makefiles, Kconfig

It's available as part of the scnx-openwrt repository, which is a fork of the upstream OpenWrt repository.

ORCA-RCD

The purpose of the ORCA-RCD (remote control daemon) is to make the local interfaces, that are provided by ORCA-UAPI, available in a network for remote monitoring and management.

The source code is available in orca-rcd. This repository is a OpenWrt-compatible package feed which contains the ORCA-RCD source code within the package directory. This feed is already included in the feeds.conf.default in scnx-openwrt.

RateMan

RateMan (Rate Manager) is a userspace utility implemented in Python that connects to ORCA-RCD of multiple nodes and provides functionality to work with multiple access points and perform centralised rate control.

The source code is available in scnx-rateman.

MMRS

TBD

How to get started

To have a simple setup to work with ORCA you need:

  • (a) a WiFi-capable device which is supported by OpenWrt, see here. Please note that ORCA currently only works with WiFi standards 802.11 a/b/g/n/ac.
  • (b) a WiFi client device, e.g. your smartphone
  • (c) a device that can run Python packages and is performance-wise able to act as a controller

If you have a proper device, you can proceed with:

  1. Build an OpenWrt image for that device (a) with the scnx-openwrt tree instead of the official OpenWrt tree. If you do not know how to do that, follow the official OpenWrt guide here

    The ORCA-UAPI is enabled by default in mac80211 in the tree, however, ORCA-RCD needs to be properly included and selected in the OpenWrt build config. Alternatively, the patches/changes can also be applied to a plain OpenWrt repository. Thus, there's no need to use our fork.

  2. Flash the image to your device. The procedure depends on your device and if it's already running OpenWrt or still running the vendor's firmware. Refer to the OpenWrt device page for more information.

  3. After flashing, access your device via SSH and activate/run orca-rcd. See the ORCA-RCD documentation to see how to do that.

Your device is now properly prepared for usage with ORCA. Now head over to your controller device (c) to setup the Python-based components of ORCA. Fur further installation instructions, refer to the repository of RateMan scnx-rateman.

Citing ORCA-based WiFi Resource Control Toolchain

If you use ORCA and its toolchain in your research, please cite our work using the following reference.

@inproceedings{orcawifirc,
	title        = {Open-source Resource Control API for real IEEE 802.11 Networks},
	author       = {Sankalp Prakash Pawar and Prashiddha Dhoj Thapa and Jonas Jelonek and Martin Le and Arne Kappen and Nick Hainke and Thomas Huehn and Julius Schulz-Zander and Henrike Wissing and Felix Fietkau},
	year         = 2024,
	booktitle    = {The 30th Annual International Conference on Mobile Computing and Networking (ACM MobiCom '24), November 18--22, 2024, Washington D.C., DC, USA},
	location     = {Washington D.C., DC, USA},
	publisher    = {ACM},
	address      = {New York, NY, USA},
	doi          = {10.1145/3636534.3697314},
	isbn         = {979-8-4007-0489-5/24/11}
}