Implementations
Configuration Management
OpenWISP Controller
OpenWISP Controller is an open-source wifi controller and configuration manager for embedded devices and routers running OpenWrt.
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
netjsongraph.js is a
javascript library that can be used to generate visualizations for NetJSON
NetworkGraph
objects.
MeshNetSimulator
MeshNetSimulator is a simulator for sketching mesh routing algorithms. Supported is the import and export of mesh network topologies via the NetJSON format. The MeshNetSimulator also serves as an editor to change loaded networks and create new network structures.
BGP aspath-graph
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
OpenWISP Network Topology
OpenWISP Network Topology is the module of the OpenWISP designed to collect, store and visualize network topology data.
Prominent features of this module are:
Show information about links and nodes, allowing to add custom properties to nodes and links.
Allows collecting information by receiving data via an HTTP API or by fetching the data from a URL.
It allows to receive information from multiple nodes to avoid single points of failures and to know if the network was split in multiple parts.
It allows to visualize previous states of the network: from days to weeks or even years.
Detects and shows links that are failing.
Show the last time a link changed its status (eg: down since 3 days)
It can be extended to implement custom network topology monitoring solutions eg: it can be programmed to perform actions when the status of the network changes
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
OpenWISP Monitoring
OpenWISP Monitoring is the module of the OpenWISP designed to collect, store and visualize network topology data.
Prominent features of this module are:
Collects and displays device status information like uptime, RAM status, CPU load averages, Interface properties and addresses, WiFi interface status and associated clients, Neighbors information, DHCP Leases, Disk/Flash status
Collection of monitoring information in a timeseries database.
Monitoring charts for uptime, packet loss, round trip time (latency), associated wifi clients, interface traffic, RAM usage, CPU load, flash/disk usage
Charts can be viewed at resolutions of 1 day, 3 days, a week, a month and a year
Configurable alerts
CSV Export of monitoring data
Extensible active check system: it’s possible to write additional checks that are run periodically using python classes
API to retrieve the chart metrics and status information of each device. You can read more about it in OpenWISP Monitoring docs.
OpenWrt netjson-monitoring Package
The OpenWrt OpenWISP Monitoring package
provides an OpenWrt package named netjson-monitoring
which provides a
command line utility which returns NetJSON DeviceMonitoring information.
E.g.:
netjson-monitoring --dump "*"
netengine-utils
netengine-utils:
utilities for parsing the output from ifconfig
, iwconfig
.