EOL
Effective 30 April 2017, RTIC and RV Latency Plug-In - Technical Reference reached end of life. This documentation is archived and will no longer be updated.
RTIC and RV Latency Plug-In - Technical Reference
Introduction Copied
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 Copied
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.
RTIC-Latency Message Path
Generic RV Messages Copied
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-Latency Message Path
Views Copied
View Copied
The RTIC / RV Latency Plug-in produces a single view per plug-in instance:
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 Copied
The following parameters can be configured for this plug-in:
config Copied
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 Copied
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 Copied
Timeout period on waiting for a message
Units: Seconds
Mandatory: No
Default: 10s
publishInterval Copied
Interval between publishing events.
Units: Seconds
Mandatory: No
Default: 20s
private Copied
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 Copied
Originator and Reporters Copied
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 Copied
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 Copied
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 Copied
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 Copied
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