# Patent

## Title
Messaging methods and apparatus for use with an exchange system and/or client devices

## Abstract

Methods and apparatus for numbering messages between a client, e.g., trader system, and exchange system are described. Client device (e.g., trader system) to exchange message numbering and exchange system to client device message numbering is supported and used. As part of each successful login, a client device is provided with a client to exchange system number to be used for first transaction message sent to the system after login. The first message from the client device is checked to make sure the number sent to the client device was used in the message. This approach places the burden on the client device, e.g., trader's system, not to send old messages with the new number. Messages from the exchange to the trader system are also numbered. Messages may include a field used to communicate information provided by a trader which is not interpreted by or used by the exchange system.

## Background
RELATED APPLICATIONS
The present application claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/552,414, filed on Oct. 27, 2011 and titled “METHODS AND APPARATUS FOR USING MULTICAST MESSAGING IN A SYSTEM FOR IMPLEMENTING TRANSACTIONS”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/548,691, filed on Oct. 18, 2011 and titled “MESSAGING METHODS AND APPARATUS FOR USE IN AN EXCHANGE SYSTEM”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/543,798, filed on Oct. 5, 2011 and titled “MESSAGING METHODS AND APPARATUS FOR USE IN AN EXCHANGE SYSTEM”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/543,804, filed on Oct. 5, 2011 and titled “METHODS AND APPARATUS FOR USING MULTICAST MESSAGING IN A SYSTEM FOR IMPLEMENTING TRANSACTIONS”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/543,309, filed on Oct. 4, 2011 and titled “METHODS AND APPARATUS FOR USING MULTICAST MESSAGING IN A SYSTEM FOR IMPLEMENTING TRANSACTIONS”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/543,290, filed on Oct. 4, 2011 and titled “METHODS AND APPARATUS FOR PERFORMING RISK CHECKING”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/543,304, filed on Oct. 4, 2011 and titled “MESSAGING METHODS AND APPARATUS FOR USE IN AN EXCHANGE SYSTEM”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/417,197, filed on Nov. 24, 2010 and titled “METHODS AND APPARATUS FOR PERFORMING RISK CHECKING UNDER BROKER CONTROL”; claims the benefit of the filing date of U.S. Provisional Patent Application Ser. No. 61/426,490, filed on Dec. 22, 2010 and titled “MESSAGING METHODS AND APPARATUS FOR RESTORING MESSAGE SYNCHRONIZATION BETWEEN A TRADER'S SYSTEM AND AN ELECTRONIC COMMUNICATIONS NETWORK”; all of which are hereby expressly incorporated by reference in their entirety.


FIELD
The present application relates to messaging methods and apparatus for use with an exchange system and/or client devices and, more particularly, to message synchronization methods and apparatus that are well suited for use in a trading system such as an electronic communications network (ECN) used for trading securities and/or other items of value.
BACKGROUND
Electronic exchanges, implemented as Electronic Communication Networks (ECNs), are often used to electronically trade a wide range of commodities, stocks and/or other items having real world significance. An ECN normally receives messages, e.g., an order from a trader, performs a matching operation, and if a matching order exists, performs a trade. The resulting trade is reported to the traders which placed the matching orders and also to a public system, e.g., for updating published information about the current price of a stock, commodity or other item being traded on the exchange.
Electronic trading on an electronic exchange allows for large numbers of orders to be stored, processed, and executed at relatively low cost. The speed at which a trade can be executed is important since a delay in processing of a message including an order to buy or sell may affect the dollar amount at which the trade is made.
In the event that a trader's system, referred to herein as a trader system, or the ECN detect a miss-match in sequence numbers, indicating that either the trader system or the ECN has lost one or more messages, action to resolve the sequence number miss-match is often required. This often involves the system with the higher message sequence number communicating the messages which are missing from the other device's records.
The playback of lost or missing messages may involve a fair amount of communication given that trading sessions may go on for a long period of time, e.g., several days, and a large number of messages may be missing, e.g., as indicated by a large gap between the message sequence number used by one device and the higher message sequence number known to the other device based on previously received or transmitted messages.
The communications path between the gateway device and a trader's system is intended to be a relatively high speed communications path. A portion of the high speed communications path with the gateway may be shared by multiple traders. The messages transmitted on the high speed communications path to the client gateway are usually relatively small in terms of the amount of data they communicate. While individual messages may be short in duration, the playback of a large number of messages in order to provide a device with missing messages may place a strain on the bandwidth of the high speed communications path with the client gateway which may interfere or delay the transmission of new trading messages, e.g., orders to buy or sell a stock.
In view of the above, it should be appreciated that there is a need for improved methods of sequencing messages between an exchange system and client devices and/or for improved message formats and/or messages which facilitate the communication in exchange systems. While there is much room for improvement it should be appreciated that systems and apparatus which address one or more of the above issues are useful and desirable and that all embodiments need not address all of the above discussed problems.
SUMMARY
Methods and apparatus for numbering messages between a client, e.g., trader system, and exchange system are described. Both client device (e.g., trader system) to exchange message numbering and exchange system to client device message numbering is supported and used.
In some but not necessarily all embodiments, a client device, e.g., trader device, to exchange message includes a field for communicating information which is useful to the trader and/or broker associated with the trader. The field is referred to, in some embodiments, as an uninterpreted field since it is not interpreted or used by the exchange system to control message processing and/or other exchange system functions. The content of the uninterpreted field is passed through various devices in the exchange system and echoed back to the client/trader device in one or more response messages sent by the exchange in response to a transaction message. It should be appreciated that the client, e.g., trader device, can be used to place orders corresponding to multiple different individuals. The uninterpreted message field allows the trader device to include in transaction messages information identifying the individual customer to which the transaction message generated by the trader system corresponds and/or other information such as a client order number. Since this information is returned to the trader system, the trader device can, and in some embodiments does, use the returned information from the uninterpreted field to easily match and/or route content of transaction response messages from the exchange to an individual customer. While from the exchange perspective, the trader device is treated as a single entity for transaction purposes, the trader device and/or system is able to easily and transparently separate and route or forward information from transaction response messages to individual customers of the trader system to which the messages relate. The information included in the uninterpreted field transaction messages sent to an exchange and transaction response messages received from an exchange may, and in some embodiments is, encrypted or otherwise scrambled to render it meaningless to the exchange system. However, encryption and/or scrambling of the content of the uninterpreted field is optional. The uninterpreted field allows a trader system and/or device, to maintain and use a message numbering system with their individual clients which is independent of the message numbering system used for client device to exchange system messages and exchange responses to such messages. In fact, in most if not all embodiments, an individual customer who is being serviced by a trader using a client device such as a trader system may be shielded from, and not provided with, information on the numbering of messages used between the exchange and client device with message numbering information from the uninterpreted field being used for purposes of communicating with an individual client instead. The uninterpreted field may be relatively large in size, e.g., hundreds or even thousands of bits long, allowing the trader device to communicate and echo back several bytes of information. The size of the field may vary depending on the amount of information communicated. A size indicator indicating the size of the uninterpreted field is included in some embodiments in messages from a client device to the exchange system thereby allowing the exchange to easily determine the size of the field in such embodiments. In some other embodiments the size of the uninterpreted field is fixed and known to both client device and exchange system.
As part of each successful login, in some embodiments, a client device is provided with a client to exchange system number to be used for first transaction message sent to the system after login. The first message from the client device is checked to make sure the number sent to the client device was used in the message. This approach places the burden on the client device, e.g., trader's system, not to send old messages with the new number avoiding the burden of which might otherwise be placed on the exchange to distinguish between a repeated message sent from the trader system to the exchange. Messages from the exchange to the trader system are also numbered. The numbering of messages from the exchange to the trader system may be controlled by matching engines in the exchange. Message streams, e.g., exchange to trader response message stream, for transaction response messages may be generated on a peer stream basis, with different message streams and thus different message sequence numbers being used for messages originating from different groups of matching engines, e.g., matching engine groups responsible for maintaining order books corresponding to different securities.
An exemplary method, in accordance with some embodiments, comprises: receiving a first client to exchange system message from a client device; checking the received first client to exchange system message to determine if it includes an expected client device to exchange system message sequence number; and rejecting said first client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number.
An exemplary gateway device, in accordance with some embodiments, comprises, at least one processor configured to: receive a first client to exchange system message from a client device; check the received first client to exchange system message to determine if it includes an expected client device to exchange system message sequence number; and reject said first client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number. The exemplary gateway device further comprises memory coupled to said at least one processor.
Various features are directed to detecting a loss of message synchronization and/or messages either between the trader system and an exchange system or loss of message synchronization from the exchange to the trader system. Synchronization loss may be due to a connection being terminated for a period of time, a lost connection, etc. while a trading session is being maintained with the exchange system. The loss of message synchronization is based on messages or other communication over a shared high speed low latency path within the exchange that is used for communicating transaction messages, e.g., order messages to be processed. To avoid introducing delays into communication with other traders who's transaction messages share the same high speed communications path within the exchange as the trader system with which message synchronization is lost, message gap fill to restore message synchronization with a trader system that lost synchronization is performed via a different communications path than the shared communications path used for communicating new transaction messages. The communications path used with the exchange to support gap fill operations may be a high bandwidth path that avoids the shared low latency communications path used for communicating new transaction messages. While different communications paths may be used in the exchange for new transaction messages, e.g., orders, than is used to supply or receive gap fill messages, e.g., previous messages, both the communications path used for new transaction messages and the communications path used for gap fill messages may both use the same external connection to the trader. That is, the path between the trader and a security switch in the exchange which is not shared with other clients and/or traders is normally the same for both new transaction messages and gap fill messages while the exchange is implemented in such a way that the shared high speed communications path used for new transaction messages is avoided for gap fill operations.
An exemplary method of operating an exchange system, in accordance with some embodiments, comprises: receiving at a first device in an exchange system, a message from a trader system communicated via a first communications path, said first communications path including a shared low latency link in said exchange system; and determining that said trader system requires a message gap fill. The exemplary method further comprises: sending, in response to determining that said trader system requires a message gap fill, a signal to a second device to trigger said second device to supply one or more previously transmitted messages to the trader system via a second communications path. In some embodiments, the first device is a gateway device. In various embodiments, the shared low latency link is a link between a security switch and a gateway device which is shared by multiple traders. In some embodiments, the second device is a message logging device in the exchange.
An exemplary exchange system, in accordance with some embodiments, comprises: a first processor configured to: receive at a first device in an exchange system, a message from a trader system communicated via a first communications path, said first communications path including a shared low latency link in said exchange system; determine that said trader system requires a message gap fill; and send, in response to determining that said trader system requires a message gap fill, a signal to a second device to trigger said second device to supply one or more previously transmitted messages to the trader system via a second communications path. The exemplary exchange system further comprises a first memory coupled to said first processor.
While various embodiments have been discussed in the summary above, it should be appreciated that not necessarily all embodiments include the same features and some of the features described above are not necessary but can be desirable in some embodiments. Numerous additional features, embodiments and benefits of various embodiments are discussed in the detailed description which follows.



