It describes the MulticastBeacon's design and other coding related issues. Basically, there are three parts, each one is in a different directory. The web interface is implemented with the server. In that class, it keeps a Hashtable to store the performance data from each sender. Beacon starts by getting the environment variables first, e.g. java version, os version, etc.
Beacon is a multi-treaded program.
Basically, when there is a probe packet comes in, the Beacon will look at the sender's name and match it with its knowledge. If it is a new sender, Beacon knows that there is a new beacon joining the session. If it is an old sender, Beacon will update the sender's performance metrics. Each packet carries a timestamp and sequence number. The one-way delay is obtained by the difference of packet sending time and receiving time.