Go to the top of the NLANR/DAST web site

AAD | Advisor | Autobuf v2.0 | Multicast Beacon | BIMA | Iperf | NextINet | Tools | Web100 | All Projects


Search this site with Google

About:
- DAST
- NLANR
- FAQ
- Staff
- Contact DAST

End User Tools and Projects
- NextINet
- Advanced Applications
Database

- DAST Projects/Tools
- Network Performance
and Measurement Tools

End User Support
- Getting Started Guide
- Networking Glossary
- Other Projects/Organizations
- Funding Opportunities

Documents
- Guides/Tutorials
- Papers/Articles
- Presentations
- Reference Books

WebCT Courses
- Tuning Applications

Events
- NLANR/DAST Training
- NLANR Packets Calendar
- Idesk Travel Schedule

News
- Press Releases
- Alliance Data Link
- I2 Newswire Archives

Reports & Statistics
- Monthly Updates and QSRs
- Abilene "Weather Map"
- Web Server Stats

Multicast Beacon v1.3

Current version: 1.3-0 (August 26, 2005)

Hi, folks -- This is to let you know that the NLANR/DAST Beacon project reached end-of-life on its development cycle December 31, 2005.

This means that the Beacon project has moved from being a project under active development by the NLANR/DAST staff to being a user-supported project via user-contributed code and patches.

We will continue to run the v1.3 Beacon Central Server at:

http://beacon.dast.nlanr.net

for the foreseeable future, and we will also be shepherding user-contributed code and patches on the main DAST website for the foreseeable future, too, so please continue to contribute to the project as you can! The final Beacon release is also available via SourceForge, at http://sourceforge.net/projects/multicastbeacon.

For those of you interested in contributing code, a list of features we've seen the need for or have already had requested by the user community (that's you guys) is up at:

http://dast.nlanr.net/projects/Beacon/#future

Thanks for all your help and support, and I hope the Beacon continues to be a useful and helpful diagnostic tool for you!

Mitch

December 2005

Mitch Kutzko
Tony Rimovsky
John Estabrook
Jon Dugan

Multicast Beacon v1.3
What is the Multicast Beacon?
Multicast Performance Measurements
Multicast Beacon FAQ
Beacon on Sourceforge
Requirements
What's New
Output Files
Port/Firewall Info
Bandwidth Usage

Command Line / Config Options

Downloads
Installation Instructions
Known Issues

Copyright
Future Directions
Feedback/Listserv
User Contributions
Acknowledgements
 

What is the Multicast Beacon?

The NLANR/DAST Multicast Beacon is a multicast diagnostic tool written in Perl which uses the RTP protocol (RFC3550) to provide useful statistics and diagnostic information about a given multicast group's connectivity characteristics.

[ Go to the 1.3 Beacon Central Server ]

Multicast is a way of distributing IP packets to a set of machines which have expressed an interest in receiving them. It is a one-to-many distribution model suitable for video conferencing and other forms of data sharing over the network.

Teamed up with the Access Grid, the Multicast Beacon provides measurement data for the current multicast traffic in a group. The Access Grid is a project led by ANL to implement large-scale distributed collaboration over the network. It relies on multicast for distributing audio, video, and other data across the network.

The Multicast Beacon can also be used as a general-purpose multicast measurement tool as well.

Multicast Performance Measurements

Multicast performance measurement is usually straight-forward, as illustrated in RFC3550 (Real-time Transport Protocol). A set of measurement hosts send small probe packets to a particular multicast session, and also receive packets from the session in order to determine session transfer (network) performance. The NLANR/DAST Beacon uses RTP as the underlying protocol for generating statistics.

Because of the distributed nature of the measurement, the Multicast Beacon is designed in such a way that clients can start or stop at any time without affecting other clients. Communication between client and server are handled in RTP via UDP.

Required Perl Modules

