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