Financial services — Financial information eXchange session layer — Part 2: FIX session layer

This document provides the normative specification of the FIX session layer standard and its session profiles.

Titre manque — Partie 2: Titre manque

General Information

Status
Published
Publication Date
11-Apr-2022
Current Stage
6060 - International Standard published
Start Date
12-Apr-2022
Due Date
24-Jul-2022
Completion Date
12-Apr-2022
Ref Project

Buy Standard

Standard
ISO 3531-2:2022 - Financial services — Financial information eXchange session layer — Part 2: FIX session layer Released:4/12/2022
English language
79 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

INTERNATIONAL ISO
STANDARD 3531-2
First edition
2022-04
Financial services — Financial
information eXchange session layer —
Part 2:
FIX session layer
Reference number
ISO 3531-2:2022(E)
© ISO 2022

---------------------- Page: 1 ----------------------
ISO 3531-2:2022(E)
COPYRIGHT PROTECTED DOCUMENT
© ISO 2022
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may
be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on
the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below
or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
ii
  © ISO 2022 – All rights reserved

---------------------- Page: 2 ----------------------
ISO 3531-2:2022(E)
Table of Contents
Foreword . vi
Introduction . vii
1 Scope . 1
2 Normative references . 1
3 Terms and definitions . 1
4 FIX session . 4
4.1 General . 4
4.2 Sequence numbers . 5
4.3 Identifying the FIX session. 6
4.3.1 General . 6
4.3.2 The FIX session profile . 6
4.3.3 Identification of FIX session peers . 6
4.3.4 Validation of SendingTime(52) . 7
4.3.5 Additional fields available for peer identification . 7
4.4 Establishing a FIX connection . 7
4.4.1 Transport layer requirements . 7
4.4.2 Using the TestMessageIndicator(464) to explicitly identify testing . 8
4.4.3 Application layer encryption . 8
4.4.4 Heartbeat interval . 8
4.4.5 Heartbeat interval determination . 8
4.4.6 Maximum message size . 9
4.4.7 Specifying application version . 9
4.4.8 Specifying supported message types .10
4.4.9 Identification of application system and FIX session processor . 10
4.4.10 Responding to a request to establish a FIX session . 10
4.4.11 Initial synchronization of messages in a FIX connection . 13
4.4.12 Synchronization after successful logon .13
4.5 Extended features for FIX session and FIX connection initiation . 17
4.5.1 Using NextExpectedMsgSeqNum(789) to synchronize a FIX session . 17
4.5.2 Using ResetSeqNumFlag(141) to reset FIX session for 24 h connectivity . 19
4.5.3 Using ResetSeqNumFlag(141) to reset FIX session during FIX connection establishment
19
4.5.4 Using initiator state to restore acceptor session state . 19
4.6 Message exchange during a FIX connection .20
4.6.1 FIX connection keep alive (heartbeat) . 21
4.6.2 Garbled message processing .21
4.6.3 Missing sequence number .21
4.6.4 Rejecting invalid messages .21
4.6.5 Test Request Processing .22
4.7 FIX connection termination .23
4.7.1 Normal logout processing .24
4.7.2 Logout without acknowledgement from peer .25
4.7.3 Logout with retransmission of missed messages . 26
4.7.4 When to terminate a FIX connection by terminating the transport layer connection
instead of sending a Logout(35 = 5) .27
4.8 Extended features for FIX connection Termination .27
4.8.1 Using NextExpectedMsgSeqNum(789) when terminating FIX connection due to invalid
MsgSeqNum(34) .27
4.9 Message recovery .28
4.9.1 Ordered message processing .28
4.9.2 Request retransmission of messages.28
4.9.3 Responding to a ResendRequest(35 = 2) message . 31
© ISO 2022 – All rights reserved iii