This version currently requires Perl 5.6 or better, but does *not* require you to be root on the box you wish to install on. However, you do need to make and install Perl Module "Net::Multicast::Beacon", so if you don't have root, you'll have the additional step of needing to tell Perl where you installed the module. (All of this is detailed in the README.) You will also need to install Time::HiRes if your Perl install doesn't already have it. (Most do, but darwin on PowerPCs doesn't seem to.)

What's New

1.3-0 (8/26/05)

  • The send and receive portions of the Beacon have been forked into two different sections of the code, which fixes the TCP connection problems the Central Beacon Server would see.
  • The "timeout delete" feature to remove stale or expired Beacon Clients from the Central Server Display has been fixed.
1.1-0 (9/7/04)

  • Rewrite the send_tcp_report and receive_tcp_report code to fix TCP connection overflow bug.
  • Incorporate contributed code from Greg Wickham to tie STDOUT to SysLog facility. With "SYSLOG = 1" set in beacon.conf, STDOUT is written to SysLog instead of the screen. (Ie, on Linux, look in /var/log/messages for output.) Log messages appear with an ident of 'beacon', include the pid, and at facility daemon.

    Note: With this setting enabled, you won't receive any output via STDOUT -- It will all go SysLog. So you might want to test things with this setting off, then enable it when you have things set up the way you want them.

  • Rework some of the HTML generation code to clean the display up a bit.
1.0-0 (8/20/04)

  • Central Server changed from becaon.ncsa.uiuc.edu to beacon.dast.nlanr.net.
  • Blind Beacons now marked with white writing on blue background on Beacon Info page.
0.9.58-6 (8/18/04)

  • Added "Blind" Beacon filter for HTML output. A "Blind" Beacon is one which is reporting normally to the Central Beacon Server via TCP, but which only sees itself, and is only seen *by* itself. These are filtered out of the main HTML matrix and listed below the main table, under the heading "Blind Beacons".
  • Added a hyperlink to the Beacon FAQ for IP addresses which resolve to "Localhost".
0.9.58-5 (8/11/04)

  • Added ability to specify which interface the Beacon should use for machines with multiple NICs.
  • Added ability to specify automatic backgrounding of the Beacon process at startup.
  • Added ability to specify CONTACTNAME/INFO/LOCATION on command line as well as in beacon.conf.
  • Fixed bug causing the Previous 600-second history file to not be properly updated.
  • Added link on HTML output pages which points to the DAST web page listing Code Contributions and Patches.
0.9.58-4 (7/20/04)

  • Change to method for getting hostname of local Beacon. Using both Sys::Hostname and Net::Domain together now to make it more robust.
  • Addition of OUTPUTDIR spec for beacon.conf and command line interface -- Allows you to specify where the output files go. (William F. Maton Sotomayor)
  • Various bug fixes
0.9.58-3

  • Various bug fixes
0.9.58-2

  • Ability to change UID to non-privileged user
  • Link on Beacon Info page to FAQ for those running their Beacon as root
  • Use of Net::Domain for FQDN, instead of Sys::Hostname
(Thanks to John Kristoff of Northwestern for both of these.)
0.9.58-1

  • Burst testing -- During a Burst test, the Beacon sends 100 consecutive RTP packets out as fast as it can. This test is used to diagnose a Cisco IOS overflow condition in some routers.
  • Silence testing -- During a Silence test, the Beacon stops sending RTP/RTCP data to the group for three minutes, as a means of testing the mutlicast leave/join mechanism as the connection is torn down and then rebuilt after it times out.

Output Files

This version produces the following files as the main output:
central_loss.html
local_loss.html
fract_lost.html
central_rtt.html
local_rtt.html
central_jitter.html
local_jitter.html
beacon_info.html
history.txt
prevhistory.txt

The "central_loss.html" file is the one you are mostly likely interested in.

central_loss.html

Central Loss is the reported loss between two Beacons in the current multicast group, sent via TCP unicast back to the Central Server for the group. This allows for the reporting of Beacons that might not otherwise be able to see each other via UDP multicast.