BRIEF DESCRIPTION OF THE FIGURES
FIG. 1 is a drawing of an exemplary system, e.g., a trading system, for implementing transactions in accordance with an exemplary embodiment.
FIG. 2 is a simplified drawing illustrating some of the elements of exemplary system of FIG. 1.
FIG. 3, comprising the combination of FIG. 3A and FIG. 3B, is a flowchart of an exemplary method of operating a gateway device in accordance with an exemplary embodiment.
FIG. 4 is a drawing of an exemplary gateway device in accordance with an exemplary embodiment.
FIG. 5 is a drawing of an exemplary assembly of modules, which may be used in the gateway device of FIG. 4, in accordance with various embodiments.
FIG. 6 illustrates an example showing an exemplary low latency communications path and an exemplary higher bandwidth communications path between a trader system and a gateway/second device.
FIG. 7 illustrates an example showing an exemplary low latency communications path and an exemplary higher bandwidth communications path between a trader system and a gateway/second device.
FIG. 8 illustrates the steps and associated signaling used in one exemplary embodiment where it is determined that a device participating in a trading session, e.g., a trader system, is missing one or more session messages.
FIG. 9, illustrates the steps and associated signaling used in one exemplary embodiment where it is determined that a device participating in a trading session, e.g., a trader system, is missing one or more session messages.
FIG. 10 is a flowchart of an exemplary method of operating an exchange system in accordance with an exemplary embodiment.
FIG. 11 is a drawing of an exemplary first device, e.g., a gateway device, in accordance with an exemplary embodiment.
FIG. 12 is a drawing of an exemplary assembly of modules that may be used in the first device of FIG. 11.
FIG. 13 is a drawing of an exemplary second device, e.g., a message logging system, in accordance with an exemplary embodiment.
FIG. 14 is a drawing of an exemplary assembly of modules that may be used in the second device of FIG. 13 in accordance with an exemplary embodiment.
FIG. 15 illustrates an exemplary unicast transaction message, e.g., communicated from a trader system to a gateway device, in accordance with an exemplary embodiment.
FIG. 16 illustrates an exemplary multicast transaction message, e.g., communicated within an exchange system, in accordance with an exemplary embodiment.
FIG. 17 illustrates an exemplary multicast transaction response message, e.g., communicated within an exchange system, in accordance with an exemplary embodiment.
FIG. 18 illustrates an exemplary unicast transaction response message, e.g., communicated from a gateway device to trader system, in accordance with an exemplary embodiment.



