This work was conducted to create a means of simulating and visualizing the behavior of a self-stabilizing distributed clock synchronization protocol developed at LaRC (Langley Research Center). The protocol has many applications including projects that directly pertain to work being done at NASA. Time synchronization is a critical component of many projects, from computer networking and distributed systems, to autonomous flight. This easy-to-understand interface both displays accurate information concerning the protocol, and conveys its utility.
The simulator was created using the Java programming language with the aid of Java Swing to create the graphical user interface, and JChart2D to display a dynamic line chart during simulation. Since the protocol itself requires certain variables to be calculated based on the properties of an individual graph, the project was not simply a translation of the protocol’s inner functionality into workable Java code.
Many of these variables defined in the protocol are derived directly from questions answered by modern Graph Theory. For example, the width (W) of the graph may be found by solving the All-Pairs Shortest Path problem, and Loop Length (L) is solved by finding all cycles within the graph. The simulator required many different algorithms to be implemented — some well-defined existing algorithms, and others derived for the situation at hand. The solutions to these problems, and the way they are implemented, must be carefully weighed as they, from a time complexity perspective, can be very costly operations.
The goal of the project was to develop a working, aesthetically pleasing program that allows a user to define a graph using a simple interface, and explore the behavior of the protocol with respect to this graph.