[Interop-dev] netdiff 0.1 released

Nemesis (spam-protected)
Sat May 2 23:12:48 CEST 2015


Sorry, forgot to link the repo:
https://github.com/ninuxorg/netdiff


On 05/02/2015 09:40 PM, Nemesis wrote:
> 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
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.funkfeuer.at/pipermail/interop-dev/attachments/20150502/e0077354/attachment.html>


More information about the Interop-dev mailing list