FIXP Use Cases
These use cases contain sample values for illustration purposes only.
Contents
- 1 Initialization
- 2 Binding
- 3 UnBinding
- 4 Transferring
- 4.1 Sequence
- 4.2 Sequence (higher sequence number)
- 4.3 Sequence (lower sequence number)
- 4.4 Sequence (heartbeat)
- 4.5 Retransmission Request
- 4.6 Retransmission (Concurrent)
- 4.7 Retransmission (Interleaving)
- 4.8 Retransmission Reject (Invalid FromSeqNo)
- 4.9 Retransmission Reject (Invalid UUID)
- 4.10 Retransmission Reject (Request Limit Exceeded)
- 4.11 Retransmission Gap Fill
- 5 COD Scenarios
- 5.1 Salient Points
- 6 UUID Scenarios
Initialization
Session negotiation
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 |
---|---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|
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 |
---|---|---|---|---|---|---|---|---|
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 |
---|