[ninux-dev] Fwd: [Interop-dev] netdiff 0.1 released

Nemesis nemesis at ninux.org
Sat May 2 23:17:45 CEST 2015


Rilasciata netdiff 0.1

Provatela! Ci vogliono 5-10 min.

https://github.com/ninuxorg/netdiff


-------- Forwarded Message --------
Subject: 	[Interop-dev] netdiff 0.1 released
Date: 	Sat, 02 May 2015 21:40:14 +0200
From: 	Nemesis <nemesis at ninux.org>
To: 	interop-dev at lists.funkfeuer.at



Hey,

we just released this very simple experimental python library that we
called "netdiff".

What can you do with it?

Mainly figure out changes to the network topology.
Currently only olsr 0.6.x and batman-advanced are implemented, but
itshould bequite easy to implement other routing protocols.

from netdiff import OlsrParser

from netdiff import diff

from time import sleep

current = OlsrParser('http://127.0.0.1:2006')

# wait 2 minutes
time.sleep(120)

latest = OlsrParser('http://127.0.0.1:2006')

diff(current, latest)

will return something like:

{

    "removed": [

        ["10.150.0.7", "10.150.0.9"]

    ], 

    "added": [

        ["10.150.0.5", "10.150.0.4"]

    ]

}


Another cool thing is to output a NetworkGraph json object, eg:

from netdiff import BatmanParser

from netdiff import diff

batman = BatmanParser('./test/alfred-output.json')

batman.json()


will output:

{

    "type": "NetworkGraph", 

    "protocol": "batman-adv", 

    "version": "2014.3.0", 

    "revision": null, 

    "metric": "TQ", 

    "nodes": [

        {

            "id": "a0:f3:c1:ac:6c:44"

        }, 

        {

            "id": "a0:f3:c1:96:94:06"

        }, 

        {

            "id": "10:fe:ed:37:3a:39"

        }, 

        {

            "id": "00:05:1c:06:35:8e"

        }, 

        {

            "id": "90:f6:52:f2:8c:2c"

        }

    ], 

    "links": [

        {

            "source": "a0:f3:c1:ac:6c:44", 

            "target": "10:fe:ed:37:3a:39", 

            "weight": "1.000"

        }, 

        {

            "source": "a0:f3:c1:96:94:06", 

            "target": "90:f6:52:f2:8c:2c", 

            "weight": "1.000"

        }, 

        {

            "source": "10:fe:ed:37:3a:39", 

            "target": "90:f6:52:f2:8c:2c", 

            "weight": "1.000"

        }, 

        {

            "source": "00:05:1c:06:35:8e", 

            "target": "90:f6:52:f2:8c:2c", 

            "weight": "1.000"

        }

    ]

}


Why we separated this logic into a library?

  * not tied to any particular framework or node-database, it's pure python
  * easy to add more routing protocols, newcomers can work on it more
    easily compared to having to delve into a node-database
  * it's possible to add some nice features that we'll implement in the
    near future thanks to the networkx library:
      o calculating betweenness centrality
      o merge topologies of different nodes of an island into one
        (union), so that if the network gets split up, it is possible to
        draw a complete topology with just the missing link, and not
        just half topology

So.. there's still some hard work to do to integrate this into our
node-db but I hope this experiment succeeds!

We are open for suggestions and improvements.

Federico



_______________________________________________
Interop-dev mailing list
Interop-dev at lists.funkfeuer.at
https://lists.funkfeuer.at/mailman/listinfo/interop-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ml.ninux.org/pipermail/ninux-dev/attachments/20150502/268cd83f/attachment-0001.html>
-------------- next part --------------
_______________________________________________
Interop-dev mailing list
Interop-dev at lists.funkfeuer.at
https://lists.funkfeuer.at/mailman/listinfo/interop-dev



More information about the ninux-dev mailing list