local_loss.html

Local Loss is the loss report from this Beacon locally, without relaying reports back to the Central Server. This is only what this one particular Beacon sees by itself.

fract_loss.html

Fract Lost is the local instantaneous view of RTP Fract_Lost values. If you know what the RTP Quality Matrix software (RQM) is, these values are the same as the values RQM utility generates, although displayed in the opposite orientation from RQM.

central_rtt.html

There is a known bug with RTT right now which we are working on.
Central RTT is the reported Round Trip Time between two Beacons in the current multicast group, sent via TCP unicast back to the Central Server for the group. This allows for the reporting of Beacons that might not otherwise be able to see each other via UDP multicast.

local_rtt.html

There is a known bug with RTT right now which we are working on.
Local RTT is the RTT report from this Beacon locally, without relaying reports back to the Central Server. This is only what this one particular Beacon sees by itself.

central_jitter.html

Central Jitter is the reported Jitter between two Beacons in the current multicast group, sent via TCP unicast back to the Central Server for the group. This allows for the reporting of Beacons that might not otherwise be able to see each other via UDP multicast.

local_jitter.html

Local Jitter is statistical variation in delay, measured in milliseconds, and represents short-term network congestion.

beacon_info.html

Beacon Info is information about each Beacon running in the matrix. User, OS, Uptime, Last Heard From Time, Contact Information, etc., sent back to the Central Server via TCP unicast.

history.txt

Flat-text, CSV (comma separated values) output of the Beacon stats, kept for 600 seconds by default.

prevhistory.txt

The previous 600 seconds of Beacon stats. history.txt is moved to prevhistory.txt every 600 seconds, and the previous prevhistory.txt data is lost at that point.

Port/Firewall Info

If you're running a firewall locally, you'll want to open ports 10002 and 10003 to UDP and port 10004 to TCP. 10002 is used for RTP traffic, 10003 is used for RTCP traffic, and 10004 is used for TCP unicast reporting of statistics back to the Central Server.

Bandwidth Usage

The current Beacon generates about 4KBs/Beacon in the current group.

There are three flavors of traffic that the current Beacon generates:

  • RTP
    • UDP multicast traffic
    • Port 10002
    • Probe packets
    • ~64 bytes/second/Beacon
  • RTCP
    • UDP multicast traffic
    • Port 10003
    • SR and RR reports
    • ~800 bytes/4-5 seconds/Beacon
  • TCP
    • TCP unicast traffic
    • Port 10004
    • Central Beacon reports
    • ~3000 bytes/minute/Beacon

Command Line / Config Options

Command Line Options/Examples:
"./beacon"
        Starts Beacon using only settings from beacon.conf.
"./beacon -o /home/beacon/outputfiles"
        Specifies the directory to write output HTML and txt files to.
        Don't specify a trailing slash.
"./beacon --outputdir /home/beacon/outputfiles"
        Same as previous.
"./beacon -n"    or    "./beacon --noshutdownmsg"
        Does NOT write a shutdown message to HTML files when Beacon is shutdown.
"./beacon -c beacon.ncsa.uiuc.edu"
        Specifies the (optional) Central Server to send TCP reports back to.
"./beacon --centralservername beacon.ncsa.uiuc.edu"
        Same as previous.
"./beacon -i"    or    "./beacon --showip"
        Show Beacon IP addresses in the HTML output.
"./beacon -r"    or    "./beacon --showreports"
        Show count of RRs during each interval in the HTML output.
"./beacon -s"    or    "./beacon --showssrc"
        Show unique SSRC ID numbers for each Beacon in the HTML output.
"./beacon -j"    or    "./beacon --contactname"
        Specify Beacon contact's name on command line.
"./beacon -k"    or    "./beacon --contactinfo"
        Specify Beacon contact's info (email, phone, etc.) 
        on command line.
"./beacon -l"    or    "./beacon --contactlocation"
        Specify Beacon contact's physical location on command line.