DETAILED DESCRIPTION
FIG. 1 is a drawing of an exemplary system 100, e.g., a trading system, for implementing transactions in accordance with an exemplary embodiment. Exemplary system 100 includes a plurality of client systems (client system 1 102, . . . , client system M 104), a plurality of broker systems (broker system 1 106, . . . , broker system N 108), and an exchange system 110. Client system 1 102 includes a plurality of client devices (client device 1,1 112, e.g., trader system 1,1, . . . , client device 1,X 114, e.g., trader system 1,X). Client system M 104 includes a plurality of client devices (client device M,1 116, e.g., trader system M,1, . . . , client device M,X 118, e.g., trader system M,X). Exchange system 110 includes a security switch 120, a plurality of gateway groups (Gateway group 1 122, . . . , Gateway group L 124), a component interconnect switch 126, a plurality of matching engine groups (matching engine group 1 128, . . . , matching engine group L 130), a monitoring system 131, a control device 132, a message logging system 134, and a market data communications system 136. Gateway group 1 122 includes a plurality of gateways (GW1,1 138, . . . GW1,R 140). Gateway group L 124 includes a plurality of gateways (GWL,1 142, . . . GWL,R 144). Matching engine group 1 128 includes a plurality of matching engines (ME1,1 146, . . . ME1,G 148). Matching engine group L 130 includes a plurality of matching engines (MEL,1 150, . . . MEL,G 152). The trader systems (112, . . . , 114, 116, . . . , 118), broker systems (106, . . . , 108) and gateways (138, . . . , 140, 142, . . . , 144) are coupled to the security switch. The gateways (138, . . . , 140, 142, . . . , 144), matching engines (146, . . . , 148, 150, . . . , 152), control device 132, message logging system 134, and market data communications system 136 are coupled to the component interconnect switch 126. Connection 160 couples the component interconnect switch 126 to the security switch 120.
Drawing 200 of FIG. 2 is a simplified drawing illustrating some of the elements of exemplary system 100 of FIG. 1. Client device 112, e.g., a trader system, logs into the exchange system 110 via gateway 138 and starts an ongoing session. In response to the session login, the gateway device 138 provides the client device 112 with (i) an exchange system to client device message sequence number and (ii) a client device to exchange system message sequence number corresponding to each of one or more message streams. In some embodiments, each message stream corresponds to a matching engine. The client device should include the provided client device to exchange system message sequence number in the first client device to exchange system message that it sends to the exchange system. The gateway 138 checks the first client device to exchange system message that it receives from the client device 112 to determine if the provided client device to exchange system message sequence number was included.
In some embodiments, a path, a shared low latency path, including connection 161 is used for communicating new transaction messages from gateway 138 to client device 112. In some embodiments, a path, e.g., a high bandwidth path, including connection 160 is used during message gap fill operations, e.g., when communicating stored messages from message logging system 134 to a client device, e.g., client device 112.
FIG. 3, comprising the combination of FIG. 3A and FIG. 3B, is a flowchart 300 of an exemplary method of operating a gateway device in accordance with an exemplary embodiment. The gateway device implementing the method of flowchart 300 is, e.g., a gateway device of an exchange system.
Operation of the exemplary method starts in step 302, where the gateway device is powered on and initialized. Operation proceeds from step 302 to step 304. In step 304 the gateway device receives a session login. Then, in step 306 the gateway device provides a client device to exchange system message sequence number to a client device. In various embodiments, the client device to exchange system message sequence number, e.g., of step 306, is provided in response to a session login, e.g., of step 304, and the provided client device to exchange system message sequence is provided for inclusion in the next client to exchange system message.
Operation proceeds from step 306 to step 308, and in some embodiments, to step 309. In step 308 the gateway device provides an exchange system to client device message sequence number to the client device. In some embodiments, the exchange system to client device message sequence number provided in step 308 corresponds to a first message stream. In step 309 the gateway device provides a second exchange system to client device message sequence number to said client device, said second exchange system to client device message sequence number corresponding to a second message stream. For example, the provided exchange system to client device message sequence number of step 308 may correspond to a first message stream corresponding to a first matching engine group and the client device, while the provided second exchange system to client device message sequence number of step 309 may correspond to the a second matching engine group and the client device. In various embodiments, a client device may have more than two exchange system to client device message streams and may be provided with an exchange system to client device message sequence number corresponding to each stream, e.g., message streams corresponding to more than two matching engine groups. Operation proceeds from step 308 and step 309 to step 310.
In step 310 the gateway device receives a first client to exchange system message from the client device. In some embodiments, the received first client to exchange system message includes an uninterpreted field, said uninterpreted field including client device supplied information which is to be returned without alternation to said client device in any response message corresponding to said received first client to exchange system message. In some such embodiments, the uninterpreted field includes information used by the client device or a broker to identify or track client to exchange messages and/or identify individuals upon who's behalf a trader is implementing an order or other transaction.
In some but not necessarily all embodiments, a client device, e.g., trader device, to exchange message includes a field for communicating information which is useful to the trader and/or broker associated with the trader. The field is referred to, in some embodiments, as an uninterpreted field since it is not interpreted or used by the exchange system to control message processing and/or other exchange system functions. The content of the uninterpreted field is passed through various devices in the exchange system and echoed back to the client/trader device in one or more response messages sent by the exchange in response to a transaction message. It should be appreciated that the client, e.g., trader device, can be used to place orders corresponding to multiple different individuals. The uninterpreted message field allows the trader device to include in transaction messages information identifying the individual customer to which the transaction message generated by the trader system corresponds and/or other information such as a client order number. Since this information is returned to the trader system, the trader device can, and in some embodiments does, use the returned information from the uninterpreted field to easily match and/or route content of transaction response messages from the exchange to an individual customer. While from the exchange perspective, the trader device is treated as a single entity for transaction purposes, the trader device and/or system is able to easily and transparently separate and route or forward information from transaction response messages to individual customers of the trader system to which the messages relate. The information included in the uninterpreted field transaction messages sent to an exchange and transaction response messages received from an exchange may, and in some embodiments is, encrypted or otherwise scrambled to render it meaningless to the exchange system. However, encryption and/or scrambling of the content of the uninterpreted field is optional. The uninterpreted field allows a trader system and/or device, to maintain and use a message numbering system with their individual clients which is independent of the message numbering system used for client device to exchange system messages and exchange responses to such messages. In fact, in most if not all embodiments, an individual customer who is being serviced by a trader using a client device such as a trader system may be shielded from, and not provided with, information on the numbering of messages used between the exchange and client device with message numbering information from the uninterpreted field being used for purposes of communicating with an individual client instead. The uninterpreted field may be relatively large in size, e.g., hundreds or even thousands of bits long, allowing the trader device to communicate and echo back several bytes of information. The size of the field may vary depending on the amount of information communicated. A size indicator indicating the size of the uninterpreted field is included in some embodiments in messages from a client device to the exchange system thereby allowing the exchange to easily determine the size of the field in such embodiments. In some other embodiments the size of the uninterpreted field is fixed and known to both client device and exchange system.
Operation proceeds from step 310 to step 312. In step 312 the gateway device checks the received first client to exchange system to determine if it includes an expected client device to exchange system message sequence number. In various embodiments, the expected client device to exchange system sequence number is the provided client device to exchange system message sequence number of step 306. Operation proceeds from step 312 to step 314. In step 314, if the determination of step 312 was that the expected client device to exchange system message sequence number as included in the received first client to exchange system message, then operation proceeds from step 314 to step 322; otherwise, operation proceeds from step 314 to step 316.
In step 316 the gateway device rejects said first client to exchange system message. Then, in step 318 the gateway device receives a second client to exchange system message from the client device. Operation proceeds from step 318 to step 328, via connecting node A 320. In step 328 the gateway device checks the received second client device to exchange system message to determine if it includes said expected client device to exchange system message sequence number. Operation proceeds from step 328 to step 330. In step 330, if the determination of step 328 was that the expected client device to exchange system message sequence number as included in the received second client to exchange system message, then operation proceeds from step 330 to step 336; otherwise; operation, proceeds from step 330 to step 332. In step 332 the gateway device rejects said second client to exchange system message. Then, in step 334 the gateway device notifies the client device of the rejected message.
Returning to step 322, in step 322 the gateway device accepts the first client to exchange system message. Operation proceeds from step 322 to step 324 in which the gateway device increments the expected client device to exchange system message sequence number. Operation proceeds from step 324, via connecting node B 326, to step 340.
Returning to step 336, in step 336, the gateway device accepts said second client to exchange system message. Then, in step 338 the gateway device increments said expected client device to exchange system message sequence number. Operation proceeds from step 338 to step 340.
In step 340, the gateway sends at least a portion of the accepted client of exchange system message, e.g., first client to exchange system message of step 322 or second client to exchange system message of step 336, to a matching engine. Operation proceeds from step 340 to step 342 in which the gateway device receives a response from the matching engine. Operation proceeds from step 342 to step 344. In step 344 the gateway device transmits a first exchange system to client device message, e.g., a transaction response message, including said exchange system to client device message sequence number, e.g., the exchange system to client device message sequence number provided in step 308, to said client device. In some embodiments, the transaction response message is sent to the client device in step 344 is in response to the first client to exchange system message, and the transaction response message includes the content of said uninterpreted field, which was received from the client device, in addition to at least one of an order acknowledgement and order completion information. Operation proceeds from step 344 to step 346 in which the gateway device increments the exchange system to client device message sequence number to generate an updated exchange system to client device message sequence number. Then, in step 348 the gateway device sends a second exchange system to client device message to said client device, said exchange system to client device message including said updated exchange system to client device message sequence number. In various embodiments, the first and second exchange system to client device messages correspond to the same message stream. In various embodiments, the second exchange system to client device message is the next exchange system to client device message sent after the first exchange system to client device message.
Operation proceeds from step 348 to step 350. In step 350 the gateway device transmits a third exchange system to client device message to said client device, the third exchange system to client device message corresponding to the second message stream and including the second exchange system to client device message sequence number. Operation proceeds from step 350 to step 352. In step 352 the gateway device increments said second exchange system to client device message sequence number to generate an updated second exchange system to client device message sequence number. Then in step 354 the gateway device transmits a fourth exchange system to client device message to said client device, the fourth exchange system to client device message corresponding to the second message stream and including said updated second exchange system to client device message sequence number.
FIG. 4 is a drawing of an exemplary gateway device 400 in accordance with an exemplary embodiment. Exemplary gateway device 400 is, e.g., any of the gateway devices (138, . . . , 140, 142, . . . , 144) of exchange system 110 of system 100 of FIG. 1. Exemplary gateway device 400 includes an I/O interface 406, a processor 408, a security switch interface 410, a component interconnect switch interface 411 and a memory 412 coupled together via a bus 409 over which the various elements may interchange data and information. The I/O interface 406 is coupled to a display 402 and an input device 404, e.g., keyboard, keypad, mouse, etc. Memory 412 includes routines 414 and data/information 416. The processor 408, e.g., a CPU, may execute the routines 414 and use the data/information 416 in memory 412 to implement a method, e.g., a method in accordance with flowchart 300 of FIG. 3. Data/information 416 includes client device data/information corresponding to a plurality of client devices (client device 1 data/information 418, . . . , client device N data/information 420). Client device 1 data/information 418 includes a current client device 1 to exchange system message sequence number 422, a plurality of current exchange system to client device 1 message sequence numbers corresponding to different streams (a current exchange system to client device 1 message sequence number for message stream 1 424, . . . , a current exchange system to client device 1 message sequence number for message stream N 425), a received client device 1 to exchange system message 426, and a plurality of generated exchange system to client device 1 messages corresponding to different message streams (a generated exchange system to client device 1 message for message stream 1 428, . . . , a generated exchange system to client device 1 message for message stream N 429). Client device N data/information 420 includes a current client N device to exchange system message sequence number 430, a plurality of current exchange system to client device N message sequence numbers corresponding to different streams (a current exchange system to client device N message sequence number for message stream 1 432, . . . , a current exchange system to client device N message sequence number for message stream N 433), a received client device N to exchange system message 434, and a plurality of generated exchange system to client device N messages corresponding to different message streams (a generated exchange system to client device N message for message stream 1 436, . . . , a generated exchange system to client device N message for message stream N 437). In some embodiments, an exchange system to client device message stream corresponds to a client device, e.g., a trader system, and a matching engine group. The client devices (1, . . . , N) are, e.g., any of the client devices (112, . . . , 114, 116, . . . , 118) which have an ongoing session with the exchange system via gateway 400.
FIG. 5 is a drawing of an exemplary assembly of modules 500 in accordance with various embodiments. Assembly of modules 500 is, e.g., included in routines 414 of memory 412 of gateway 400 of FIG. 4. Assembly of modules 500 includes a module for receiving a session login 504, a module for providing a client device to exchange system message sequence number to a client device 506, a module for providing an exchange system to client device message sequence number to a client device 508, a module for receiving a client to exchange system message from a client device 510, and a module for checking a received client to exchange system message to determine if it includes an expected client device to exchange system message sequence number 512.
In some embodiments, a received first client to exchange system message includes an uninterpreted field, said uninterpreted field including client device supplied information which is to be returned without alternation to said client device in any response message corresponding to said received client to exchange system message. In some such embodiments, the uninterpreted field includes information used by the client device or a broker to identify or track client to exchange messages and/or to identify the individual upon who's behalf an order is being placed by a trader.
Assembly of modules 500 further includes a module for controlling operation as a function of the determination of the checking of the received client to exchange system message as to whether it includes the expected client device to exchange system message sequence number 514, a module for rejecting a received client to exchange system message in response to a determination that it does not include the expected client device to exchange system message sequence number 516, a module for notifying a client device of the rejected client to exchange system message 518, a module for accepting a received client to exchange system message in response to a determination that it does include the expected client to exchange system message sequence number 520, and a module for incrementing the expected client device to exchange system message sequence number following acceptance of a client to exchange system message 522. Assembly of modules 500 further includes a module for sending at least a portion of an accepted client to exchange system message to a matching engine 524, a module for receiving a response to a message from a matching engine 526, a module for transmitting a first exchange system to client device message, e.g., a transaction response message, including said exchange system to client device message sequence number to said client device 528, a module for incrementing said exchange system to client device message sequence number to generate an updated exchange system to client device message sequence number 530, and a module for sending an additional exchange system to client device message to said client device, said additional exchange system to client device message including said updated exchange system to client device message sequence number 532. In some embodiments, said transaction response message includes the content of said uninterpreted field, which was received from the client device, in addition to at least one of an order acknowledgment and order completion information.
Assembly of modules 500 further includes a module for maintaining a current client device to exchange system message sequence number for each of a plurality of client devices 534 and a module for maintaining a current exchange system to client device message sequence number for each of a plurality of client devices 536.
Assembly of modules 500 further includes a module for sending a transaction response message to said client device in response to a client to exchange system message, e.g., a first client to exchange system message, said transaction response message including the content of said uninterpreted field, which was received from the client device, in addition to at least one of an order acknowledgment and order completion information 534.
FIGS. 6 and 7 illustrate examples showing an exemplary low latency communications path and an exemplary higher bandwidth communications path between a trader system and a gateway/second device. Communication between the gateway and second device may be performed in a secure manner, e.g., because it occurs within the secure ECN.
Drawing 600 of FIG. 6 illustrates various elements of exemplary system 100 of FIG. 1 including client 1 trader system 1 112 and exchange system 110 including security switch 120, second device 134, e.g., a message logging system 134, first device 138, e.g., a client gateway, and matching engine 146. There is a client 1 dedicated link 602 between trader system 1 112 and security switch 120. There is a shared low latency path 604 which includes a path from the security switch 120 through the client gateway 138 and to the matching engine 146. There is a high bandwidth path 606 between the message logging system 134 and the security switch. Ongoing transaction messages between trading system 112 and matching engine 146, traverse client gateway 138, and are communicated using the shared low latency path 604 and via the client 1 dedicated link 602. Gap fill messages are communicated from the message logging system 134 to trader system 112 using the high bandwidth path 606 and via client 1 dedicated link 602.
Drawing 700 of FIG. 7 illustrates various elements of exemplary system 100 of FIG. 1 including client 1 trader system 1 112, client M trader system 1 116, and exchange system 110 including security switch 120, second device 134, e.g., a message logging system 134, first device 138, e.g., a client gateway, component interconnect switch 126, and matching engine 146. Shared low latency path 702 provides a path from security switch 120 to matching engine 146 via gateway 138 and component interconnect switch 126. Both trader system 112 and trader system 116 use the low latency path 702 to ongoing transaction messages with matching engine 146.
High bandwidth path 704 provides a path from second device, e.g., message logging system 134, to security switch 120, via component switch 126, to be used for communication of gap fill messages to trader system 112. In some embodiments, the high bandwidth path 704 does not traverse the component interconnect switch 126, e.g., the second device 134 connects directly to the security switch. Various control signals (706, 708) communicated between the gateway 138 and the second device 134 are used for gap fill related control operations, e.g., to trigger a gap fill, to specify which message or messages are to be sent, to indicate that the missing message or messages have been sent, and/or to indicate that synchronization has been restored between the client device and the exchange system.
Multiple traders, corresponding to different clients, may communicate with a gateway through which messages are passed for processing. In order to make sure that both a trader and the ECN implementing trades have not lost or dropped messages, message sequence numbers are often used.
Trading sessions may involve thousands of messages, and depending on the size of the discrepancy in the number of messages which the trader system and the gateway are aware of, the number of messages which may need to be communicated, as part of a gap fill before a trading session can proceed, can be significant.
While communication between the trading system and exchange is normally reliable due to the use of TCP/IP for the portion of the connection between the trader system 112, and exchange 110, a communications link may be lost for some reason and/or the trader system may be shut down or lose power. This may result in the trader system not being fully aware of them messages which were sent by the exchange system or the trader system losing, e.g., not storing, some messages which were sent by the exchange to the trading system 112 or from the trading system 112. Thus when the trader system logs in to continue an existing session, the message state in the trader system 112 may not be fully synchronized with the message state in the exchange system 110.
In accordance with the present invention, as will be discussed further below, communication of missing messages between a trader system and a gateway is performed over different communications path than is used for the communication of new messages. The secondary communications path used for message gap fills may, and in various embodiments does, have a higher latency then the communications path used for new messages. The secondary communications path, in some embodiments supports a higher communications data rate with the trader system than the communications path used for new messages. Thus, while the latency, e.g., and thus transmission time of an individual message may take longer over the secondary path, the overall data throughput with the trader system may also be higher on the secondary path. Thus a large number of messages may be able to be communicated over the second communications path in less time than would be required to transmit the same large number of messages over the primary communications path used for new messages.
Once message synchronization has been restored, communication of new messages proceeds over the high speed, e.g., primary, message communications path between the trader system and the gateway of the ECN.
The methods and apparatus of the present invention may be used with communications using FIX or a binary order entry protocol such as, e.g., OUCH or a similar protocol. Thus, the methods and apparatus of the present invention are well suited for many of the trading systems and protocols currently in use.
Having generally discussed the exemplary system implementations shown in FIGS. 1 and 2, an exemplary method will now be discussed in detail with regard to the example shown in FIG. 8. Elements of the system 100 shown in FIG. 1 which participate in the method being explained in the FIG. 8 example are shown at the top of FIG. 8 and bear the same reference numbers as used in FIG. 1. Messages, information, content and/or signals communicated between devices are represented in FIG. 8 using arrows. The exemplary process shown in FIG. 8 will now be described in detail.
At the top of FIG. 8, various elements 800 of the system 100 which may participate in an exemplary method for restoring message synchronization between a trader system and the client gateway in a trading system during a session, e.g., a trading session, are shown. The illustrated components 800 include a client device 112, e.g., a trader system, a second device 134, e.g., a message logging system, and a first device 138, e.g., a client gateway.
FIG. 8, illustrates the steps and associated signaling used in one exemplary embodiment where it is determined whether a device participating in a trading session, e.g., a trader system 112, is missing one or more session messages. As will be discussed below, in accordance with one aspect of the invention when it is determined that a device, i.e., the trader system 112, is missing one or more session messages, the second device 134 is operated to restore the session message synchronization between the trader system 112 and the client gateway 138, before processing trade order(s) from the trader system 112.
The process starts in step 802 where the trader system 112 sends a connection establishment message 804 to the exchange system 110. The connection establishment message 804 is received by the client gateway 138 located at the exchange system 110 in step 806 and processed. In various embodiments the connection establishment message 804 is sent to establish a communications session, e.g., prior to performing a trade, between the trader system 112 and the exchange system 110.
Following the receipt and processing of the connection establishment message 804 at the client gateway 138, in step 808 the client gateway 138 sends a gateway ID message 810 to the trader system 112 in response to the connection establishment message 804. The gateway ID message 810 is received and processed by the trader system 112 in step 812. Next in step 814 the trader system 112 sends a login message 816 to the client gateway 138. In some embodiments the login message 816 is sent from the trader system 112 to the client gateway 138 over a first communications path, e.g., a low latency communications path including path 161, shown in FIGS. 1-2. In accordance with one aspect of some embodiments, both the trader system 112 and the client gateway 138, includes an incoming message counter and an outgoing message counter to keep a track of the number of messages exchanged during a trading session. In some embodiments, there is a client device to exchange system message sequence number for messages from trader system 112 to the client gateway 138 and an exchange system to client device message sequence number for a message stream from the client gateway 138 to trader system 112 corresponding to a matching engine.
The login message 816 is received by the client gateway 138 in step 818 and is processed. In step 820 the client gateway 138 transmits a login response message 822 to the trader system 112. In some embodiments, the login response message 822 communicates a next exchange system to client device message sequence number. In step 824 trader system 112 receives message 822 and recovers the information communicated in login response message 822.
In step 826 the trader system generates and transmits a transaction message 828, e.g., a trade or order message. In step 830 the client gateway 138 receives the transaction message 828 and proceeds to process the trade or order. In step 832 the client gateway 138 transmits an acknowledgment message 834 in response to the transaction message 828. Consider that the acknowledgment message is successfully received by the trader system 112 in step 836. Next, in step 838 the client gateway 138 transmits a first partial order complete message 840 to the trader system 112. Consider that this message is lost in step 836 from the perspective of the trader system 112, which does not successfully receive the first partial order complete message 840.
Next, in step 844 the client gateway 138 transmits a second partial order complete message 846 to the trader system 112. Consider that this message 846 is successfully recovered in step 848 by the trader system 112. However, the trader system 112 determines, e.g., based on an exchange system to client device sequence number included in message 846 and an exchange system to client device sequence number included in message 834, that it has lost a message, e.g., the sequence number in message 846 is higher than expected indicating that a message has been lost or missed. Therefore the trader system 112, in step 850 generates and sends a gap fill request message 854 to client gateway 138. In step 856, the client gateway 138 receives the gap fill request message 854 from the trader system 112 requesting a previous message that was sent to the trader system 112. The client gateway 138 determines from the gap fill request message that the trader system 112 requires one previous message to be provided as part of a gap fill operation. In this example of FIG. 8, trader system 112 lost one message. However, the gap fill may, and sometimes does, apply to multiple messages.
If it is detected that the trader system 112 is missing one or more messages corresponding to a trading session, then in accordance with the invention, the message synchronization is restored via use of secondary, high bandwidth communications path which is different from a low latency communications path over which the connection establishment message was received and/or new trade messages are received and processed, e.g., a high bandwidth path including path 160 in FIGS. 1 and 2.
Note that in step 856 the gateway 138 determines that a message gap fill needs to be performed. In step 858 a control signal 860 is then sent to the second device 134, e.g. a message logging system, from the client gateway 138 to instruct it to proceed with the necessary message gap fill required to restore message synchronization. The message 860 may be sent over a secure communications channel. In step 862 the second device 134 receives control signal 860 which triggers a message gap fill. The one or more missing messages 866 are then communicated from the second device 134, e.g. the message logging system, via the secondary high bandwidth communications path. In step 868 the missing message or messages 866, e.g., information including a copy of missing first partial order message 840, is received and recovered by the trader system 112.
Once the missing message or messages are communicated to the trader system 112 from the second device 134, a control signal 872 is sent in step 870 from the second device 134 to the client gateway 138 informing the client gateway 138 that session synchronization has been restored. The client gateway 138 in step 874 receives signal 872 and recognizes that synchronization has been restored. The gateway device 138 and the trader system 112 then proceed with the trading session via the high speed low latency communications path with new trades and replies occurring over the low latency communications path.
Elements of the system 100 shown in FIG. 1 which participate in the method being explained in the FIG. 9 example are shown at the top of FIG. 9 and bear the same reference numbers as used in FIG. 1. Messages, information, content and/or signals communicated between devices are represented in FIG. 9 using arrows. The exemplary process shown in FIG. 9 will now be described in detail.
At the top of FIG. 9, various elements 900 of the system 100 which may participate in an exemplary method for restoring message synchronization between a trader system and the client gateway in a trading system during a session, e.g., a trading session, are shown. The illustrated components 900 include a client device 112, e.g., a trader system, a second device 134, e.g., a message logging system, and a first device 138, e.g., a client gateway.
FIG. 9, illustrates the steps and associated signaling used in one exemplary embodiment where it is determined whether a device participating in a trading session, e.g., a trader system 112, is missing one or more session messages. As will be discussed below, in accordance with one aspect of the invention when it is determined that a device, i.e., the trader system 112, is missing one or more session messages, the second device 134 is operated to restore the session message synchronization between the trader system 112 and the client gateway 138, before processing trade order(s) from the trader system 112.
The process starts in step 902 where the trader system 112 sends a connection establishment message 904 to the exchange system 110. The connection establishment message 904 is received by the client gateway 138 located at the exchange system 110 in step 906 and processed. In various embodiments the connection establishment message 904 is sent to establish a communications session, e.g., prior to performing a trade, between the trader system 112 and the exchange system 110.
Following the receipt and processing of the connection establishment message 904 at the client gateway 138, in step 908 the client gateway 138 sends a gateway ID message 910 to the trader system 112 in response to the connection establishment message 904. The gateway ID message 910 is received and processed by the trader system 112 in step 912. Next in step 914 the trader system 112 sends a login message 916 to the client gateway 138. In some embodiments the login message 916 is sent from the trader system 112 to the client gateway 138 over a first communications path, e.g., a low latency communications path including path 161, shown in FIGS. 1-2. In accordance with one aspect of some embodiments, both the trader system 112 and the client gateway 138, includes an incoming message counter and an outgoing message counter to keep a track of the number of messages exchanged during a trading session. In some embodiments, there is a client device to exchange system message sequence number for messages from trader system 112 to the client gateway 138 and an exchange system to client device message sequence number for a message stream from the client gateway 138 to the trader system 112 corresponding to a matching engine.
In step 914, the trader system 112 sends a login message including an indication of the number of messages received by the trader system. In step 918, the client gateway receives login message 916, and determines if a number of received messages indicated in said received login message is less than the number of messages sent to the trader system 112. In this example, the client gateway 138 determines that the number of messages received by the trader system 112 is less than the number or messages sent to the trader system 112. Therefore, the client gateway determines that the trader system 100 requires a message gap fill.
In step 920 the client gateway 138 generates and sends a control signal 922 to the second device 134, e.g., a message logging system, to trigger the second device to supply one or more previously transmitted messages to the trader system 112 via a second communications path in response to the determination that the trader system requires a message gap fill. The second communications path is a high bandwidth path, e.g., a path including path 160 in FIG. 1. The message 922 may be sent over a secure communications channel. Control signal 922 is received by second device 134 in step 924.
In step 926, in response to signal 922, second device 134 sends the one or more missing messages 928 via the secondary high bandwidth communications path. In step 930 the missing message or messages 928 are received and recovered by the trader system 112.
Once the missing message or messages are communicated to the trader system 112 from the second device 134, a control signal 934 is sent in step 932 from the second device 134 to the client gateway 138 informing the client gateway 138 that session synchronization has been restored. The client gateway 138 in step 936 receives signal 934 and recognizes that synchronization has been restored. The gateway device 138 and the trader system 112 then proceed with the trading session via the high speed low latency communications path with new trades and replies occurring over the low latency communications path.
FIG. 10 is a flowchart 1000 of an exemplary method of operating an exchange system in accordance with various embodiments. Operation starts in step 1002 where the exchange system is powered on and initialized. Operation proceeds from start step 1002 to step 1004. In step 1004 a first device, e.g., a gateway device, in the exchange system receives a message, e.g., a transaction message or a login message, from a trader system communicated via a first communications path. In some embodiments, the transaction message is a message including an indication of the number of messages already received by the trader system as part of a trading session. The first communications path includes a shared low latency link in the exchange system. In some embodiments, the shared low latency link is a link between a security switch and a gateway device which is shared by multiple trader systems. Operation proceeds from step 1004 to step 1006.
In step 1006 the exchange system determines that the trader system requires a message gap fill. In some embodiments, step 1006 includes step 1008 and step 1010. In some other embodiments, step 1006 includes step 1012 and 1014. In still other embodiments, step 1006 includes steps 1008, 1010, 1012 and 1014.
In step 1008 the exchange system receives a gap fill request message from said trader system requesting one or more previous messages that were previously sent to the trader system. In some embodiments, the gap fill request message includes one or more stream identifiers, each stream identifier identifying an exchange to trader message stream for which at least one message is being requested. In some such embodiments, the gap fill request message includes multiple stream identifiers, and each of the multiple stream identifiers corresponds to a different matching engine group from which a message was sent to the trader system. Operation proceeds from step 1008 to step 1010. In step 1010 the trader system determines from the gap fill request message that the trader system requires one or more previous messages to be provided as part of a gap fill operation.
In step 1012 the exchange system determines if a number of received messages indicated in said received message, e.g., a received login message received in step 1004, is less than the number of messages sent to the trader system. Operation proceeds from step 1012 to step 1014. In step 1014 the exchange system determines that said trader system requires a message gap fill when it is determined that the number of messages received by the trader system is less than the number of messages sent to the trader system.
Operation proceeds from step 1006 to step 1016. In step 1016 the exchange system sends a signal to a second device, e.g., a message logging system in the exchange system, to trigger said second device to supply one or more previously transmitted messages to the trader system via a second communications path in response to a determination that the trader system requires a message gap fill. In some embodiments, the second device is a message logging device including stored messages corresponding to the trading session. Operation proceeds from step 1016 to step 1018. In step 1018 the second device is operated to supply one or more previously transmitted messages to the trader system via the second communications path. Operation proceeds from step 1018 to step 1020. In step 1020 the second device is operated to send a signal to the first device indicating that that the trader system and the exchange system have restored message synchronization once the one or more messages have been sent.
In various embodiments, the first communications path has a lower latency than the second communications path. In some embodiments, the first communications path is a communications path used for placing orders and communicating order acknowledgements. In various embodiments, the second communications path supports a higher bandwidth with said exchange system for communications with said trader system than the first communications path which includes said shared low latency link.
In various embodiments, a portion of said first and second communications paths between the trader system and the exchange system are the same, said portion not being shared with other traders. In some embodiments, the second communications path is used for message gap fills and has a higher end to end latency between the trader system and the second device than the first communications path has between the trader system and a matching engine.
In some embodiments, the first device is a client gateway device and the exchange system is an electronic communications network which implements electronic trades.
In some embodiments, the first communications path includes a first link and second communications path includes a second link, and said first and second links are physically different links. In various embodiments, said lower latency over the first communications path is achieved by limiting the amount of data corresponding to an individual client device that can be sent over the link in a continuous burst to an amount which is less than the amount of data corresponding to an individual client device that can be send in a single burst over said second communications link. In some embodiments, said first and second links are the same type of physical links, e.g., both links are wired links.
FIG. 11 is a drawing of an exemplary first device 1100, e.g., a gateway device, in accordance with an exemplary embodiment. Exemplary first device 1100 is, e.g., any of the gateway devices (138, . . . , 140, 142, . . . , 144) of exchange system 110 of system 100 of FIG. 1. Exemplary first device 1100 includes an I/O interface 1106, a processor 1108, a security switch interface 1110, a component interconnect switch interface 1111 and a memory 1112 coupled together via a bus 1109 over which the various elements may interchange data and information. The I/O interface 1106 is coupled to a display 1102 and an input device 1104, e.g., keyboard, keypad, mouse, etc. Memory 1112 includes routines 1114 and data/information 1116. The processor 1108, e.g., a CPU, may execute the routines 1114 and use the data/information 1116 in memory 1112 to implement a method, e.g., steps of method performed by a first device in accordance with flowchart 1000 of FIG. 10. Data/information 1116 includes a received session establishment message 1118, a received login message 1120, a received transaction message 1122, a received gap fill request message 1124, a generated signal to trigger a message gap fill 1126, and a received signal indicating synchronization has been restored between a trader system and the exchange system for a session following completion of message gap fill operations by the second device 1128.
FIG. 12 is a drawing of an exemplary assembly of modules 1200 in accordance with various embodiments. Assembly of modules 1200 is, e.g., included in routines 1114 of memory 1112 of first device 1110, e.g. gateway device, of FIG. 11. Assembly of modules 1200 includes a module configured to receive at a first device in an exchange system a message from a trader system communicated via a first communications path, said first communications path including a shared low latency link in said exchange system 1204, a module configured to determine that said trader system requires a message gap fill 1206, a module configured to send a signal to a second device to trigger the second device to supply one or more previously transmitted messages to the trader system via a second communications path in response to determining that the trader system requires a message gap fill 1216, a module configured to receive a signal indicating that a trader system and exchange system have restored synchronization 1218 and a module configured to resume transaction signaling communications for a session in response to the received signal indicating that a trader system and the exchange system have restored synchronization 1220.
In some embodiments, module 1206 includes a module configured to receive a gap fill request message from said trader system requesting one or more previous messages that were previously sent to the trader system 1208 and a module configured to determine from the gap fill request message that the trader system requires said one or more previous messages to be provided as part of a gap fill operation 1210. In other embodiments, module 1206 includes a module configured to determine a number of received messages indicated in said received message is less than the number of messages sent to the trader system 1212 and a module configured to determine that said trader system requires a message gap fill when it is determined that the number of messages received by the trader system is less than the number of messages sent to the trader system 1214. In still other embodiments, module 1206 includes module 1208, 1210, 1212 and 1214.
In some embodiments, the first communications path includes a first link and second communications path includes a second link, and said first and second links are physically different links. In various embodiments, said lower latency over the first communications path is achieved by limiting the amount of data corresponding to an individual client device that can be sent over the link in a continuous burst to an amount which is less than the amount of data corresponding to an individual client device that can be send in a single burst over said second communications link. In some embodiments, said first and second links are the same type of physical links, e.g., both links are wired links.
FIG. 13 is a drawing of an exemplary second device 1300, e.g., message logging system, in accordance with an exemplary embodiment. Exemplary second device 1300 is, e.g., message logging system 134 of exchange system 110 of system 100 of FIG. 1. Exemplary second device 1300 includes an I/O interface 1306, a processor 1308, a security switch interface 1310, a component interconnect switch interface 1 1312, a component interconnect switch interface 2 1314, a component interconnect switch interface 3 1316 and a memory 1318 coupled together via a bus 1309 over which the various elements may interchange data and information. The I/O interface 1306 is coupled to a display 1302 and an input device 1304, e.g., keyboard, keypad, mouse, etc. Memory 1318 includes routines 1320 and data/information 1322. In some embodiments, the gap fill messages are communicated via the component interconnect switch and interface 1312 is used for the high bandwidth path. In some embodiments, the gap fill messages are communicated to the security switch without traversing the component interconnect switch and interface 1310 is used for communicating the gap fill messages over the high bandwidth path. Interface 1314 is used for communicating message fill control signaling. Interface 1316 is used for capturing ongoing messages in the exchange system, e.g., transaction messages which are captured and stored and are available at a later point in time to be used in gap fill operations.
The processor 1308, e.g., a CPU, may execute the routines 1320 and use the data/information 1322 in memory 1318 to implement a method, e.g., steps of the method performed by a second device in accordance with flowchart 1000 of FIG. 10. Data/information 1322 includes stored transaction messages 1324, a received message to trigger gap fill operations 1330, an identified message or messages to be communicated via gap fill 1332, generated gap fill messages 1334, and a generated signal to indicate that gap fill is completed and message synchronization has been restored 1336.
FIG. 14 is a drawing of an exemplary assembly of modules 1400 in accordance with various embodiments. Assembly of modules 1400 is, e.g., included in routines 1320 of memory 1318 of second device 1300, e.g. a message logging system, of FIG. 13. Assembly of modules 1400 includes a message capture module 1418 configured to capture ongoing messages in the exchange system including transaction messages, and a message storage module 1420 configured to store messages captured by message capture module 1420. Stored transaction messages 1324 includes messages captured my module 1418 and stored by module 1420. Stored transaction messages 1324 include a plurality of sets of messages (message set 1 1326, . . . , message set N 1328). In some embodiments, a message set corresponds to a message stream from a particular matching engine being sent to a particular trader system.
Assembly of modules 1400 further includes a module configured to operate the second device to supply one or more previously transmitted messages to a trader system via the second communications path 1422, a module configured to operate the second device to send a signal to the first device indicating that the trader system and the exchange system have been restored to message synchronization once said one or more missing messages have been sent 1424. Assembly of modules 1400 further includes an interface control module 1426 configured to control operations of the various interfaces (1310, 1312, 1314, 1316), a missing message identification module 1428 configured to identify which stored messages should be supplied as part of a requested gap fill operation, a gap fill message generation module 1430 configured to generate gap fill messages including the identified missing messages, and a gap fill completed message generation module 1432 configured to generate a message indicating that the requested gap fill operation has been completed and that synchronization has been restored.
An exemplary unicast transaction message 1500 from a trader system, e.g., trader system 100 is shown is FIG. 15. As shown the unicast transaction message 1500 may include various information such as a gateway identifier 1502, e.g., a gateway unicast address which identifies the particular gateway, e.g., gateway 138, which is the intended destination of message 1500. Unicast transaction message 1500 also includes a trader system address 1504 which is the source address of message 1500, e.g., an address of trader system 112.
In addition to the source and destination information, the unicast transaction message 1500 also includes a message identifier 1506. The message identifier 1506 can be used to identify the message and distinguish it from other unicast transaction messages in the system. In some but not necessarily all embodiments, the unicast message identifier 1506 includes a stream identifier portion 1520 and a message counter value 1522. The message identifier 1506 may also include, optionally, an offset value 1523 indicating the offset added to the counter value of the last transaction message sent in the identified stream. The offset value allows incrementing of the counter value by more than one or some non-uniform amount while still allowing a receiving device to accurately generate an expected message counter value from the last message in the identified stream by adding the offset value to the counter value included in the last received transaction message obtained from the identified stream. This allows a receiving device to determine if it is missing any messages whether the message counter value is incremented by the same or different amounts from one message to the next.
In combination the elements of the message identifier field 1506 can identify the unicast message to the trader system, gateway, as well as other devices in the system such a message logging system 134. The stream identifier 1520 may identify the stream within the system to which the message identifier corresponds. Streams corresponding to different source and destination devices may be treated as different streams. In some embodiments, streams are defined to the level of an individual stream, with an individual stream being between a particular trader system and the particular ME to which an order may be forwarded. Thus, transaction messages from a trader corresponding to different stocks which are handled by different MEs may be treated as different streams. Transaction response message streams may also be defined to a similar level with response messages from different MEs to a trader being treated, at least in some embodiments, as different ME to trader streams. For each stream a different message counter may be maintained. During a session messages corresponding to a stream will normally have their message counter values updated with the sending of each new message. In some embodiments, the message counter value is initially provided by the exchange system, e.g., an ECN, and updated for subsequent messages. Thus, the message identifier 1506 can be used to reliably identify a particular message in the exchange system. A device seeking a message gap fill may indicate the messages it wants provided by providing a range of message identifiers. In some embodiments, the gap fill request message includes a stream identifier and a range of corresponding message counter values which in combination identify a set of messages to be provided in response to the gap fill message.
Referring once again to message 1500, the unicast transaction message 1500 may also include a client-broker identifier 1508 and/or a trader identifier 1510. The client-broker identifier 1508 identifies the client and/or broker to which the transaction message 1500 corresponds. Separate values may be used as a client identifier and a broker identify or a single value with a known mapping to a client and broker may be included in the client-broker identifier field. Message 1500 may include various types of transaction information 1512. The transaction information 1512 may include, e.g., order type information 1530 indicating the type of order the transaction message is communicating, a security identifier 1532 identifying a security to which the order relates, a number 1534 of shares to be traded, price information 1536 indicating the price, e.g., on a per share basis, at which the order is to be implemented, un-interpreted field information 1538, e.g., client information echo field information 1638, and/or additional transaction information 1540 such as a client order identifier sometimes referred to as an order token which may be used to identify the order and may be included in response messages corresponding to the order.
An exemplary multicast transaction message 1600 which may be generated from a received transaction message, e.g., a unicast transaction message, e.g., message 1500, from a trader system 112, is shown in FIG. 16. As shown the multicast transaction message 1600 may include various information such as a multicast address 1602 which is used as a message destination address. The multicast destination address corresponds to a group of matching engines where one of matching engines in the group is known to be responsible for handling the order book for a security, identified in the received transaction message. The multicast transaction message 1600 also includes a matching engine identifier 1604 identifying the specific matching engine responsible handling the transaction requested in the transaction message, e.g., a matching engine which handles the order book for the identified security to be traded. Thus, while a multicast address is used as the destination address of the message 1600 the message includes information identifying a specific matching engine entity to which the message is intended to be delivered to. Based on the ME identifier 1604, a receiving matching engine is able to determine whether or not it is to process and/or respond to the message addressed to the matching engine group identified by the address in field 1602.
The multicast transaction message 1600 also includes a gateway multicast group identifier 1606 corresponding to a multicast group to which the sending gateway belongs. The multicast group identifier 1606 may be, e.g., a multicast group address corresponding to a gateway group. In addition to the gateway multicast group identifier 1606, the message 1600 includes a gateway identifier 1608 identifying the particular gateway, e.g., gateway 138, sending the specific multicast transaction message. Thus, while the message 1600 includes multicast group addresses corresponding to gateway and matching engine groups, it also includes information identifying the specific sending gateway entity and specific destination matching engine. Thus, while multicast addressing is used, the message includes sufficient information to identify a specific sending gateway, e.g., gateway 138 and a specific destination matching engine, e.g., ME 146.
In addition to the source and destination information, the multicast transaction message 1600 also includes a multicast message identifier 1610. The multicast message identifier 1610 can be used to identify the message and distinguish it from other multicast transaction messages in the system. In one but not necessarily all embodiments, the multicast message identifier 1610 includes a stream identifier portion 1620 and a message counter value 1622. In combination these elements can identify the multicast message to the gateway, ME as well as other devices in the system such a message logging system 134. The message identifier 1610 may also include, optionally, an offset value indicating the offset 1623 indicating the offset added to the counter value of the last multicast transaction message sent in the identified stream. The offset value allows incrementing of the counter value by more than one or some non-uniform amount while still allowing a receiving device to accurately generate an expected message counter value from the last message in the identified stream by adding the offset value to the counter value included in the last received transaction message obtained from the identified stream. This allows a receiving device to determine if it is missing one or more previous messages corresponding to the identified stream whether the message counter value is incremented by the same or different amounts from one message to the next. The multicast message counter value 1622 may be the same as the unicast message counter value of the message to which it corresponds. However, in cases where multicast messages are incremented differently from unicast messages they may be different. Also, in some embodiments, NULL multicast transaction messages may be transmitted e.g., by the gateway devices in the exchange on a periodic or other basis to facilitate the rapid detection of the failure of a device to receive a communicated multicast message. In the case of a NULL multicast transaction message generated by a exchange system component, e.g., in response to a recurring timer expiring, the message counter value 1622 will not correspond to a unicast transaction message but will still be higher than the last generated unicast transaction message for the stream identified in the message 1600.
Where unicast transaction messages are incremented by an amount greater than 1, e.g., 2, NULL multicast transaction messages may, and in some embodiments are, generated by incrementing the last received unicast transaction message value by a value less than that used to increment the unicast transaction messages. The NULL transaction messages which do not include any transaction information facilitate the detection, at a receiving device, of a failure to receive a previously transmitted message and are useful as a fault detection mechanism in the exchange system. NULL transaction messages, and corresponding NULL response messages, are not transmitted outside the exchange system, e.g., to a trader system in various embodiments in which they are used.
The stream identifier 1620 may identify the stream within the system to which the multicast message identifier corresponds. Streams corresponding to different source and destination devices may be treated as different streams. In some embodiments, streams are defined to the level of an individual stream, with an individual stream being between a particular trader system and the particular ME to which an order may be forwarded. Thus, transaction messages form a trader corresponding to different stocks which are handled by different MEs may be treated as different streams. Transaction response message streams may also be defined to a similar level with response messages from different MEs to a trader being treated, at least in some embodiments, as different ME to trader streams. For each stream a different message counter may be maintained. During a session messages corresponding to a stream will normally have their message counter values updated with the sending of each new message. Thus, the multicast message identifier 1610 can be used to reliably identify a particular message in the exchange system. A device seeking a message gap fill may indicate the messages it wants by providing a range of multicast message identifiers. In some embodiments, the gap fill request message includes a stream identifier and a range of corresponding message counter values which in combination identify a set of messages to be provided in response to the gap fill message.
Referring once again to message 1600, the multicast transaction message 1600 may also include a client-broker identifier 1612 and/or a trader identifier 1614. The client-broker identifier 1612 identifies the client and/or broker to which the transaction message 1600 corresponds. This information may be obtained from a received unicast transaction message, e.g., message 1500, from which the multicast transaction message 1600 is generated. Similarly the message 1600 may include various types of transaction information 1616. The transaction information 1616 may include, e.g., order type information 1630 indicating the type of order the transaction message is communicating, a security identifier 1632 identifying a security to which the order relates, a number 1634 of shares to be traded, price information 1636 indicating the price, e.g., on a per share basis, at which the order is to be implemented, un-interpreted field information 1638, e.g., client information echo field information 1638, and/or additional transaction information 1640 such as a client order identifier sometimes referred to as an order token which may be used to identify the order and may be included in response messages corresponding to the order.
FIG. 17 illustrates an exemplary multicast transaction response message 1700. The exemplary multicast transaction response message 1700 is similar in content and format to the multicast transaction message 1600 which is already been described. The multicast transaction response message 1700 may, and in some embodiments is, generated and transmitted by a matching engine in response to a multicast transaction message 1600 directed to the matching engine which generates message 1700 in response to the multicast transaction message 1600.
The multicast transaction response message 1700 includes a multicast address 1702 as a message destination address. The multicast destination address 1702 will normally be the multicast address of the gateway group to which the gateway which sent the transaction message being responded to corresponds. The message also includes gateway identifier 1704 which identifies the specific gateway which sent the transaction message to which response message 1700 corresponds. The information in fields 1702 and 1704 can, and in some embodiments are, obtained by the matching engine that generates message 1700 from multicast transaction message fields 1606, 1608.
Message 1700 also includes ME multicast group identifier 1706 which identifies a multicast group to which the sending matching engine is a member. The sending matching engine is specifically identified by matching engine identifier 1708 that is also included in message 1700. The message 1700 also includes a multicast message identifier 1710 which is generated by the matching engine sending the message. In some embodiments the multicast message identifier 1710 includes a stream identifier 1720 and a message counter value 1722. The multicast message identifier may also include an offset value indicating the increment added to the message counter value of the last multicast message corresponding to the identified stream to generate the current message counter value 1722 included in the message. Thus, the ME can increment the multicast messages corresponding to a stream by increments which may vary and/or be greater than a fixed number such as one. The inclusion of the offset value is optional and not used in all embodiments.
The stream identifier 1720 identifies a specific stream, e.g., a matching engine to trader stream. The message counter value 1722 is normally updated, e.g., changed, each time a message corresponding to the identified stream is sent by the matching engine.
In some embodiments the matching engine generates and sends null transaction response messages corresponding to streams that it is using to send messages on a periodic basis to facilitate detection of the failure to receive a multicast message at a gateway. The null transaction message will normally include a multicast message identifier which was updated relative to the last transaction response message of a stream to which the message corresponds allowing a receiving device to easily determine if any message were not received.
In addition to the multicast message identifier 1710, the multicast transaction response message 1700 includes a client-broker identifier 1712, trader identifier 1714 and/or transaction information 1716. Transaction information 1716, includes in some embodiments, order status and/or completion information 1730, a security identifier 1732, e.g., stock identifier, information on the number of shares traded 1734, information 1736 on the price at which the trades were completed, un-interpreted field information, e.g., client information echo field information 1738, and/or additional transaction information 1740 such as a client order ID which may be the same as the client order ID of the original trader transaction message 1500 and multicast transaction message 1600 generated by the gateway there from, to which the multicast transaction reply message 1700 corresponds.
FIG. 18 illustrates an exemplary unicast transaction response message 1800. The exemplary unicast transaction response message 1800 is similar in content and format to the unicast transaction message 1500 which is already been described. The unicast transaction response message 1800 may, and in some embodiments is, generated and transmitted by a gateway in response to a received multicast transaction response message 1700.
The unicast transaction response message 1800 includes a trader system 1802 as a message destination address. The destination address 1802 will normally be the address of the trader system, e.g., trader system 112, to which sent the transaction message, e.g., unicast transaction message 1500, being responded to corresponds. The message 1800 also includes gateway identifier 1804, e.g., a unicast address of the specific gateway, e.g., gateway 138, sending the transaction response message 1800.
The message 1800 also includes a message identifier 1806. In some embodiments the message identifier 1806 includes a stream identifier 1820 and a message counter value 1822. The message identifier 1810 may, and in some embodiments does, also include an offset value 1823 indicating the increment added to the message counter value of the last response message corresponding to the identified stream to generate the current message counter value 1822 included in the message 1800. The message counter value 1822 will normally be the same as the message counter value 1722 of the multicast transaction response message from which the unicast transaction response message is generated.
The stream identifier 1820 identifies a specific stream, e.g., a matching engine to trader stream. The message counter value 1822, e.g., obtained from the multicast transaction response message, is normally updated, e.g., changed, each time a message corresponding to the identified stream is sent by the matching engine.
In addition to the message identifier 1806, the unicast transaction response message 1800 includes a client-broker identifier 1808, trader identifier 1810 and/or transaction information 1812. Transaction information 1812, includes in some embodiments, order status and/or completion information 1830, a security identifier 1832, e.g., stock identifier, information on the number of shares traded 1834, information 1836 on the price at which the trades were completed, un-interpreted field information 1838, e.g., client information echo field information, and/or additional transaction information 1840 such as a client order ID which may be the same as the client order ID of the original trader transaction message 1500 to which the unicast transaction reply message 1800 corresponds.
In various embodiments the information supplied by the client device, e.g., trader system 112, in uninterpreted field 1538 of unicast transaction message 1500 is returned, e.g., echoed back without alteration, in a unicast transaction response message 1800, which is in response to unicast transaction message 1500. In some such embodiments, the information in uninterpreted fields (1538, 1638, 1738, 1838) of messages (1500, 1600, 1700, 1800) is identical corresponding to the same transaction.
In one example, transaction message 828 of FIG. 8 is a unicast transaction message in accordance with the format of message 1500 of FIG. 15, and transaction response messages (834, 840, 846) are unicast transaction response messages in accordance with the format of message 1800 of FIG. 18. In some embodiments, first device 138, e.g., a client gateway, generates a multicast transaction message in accordance with the format of message 1600 of FIG. 16 in response to received unicast transaction message 828 and based on information provided in unicast transaction message 828. In some embodiments, first device 138, e.g., a client gateway, generates unicast transaction response messages (834, 840, 846) in response to three received multicast transaction messages which were in accordance with the format of multicast transaction response message 1700 and based on information provided in three multicast transaction response message, respectively.
Methods and apparatus are described for facilitating communication of previously transmitted messages which were lost by either a trading system or ECN during a communications session.
In accordance with various exemplary embodiment, trading related messages, e.g., order messages and replies, are transmitted over a high speed communications path within an exchange system, e.g., an ECN. Multiple trading systems may share the same high speed communications path. The high speed communications path is a low latency communication path in several embodiments allowing transactions to be communicated and implemented quickly in a reliable manner.
When the loss of one or more messages is detected by the trader system or the ECN, e.g., based on a sequence of message number differing from what was expected, the trader system or ECN missing one or more messages corresponding to a communications session is provided the messages via a communication path which is different from the communications path used to submit new orders. An expected message number may be generated by adding a predetermined offset value or an offset value indicated in a received message to the message number of the last message that was received corresponding to the stream to which the message being processed was received. The supply of the missing messages may occur over a secondary communications path which is different from the high sped communications path used to communicate new orders. The secondary communications path may support a higher data rate with the trader system than the high speed data path. In some embodiments, while the secondary path supports a higher data rate with the trader system, allowing for the reply of a large number of messages, the latency on the secondary data path may be higher than that of the high speed communications path.
In addition to using the secondary, high bandwidth communications path for message replay operations to restore synchronization, in some embodiments different physical hardware, e.g., a message storage and reply device, which is different from the hardware used to service, e.g., perform order matching, for new orders, is used to communicate the supply the missing messages as part of a reply operation.
Thus, by using different communications paths and different physical hardware to support message replay operations than service new orders, processing and communication of new order messages and corresponding replies is not delayed by message re-synchronization operations such as message replay operations.
Once message synchronization is restored via use of the secondary communications path, message communication, e.g., the communication of new orders and reply messages, proceeds using the high speed communications path within the ECN.
Thus, various methods and apparatus described herein can be used to reduce or limit the affect of the need to replay messages and/or otherwise restore message synchronization with a trader system on other traders who may share a high speed communications path used to place orders with an ECN.
In some embodiments the uninterpreted field is used to communicate a value or information which is meaningful or used by the client or broker corresponding to the message. In some but not necessarily all embodiments the uninterpreted field provides no information to the exchange system and the content of the uninterpreted field is not used to control message processing in the exchange or provide information to the exchange.
In some but not necessarily all embodiments, the client device, e.g., trader device, includes in the uninterpreted field information which has no meaning and or informational value to the exchange system or devices included therein but which provides information which is meaningful to the client and/or broker. Thus, while the exchange may control the numbering used in the messages sent by the client, the client is able to include an identifier and/or other information which can be interpreted by the client and/or broker. The information can be used to allow a broker to correlate orders and/or other transactions to a particular client and/or trade and may include identification information which is meaningful within the broker's system. While the devices in the exchange system pass the content of the uninterpreted message field they do not interpret the content of this field or use the content in making exchange processing decisions. In essence, the exchange system merely passes the content of the uninterpreted message field back to a device when it sends a response message in response to a transaction message which included the particular field. Thus, while the exchange can control message number the client device is allowed to include additional numbers and/or other information which it uses to track and/or identify orders and which may also be used by the broker associated with the client and/or trader which sends the message.
A broker and/or trader system can request messages corresponding to an individual on whose behalf transaction messages have been sent by requesting messages from the exchange system's message logging system using the broker's and/or traders knowledge of the relationship between client order numbers corresponding to the individual for whom messages are being requested and the message numbering used by the exchange system.
While client order numbers are shown in some messages as being part of the additional transaction information, in many embodiments the client order number information is included within the uninterpreted field of transaction messages sent to the exchange system in which case the client order numbers are not interpreted or used by the exchange system but are echoed back in any transaction response messages generated by the exchange system in response to the transaction message which supplied the client order number in the uninterpreted field of the transaction message.
From the above discussion it should be appreciated that numerous variations and embodiments are possible.
The techniques of various embodiments may be implemented using software, hardware and/or a combination of software and hardware. Various embodiments are directed to apparatus, e.g., gateways, severs, nodes, terminals, etc. Various embodiments are also directed to methods, e.g., methods of performing risk checking. Various embodiments are also directed to non-transitory machine, e.g., computer, readable medium, e.g., ROM, RAM, CDs, hard discs, etc., which include machine readable instructions for controlling a machine to implement one or more steps of a method.
It is understood that the specific order or hierarchy of steps in the processes disclosed is an example of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged while remaining within the scope of the present disclosure. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
In various embodiments nodes described herein are implemented using one or more modules to perform the steps corresponding to one or more methods, for example, signal receiving, processing, generation and/or transmission steps. Thus, in some embodiments various features are implemented using modules. Such modules may be implemented using software, hardware or a combination of software and hardware. Thus, in at least some embodiments the modules are hardware modules. Many of the above described methods or method steps can be implemented using machine, e.g., computer, executable instructions, such as software, included in a machine readable medium such as a memory device, e.g., RAM, floppy disk, etc. to control a machine, e.g., general purpose computer with or without additional hardware, to implement all or portions of the above described methods, e.g., in one or more nodes. Accordingly, among other things, various embodiments are directed to a machine-readable medium including machine executable instructions for causing a machine, e.g., processor and associated hardware, to perform one or more of the steps of the above-described method(s). Some embodiments are directed to a device, e.g., control node, including a processor configured to implement one, multiple or all of the steps of one or more methods of the invention.
In some embodiments, the processor or processors, e.g., CPUs, of one or more devices, e.g., gateway or other node, are configured to perform one or more of the steps of the methods described herein. The configuration of the processor may be achieved by using one or more modules, e.g., software modules, to control processor configuration and/or by including hardware in the processor, e.g., hardware modules, to perform the recited steps and/or control processor configuration. Accordingly, some but not all embodiments are directed to a device, e.g., node, with a processor which includes a module corresponding to each of the steps of the various described methods performed by the device in which the processor is included. In some but not all embodiments a device, e.g., node, includes a module corresponding to each of the steps of the various described methods performed by the device in which the processor is included. The modules may be implemented using software and/or hardware.
Some embodiments are directed to a computer program product comprising a non-transitory computer-readable medium comprising code for causing a computer, or multiple computers, to implement various functions, steps, acts and/or operations, e.g. one or more steps described above. Depending on the embodiment, the computer program product can, and sometimes does, include different code for each step to be performed. Thus, the computer program product may, and sometimes does, include code for each individual step of a method, e.g., a method of controlling a node. The code may be in the form of machine, e.g., computer, executable instructions stored on a non-transitory computer-readable medium such as a RAM (Random Access Memory), ROM (Read Only Memory) or other type of storage device. In addition to being directed to a computer program product, some embodiments are directed to a processor configured to implement one or more of the various functions, steps, acts and/or operations of one or more methods described above. Accordingly, some embodiments are directed to a processor, e.g., CPU, configured to implement some or all of the steps of the methods described herein. The processor may be for use in, e.g., a communications device, control device or other device described in the present application.
To the extent that any incorporated applications included language or descriptions of system elements which are contrary to the language or description of embodiments or elements described herein, the language and descriptions included in the text of the present application is to be deemed controlling.
While described in the context of a trading system, at least some of the methods and apparatus of various embodiments are applicable to a wide range of systems.

