How to configure ringserver as a SeedLink streaming server

Overview

The IRIS DMC 'ringserver' software is capable of continuously scanning one or more directories for miniSEED data records and serving them as near real-time data streams using the SeedLink protocol. This software allows a data collection center that can create miniSEED data to redistribute their data in near real-time.

Requirements

  1. Linux, Solaris or Mac OSX operating system
  2. C compiler to build the ringserver software
  3. Process to create 512-byte Mini-SEED data records

Quick start

  1. Get ringserver source code from IRIS: https://seiscode.iris.washington.edu/projects/ringserver/files
  2. Compile ringserver and copy binary to a dedicated directory. Note: for SunOS/Solaris the 'src/Makefile' needs to be edited.
  3. Create configuration file (see below) in the dedicated directory.
  4. Create required directories like "ring" and optionally "tlog" in the dedicated directory.
  5. Run ringserver, for example: $ ringserver ring.conf > ring.log 2>&1
  6. Use dalitool or slinktool to verify that data is flowing as expected.

Any network firewall between the server and the clients must be
configured to allow connections from the clients on the SeedLink port
(default is TCP port 18000).

Compiling ringserver

The program should operate on any relatively modern releases of Linux, Solaris and Mac OSX operating systems.

Untar the ringserver source code, in the created 'ringserver' directory typing "make" should compile the program.

Compiler options can be tuned by setting the CFLAGS environment variable. For example, building a 32-bit or 64-bit executable can be done by setting the appropriate compiler options in CFLAGS.

Under SunOS/Solaris the 'src/Makefile' needs to be edited to include system networking libraries. Uncomment the LDLIBS line indicated for these systems.

Configuring ringserver

Create a configuration file as described in the Configuration file options.

A minimal configuration file for a simple SeedLink server might be:

RingDirectory ring
DataLinkPort 16000
SeedLinkPort 18000
ServerID "XX Seismic Network" 
TransferLogDirectory tlog
TransferLogRX 0
MSeedScan /data/miniseed/ StateFile=scan.state InitCurrentState=y

Executing the server

Ringserver is a single binary that prints log messages to standard out and critical errors to standard error (optionally, all output can be directed to stderr using the -STDERR argument). It can be started from any environment that can start a process. When ringserver receives a TERM or INT signal (i.e. Control-C) it will shut down cleanly, saving it's current ring buffer and scanning state.

Many seismic network data collection centers already have systems that manage continuously running processes, ringserver can usually be incorporated into such systems.

Monitoring the server

If the server is configured to listen for DataLink connections the DataLink Tool (dalitool) can be used to query the server. Source code for dalitool is available from the IRIS website: http://www.iris.edu/pub/programs/ringserver/

Developed in conjunction with ringserver the dalitool program can be used to monitor data flow from a server, query for data availability in the buffer, query for connected clients and query for server stats.

Alternatively the SeedLink Tool (slinktool) can be used for very similar queries to the server, slinktool uses the same SeedLink interface as client data users. Source code for slinktool is available from the IRIS website: http://www.iris.edu/pub/programs/SeedLink/

If configured to write transfer logs ringserver will write packet transfer logs to a specified directory at a specified interval (default is daily). Both transmission (data sent from the server to a client) and reception (data received from a client) can be logged.