Implementations =============== .. contents:: **Table of Contents**: :backlinks: none :depth: 3 .. raw:: html

Configuration Management ------------------------ OpenWISP Controller ^^^^^^^^^^^^^^^^^^^ .. image:: https://raw.githubusercontent.com/openwisp/openwisp-controller/docs/docs/controller_demo.gif :target: https://github.com/openwisp/openwisp-controller/tree/docs/docs/controller_demo.gif :alt: 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 ^^^^^^^^^^^^^^^ .. image:: https://raw.githubusercontent.com/netjson/netjsongraph.js/master/docs/netjsongraph-default.png :target: https://github.com/netjson/netjsongraph.js `netjsongraph.js `_ is a javascript library based on the popular d3.js visualization framework which can be used to visualize NetJSON ``NetworkGraph`` objects. MeshNetSimulator ^^^^^^^^^^^^^^^^ .. image:: https://raw.githubusercontent.com/mwarning/MeshnetSimulator/master/docs/screenshot.png :target: https://github.com/mwarning/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 ^^^^^^^^^^^^^^^^ .. image:: https://raw.githubusercontent.com/coxley/aspath_graph/master/path.png :alt: link up, link down :target: https://github.com/coxley/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 ^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: https://raw.githubusercontent.com/openwisp/openwisp-network-topology/docs/docs/demo_network_topology.gif :alt: OpenWISP Network Topology :target: https://github.com/openwisp/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 ^^^^^^^^^^^^^^^^^^^ .. image:: https://github.com/openwisp/openwisp-monitoring/raw/docs/docs/monitoring-demo.gif :align: center :alt: OpenWISP Monitoring :target: https://github.com/openwisp/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 - Possibility to configure additional `Metrics `_ and `Charts `_ - 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 "*" .. image:: https://raw.githubusercontent.com/netjson/netjson/master/docs/source/_static/lua-monitoring.png :alt: Device Monitoring data in NetJSON format :target: https://github.com/openwisp/openwrt-openwisp-monitoring netengine-utils ^^^^^^^^^^^^^^^ `netengine-utils `_: utilities for parsing the output from ``ifconfig``, ``iwconfig``.