## Claims

1. A method comprising:
providing, from a gateway device of an exchange system, information to a first client device indicating an expected client device to exchange message sequence number that said first client device is to include in a next client device to exchange system message sent to the exchange system;
providing, from the gateway device of the exchange system, a first exchange system to client device message sequence number to the client device, said first exchange system to client device message sequence number corresponding to a first message stream corresponding to the client device that is used for communication between a first group of one or more matching engines and said client device;
providing, from the gateway device of the exchange system, a second exchange system to client device message sequence number to the client device, said second exchange system to client device message sequence number corresponding to a second message stream corresponding to the client device that is used for communication between a second group of one or more matching engines and said client device;
receiving, at the gateway device, a first client to exchange system message from the client device, the first client to exchange system message being the next client to exchange system message sent to the exchange system following receipt of said information indicating said expected client device to exchange message sequence number;
checking the received first client to exchange system message to determine if it includes the expected client device to exchange system message sequence number; and
rejecting said first client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number.

2. The method of claim 1,
wherein providing information to a first client device includes providing the expected client device to exchange system message sequence number to said client device as part of a successful login, said expected client device to exchange system message sequence number being for a first transaction message, said first transaction message being a first order message sent to the exchange system after the successful login said first client to exchange system message being said first transaction message.

3. The method of claim 2, wherein said received first client to exchange system message includes an uninterpreted field, said uninterpreted field including client device supplied information which is to be returned without alteration to said client device in a response message corresponding to said received first client to exchange system message.

