The Lab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version 1.5.96

This page sets out the key aspects of establishing and managing sessions between a Whisperer Enterprise Client and a Feed Handler. In addition details are provided setting out how to initiate or terminate connectivity to the target Venue.

Table of Contents

Overview

Terminology

  • Customer - The organisation utilizing MarketFactory's systems.
  • Client - The software component(s) maintained by the Customer that are used to communicate with Venues via Whisperer
  • User - A logical entity defined by the Customer and configured by MarketFactory, used to associate a Client Session

...

  • with a Venue Connection.
  • Venue - External trading system - may be a Maker (e.g. a Bank), a Taker (e.g. an ECN), or a CLOB.
  • Logon Service - Whisperer's security and session administration component.
  • Gateway - The Whisperer component responsible for maintaining connectivity with a Venue.
  • Venue Connection - A connection established between the Gateway and the Venue. Typically this will be a single FIX session (i.e. a specific Target/SenderCompID pair), but in some cases this may incorporate additional physical connections - for example, a Pricing session for a CLOB may comprise A/B UDP market data feeds in addition to a standard TCP FIX session used for message recovery.
  • Client Session - A connection maintained between the Gateway and a Client User, dedicated to delivering messages between the User and the Venue for a specific Session Type.



Sessions

Session Types

Whisperer Enterprise maintains Whisperer SBE4 Maintains the following session types:

  • Pricing - used for delivery
    • Delivery of Market Data from a CLOB Venue
    , or
    • .
    • ESP mass-quotes from a Maker MFSBE4 Client to a Taker Venue.
    • ESP mass-quotes from a Maker Venue to a Taker Client.
  • Orders - used for submission
    • Submission and execution of MFSBE4 Client orders against a CLOB Venue
    orders, or trading against ESP Maker
    • .
    • Orders against ESP liquidity (published on a separate Pricing session) from a Taker Venue to a Maker Client.
    • Orders against ESP liquidity (published on a separate Pricing session) from a Taker Client to a Maker Venue.
  • RFS - used for the full
    • Full RFS/RFQ quotation negotiation life cycle between Maker Client and Taker Venue.
    • Full RFS/RFQ quotation negotiation life cycle between Taker Client and Maker Venue.
  • DropCopy
    • Delivery
    DropCopy - used for the delivery
    • of post-Trade Straight-Through Processing (STP) trade notifications. Typically this
    will be 

...

    • will be restricted to notifications from dedicated Venue API connections only.

For a given Client and given Whisperer Gateway deployment, each session type will be assigned unique Venue connection credentials (typically target IP:Port details and associated Target/SenderCompIDs, but potentially additional details such as Username and Password, PKI certs, etc).

Session Architecture

Gliffy Diagram
displayNameSession Architecture
nameSession Architecture

24x5.5 Availability

All session types are maintained directly with an individual Whisperer Feed Handler and operate a weekly schedule Gateway. All Gateways are available 24 x 5.5 - the full trading week commencing on Sunday prior to Asia-open and ending on Friday, NY-close. This is , irrespective of the schedule of the Venue itself,

...

titlemsgSeqNum

...

.

Message Header

In addition to the default SBE message header fields (blockLength, templateId, schemaId and version), the MFSBE4 header additionally defines the mandatory population of the following fields:

  • messageLength - this is provided to allow verification that the full message has indeed been received (e.g. should it span multiple packets).
  • sendingTime - nanosecond-precision timestamp indicating when the message left the sender.
  • msgSeqNum - this is the standard integer message sequence number. At When first establishing a connection at the start of a session trading week, it should be set to '1', and incremented with every subsequent message sent .
  • sendingTime - nanosecond-precision timestamp indicating when the message left the sender.

Logon

Session Synchronisation

The Whisperer SBE4 APi utilises the 'new' model of session synchronisation introduced in FIX 4.4. This ensures that each side can expect any sequence number gaps to be filled automatically, eliminating the need for ResendRequest messages - and the problems that historically accompany these.

The MFAPI client initiates a new session with a Logon message - this contains the next MsgSeqNum[34] value that the client expects to receive from the Whisperer Feed Handler. 

The Whisperer Feed Handler validates the sequence number value as expected by the MFAPI client as follows:

If the Client is expecting a sequence number higher than the FH's next-to-be-assigned msgSeqNum, then this is an unrecoverable error and the FH will abort the session with a Logout message.

Otherwise the FH will issue a LogonResponse message containing the next MsgSeqNum[34] value that it expects to receive from the client.

If the Client is expecting a sequence number lower than the FH's next-to-be-assigned msgSeqNum[34], then the message gap is resolved by the FH with SequenceResetGapFill messages and the resending of persisted messages as necessary.

The Whisperer Feed Handler signals it's completion of session synchronisation with a TestRequest.

Note