"./beacon -w"    or    "./beacon --writehistory"
        Output statistics to CSV flat text file every 10 minutes.
        History file name is "history.txt".
"./beacon -e"    or    "./beacon --erasehistory"
        Erase existing history file at startup.  If this option is
        not specified, output will be appended to the existing history 
        file if there is one.
"./beacon -y"    or    "./beacon --silencetest"
        Enables periodic Silence tests.
"./beacon -z"    or    "./beacon --bursttest"
        Enables periodic Burst tests.
"./beacon --notifyemail beaconadmin@xyz.edu"
        Specifies the email address to send alarm notifications to.
        Not yet implemented.
"./beacon -m beaconadmin@xyz.edu"
        Same as previous.
"./beacon -a"    or    "./beacon --background"
        Causes Beacon process to run in background at startup.
"./beacon -f "141.142.98.209""
        Specifies which interface to use if more than one NIC 
        is present.
"./beacon --interface "141.142.98.209""
        Same as previous.
"./beacon -g 233.4.200.19 -p 10002 -t 127"
        Specifies group, port, and ttl on command line, instead
        of using settings in beacon.conf.
"./beacon --group 233.4.200.19 --port 10002 --ttl 127"
        Same as previous.
"./beacon -b" or "./beacon.pl --becentralserver"
        Act as a Central Beacon Server.  Only one server is needed
        for multiple Beacons.  To participate with an existing Central
        Server, you only need to run one Beacon that points to the 
        existing Central Server.
"./beacon -d N"    or    "./beacon --debug N"
        Sets debug level of Beacon script to integer N. Only 1 
        and 2 are currently used.
"./beacon -q" 
        Writes STDOUT messages to the appropriate syslog file
        in addition to STDOUT.  For Linux installs this is
	usually /var/log/messages.
"./beacon -v"    or    "./beacon --version"
        Shows Beacon version information.
"./beacon -h"    or    "./beacon --help"
        Gives this message.

Download

Current release 1.3-0   beacon-1.3.tar.gz   August 26, 2005
GPG sig file for optional verification   beacon-1.3.tar.gz MD5 Sum   August 26, 2005
See also the User Contributions area for more unsupported downloads!

Installation Instructions

Generic installation instructions:

If you have root acces to the box: In ..../beacon-<current release>/ ./configure
make
make install
Then cd src
chmod +x beacon
./beacon

If you want to do a local install or don't have root on the box you're installing on: In ..../beacon-<current release>/ ./configure --prefix=/home/mitch/beaconstuff/localinstalls
make
make install
At this point, cd /home/mitch/beaconstuff/localinstalls/bin
chmod +x beacon
./beacon

Note that you'll have to re-make and reinstall the main Beacon directory to update any changes any time to you change beacon.conf.

If the make install doesn't put Beacon.pm into your Perl path, you'll need to add a "use lib" instruction to ../src/beacon.in, immediately after the line:

use lib ("@prefix@/lib/perl5"); If you're running RedHat, you can do a -locate Beacon.pm- to find out where your copy of Beacon.pm is. In my case, it was:

/usr/local/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi/Net/Multicast/Beacon.pm

The "use lib" command you want is everything *except* the /Net/Multicast/Beacon.pm part, so it looked like this for me:

use lib ("/usr/local/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi"); That should get you running.

Known Issues

Known issues as of Tue June 21 13:21:37 CDT 2004
  1. There is a bug with the RTT computations that we're still sorting out, but we're very close on. We expect to have it fixed sometime next week, so expect an update release very soon.
  2. There is a big-endian/little-endian problem in the underlying RTP library with Beacons running under the PowerPC darwin OS that causes the stats generated to sometimes be bizarre. We expect to have that sorted out shortly as well.
  3. For now, the Central Server will be beacon.ncsa.uiuc.edu, but once things are fairly solid, I'll be moving the official Central Server over to beacon.dast.nlanr.net, so be prepared for the change when it comes.