4. The method of claim 2, wherein said first client to exchange system message includes said expected client device to exchange system message sequence number, the method further comprising:
accepting said client to exchange system message; and
incrementing said expected client device to exchange system message sequence number.

5. The method of claim 2, further comprising:
receiving a second client to exchange system message from said client device; and
checking the received second client to exchange system message to determine if it includes said expected client to exchange sequence number.

6. The method of claim 5, further comprising:
rejecting said second client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number;
accepting said second client to exchange system message if it is determined that the second client to system message includes said expected client device to exchange system message sequence number; and
if said second client to exchange system message is accepted, incrementing said expected client device to exchange system message sequence number.

7. The method of claim 6, further comprising:
providing a first exchange system to client device message sequence number to said client device;
transmitting a first exchange system to client device message including said first exchange system to client device message sequence number to said client device,
incrementing said first exchange system to client device message sequence number to generate an updated first exchange system to client device message sequence number; and
sending a second exchange system to client device message to said client device, said second exchange system to client device message including said updated first exchange system to client device message sequence number.

8. The method of claim 7,
wherein said first and second exchange system client device messages correspond to the same message stream; and
wherein the second exchange system to client device message is the next exchange system to client device message sent after said first exchange system to client device message.

9. The method of claim 1, wherein said a first matching engine group includes multiple matching engines.

