Files
seiscomp-training/share/doc/caps/html/base/introduction.html

277 lines
17 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Introduction &#8212; CAPS: Common Acquisition Protocol Server documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/gempa.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/gempa.css?v=c960eebf" />
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=eafc0fe6" />
<script type="text/javascript" src="../_static/gempa.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=b3ba4146"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Upgrading" href="upgrading.html" />
<link rel="prev" title="CAPS documentation" href="../index.html" />
</head>
<body>
<div class="header">
<div class="container">
<img class="background" src="../_static/icon.png"/>
<div class="content">
<span class="title">CAPS: Common Acquisition Protocol Server </span>
<span class="version">2025.254#f0c77b29e</span></h1>
</div>
</div>
</div>
<div class="nav">
<div class="container">
<div class="content"><a class="pull-right" id="sidebar-toggle">TOC</a>
<div class="related" role="navigation" aria-label="related navigation">
<ul>
<li class="right">
<a href="../genindex.html" title="General Index"
accesskey="I">
index
</a>
</li>
<li class="right">
<a href="upgrading.html" title="Upgrading"
accesskey="N">
next
</a>
</li>
<li class="right">
<a href="../index.html" title="CAPS documentation"
accesskey="P">
previous
</a>
</li>
<li class="nav-item nav-item-0">
<a href="../index.html">Home</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="fitted content" id="anchors-container">
<div class="body" role="main">
<section id="introduction">
<span id="sec-intro"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this heading"></a></h1>
<p>The Common Acquisition Protocol Server (<cite>CAPS</cite>) was developed to fulfill
the needs to transfer multi-sensor data from the station to the data center. As
nowadays more and more stations with co-located sensors like broadband
seismometer, accelerometer, CGPS, temperature, video cameras, etc. are build up,
a acquisition protocol is required, which can efficiently handle low- and
high-sampled data through one unified protocol.</p>
<p><cite>CAPS</cite> is a core component of <cite>SeisComP</cite> systems where data redundancy, security
and high availability is key.</p>
<p>The <cite>CAPS</cite> package ships with</p>
<ul class="simple">
<li><p>The <a class="reference internal" href="configuration.html#sec-caps-config"><span class="std std-ref">CAPS server</span></a> serving <a class="reference internal" href="glossary.html#term-miniSeed"><span class="xref std std-term">miniSEED</span></a>
and other multi-format data in real-time and from archive.</p></li>
<li><p><a class="reference internal" href="plugins.html#sec-caps-plugins"><span class="std std-ref">Data acquisition plugins</span></a> feeding data into the CAPS
server.</p></li>
<li><p><a class="reference internal" href="data-retrieval.html#sec-caps-retrieval"><span class="std std-ref">Data retrieval and analysis tools</span></a> including
on-demand access to data on the server.</p></li>
</ul>
<section id="features">
<h2>Features<a class="headerlink" href="#features" title="Permalink to this heading"></a></h2>
<p>The core features of <cite>CAPS</cite> are:</p>
<ul class="simple">
<li><p>Multi-sensor data transfer including miniSEED records, video streams and
<a class="reference internal" href="archive.html#sec-packet-types"><span class="std std-ref">almost any other format</span></a>.</p></li>
<li><p>Compehensive data acquisition by all existing plugins for <span id="id1"><em>seedlink</em> [<a class="reference internal" href="references.html#id288" title="seedlink. Real-time waveform server. URL: https://docs.gempa.de/seiscomp/current/apps/seedlink.html.">19</a>]</span>
plus additional <a class="reference internal" href="plugins.html#sec-caps-plugins"><span class="std std-ref">CAPS plugins</span></a>.</p></li>
<li><p>No inventory required for immediate data acquisition.</p></li>
<li><p>Stations can be added without reconfiguring the <cite>CAPS</cite> server avoiding
server downtimes.</p></li>
<li><p>Pushing of data from new stations into CAPS without restarting the CAPS server.</p></li>
<li><p>Lightweight protocol for minimized packet overhead.</p></li>
<li><p>Reliable data transfer, no data loss due to re-transmission of data in case of
network outage or server restart.</p></li>
<li><p>Archived and real-time data served through one single protocol and one
connection.</p></li>
<li><p>High-quality data archives:</p>
<ul>
<li><p>backfilling of data and correct sorting by time even if records arrive in
out of order sequences.</p></li>
<li><p>duplicate records in CAPS archives are impossible. Such duplicates may exist
in <a class="reference internal" href="glossary.html#term-SDS"><span class="xref std std-term">SDS</span></a> archives created by <span id="id2"><em>scart</em> [<a class="reference internal" href="references.html#id241" title="scart. SeisComP module. URL: https://docs.gempa.de/seiscomp/current/apps/scart.html.">14</a>]</span> or <span id="id3"><em>slarchive</em> [<a class="reference internal" href="references.html#id298" title="slarchive. SeisComP module. URL: https://docs.gempa.de/seiscomp/current/apps/slarchive.html.">20</a>]</span>.</p></li>
</ul>
</li>
<li><p>Rapid response systems are supported by prioritizing recent data when
recovering from longer gaps of data acquisition allowing to process the most
recent data first before backfilling older data.</p></li>
<li><p><a class="reference internal" href="configuration.html#sec-caps-security"><span class="std std-ref">Data security</span></a> on multiple levels:</p>
<ul>
<li><p>secure communication via <a class="reference internal" href="configuration.html#sec-conf-ssl"><span class="std std-ref">SSL</span></a>.</p></li>
<li><p><a class="reference internal" href="configuration.html#sec-conf-access-auth"><span class="std std-ref">User authentication</span></a>.</p></li>
<li><p>different user and group roles distinguishing read, write or administrative
access.</p></li>
<li><p><a class="reference internal" href="configuration.html#sec-conf-access"><span class="std std-ref">fine-grained access control</span></a> on service and stream
level for defined users, user groups or IP ranges.</p></li>
</ul>
</li>
<li><p><a class="reference internal" href="../apps/caps2caps.html#caps2caps"><span class="std std-ref">Data redundancy</span></a> by real-time connection between two or more
CAPS servers.</p></li>
<li><p>Easy <a class="reference internal" href="data-retrieval.html#sec-caps-retrieval"><span class="std std-ref">access to data</span></a>:</p>
<ul>
<li><p>via the <a class="reference internal" href="data-retrieval.html#sec-caps-recstream"><span class="std std-ref">caps RecordStream</span></a> provided by
<cite>SeisComP</cite> <span id="id4">[<a class="reference internal" href="references.html#id292" title="Helmholtz-Centre Potsdam - GFZ German Research Centre for Geosciences and gempa GmbH. The SeisComP seismological software package. GFZ Data Services. 2008. URL: https://www.seiscomp.de, doi:10.5880/GFZ.2.4.2020.003.">31</a>]</span></p></li>
<li><p>using <a class="reference internal" href="data-retrieval.html#sec-caps-retrieval"><span class="std std-ref">added tools and interfaces</span></a> also offering
meta data information.</p></li>
<li><p>via <a class="reference internal" href="data-retrieval.html#sec-caps-seedlink"><span class="std std-ref">Seedlink</span></a>.</p></li>
<li><p>by built-in standard <a class="reference internal" href="data-retrieval.html#sec-caps-fdsnws"><span class="std std-ref">FDSN Web Service</span></a>.</p></li>
<li><p>by built-in <a class="reference internal" href="data-retrieval.html#sec-caps-wws"><span class="std std-ref">Winston Wave Server, WWS</span></a>, e.g.,
to <span id="id5"><em>SWARM</em> [<a class="reference internal" href="references.html#id308" title="SWARM. USGS. URL: https://volcanoes.usgs.gov/software/swarm/.">7</a>]</span> by USGS.</p></li>
<li><p>by an interactive <a class="reference internal" href="interfaces.html#sec-caps-web-interface"><span class="std std-ref">Web interface</span></a> also
offering statistics and meta data information.</p></li>
<li><p>from <a class="reference internal" href="../apps/caps2caps.html#caps2caps"><span class="std std-ref">other CAPS servers</span></a>.</p></li>
<li><p>through <a class="reference internal" href="interfaces.html#sec-caps-client-interface"><span class="std std-ref">telnet interface</span></a>.</p></li>
</ul>
</li>
<li><p>Server-side downsampling upon client request for optimized data transfer.</p></li>
</ul>
</section>
<section id="architecture">
<span id="sec-architecture"></span><h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this heading"></a></h2>
<p>The figure below shows the architecture of <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a>. The central
component is the server, which receives data from sensors or other data centers,
stores it into an archive and provides it to connected clients. The connection
between a data provider and <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> is made through a plugin.</p>
<p>Plugins are independent applications which, similar to clients, use a
network socket to communicate with the server. The advantages of this loose
coupling are:</p>
<ul class="simple">
<li><p>Plugins may be developed independently and in a arbitrary programming language.</p></li>
<li><p>A poorly written plugin does no crash the whole server.</p></li>
<li><p>Plugins may run on different machines to pull or push data. This allows to secure
the access to the <cite>CAPS</cite> by a firewall.</p></li>
<li><p>Plugins may buffer data in case the server is temporary unavailable.</p></li>
<li><p>A <cite>CAPS</cite> client library for C++ and Python may be provided upon request
allowing you to develop your own applications.</p></li>
</ul>
<figure class="align-default" id="id6">
<span id="fig-architecture"></span><a class="reference internal image-reference" href="../_images/architecture.png"><img alt="../_images/architecture.png" src="../_images/architecture.png" style="width: 16cm;" /></a>
<figcaption>
<p><span class="caption-text">Architecture of <cite>CAPS</cite>.</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
</figcaption>
</figure>
</section>
<section id="deployment">
<span id="sec-deploy"></span><h2>Deployment<a class="headerlink" href="#deployment" title="Permalink to this heading"></a></h2>
<p>The acquisition of data from other data centers is most likely done through a
public interface reachable over the Internet. For instance seismic waveform data
is commonly distributed via <a class="reference internal" href="glossary.html#term-SeedLink"><span class="xref std std-term">SeedLink</span></a> or <a class="reference internal" href="glossary.html#term-ArcLink"><span class="xref std std-term">ArcLink</span></a> servers while
the tide gage community shares its data through a Web interface. For this
center-to-center communication a plugin is launched on the receiving site to
feed the <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> server.</p>
<p>For the direct acquisition of data from a sensor the plugin has to run on the
sensor station. At this point the diagram distinguishes two cases: In the first
example the plugin sends the data directly to the <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> running at the
data center. In the second case the data is send to a local CAPS server on the
sensor station. From there it is fetch by the <a class="reference internal" href="../apps/caps2caps.html#caps2caps"><span class="std std-ref">caps2caps</span></a> plugin running
at the data center.</p>
<p>The options for possible deployments are illustrated in the figure below.</p>
<p>The advantage of the second approach is:</p>
<ul class="simple">
<li><p><strong>Better protection against data loss</strong> - In case of a connectivity problem
plugins may transient buffer data. Nevertheless main memory is limited and
the buffered data may be lost e.g. because of an power outage. A local
<a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> will store observations to the hard drive for later retrieval.</p></li>
<li><p><strong>Direct client access</strong> - A client may directly receive data from the sensor
station. This is in particular useful for testing and validating the sensor
readings during the station setup phase. The standard <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> client
applications may be used in the field.</p></li>
<li><p><strong>Less packet overhead</strong> - The <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> client protocol is more
lightweight than the plugin protocol. Once connected each data stream is
identified by a unique number. A client packet only consists of a two byte
header followed by the data.</p></li>
</ul>
<figure class="align-default" id="id7">
<span id="fig-deployment"></span><a class="reference internal image-reference" href="../_images/deployment.png"><img alt="../_images/deployment.png" src="../_images/deployment.png" style="width: 16cm;" /></a>
<figcaption>
<p><span class="caption-text">Possible deployment of <cite>CAPS</cite> and its components.</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p>The ability to connect different <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> instances simplifies sharing of
data. One protocol and one implementation is used for the sensor-to-center and
center-to-center communication. In the same way multiple <a class="reference internal" href="glossary.html#term-CAPS"><span class="xref std std-term">CAPS</span></a> instances
may be operated in one data center on different hardware to create backups,
establish redundancy or balance the server load.</p>
</section>
</section>
<div id="anchors-bottom"></div>
</div>
<div class="sidebar" role="navigation" aria-label="main navigation">
<div id="anchors-top"></div>
<div id="anchors" class="content">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
<div>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Introduction</a><ul>
<li><a class="reference internal" href="#features">Features</a></li>
<li><a class="reference internal" href="#architecture">Architecture</a></li>
<li><a class="reference internal" href="#deployment">Deployment</a></li>
</ul>
</li>
</ul>
</div>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="../index.html"
title="previous chapter"><cite>CAPS</cite> documentation</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="upgrading.html"
title="next chapter">Upgrading</a></p>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/base/introduction.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<div class="container">
<div class="content">
Release <b></b> version <b>2025.254#f0c77b29e</b>
<div class="copyright">
&copy; Copyright <a href="https://www.gempa.de">2013, gempa GmbH.</a>
</div>
</div>
</div>
</div>
</body>
</html>