Technical Specification

Version 1.0 – Draft Standard – September 6, 2016

THIS DOCUMENT IS A DRAFT STANDARD FOR A PROPOSED FIX TECHNICAL STANDARD. A DRAFT STANDARD

HAS BEEN APPROVED BY THE GLOBAL TECHNICAL COMMITTEE AS THE FINAL STEP IN CREATING A NEW FIX

TECHNICAL STANDARD. POTENTIAL ADOPTERS ARE STRONGLY ENCOURAGED TO BEGIN WORKING WITH

THE DRAFT STANDARD AND TO PROVIDE FEEDBACK TO THE GLOBAL TECHNICAL COMMITTEE AND THE

WORKING GROUP THAT SUBMITTED THE PROPOSAL. THE FEEDBACK TO THE DRAFT STANDARD WILL

DETERMINE WHEN TWO INTEROPERABLE IMPLEMENTATIONS HAVE BEEN ESTABLISHED AND THE DRAFT

STANDARD CAN BE PROMOTED TO BECOME A NEW FIX TECHNICAL STANDARD.

Table of Contents

Introduction

The FIX High Performance Working Group set about defining a set of additional concrete encodings. The intent of these encodings was to efficiently communicate the FIX trading protocol. A decision was taken early on that none of these encodings be bound in and of themselves solely to the use of FIX Protocol. A problem and a requirement arose during the development of these additional encodings. What mechanism could be provided that would permit message processors, such as network protocol analyzers and heterogeneous communication gateways, to determine an application message boundary and the encoding of that message. After considerable deliberation, an approach was selected to create a simple and primitive message framing header that would communicate two pieces of information, the length of a message and the encoding type of that message. Additional requirements were identified. The goal was to make the framing header open and available to support existing and future encoding types and have the ability to reserve a set of encoding types to permit user defined encodings. The FIX Simple Open Framing Header (“the SOF Header”) we believe meets these requirements.

Authors

NameAffiliationRole
Northey, JimThe LaSalle Technology Group, LLCAuthor, Editor
Furuhed, AndersPantor EngineeringAuthor
Mendelson, DonCME Group, Inc.Author
Kapur, AdityaCME Group, Inc.Contributor
Malatestinic, GregJordan & JordanContributor
Malabre, FredCME Group, Inc.Contributor
Klein, HannoDeutsche Boerse GroupContributor
Andersson, RolfPantor EngineeringContributor

Requirements

Business Requirements

Solution shall be open to support existing and future encoding types.

Solution shall permit identification of new versions of encodings.

Solution shall support FIX and non-FIX encodings.

Technical Requirements

Provide a simple mechanism for message processing application to identify the length of a message.

Provide a simple mechanism for message processing applications to identify the encoding of the message.

Provide a mechanism to inventory and publish a list of encoding types.

Issues and Discussion Points

NONE

Relevant and Related Standards

Related StandardVersionReference locationRelationshipNormative
SBE1.0SOF Header can be used with SBE
FIX GPB1.0SOF Header can be used with FIX encoding using GPB
FIX4.2, 4.4, 5.0SP2SOF Header can be used with FIX Tag=value encodings
FAST1.0, 1.1, 1.2SOF Header can be used with FIX encoding using FAST
FIX ASN.11.0SOF Header can be used with FIX encoding using ASN.1
XMLSOF Header can be used with XML
FIX JSONFIX plans a FIX standard encoding for JSON
FIX BSONFIX plans a FIX standard encoding for BSON

Intellectual Property Disclosure

No disclosures required.

Definitions

TermDefinition
CODECEncoder / Decoder – a processor that can encode and decode encoded messages.
MessageA stream of 1..n bytes of information of known length and identified encoding.
Network Byte OrderInteger values encoding using Big Ending byte order.

Simple Open Framing Header

The Simple Open Framing Header is six octets in length consisting of two fields, the Message_Length and Encoding_Type. The purpose of the Simple Open Framing Header will provide a simple mechanism to process messages from a stream that can have multiple encodings. Message processors are then able to skip over (ignore) any messages for which a CODEC is unavailable.

Simple Open Framing Header Fields

The Message Framing Header shall consist of two fields.

The Simple Open Framing Header is defined to contain the following information:

Message_Length field

The Message_Length shall be defined to be the length in octets (i.e. bytes) of a message inclusive of the length of the Simple Open Framing Header.

The Message_Length field shall be the first field in the Simple Open Framing Header.

The Message_Length field shall be four octets in length, permitting a maximum message size of 2^32.

Encoding_Type field

The Encoding_Type field shall be defined to be an integral enumeration whose value range shall be managed by the FIX Trading Community. The Encoding_Type shall include well known encodings. The Encoding_Type shall reserve a range of values for user defined encodings.

The Encoding_Type field shall be the second field in the Simple Open Framing Header.

The Encoding_Type field shall be two octets in length, permitting the identification of 2^16 distinct encoding types.

The following encoding types are defined initially as part of the standard. Future encoding types will be defined as part of the standards process.

Simple Open Framing Header – Encoding_Types

Encoding_TypeValues
Private User Defined0x0001 through 0x00FF
FIX SBE Version 1.0 Big Endian0x5BE0
FIX SBE Version 1.0 Little Endian0xEB50
FIX GPB Version 1.00x4700
FIX ASN.1 PER Version 1.00xA500
FIX ASN.1 BER Version 1.00xA501
FIX ASN.1 OER Version 1.00xA502
FIXTV0xF000
FIXML SCHEMA Version 1.00XF100
FIX FAST0xFA01 – 0xFAFF
FIX JSON0xF500
FIX BSON0xFB00

Use of Private User Defined Encoding_Types

User defined values shall not be published.

User defined values shall not be considered to be unique and are to be implemented by counterparty agreement.

Registration of additional Encoding_Types

Encoding_Types will be reviewed and approved by the FIX Global Technical Committee. The intent of this standard is to provide open registration. The registration shall not be limited to only FIX encodings.

Encoding of the Simple Open Framing Header

The Simple Open Framing Header shall be encoded using unsigned binary integer values in Network Byte Order.

Visibility of Framing Header values

The Message_Length and Encoding_Type shall be made available to the CODEC.

This is a required section where the sub-committee or working group can provide whole or fragments of example FIX messages with actual or dummy data. These examples are useful for illustrating usage or rules specific to the business domain covered in the proposal.

NONE

The technical standard must include some plan for measuring compliance with the standard. This will either be test suites, a validation tool (such as an XML Schema document as an example).

NONE