10. The method of claim 1, wherein said first and second matching engine groups each include multiple matching engines, said first and second matching engine groups including different matching engines.

11. The method of claim 1, wherein said first client device is a trader system, the method further comprising:
receiving, as part of a login, a login message including an indication of a number of messages received by the trader system; and
determining from said indicated number of messages received by the trader system if said trader system is missing messages.

12. A method comprising:
providing, from a gateway device of an exchange system, a client device to exchange system message sequence number to a client device, in response to a session login prior to receiving a first client to exchange system message from the client device,
said client device to exchange system sequence number being provided for inclusion in a next client to exchange system message, said first client to exchange system message being the next client to exchange system message sent by said client device after said client device to exchange system sequence number is provided to said client device;
providing, from the gateway device of the exchange system, a first exchange system to client device message sequence number to the client device, said first exchange system to client device message sequence number corresponding to a first message stream corresponding to the client device that is used for communication between a first group of one or more matching engines and said client device;
providing, from the gateway device of the exchange system, a second exchange system to client device message sequence number to the client device, said second exchange system to client device message sequence number corresponding to a second message stream corresponding to the client device that is used for communication between a second group of one or more matching engines and said client device;
receiving, at the gateway device, the first client to exchange system message from the client device;
checking the received first client to exchange system message to determine if it includes the expected client device to exchange system message sequence number; and
rejecting said first client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number.

