The GEXF file format contains a hierarchical network topology which is very distinct from the others.
In the GEXF file we have 3 main entities involved.
1. The Antenna : The Antenna is where wireless communication between nodes are established. Yet, it's not very distinctively clear on how to determine using queries if a node is an antenna but, the Antenna can be found as the source of a wired edge and also the source or destination of a wireless edge.
2. The Router : The router is a node that has many IPs ( to be more distinctive, the node name is not an IP adress), the node name of a router is the parent ID of the interfaces.
3. The Interfaces : The Interfaces are all nodes that have a parent ID (router).
The edge connections,
All Interfaces are connected to a particular antenna using a wired link while, for wireless communication, the Antenna IP is used to link up to other neighboring nodes.
A diagram of the entities involved.
The JSON structure for node representation in Libremap is :
To represent a node, I plan to do the following :
{ "_id": "TheRouterID(PID)", "type": "router", "hostname": "hostname of router", "lat": -31.805412, "lon": -64.424677, "aliases": [ { All the Interfaces IPs will be here { Also the Antenna IPs } ], "links": [ { Wired links(Connect all local IPs to Antenna) }, { Wireless links (Connect the Antenna to other nodes) } ], "site": "info", "community": "info", "attributes": { "firmware": { } } }
These attributes will be retrieved from the database and used to built the json data structure in php that will yield such an output above.