Any new (i.e. not SequenceResetGapFill or resent) messages sent by the MFAPI Client prior to the required Heartbeat response will result in ErrorReport messages.

After any inbound sequence number gaps have been resolved for the MFAPI Client, it then reciprocates in a similar manner, based on the the next MsgSeqNum[34] value that the Whisperer Feed Handler expects to receive from the client - as specified in it's LogonResponse.

Warning
The mutual exchange of TestRequest and Heartbeat (response) messages are required as verification that no sequence number gaps remain. The MFAPI client should only proceed after it has received the Heartbeat sent in response to it's own TestRequest.

Gliffy Diagram
nameLogon 4.0 Sequence_3
pagePin9

 

Message Persistence

The table below specifies what messages are to be persisted and resent when necessary, as opposed to being gap-filled:

...

Logon to Existing Session

Any attempt by the MFAPI client to log on to an existing session will result in the session being aborted.

 

Gliffy Diagram
name4.0 Schema_2ndLogon
pagePin8

Session Monitoring

Active sessions are monitored at the application level by each party via Heartbeat and TestRequest messages. Indications of problems must result in the monitoring party aborting the session.

The maximum allowed message transmission time (MaxTx) between between the MFAPI Client and the Whisperer Feed Handler is fixed, currently set to one second.

Heartbeats

Once the MFAPI Client has successfully established a session with the Whisperer Feed Handler (i.e. on dispatch of the first Heartbeat message in response to the end of synchronisation TestRequest), subsequent Heartbeat messages are sent by each party at the interval specified by the MFAPI client in it's Logon message.

Note
Unlike standard FIX sessions, MFSBE4 Heartbeat messages must be published as a metronome - no allowance should be made based on whether or not other messages are sent within each interval.
Warning
A heartbeat is deemed to have been missed if it is not received within HeartBtInt + MaxTx seconds and must result in the monitoring party issuing a TestRequest.

Gliffy Diagram
name4.0 Schema_Heartbeat_3
pagePin6

Test Request

TestRequest messages may be issued by either party and under normal circumstances result in a Heartbeat being sent in response, echoing the specified TestRequestID.

Tip

TestRequest messages may be used to obtain an approximate indication of message round-trip times between the MFAPI Client and the Whisperer Feed Handler.

Warning
If no Heartbeat response is received within HeartBtInt + MaxTx seconds of the issuance of the TestRequest, then the party must abort the session with a Logout message.

Gliffy Diagram
name4.0 Schema_TestRequest
pagePin4

ErrorReport

The ErrorReport is a custom, user-defined, message used by the Whisperer Feed Handler to notify the MFAPI Client when erroneous messages are received:

From Client

  • At an invalid lifecycle phase (e.g. QuoteRequest sent before the connection to the Maker Venue is established, or after the Whisperer Feed Handler has disconnected from the Venue).
  • Message is not supported by the Venue (e.g. sending a Quote to a Maker Venue).
  • Message contains invalid data.

From Venue

  • A FIX Reject or BusinessMessageReject message

Since there are scenarios where ErrorReport messages may not be delivered (e.g. during session abort sequences), these messages are persisted and will be delivered on reconnection.

Logout

Warning

All Logout messages must be echoed with a LogoutResponse.

If no LogoutResponse is received within HeartBtInt + MaxTx seconds of the issuance of the Logout, then the session and associated TCP socket connection must be dropped.

All messages received by the Whisperer Feed Handler between the exchange of Logout and LogoutResponse messages will result in ErrorReport messages.

Venue Login

Session startup behaviour is standardised across Taker, Maker and CLOB Venue types as follows:

  • MFAPI Client first establishes connection to Whisperer with Logon & LogonResponse, then connects to Venue with UserRequest (UserRequestType=LogOnUser) & UserNotification (UserStatus=LoggedOn)
  • All MFAPI Client pricing/trading requests sent before this will be rejected by Whisperer via ErrorReports.
Note
titleTODO

Illustrate multiple logon attempts to venue - 5 attempts, one minute interval, then logout to client. Eg Consider Reuters MAPI.

Note
titleTODO

Illustrate what happens when Venue or Client connection is dropped.

Note
titleTODO

Illustrate EOD session/seq num resets.

Note
titleTODO

Multiplexing - if we have multuiple users connecting to single venue, and first user triggers logon, last user triggers logout, how de we support first user logout cleanly - eg their order cancellations that they need to be notified of...

Note
titleTODO

user sends initiates a transaction after after receiving a loggedout user notification

  • for the remainder of the trading week.


Note
titlemsgSeqNum

This field should never be reset intra-week, for any session type.

If the Client should disconnect from Whisperer during the trading week, it must continue the message sequence when re-establishing the session.


Additional Material

Further detail is provided in the following page(s):

2
Children Display
Gliffy Diagram
name4.0 Schema_Heartbeat.03
pagePin