Geneos


This plug-in is deprecated and is no longer supported by Geneos.
We recommend that you not use any deprecated features, as these may be removed in future releases.

For more information, see Deprecated and removed features in Geneos 5.x Compatibility Matrix.

RTIC and RV Latency Plug-In - Technical Reference

Introduction

The Geneos RTIC / RV Plug-in monitors the time it takes RV messages to make a specific round trip. The plug-in publishes test messages across the configured RV networks and subscribes to the same message. A publishing entity is referred to as a message originator and a subscribing entity is a message reporter as it will report a latency figure. The latency figure quoted is the difference between the published time and the time the reporter receives the response and is measured to microsecond resolution.

A single instance of the plug-in can be configured to have one Originator and many Reporters. The plug-in can be configured in two ways.

Sass3

To locally publish a message into a Reuters TIC - RMDS Edition (RTIC) or other infrastructure that supports the Sass3 protocol, the message originator is configured as a "MarketDataPublisher". A reporter can be configured as a "MarketDataSubscriber" and will support Sass3 subscriptions.

As Sass3 runs over RV, RVD's must be configured to send the messages to the correct publish multicast channel. The message will pass through the RTIC and be published out on the subscribe multicast channel, which will be picked up by the subscribing RVD and passed back to the plug-in [Fig 1]. The plug-in supports publication of Q-form message types. Multiple reporters can be configured if the RTIC is cascaded to other machines.

rv-latency2

RTIC-Latency Message Path

Generic RV Messages

To publish messages to the local RVD network, the message originator is configured as a "GenericPublisher". A reporter configured as a "GenericSubscriber" will subscribe directly from the local network (or from Sass2 publishing infrastructure). Here the plug-in is configured to communicate with the RV Layer only. A message is passed from the plug-in to the RVD, is published onto the multicast channel and is picked up by the subscribing RVD and then passed back into the plug-in:

rv-latency3

RV-Latency Message Path

Views

View

The RTIC / RV Latency Plug-in produces a single view per plug-in instance:

rv-latency4

View of RTIC-Latency Plug-in Configured with an Originator and 7 Reporters.

Headline Legend

Name Description
numSamplingReporters Number of places that the message is run
publishingInstrument Name of the publishing element that the system is publishing and then reading

Table Legend

Name Description
reporter Name of the individual reporters that are reading the Market data feed.
status Status of the connection (OK or TimedOut).
lastTurnAround Time to deliver the last message.
lastSampleTime The time that the last message was received by the reporter.
aveTurnAround5Min Average turn-around over the last 5 minutes.
aveTurnAround15Min Average turn-around over the last 15 minutes.
aveTurnAround60Min Average turn-around over the last 60 minutes.

Plug-in Configuration

The following parameters can be configured for this plug-in:

config

Variable to store the Reuters RFA configuration data. This will be in the Reuters RFA configuration file format (see section Latency Configuration File for details on the format). On initialization the probe will save this to the file specified in configFilename.

Mandatory: No

configFilename

Full path to the latency configuration file (see section Latency Configuration File for details on the format). This is a Reuters RFA configuration file. If the config setting has been specified, then this file will be overwritten with the contents of the config setting every time the plug-in is initialized.

Mandatory: No
Default: latency.cfg

responseTimeout

Timeout period on waiting for a message

Units: Seconds
Mandatory: No
Default: 10s

publishInterval

Interval between publishing events.

Units: Seconds
Mandatory: No
Default: 20s

private

The private configuration section holds settings used for debugging the plug-in. Please contact ITRS support if you require assistance with this plug-in.

Latency Configuration File

Originator and Reporters

The latency configuration file follows the Reuters RFA configuration database format. More details of RFA configuration can be found in the Reuters Foundation API C++ Edition The Configuration Guide.

An RFA Session needs to be defined for each Reporter and the Originator. The following additional fields must be defined to bind the Originator and Reporters to the defined RFA Sessions.

Defining the Originator of the data:

Geneos\Originator\<NAME>\Session = <SessionName>Geneos\Originator\<NAME>\Subject = <SubjectName>Geneos\Originator\<NAME>\FieldName = <ItemName>Geneos\Originator\<NAME>\Type = "MarketDataPublisher" | "GenericPublisher"

Defining the Reporter of the data (multiple reporters can be defined if multiple latency points are being measured):

Geneos\Originator\<NAME>\Session = "Session1"
Geneos\Originator\<NAME>\Subject = <SubjectName>Geneos\Originator\<NAME>\Type = "MarketDataSubscriber" | "GenericSubscriber"

The Originator and Reporter sessions must be bound to connections. For MarketDataPublisher and MarketDataSubscriber types, the session type must be Sass3. The Sass3 session must then be bound to an RV subscribe and RV publish session.

For MarketDataSubscriber and GenericSubscriber types, the session is bound directly to an RV session.

Q-Form Publishing

To publish a Q-form message to an RTIC the following parameters are required:

\Geneos\Originator\<NAME>\ClassId = 6012

This is the form class id that will be published.

\Geneos\Originator\<NAME>\FieldName = "Tmp_Str"

This is the field name that the latency info will be published into. This should be at least 30 bytes in size to allow the full timestamp to be published.

\Geneos\Originator\<NAME>\FieldSize = 40

The size, in bytes, of the published field, should be in the range of 30 - 8192 bytes, the default is 40 bytes.

\Geneos\Originator\<NAME>\FieldType = 2

Type 2 (string) is currently supported.

\Geneos\Originator\<NAME>\UseSassControlFields = true