---------------------- Page: 3 ----------------------
ISO 3531-2:2022(E)
4.9.4 Possible duplicates .32
4.9.5 Gap fill process .32
4.9.6 Sequence reset .34
4.9.7 Processing inbound possible duplicate messages (PossDup(43) set to “Y”) . 35
4.9.8 Processing gaps when receiving FIX session layer messages . 35
4.10 Resending an unacknowledged application message . 36
4.10.1 The difference between application layer resend and session layer retransmission . 37
4.11 FIX session state matrix .38
4.11.1 FIX logon process state transition diagram . 40
4.11.2 FIX logout process state transition diagram . 41
5 FIX session profiles . 42
5.1 FIX.4.2 session profile .42
5.1.1 Profile identification .42
5.1.2 Application version identification . 42
5.2 FIX4 session profile .43
5.2.1 Profile identification .43
5.2.2 Application version identification . 43
5.3 FIXT session profile .43
5.3.1 Profile identification .43
5.3.2 Multiple application version support over a single FIXT session . 43
5.3.3 Session default application version identification . 43
5.3.4 Message type default application version . 44
5.3.5 Explicit application version per message . 44
5.3.6 Use of extension packs .44
5.3.7 Use of a custom application version . 45
5.4 Lightweight FIXT (LFIXT session profile) . 45
5.4.1 Profile identification .46
5.4.2 Application version identification . 46
5.4.3 LFIXT transport layer requirements . 46
5.4.4 LFIXT compatible mode .46
5.4.5 LFIXT succinct mode .47
5.4.6 LFIXT and FIXT operating mode interoperability . 47
5.4.7 Validation of message sequence numbers. 48
5.4.8 Application layer recovery .48
5.4.9 LFIXT initiator connects to LFIXT acceptor . 48
5.4.10 FIXT initiator connects to LFIXT acceptor (compatible mode) . 50
5.4.11 Receipt of ResendRequest(35 = 2) message from a FIXT peer . 53
5.4.12 Processing invalid messages .55
6 FIX message routing . 55
6.1 Message routing details – one firm-to-one firm (point-to-point) . 55
6.2 Message routing details – third party message routing . 55
7 Transmitting alternatively encoded messages over a FIX session . 56
7.1 Use of Attachment group .57
8 Components . 57
8.1 AttachmentGrp .57
8.2 AttachmentKeywordGrp .58
8.3 HopGrp .58
8.4 MsgTypeGrp .59
8.5 StandardHeader .59
8.6 StandardTrailer .61
9 Messages . 61
9.1 Heartbeat message .61
9.2 TestRequest message .62
9.3 ResendRequest message .62
iv © ISO 2022 – All rights reserved

---------------------- Page: 4 ----------------------
ISO 3531-2:2022(E)
9.4 Reject message .62
9.5 SequenceReset message .63
9.6 Logout message .63
9.7 Logon message .64
9.8 XMLnonFIX message .66
10 Fields . 66
11 Code sets . 72
11.1 ApplLevelRecoveryIndicatorCodeSet .72
11.2 ApplVerIDCodeSet .73
11.3 AttachmentEncodingTypeCodeSet .73
11.4 EncryptMethodCodeSet .74
11.5 GapFillFlagCodeSet .74
11.6 MsgDirectionCodeSet .74
11.7 MsgTypeCodeSet .75
11.8 PossDupFlagCodeSet .75
11.9 PossResendCodeSet .75
11.10 ResetSeqNumFlagCodeSet .76
11.11 SessionRejectReasonCodeSet .76
11.12 SessionStatusCodeSet .77
11.13 TestMessageIndicatorCodeSet .77
Bibliography . 78

© ISO 2022 – All rights reserved v