13. The method of claim 12, wherein said first client device is a trader system, the method further comprising:
receiving, as part of said session login, a login message including an indication of a number of messages received by the trader system; and
determining from said indicated number of messages received by the trader system if said trader system is missing messages.

14. The method of claim 12,
wherein said first client device is a trader system;
wherein said step of providing a client device to exchange system message sequence number to the client device is performed by a gateway in an exchange system and includes providing an initial message counter value to be used as the client device to exchange system sequence number in the first client to exchange system message; and
wherein said exchange system implements stock trades in response to client to exchange system messages which are trade order messages.

15. A gateway device comprising:
at least one processor configured to:
provide information to a first client device indicating an expected client device to exchange message sequence number that said first client device is to include in a next client device to exchange system message sent to an exchange system;
provide a first exchange system to client device message sequence number to the client device, said first exchange system to client device message sequence number corresponding to a first message stream corresponding to the client device that is used for communication between a first group of one or more matching engines and said client device;
provide a second exchange system to client device message sequence number to the client device, said second exchange system to client device message sequence number corresponding to a second message stream corresponding to the client device that is used for communication between a second group of one or more matching engines and said client device;
receive a first client to exchange system message from the client device, the first client to exchange system message being the next client to exchange system message sent to the exchange system following receipt of said information indicating said expected client device to exchange message sequence number;
check the received client to exchange system message to determine if it includes the expected client device to exchange system message sequence number; and
reject said received client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number; and
memory coupled to said at least one processor.