This instructs the plug-in to publish the 4 sass control fields, MSG_TYPE, REC_TYPE, SEQ_NO, REC_STATUS.

Listen Subject

A listen subject can be specified, this instructs the RTIC Originator to listen to the publication channel as well as the subscription channel, and report the latency figure as the time difference between the two events. This can lead to a more accurate latency reading. This should be bound to another RFA session, which is bound to a RV type connection.

\Geneos\Originator\<NAME>\ListenSession = <SessionName>\Geneos\Originator\<NAME>\ListenSubject = "_SASS.XXX.PUB"

Note: The Sass3 protocol means that the listen session subject should be configured as above where xxx is the first of the four part instrument name.

Numeric publishing time fields

The plug-in can optionally append the publishing time into outgoing messages, as numeric 32-bit integer values. Two optional values are available:

  • TimeSec - the publish time in UTC seconds (time since Unix epoch)
  • TimeUSec - a microsecond fraction of the publish time.

e.g. If the message is published at Sat 1 Dec 2012 14:00:00.020740 UTC, then the field values will be TimeSec=1354370400, TimeUSec=20740.

These fields will be enabled if configured with a non-empty field name. For TimeSec configure the following:

\Geneos\Originator\<NAME>\TimeSec_FieldName = "<FieldName>"

Similarly for TimeUSec see the below:

\Geneos\Originator\<NAME>\TimeUSec_FieldName = "<FieldName>"

Example RTIC Latency Configuration:

Control\Entitlements\dacs_CbeEnabled = False
Control\Entitlements\dacs_SbeEnabled = False

\Geneos\Originator\OriginatorName1\Session = "Session_Orig1"
\Geneos\Originator\OriginatorName1\Subject = "XYZ.ANY.ABC.CC1"
\Geneos\Originator\OriginatorName1\ClassId = 6012
\Geneos\Originator\OriginatorName1\FieldName = "TMP_STR"
\Geneos\Originator\OriginatorName1\FieldSize = 40
\Geneos\Originator\OriginatorName1\FieldType = 2
\Geneos\Originator\OriginatorName1\UseSassControlFields = true
\Geneos\Originator\OriginatorName1\Type = "MarketDataPublisher"
\Geneos\Originator\OriginatorName1\ListenSession = "Session_Orig2"
\Geneos\Originator\OriginatorName1\ListenSubject = "_SASS.XYZ.PUB"
\Geneos\Originator\<NAME>\TimeSec_FieldName = "ASK"
\Geneos\Originator\<NAME>\TimeUSec_FieldName = "BID"

\Geneos\Reporter\ReporterUK1\Session = "Session_UK1"
\Geneos\Reporter\ReporterUK1\Subject = "XYZ.ANY.ABC.CC1"
\Geneos\Reporter\ReporterUK1\DacsAppName = "534"
\Geneos\Reporter\ReporterUK1\DacsPosition = "127.0.0.1/net"
\Geneos\Reporter\ReporterUK1\FieldName = "TMP_STR"
\Geneos\Reporter\ReporterUK1\FieldSize = 40
\Geneos\Reporter\ReporterUK1\FieldType = 2
\Geneos\Reporter\ReporterUK1\Type = "MarketDataSubscriber"

#Sessions
\Sessions\Session_Orig1\connectionList          = "Connection_RTIC1"
\Sessions\Session_Orig2\connectionList          = "Connection_Pub2"
\Sessions\Session_UK1\connectionList            = "Connection_RTIC_UK1"

#publish
\Connections\Connection_RTIC1\connectionType            = "SASS3"
\Connections\Connection_RTIC1\subscriberRV_Connection   = "Connection_Sub1"
\Connections\Connection_RTIC1\marketDataItemSubTimeout  = 120000
\Connections\Connection_RTIC1\marketDataDictSubTimeout  = 30000
\Connections\Connection_RTIC1\publisherRv_Connection    = "Connection_Pub1"
\Connections\Connection_RTIC1\serviceList                       = "XYZ"

#uk reporter
\Connections\Connection_RTIC_UK1\connectionType                 = "SASS3"
\Connections\Connection_RTIC_UK1\subscriberRV_Connection        = "Connection_Sub1"
\Connections\Connection_RTIC_UK1\marketDataItemSubTimeout = 120000
\Connections\Connection_RTIC_UK1\marketDataDictSubTimeout = 30000
\Connections\Connection_RTIC_UK1\publisherRv_Connection         = "Connection_Sub1"
\Connections\Connection_RTIC_UK1\serviceList            = "XYZ"


\Services\XYZ\dataFormat                = "Qform"
\Services\XYZ\dataDicstList     = "Sass"
\Services\XYZ\inrfastructureType        = "RTIC"

#publish
\Connections\Connection_Pub1\connectionType             = "RV"
\Connections\Connection_Pub1\service                    = "8000"
\Connections\Connection_Pub1\daemon                     = "tcp:192.168.10.6:7500"
\Connections\Connection_Pub1\network                    = "ce0;239.20.250.3;239.20.250.3"
\Connections\Connection_Pub1\connectRetryInterval               = 300000
\Connections\Connection_Pub1\softLinkInstanceSharing    = True

#RVD on a different machine
\Connections\Connection_Sub1\connectionType             = "RV"
\Connections\Connection_Sub1\service                    = "8001"
\Connections\Connection_Sub1\daemon                     ="tcp:192.168.10.6:7500"
\Connections\Connection_Sub1\network                    = "ce0;239.9.250.1;239.9.250.1"
\Connections\Connection_Sub1\connectRetryInterval               = 300000
\Connections\Connection_Sub1\softLinkInstanceSharing    = True