Pyxida: An Open Source Network Coordinate Library and Application
We have created an open source library and application that incorporates the ideas from our research on network coordinates. It is called Pyxida (pronounced "peeks-ee-da" which means "compass" in Greek). In the short term, the Pyxida project will provide the following pieces of functionality: (a) estimate the latencies between hosts in a distributed system with stable and accurate network coordinates, (b) route to the host whose coordinate is nearest to a point in the abstract coordinate space (useful for distributed gaming applications), and (c) provide a stand-alone application that constructs a network coordinate system.
We are open to new developers; if you are interested, please send us an email.
Pyxida can be used in three ways: as a "standalone" application, as a library that you build into your distributed application, and as a service you query. The standalone application and the library are independent software artifacts; the service is an instance of the library running on PlanetLab.
Our reasoning behind creating two artifacts instead of just one is that some users want to incorporate network coordinates directly into their application: they want to control the network, when messages are sent, the wire format, and have more control in general. These people will use the library. Other people want a distinct network measurement substrate, a tool that performs measurements of its own accord and simply provides quick estimates of network latencies. These people will use the standalone application. In addition, because the standalone application is one of the simplest uses of the library, its code provides library users with a starting point to help them incorporate the library into their application.
PlanetLab ServicePyxida users who just want to query sets of network coordinates from an existing system can access our long-running PlanetLab Service using a web or XML/RPC interface.
Web InterfaceYou can obtain the current coordinate of a PlanetLab nodes by pointing your browser to the web interface port, e.g. http://planetlab-1.imperial.ac.uk:55501/.
XML/RPC InterfaceWhile you can build your own XML/RPC tool, we provide one in perl for you to download and use. Note that this tool require the Frontier::Client library to do its network communication; you can install this library using CPAN.
The query tool can: (a) ask a node for its current coordinate,
(b) ask a node for another node's coordinate, (c) ask for the
estimated latency between two nodes. You can find specifics
on running the tool by running it with no arguments
Example of querying a node for its own coordinate:
Example of estimating inter-node latency:
Note that we will be changing the path used to access the service relatively soon.
You can find a directory with videos that show the dynamic behaviour of network coordinates on PlanetLab.
You can find a directory with coordinates over time that show which nodes were running and what their coordinates were, sliced into ten-minute intervals. Data taken from PlanetLab.
Logging levels for particular classes and subtrees can be set
in the config/log.config file.
The basic format of the logs is:
Each network coordinate summarizes its behavior with lines of
The format of these update lines is:
Typically the place to start is
Known bugs with 0.1.2
Known bugs with 0.1.1