NetJSON: data interchange format for networks

3rd May 2015 in Coding Tags: netjson, wireless-community

NetJSON is a data interchange format for encoding the basic building blocks of networking.

With NetJSON you can represent 4 different type of objects:

  • Device Configuration & Properties
  • Monitoring Data
  • Routes
  • Topology

Example: json NetworkGraph format

    {
        "type": "NetworkGraph",
        "protocol": "olsr",
        "version": "0.6.6",
        "revision": "5031a799fcbe17f61d57e387bc3806de",
        "metric": "etx",
        "router_id": "172.16.40.24",
        "nodes": [
            {
                "id": "172.16.40.24",
                "label": "node-A",
                "properties": {
                    "hostname": "node1.my.net"
                }
            },
            {
                "id": "172.16.40.60",
                "label": "node-B",
                "properties": {
                    "hostname": "node2.my.net"
                }
            }
        ],
        "links": [
            {
                "source": "172.16.40.24",
                "target": "172.16.40.60",
                "weight": 1.000,
                "properties": {
                    "lq": 1.000,
                    "nlq": 0.497
                }
            }
        ]
    }

Motivations

Developing software that deals with networks is harder than it should.

Developers have to take into account all the differences between vendors, operating systems, routing protocols, hardware and (when working with community networks) with the different approaches of each community.

Very often, each vendor develops an entire stack that works exclusively with its own hardware and software.

There exist many libraries and web apps for networking, but it is very hard to make them interoperable, that is, making them talk and understand one another with minimum effort.

Instead of creating an ecosystem, we have been creating silos that hardly talk to each other.

This is an attempt to invert this trend, following the successful example of the GeoJSON open standard.

By defining common data structures we can allow developers to focus on their goals instead of having to struggle with the differences of each vendor, firmware, routing protocol or community.

Moreover, we will lay the groundwork for an ecosystem to grow organically: once the standard JSON structures are defined and adopted it will be easier to write systems that work together, instead of creating silos.

Learn more

You can learn more about NetJSON at the dedicated github repository.

Retweet

Comments

Comments are closed.

Comments have been closed for this post.

Categories

Let's be social

Popular posts

Latest Comments

  1. I got very good results with this, thanks for sharing.

    By Yasir Atabani in How to speed up tests with Django and PostgreSQL

  2. Hi Amad, for any question regarding OpenWISP, use one of the support channels: http://openwisp.org/support.html

    By Federico Capoano in How to install OpenWISP

  3. Sir please guid , i have install the ansible-openwisp2 , now how to add the access points . What is the next procedure . Please help.

    By Ahmad in How to install OpenWISP

  4. Hi Ronak, for any question regarding OpenWISP, use one of the support channels: http://openwisp.org/support.html

    By Federico Capoano in netjsonconfig: convert NetJSON to OpenWRT UCI

  5. Hi, I have installed openwisp controller using ansible playbook. Now, i am adding the configurations automatically using OPENWRT devices in openwisp file by specifying shared_key so can you suggest me if I want to set limit to add configuration how can i do it?

    By Ronak in netjsonconfig: convert NetJSON to OpenWRT UCI

Popular Tags

battlemesh censorship creativity criptography django event fosdem google-summer-of-code ibiza inspiration javascript jquery linux nemesisdesign netjson ninux nodeshot open-source openwisp openwrt performance photo programming python security staticgenerator talk upload wifi wireless-community