Future Directions

  • Continued design of Beacon features
    • Generation of XML (machine readable) output instead of straight HTML
      • Allows for third-party applications to easily do whatever they want with the data

    • Inclusion of additional testing capabilities:
      • Very low frequency, periodic jumping from one multicast group to another to see which Beacons are currently live

  • Ability to reset "runaway" Beacons remotely from server
  • Ability to display only "currently active" sites, where something besides Beacon client is running
  • Ability to display "subset" data of only specifically selected Beacons from main matrix
  • Ability to select between having the Beacon send Beacon-generated RTP data or RTP data sampled from currently running applications (ie, vic and/or rat)
  • Short-term trend data and longer term data for a given multicast group
  • Alarm/Notification features
  • More/better diagnostic output for error conditions that can be captured
  • Beacon runnable as Win2K and/or WinXP services
  • AG-specific feature: A Beacon process to join a Venue group and forward local RTCP reports to Venue server for display there

Feedback/Listserv

Please share your comments, questions, bug reports, concerns, and feedback with us via the "beacon" listserv. You can subscribe to it by sending an email to "majordomo@dast.nlanr.net", with "subscribe beacon@dast.nlanr.net" in the body.

Note: This list is publicly archived at http://archive.ncsa.uiuc.edu/lists/beacon.

Please note that due the incredible volume of spam we get, this has been turned into a closed list that can only be sent to by subscribers. Non-subscriber email to this list is automatically discarded.

Another way to contact us is to use the DAST contact webform.

User Contributions

Please note these contributions are provided purely "as-is", as a courtesy to the user community. We can't help you debug or support them, and take no responsibility for them if they format your hard drive or wreck your car.


Beacon 1.3 $ENV{'LOGNAME'} patch - December 31, 2005
Patch for Solaris to get correct user name.

Thanks to Stan Barber <sob@noc.gigapop.gen.tx.us> for contributing this patch!

Search for the string "who am i" (it only occurs once), then change:

# Get username and hostname from the local environment, if possible
my $user = $ENV{'USER'} || `who am i`;
if ($userid) {
   $user = $userid; # Change to the specified (non-privileged) user
}
to

# Get username and hostname from the local environment, if possible
my $user = $ENV{'USER'} || $ENV{'LOGNAME'};
if ($userid) {
   $user = $userid; # Change to the specified (non-privileged) user
}

Beacon 1.3 config file command line patch - December 31, 2005
Patch to allow specification of beacon.conf config file location via command line flag.

Thanks to Laurent Facq <facq@u-bordeaux.fr> of Reseau REAUMUR / Bordeaux for contributing this patch!

Beacon 1.3-configfile-patch

Beacon 1.3 sysconfdir patch - December 31, 2005
Patch to change things so that the beacon.conf file is installed and used from @sysconfdir@ rather than @prefix@/etc.

Thanks to Greg Wickham <greg.wickham@grangenet.net> of Grangenet for submitting this patch!

Beacon 1.3-sysconfdir-patch

Beacon 1.3 "nobecentralserver" patch - December 31, 2005
This patch adds command line functionality to turn being a central server off.

This is required in circumstances where 'BECENTRALSERVER=1' is defined in the beacon.conf file but you desire to start a new instance of the beacon without being a central server.

To stop a beacon process from becoming a central server use the 'no' form of the usual command line option '--nobecentralserver'.

Thanks to Greg Wickham <greg.wickham@grangenet.net> of Grangenet for submitting this patch!

Beacon 1.3 "nobecentralserver" patch

Beacon 1.3 TCP Scaling patch - October 26, 2005
Thanks to Håvard Eidnes <he@uninett.no> for submitting this patch! beacon-1.3-scaling-patch

Running Multiple Beacons on the same Host - February 8, 2005
Thanks to Christoph Willing <chris@vislab.usyd.edu.au> from University of Syndey Vislab, Sydney, Australia for submitting this writeup! http://www.ap-accessgrid.org/linux/beacon.html

