FIXP Use Cases

FIXP Use Cases

These use cases contain sample values for illustration purposes only.  

Contents

Initialization 

Session Negotiation

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

 Server Flow

HMAC Signature

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

 Server Flow

HMAC Signature

Negotiate

 

456

T1

--

Idempotent

 --

 123

 

NegotiationResponse

456

--

T1

--

 Recoverable

-- 

Session Negotiation (Rejects) Bad HMAC Signature

For example – Valid HMAC Signature is 123 but Negotiate message is sent with HMAC Signature as 456 then it will be rejected.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

 Code

HMAC Signature

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

 Code

HMAC Signature

Negotiate

 

789

T1

--

Idempotent

 

 456

 

NegotiationReject

789

--

T1

--

 HMACNotAuthenticated

 -- 

Session negotiation (rejects) Invalid UUID

For example – PreviousUUID=456 and Negotiate is received with UUID=123 therefore since this is less than the previous UUID it will be rejected.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

 Code

HMAC Signature

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

 Code

HMAC Signature

Negotiate

 

123

T1

--

Idempotent

 --

 123

 

NegotiationReject

123

--

T1

--

InvalidUUID

 --

NegotiationResponse or Reject Not Received

For example – the Negotiate message is neither accepted nor rejected and two times the KeepAliveInterval has lapsed then a new Negotiate message should be sent.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Server Flow

HMAC Signature

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Server Flow

HMAC Signature

Negotiate

 

123

T1

--

Recoverable

 --

 123

<Two times the KeepAliveInterval has lapsed without any response>

Negotiate

 

 123

 T3

 --

 Recoverable

 --

 123

<Recommended KeepAliveInterval for CME to customer is 30 seconds>

Binding

Establishment 

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Keep Alive Interval

Next Seq No

Server Flow

HMAC Signature

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Keep Alive Interval

Next Seq No

Server Flow

HMAC Signature

Negotiate

 

123

T1

--

Idempotent

 --

 --

 --

456

 

NegotiationResponse

123

--

T1

--

 --

 --

 Recoverable

--

Establish

 

123

T2

--

--

 10

 1

 --

789

 

EstablishmentAck

123

--

T2

--

 30 (CME Interval)

 1

 --

--

Termination (Unnegotiated)

For example – Trying to send an Establish message without first Negotiating the session will result in Termination.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

 Keep Alive Interval

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

 Keep Alive Interval

Establish

 

123

T2

--

--

 10

 

Terminate

123

--

T2

Unnegotiated

 -- 

Termination (Already Established)

For example – Trying to send an Establish message when the session itself is already Negotiated and Established will result in Termination.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

 Keep Alive Interval

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

 Keep Alive Interval

Negotiate

 

123

T1

--

--

 --

 

Negotiation Response

123

--

T1

--

 --

Establish

 

123

T2

--

--

 10

 

EstablishmentAck

123

--

T2

--

 30 (CME Interval)

Establish

 

123

T3

--

--

 10

 

Terminate

123

--

T3

AlreadyEstablished

 --

Establishment Rejects (Double Establish)

For example – if a particular Session has sent an Establish message and without waiting for either EstablishmentAck or EstablishmentReject it sends another Establish then it will be Terminated.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

 Keep Alive Interval

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

 Keep Alive Interval

Negotiate

 

123

T1

--

--

 --

 

NegotiationResponse

123

--

T1

--

 --

Establish

 

123

T2

--

--

 10

Establish

 

123

T3

--

--

 10

 

Terminate

123

--

T3

EstablishInProgress

 --

Establishment Rejects (Bad HMAC Signature)

For example – valid HMAC Signature is 123 but Establishment message is sent with HMAC Signature as 456 then it will be rejected. 

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

HMAC Signature

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Code

HMAC Signature

Negotiate

 

789

T1

--

--

 012

 

NegotiationResponse

789

--

T1

--

 --

Establish

 

789

T2

--

--

 456

 

EstablishmentReject

789

--

T2

HMACNotAuthenticated

 --

EstablishmentAck or Reject Not Received

For example – the Establish message is neither accepted nor rejected and two times the KeepAliveInterval has lapsed then a new Establish message is to be sent.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Server Flow

Credentials

Keep Alive Interval

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Server Flow

Credentials

Keep Alive Interval

Negotiate

 

123

T1

--

Idempotent

--

123

 

 

NegotiationResponse

123

--

T1

--

Recoverable

--

 

Establish

 

123

T2

--

--

--

--

5

<Two times the KeepAliveInterval has lapsed without any response>

Establish

 

123

T3

--

--

--

--

5

<New Establish message should contain same UUID>

<Recommended KeepAliveInterval for CME to customer is 30 seconds>

UnBinding

Ungraceful Termination (Time Out)

When two times the KeepAliveInterval has expired and no keep alive message is received then the FIXP session is terminated ungracefully and will need to be re-established. Termination due to error does not require the sender to wait for corresponding Terminate response from counterparty.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Keep Alive Interval

Code

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Client Flow

Keep Alive Interval

Code

Negotiate

 

123

T1

--

Idempotent

 --

 --

 

NegotiationResponse

123

--

T1

--

 --

 --

Establish

 

123

T2

--

--

 10

 --

 

EstablishmentAck

123

--

T2

--

 30 (CME Interval)

 --

<Time interval greater than two times Keep Alive Interval has lapsed without any message being received>

 

Terminate

123

--

--

--

--

KeepAliveIntervalLapsed

Establish

 

123

T3

--

--

 10

 --

 

EstablishmentAck

123

--

T3

--

 30 (CME Interval)

 --

<New Establish message should be sent with same UUID>

Ungraceful Termination (sequence message received with lower sequence number)

The FIXP session could also be deliberately terminated due to Sequence message received with lower than expected sequence number and then it will need to be re-established. Termination due to error does not require the sender to wait for corresponding Terminate response from counterparty.

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Next Seq No

Client Flow

Server Flow

Code

Message Received

Message Sent

UUID

Timestamp

Request Timestamp

Next Seq No

Client Flow

Server Flow

Code

Negotiate

 

123

T1

--

 --

 Idempotent

--

--

 

NegotiationResponse

123

--

T1

 --

 

Recoverable

--

Establish

 

123

T2

--

 200

 --

--

--

 

EstablishmentAck

123

--




How was your Client Systems Wiki Experience? Submit Feedback

Copyright © 2024 CME Group Inc. All rights reserved.