Project Slot 10 - Improving Afterglow

Student: Tanya Guza (UA)
Primary mentor: Raffael Marty (US)
Backup mentor: Ralph Logan (US), Ryan Smith (US)

Google Melange: https://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/tanyaguza/1

Project Overview:
Currently AfterGlow Cloud uses Graphviz as rendering backend for graphs. While we can adjust some settings to modify the output but it requires another submission of input file. Idea of the project is to make AfterGlow Cloud tool interactive and simplify process of resulting graph analysis by allowing:

  • selecting nodes
  • grouping and collapsing nodes
  • computing node and link size based on different criteria
  • allow dynamically change rendering algorithms
  • using helios.js to allow perform graph operations

According to discussion in the mailing list there will be four main steps:

  • Add support of JSON output to afterglow.pl. Output JSON will be suitable to be consumed by helios.js library.
  • Implement a “bridge” between helios.js and D3.js. Helios.js supports JSON as input data and can produce JSON description of graph as a result of it's operations. D3.js can consume JSON as input data. So the main problem here is create conversion between helios.js and D3.js JSON objects.
  • Add ability to interact with primitives generated by D3.js. It will allow selecting nodes and connections.
  • Update existing UI according to introduced changes.

Project plan

  • June 17 - June 23 – Adding helios.js to application and make it consume afterglow.pl output.
  • June 24 – June 30 – Implementation of data exchange between afterglow.pl and D3.js through helios.js. It will allow to visualize the results of all further development and see if we are moving into the right direction. Further GraphSON generation improvements.
  • July 1 – July 7 – “Stabilization period”, fixing bugs and improvements to developed features. Adding attributes to afterglow GraphSON output
  • July 8 – July 25 – Implementation of different metric calculation via helios.js and passing them to D3.js.
  • July 15 – July 21 – Implementation of different graph rendering layouts
  • July 22 – August 4 – Stabilization period, fixing bugs and improvements to developed features. Midterm evaluations!
  • August 5 – August 11 – Implementation of selecting nodes and connections, adding tooltips with information about nodes.
  • August 12 – August 18 – Implementation of node collapsing, clustering, zoom in/out.
  • August 19 – August 26 – Changing UI according to new changes.
  • August 26 – September 1 – Stabilization period, fixing bugs and improvements to developed features.
  • September 2 – September 8 – Implementation of additional interactivity features that are not included in previous steps. Working on hardware acceleration.
  • September 9 – September 23 – Stabilization period, final preparations, writing documentation.

Project Activities:
Week 1 development tasks

  • June 24th - July 1st:
    Project Activities:
    Week 2 development tasks

    Project Source Code Repository:
    https://github.com/honeynet

    https://github.com/tanya-guza/afterglow-cloud

    https://github.com/tanya-guza/afterglow

    Student Weekly Blog: http://www.honeynet.org/blog

    Project Useful Links:
    Papers:
    [1] White, D. R., & Borgatti, S. P. (1994 October) Betweenness centrality measures for directed graphs. 16 (4), 335-346.
    [2] Zemljič, B., & Hlebec, V. (2005 January) Reliability of measures of centrality and prominence. 27 (1), 73-88.

    Libraries, docs, etc: