Skip to content

edgar-costa/FibbingNode

 
 

Repository files navigation

FibbingNode

This repository contains the code to run a fibbing controller that is able to control unmodified OSPF router to setup arbitrary paths in the network.

The controller is currently compatible only with python 2.

The controller code is split into 3 main parts:

  1. The Quagga directory, that contains a modified version of quagga that is able to craft and flood arbitrary Type-5 LSA which are used to inject the lies in the network.
  2. The Southbound controller, the fibbingnode python module, that will control the quagga ospfd instances and trigger the injection/removal of these LSAs, as well as infer the current network topology and decide whether the current instance of the controller is the 'master' one in case multiple controllers are present in the network. A critical file to tune is the config file, whose defaults are specified in fibbingnode/res/default.cfg.It can then be run via
python2 -m fibbingnode
  1. The Northbound controller, fibbingnode/shapeshifter which implements the algorithms to compute the augmented topology and then communicates to the southern part through a json insterface.

Basic installation

git clone --recursive https://github.com/Fibbing/FibbingNode.git
./install.sh

This will install the quagga distribution under /opt/fibbing/ and the fibbingnode python module

Demo

Sample labs are available in another repository

Virtual-Machine

Script to build a Virtual Box VM able to run the controller, make it interact with physical routers, or run mininet-based experiments is available in another repository

Documentation

There is an ongoing work to document the inner-workings of the controller, its architecture, ... while not yet public, feel free to contact @oliviertilmans if you have questions.

About

The controller code

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.5%
  • Other 1.5%