16. The gateway device of claim 15,
wherein said at least one processor is further configured to provide, as part of being configured to provide a client device to exchange system message sequence number, the client device to exchange system message sequence number in response to a session login.

17. The gateway device of claim 15, wherein said received client to exchange system message includes an uninterpreted field, said uninterpreted field including client device supplied information which is to be returned without alteration to said client device in any response message corresponding to said received client to exchange system message.

18. The gateway device of claim 17, wherein said uninterpreted field includes information used by the client device or a broker to identify or track client to exchange messages.

19. The gateway device of claim 18, wherein said at least one processor is further configured to:
send a transaction response message to said client device in response to the client to exchange system message, said transaction response message including the content of said uninterpreted field, which was received from said client device, in addition to at least one of an order acknowledgement and order completion information.

20. The gateway device of claim 15, wherein said at least one processor is further configured to:
accept a received client to exchange system message in response to a determination that it includes an expected client to exchange system message sequence number; and
increment said expected client device to exchange system message sequence number following acceptance of a client to exchange system message.

21. The gateway device of claim 20, wherein said at least one processor is further configured to:
provide an exchange system to client device message sequence number to said client device corresponding to each of one or more message streams;
transmit a first exchange system to client device message including said exchange system to client device message sequence number to said client device,
increment said exchange system to client device message sequence number to generate an updated exchange system to client device message sequence number; and
send an additional exchange system to client device message to said client device, said additional exchange system to client device message including said updated exchange system to client device message sequence number.

22. A gateway device comprising:
means for providing information to a first client device indicating an expected client device to exchange message sequence number that said first client device is to include in a next client device to exchange system message sent to an exchange system;
means for providing i) a first exchange system to client device message sequence number to the client device, said first exchange system to client device message sequence number corresponding to a first message stream corresponding to the client device that is used for communication between a first group of one or more matching engines and said client device, and ii) a second exchange system to client device message sequence number to the client device, said second exchange system to client device message sequence number corresponding to a second message stream corresponding to the client device that is used for communication between a second group of one or more matching engines and said client device;
means for receiving a first client to exchange system message from the client device, the first client to exchange system message being the next client to exchange system message sent to the exchange system following receipt of said information indicating said expected client device to exchange message sequence number;
means for checking the received client to exchange system message to determine if it includes the expected client device to exchange system message sequence number; and
means for rejecting said received client to exchange system message if it is determined that it does not include said expected client device to exchange system message sequence number.

23. The gateway device of claim 22, further comprising:
wherein said means for providing a client device to exchange system message sequence number provides the client device to exchange system message sequence number in response to a session login.