FIXP-specification

A FIX standard for high performance message exchange

FIX Performance Session Layer (FIXP) is a lightweight protocol designed to replace the traditional FIX session protocol (known officially as FIXT) for high performance use cases. It supports both point-to-point exchange of application messages as well as multicasts for market data and the like.

Performance

The goal of this effort was to create an enhanced session protocol that can provide reliable, highly efficient, exchange of messages to support high performance financial messaging, over a variety of transports. The protocol is fit for purpose for current high message rates, low latency environments in financial markets, but should be to every extent possible applicable to other business domains.

Protocol Layering

This standard endeavors to maintain a clear separation of protocol layers, as expressed by the Open Systems Interconnection model (OSI). The responsibilities of a session layer are establishment, termination and restart procedures and rules for the exchange of application messages.

The protocol shall be independent of message encoding (presentation layer), to provide the maximum utility. Encoding independence applies both to session layer messages specified in this document as well as to application messages. Implementation may be simpler if session protocol messages are encoded the same way as application messages, but that is not a requirement of this session protocol.

FIXP is transport independent; it works on TCP streams as well as datagram oriented transports.

Unlike the traditional FIX session layer protocol, FIXP does not impose a verbose header on application messages.

Design principals

SBE design strives for direct data access without complex transformations or conditional logic. This is achieved by:

  • Usage of native binary data types and simple types derived from native binaries, such as prices and timestamps.
  • Preference for fixed positions and fixed length fields, supporting direct access to data and avoiding the need for management of heaps of variable-length elements which must be sequentially processed.

Appropriate Delivery Guarantees

FIXP supports a choice of message flow types:

  • Recoverable (missed messages are retransmitted)
  • Unsequenced (sequencing not needed at the session layer because it is provided at another layer)
  • Idempotent (operations guaranteed to be applied only once)
  • None (for a one-way flow of messages).

The protocol supports asymmetric flows, such as an idempotent flow of orders into a market with recoverable execution reports outbound.

Explicit versioning

It is not always practical to update all message publishers and consumers simultaneously. Within certain constraints, message schemas and wire formats can be extended in a controlled way. Consumers using an older version of a schema should be compatible if interpretation of added fields or messages is not required for business processing.

Point-to-Point and Multicast Communications

FIXP allows the communication of messages to multiple receivers (multicast) for applications such as market data as well as point-to-point communications.

Session Lifetime

Session creation is cheap, and each session is identified by a statistically unique identifier. FIXP separates session identifier from business entity identifiers.

Sessions with recoverable flows have an explicit end of logical flow, as distinguished from simple unbinding of its transport. Sessions that have not reached their logical end may be re-established and re-synchronized. On the other hand, a non-recoverable session ends when its transport is terminated. Subsequent message exchange is achieved by negotiating a new session with a new session ID.

Message Sequencing

FIXP only sequences application messages, not session layer messages. This makes message recovery deterministic, and by design, sequencing issues do not cause problems with session establishment. On reliable TCP streams the sequencing is implicit after a market message and on unreliable streams such as UDP, the sequencing is per packet.

Authors and Contributors

The FIXP standard was developed by the High Performance Working Group of FIX Trading Community™, the non-profit, industry-driven standards body at the heart of global trading.

Implementations

We will post links to open source implementations of FIXP. Implementors, contact one of the owners of the FIXTradingCommunity/fixp-specification repository.