Background

gmaps is a demonstration frontend for perfSONAR. This page describes the modules and architecture for gmaps.

Access

Code is stored at the IEPM SVN repositry at

file:///afs/slac.stanford.edu/g/scs/net/netmon/repo/svn/perfSONAR/gmaps

Overview

The file structure of the code is as such:

|-- cgi
|   `-- gmaps.pl
|-- lib
|   |-- gmaps
|   |   |-- KML.pm
|   |   |-- LookupService.pm
|   |   |-- MA
|   |   |   `-- RRDMA.pm
|   |   |-- Topology
|   |   |   |-- DNSLoc.pm
|   |   |   `-- GeoIP.pm
|   |   |-- Topology.pm
|   |   |-- Transport.pm
|   |   |-- gmap.pm
|   |   `-- templates
|   |       |-- gmaps-info_html.tt2
|   |       |-- gmaps-utilization_html.tt2
|   |       |-- gmaps_enterNodes_html.tt2
|   |       |-- gmaps_html-inline.tt2
|   |       |-- gmaps_html.tt2
|   |       |-- gmaps_xml-full.tt2
|   |       |-- gmaps_xml.tt2
|   |       |-- kml_placemarks.tt2
|   |       |-- ls_all-router-ip-addresses.tt2
|   |       |-- nodata.png
|   |       |-- noma.png
|   |       |-- out.png
|   |       |-- rrdma_xml.tt2
|   |       |-- spinner.gif
|   |       `-- throbber.gif
|   `-- utils
|       `-- rrd.pm
`-- t
    |-- dns-loc_test.pl
    |-- dns_test.pl
    |-- geoip_test.pl
    |-- gmaps-map_test.pl
    |-- graphUtilization-ip_test.pl
    |-- http_server.pl
    |-- kml_create.pl
    |-- lookupService_test.pl
    `-- rrdma_test.pl

Directory

Description

cgi

cgi scripts to include for deployment, also contains all the relevant path declarations

lib

perl library files

t

unit test scripts

Module Descriptions

File

Module

Description

gmap.pm

gmaps::gmap

container for cgi access

Topology.pm

gmaps::Topology

helper functions for ip descovery

Topology/GeoIP.pm

gmaps::Topology::GeoIP

Wrapper around the geoiptools api for long lat discover of ip nodes

Topology/DNSLoc.pm

gmaps::Topology::DNSLoc

Wrapper around the host -t LOC command line to discovery locatoin records from dns

Transport.pm

gmaps::Transport

Uses the perfSONAR-PS libraries to send and receive and parse XML documents

LookupService.pm

gmaps::LookupService

Provides access and communication to the lookup service

MA/RRDMA.pm

gmaps::MA::RRDMA

provides communications accesss to the RRD MAs

High level overview

The code relies heavily on the Template library to easily and quickly create valid XML for query generation to the relevant perfSONAr service.

gmaps::gmap provides access to the main functions and is a CGI::Application. The main methods are mapFromXML which will draw a html google map, and then do a fetch for the XML file of some nodes. The xml is generatated from the function createXML which determines the geographical lat/long location of the parsed list of nodes and then spits out a simple xml of the lat longs of the nodes.

The logic of the web presentation is stored in gmaps_html.tt2 which is a template containing all the html and javascript code to be returned to the user through the mapFromXML call.

Graphing of the utilization of the requested node is conducted on the server end. It is done through gmaps::gmap::graphUtilization which calls gmaps::MA::RRDMA to fetch the relevant info from the relevant MA. The response from teh MA is parsed using XPath and the values are stored into a temporary RRD file which is then graphed as a PNG and spat back to the client.

Lookup of the relevant MA from the node address is conducted through a regexp of the dns name of the node. This is conducted in gmaps::LookupService currently as a static datastructure of regexp match to MA info. the main function to do this is gmaps::LookupService::getMA. future versions shoudl be able to query a multi-lookup service order to determine if the ip address is currently being monitored or not.

To-do

Frontend

  • Add map stretching on browser window resize (current simple implementation is incorporated by doesn't quiet work as expected)
  • Add dynamic list creation of nodes (simple button allows additions of nodes to the list ot be mapped). This should use the fact that the server can return the long lats for single ips or even groups.
  • Add dynamic removal of nodes from teh list
  • make better arrows, with arrows for both in and out; may need slight curvature of the arrows to allow visibility
  • colouring of the arrows to represent the utilisation percentage
  • integration to allow new GInfoWindow tabs for other metrics; such as OWAMP and BWCTL etc.

Backend

  • implement MA fetching and processing for OWAMP and BWCTL
  • implement MA fetching and processing of Traceroutes and pings
  • allow flexible definition of time range of info to be fetched.
  • No labels