Beacon 1.1 for Win32X - November 15, 2004
Thanks to ANL's Ivan Judson for generating a Win32 version of Beacon 1.1! Beacon 1.1 package for Win32 - http://dast.nlanr.net/projects/beacon/releases/beacon_common-1.1.win32-py2.3.exe

Beacon 1.1 for Fink project for Max OS X - September 15, 2004
Thanks to Rob Braun for adding a Beacon 1.1 pacakge to the 10.3/unstable tree of Fink. Beacon 1.1 package in Fink - http://fink.sourceforge.net/pdb/package.php/beacon

Contributed RPMs for Linux - September 10, 2004
Thanks to Greg Wickham at GrangeNet for contributing these RPM files: Beacon 1.1 RPMS for Linux

RPMs for Server 1.1 for Linux. The SRPM can be used to build a binary for your platform.

SuSE 9.1beacon-1.1.0-8-suse91.i586.rpm
Fedora Core 1beacon-1.1.0-8-fc1.i386.rpm
Fedora Core 2beacon-1.1.0-8-fc2.i386.rpm
SRPMbeacon-1.1.0-8.src.rpm

Thanks also to Douglas Kosovic and Chris Willing (both from ITEE @ UQ) for asstistance.


IPv6 version of Beacon 1.1 - September 8, 2004
Thanks to Mickael Hoerdt at ULP/LSIIT for contributing an IPv6 version of the 1.1 Beacon: IPv6 version of Beacon 1.1 - beacon-1.1-0-ipv6.tar.gz

Graphing Beacon data over time
Kudos to Andrew Daviel at TRIUMF, who has contributed code to graph Beacon data over time, using gnuplot. Andrew writes: "I have been experimenting with plotting archived packet loss, RTT and jitter with the idea to e.g. see when things stopped working. To do this I have been downloading the central server history and use "gnuplot" to plot a slice of the data file. I web-enabled it in a fairly simplistic fashion by generating PNG output. To more conveniently choose (S,R) pairs I added links to my local_loss page below. It works moderately well, though I have been stopping and starting my beacons yesterday so my data is a bit choppy. I am now discarding 60-second data after 10 hours or so but keeping 30-minute data indefinitely, for now. Autoscaling, line type and axes are gnuplot standard; I added an override for Y scaling as sometimes there are big spikes in RTT or jitter."

His latest scripts are available for download at:

beacon-history.pl and get-next.pl

His original scripts are available for download at:

andrew_graph.pl and andrew_graph_cgi.pl

Examples can be seen at:

http://andrew.triumf.ca/beacon2/

It is my intention to incorporate this functionality into an upcoming release of the Beacon, as time permits.

Thanks, Andrew!


Solaris 2.6 libraries / Beacon.so From John Kristoff, at Northwestern

"Another problem I had was that during the runtime of the script I was getting an error in reference to the inet_pton() call. With the help of Andy Elble, it turns out that Solaris 2.6 needed a couple of additional libraries to be linked into the resulting Beacon.so.

In Net-Multicast-Beacon/Makefile.PL.in I changed:

'LIBS' => [' -L../librtp -lrtp -L../libbeacon -lbeacon'], to: 'LIBS' => ['-L../librtp -lrtp -L../libbeacon -lbeacon -lnsl -lresolv']
Thanks, John!

Acknowledgements

NLANR would like to specifically acknowledge LBNL's Deb Agarwal and NCSA's Jon Dugan in the design and development of the newest Beacon. Without their help, the latest release would not have been possible.

NLANR would also like to acknowledge the additional assistance of NERSC's Eli Dart, BU's Eric Gauthier, ANL's Bob Olson, NDSU's Marty Hoag, numerous different vendors, and the ACCESS Grid Community at large in the testing and debugging of both this and previous versions of the Multicast Beacon.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Contact DASTBlank Space Last reviewed: December 31, 1969
NLANR || Applications Support || Engineering Support || Measurement and Network Analysis