---------------------- Page: 5 ----------------------
ISO 3531-2:2022(E)
Foreword
ISO (the International Organization for Standardization) is a worldwide federation of national
standards bodies (ISO member bodies). The work of preparing International Standards is normally
carried out through ISO technical committees. Each member body interested in a subject for which a
technical committee has been established has the right to be represented on that committee.
International organizations, governmental and non-governmental, in liaison with ISO, also take part in
the work. ISO collaborates closely with the International Electrotechnical Commission (IEC) on all
matters of electrotechnical standardization.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for the
different types of ISO documents should be noted (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject of
patent rights. ISO shall not be held responsible for identifying any or all such patent rights. Details of
any patent rights identified during the development of the document will be in the Introduction and/or
on the ISO list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and
expressions related to conformity assessment, as well as information about ISO's adherence to the
World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see
www.iso.org/iso/foreword.html.
This document was prepared by FIX Trading Community (as FIX Session Layer Technical Specification)
and drafted in accordance with its editorial rules. It was assigned to Technical Committee ISO/TC 68,
Financial services, Subcommittee SC 9, Information exchange for financial services and adopted under the
“fast-track procedure”.
A list of all parts in the ISO 3531 series can be found on the ISO website.
Any feedback or questions on this document should be directed to the user’s national standards body. A
complete listing of these bodies can be found at www.iso.org/members.html.
vi © ISO 2022 – All rights reserved

---------------------- Page: 6 ----------------------
ISO 3531-2:2022(E)
Introduction
FIX session protocol was written to be independent of any specific communications protocol (e.g. X.25,
async, TCP/IP) or physical medium (e.g. copper, fibre, satellite) chosen for electronic data delivery. It
offers a reliable stream where a message is delivered once and in order. The FIX session layer is
designed to survive and resume operation in the event of the loss of transport level connections caused
by any type of failure, including network outage, application failure or computer hardware failures.
The session layer is concerned with the ordered delivery of data while the application level defines
business-related data content. This document focuses on the ordered delivery of data using the “FIX
session protocol”.
The FIX session protocol is implemented using the FIX tagvalue encoding syntax for the standard
header, standard trailer and the session level messages which make up the FIX session protocol. It is
possible to send messages using other encodings, such as the other FIX-defined encodings (e.g. FIXML,
SBE, JSON, GPB, ASN.1) or non-FIX-defined encodings (e.g. XML, FpML, ISO 20022 XML, JSON).
The Financial Information eXchange session layer is used to provide reliable and recoverable messaging
for electronic trading. The protocol is intended for use by asset managers, trading firms, brokerages,
trading venues, clearing houses, custodians, depositories, asset servicers and others involved in the
trading life cycle activities of a wide range of financial instruments. The FIX session layer functionality is
a realization of the ISO/IEC 7498-1 Open System Interconnection basic reference model level 5 session
layer.
© ISO 2022 – All rights reserved vii

---------------------- Page: 7 ----------------------
INTERNATIONAL STANDARD ISO 3531:2022(E)
Financial services — Financial information eXchange
session layer —
Part 2:
FIX session layer
1 Scope
This document provides the normative specification of the FIX session layer standard and its session
profiles.
2 Normative references
There are no normative references in this document.
3 Terms and definitions
3.1
session layer message
message carried over the FIX session that is integral to the operation of the FIX session
3.2
application message
message that is carried over a FIX session to accomplish some business purpose
Note 1 to entry: Examples of a business purpose include an order to buy or sell a financial instrument, reporting
market data or reporting an execution of a trade.
3.3
message type
identifier (code) that defines the type of message being sent
Note 1 to entry: The message type for the FIX session is a case-sensitive string encoded in the MsgType(35) field.
3.4
valid FIX message
session or application message that is a tagvalue encoded string of octets that is properly formed
according to the FIX tagvalue encoding specification
3.5
FIX session processor
combination of computer hardware, firmware and software that implements the FIX session layer
Note 1 to entry: Commonly referred to as a FIX Engine.
3.6
initiator
FIX session processor that establishes the transport layer connection and initiates the session via
transmission of the initial Logon(35=A) message
© ISO 2022 – All rights reserved 1

---------------------- Page: 8 ----------------------
ISO 3531-2:2022(E)
3.7
acceptor
FIX session processor that is able to establish a transport layer connection and receive Logon(35=A)
requests from FIX session initiators to start or resume a FIX session
3.8
rules of engagement
specification, usually provided in document form, that describes a specific use of FIX
Note 1 to entry: Often referred to as a FIX service offering. FIX Orchestra is a standard that may be used to specify
machine-readable rules of engagement.
3.9
peer
FIX session processor being communicated with over a FIX session
Note 1 to entry: The peer of the initiator is the acceptor. The peer of the acceptor is the initiator. The initiator and
acceptor are peers.
3.10
counterparty
firm, legal entity or individual agreeing to use the FIX session layer to conduct some form of business
endeavour
3.11
NextNumIn
Each FIX session processor must keep track of the next message sequence number it is expecting to
receive from its peer to guarantee ordered delivery of messages over the life of a FIX session that may
span multiple FIX connections. The next expected incoming sequence number (NextNumIn) is
compared to the value in the MsgSeqNum(34) field in each message received from the peer.
3.12
NextNumOut
Each FIX session processor must keep track of the next outbound sequence number (NextNumOut) it
will send to its peer over a FIX connection.
3.13
retransmission
resending of a message that was previously sent in order to resynchronize the FIX session
Note 1 to entry: A retransmitted message uses the original MsgSeqNum(34) value with PossDupFlag(43)=Y.
3.14
resend
application message being resent by an application layer because it has not received an application
layer acknowledgement for the message
Note 1 to entry: A resend may only be initiated by the application layer, not the session layer. The determination
of whether the message was previously received is the responsibility of the application layer, not the session layer.
3.15
gap fill
process to resolve gaps in message sequence numbers within a FIX session
2 © ISO 2022 – All rights reserved

---------------------- Page: 9 ----------------------
ISO 3531-2:2022(E)
3.16
application version
The FIX session layer provides fields to communicate versions of the application layer messages. The
FIX Trading Community defines standard application versions.
3.17
extension pack
approved addition to the FIX standard
Note 1 to entry: The granularity of an extension pack may vary widely from a single enumeration value addition to
the definition of entire new categories of messages. Extension packs are identified by a sequential integer number
and must be applied in order. An extension pack is considered available for use if it has been approved and
published by the FIX Global Technical Committee. Extension packs are created on an as-needed basis and are
generally driven by community requests. An extension pack is cumulative, in that the artefacts (Orchestra file,
FIXimate) include all previous extension packs. When an extension pack is published, it becomes the FIX Latest
version of FIX.
3.18
session profile
extension or r
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.