Page tree
Skip to end of metadata
Go to start of metadata

Resend Request logic is the Drop Copy session mechanism by which a given system, upon detecting a higher than expected message sequence number from its counterparty, requests a range of ordered messages resent from the counterparty. The counterparty resends the requested message range sequentially until both systems are back in sequence.

  • For each resend request, it is required that the client system cannot request more than 2500 messages. FIX resend requests will be restricted to a 48 hour window.
  • Customers must wait for in-flight resend requests to be fulfilled before logging out or failing over to the backup gateway.

The following topics describe the Session Layer Resend Request:

Basic Versus Enhanced Resend Logic 

For resend requests on CME Globex, two types of resend logic are currently supported:

Important

  1. Basic FIX Resend Logic - standard FIX protocol resend request logic, which is NOT RECOMMENDED.
  2. Enhanced CME Globex Resend Logic - additional resend logic beyond that defined in the FIX protocol to facilitate rapid recovery in high transaction-per-second (TPS) scenarios which is HIGHLY RECOMMENDED.

Basic resend logic as defined by the FIX protocol will fail in the scenario in which, once a gap is detected and a resend request initiated, the counterparty continues to send incrementally out-of-sequence messages (known in FIX protocol as 'gap continuation'), each of which triggers another resend request. In high TPS situations, this will create a loop or hard disconnect.

Enhanced resend logic solves this problem by identifying any resend request sent in a 'gap continuation' scenario as a duplicate Resend Request which the counterparty can discard. Therefore a system implementing enhanced resend logic must observe the following rules:

  • A newly detected message sequence gap must be distinguished from a continuation of a gap and a new gap versus a duplicate Resend Request must be issued accordingly.
  • When a message sequence number gap is newly detected (the sequence number received is greater than expected), issue a new Resend Request on its own sequence number. The requested sequence number range must be the next expected sequence number to infinity.
  • For each subsequent message that constitutes a continuation of the gap, issue a duplicate Resend Request. This message must be sent on the same message sequence number of the original Resend Request, tag 43-PossDupFlag must be set to 'Y' and tag 122-OrigSendingTime must not be sent.
  • The FIX Engine should detect receipt of the first message sent in response to a previous Resend Request and discontinue issuing the Resend Requests marked PossDup.
  • The FIX Engine should issue a new Resend Request, if needed, only after the receipt of the counterparty's response has been completed.
  • For resend requests from the Client System to CME Globex, both basic and enhanced resend logic are supported.

Warning

Basic FIX resend logic, while currently support will be phased out. ALL CLIENT SYSTEMS WILL BE REQUIRED TO MIGRATE TO ENHANCED CME GLOBEX RESEND LOGIC. For new system development, it is imperative that enhanced CME Globex resend logic be implemented.

Basic Resend Logic from Client System to CME Globex

A description of basic FIX resend request logic is available at http://www.fixprotocol.org/specifications/.

In addition to the above, client applications implementing basic resend logic must adhere to the following:

  • Tag 122-OrigSendingTime, is required.
  • Tag 369-LastMsgSeqProcessed, is not allowed.

Client System Maximum Resend Request Limit

For each resend request, it is required that the client system cannot request more than 2500 messages. CME Group recommends that client systems request all missing messages. In response to the Resend Request from the client system, CME Group will send all non-administrative messages for the requested range.

If the client system exceeds this value, CME Globex sends a  Session Level Reject (tag 35-MsgType=3) message with tag 58-Text=Range of messages to resend is greater than maximum allowed 2500.

FIX Resend Requests 48-Hour Window Restriction

FIX Resend Requests are restricted to a 48-hour window. Resend Requests from the client system will only be fulfilled for messages with a sending time within the past 48-hour window.

Messages requested as part of a FIX resend request that falls outside of this window will not be honored and the request will be rejected. The Session Level Reject (35=3) message will include tag 5024-StartSequenceNumber, which indicates the correct starting sequence number from which a resend request can be issued for that trading day. It will also contain tag 58-Text=Resend Request Could Not Be Fulfilled.

Tag

Name

Req

Format

Valid Values

Description

5024

StartSequenceNumber

N

Int(9)


If a resend request is sent for sequence numbers that are older than the rolling 48 hour window, then this field will provide the first sequence number of the messages that can be retrieved within that window in the reject response.

Resend Request from CME Globex to Client system

Resend Request globex to client

Resend Request from Client System to CME Globex

The following example illustrates the use of the Gap Fill message during resend processing. The iLink 2 Sequence Reset (35=4) message is identified as a Gap Fill by tag 123-GapFillFlag=Y.

During normal resend processing, the Sequence Reset - Gap Fill (35=4, 123=Y) message is used when the sending application chooses not to resend specific messages (e.g., stale orders or administrative messages).

Enhanced Resend Request Gap Fill

In response to the Resend Request from the client system, CME Group will send all non-administrative messages for the requested range.

Tag 36-NewSeqNo sent on the Sequence Reset - Gap Fill message reflects the next real-time sequence number and is not indicative that any remaining missed messages are administrative.

2500 is the maximum number of missed messages that can be requested at a time. When the gap exceeds 2500 messages, client systems should send multiple Resend Request messages to recover all missed messages.

  • Each resend request should specify no less than 1,000 and no more than 2,500 messages
    • For example, a message gap of 10,000 would require a minimum of four resend requests and a maximum of ten resend requests

Tag 16-EndSeqNo should only be populated with zero if/when the remaining gap is less than 2500.

Example

  • Next real-time sequence number = 10,000
  • Application messages = 1-500, then again at 3,000-3,500
    • All other messages are administrative.

Customer expects sequence number 1

Customer CME (35=2, 7=1, 16=2500)

CustomerCME (returns application messages 1-500)

CustomerCME (sequence reset (35=4, 36=10,000) – meaning no other application messages are available within the requested range

Customer CME (35=2, 7=2501, 16=5000)

CustomerCME (sequence reset (35=4, 36=3000) – gap filling to next application message within the given range

CustomerCME (returns application messages 3000-3500)

CustomerCME (sequence reset (35=4, 36=10,000)) – no other application messages within the requested range

Customer CME (35=2, 7=5001, 16=7500)

CustomerCME (sequence reset (35=4, 36=10,000) – no application messages within the requested range

Customer CME (35=2, 7=7501, 16=0)

CustomerCME (sequence reset (35=4, 36=10,000) – no application messages within the requested range

Customer continues normal processing of real-time messages

Duplicate Resend Request from Client System to CME Globex

Enhanced Resend Request CME to Client