Skip to content

How to configure ringserver as a SeedLink streaming server

chad-iris edited this page Jul 26, 2022 · 8 revisions

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

  • Linux, Solaris or macOS operating system
  • C compiler to build the ringserver software
  • Process to create 512-byte miniSEED data records

Quick start

  • Download the latest release ringserver source code from: https://github.com/iris-edu/ringserver/releases
  • Compile ringserver and copy the binary to a desired directory. Note: for older SunOS/Solaris the src/Makefile may need to be edited.
  • Create configuration file (see below) in a dedicated directory.
  • Create required directories like "ring" and, optionally, "tlog" in the dedicated directory.
  • Run ringserver, for example: $ ringserver ring.conf > ring.log 2>&1
  • 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 macOS operating systems.

Untar/unzip 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 with some options described in the Configuring the server page, and full details in the config fil

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

RingDirectory ring
ListenPort 16000
ListenPort 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.

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.

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.