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

Leave your comment

Categories

Let's be social

Popular posts

Latest Comments

  1. Hi Julio! I missed your comment a few years ago but I'm glad you are working with OpenWISP, I'll try to reach you in private :-)

    By Federico Capoano in A Turning Point in my Life, Community Networks and OpenWISP

  2. Great news Aymará! Very happy to know this post has inspired you to experiment :-)

    By Federico Capoano in First DjangoGirls Rome wrap-up & afterthoughts

  3. Hi!! I'm a Django Girls coach too. Here, in Argentina, made just what you suggested, splited the workshop in two days. The experiment went just great! Most of the girls achieved to publish the blog from ground 0. It feels great to be helpfull ...

    By Aymará in First DjangoGirls Rome wrap-up & afterthoughts

  4. Send any question to the interop-dev mailing list or open an issue on github.

    By Federico in Network Topology Visualizer: django-netjsongraph

  5. I have a question about Network Topology Collector, can you brief me pls?

    By Nasrin Akter in Network Topology Visualizer: django-netjsongraph

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