Implementations

Configuration Management

OpenWISP 2 controller

OpenWISP 2 is a promising open-source wifi controller and configuration manager for embedded devices and routers running OpenWRT / LEDE.

A demonstration of its usage can be seen above.

django-netjsonconfig

interface2, wireless interface, adhoc, ssid, bssid

django-netjsonconfig is configuration manager for embedded devices, implemented as a reusable django-app which can be used as a standalone web app or integrated in a larger project using the popular django web framework.

The app makes use of the netjsonconfig library behind the scenes and allows administrators to use its features through an easy to use web interface.

The NetJSON DeviceConfiguration objects can also be edited in directly using raw JSON by entering “advanced mode”.

netjsonconfig

netjsonconfig is a network configuration management library that implements the DeviceConfiguration NetJSON type.

The library has support for OpenWRT, OpenWISP Firmware and it ships interesting features like configuration templates, variables and arbitrary file inclusion.

Routing Deamons

OLSRd2 netjsoninfo plugin

The netjsoninfo plugin for the OLSRd2 routing daemon (also known as OLSR.org Network Framework) enables OLSRd2 to produce NetJSON output.

This plugin implements the following NetJSON types:

  • NetworkRoutes
  • NetworkGraph
  • NetworkCollection

OLSRd1 netjson plugin

As of 15th of April 2016, a netjson plugin is available in the master branch of the git repository of the OLSRd1 routing daemon.

This plugin implements the following NetJSON types:

  • NetworkRoutes
  • NetworkGraph
  • NetworkCollection

PopRouting (Prince)

Prince is an open source implementation of the PopRouting Algorithm. It has been developed as a Google Summer of Code Project in collaboration with Freifunk and the University of Trento.

It fetches topology data in NetworkGraph format from the routing deamon, calculates the betweenness centrality for every node of the network and pushes back the optimized timer’s value. Currently (as of December 2016) it only supports OLSRd2 (aka OONF).

Network Topology Visualizers

netjsongraph.js

https://raw.githubusercontent.com/netjson/netjsongraph.js/master/docs/netjsongraph-default.png

netjsongraph.js is a javascript library based on the popular d3.js visualization framework which can be used to visualize NetJSON NetworkGraph objects.

BGP aspath-graph

link up, link down

aspath-graph is a python library that converts BGP ASPATHs and converts them to NetJSON NetworkGraph so they can be viewed with netjsongraph.js.

Network Topology Monitoring

django-netjsongraph

link up, link down

django-netjsongraph is a reusable django app for collecting and visualizing network topology. The app is able to store network topology, detect and show links that are failing.

It can be used as a stand alone web app or integrated in larger django projects.

This implementation has an HTTP API that is able to produce NetworkGraph and NetworkCollection objects, as well as consuming and storing incoming NetworkGraph objects sent in the payload of a POST HTTP request.

This web app uses two other NetJSON implementations behind the scenes: netjsongraph.js and netdiff.

netdiff

netdiff is a simple python library that acts as an abstraction layer for parsing different network topology formats of open source dynamic routing protocols and is also able to detect changes topology changes (added links, removed links, change in metrics).

It is able to produce and consume the NetworkGraph NetJSON type.

Device Monitoring

netengine-utils

netengine-utils: utilities for parsing the output from ifconfig, iwconfig.