[go: up one dir, main page]

JP2023539430A - Electronic trading system and method based on point-to-point mesh architecture - Google Patents

Electronic trading system and method based on point-to-point mesh architecture Download PDF

Info

Publication number
JP2023539430A
JP2023539430A JP2023507533A JP2023507533A JP2023539430A JP 2023539430 A JP2023539430 A JP 2023539430A JP 2023507533 A JP2023507533 A JP 2023507533A JP 2023507533 A JP2023507533 A JP 2023507533A JP 2023539430 A JP2023539430 A JP 2023539430A
Authority
JP
Japan
Prior art keywords
message
sequencer
gateway
compute node
messages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023507533A
Other languages
Japanese (ja)
Inventor
ディー アミカンジョリ アンソニー
バスト アレン
ローゼン ビー ジョシュア
ユーハス クリストフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hyannis Port Research Inc
Original Assignee
Hyannis Port Research Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/988,510 external-priority patent/US11315183B2/en
Priority claimed from US16/988,491 external-priority patent/US11328357B2/en
Application filed by Hyannis Port Research Inc filed Critical Hyannis Port Research Inc
Publication of JP2023539430A publication Critical patent/JP2023539430A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Cash Registers Or Receiving Machines (AREA)

Abstract

Figure 2023539430000001

電子取引システム及び対応する方法は、ポイントツーポイントメッシュアーキテクチャに基づき、ゲートウェイ、コアコンピュートノード及びシーケンサを備え、コアコンピュートノードは電子取引マッチング機能を実行し、ゲートウェイはメッセージをコアコンピュートノードに第1の直接接続を介して送信する。ゲートウェイはメッセージをシーケンサに第2の直接接続を介して送信し、シーケンサは順序マーク付きメッセージをコアコンピュートノードに第3の直接接続を介して送信し、コアコンピュートノードは順序マーク付きメッセージに基づき他のメッセージ間の相対順位付けを決定して電子取引マッチング機能を完了する。ゲートウェイ、コアコンピュートノード、シーケンサ及び各直接接続は、ポイントツーポイントメッシュアーキテクチャの一部分を構成し、ローレイテンシー、公平性及びフォールトトレランスを示し、金融商品の高速で確定的な電子取引を実行する。

Figure 2023539430000001

The electronic trading system and corresponding method are based on a point-to-point mesh architecture and include a gateway, a core compute node and a sequencer, the core compute node performs an electronic transaction matching function, and the gateway sends a message to the core compute node in a first Send via direct connection. The gateway sends the message to the sequencer over a second direct connection, the sequencer sends the order-marked message to the core compute node over a third direct connection, and the core compute node sends the order-marked message to the others based on the order-marked message. determine the relative ranking among the messages to complete the electronic transaction matching function. The gateway, core compute node, sequencer and each direct connection form part of a point-to-point mesh architecture that exhibits low latency, fairness and fault tolerance to perform fast, deterministic electronic transactions of financial instruments.

Description

(関連出願の相互参照)
本出願は、2020年8月7日出願の米国特許出願第16/988510号の一部継続出願及び2020年8月7日出願の米国特許出願第16/988491号の一部継続出願である。上記出願の教示全体が、参照によりここに取り込まれる。
(Cross reference to related applications)
This application is a continuation-in-part of U.S. Patent Application No. 16/988510, filed August 7, 2020, and a continuation-in-part of United States Patent Application No. 16/988491, filed August 7, 2020. The entire teachings of the above applications are incorporated herein by reference.

現在の金融商品取引システムによると、トレーダーは通信ネットワークを介して電子的に注文を提出し、確認、マーケットデータ及びその他の情報を受信することができる。この「電子取引システム」ともいわれるものによって実現される「電子的な」市場は、これまでのトレーダー又はその代理の者の全員が指定位置、すなわち、取引ピットに物理的に立って口頭及び視覚的な/手振りでのコミュニケーションを介して相互に取引するピットベースの「オープンアウトクライ」取引システムを大きく代替し、ほとんどの金融商品を取引する支配的な手段となっている。 Current financial instruments trading systems allow traders to submit orders and receive confirmations, market data, and other information electronically via communication networks. The ``electronic'' market enabled by this so-called ``electronic trading system'' is an ``electronic'' market in which all traditional traders or their agents physically stand in a designated position, i.e., the trading pit, and communicate verbally and visually. It has largely replaced the pit-based "open outcry" trading system of trading with each other through hand gesture communication and has become the dominant means of trading most financial instruments.

電子取引システムにおいて株式及び/又は他の金融商品を取引する際に、電子取引システムは、一般的に取引注文、すなわち、売値注文と相応の買値注文とをマッチングさせて取引を生み出す。取引に関連する条件によっては、売値注文と買値注文とをマッチングさせる処理は、複雑化する場合がある。 When trading stocks and/or other financial instruments in an electronic trading system, the electronic trading system typically generates trades by matching trade orders, ie, sell orders and corresponding buy orders. Depending on the conditions related to the transaction, the process of matching sell price orders and buy price orders may become complicated.

電子取引システムの一例は、通常は中央サーバ内に常駐する中央マッチングエンジン及び複数の分散サーバ又はゲートウェイを備えるコンピュータ化された取引所である。このようなコンピュータ化された取引所では、通常の処理は、以下のようになり得る。注文入力メッセージ、例えば、売値注文及び/又は買値注文がクライアント又は参加者デバイス、例えば、トレーダー端末から、コンピュータ化された取引所に送信され、コンピュータ化された取引所は注文入力メッセージを処理する。この注文入力メッセージは、中央サーバにおいてゲートウェイを介して受信される。例えば中央サーバにおけるコンピュータ化された取引所における処理は、とりわけ、受信した注文入力メッセージに基づいて注文のマッチングを実行することを含み得る。 One example of an electronic trading system is a computerized exchange that typically includes a central matching engine residing within a central server and multiple distributed servers or gateways. In such computerized exchanges, typical processing may be as follows. Order entry messages, e.g., buy and sell orders, are sent from a client or participant device, e.g., a trader terminal, to a computerized exchange, and the computerized exchange processes the order entry messages. This order entry message is received at the central server via the gateway. Processing at a computerized exchange, eg, at a central server, may include, among other things, performing order matching based on received order entry messages.

そして、中央サーバによって生成された注文処理承認メッセージが、通常は、トランザクションを転送するゲートウェイを介して参加者デバイスに返送される。ゲートウェイは、注文処理承認メッセージが参加者デバイスに返送される前に、追加の処理を行う場合もある。中央サーバは、注文処理承認メッセージに関する情報を、受信したものと同じ形式又はその他の形式のいずれかで、注文処理承認メッセージの処理を実行する1以上の他のゲートウェイに拡散して、マーケットデータストリームを介してマーケットデータ出力を生成してもよい。マーケットデータ出力は、通常は、参加者デバイス又はマーケットデータストリームの他の加入者に様々な通信機構を通じて転送され、ゲートウェイにおける追加の処理を必要とする。 An order processing approval message generated by the central server is then sent back to the participant device, typically via a gateway that forwards the transaction. The gateway may perform additional processing before the order processing approval message is sent back to the participant device. The central server disseminates information about the order processing authorization message, either in the same format as it was received or in other formats, to one or more other gateways that perform processing of the order processing authorization message to the market data stream. Market data output may be generated via. Market data output is typically transferred to participant devices or other subscribers to the market data stream through various communication mechanisms and requires additional processing at the gateway.

例示実施形態によると、電子取引システムは、ゲートウェイ、電子取引マッチング機能を実行するように構成されたコアコンピュートノード(ここでは互換可能にコアコンピュートエンジン又はコンピュートエンジンともいう)及びシーケンサを備える。ゲートウェイとコアコンピュートノードとは、第1の直接接続を介して結合される。ゲートウェイとシーケンサとは、第2の直接接続を介して結合される。シーケンサとコアコンピュートノードとは、第3の直接接続を介して結合される。第1、第2及び第3の直接接続は、それぞれの非共有帯域幅を有する。ゲートウェイは、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージをコアコンピュートノードに第1の直接接続を介して送信するように構成される。これに対して、メッセージは、コアコンピュートノードによって受信される。ゲートウェイはさらに、メッセージをシーケンサに第2の直接接続を介して送信するように構成され、シーケンサは、これに対して順序マーク付きメッセージをコアコンピュートノードに第3の直接接続を介して送信するように構成される。シーケンサは、ゲートウェイとコアコンピュートノードの間に第2及び第3の直接接続を介して挿入される。シーケンサによって送信される順序マーク付きメッセージは、ゲートウェイによって送信されたメッセージの順序付けされたバージョンである。これに対して、順序マーク付きメッセージは、コアコンピュートノードによって受信される。コアコンピュートノードは、電子取引システムにおいてコアコンピュートノードによって受信される他のメッセージの順序マーク付きバージョンの間で順序マーク付きメッセージの相対順位付け(すなわち、順序)を決定するように構成される。コアコンピュートノードはさらに、決定された相対順位付けに応じて電子取引要求について電子取引マッチング機能を完了し、金融商品について指値を相手方指値とマッチングさせ、金融商品の電子取引を可能とするように構成される。 According to an exemplary embodiment, an electronic trading system includes a gateway, a core compute node (also interchangeably referred to herein as a core compute engine or a compute engine) configured to perform electronic transaction matching functions, and a sequencer. The gateway and core compute node are coupled via a first direct connection. The gateway and sequencer are coupled via a second direct connection. The sequencer and core compute node are coupled via a third direct connection. The first, second and third direct connections have respective unshared bandwidths. The gateway is configured to send a message representing an electronic trading request with a limit price to buy or sell a financial instrument to the core compute node via the first direct connection. In contrast, messages are received by core compute nodes. The gateway is further configured to send the message to the sequencer via the second direct connection, and the sequencer in turn is configured to send the order-marked message to the core compute node via the third direct connection. It is composed of A sequencer is inserted between the gateway and the core compute node via second and third direct connections. The order marked messages sent by the sequencer are ordered versions of the messages sent by the gateway. In contrast, order-marked messages are received by core compute nodes. The core compute node is configured to determine a relative ranking (i.e., order) of the order-marked message among order-marked versions of other messages received by the core compute node in the electronic trading system. The core compute node is further configured to complete an electronic trade matching function for the electronic trade request in accordance with the determined relative ranking, match the limit price with a counterparty limit price for the financial instrument, and enable electronic trading of the financial instrument. be done.

メッセージ及び順序マーク付きメッセージは、同一のユーザデータを含み得る。ユーザデータは、電子取引要求に対応付けられる。 The message and the order marked message may contain the same user data. User data is associated with electronic transaction requests.

メッセージは、参加者デバイスからゲートウェイによって受信された着信メッセージの受信に応じてゲートウェイによって送信されたゲートウェイメッセージであってもよい。シーケンサはさらに、これに対して、順序マーク付きメッセージをゲートウェイに第2の直接接続を介して送信するように構成される。これに対して、順序マーク付きメッセージは、ゲートウェイによって受信される。順序マーク付きメッセージは、第1の順序マーク付きメッセージである。コアコンピュートノードはさらに、ゲートウェイメッセージの受信に応じて、コアコンピュートノードメッセージをゲートウェイに第1の直接接続を介して送信するように構成される。コアコンピュートノードはさらに、コアコンピュートノードメッセージをシーケンサに第3の直接接続を介して送信するように構成され、シーケンサはさらに、これに対して、第2の順序マーク付きメッセージをゲートウェイに第2の直接接続を介して送信するように構成される。第2の順序マーク付きメッセージは、コアコンピュートノードメッセージの順序付けされたバージョンである。ゲートウェイはさらに、コアコンピュートノードからゲートウェイに送信された第2の順序マーク付きメッセージ及び他のメッセージの順序マーク付きバージョンの相対順位付けを決定するように構成される。ゲートウェイはさらに、発信メッセージを参加者デバイスに送信するように構成される。発信メッセージは、決定された相対順位付けに応じて送信される。シーケンサはさらに、これに対して、第2の順序マーク付きメッセージをコアコンピュートノードに第3の直接接続を介して送信するように構成される。 The message may be a gateway message sent by the gateway in response to receipt of an incoming message received by the gateway from a participant device. The sequencer is further configured to send the order marked message to the gateway via the second direct connection. In contrast, order-marked messages are received by the gateway. The order marked message is the first order marked message. The core compute node is further configured to transmit the core compute node message to the gateway via the first direct connection in response to receiving the gateway message. The core compute node is further configured to send the core compute node message to the sequencer via the third direct connection, and the sequencer is further configured to send the second ordered marked message to the gateway via the second direct connection. Configured to send over a direct connection. The second order marked message is an ordered version of the core compute node message. The gateway is further configured to determine a relative ranking of the second order-marked message and order-marked versions of other messages sent from the core compute node to the gateway. The gateway is further configured to send outgoing messages to participant devices. Outgoing messages are sent according to the determined relative ranking. The sequencer is further configured in response to send the second order-marked message to the core compute node via the third direct connection.

ゲートウェイは、複数のゲートウェイのうちの所与のゲートウェイであり得る。コアコンピュートノードは、複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。複数のゲートウェイの各ゲートウェイは、複数のコアコンピュートノードの各コアコンピュートノードにそれぞれの第1の直接接続を介して結合され得る。シーケンサは、複数のゲートウェイの各ゲートウェイにそれぞれの第2の直接接続を介して結合され、複数のコアコンピュートノードの各コアコンピュートノードにそれぞれの第3の直接接続を介して結合され得る。複数のゲートウェイ、複数のコアコンピュートノード、シーケンサ及びそれぞれの直接接続は、ポイントツーポイントメッシュシステムの少なくとも一部分を構成し得る。 The gateway may be a given gateway among a plurality of gateways. A core compute node may be a given core compute node among a plurality of core compute nodes. Each gateway of the plurality of gateways may be coupled to a respective core compute node of the plurality of core compute nodes via a respective first direct connection. The sequencer may be coupled to each gateway of the plurality of gateways via a respective second direct connection and to each core compute node of the plurality of core compute nodes via a respective third direct connection. The plurality of gateways, the plurality of core compute nodes, the sequencer and their respective direct connections may constitute at least a portion of a point-to-point mesh system.

ポイントツーポイントメッシュシステム内では、複数のゲートウェイの各ゲートウェイは、そこから送信されるそれぞれのコンピュートノード宛てメッセージを複数のコアコンピュートノードの全てのコンピュートノード及びシーケンサに送信するように構成され得る。コンピュートノードに宛てられるメッセージをここでは互換可能に「コンピュートノード宛て」メッセージという場合があることが理解されるべきである。また、ゲートウェイに宛てられるメッセージをここでは互換可能に「ゲートウェイ宛て」メッセージという場合がある。複数のコアコンピュートノードの各コアコンピュートノードは、そこから送信されたそれぞれのゲートウェイ宛てメッセージを複数のゲートウェイの全てのゲートウェイ及びシーケンサに送信するように構成され得る。シーケンサはさらに、それぞれのコンピュートノード宛てメッセージ又はそれぞれのゲートウェイ宛てメッセージの受信に応じて、それぞれの順序マーク付きメッセージを複数のゲートウェイ及び複数のコアコンピュートノードに送信するように構成され得る。 Within a point-to-point mesh system, each gateway of the plurality of gateways may be configured to send messages destined for the respective compute node sent therefrom to all compute nodes and sequencers of the plurality of core compute nodes. It should be understood that messages addressed to a compute node may be interchangeably referred to herein as "destination to compute node" messages. Additionally, a message addressed to a gateway may be interchangeably referred to herein as a "gateway addressed" message. Each core compute node of the plurality of core compute nodes may be configured to transmit messages destined for a respective gateway sent therefrom to all gateways and sequencers of the plurality of gateways. The sequencer may be further configured to send respective order-marked messages to the plurality of gateways and the plurality of core compute nodes in response to receiving the respective compute node-directed message or the respective gateway-directed message.

シーケンサは、ポイントツーポイントメッシュシステムにおける複数のシーケンサのうちの所与のシーケンサであり得る。複数のゲートウェイの各ゲートウェイは、複数のシーケンサの各シーケンサにそれぞれの第2の直接接続を介して結合され得る。複数のコアコンピュートノードの各コアコンピュートノードは、複数のシーケンサの各シーケンサにそれぞれの第3の直接接続を介して結合され得る。所与のシーケンサは、ポイントツーポイントメッシュシステムにサービス提供中の現在アクティブなシーケンサであり得る。複数のシーケンサの他の各シーケンサは、現在アクティブなシーケンサを引き継ぐために待機しているスタンバイシーケンサであり得る。複数のシーケンサの各シーケンサは、複数のシーケンサの他の各シーケンサにそれぞれの第4の直接接続を介して結合され得る。複数のゲートウェイの各ゲートウェイはさらに、それぞれのコンピュートノード宛てメッセージを複数のシーケンサのうちの所与のシーケンサに送信するように構成され得る。複数のコアコンピュートノードの各コアコンピュートノードはさらに、それぞれのゲートウェイ宛てメッセージを複数のシーケンサのうちの所与のシーケンサに送信するように構成され得る。所与のシーケンサにはさらに、順序マーク付きメッセージを複数のシーケンサの他の各シーケンサに各それぞれの第4の直接接続を介して送信して、現在アクティブなシーケンサが故障した場合に、スタンバイシーケンサが現在アクティブなシーケンサを引き継ぐことを可能とするように構成され得る。 The sequencer may be a given sequencer among multiple sequencers in a point-to-point mesh system. Each gateway of the plurality of gateways may be coupled to each sequencer of the plurality of sequencers via a respective second direct connection. Each core compute node of the plurality of core compute nodes may be coupled to each sequencer of the plurality of sequencers via a respective third direct connection. A given sequencer may be a currently active sequencer serving a point-to-point mesh system. Each other sequencer of the plurality of sequencers may be a standby sequencer waiting to take over for the currently active sequencer. Each sequencer of the plurality of sequencers may be coupled to each other sequencer of the plurality of sequencers via a respective fourth direct connection. Each gateway of the plurality of gateways may be further configured to send messages destined for a respective compute node to a given sequencer of the plurality of sequencers. Each core compute node of the plurality of core compute nodes may be further configured to send a respective gateway-directed message to a given sequencer of the plurality of sequencers. The given sequencer is further configured to send order marked messages to each other sequencer of the plurality of sequencers via each respective fourth direct connection so that a standby sequencer can It may be configured to allow the currently active sequencer to take over.

所与のゲートウェイによって送信されるそれぞれのコンピュートノード宛てメッセージは、複数のコアコンピュートノードによって受信されるメッセージと同じであり得る。複数のコアコンピュートノードは、同じメッセージの受信に応じて、応答メッセージを生成するように構成され得る。応答メッセージは、複数のコアコンピュートノードの中から所与のゲートウェイにおいて受信され得る。所与のゲートウェイはさらに、同じメッセージの受信に応じて生成された応答メッセージのうちの所与の応答メッセージに基づいて行動をとるように構成され得る。所与の応答メッセージは、同じメッセージの受信に応じて生成された他の応答メッセージに相対して最初に所与のゲートウェイに到着し得る。ゲートウェイはさらに、所与の応答メッセージの後に到着する他の応答メッセージを無視するように構成され得る。 Each compute node-directed message sent by a given gateway may be the same message received by multiple core compute nodes. Multiple core compute nodes may be configured to generate response messages in response to receiving the same message. A response message may be received at a given gateway from among multiple core compute nodes. A given gateway may be further configured to take action based on a given response message of the response messages generated in response to receipt of the same message. A given response message may arrive at a given gateway first relative to other response messages generated in response to receipt of the same message. The gateway may further be configured to ignore other response messages that arrive after a given response message.

同じメッセージを表す複数のコンピュートノード宛てメッセージは、所与のコンピュートノードにおいて複数のゲートウェイの中から受信され得る。所与のコンピュートノードはさらに、複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて行動をとるように構成され得る。所与のコンピュートノード宛てメッセージは、同じメッセージを表す複数のコンピュートノードメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に所与のコンピュートノードに到着し得る。所与のコアコンピュートノードはさらに、所与のコンピュートノード宛てメッセージ後に到着する他のコンピュートノード宛てメッセージを無視するように構成され得る。 Messages destined for multiple compute nodes representing the same message may be received from among multiple gateways at a given compute node. A given compute node may be further configured to take an action based on a given compute node-directed message of the plurality of compute node-directed messages. A message destined for a given compute node may arrive at the given compute node first relative to messages destined for other compute nodes among multiple compute node messages representing the same message. A given core compute node may be further configured to ignore messages destined for other compute nodes that arrive after messages destined for the given compute node.

電子取引システムは、コアコンピュートノードによってアクセス可能な注文控え帳(order book)をさらに備え得る。コアコンピュートノードはさらに、電子取引マッチング機能を用いて金融商品に関する取引注文をマッチングさせるように構成され得る。コアコンピュートノードはさらに、注文控え帳における金融商品の残持ち高を維持するように構成され得る。金融商品の金額不一致が、電子取引マッチング機能を実行する結果としてもたらされる場合がある。残持ち高は、金融商品の金額不一致を含み得る。残持ち高は、数量よりも多くの情報を伝達可能であることが理解されるべきである。例えば、持ち高は、強気及び弱気(サイド)であってもよい。例示実施形態によると、残持ち高は、価格及び数量の双方を伝達する。 The electronic trading system may further include an order book accessible by the core compute node. The core compute node may be further configured to match trade orders for financial instruments using electronic trade matching functionality. The core compute node may further be configured to maintain a balance of financial instruments in the order book. Amount discrepancies in financial instruments may result from performing electronic transaction matching functions. The remaining balance may include amount discrepancies in financial instruments. It should be understood that balances can convey more information than quantities. For example, positions may be bullish and bearish (sides). According to an exemplary embodiment, the balance conveys both price and quantity.

電子取引システムは、クロックをさらに備え得る。ゲートウェイ、コアコンピュートノード及びシーケンサは、クロックに基づいて同期され得る。 The electronic trading system may further include a clock. The gateway, core compute node and sequencer may be synchronized based on a clock.

ゲートウェイはさらに、少なくとも1つの参加者デバイスにサービスを提供し、ゲートウェイにおける着信メッセージの受信に応じてメッセージをシーケンサ及びコアコンピュートノードに送信するように構成され得る。着信メッセージは、少なくとも1つの参加者デバイスによって発送され得る。シーケンサはさらに、固有順序識別子を用いてメッセージをマーク付けすることによって、又は受信したメッセージの表示を作成し、固有順序識別子を用いて表示をマーク付けし、マーク付けされた表示を送信することによって、順序マーク付きメッセージを生成するように構成され得る。マーク付けされる表示は、順序マーク付きメッセージであり得る。 The gateway may further be configured to serve at least one participant device and send messages to the sequencer and core compute nodes in response to receiving incoming messages at the gateway. Incoming messages may be dispatched by at least one participant device. The sequencer further comprises marking the message with the unique ordinal identifier, or by creating an indication of the received message, marking the indication with the unique ordinal identifier, and transmitting the marked indication. , may be configured to generate order-marked messages. The marked indication may be an ordinal marked message.

電子取引システムは、第1の直接接続、第2の直接接続及び第3の直接接続又はこれらの一部の組について、少なくとも1つのそれぞれの冗長直接接続をさらに備えていてもよい。 The electronic trading system may further comprise at least one respective redundant direct connection for the first direct connection, the second direct connection and the third direct connection or some set thereof.

ゲートウェイは、共有ゲートウェイネットワークを介して相互に通信可能に結合された複数のゲートウェイのうちの所与のゲートウェイであり得る。コアコンピュートノードは、共有コアコンピュートノードネットワークを介して相互に通信可能に結合された複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。シーケンサは、共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して相互に通信可能に結合された複数のシーケンサのうちの所与のシーケンサであり得る。 The gateway may be a given gateway of a plurality of gateways communicatively coupled to each other via a shared gateway network. A core compute node may be a given core compute node of a plurality of core compute nodes communicatively coupled to each other via a shared core compute node network. The sequencer may be a given sequencer of a plurality of sequencers communicatively coupled to each other via a shared sequencer network or via respective fourth direct connections.

電子取引システムは、システム状態ログをさらに備えていてもよい。所与のシーケンサは、システム状態ログを複数のシーケンサのうちの少なくとも1つの他のシーケンサに共有シーケンサネットワークを介して送信し、又はシステム状態ログをデータストアに記憶するように構成され得る。データストアは、共有シーケンサネットワークを介して複数のシーケンサにアクセス可能であり得る。 The electronic trading system may further include a system status log. A given sequencer may be configured to transmit a system state log to at least one other sequencer of the plurality of sequencers via a shared sequencer network or to store the system state log in a data store. A data store may be accessible to multiple sequencers via a shared sequencer network.

電子取引システムはアクティブな電子取引システムであってもよく、複数のシーケンサの少なくとも1つのシーケンサはディザスタリカバリサイトに通信可能に結合されていてもよい。ディザスタリカバリサイトは、スタンバイ電子取引システムを含み得る。スタンバイ電子取引システムは、アクティブな電子取引システムの複製であってもよく、アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成され得る。 The electronic trading system may be an active electronic trading system, and at least one sequencer of the plurality of sequencers may be communicatively coupled to a disaster recovery site. A disaster recovery site may include a standby electronic trading system. The standby electronic trading system may be a replica of the active electronic trading system and may be configured to allow electronic trading to continue in the event of a failure of the active electronic trading system.

ゲートウェイ、コアコンピュートノード、シーケンサ並びに第1、第2及び第3の直接接続は、第1のポイントツーポイントメッシュシステムを構成し得る。電子取引システムは、プロキシノードに通信可能に結合された第1の電子取引システムであり得る。プロキシノードはさらに、少なくとも1つの参加者デバイス及び第2の電子取引システムに通信可能に結合されてもよい。第2の電子取引システムは、第2のポイントツーポイントメッシュシステムを含み得る。プロキシノードは、少なくとも1つの参加者デバイスからの着信メッセージの受信に応じてメッセージを第1及び第2の電子取引システムに送信するように構成され得る。第1及び第2の電子取引システムは、プロキシノードによって送信されたメッセージに対するそれぞれの応答を生成するように構成され得る。プロキシノードはさらに、第1又は第2の電子取引システムから生成及び受信されたそれぞれの応答のうちの最初に到着する応答の受信に応じて少なくとも1つの参加者デバイスに応答を送信するように構成され得る。 The gateway, core compute node, sequencer, and first, second, and third direct connections may configure a first point-to-point mesh system. The electronic trading system may be a first electronic trading system communicatively coupled to the proxy node. The proxy node may further be communicatively coupled to the at least one participant device and the second electronic trading system. The second electronic trading system may include a second point-to-point mesh system. The proxy node may be configured to send a message to the first and second electronic trading systems in response to receiving an incoming message from the at least one participant device. The first and second electronic trading systems may be configured to generate respective responses to messages sent by the proxy node. The proxy node is further configured to send a response to the at least one participant device in response to receiving the first arriving response of the respective responses generated and received from the first or second electronic trading system. can be done.

他の例示実施形態によると、電子取引を実行する方法は、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージをゲートウェイからコアコンピュートノードに第1の直接接続を介して送信するステップを備える。方法は、これに対して、電子取引システムにおいて、電子取引機能を実行するためにメッセージをコアコンピュートノードにおいて受信するステップをさらに備える。方法は、メッセージをゲートウェイから電子取引システムにおけるシーケンサに第2の直接接続を介して送信し、これに対して順序マーク付きメッセージをシーケンサからコアコンピュートノードに第3の直接接続を介して送信するステップをさらに備える。第1、第2及び第3の直接接続は、それぞれの非共有帯域幅を有する。シーケンサは、ゲートウェイとコアコンピュートノードの間に第2及び第3の直接接続を介して挿入される。シーケンサによって送信される順序マーク付きメッセージは、第2の直接接続を介してゲートウェイから送信されたメッセージの順序付けされたバージョンである。方法は、これに対して、コアコンピュートノードにおいて、順序マーク付きメッセージを受信するステップをさらに備える。方法は、コアコンピュートノードにおいて、ゲートウェイからの他のメッセージを受信し、コアコンピュートノードにおいて、シーケンサからの他のメッセージの順序マーク付きバージョンを受信するステップをさらに備える。方法は、電子取引システムにおいてコアコンピュートノードによって受信された他のメッセージの順序マーク付きバージョンの間で順序マーク付きメッセージの相対順位付けをコアコンピュートノードにおいて決定するステップをさらに備える。方法は、コアコンピュートノードにおいて、決定された相対順位付けに応じて電子取引要求に対して電子取引マッチング機能を完了するステップをさらに備え、完了するステップは金融商品について指値を相手方指値とマッチングさせ、金融商品の電子取引を可能とする。 According to another exemplary embodiment, a method for performing an electronic transaction includes transmitting a message representing an electronic transaction request with a limit price to buy or sell a financial instrument from a gateway to a core compute node via a first direct connection. Equipped with steps. The method, in turn, further comprises receiving a message at a core compute node to perform an electronic trading function in the electronic trading system. The method includes the steps of transmitting a message from the gateway to a sequencer in an electronic trading system via a second direct connection, and transmitting an order-marked message from the sequencer to a core compute node via a third direct connection. Furthermore, it is equipped with. The first, second and third direct connections have respective unshared bandwidths. A sequencer is inserted between the gateway and the core compute node via second and third direct connections. The order marked messages sent by the sequencer are ordered versions of the messages sent from the gateway over the second direct connection. The method, in turn, further comprises receiving the order-marked message at the core compute node. The method further comprises receiving, at the core compute node, another message from the gateway, and receiving, at the core compute node, an order-marked version of the other message from the sequencer. The method further comprises determining at the core compute node a relative ranking of the order marked message among order marked versions of other messages received by the core compute node in the electronic trading system. The method further comprises completing, at the core compute node, an electronic trade matching function for the electronic trade request in accordance with the determined relative ranking, the completing step matching a limit price with a counterparty limit price for the financial instrument; Enabling electronic trading of financial products.

代替の方法の実施形態は、例示の電子取引システムの実施形態との関連で上述したものと同様である。 Alternative method embodiments are similar to those described above in connection with the exemplary electronic trading system embodiments.

他の例示実施形態によると、電子取引システムのシーケンサは、一連の命令を符号化した非一時的コンピュータ可読媒体を備え、一連の命令は、シーケンサに読み込まれて実行されると、シーケンサに、電子取引システムのポイントツーポイントメッシュシステムにおいて第1の直接接続を介してゲートウェイと直接通信させる。一連の命令はさらに、シーケンサに、電子取引システムのポイントツーポイントメッシュシステムにおいて第2の直接接続を介してコアコンピュートノードと直接通信させる。シーケンサは、ゲートウェイとコアコンピュートノードの間に第1及び第2の直接接続を介して挿入される。第1及び第2の直接接続は、それぞれの非共有帯域幅を有する。一連の命令はさらに、シーケンサに、固有順序識別子を用いてメッセージ又はその表示をマーク付けすることによって順序マーク付きメッセージを生成させ、メッセージはシーケンサによってそれぞれ第1又は第2の直接接続を介して受信される。一連の命令はさらに、シーケンサに、順序マーク付きメッセージをゲートウェイ及びコアコンピュートノードに送信させる。 According to other exemplary embodiments, a sequencer for an electronic trading system includes a non-transitory computer-readable medium encoding a series of instructions that, when loaded into and executed by the sequencer, causes the sequencer to electronically The point-to-point mesh system of the transaction system is in direct communication with the gateway via a first direct connection. The series of instructions further causes the sequencer to communicate directly with the core compute node via the second direct connection in the point-to-point mesh system of the electronic trading system. A sequencer is inserted between the gateway and the core compute node via first and second direct connections. The first and second direct connections have respective unshared bandwidths. The set of instructions further causes the sequencer to generate an order-marked message by marking the message or representation thereof with a unique order identifier, the message being received by the sequencer via the first or second direct connection, respectively. be done. The series of instructions further causes the sequencer to send order marked messages to the gateway and core compute nodes.

他の例示実施形態によると、電子取引システムは、活性化リンク、順位付けパス及び順位付けパス内に電子的に配置されたシーケンサを介してコアコンピュートノードに結合されたゲートウェイを備える。ゲートウェイは、活性化リンク及び順位付けパスを介してメッセージをコアコンピュートノードに送信するように構成される。コアコンピュートノードは、メッセージ及びメッセージの順序マーク付きバージョンをゲートウェイ及びシーケンサからそれぞれ受信するように構成される。順序マーク付きバージョンは、活性化リンクを介して通信されて順位付けパスを介してシーケンサによって受信された複数のメッセージの中のメッセージの確定的な位置を示す順序識別子を含む。メッセージ及び順序マーク付きバージョンは、共通のメタデータを含む。 According to another exemplary embodiment, an electronic trading system includes a gateway coupled to a core compute node via an activation link, a ranking path, and a sequencer electronically located within the ranking path. The gateway is configured to send messages to the core compute nodes via the activation link and the ranking path. The core compute nodes are configured to receive messages and order-marked versions of messages from the gateway and the sequencer, respectively. The order marked version includes an order identifier indicating the definitive position of the message among the plurality of messages communicated via the activation link and received by the sequencer via the ranking path. Messages and order marked versions contain common metadata.

コアコンピュートノードは、(i)活性化リンクを介したメッセージの受信に応じて電子取引のためのマッチング機能アクティビティを開始し、(ii)順位付けパスを介した順序マーク付きバージョンの受信に応じて、順序識別子を用いて、電子取引をサービス提供することに向けてマッチング機能アクティビティの完了を優先するように構成され得る。 The core compute node (i) initiates a matching function activity for the electronic transaction in response to receiving the message via the activation link, and (ii) in response to receiving the order-marked version via the ranking path. , may be configured to prioritize completion of matching function activities toward servicing electronic transactions using the ordering identifier.

メッセージ及び順序マーク付きバージョンは、共通のメタデータを含み得る。コアコンピュートノードはさらに、順位付けパスを介して順序マーク付きバージョンの受信に応じて、共通のメタデータに基づいてメッセージを順序マーク付きバージョンに相関付けるように構成され得る。 Messages and order marked versions may include common metadata. The core compute node may be further configured to correlate the message to the order marked version based on the common metadata in response to receiving the order marked version via the ranking path.

さらに他の例示実施形態によると、電子取引システムは、ポイントツーポイントメッシュトポロジーにおいて配置されたゲートウェイ、シーケンサ及びコアコンピュートノードを備え得る。コアコンピュートノードは、参加者デバイスから受信されてゲートウェイを介してポイントツーポイントメッシュトポロジーに導入される取引要求にサービス提供することに向けてマッチング機能を実行するように構成され得る。ポイントツーポイントメッシュトポロジーは、第1の直接接続、第2の直接接続及び第3の直接接続を含み得る。シーケンサは、(i)ゲートウェイとコアコンピュートノードの間で第1の直接接続を介して通信されてゲートウェイ又はコアコンピュートノードからそれぞれ第2又は第3の直接接続を介してシーケンサによって受信されたメッセージに対する確定的な順位(すなわち、順序)を決定するように構成され得る。シーケンサはさらに、(ii)取引要求又はそれに対する応答を表すメッセージの順序マーク付きバージョンをゲートウェイ及びコアコンピュートノードにそれぞれ第2及び第3の直接接続を介して送信することによって確定的な順位内でメッセージの位置を伝達するように構成され得る。 According to yet other exemplary embodiments, an electronic trading system may include a gateway, a sequencer, and a core compute node arranged in a point-to-point mesh topology. The core compute nodes may be configured to perform matching functions toward servicing transaction requests received from participant devices and introduced into the point-to-point mesh topology via the gateway. The point-to-point mesh topology may include a first direct connection, a second direct connection, and a third direct connection. The sequencer is configured to: (i) respond to messages communicated via a first direct connection between the gateway and the core compute node and received by the sequencer via a second or third direct connection from the gateway or core compute node, respectively; It may be configured to determine a definitive ranking (ie, order). The sequencer further comprises: (ii) transmitting order-marked versions of messages representing transaction requests or responses thereto to the gateway and core compute nodes, respectively, within the deterministic ranking; The message may be configured to communicate the location of the message.

ここに開示される例示実施形態は、方法、装置、システム、又はそこに実現されたプログラムコードを有するコンピュータ可読媒体の形態で実施可能であることが理解されるべきである。 It should be understood that the example embodiments disclosed herein can be implemented in the form of a method, apparatus, system, or computer-readable medium having program code embodied therein.

上記は、各種図面の全体を通じて同様の符号は同じ部分に言及する添付図面に示すように、例示実施形態の以下のより詳細な説明から明らかとなる。図面は、必ずしも縮尺通りではなく、その代わりに図示する実施形態に応じて強調がなされる。 The foregoing will become apparent from the following more detailed description of exemplary embodiments, as illustrated in the accompanying drawings, in which like numerals refer to like parts throughout the various drawings. The drawings are not necessarily to scale, emphasis instead being placed upon the illustrated embodiments.

図1Aは、金融商品を取引するためのマーケットの例示実施形態のブロック図である。FIG. 1A is a block diagram of an exemplary embodiment of a market for trading financial instruments. 図1B-1は、電子取引システムの例示実施形態のブロック図である。FIG. 1B-1 is a block diagram of an exemplary embodiment of an electronic trading system. 図1B-2は、他の電子取引システムの例示実施形態のブロック図である。FIG. 1B-2 is a block diagram of an exemplary embodiment of another electronic trading system. 図1Cは、ポイントツーポイントメッシュシステムの例示実施形態のブロック図である。FIG. 1C is a block diagram of an exemplary embodiment of a point-to-point mesh system. 図1Dは、電子取引システムの他の例示実施形態のブロック図である。FIG. ID is a block diagram of another example embodiment of an electronic trading system. 図1Eは、取引メッセージのためのメッセージフォーマットのフィールドの例示実施形態の表である。FIG. 1E is a table of an example embodiment of fields of a message format for a transaction message. 図1Fは、電子取引システムの動作の例示実施形態を示すフロー図である。FIG. 1F is a flow diagram illustrating an exemplary embodiment of the operation of an electronic trading system. 図1Gは、電子取引システムの動作の他の例示実施形態を示すフロー図である。FIG. 1G is a flow diagram illustrating another exemplary embodiment of the operation of an electronic trading system. 図2は、電子取引システムのポイントツーポイントメッシュアーキテクチャにおけるメッシュノードの例示実施形態のブロック図である。FIG. 2 is a block diagram of an exemplary embodiment of a mesh node in a point-to-point mesh architecture of an electronic trading system. 図3は、ポイントツーポイントメッシュシステムの他の例示実施形態のブロック図である。FIG. 3 is a block diagram of another exemplary embodiment of a point-to-point mesh system. 図4は、ポイントツーポイントメッシュシステムの他の例示実施形態のブロック図である。FIG. 4 is a block diagram of another exemplary embodiment of a point-to-point mesh system. 図5は、電子取引を実行する方法の例示実施形態のフロー図である。FIG. 5 is a flow diagram of an exemplary embodiment of a method for performing electronic transactions. 図6は、電子取引システムのシーケンサの例示実施形態のブロック図である。FIG. 6 is a block diagram of an exemplary embodiment of a sequencer of an electronic trading system. 図7は、電子取引システムの他の例示実施形態のブロック図である。FIG. 7 is a block diagram of another exemplary embodiment of an electronic trading system.

例示実施形態の説明は、以下の通りである。 A description of example embodiments follows.

ここに開示される専用/直接接続は、共有ネットワークスイッチを通過しないポイントツーポイント接続であることが理解されるべきである。 It should be understood that the dedicated/direct connections disclosed herein are point-to-point connections that do not go through a shared network switch.

現在の電子取引システムは、性能上の利点を与える試みを行っているが、その多くでは、マーケット参加者数の増加によるトランザクション量の増加に起因して性能の劣化が問題となる。一部のマーケット参加者による実施は、多くの場合、高速コンピュータが自動的にマーケットを監視して、通常は圧倒的な態様でマーケットの事象に反応する高頻度な取引方法に基づくものである。また、処理レイテンシー及び応答時間の更なる短縮への継続した要求があり、各マーケット参加者が経験するような性能を維持するとともに容量の枯渇及び不公平なアクセスなどの有害な結果を回避するための更なる容量及び性能の向上に対するニーズをもたらしている。 Although current electronic trading systems attempt to provide performance advantages, many suffer from performance degradation due to an increase in transaction volume due to an increase in the number of market participants. Practices by some market participants are often based on high-frequency trading methods in which high-speed computers automatically monitor the market and react to market events, usually in an overwhelming manner. There is also a continued demand for further reductions in processing latencies and response times, in order to maintain the performance experienced by each market participant and avoid deleterious consequences such as capacity exhaustion and unfair access. This has led to a need for further improvements in capacity and performance.

マーケットの事象に応答するなど、マーケット参加者がマーケットデータの変化を評価してそれに応答し得る速度の増加は、トランザクションが電子取引システムに受信される速度を増加させ、その間の受信間隔の時間を狭め、それらのトランザクションが受信される順位(すなわち、順序)を決定するように、一層高度な識別に対するニーズを必要としている。例えば、取引注文割当てなどについて、電子取引システムの確定的な動作は、これらに基づく。またさらに、各チャネルの帯域幅の増加とともに容量及び機会を増加させるために、電子取引システムに対する通信のチャネルの追加によって、より多くのトランザクションが複数の平行パスを介して電子取引システムに提出可能となる。 An increase in the speed with which market participants can evaluate and respond to changes in market data, such as in response to market events, increases the speed at which transactions are received into electronic trading systems and increases the time between receptions. The need for a higher degree of identification narrows and determines the order in which those transactions are received. Deterministic behavior of the electronic trading system is based on these, for example with respect to trading order assignments and the like. Furthermore, the addition of channels of communication to an electronic trading system allows more transactions to be submitted to the electronic trading system via multiple parallel paths to increase capacity and opportunity as the bandwidth of each channel increases. Become.

したがって、電子取引システムが、短時間で受信した着信トランザクションを識別することが有用となる。そのようなシステムが、同時に受信され又は同時に受信したとみなされるほどに時間的に近くに受信されたトランザクション間を調停することが、さらに有用となる。増加した容量及びより低いレイテンシーに加えて、ビジネスのグローバルな性質によって、電子取引システムの利用可能性及び信頼性を増加させるフォールトトレランスのニーズがさらに高まっている。 Therefore, it would be useful for electronic trading systems to identify incoming transactions received within a short period of time. It would be further useful for such systems to arbitrate between transactions that were received simultaneously or so close in time that they were considered to be received simultaneously. In addition to increased capacity and lower latency, the global nature of business has further increased the need for fault tolerance to increase the availability and reliability of electronic trading systems.

ビジネスのトランザクションは、業界の、規制上の又は法的な要件へのコンプライアンスを含み得るビジネス又は商業的目的を達成するために、1以上の関連するビジネスルール(産業、法律又は規制の要件又は慣習を含む)に従って企てられる1以上の動作又は作用として定義され得る。ビジネスのトランザクションは、1以上のコンピュータ処理及び/又はデータベース動作/プログラムアクションによって実施され得るものであり、それら自体をトランザクションということもある。ビジネスのトランザクションは、関連するビジネスルールによって定義されるように、以下の点で確定的なものとして特徴付けられ得る。それは、ビジネス/商業的目的を有効化し及び/又は参加者の期待に応えるように、時間的順位など、それらが処理される順位(すなわち、順序)に対する依存性及び/又はビジネスルールによって定義されるようにリアルタイム処理に対する依存性など、ビジネスのトランザクションがそれらの結果に影響を与える相互依存性又は関係性によって特徴付けられ得ることである。これをここでは「トランザクション確定性」という。一般的に、一組の確定的なトランザクションは、1つの順位(すなわち、順序)で実行されると特定の結果を与え、異なる順位(すなわち、順序)で実行されると異なる結果を与えることになる。一部のアプリケーションでは、確定的な処理は、リアルタイム処理よりも好まれ/優先され得る。 Business transactions are conducted in accordance with one or more relevant business rules (industry, legal or regulatory requirements or customs) to achieve a business or commercial purpose, which may include compliance with industry, regulatory or legal requirements. may be defined as one or more actions or effects contemplated according to A business transaction may be implemented by one or more computer processing and/or database operations/program actions, and may itself be referred to as a transaction. A business transaction, as defined by the associated business rules, may be characterized as deterministic in the following respects: It is defined by business rules and/or dependence on the order in which they are processed, such as temporal order, to enable business/commercial objectives and/or meet participants' expectations. Business transactions can be characterized by interdependencies or relationships that influence their outcome, such as dependence on real-time processing. This is referred to here as "transaction determinism." In general, a set of deterministic transactions will give a particular result when executed in one order (i.e., order) and will give a different result when executed in a different order (i.e., order). Become. In some applications, deterministic processing may be preferred/preferred over real-time processing.

高性能電子取引システムが、取引の機会の向上、フォールトトレランス、ローレイテンシー処理、大容量性(例えば、秒あたりに多数のメッセージを処理する)、最小限の影響でのリスク軽減及びマーケット保護並びに情報及び機会への公平なアクセスを提供しつつ、増加する負荷の下でトランザクション確定性を保証することが有用である。 High performance electronic trading systems improve trading opportunities, fault tolerance, low latency processing, high capacity (e.g. processing many messages per second), risk mitigation and market protection with minimal impact and information. It is useful to guarantee transaction determinism under increasing load while providing fair access to transactions and opportunities.

ここに開示される例示実施形態は、株、債券、コモディティ、先物、オプションなどの金融商品を売買する注文がトレーダー及びブローカーなどのマーケット参加者の間で取引されるマーケットを提供する高速電子取引システムに関する。ここに開示される電子取引システムの例示実施形態は、ローレイテンシー、公平性、フォールトトレランス及びより完全に以下に説明する他の特徴を示す。 The exemplary embodiments disclosed herein provide a high-speed electronic trading system that provides a market where orders to buy and sell financial instruments such as stocks, bonds, commodities, futures, options, etc. are traded between market participants such as traders and brokers. Regarding. The exemplary embodiments of electronic trading systems disclosed herein exhibit low latency, fairness, fault tolerance, and other features described more fully below.

図1Aは、金融商品(不図示)を取引するのに用いられる電子取引システム100の例示実施形態を含むマーケット90の例示実施形態のブロック図である。電子取引システム100は、主に、相互に取引注文を「マッチングさせる」責任を担い、それをマッチングさせるためにポイントツーポイントメッシュシステム102を採用する。一例では、金融商品を「買い付け」ようとする指値が、ポイントツーポイントメッシュシステム102のマッチングエンジンによって、「売却」しようとする対応の相手方指値にマッチングされる。マッチングされた指値及び相手方指値は、少なくとも部分的に所望の価格を充足しなければならず、残余の充足されない数量はいずれも他の適宜の反対注文に渡される。そして、マッチングされた取引注文は対合され、取引が実行される。 FIG. 1A is a block diagram of an exemplary embodiment of a market 90 that includes an exemplary embodiment of an electronic trading system 100 used to trade financial instruments (not shown). Electronic trading system 100 is primarily responsible for "matching" trading orders with each other and employs a point-to-point mesh system 102 to do so. In one example, a limit price to "buy" a financial instrument is matched by the matching engine of the point-to-point mesh system 102 to a corresponding counterparty limit price to "sell." The matched limit price and counterparty limit price must at least partially satisfy the desired price, and any remaining unfilled quantity is passed to other appropriate counter orders. The matched trading orders are then paired and the trade executed.

完全に充足されない注文又は部分的に充足された注文は、「注文控え帳」(不図示)というデータ構造体に保持される。不一致の取引注文に関する保留情報は、後続の取引注文を充足するようにマッチングエンジンによって使用可能である。注文控え帳は、通常は、各金融商品に対して保持され、一般的にその特定の商品について、すなわち、その特定の金融商品について、マーケット90の状態を定義し又は表す。注文控え帳は、例えば、マーケット参加者が買付又は売却に対する意思を表明した最近の価格及び数量を含み得る。 Orders that are not fully filled or partially filled are maintained in a data structure called an "order book" (not shown). Pending information regarding unmatched trading orders can be used by the matching engine to satisfy subsequent trading orders. An order book is typically maintained for each financial instrument and generally defines or represents the state of the market 90 for that particular instrument, ie, for that particular instrument. The order book may include, for example, recent prices and quantities at which market participants have expressed intent to buy or sell.

マッチングの結果は、マーケットデータフィード(不図示)というストリーミングデータサービス(不図示)を介してマーケット参加者に対して可視化されてもよい。マーケットデータフィードは、通常、取引された各金融商品に対する価格付け並びに出来高及び他の統計などの関連情報を伝達する個々のメッセージを含む。 The results of the matching may be made visible to market participants via a streaming data service (not shown) called a market data feed (not shown). Market data feeds typically include individual messages conveying pricing and related information such as volume and other statistics for each financial instrument traded.

マーケット90において、マーケット参加者は、2人のトレーダー、すなわち、第1のトレーダー104a及び第2のトレーダー104bを含む。マーケット90はトレーダーであるマーケット参加者に限定されず、マーケット90は2人のトレーダーに限定されないことが理解されるべきである。マーケット90では、第1のトレーダー104a及び第2のトレーダー104bなどのマーケット参加者は、通信ネットワーク(不図示)を介して電子的に、取引注文を提出し、確認、マーケットデータ及び他の情報を受信し得る。 In market 90, market participants include two traders: a first trader 104a and a second trader 104b. It should be understood that market 90 is not limited to market participants who are traders, and market 90 is not limited to two traders. In the market 90, market participants, such as a first trader 104a and a second trader 104b, submit trading orders and receive confirmations, market data, and other information electronically via a communications network (not shown). can be received.

図1Aの例示実施形態では、第1のトレーダー104aは、第1の参加者デバイス130aを介して電子取引システム100に送信される第1の着信メッセージ3aを介して金融商品(不図示)を買い付ける第1の取引注文(不図示)を提出している。電子取引システム100は、第1の取引注文を第2の取引注文(不図示)に対してマッチングさせて金融商品を売却するポイントツーポイントメッシュシステム102を採用している。金融商品を売却するための第2の取引注文は、第2の参加者デバイス130bを介して電子取引システム100に送信される第2の着信メッセージ3bを介して第2のトレーダー104bによって提出される。 In the exemplary embodiment of FIG. 1A, a first trader 104a purchases a financial instrument (not shown) via a first incoming message 3a sent to electronic trading system 100 via first participant device 130a. A first trading order (not shown) has been submitted. Electronic trading system 100 employs a point-to-point mesh system 102 that matches a first trading order to a second trading order (not shown) to sell financial instruments. A second trading order to sell a financial instrument is submitted by a second trader 104b via a second incoming message 3b sent to the electronic trading system 100 via a second participant device 130b. .

例示実施形態では、電子取引システム100は、第1の発信メッセージ5a及び第2の発信メッセージ5bを第1の参加者デバイス130a及び第2の参加者デバイス130bにそれぞれ送信して、第1のトレーダー104a及び第2のトレーダー104bにそれぞれの取引注文の実行が成功したことをそれぞれ通知する。ポイントツーポイントメッシュシステム102は、電子取引システム100が金融商品の高速で確定的な電子取引を実行することを可能とする。ポイントツーポイントメッシュシステム102の例示実施形態を、図1B-1及び1B-2を参照して以下に開示する。 In the exemplary embodiment, the electronic trading system 100 transmits the first outgoing message 5a and the second outgoing message 5b to the first participant device 130a and the second participant device 130b, respectively, to send the first outgoing message 5a and the second outgoing message 5b to the first participant device 130a and the second participant device 130b, respectively. 104a and second trader 104b, respectively, of successful execution of their respective trading orders. Point-to-point mesh system 102 enables electronic trading system 100 to perform fast, deterministic electronic trading of financial instruments. An exemplary embodiment of a point-to-point mesh system 102 is disclosed below with reference to FIGS. 1B-1 and 1B-2.

図1B-1は、以上に開示した図1Aの電子取引システム100の例示実施形態のブロック図である。特定の実施形態では、電子取引システム100は、活性化リンク180-1-1及び順位付け(すなわち、順序付け)パス117を介してコアコンピュートノード140-1に結合されたゲートウェイ120-1を備える。電子取引システム100は、順位付けパス117内に電子的に配置されたシーケンサ150-1をさらに備える。ゲートウェイ120-1は、メッセージ(不図示)を活性化リンク180-1-1及び順位付けパス117を介してコアコンピュートノード140-1に送信するように構成される。メッセージは、図1B-2に関して以下に開示するメッセージ106であり得る。コアコンピュートノード140-1は、メッセージ及びメッセージの順序マーク付きバージョン(不図示)をゲートウェイ120-1及びシーケンサ150-1からそれぞれ受信するように構成される。メッセージの順序マーク付きバージョンは、以下にさらに開示する図1B-2の順序マーク付きメッセージ106´であり得る。順序マーク付きバージョン(すなわち、順序マーク付きメッセージ106´)は、非限定的な例について図1Eに関して以下にさらに開示するような順序マーク付きメッセージ106´の順序IDフィールド110-14に含まれ得るような順序識別子(ID)を含む。順序IDは、活性化リンク180-1-1を介して通信されて順位付けパス117を介してシーケンサ150-1によって受信された複数の他のメッセージの順序マーク付きバージョンのうちの当該メッセージの順序マーク付きバージョンの確定的な位置を示す。順序IDが確定的な位置を示す複数のメッセージは、順位付けパス117を介してコアコンピュートノード140-1によって受信された他のメッセージの順序マーク付きバージョンも含む。メッセージ(例えば、順序付けなしメッセージ又は順序マークなしメッセージ)及び順序マーク付きバージョンは、共通のメタデータ(不図示)を含む。以下にさらに開示するように、共通のメタデータを介してメッセージをその順序マーク付きバージョンに相関付けることによって、メッセージの順序IDが識別される。順序IDはさらに、シーケンサ150-1を通過して結果としてシーケンサ150-1によって順序マーク付きの、電子取引システム100全体を通じて通信される全てのメッセージうちの当該メッセージの確定的な位置を示す。 FIG. 1B-1 is a block diagram of an exemplary embodiment of the electronic trading system 100 of FIG. 1A disclosed above. In particular embodiments, electronic trading system 100 includes gateway 120-1 coupled to core compute node 140-1 via activation link 180-1-1 and ranking (ie, ordering) path 117. Electronic trading system 100 further includes a sequencer 150-1 electronically located within ranking path 117. Gateway 120-1 is configured to send messages (not shown) to core compute node 140-1 via activation link 180-1-1 and ranking path 117. The message may be the message 106 disclosed below with respect to FIG. 1B-2. Core compute node 140-1 is configured to receive messages and order-marked versions (not shown) of the messages from gateway 120-1 and sequencer 150-1, respectively. The order-marked version of the message may be order-marked message 106' of FIG. 1B-2, further disclosed below. The order marked version (i.e., the order marked message 106') may be included in the order ID field 110-14 of the order marked message 106' as further disclosed below with respect to FIG. 1E for a non-limiting example. Contains a sequence identifier (ID). The order ID determines the order of the message among order-marked versions of other messages communicated via activation link 180-1-1 and received by sequencer 150-1 via ranking path 117. Indicates the definitive position of the marked version. The plurality of messages whose order IDs indicate definitive positions also include order-marked versions of other messages received by core compute node 140-1 via ranking path 117. Messages (eg, unordered or unordered messages) and order-marked versions include common metadata (not shown). As further disclosed below, a message's order ID is identified by correlating the message to its order marked version via common metadata. The order ID further indicates the definitive position of the message among all messages communicated throughout electronic trading system 100 that have passed through sequencer 150-1 and have been order-marked as a result by sequencer 150-1.

電子取引システム100の要素はそこで通信されるメッセージにタイムスタンプを施す一方で、シーケンサ150-1によって決定された順序IDは電子取引システム100で通信されるメッセージの位置(順位/優先度)を決定することが理解されるべきである。複数のシステムが同じタイムスタンプによってメッセージにタイムスタンプを施すことが可能であり、結果として、そのメッセージに対する順位/優先度がその受信者において決定されなければならない場合がある。そのようなことは、シーケンサ150-1が電子取引システム100全体を通じて通信されたメッセージの順位/優先度を単独で決定する主体となり得るので、電子取引システム100では起こらない。 Elements of electronic trading system 100 timestamp messages communicated therein, while the order ID determined by sequencer 150-1 determines the position (rank/priority) of messages communicated in electronic trading system 100. It should be understood that Multiple systems may timestamp a message with the same timestamp, and as a result, a ranking/priority for the message may have to be determined at its recipient. Such does not occur in electronic trading system 100 because sequencer 150-1 may be the sole determiner of the order/priority of messages communicated throughout electronic trading system 100.

コアコンピュートノード140-1は、(i)活性化リンク180-1-1を介したメッセージの受信に応じて電子取引のためのマッチング機能アクティビティを開始し、(ii)順位付けパス117を介した順序マーク付きバージョンの受信に応じて、順序識別子を用いて、電子取引にサービス提供することに向けてマッチング機能アクティビティの完了を優先するように構成され得る。 Core compute node 140-1 (i) initiates matching function activity for electronic transactions in response to receiving the message via activation link 180-1-1; and (ii) initiates matching function activity via ranking path 117. In response to receiving the order marked version, the order identifier may be configured to prioritize completion of matching function activities toward servicing electronic transactions.

メッセージ及び順序マーク付きバージョンは、共通のメタデータを含み得る。コアコンピュートノード140-1はさらに、順位付けパス117を介して順序マーク付きバージョンの受信に応じて、共通のメタデータに基づいてメッセージを順序マーク付きバージョンに相関付けるように構成され得る。 Messages and order marked versions may include common metadata. Core compute node 140-1 may be further configured to correlate the message to the order-marked versions based on common metadata in response to receiving the order-marked versions via ranking path 117.

図1B-1の例示実施形態では、メッセージは、活性化リンク順方向に、すなわち、act-link-fwd-dir113aにおいて、活性化リンク180-1-1を介してコアコンピュートノード140-1に送信され、かつ順位付けパス順方向に、すなわち、order-path-fwd-dir115aにおいて、順位付けパス117を介してコアコンピュートノード140-1に送信される。マッチング機能アクティビティの完了に続いて、コアコンピュートノード140-1は、応答(不図示)を活性化リンク逆方向(すなわち、act-link-rev-dir113b)及び順位付けパス逆方向(すなわち、order-path-rev-dir115b)に活性化リンク180-1-1及び順位付けパス117を介してゲートウェイ120-1に送信し得る。活性化リンク180-1-1及び順位付けパス117を介してゲートウェイ120-1に送信された応答は、図1B-2に関して以下にさらに開示する応答107であり得る。 In the example embodiment of FIG. 1B-1, the message is sent to core compute node 140-1 via activation link 180-1-1 in the activation link forward direction, i.e., at act-link-fwd-dir 113a. and is sent to core compute node 140-1 via ranking path 117 in the ranking path forward direction, ie, at order-path-fwd-dir 115a. Following completion of the matching function activity, core compute node 140-1 sends a response (not shown) to the activation link reverse direction (i.e., act-link-rev-dir 113b) and the ranking path reverse direction (i.e., order- path-rev-dir 115b) via activation link 180-1-1 and ranking path 117 to gateway 120-1. The response sent to gateway 120-1 via activation link 180-1-1 and ranking path 117 may be response 107, further disclosed below with respect to FIG. 1B-2.

活性化リンク180-1-1は単一の直接接続であり、一方で順位付けパス117は複数の直接接続を含む。例えば、第1の直接接続180-1-1ともいう活性化リンク180-1-1は単一の直接接続であり、一方で順位付けパス117は、図1B-2に関して以下にさらに開示する第2の直接接続180-gw1―s1及び第3の直接接続180-c1-s1を含み得る。 Activation link 180-1-1 is a single direct connection, while ranking path 117 includes multiple direct connections. For example, activation link 180-1-1, also referred to as first direct connection 180-1-1, is a single direct connection, while ranking path 117 is a It may include two direct connections 180-gw1-s1 and a third direct connection 180-c1-s1.

ゲートウェイ120-1、シーケンサ150-1及びコアコンピュートノード140-1は、ポイントツーポイントメッシュトポロジーにおいて配置される。コアコンピュートノード140-1は、参加者デバイスから受信されてゲートウェイ120-1を介してポイントツーポイントメッシュトポロジーに導入される取引要求にサービス提供することに向けてマッチング機能(すなわち、電子取引マッチング機能)を実行するように構成され得る。この参加者デバイスは、図1B-2に関して以下にさらに開示される。ポイントツーポイントメッシュトポロジーは、以上に開示したようにかつ図1B-2に関して以下にさらに開示するように、第1の直接接続、第2の直接接続及び第3の直接接続を含む。シーケンサ150-1は、(i)ゲートウェイ120-1とコアコンピュートノード140-1の間で第1の直接接続を介して通信されてゲートウェイ120-1又はコアコンピュートノード140-1からそれぞれ第2又は第3の直接接続を介してシーケンサ150-1によって受信されたメッセージに対する確定的な順位(すなわち、順序)を決定するように構成され得る。シーケンサ150-1はさらに、(ii)メッセージの順序マーク付きバージョンをゲートウェイ120-1及びコアコンピュートノード140-1にそれぞれ第2及び第3の直接接続を介して送信することによって確定的な順位内でメッセージの位置を伝達するように構成され得る。メッセージは、図1B-2に関して以下に開示するように、取引要求又はそれに対する応答を表す。 Gateway 120-1, sequencer 150-1, and core compute node 140-1 are arranged in a point-to-point mesh topology. Core compute node 140-1 provides matching functionality (i.e., electronic transaction matching functionality) for servicing transaction requests received from participant devices and introduced into the point-to-point mesh topology via gateway 120-1. ). This participant device is further disclosed below with respect to FIG. 1B-2. The point-to-point mesh topology includes a first direct connection, a second direct connection, and a third direct connection, as disclosed above and further disclosed below with respect to FIG. 1B-2. Sequencer 150-1 is configured to: (i) communicate via a first direct connection between gateway 120-1 and core compute node 140-1 to transmit data from gateway 120-1 or core compute node 140-1, respectively; It may be configured to determine a definitive ranking (ie, order) for messages received by sequencer 150-1 via the third direct connection. Sequencer 150-1 further comprises: (ii) transmitting an order-marked version of the message to gateway 120-1 and core compute node 140-1 via second and third direct connections, respectively; may be configured to convey the location of the message. The message represents a transaction request or a response thereto, as disclosed below with respect to FIG. 1B-2.

図1B-2は、以上に開示した図1Aの電子取引システム100の例示実施形態の他のブロック図である。電子取引システム100は、ゲートウェイ120-1、電子取引マッチング機能を実行するように構成されたコアコンピュートノード140-1、及びシーケンサ150-1を備える。ゲートウェイ120-1とコアコンピュートノード140-1とは、第1の直接接続180-1-1を介して結合される。ゲートウェイ120-1とシーケンサ150-1とは、第2の直接接続180-gw1-s1を介して結合される。シーケンサ150-1とコアコンピュートノード140-1とは、第3の直接接続180-c1-s1を介して結合される。第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1は、それぞれの非共有帯域幅を有する。 FIG. 1B-2 is another block diagram of the exemplary embodiment of the electronic trading system 100 of FIG. 1A disclosed above. Electronic trading system 100 includes a gateway 120-1, a core compute node 140-1 configured to perform electronic transaction matching functions, and a sequencer 150-1. Gateway 120-1 and core compute node 140-1 are coupled via a first direct connection 180-1-1. Gateway 120-1 and sequencer 150-1 are coupled via a second direct connection 180-gw1-s1. Sequencer 150-1 and core compute node 140-1 are coupled via a third direct connection 180-c1-s1. The first direct connection 180-1-1, the second direct connection 180-gw1-s1 and the third direct connection 180-c1-s1 have respective non-shared bandwidths.

開示の一部の図面では、図1B-2に示す第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1の矢印などの矢印が、直接接続(すなわち、直接リンク)上に含まれる。このような直接接続/リンク上の矢印は、データが直接接続/リンクを介して双方向に流れ得ることを示す。開示の他の図面は以上に開示した図1B-1及び以下にさらに開示する図1Dのように、直接接続/リンクに適用される上記矢印を有さない場合もあるが、データはそのような接続/リンクに沿って双方向に流れ得ること、及びそのような接続/リンクは単一の通信リンク又は並列の2つのリンクであってもよく、その2つのリンクの各々は一方向であってデータはこの2つのリンクを介して対向方向に流れることが理解されるべきである。 In some drawings of the disclosure, arrows such as the first direct connection 180-1-1, second direct connection 180-gw1-s1 and third direct connection 180-c1-s1 shown in FIG. 1B-2 are shown. Arrows are included on direct connections (ie, direct links). An arrow on such a direct connection/link indicates that data can flow in both directions via the direct connection/link. Although other figures of the disclosure may not have the above arrows applied to direct connections/links, such as FIG. 1B-1 disclosed above and FIG. 1D further disclosed below, the data may be may flow bidirectionally along a connection/link, and such connection/link may be a single communication link or two links in parallel, each of the two links being unidirectional; It should be understood that data flows in opposite directions through the two links.

図1B-2を参照して続けると、ゲートウェイ120-1は、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージ106(すなわち、B)をコアコンピュートノード140-1に第1の直接接続180-1-1を介して送信し、これに対して、メッセージ106がコアコンピュートノード140-1によって受信されるように構成される。ゲートウェイ120-1はさらに、メッセージ106(すなわち、B)をシーケンサ150-1に第2の直接接続180-gw1-s1を介して送信するように構成され、シーケンサ150-1は、これに対して、図1Dに関して以下にさらに開示するように、順序マーク付きメッセージ106´(すなわち、C)をコアコンピュートノード140-1に第3の直接接続180-c1-s1を介して送信するように構成される。シーケンサ150-1は、ゲートウェイ120-1とコアコンピュートノード140の間に第2及び第3の直接接続を介して挿入される。シーケンサ150-1によって送信された順序マーク付きメッセージ106´は、ゲートウェイ120-1によって送信されたメッセージの順序付けされたバージョンである。これに対して、順序マーク付きメッセージは、コアコンピュートノード140-1によって受信される。コアコンピュートノード140-1は、電子取引システム100においてコアコンピュートノード140-1に受信された他のメッセージの順序マーク付きバージョン(不図示)のうちの順序マーク付きメッセージ106´の相対順位付けを決定するように構成される。コアコンピュートノード140-1はさらに、決定された相対順位付けに応じて電子取引要求に対する電子取引マッチング機能を完了し、指値がその金融商品についての相手方指値とマッチングされるようにして金融商品の電子取引を可能とするように構成される。 Continuing with reference to FIG. 1B-2, gateway 120-1 sends message 106 (i.e., B) representing an electronic transaction request with a limit price to buy or sell a financial instrument to core compute node 140-1 on a first 180-1-1, to which message 106 is configured to be received by core compute node 140-1. Gateway 120-1 is further configured to send message 106 (i.e., B) to sequencer 150-1 via second direct connection 180-gw1-s1, to which sequencer 150-1 , configured to send the order-marked message 106' (i.e., C) to the core compute node 140-1 via the third direct connection 180-c1-s1, as further disclosed below with respect to FIG. 1D. Ru. Sequencer 150-1 is inserted between gateway 120-1 and core compute node 140 via second and third direct connections. The order marked message 106' sent by sequencer 150-1 is an ordered version of the message sent by gateway 120-1. In contrast, order-marked messages are received by core compute node 140-1. Core compute node 140-1 determines a relative ranking of order-marked message 106' among order-marked versions (not shown) of other messages received by core compute node 140-1 in electronic trading system 100. configured to do so. The core compute node 140-1 further completes an electronic trade matching function for the electronic trade request according to the determined relative ranking, and matches the limit price with the counterparty limit price for the financial instrument to match the electronic trade request. Configured to enable transactions.

電子取引マッチング機能は、取引注文をマッチングさせること自体よりも多くを含み得ることが理解されるべきである。例えば、電子取引マッチング機能は、図1Dに関して以下にさらに開示するような承認メッセージの送信を含んでいてもよい。また、コアコンピュートノード140-1は、コアコンピュートノード140-1がそれを促進することを可能とする順序マーク付きメッセージ106´の受信前に電子取引マッチング機能の一部を実行してもよい。例えば、メッセージ106(例えば、非順序マーク付きメッセージ)の受信に続いて、コアコンピュートノード140-1は、非限定的な例について、図1Eに関して以下にさらに開示する銘柄記号フィールド110-2の銘柄記号など、メッセージ106において識別された銘柄記号に関するデータを後のアクセスのために高速メモリに読み込むことによって、電子取引マッチング機能を開始し得る。銘柄記号は、株式表示記号又はストックティッカーなどの取引された有価証券を表し得る。ただし、コアコンピュートノード140-1は、メッセージ106の内容に関連する任意のタイプのアクティビティを実行することによって電子取引マッチング機能を開始(トリガ)し得ることが理解されるべきである。 It should be understood that the electronic trade matching function may involve more than matching trade orders per se. For example, the electronic transaction matching function may include sending an authorization message as further disclosed below with respect to FIG. 1D. Core compute node 140-1 may also perform some of the electronic transaction matching functions prior to receiving the order marked message 106' that enables core compute node 140-1 to facilitate it. For example, following receipt of message 106 (e.g., an out-of-order marked message), core compute node 140-1 determines the stock symbol field 110-2, as further disclosed below with respect to FIG. 1E, for non-limiting examples. The electronic trade matching function may be initiated by loading data regarding the stock symbols identified in message 106, such as symbols, into high speed memory for later access. A stock symbol may represent a traded security, such as a stock symbol or stock ticker. However, it should be understood that core compute node 140-1 may initiate (trigger) the electronic transaction matching function by performing any type of activity related to the content of message 106.

シーケンサ150-1はさらに、固有順序識別子(不図示)によってメッセージ106又はその表示をマーク付けすることによって順序マーク付きメッセージ106´を生成するように構成され得る。固有順序識別子は、シーケンサ150-1においてメッセージ106の到着時間に対応する値を有していてもよく、シーケンサ150-1において受信された複数のメッセージ(不図示)のうちのメッセージ106の相対順序位置を示していてもよい。 Sequencer 150-1 may be further configured to generate order-marked messages 106' by marking messages 106 or representations thereof with unique order identifiers (not shown). The unique order identifier may have a value corresponding to the time of arrival of message 106 at sequencer 150-1, and the relative order of message 106 among a plurality of messages (not shown) received at sequencer 150-1. It may also indicate the location.

コアコンピュートノード140-1は、上述のように、順序付けなしメッセージ106の受信に応じて電子取引機能を開始し、それにより順序付けなしメッセージ106の処理を開始し得る一方で、コアコンピュートノード140-1は、コアコンピュートノード140-1が順序マーク付きメッセージ106´を受信するまでメッセージ106の処理を完了せず及び/又はメッセージ106の処理の結果を確約しなくてもよい。順序マーク付きメッセージ106´において順序識別子を介して指定されるような、メッセージを処理するための確定的な順位付けがない場合、例えば、コンピュートノード140-1によるメッセージの処理は予測不能となり得る。可能性ある予測不能な結果の非限定的な例として、有価証券の交換における相手方に対する潜在的なマッチングを各々が表す複数の未処理の順序付けなしメッセージがあり得る。複数の潜在的なマッチング間で調停する確定的な態様があると有用である。これは、おそらくは、潜在的なマッチングのうちの一部の組しか、相手方の所与の取引注文に対して約定可能とはならないためである。 Core compute node 140-1 may initiate electronic transaction functionality in response to receiving unordered message 106 and thereby begin processing unordered message 106, as described above, while core compute node 140-1 may not complete processing of message 106 and/or commit to the results of processing message 106 until core compute node 140-1 receives order-marked message 106'. Without a definitive ranking for processing messages, such as specified via an order identifier in order marked message 106', processing of messages by compute node 140-1, for example, may be unpredictable. A non-limiting example of a possible unpredictable outcome may be multiple outstanding unordered messages, each representing a potential match for a counterparty in an exchange of securities. It would be useful to have a deterministic way to arbitrate between multiple potential matches. This is likely because only a subset of potential matches will be available for execution for a given trading order of a counterparty.

一部の実施形態によると、コンピュートノード140-1は、順序付けなしメッセージ106及び順序マーク付きメッセージ106´の双方を受信した後に、図1Eとの関連で後述するように、メッセージの両バージョンにおける識別情報を介して、順序付けなしメッセージ106を順序マーク付きメッセージ106´に相関付けてもよい。コンピュートノード140-1が順序マーク付きメッセージ106´を受信すると、コンピュートノード140-1は、その後に、電子取引システム100の全体を通じてメッセージ106/106´が他のメッセージに相対して処理されるべき適切な順序を決定してもよく、そして、適宜の応答メッセージを送出すること、場合によっては順序マーク付きメッセージ106´に対してシーケンサによって割り当てられた順序識別子を参照することなど、メッセージ106/106´の処理を完了してもよい。有価証券の交換における相手方に対する潜在的なマッチングを表す複数のメッセージの非限定的な例に戻ると、潜在的なマッチングを表すメッセージの順序マーク付きバージョンがコンピュートノード140-1によって受信されると、コンピュートノード140-1は、可能性あるマッチングが発生して電子取引マッチング機能を完了させる順序を厳密に決定し得る。 According to some embodiments, after receiving both the unordered message 106 and the ordered message 106', the compute node 140-1 identifies the identification in both versions of the message, as described below in connection with FIG. 1E. The unordered message 106 may be correlated to the ordered message 106' via information. When the compute node 140-1 receives the order-marked message 106', the compute node 140-1 determines whether the message 106/106' is to be processed relative to other messages throughout the electronic trading system 100. Messages 106/106 may determine the appropriate order and send an appropriate response message, possibly referencing the order identifier assigned by the sequencer to the order marked message 106'. You may complete the process of ''. Returning to the non-limiting example of multiple messages representing potential matches for a counterparty in an exchange of securities, when an order-marked version of a message representing a potential match is received by compute node 140-1: Compute node 140-1 may determine the exact order in which potential matches occur to complete the electronic transaction matching function.

例示実施形態によると、順序マーク付きメッセージ106´をコンピュートノード140-1に第3の直接接続180-c1-s1を介して送信することに加えて、シーケンサ150-1はさらに、順序マーク付きメッセージ106´(すなわち、C)をゲートウェイ120-1に第2の直接接続180-gw1-s1を介して送信してもよい。順序マーク付きメッセージ106´(すなわち、C)をメッセージ106の送信者に提供することによって、送信者、すなわち、ゲートウェイ120-1が、メッセージ、すなわち、メッセージ106に割り当てられた順序番号を(図1Eとの関連で後述するような)メッセージにおける他の識別情報に相関付けることができる。それにより、送信者は、図1Dに関して以下にさらに開示するように、その順序番号を参照する後続のメッセージに容易に対処することができる。 According to the example embodiment, in addition to transmitting the order marked message 106' to the compute node 140-1 via the third direct connection 180-c1-s1, the sequencer 150-1 further sends the order marked message 106' to the compute node 140-1 via the third direct connection 180-c1-s1. 106' (ie, C) may be sent to gateway 120-1 via a second direct connection 180-gw1-s1. By providing the order marked message 106' (i.e., C) to the sender of the message 106, the sender, i.e., the gateway 120-1, determines the sequence number assigned to the message, i.e., the message 106 (FIG. 1E). may be correlated to other identifying information in the message (as described below in connection with the Message). Thereby, the sender can easily address subsequent messages that reference that sequence number, as further disclosed below with respect to FIG. 1D.

ゲートウェイ120-1、コアコンピュートノード140-1、シーケンサ150-1、第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1は、ポイントツーポイントメッシュシステム102を構成する。例示実施形態によると、ポイントツーポイントメッシュシステム102では、第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1又はそれらの一部の組は、少なくとも1つのそれぞれの冗長直接接続(不図示)によって保護され得る。この直接接続が故障した場合、それぞれの冗長直接接続が、その代わりに採用され得る。このように、電子取引システム100は、第1、第2及び第3の直接接続又はそれらの一部の組に対する少なくとも1つのそれぞれの冗長直接接続をさらに備え得る。 The gateway 120-1, the core compute node 140-1, the sequencer 150-1, the first direct connection 180-1-1, the second direct connection 180-gw1-s1, and the third direct connection 180-c1-s1 are , configures a point-to-point mesh system 102. According to an exemplary embodiment, the point-to-point mesh system 102 includes a first direct connection 180-1-1, a second direct connection 180-gw1-s1, and a third direct connection 180-c1-s1, or one of them. The sets of units may be protected by at least one respective redundant direct connection (not shown). If this direct connection fails, a respective redundant direct connection can be adopted in its place. As such, electronic trading system 100 may further include at least one respective redundant direct connection to the first, second and third direct connections or some set thereof.

例示実施形態によると、電子取引システム100はクロックをさらに備えていてもよく、ゲートウェイ120-1、コアコンピュートノード140-1及びシーケンサ150-1は、以下にさらに開示するように、図1Dのクロック195のようなクロックに基づいて同期され得る。 According to example embodiments, electronic trading system 100 may further include a clock, and gateway 120-1, core compute node 140-1, and sequencer 150-1 clock the clock of FIG. 1D, as further disclosed below. 195.

メッセージ106は、それがゲートウェイ、すなわち、ゲートウェイ120-1から到来するため、「ゲートウェイ」メッセージという場合がある。メッセージ106は、それが例示実施形態ではコンピュートノード、すなわち、コアコンピュートノード140-1に宛てられるので「コンピュートノード宛て」メッセージという場合もある。メッセージ106は、参加者デバイス(不図示)からゲートウェイ120-1によって受信された着信メッセージ103(すなわち、A)の受信に応じてゲートウェイ120-1によって送信されたゲートウェイメッセージである。順序マーク付きメッセージ106´は、第1の順序マーク付きメッセージであり得る。コアコンピュートノード140-1はさらに、メッセージ106、すなわち、ゲートウェイメッセージを受信したことに応じて、コアコンピュートノードメッセージ、すなわち、応答107(すなわち、D)をゲートウェイ120-1に第1の直接接続180-1-1を介して送信し、コアコンピュートノードメッセージ(すなわち、応答107)をシーケンサ150-1に第3の直接接続180-c1-s1を介して送信するように構成され得る。シーケンサ150-1はさらに、これに対して、第2の順序マーク付きメッセージ、すなわち、順序マーク付き応答107´(すなわち、E)をゲートウェイ120-1に第2の直接接続180-gw1-s1を介して送信するように構成される。第2の順序マーク付きメッセージは、コアコンピュートノードメッセージの順序付けされたバージョンである。ゲートウェイ120-1はさらに、第2の順序マーク付きメッセージ(すなわち、順序マーク付き応答107´)及びコアコンピュートノード140-1からゲートウェイ120-1に送信された他のメッセージの順序マーク付きバージョンの相対順位付けを決定するように構成され得る。ゲートウェイ120-1はさらに、発信メッセージ105(すなわち、F)を、決定された相対順位付けに応じて参加者デバイスに送信するように構成され得る。メッセージ106及び応答107は取引アクティビティに関するものであることが理解されるべきである。 Message 106 may be referred to as a "gateway" message because it comes from a gateway, gateway 120-1. Message 106 may also be referred to as a "directed to compute node" message because it is addressed to a compute node, ie, core compute node 140-1, in the exemplary embodiment. Message 106 is a gateway message sent by gateway 120-1 in response to receipt of incoming message 103 (ie, A) received by gateway 120-1 from a participant device (not shown). Order marked message 106' may be a first order marked message. Core compute node 140-1 further, in response to receiving message 106, a gateway message, sends a core compute node message, response 107 (i.e., D) to gateway 120-1 through a first direct connection 180. -1-1 and core compute node messages (ie, responses 107) to sequencer 150-1 via a third direct connection 180-c1-s1. Sequencer 150-1 further connects gateway 120-1 with a second direct connection 180-gw1-s1 in response to a second order-marked message, namely, order-marked response 107' (i.e., E). configured to send via. The second order marked message is an ordered version of the core compute node message. Gateway 120-1 further determines the relative order-marked versions of the second order-marked message (i.e., order-marked response 107') and other messages sent from core compute node 140-1 to gateway 120-1. The system may be configured to determine a ranking. Gateway 120-1 may be further configured to send outgoing message 105 (ie, F) to the participant device in response to the determined relative ranking. It should be understood that messages 106 and responses 107 relate to trading activity.

シーケンサ150-1はさらに、第2の順序マーク付きメッセージ、すなわち、順序マーク付き応答107´(すなわち、E)をコアコンピュートノード140-1に第3の直接接続180-c1-s1を介して送信し得る。順序マーク付き応答107´(すなわち、E)を応答107の送信者に提供することによって、送信者、すなわち、コアコンピュートノード140-1が、メッセージ、すなわち、応答107に割り当てられた順序番号を(図1Eとの関連で後述するような)メッセージにおける他の識別情報に相関付けることができる。それにより、送信者は、図1Dに関して以下にさらに開示するように、その順序番号を参照する後続のメッセージに容易に対処することができる。 Sequencer 150-1 further transmits a second order-marked message, namely, order-marked response 107' (i.e., E) to core compute node 140-1 via third direct connection 180-c1-s1. It is possible. By providing an order-marked response 107' (i.e., E) to the sender of the response 107, the sender, i.e., core compute node 140-1, assigns the ordinal number assigned to the message, i.e., the response 107 ( It can be correlated to other identifying information in the message (as described below in connection with FIG. 1E). Thereby, the sender can easily address subsequent messages that reference that sequence number, as further disclosed below with respect to FIG. 1D.

コンピュートノード140-1によって受信されるメッセージ106及び106´との関連で上記と同様に、順序付けなし応答メッセージ107の受信に応じて、ゲートウェイ120-1は、ゲートウェイ120-1が順序マーク付き応答107´を受信する前であっても、その応答メッセージの処理を活性化させ得る。非限定的な例として、処理を活性化すること(開始すること)は、ゲートウェイ120-1の未決済取引注文データベースの状態を更新すること及び/又は参加者デバイスに送信可能となった発信メッセージ105を蓄積することを含み得る。ただし、一部の実施形態では、ゲートウェイ120-1は、電子取引システム100における他のメッセージを含む一連のメッセージでの応答メッセージ107の確定的な位置を指定する順序識別子を含む順序マーク付き応答メッセージ107´をゲートウェイ120-1が受信するまでは順序マーク付き応答メッセージ107の処理(この処理は発信メッセージ105を参加者デバイスに送信することを含む)を完了しなくてもよい。一部の実施形態では、ゲートウェイ120-1は、順序付けなしメッセージ107及び順序マーク付き応答メッセージ107´の双方を受信した後に、図1Eとの関連で後述するように、メッセージの両バージョンにおける識別情報を介して順序付けなし応答メッセージ107を順序マーク付き応答メッセージ107´に相関させてもよい。これにより、応答メッセージ107/107´の確定的な位置は、順序マーク付き応答メッセージ107´の受信に応じて決定される。一部の実施形態では、その後に、応答メッセージの処理が完了されてもよく、その処理は、発信メッセージ105が参加者デバイスに送信されることを確約することを含む。 Similar to the above in connection with messages 106 and 106' received by compute node 140-1, upon receipt of unordered response message 107, gateway 120-1 determines that gateway 120-1 receives ordered response 107. The processing of the response message may be activated even before the response message is received. By way of non-limiting example, activating (initiating) the process may include updating the state of the gateway 120-1's open trade order database and/or sending an outgoing message to the participant device. 105. However, in some embodiments, the gateway 120-1 sends an order-marked response message that includes an order identifier that specifies a definitive position of the response message 107 in a series of messages that include other messages in the electronic trading system 100. 107' is received by gateway 120-1 before processing of order marked response message 107, which includes sending outgoing message 105 to the participant device, may not be complete. In some embodiments, after receiving both the unordered message 107 and the ordered response message 107', the gateway 120-1 may include the identification information in both versions of the message, as described below in connection with FIG. 1E. The unordered response message 107 may be correlated to the ordered response message 107' via. Thereby, the definitive position of the response message 107/107' is determined in response to the receipt of the order-marked response message 107'. In some embodiments, processing of the response message may then be completed, including ensuring that the outgoing message 105 is sent to the participant device.

電子取引システム100は、コアコンピュートノード140-1によってアクセス可能な注文控え帳(不図示)をさらに備え得る。コアコンピュートノード140-1はさらに、実行される電子取引マッチング機能に基づいて金融商品(不図示)に関する取引注文をマッチングさせるように構成され得る。例えば、コアコンピュートノード140-1はさらに、電子取引マッチング機能を用いて金融商品に関する取引注文をマッチングさせるように構成され得る。コアコンピュートノード140-1はさらに、注文控え帳における金融商品の残持ち高(不図示)を維持するように構成され得る。金融商品の金額不一致が、電子取引マッチング機能を実行する結果としてもたらされる場合がある。残持ち高は、金融商品の金額不一致を含み得る。残持ち高は、数量よりも多くの情報を伝達可能であることが理解されるべきである。例えば、持ち高は、強気及び弱気(サイド)であってもよい。例示実施形態によると、残持ち高は、価格及び数量の双方を伝達する。 Electronic trading system 100 may further include an order book (not shown) accessible by core compute node 140-1. Core compute node 140-1 may be further configured to match trade orders for financial instruments (not shown) based on electronic trade matching functions performed. For example, core compute node 140-1 may be further configured to match trade orders for financial instruments using electronic trade matching functionality. Core compute node 140-1 may further be configured to maintain a balance of financial instruments (not shown) in the order book. Amount discrepancies in financial instruments may result from performing electronic transaction matching functions. The remaining balance may include amount discrepancies in financial instruments. It should be understood that balances can convey more information than quantities. For example, positions may be bullish and bearish (sides). According to an exemplary embodiment, the balance conveys both price and quantity.

ゲートウェイ120-1はさらに、少なくとも1つの参加者デバイス(不図示)にサービスを提供し、ゲートウェイ120-1における着信メッセージ103の受信に応じて、メッセージ106をシーケンサ150-1及びコアコンピュートノード140-1に送信するように構成され得る。着信メッセージ103は、少なくとも1つの参加者デバイスによって発送される。シーケンサ150-1はさらに、固有順序識別子を用いてメッセージをマーク付けすることによって、又は受信したメッセージの表示を作成し、固有順序識別子を用いて表示をマーク付けし、マーク付けされた表示を送信することによって、順序マーク付きメッセージを生成するように構成され得る。マーク付けされる表示は、順序マーク付きメッセージであり得る。 Gateway 120-1 further serves at least one participant device (not shown) and, in response to receipt of incoming message 103 at gateway 120-1, forwards message 106 to sequencer 150-1 and core compute node 140-. 1. Incoming messages 103 are dispatched by at least one participant device. Sequencer 150-1 further includes marking the message with the unique order identifier or creating an indication of the received message, marking the indication with the unique order identifier, and transmitting the marked indication. may be configured to generate order-marked messages by. The marked indication may be an ordinal marked message.

例示実施形態によると、ゲートウェイ120-1は、以下にさらに開示する図1C、1D、3及び4の複数のゲートウェイなどの複数のゲートウェイのうちの所与のゲートウェイであり得る。また、コアコンピュートノード140-1は、以下にさらに開示する図1C、1D、3及び4の複数のコアコンピュートノードなどの複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。 According to an exemplary embodiment, gateway 120-1 may be a given gateway of a plurality of gateways, such as the plurality of gateways of FIGS. 1C, ID, 3, and 4, as further disclosed below. Also, core compute node 140-1 may be a given core compute node of a plurality of core compute nodes, such as the plurality of core compute nodes of FIGS. 1C, ID, 3, and 4, as further disclosed below.

図1Cは、ポイントツーポイントメッシュシステム122の例示実施形態のブロック図である。ポイントツーポイントメッシュシステム122は、複数のゲートウェイ120、複数のコアコンピュートノード140、及びシーケンサ150-1を含む。複数のゲートウェイ120の各ゲートウェイ120-1、120-2・・・120-gは、複数のコアコンピュートノード140の各コアコンピュートノード140-1、140-2・・・140-cにそれぞれの第1の直接接続、すなわち、第1の直接接続180-aを介して結合される。シーケンサ150-1は、複数のゲートウェイの各ゲートウェイにそれぞれの第2の直接接続、すなわち、第2の直接接続180-bを介して結合され、複数のコアコンピュートノードの各コアコンピュートノードにそれぞれの第3の直接接続、すなわち、第3の直接接続180-cを介して結合される。複数のゲートウェイ、複数のコアコンピュートノード、シーケンサ150-1、及びそれぞれの直接接続は、ポイントツーポイントメッシュシステム122の少なくとも一部分を形成する。 FIG. 1C is a block diagram of an exemplary embodiment of point-to-point mesh system 122. Point-to-point mesh system 122 includes multiple gateways 120, multiple core compute nodes 140, and sequencer 150-1. Each gateway 120-1, 120-2...120-g of the plurality of gateways 120 provides a respective 1 direct connection, ie, a first direct connection 180-a. The sequencer 150-1 is coupled to each gateway of the plurality of gateways via a respective second direct connection, ie, the second direct connection 180-b, and is coupled to each of the plurality of core compute nodes via a respective second direct connection 180-b. It is coupled via a third direct connection, ie third direct connection 180-c. The plurality of gateways, the plurality of core compute nodes, the sequencer 150-1, and their respective direct connections form at least a portion of the point-to-point mesh system 122.

ポイントツーポイントメッシュシステム122内では、複数のゲートウェイ120の各ゲートウェイは、そこから送信されるそれぞれのコンピュートノード宛てメッセージを複数のコアコンピュートノード140のうちの全てのコンピュートノード及びシーケンサ150-1に送信するように構成される。ポイントツーポイントメッシュシステム122内では、複数のコアコンピュートノード140の各コアコンピュートノードは、そこから送信されるそれぞれのゲートウェイ宛てメッセージを複数のゲートウェイ120のうちの全てのゲートウェイ及びシーケンサ150-1に送信するように構成される。ポイントツーポイントメッシュシステム122内では、シーケンサ150-1はさらに、それぞれのコンピュートノード宛てメッセージ又はそれぞれのゲートウェイ宛てメッセージの受信に応じて、それぞれの順序マーク付きメッセージを複数のゲートウェイ120及び複数のコアコンピュートノード140に送信するように構成される。 Within the point-to-point mesh system 122, each gateway of the plurality of gateways 120 sends messages destined for the respective compute nodes sent therefrom to all of the compute nodes of the plurality of core compute nodes 140 and the sequencer 150-1. configured to do so. Within the point-to-point mesh system 122, each core compute node of the plurality of core compute nodes 140 sends messages destined for the respective gateways sent therefrom to all gateways of the plurality of gateways 120 and to the sequencer 150-1. configured to do so. Within the point-to-point mesh system 122, the sequencer 150-1 further transmits each order-marked message to the plurality of gateways 120 and the plurality of core compute nodes in response to receiving a message destined for the respective compute node or a message destined for the respective gateway. and configured to transmit to node 140.

複数のゲートウェイ120のうちの所与のゲートウェイによって送信されたそれぞれのコンピュートノード宛てメッセージは、複数のコアコンピュートノード140によって受信される同じメッセージである。複数のコアコンピュートノード140のうちの少なくとも2つのコンピュートノード140は、同じメッセージの受信に応じて応答メッセージを生成するように構成され得る。応答メッセージは、複数のコアコンピュートノードの中から所与のコアコンピュートノードにおいて受信され得る。所与のゲートウェイはさらに、同じメッセージの受信に応じて生成された応答メッセージのうちの所与の応答メッセージに基づいて行動をとるように構成され得る。所与の応答メッセージは、同じメッセージの受信に応じて生成された他の応答メッセージに相対して最初に所与のゲートウェイに到着し得る。所与のゲートウェイはさらに、所与の応答メッセージの後に到着する他の応答メッセージを無視するように構成され得る。そのような応答メッセージを、機能的に同等なメッセージということもある。機能的に同等なメッセージは、その機能的に同等なメッセージの受信者に同じ機能(例えば、単数又は複数のアクティビティ)を実行させる同じメッセージを表す。機能的に同等なメッセージは同じメッセージを表し、一部の実施形態では実際に同一であり得るが、他の実施形態では、機能的に同等なメッセージは、場合によっては、非限定的な例として異なるタイムスタンプなどの異なるメタデータ、異なるソース識別子などを含み得るため、必ずしも同一でなくてもよい。明瞭性の観点として、用語「機能的に同等なメッセージ」とは、その順序マーク付きメッセージの対応のものに関連する非順序マーク付きメッセージのことをいうものではない。そうではなく、一部の実施形態では同じ順序マーク付きメッセージを表す複数の順序マーク付きメッセージも存在し得るが、機能的に同等なメッセージとは、一般的に、同じ非順序マーク付きメッセージ表す複数の非順序マーク付きメッセージのことをいい、これにより、我々は機能的に同等な非順序マーク付きメッセージ又は機能的に同等な順序マーク付きメッセージのことをいう場合がある。以下の図1Eに関する記載は、2以上のそのような応答メッセージが機能的に同等でありかつ同じメッセージを表すことを受信者ノードがどのようにして判定し得るのかについての少なくとも1つの例を説明する。 Each compute node-directed message sent by a given gateway of the plurality of gateways 120 is the same message received by the plurality of core compute nodes 140. At least two compute nodes 140 of the plurality of core compute nodes 140 may be configured to generate a response message in response to receiving the same message. The response message may be received at a given core compute node from among the multiple core compute nodes. A given gateway may be further configured to take action based on a given response message of the response messages generated in response to receipt of the same message. A given response message may arrive at a given gateway first relative to other response messages generated in response to receipt of the same message. A given gateway may further be configured to ignore other response messages that arrive after a given response message. Such response messages may also be referred to as functionally equivalent messages. Functionally equivalent messages represent the same message that causes a recipient of the functionally equivalent message to perform the same function (eg, activity or activities). Functionally equivalent messages represent the same message, and in some embodiments may actually be identical; in other embodiments, functionally equivalent messages may, as a non-limiting example, They do not necessarily have to be the same, as they may contain different metadata such as different timestamps, different source identifiers, etc. In the interest of clarity, the term "functionally equivalent message" does not refer to an out-of-order marked message that is related to its ordinal-marked message counterpart. Rather, functionally equivalent messages generally refer to multiple ordered marked messages representing the same out-of-order marked message, although in some embodiments there may also be multiple ordered marked messages representing the same ordered marked message. by which we may refer to functionally equivalent out-of-order marked messages or functionally equivalent in-order marked messages. The discussion below with respect to FIG. 1E describes at least one example of how a recipient node may determine that two or more such response messages are functionally equivalent and represent the same message. do.

複数の機能的に同等なメッセージ(不図示)は、所与のゲートウェイにおいて、複数のコアコンピュートノード140、複数のシーケンサ150又はこれらの組合せの中から受信され得る。所与のゲートウェイはさらに、複数の機能的に同等なメッセージのうちの所与の機能的に同等なメッセージに基づいて行動をとるように構成されてもよく、所与の機能的に同等なメッセージは所与のゲートウェイに最初に到着したものである。所与のゲートウェイはさらに、所与の機能的に同等なメッセージの後に到着する複数の機能的に同等なメッセージのうちの他の機能的に同等なメッセージを無視するように構成され得る。そのようなメッセージは、「機能的に」同等と理解され得る。なぜなら、複数のコアコンピュートノードにおいて受信された同じメッセージに対して、複数のコアコンピュートノードの各々が独立して応答メッセージを生成するので、それぞれの応答の各々は厳密に同一ではなくても同じ結果を機能的にもたらすからである。例えば、そのような応答メッセージは、そこに含まれる異なる発信元コア識別子を少なくとも有して、応答を送信している特定のコアコンピュートノードを一意的に識別し得る。 Multiple functionally equivalent messages (not shown) may be received at a given gateway from among multiple core compute nodes 140, multiple sequencers 150, or a combination thereof. The given gateway may be further configured to take action based on the given functionally equivalent message of the plurality of functionally equivalent messages, and the given functionally equivalent message is the first to arrive at a given gateway. A given gateway may be further configured to ignore other functionally equivalent messages of the plurality of functionally equivalent messages that arrive after the given functionally equivalent message. Such messages may be understood as "functionally" equivalent. This is because, for the same message received at multiple core compute nodes, each of the multiple core compute nodes independently generates a response message, so each response may have the same result, even if not exactly the same. This is because it provides functionality. For example, such a response message may at least have a different originating core identifier included therein to uniquely identify the particular core compute node sending the response.

例示実施形態によると、この少なくとも2つの「機能的に同等なメッセージ」は、ゲートウェイ/シーケンサからコアコンピュートノード140-1などの所与のコアコンピュートノードに到着し得る。所与のコアコンピュートノードは、そのような機能的に同等なメッセージのうちの最初に到着したメッセージのみを処理するように構成され得る。このように、複数の機能的に同等なメッセージは、所与のコンピュートノードにおいて、複数のゲートウェイ、複数のシーケンサ又はこれらの組合せの中から受信され得る。所与のコンピュートノードはさらに、複数の機能的に同等なメッセージのうちの所与の機能的に同等なメッセージに基づいて行動をとるように構成されてもよく、所与の機能的に同等なメッセージは所与のコンピュートノードに最初に到着したものである。所与のコンピュートノードはさらに、所与の機能的に同等なメッセージの後に到着する複数の機能的に同等なメッセージのうちの他の機能的に同等なメッセージを無視するように構成され得る。 According to an example embodiment, the at least two "functionally equivalent messages" may arrive from the gateway/sequencer to a given core compute node, such as core compute node 140-1. A given core compute node may be configured to process only the first of such functionally equivalent messages to arrive. In this way, multiple functionally equivalent messages may be received from multiple gateways, multiple sequencers, or a combination thereof at a given compute node. A given compute node may be further configured to take an action based on a given functionally equivalent message of a plurality of functionally equivalent messages, The message is the first one to arrive at a given compute node. A given compute node may be further configured to ignore other functionally equivalent messages of the plurality of functionally equivalent messages that arrive after the given functionally equivalent message.

このように、同じメッセージを表す複数のコンピュートノード宛てメッセージは、コンピュートノード140-1などの所与のコンピュートノードにおいて複数のゲートウェイ120の中から受信され得る。これは、電子取引システム100が高可用性(HA)に対して構成される場合に当てはまる場合がある。例えば、参加者デバイスからの冗長フローが複数のゲートウェイの間で受信されてもよく、このように、同じメッセージを表す複数のコンピュートノード宛てメッセージが、そのゲートウェイによってコンピュートノード140に送信され得る。例示実施形態によると、所与のコアコンピュートノードは複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて行動をとるように構成されてもよく、所与のコンピュートノード宛てメッセージは同じメッセージを表す複数のコンピュートノードメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に所与のコンピュートノードに到着したものであってもよい。所与のコアコンピュートノードはさらに、所与のコンピュートノード宛てメッセージの後に到着する他のコンピュートノード宛てメッセージを無視するように構成され得る。そのような同じメッセージを表す複数のコンピュートノード宛てメッセージを、機能的に同等なメッセージということもある。以下の図1Eに関する記載は、2以上のそのようなコンピュートノード宛てメッセージが機能的に同等でありかつ同じメッセージを表すことを受信者ノードがどのようにして判定し得るのかについての少なくとも1つの例を説明する。 In this manner, messages destined for multiple compute nodes representing the same message may be received from among multiple gateways 120 at a given compute node, such as compute node 140-1. This may be the case if electronic trading system 100 is configured for high availability (HA). For example, redundant flows from participant devices may be received between multiple gateways, and thus messages destined for multiple compute nodes representing the same message may be sent by that gateway to compute node 140. According to example embodiments, a given core compute node may be configured to take action based on a given compute node-directed message of a plurality of compute node-directed messages; may be the first of multiple compute node messages representing the same message to arrive at a given compute node relative to messages addressed to other compute nodes. A given core compute node may be further configured to ignore messages destined for other compute nodes that arrive after messages destined for the given compute node. Messages addressed to multiple compute nodes that represent the same message may be called functionally equivalent messages. The discussion below with respect to FIG. 1E provides at least one example of how a recipient node may determine that messages addressed to two or more such compute nodes are functionally equivalent and represent the same message. Explain.

電子取引システム100は、複数のシーケンサのうちの少なくとも1つのシーケンサが、以下に開示する図1Dのディザスタリカバリサイト155など、スタンバイ電子取引システムを含むディザスタリカバリサイトに通信可能に結合され得るアクティブな電子取引システムであり得る。 Electronic trading system 100 includes an active electronic trading system in which at least one sequencer of the plurality of sequencers may be communicatively coupled to a disaster recovery site including a standby electronic trading system, such as disaster recovery site 155 of FIG. 1D, disclosed below. It can be a trading system.

図1Dは、電子取引システムの他の例示実施形態のブロック図である。図1Dは、多数のゲートウェイ120-1、120-2、・・・、120-g(まとめてゲートウェイ120という)、一組のコアコンピュートノード140-1、140-2、・・・、140-c(まとめてコアコンピュートノード140又はコンピュートノード140)及び1以上のシーケンサ150-1、150-2、・・・、150-s(まとめてシーケンサ150)を含む例示の電子取引システム100を示す。したがって、一部の実施形態では、ゲートウェイ120、コアコンピュートノード140及びシーケンサ150は、電子取引システム100におけるノードとみなされる。より詳細に後述するように、一実施形態では、ゲートウェイ120、コンピュートノード140及びシーケンサ150は、好ましくは低遅延の専用接続180を介して、相互に直接接続される。 FIG. ID is a block diagram of another example embodiment of an electronic trading system. FIG. 1D shows a number of gateways 120-1, 120-2, ..., 120-g (collectively referred to as gateways 120), a set of core compute nodes 140-1, 140-2, ..., 140- 150-s (collectively core compute node 140 or compute node 140) and one or more sequencers 150-1, 150-2, ..., 150-s (collectively sequencer 150). Accordingly, in some embodiments, gateway 120, core compute node 140, and sequencer 150 are considered nodes in electronic trading system 100. As described in more detail below, in one embodiment, gateway 120, compute node 140, and sequencer 150 are directly connected to each other, preferably via a dedicated low-latency connection 180.

電子取引システム100の記載に関連する用語「ピア(peer)」とは、電子取引システム100において同じ機能を一般にサービスを提供する他のデバイス(例えば、「ゲートウェイ」対「コアコンピュートノード」対「シーケンサ」)をいう。例えば、ゲートウェイ120-2、・・・、120-gはゲートウェイ120-1のピアであり、コアコンピュートノード140-2、・・・、140-cはコアコンピュートノード140-1のピアであり、シーケンサ150-2、・・・、150-sはシーケンサ150-1のピアである。 The term "peer" in the context of the description of electronic trading system 100 refers to other devices that generally serve the same functionality in electronic trading system 100 (e.g., "gateway" vs. "core compute node" vs. "sequencer"). ”). For example, gateways 120-2, ..., 120-g are peers of gateway 120-1, core compute nodes 140-2, ..., 140-c are peers of core compute node 140-1, Sequencers 150-2, . . . , 150-s are peers of sequencer 150-1.

システム100の記載に関連する用語「アクティブ」及び「スタンバイ」とは、システム/構成要素の高可用性(HA)ロール/状態/モードをいう場合がある。一般に、スタンバイシステム/構成要素は、電源が投入されるとアクティブなシステム/構成要素によって実行される機能を引継ぎ可能となる冗長(バックアップ)システム/構成要素である。そのようなスイッチオーバー/フェイルオーバー、すなわち、スタンバイロール/状態/モードからアクティブロール/状態/モードへの切換えは、非限定的な例として、現在アクティブなシステム/構成要素の故障に応じて自動的に実行され得る。 The terms "active" and "standby" in connection with the description of system 100 may refer to the high availability (HA) role/state/mode of the system/component. Generally, a standby system/component is a redundant (backup) system/component that is capable of taking over the functions performed by the active system/component when powered on. Such switchover/failover, i.e. switching from a standby role/state/mode to an active role/state/mode, may occur automatically in response to, by way of non-limiting example, failure of the currently active system/component. can be executed.

電子取引システム100は、1以上の参加者コンピューティングデバイス130-1、130-2、・・・、130-p(まとめて参加者デバイス130)からの取引注文を処理し、関連情報をそれに提供する。参加者デバイス130は、電子取引システム100と相互作用するものであり、1以上のパーソナルコンピュータ、タブレット、スマートフォン、サーバ又は取引注文情報を表示及び受信するように構成された他のデータ処理デバイスであり得る。参加者デバイス130は、グラフィカルユーザインターフェース(GUI)を介して人間によって操作されてもよいし、物理又は仮想データ処理プラットフォーム上で稼働する高速自動化取引方法を介して操作されてもよい。各参加者デバイス130は、ゲートウェイ120によって確立された接続を介して電子取引システム100とメッセージを交換し得る(すなわち、それに対してメッセージを送受信し得る)。図1Dは各参加者デバイス130がゲートウェイ120への単一の接続を介して電子取引システム100に接続されるものとして示すが、参加者デバイス130は1以上のゲートウェイデバイス120への複数の接続を介して電子取引システム100に接続されてもよいことが理解されるべきである。 Electronic trading system 100 processes trading orders from one or more participant computing devices 130-1, 130-2, ..., 130-p (collectively participant devices 130) and provides related information thereto. do. Participant device 130 interacts with electronic trading system 100 and may be one or more personal computers, tablets, smartphones, servers, or other data processing devices configured to display and receive trading order information. obtain. Participant device 130 may be operated by a human via a graphical user interface (GUI) or via a high-speed automated trading method running on a physical or virtual data processing platform. Each participant device 130 may exchange messages with (ie, send and receive messages to) electronic trading system 100 via the connection established by gateway 120. Although FIG. 1D depicts each participant device 130 as connected to electronic trading system 100 via a single connection to gateway 120, participant device 130 may have multiple connections to one or more gateway devices 120. It should be understood that the electronic trading system 100 may be connected to the electronic trading system 100 via the electronic trading system 100.

なお、各ゲートウェイ120-1が単一の参加者デバイス130にサービスを提供し得るが、通常は複数の参加者デバイス130にサービスを提供する。 Note that each gateway 120-1 may serve a single participant device 130, but typically serves multiple participant devices 130.

コンピュートノード140-1、140-2、・・・、140-c(ここではマッチングエンジン140又はコンピュートエンジン140ともいう)は、上述のマッチング機能を提供し、さらに1以上の参加者デバイス130に配信される発信メッセージを生成してもよい。各コンピュートノード140は、高性能データプロセッサであり、通常は、1以上の注文控え帳145-1、145-2、・・・、145-bを検索及び保持する1以上のデータ構造体を保持する。注文控え帳145-1は、例えば、コアコンピュートノード140-1が責任を担う各商品に対して保持され得る。コンピュートノード140の1以上及び/又はゲートウェイ120の1以上が、マーケットデータフィード147を提供してもよい。マーケットデータフィード147は、参加者デバイス130又は他の任意の適宜のコンピューティングデバイスであり得る参加者にブロードキャスト(例えば、マルチキャスト)されてもよい。 Compute nodes 140-1, 140-2, ..., 140-c (also referred to herein as matching engine 140 or compute engine 140) provide the matching functionality described above and further distribute to one or more participant devices 130. may generate an outgoing message to be sent. Each compute node 140 is a high-performance data processor and typically maintains one or more data structures that retrieve and maintain one or more order books 145-1, 145-2, ..., 145-b. do. Order book 145-1 may be maintained, for example, for each product for which core compute node 140-1 is responsible. One or more of the compute nodes 140 and/or one or more of the gateways 120 may provide the market data feed 147. Market data feed 147 may be broadcast (eg, multicast) to participants, which may be participant devices 130 or any other suitable computing devices.

コアコンピュートノード140によって生成された一部の発信メッセージは、同期したものであり、すなわち、対応する着信「新規注文」メッセージに応じた発信「承認メッセージ」又は「実行メッセージ」など、1以上の参加者デバイス130から受信された1以上の着信メッセージに応じて1つのコアコンピュートノード140によって直接生成されてもよい。ただし、一部の実施形態では、少なくとも一部の発信メッセージは非同期のものであり、取引システム100によって開始されてもよく、例えば、特定の「未承諾」取消メッセージ及び「取引中止」又は「取引破綻」メッセージであり得る。 Some outgoing messages generated by core compute nodes 140 are synchronous, i.e., one or more participating messages, such as an outgoing "approval message" or "execution message" in response to a corresponding incoming "new order" message. may be generated directly by one core compute node 140 in response to one or more incoming messages received from user device 130. However, in some embodiments, at least some outgoing messages may be asynchronous and may be initiated by trading system 100, such as certain "unsolicited" cancellation messages and "abort" or "transaction" messages. It could be a "bankrupt" message.

電子取引システム100などの分散コンピューティング環境は、複数のコンピュートノード140上で並列動作する複数のマッチングエンジンを用いて構成可能である。 A distributed computing environment, such as electronic trading system 100, can be configured with multiple matching engines running in parallel on multiple compute nodes 140.

シーケンサ150は、任意の順位依存動作の適宜の順序が維持されることを確実にする。着信メッセージに対する動作が順位を外れて実行されないことを確実にするために、1以上のゲートウェイ120において受信された着信メッセージ、例えば、参加者デバイス130の1つからの新規取引注文メッセージは、通常は、その後に少なくとも1つのシーケンサ150(例えば、単一の現在アクティブなシーケンサ、及び場合によっては1以上のスタンバイシーケンサ)を通過することになり、着信メッセージは(複数のシーケンサが存在する場合には単一の現在アクティブなシーケンサによって)順序識別子でマーク付けされる。その識別子は、メッセージ間で相対順位付けを決定するとともに電子取引システム100の全体を通じてメッセージを一意的に識別するために、分散システム100(例えば、電子取引システム100)の全体を通じて後続の処理の過程で使用される固有の単調増加する値であり得る。一部の実施形態では、順序識別子は、メッセージがシーケンサに到着した順位(すなわち、順序)の表示であり得る。例えば、順序識別子は、到着メッセージ毎にシーケンサによって固定間隔に従って単調的に増分又は減分される値であってもよく、例えば、順序識別子は、到着メッセージ毎に1ずつ増分されてもよい。ただし、順序識別子は、固有ではあるが、単調増加又は減少する値に限られないことが理解されるべきである。一部の実施形態では、当初のマーク付けなしメッセージ及び順序マーク付きメッセージは、メッセージのマーク付きバージョンに含まれる順序識別子の値を除いて、基本的には同一となり得る。マーク付き着信メッセージ、すなわち、順序マーク付きメッセージは、順序付けられると、通常はその後に、潜在的に順位依存の処理をメッセージに対して実行するようにシーケンサ150によって他の下流側コンピュートノード140に転送される。したがって、電子取引システム100の全体を通じてメッセージを一意的に識別することに加えて、シーケンサ150によって割り当てられる順序識別子も、電子取引システム100における他のマーク付きメッセージの間で各マーク付きメッセージの相対順位付けを決定し得る。 Sequencer 150 ensures that the proper order of any rank-dependent operations is maintained. To ensure that actions on incoming messages are not performed out of order, incoming messages received at one or more gateways 120, e.g., a new trade order message from one of participant devices 130, are typically , then pass through at least one sequencer 150 (e.g., a single currently active sequencer, and possibly one or more standby sequencers), and the incoming message will pass through at least one sequencer (e.g., a single currently active sequencer, and possibly one or more standby sequencers) (by one currently active sequencer) with a sequence identifier. The identifier is used throughout the distributed system 100 (e.g., electronic trading system 100) during subsequent processing to determine relative rankings among the messages and to uniquely identify the messages throughout the electronic trading system 100. can be a unique monotonically increasing value used in In some embodiments, the order identifier may be an indication of the order (ie, order) in which the messages arrived at the sequencer. For example, the order identifier may be a value that is monotonically incremented or decremented by the sequencer according to a fixed interval for each arriving message; for example, the order identifier may be incremented by one for each arriving message. However, it should be understood that ordinal identifiers, while unique, are not limited to monotonically increasing or decreasing values. In some embodiments, the original unmarked message and the ordinal marked message may be essentially identical except for the value of the ordinal identifier included in the marked version of the message. Once an incoming marked message, i.e., an order-marked message, is ordered, it is typically then forwarded by the sequencer 150 to other downstream compute nodes 140 to perform potentially order-dependent processing on the message. be done. Therefore, in addition to uniquely identifying messages throughout electronic trading system 100, the ordinal identifier assigned by sequencer 150 also determines the relative ranking of each marked message among other marked messages in electronic trading system 100. can determine the attachment.

このように、順序識別子が採用され得る他の目的とは対照的に、ここに開示される固有順序識別子は、電子取引メッセージ処理のための確定的な順位(すなわち、順序)を確実にするために使用され得る。固有順序識別子は、電子取引システム内の他の取引メッセージに対する所与の電子取引メッセージの処理について指示的な固有の確定的な順位付け(すなわち、順序)を表す。例示実施形態によると、順序識別子は、非限定的な例として図1Eに関して以下にさらに開示するように、メッセージの順序IDフィールド110-14に追加され得る。 Thus, in contrast to other purposes for which ordinal identifiers may be employed, the unique ordinal identifiers disclosed herein are intended to ensure a definitive ranking (i.e., order) for electronic transaction message processing. can be used for. The unique ordering identifier represents a unique, deterministic ranking (i.e., order) that dictates the processing of a given electronic trading message relative to other trading messages within the electronic trading system. According to an example embodiment, the order identifier may be added to the order ID field 110-14 of the message, as further disclosed below with respect to FIG. 1E as a non-limiting example.

一部の実施形態では、メッセージは、他の方向に、すなわち、コアコンピュートノード140から参加者デバイス130の1以上に、ゲートウェイ120の1つ以上を通過して流れてもよい。そのような1つのコアコンピュートノード140によって生成された発信メッセージも、順位依存(すなわち、順序-順位依存)であってもよく、したがって、さらに通常は、順序識別子を用いてマーク付けされるシーケンサ150を最初に通過し得る。そして、シーケンサ150は、マーク付き応答メッセージを、適切に確定的な順位で参加者デバイス130に伝達するためにゲートウェイ120に転送してもよい。 In some embodiments, messages may flow in the other direction, ie, from the core compute node 140 to one or more of the participant devices 130, through one or more of the gateways 120. Outgoing messages generated by such one core compute node 140 may also be rank-dependent (i.e., order-rank-dependent) and are therefore also typically marked with a sequencer 150 with an order identifier. can be passed first. Sequencer 150 may then forward the marked response messages to gateway 120 for communication to participant devices 130 in an appropriately deterministic order.

固有順序番号を生成してそれによってメッセージ又はその表示をマーク付けするための、すなわち、順序マーク付きメッセージを生成するためのシーケンサ150の使用は、動作の正しい順位付けが分散システム、すなわち、電子取引システム100の全体を通じて維持されることを確実にし、それにかかわらず、コンピュートノード又はコンピュートノード140の組はメッセージを処理する。このアプローチは「状態確定性」を与え、例えば、システムの状態全体が(場合によっては、ディザスタリカバリサイトなど、他のいずれかの場所で)確定的かつ再現可能なものとなり、フォールトトレランス、高可用性及び災害復旧可能性を与える。 The use of sequencer 150 to generate unique sequence numbers and thereby mark messages or representations thereof, i.e., to generate sequence marked messages, ensures that the correct ranking of operations is possible in distributed systems, i.e., electronic transactions. The compute node or set of compute nodes 140 processes messages regardless of whether they are maintained throughout the system 100. This approach provides "state determinism", e.g. the entire state of the system is deterministic and reproducible (possibly somewhere else, such as a disaster recovery site), provides fault tolerance, high availability and provide disaster recovery potential.

生成ノード(すなわち、例えば、新たなメッセージを生成することによって及び/又は参加者デバイス130から受信したメッセージを転送することによって、新たなメッセージを電子取引システム100に導入するノード)及びそのピアノードが、そのメッセージに割り当てられた順序番号を受信することも重要となり得る。それが生成したメッセージに対する順序番号を受信することは、メッセージをそれらの順序番号に従って順に処理するためだけでなく、ノードによって生成されたメッセージを、電子取引システム100の残りの部分全体を通じて使用されるメッセージ順序識別子に相関付けるためにも、生成ノード及びそのピアノードに対して有用となり得る。生成ノードによって電子取引システムに導入されるようなメッセージのマークなしバージョンと、シーケンサによって出力される同じメッセージの順序マーク付きバージョンとの間のそのような相関は、図1Eに関連してさらに後述するように、メッセージの両バージョンにおける識別情報を介して行われ得る。電子取引システム100内で生成される後続のメッセージは、それ自体の順序番号も割り当てられているが、それでも関連する先行メッセージの1以上の順序番号を基準とし得る。したがって、ノードは、ノード自体が以前に生成したメッセージを(順序番号によって)迅速に参照する必要がある場合がある。これは、例えば、ノードが生成したメッセージの順序番号が後続のメッセージにおいて基準とされているためである。 A generating node (i.e., a node that introduces new messages into electronic trading system 100, e.g., by generating new messages and/or forwarding messages received from participant device 130) and its peer nodes: It may also be important to receive the sequence number assigned to the message. Receiving sequence numbers for the messages it generates is used not only to process the messages in order according to their sequence numbers, but also to process the messages generated by the node throughout the rest of the electronic trading system 100. It may also be useful for producing nodes and their peer nodes to correlate message order identifiers. Such a correlation between an unmarked version of a message as introduced into an electronic trading system by a generating node and an ordinal marked version of the same message output by a sequencer is discussed further below in connection with FIG. 1E. This can be done through identification information in both versions of the message. Subsequent messages generated within electronic trading system 100 may also be assigned their own sequence numbers, but may still be referenced to one or more sequence numbers of associated preceding messages. Therefore, a node may need to quickly reference (by sequence number) messages that it has previously generated. This is because, for example, the sequence number of a message generated by a node is used as a reference in subsequent messages.

一部の実施形態では、生成ノードは、最初にメッセージをシーケンサ150に送信し、生成ノードがそのメッセージを電子取引システム100における他のノードに転送する前にシーケンサからメッセージに対する順序番号を受信するように待機してもよい。 In some embodiments, the producing node first sends the message to the sequencer 150 and receives a sequence number for the message from the sequencer before the producing node forwards the message to other nodes in the electronic trading system 100. You may wait.

代替の例示実施形態では、電子取引システム100内で不要なレイテンシーの増加を加え得る少なくとも1つのホップを回避するために、順序付けなしメッセージを生成ノードから受信した後、シーケンサ150はメッセージの順序付きバージョン(すなわち、順序マーク付きメッセージ)を宛先ノードに送信するだけでなく、メッセージの順序付けバージョンを実質的に同時に送信ノード及びそのピアに返送してもよい。例えば、シーケンサ150は、ゲートウェイ120からコアコンピュートノード140に送信された着信メッセージに順序番号を割り当てた後に、メッセージの順序付けバージョンをコアコンピュートノード140に転送するだけでなく、当該メッセージの順序付けバージョンをゲートウェイ120-1及び他のゲートウェイ120に返送してもよい。したがって、コアコンピュートノード140において生成されたいずれかの後続メッセージが当該順序番号を基準とする場合、任意のゲートウェイ120は、ゲートウェイ120-1によって当初生成された関連するメッセージをその順序番号によって容易に識別することができる。 In an alternative exemplary embodiment, after receiving an unordered message from a production node, sequencer 150 generates an ordered version of the message to avoid at least one hop that may add unnecessary latency increases within electronic trading system 100. (i.e., an order-marked message) to a destination node, an ordered version of the message may be sent back to the sending node and its peers substantially simultaneously. For example, after assigning a sequence number to an incoming message sent from gateway 120 to core compute node 140, sequencer 150 not only forwards the ordered version of the message to core compute node 140, but also forwards the ordered version of the message to core compute node 140. 120-1 and other gateways 120. Therefore, if any subsequent message generated at core compute node 140 is based on that sequence number, then any gateway 120 can facilitate the associated message originally generated by gateway 120-1 by that sequence number. can be identified.

同様に、一部の更なる実施形態では、コアコンピュートノード140によって生成されてそこからゲートウェイ120に送信され、シーケンサ150によって順序付けされた発信メッセージの順序付けバージョンは、シーケンサ150によってゲートウェイ120に転送されるとともにコアコンピュートノード140に返送されてもよい。 Similarly, in some further embodiments, the ordered version of the outgoing message generated by the core compute node 140 and sent therefrom to the gateway 120 and ordered by the sequencer 150 is forwarded by the sequencer 150 to the gateway 120. It may also be sent back to the core compute node 140 along with the data.

一部の実施形態は、図4に関して以下にさらに開示するように、例えば、第1のシーケンサが故障した場合に他のシーケンサが利用可能となることを確実にするために、高可用性のための複数のシーケンサ150を含んでいてもよい。複数のシーケンサ150(例えば、現在アクティブなシーケンサ150-1及び1以上のスタンバイシーケンサ150-2、・・・、150-s)を有する実施形態について、現在アクティブなシーケンサ150-1は、シーケンサ150-1を通過した全てのメッセージのシステム状態ログ(不図示)及びメッセージの関連する順序番号を保持し得る。このシステム状態ログは、連続的又は周期的にスタンバイシーケンサに送信され、それらに必須システム状態を提供して必要に応じてそれらがアクティブなシーケンサを引き継ぐことを可能としてもよい。あるいは、システム状態ログは、複数のシーケンサ150にアクセス可能なデータストアに記憶されてもよい。 Some embodiments provide for high availability, e.g., to ensure that other sequencers are available if a first sequencer fails, as further disclosed below with respect to FIG. A plurality of sequencers 150 may be included. For embodiments having multiple sequencers 150 (eg, a currently active sequencer 150-1 and one or more standby sequencers 150-2, . . . , 150-s), the currently active sequencer 150-1 is the sequencer 150-s. A system state log (not shown) of all messages that pass through one and the messages' associated sequence numbers may be maintained. This system state log may be sent continuously or periodically to the standby sequencer to provide them with the essential system state and enable them to take over for the active sequencer if necessary. Alternatively, the system state log may be stored in a data store that is accessible to multiple sequencers 150.

システム状態ログは、ディザスタリカバリサイト155におけるスタンバイ複製電子取引システム(詳細には図示せず)において1以上のシーケンサに連続的又は周期的に複製されてもよく、それにより、電子取引システム100のプライマリサイトが破局故障に陥った場合に、電子取引はディザスタリカバリサイト155において厳密に同じ状態で継続可能となる。 The system state log may be continuously or periodically replicated to one or more sequencers in a standby replicated electronic trading system (not shown in detail) at disaster recovery site 155, thereby providing a primary In the event of a catastrophic failure of the site, electronic transactions can continue in exactly the same condition at the disaster recovery site 155.

例示実施形態によると、複数のシーケンサのうちの現在アクティブなシーケンサが、システム状態ログをデータストア(不図示)に記憶し得る。データストアは、図1Dに関して以下にさらに開示するシーケンサ全域共有ネットワーク182-sなどの共有シーケンサネットワークを介して複数のシーケンサにアクセス可能となり得る。複数のシーケンサのうちの所与のシーケンサがその役割(状態)をスタンバイからアクティブに切り換える場合、当該シーケンサはシステム状態ログをデータストアから取得して状態をそれまでのアクティブなシーケンサの状態と同期させ得る。 According to an example embodiment, a currently active sequencer of the plurality of sequencers may store a system state log in a data store (not shown). A data store may be accessible to multiple sequencers via a shared sequencer network, such as sequencer-wide shared network 182-s, further disclosed below with respect to FIG. 1D. When a given sequencer among the sequencers switches its role (state) from standby to active, that sequencer retrieves the system state log from the data store to synchronize its state with that of the previous active sequencer. obtain.

一部の実施形態では、システム状態ログは、シーケンサの1以上によって及び/又は電子取引システム100における1以上の他のノードによって実施され得るドロップコピーサービス152に提供されてもよい。ドロップコピーサービス152は、例えば、参加者デバイス130を介して接続され得る規制当局及び/又はクライアントに配信され得る、電子取引システム100を通じた日次の取引アクティビティの記録を提供してもよい。代替の実施形態では、ドロップコピーサービス152は、ゲートウェイ120の1以上において実施されてもよい。またさらに、システム状態ログを参照することに加えて又はそれに代えて、ドロップコピーサービス152は、電子取引システム100の全体を通じて送信される着信及び発信メッセージの内容に基づいて取引アクティビティの記録を提供してもよい。例えば、一部の実施形態では、ドロップコピーサービス152を実施するゲートウェイ120は、電子取引システム100の全体を通じて交換される全てのメッセージをシーケンサ150から(並びに/又はコアコンピュートノード140及び他のゲートウェイ120から)受信し得る。ドロップコピーサービス152から日次の取引アクティビティの記録を受信するように構成された参加者デバイス130は、必ずしも取引注文を電子取引システム100のマッチング機能に送信したりそれを利用したりしなくてもよい。 In some embodiments, the system state log may be provided to a drop copy service 152 that may be implemented by one or more of the sequencers and/or by one or more other nodes in the electronic trading system 100. Drop copy service 152 may, for example, provide a record of daily trading activity through electronic trading system 100 that may be distributed to regulators and/or clients that may be connected via participant device 130. In alternative embodiments, drop copy service 152 may be implemented at one or more of gateways 120. Still further, in addition to or in lieu of referencing system status logs, drop copy service 152 provides a record of trading activity based on the content of incoming and outgoing messages sent throughout electronic trading system 100. You can. For example, in some embodiments, the gateway 120 that implements the drop copy service 152 transfers all messages exchanged throughout the electronic trading system 100 from the sequencer 150 (and/or to the core compute nodes 140 and other gateways 120). ) can be received. Participant devices 130 configured to receive records of daily trading activity from drop copy service 152 do not necessarily send trading orders to or utilize the matching functionality of electronic trading system 100. good.

参加者デバイス130とゲートウェイ120の間で交換されるメッセージは、金融取引に使用され得る任意の適宜のプロトコル(便宜上「金融取引プロトコル」という)に従うものとする。例えば、メッセージは、カスタムプロトコル、又はバイナリプロトコル(Nasdaq OUCH及びNYSE UTPなど)及びテキストベースのプロトコル(NYSE FIX CCGなど)の双方を含む確立された標準プロトコルに従って交換され得る。一部の実施形態では、電子取引システム100は、複数のプロトコルを同じゲートウェイ120において同時に含む複数の金融取引プロトコルに従って同時に交換メッセージをサポートし得る。例えば、参加者デバイス130-1、130-2及び130-3は、それぞれ、Nasdaq Ouch、NYSE UTP及びNYSE FIX CCGに従って、取引接続を同時に確立している場合もあれば、ゲートウェイ120-1とメッセージを交換している場合もある。 Messages exchanged between participant devices 130 and gateway 120 may follow any suitable protocol that may be used for financial transactions (referred to for convenience as a "financial transaction protocol"). For example, messages may be exchanged according to custom protocols or established standard protocols, including both binary protocols (such as Nasdaq OUCH and NYSE UTP) and text-based protocols (such as NYSE FIX CCG). In some embodiments, electronic trading system 100 may support exchanging messages simultaneously according to multiple financial transaction protocols, including multiple protocols simultaneously at the same gateway 120. For example, participant devices 130-1, 130-2, and 130-3 may simultaneously establish trading connections or send messages to gateway 120-1 in accordance with Nasdaq Ouch, NYSE UTP, and NYSE FIX CCG, respectively. Sometimes they are exchanged.

またさらに、一部の実施形態では、ゲートウェイ120は、参加者デバイス130から受信した金融取引プロトコルに従うメッセージを、電子取引システム100内のノード間でメッセージを交換するために使用される標準化(例えば、規格化)メッセージフォーマットに翻訳してもよい。標準化取引フォーマットは、既存のプロトコルであってもよいし、一般的には、参加者デバイス130とメッセージを交換するのに使用されるいずれの金融取引プロトコルとも異なるサイズ及びデータフォーマットのものであってもよい。例えば、標準化取引フォーマットは、参加者デバイス130からゲートウェイ120において受信された当初の着信メッセージの金融取引プロトコルと比較した場合、場合によっては1以上の追加のフィールド又はパラメータを含んでいてもよく、1以上のフィールド又はパラメータを省略してもよく、並びに/又は標準化フォーマットにおけるメッセージの各フィールド若しくはパラメータは参加者デバイス130からゲートウェイ120において受信される対応するメッセージとは異なるデータタイプ若しくはサイズのものであってもよい。同様に、逆方向では、ゲートウェイ120は、電子取引システム100によって標準化フォーマットにおいて生成された発信メッセージを、ゲートウェイ120と通信するのに参加者デバイス130によって使用される1以上の金融取引プロトコルのフォーマットのメッセージに翻訳し得る。 Still further, in some embodiments, gateway 120 converts messages received from participant devices 130 that conform to financial transaction protocols to standardization used to exchange messages between nodes within electronic trading system 100 (e.g., (standardized) message format. The standardized transaction format may be an existing protocol and is typically of a different size and data format than any financial transaction protocol used to exchange messages with participant devices 130. Good too. For example, the standardized transaction format may optionally include one or more additional fields or parameters when compared to the financial transaction protocol of the original incoming message received at gateway 120 from participant device 130; Any of the above fields or parameters may be omitted and/or each field or parameter of a message in a standardized format may be of a different data type or size than the corresponding message received at gateway 120 from participant device 130. It's okay. Similarly, in the reverse direction, gateway 120 sends outgoing messages generated by electronic trading system 100 in a standardized format to the format of one or more financial transaction protocols used by participant devices 130 to communicate with gateway 120. It can be translated into a message.

図1Eは、以上に開示した電子取引システム100においてノード間で交換される取引メッセージなどの取引メッセージについてのメッセージフォーマット110のフィールドの例示実施形態の表である。図1Eの例示実施形態では、メッセージフォーマット110は、それらが電子取引システム100内のノード間で交換される場合に、取引メッセージの内部的な(すなわち、電子取引システム100内での)表示のために使用されることが意図された標準化メッセージフォーマットである。この例示実施形態では、ゲートウェイ120は、参加者130と電子取引システム100との間でメッセージを交換し、当該メッセージを、参加者130によって使用される1以上の金融取引プロトコルによって指定されるフォーマットと、電子取引システム100におけるノード間で使用される標準化取引フォーマットとの間でメッセージを翻訳する。フィールド110-1~110-17は非限定的な例のためのものであること、メッセージフォーマット110はより多数の、より少数の又は異なるフィールドを含み得ること、及びそのようなフィールドの順は図1Eに示すものに限られないことが理解されるべきである。 FIG. 1E is a table of example embodiments of fields of a message format 110 for a trading message, such as a trading message exchanged between nodes in the electronic trading system 100 disclosed above. In the exemplary embodiment of FIG. 1E, message format 110 is configured for internal (i.e., within electronic trading system 100) display of trading messages as they are exchanged between nodes within electronic trading system 100. is a standardized message format intended for use in In this exemplary embodiment, gateway 120 exchanges messages between participant 130 and electronic trading system 100 and formats the messages as specified by one or more financial transaction protocols used by participant 130. , translate messages to and from standardized trading formats used between nodes in electronic trading system 100. It is noted that fields 110-1 through 110-17 are for non-limiting examples, that message format 110 may include more, fewer, or different fields, and that the order of such fields is as shown in the figure. It should be understood that the present invention is not limited to that shown in IE.

メッセージフォーマット110におけるフィールドは本例では単一のメッセージフォーマットで示されているが、それらは複数のメッセージフォーマットに分散され、又はレイヤードプロトコルにカプセル化されてもよい。例えば、他の実施形態では、メッセージフォーマット110におけるフィールドの一部の組は、メッセージフォーマット110の他のフィールドをメッセージペイロードにカプセル化する、レイヤードプロトコルにおけるヘッダ、トレイラー又は拡張フィールドの部分として含まれてもよい。一部の例示実施形態によると、メッセージフォーマット110は、限定することなく、IPデータグラム、UDPデータグラム、TCPパケットのそれぞれのペイロード部分を含む他のメッセージフォーマット、又は非限定的な例として、イーサネットデータフレームフォーマットなどのメッセージデータフレームフォーマット、若しくはInfiniBand、Universal Serial Bus(USB)、PCI Express(PCI-e)及びHigh-Definition Multimedia Interface(HDMI)を含む他のデータフレームフォーマットの、ペイロード(データ)部分にカプセル化されたデータの1以上のフィールドを規定し得る。 Although the fields in message format 110 are shown in a single message format in this example, they may be distributed across multiple message formats or encapsulated in layered protocols. For example, in other embodiments, some sets of fields in message format 110 are included as part of header, trailer, or extension fields in a layered protocol that encapsulates other fields of message format 110 into the message payload. Good too. According to some example embodiments, message format 110 may include other message formats, including, without limitation, the respective payload portions of IP datagrams, UDP datagrams, TCP packets, or by way of non-limiting example, A payload of a message data frame format, such as a data frame format, or other data frame formats, including InfiniBand, Universal Serial Bus (USB), PCI Express (PCI-e), and High-Definition Multimedia Interface (HDMI). (data) part may define one or more fields of data encapsulated in a field.

メッセージフォーマット110は、1以上の参加者デバイス130との通信のための金融取引プロトコルに従って送信又は受信されたメッセージに含まれ得る情報に対応するフィールド110-1・・・110-6を含む。非限定的な例として、メッセージタイプフィールド110-1は、取引メッセージタイプを示す。ある取引メッセージタイプ(メッセージタイプ「新規注文」、「置換え注文」又は「取消し注文」など)は参加者デバイス130から受信されるメッセージに対応し、他のメッセージタイプ(「新規注文承認」、「置換え注文承認」、「取消し注文承認」、「約定」、「実行報告」、「未承諾取消」、「取引破綻」又は種々の拒否メッセージ)は電子取引システム100によって生成されて参加者デバイス130に送信される取引メッセージに含まれるメッセージに対応する。 Message format 110 includes fields 110-1...110-6 that correspond to information that may be included in a message sent or received in accordance with a financial transaction protocol for communication with one or more participant devices 130. As a non-limiting example, message type field 110-1 indicates a transaction message type. Certain transaction message types (such as message types "New Order", "Replacement Order", or "Cancellation Order") correspond to messages received from participant device 130, while other message types (such as "New Order Approval", "Replacement Order") correspond to messages received from participant devices 130; ``Order Approval'', ``Cancellation Order Approval'', ``Execution'', ``Execution Report'', ``Unsolicited Cancellation'', ``Trade Failure'', or various rejection messages) are generated by the electronic trading system 100 and sent to the participant device 130. corresponds to the message contained in the transaction message sent.

メッセージフォーマット110は、株式表示記号又はストックティッカーなど、取引される有価証券についての識別子を含む銘柄記号フィールド110-2も含む。例えば、「IBM」は「International Business Machines Corporation」に対する株式表示記号である。メッセージフォーマット110におけるサイドフィールド110-3は、取引メッセージが「買い」、「売り」又は「空売り」であるかなど、取引メッセージの「サイド」を示すのに使用され得る。同様に、価格フィールド110-4は、証券を買付又は売却する希望価格を示すのに使用され得る。数量フィールド110-5は、証券の希望数量(例えば、株数)を示すのに使用され得る。メッセージフォーマット110は、注文トークンフィールド110-6を含んでいてもよく、これは参加者デバイス130によって最初に提供された「注文トークン」又は「クライアント注文ID」に追加されて、ゲートウェイ120を介して参加者デバイス130と電子取引システムの間に確立された特定の取引セッション(すなわち、「接続」又は「フロー」)の背景において新規注文を一意的に識別し得る。 Message format 110 also includes a stock symbol field 110-2 that contains an identifier for the traded security, such as a stock symbol or stock ticker. For example, "IBM" is the stock symbol for "International Business Machines Corporation." Side field 110-3 in message format 110 may be used to indicate the "side" of the trading message, such as whether the trading message is a "buy," "sell," or "short sell." Similarly, price field 110-4 may be used to indicate a desired price to buy or sell a security. Quantity field 110-5 may be used to indicate the desired quantity (eg, number of shares) of the security. Message format 110 may include an order token field 110-6, which is appended to an “order token” or “client order ID” originally provided by participant device 130 and sent via gateway 120. A new order may be uniquely identified in the context of a particular trading session (ie, "connection" or "flow") established between participant device 130 and the electronic trading system.

フィールド110-1・・・110-6はほとんどの金融取引プロトコルに従うほとんどのメッセージタイプについて通常含まれる代表的なフィールドであるが、メッセージフォーマット110は、特に特定のメッセージタイプ又は特定の金融取引プロトコルをサポートするために追加の又は代替のフィールドを含み得るものでもあることが理解されるべきである。例えば、多くの金融取引プロトコルによると、「置換え注文」及び「取消し注文」メッセージタイプは、参加者130が追加の注文トークンを供給することで、置き換えられ又は取り消された注文を表してそれを当初の注文から区別することを要する。同様に、「置換え注文」及び「取消し注文」は、通常は置換え/取消数量フィールドも含み、「置換え注文」は置換え価格フィールドを含み得る。これらの追加の置換え/取消し注文トークンフィールド、置換え価格フィールド及び置換え/取消数量フィールドは、電子取引システム100によって送信される対応の承認メッセージに含まれてもよい。 Although fields 110-1...110-6 are typical fields typically included for most message types following most financial transaction protocols, message format 110 may be particularly specific to a particular message type or a particular financial transaction protocol. It should be understood that additional or alternative fields may also be included to support. For example, according to many financial trading protocols, "replacement order" and "cancellation order" message types are used by participant 130 to represent a replaced or canceled order by supplying additional order tokens to It is necessary to distinguish it from the order of Similarly, "replacement order" and "cancellation order" typically also include a replacement/cancellation quantity field, and a "replacement order" may include a replacement price field. These additional replacement/cancellation order token fields, replacement price fields, and replacement/cancellation quantity fields may be included in the corresponding approval message sent by electronic trading system 100.

さらに、メッセージフォーマット110は、電子取引システム100内で内部的に使用され得るが、必ずしも参加者デバイス130と交換されるメッセージにおけるフィールドに対応しないフィールド110-11・・・110-17を含む。例えば、ノード識別子フィールド110-11は、電子取引システム100において各ノードを一意的に識別し得る。一部の実施形態では、生成ノードは、それが電子取引システム100に導入するメッセージにその識別子を含めてもよい。例えば、各ゲートウェイ120は、それが参加者デバイス130からコンピュートノード140及び/又はシーケンサ150に転送するメッセージにそのノード識別子を含めてもよい。同様に、各コンピュートノード140は、それが生成した、電子取引システム100における他のノードに送信されるメッセージ(例えば、1以上の参加者デバイス130に最終的に転送されることが意図された非同期メッセージの承認、実行又はタイプ)にそのノード識別子を含めてもよい。したがって、電子取引システム100に導入される各メッセージは、メッセージにおけるノード識別子フィールド110-11を介して、メッセージの生成ノードに対応付けられ得る。 Additionally, message format 110 includes fields 110-11 . . . 110-17 that may be used internally within electronic trading system 100 but do not necessarily correspond to fields in messages exchanged with participant devices 130. For example, node identifier field 110-11 may uniquely identify each node in electronic trading system 100. In some embodiments, the producing node may include the identifier in messages that it introduces into the electronic trading system 100. For example, each gateway 120 may include its node identifier in messages it forwards from participant devices 130 to compute nodes 140 and/or sequencers 150. Similarly, each compute node 140 generates messages that are sent to other nodes in electronic trading system 100 (e.g., asynchronous messages that are intended to be ultimately transmitted to one or more participant devices 130) The node identifier may be included in the message (acceptance, execution, or type). Accordingly, each message introduced into the electronic trading system 100 may be associated with the message's generating node via the node identifier field 110-11 in the message.

メッセージフォーマット110は、フロー識別子フィールド110-12も含み得る。一部の実施形態では、参加者デバイス130とゲートウェイ120の間に確立された各取引セッション(すなわち、「接続」又は「フロー」)は、電子取引システム100の全体を通じて固有のものとなることが意図されたフロー識別子によって識別され得る。図1Dとの関連で上述したように、参加者デバイス130は、1以上のフローを介して及びゲートウェイ120の1以上を介して電子取引システム100に接続され得る。このような実施形態では、特定のフローを介して参加者デバイス130と電子取引システム100の間で交換される全てのメッセージの(電子取引システム100におけるノード間で使用される)標準化メッセージフォーマット110によるメッセージのバージョンは、フロー識別子フィールド110-12における当該フローに対する固有識別子を含むことになる。一部の実施形態では、フロー識別子フィールド110-12は、メッセージの生成ノードによって追加される。例えば、ゲートウェイ120は、ゲートウェイ120が電子取引システム100に導入する、それが参加者130から受信するメッセージに関連するフローの識別子をフロー識別子フィールド110-12に加えてもよい。同様に、コアコンピュートノード140は、それが生成するメッセージ(すなわち、承認メッセージ又は約定などの応答メッセージ又は非同期メッセージを含む他の発信メッセージ)に関連するフロー識別子をフロー識別子フィールド110-12に加えてもよい。 Message format 110 may also include a flow identifier field 110-12. In some embodiments, each trading session (i.e., “connection” or “flow”) established between participant device 130 and gateway 120 may be unique throughout electronic trading system 100. May be identified by an intended flow identifier. As discussed above in connection with FIG. 1D, participant devices 130 may be connected to electronic trading system 100 via one or more flows and via one or more of gateways 120. In such embodiments, all messages exchanged between participant devices 130 and electronic trading system 100 via a particular flow are configured according to standardized message format 110 (used between nodes in electronic trading system 100). The version of the message will include a unique identifier for the flow in flow identifier field 110-12. In some embodiments, the flow identifier field 110-12 is added by the generating node of the message. For example, gateway 120 may add to flow identifier field 110-12 the identifier of a flow associated with a message it receives from participant 130 that gateway 120 introduces into electronic trading system 100. Similarly, core compute node 140 adds a flow identifier associated with a message it generates (i.e., an acknowledgment message or other outgoing message, including response messages such as fills or asynchronous messages) to flow identifier field 110-12. Good too.

一部の実施形態では、フロー識別子フィールド110-12は論理フローを一意的に識別する値を含み、それは、複数の冗長取引セッション接続として、場合によっては複数のゲートウェイを介して、実際に高可用性の目的のために実施され得る。すなわち、一部の実施形態では、同じフローIDが、参加者デバイス130とゲートウェイ120の間の2以上の冗長フローに割り当てられてもよい。そのような実施形態では、冗長フローは、アクティブ/スタンバイ構成又はアクティブ/アクティブ構成のいずれかであり得る。アクティブ/アクティブ構成では、機能的に同等なメッセージは、参加者デバイス130とゲートウェイ120の間で同時に複数の冗長フローを介して並列に交換され得る。すなわち、取引するクライアントは、機能的に同等なメッセージを電子取引システム100に複数の冗長フローを介して同時に並列に送信し、複数の機能的に同等な応答を電子取引システム100から複数の冗長フローを介して並列に受信し得る。ただし、電子取引システム100は、単一の当該機能的に同等なメッセージのみに対して行動をとり得る。アクティブ/スタンバイ構成では、複数の冗長フローの間で一度に単一のフローがアクティブフローとして指定され得る一方で、複数の冗長フローの間の他方のフローはスタンバイフローとして指定され得る。取引メッセージは、実際には、現在アクティブなフローを介して交換されるだけとなる。冗長フローがアクティブ/アクティブ構成で構成されるのか、アクティブ/スタンバイ構成で構成されるのかにかかわらず、冗長フローのいずれかを介して交換されるメッセージは、標準化メッセージフォーマット110のフロー識別子フィールド110-12においてメッセージの生成ノードによって記憶された同じフロー識別子によって識別され得る。 In some embodiments, the flow identifier field 110-12 includes a value that uniquely identifies a logical flow that is highly available in practice, as multiple redundant trading session connections, and possibly through multiple gateways. may be implemented for the purpose of That is, in some embodiments, the same flow ID may be assigned to two or more redundant flows between participant device 130 and gateway 120. In such embodiments, redundant flows may be in either an active/standby configuration or an active/active configuration. In an active/active configuration, functionally equivalent messages may be exchanged in parallel between participant devices 130 and gateway 120 via multiple redundant flows at the same time. That is, a trading client simultaneously sends functionally equivalent messages to the electronic trading system 100 via multiple redundant flows in parallel, and sends multiple functionally equivalent responses from the electronic trading system 100 via multiple redundant flows. can be received in parallel via. However, electronic trading system 100 may only take action on a single such functionally equivalent message. In an active/standby configuration, a single flow among the multiple redundant flows at a time may be designated as the active flow, while another flow among the multiple redundant flows may be designated as the standby flow. Transaction messages will actually only be exchanged via currently active flows. Messages exchanged over any of the redundant flows, regardless of whether the redundant flows are configured in an active/active or active/standby configuration, are configured in the flow identifier field 110- of the standardized message format 110. 12 by the same flow identifier stored by the message's generating node.

上述したように、一部の実施形態では、電子取引システム100におけるノード間で交換されるメッセージは、シーケンサ150に送信されて順序識別子がマーク付けされる。したがって、メッセージフォーマット110は、順序識別子フィールド110-14を含む。一部の実施形態では、「マークなしメッセージ」は、空のブランク(例えば、ゼロ)の値の順序識別子フィールド110-14とともに送信され得る。他の実施形態では、マークなしメッセージの順序識別子フィールド110-14は、シーケンサがメッセージに割り当てることのない特定の所定値、又は無効値に設定されてもよい。さらに他の実施形態は、メッセージがマーク付けされないことを、メッセージが順序付けされたか否かを示すBoolean値又はフラグ値など、メッセージの他のフィールド(不図示)におけるインジケータを介して指定してもよい。シーケンサ150は、マークなしメッセージを受信すると、その後に、有効な順序識別子の値をマークなしメッセージの順序識別子フィールド110-14に加えることにより、「順序マーク付きメッセージ」を生成し得る。順序マーク付きメッセージの順序識別子フィールド110-14における有効な順序識別子の値は、メッセージを一意的に識別し、さらに電子取引システム100の全体を通じて他のマーク付きメッセージの中のマーク付きメッセージの相対順位付けにおけるマーク付きメッセージの確定的な位置を指定する。本例では、シーケンサ150によって送信される「順序マーク付きメッセージ」は、その後に、順序マーク付きメッセージの順序識別子フィールド110-14が有効な順序識別子の値を含むことを除いて、シーケンサによって受信された対応のマークなしメッセージと同一となり得る。 As mentioned above, in some embodiments, messages exchanged between nodes in electronic trading system 100 are sent to sequencer 150 and marked with an ordering identifier. Accordingly, message format 110 includes an order identifier field 110-14. In some embodiments, an "unmarked message" may be sent with an empty blank (eg, zero) value sequence identifier field 110-14. In other embodiments, the order identifier field 110-14 of unmarked messages may be set to some predetermined value that the sequencer does not assign to messages, or an invalid value. Still other embodiments may specify that a message is not marked via an indicator in another field (not shown) of the message, such as a Boolean or flag value that indicates whether the message is ordered or not. . Upon receiving an unmarked message, sequencer 150 may then generate an "order marked message" by adding a valid order identifier value to the order identifier field 110-14 of the unmarked message. A valid order identifier value in the order identifier field 110-14 of an order marked message uniquely identifies the message and also determines the relative rank of the marked message among other marked messages throughout electronic trading system 100. Specifies the definitive position of a marked message in the marking. In this example, an "order marked message" sent by sequencer 150 is subsequently received by the sequencer, except that the order marked message's order identifier field 110-14 contains a valid order identifier value. can be identical to the corresponding unmarked message.

メッセージフォーマット110は、一部の実施形態では、基準順序識別子フィールド110-15も含み得る。生成ノードは、それが生成する新たなメッセージの基準順序識別子フィールド110-15に、生成されているメッセージに関連する前メッセージの順序番号の値を加えてもよい。基準順序識別子フィールド110-15の値によって、電子取引システム100におけるノードはメッセージを前関連メッセージに相関付けることができる。 Message format 110 may also include a reference order identifier field 110-15 in some embodiments. The producing node may add the value of the order number of the previous message associated with the message being produced to the base order identifier field 110-15 of the new message it produces. The values of the reference order identifier fields 110-15 allow nodes in the electronic trading system 100 to correlate messages with previous related messages.

基準順序識別子フィールド110-15において参照される前関連メッセージは、同じ「注文チェーン」(すなわち、「取引注文チェーン」)における前メッセージであり得る。ほとんどの金融取引プロトコルによると、メッセージは、共通のメッセージを参照する、すなわち「そこから派生する」単一のフローを介したメッセージの組である「注文チェーン」に論理的にグループ化され得る。注文チェーンは、通常は、参加者デバイス130によって送信された「新規注文メッセージ」で開始する。注文チェーンにおける次のメッセージは、通常は、電子取引システムによる応答である(例えば、メッセージが取引システムによって受諾された場合の「新規注文承認」メッセージ、又はおそらくは、非限定的な例として無効価格などの無効なフォーマット若しくは無効なパラメータを有しているためにメッセージが取引システムによって拒否された場合の「新規注文拒否」メッセージのいずれかである)。注文チェーンは、前に承認された(ただし、依然として未決済であり、すなわち、取り消されず及び/又は約定されない少なくとも一部の数量を含む)新規注文の数量の少なくとも一部を取り消す、参加者デバイス130によって送信された「取消し注文」メッセージも含み得る。「取消し注文」メッセージは、ここでも、「取消し注文承認」又は「取消し注文拒否」メッセージにより電子取引システムによって承認又は拒否されることになり、これは注文チェーンの一部ともなり得る。注文チェーンは、前に承認された(ただし依然として未決済の)新規注文の数量及び/又は価格を置き換える、参加者デバイス130から送信される「置換え注文」メッセージも含み得る。「置換え注文」メッセージは、ここでも、「置換え注文承認」又は「置換え注文拒否」メッセージによって電子取引システムによって承認又は拒否されることになり、これは注文チェーンの一部ともなり得る。依然として未決済の前に承認された注文は、逆サイドの1以上の反対注文(すなわち、一方のサイドで「買い」及び他方のサイドで「売り」又は「空売り」)とマッチングされ得る。そして、電子取引システム100は、完全「約定」メッセージ(未決済の注文の数量の全てが単一のマッチングにおいて約定される場合)又は1以上の部分的な「約定」メッセージ(未決済の注文の数量の一部分のみが単一のマッチングにおいて約定される場合)を生成することになり、これらの「約定」メッセージも注文チェーンの一部ともなり得る。上述したように、基準順序識別子は、一般に、同じ注文チェーンにおける他の前メッセージを識別し得る。 The previous related message referenced in the reference order identifier field 110-15 may be a previous message in the same "order chain" (ie, "trade order chain"). According to most financial trading protocols, messages may be logically grouped into "order chains," which are sets of messages through a single flow that refer to or "derive from" a common message. The order chain typically begins with a "new order message" sent by participant device 130. The next message in the order chain is typically a response by the electronic trading system (e.g., a "new order accepted" message if the message is accepted by the trading system, or perhaps an invalid price, etc., as non-limiting examples) (either a "New Order Rejected" message if the message is rejected by the trading system because it has an invalid format or invalid parameters). The order chain cancels at least a portion of the quantity of the new order that was previously approved (but includes at least some quantity that is still outstanding, i.e., not canceled and/or filled). It may also include "cancel order" messages sent by. The "Cancel Order" message will again be approved or rejected by the electronic trading system with a "Cancel Order Approved" or "Cancel Order Rejected" message, which may also be part of the order chain. The order chain may also include a "replacement order" message sent from participant device 130 that replaces the quantity and/or price of a previously approved (but still outstanding) new order. The "Replacement Order" message will again be approved or rejected by the electronic trading system by a "Replacement Order Approved" or "Replacement Order Rejected" message, which may also be part of the order chain. A previously confirmed order that is still outstanding may be matched with one or more counter orders on the opposite side (ie, a "buy" on one side and a "sell" or "short" on the other side). The electronic trading system 100 then sends either a complete "fill" message (if all of the outstanding order quantity is filled in a single match) or one or more partial "fill" messages (if all of the outstanding order quantity is filled in a single match). If only a portion of the quantity is filled in a single match), these "fill" messages may also be part of the order chain. As mentioned above, the reference order identifier may generally identify other previous messages in the same order chain.

例えば、基準順序識別子フィールド110-15に戻ると、基準順序番号に対する値は、参加者デバイス130から生じてゲートウェイ120によって電子取引システム100に導入された「着信」メッセージに対してシーケンサによって割り当てられた順序番号となり、これにより、コンピュートノード140によって生成される応答メッセージなどの対応する「発信」メッセージはそれが応答している着信メッセージの順序番号値を参照し得る。本例では、コンピュートノード140によって生成される「新規注文承認」メッセージ又は「約定」メッセージは、コンピュートノード140が「新規注文承認」メッセージで応答し又は「約定」メッセージで注文を遂行している対応の「新規注文」メッセージに割り当てられた順序識別子に対する値を基準順序識別子フィールド110-15に含むことになる。ただし、一般に、基準順序識別子フィールド110-15に対する値は、必ずしも電子取引システム100によって直接応答されているメッセージのものである必要はないが、同じ注文チェーンの一部である前メッセージのもの、例えば、「新規注文」又は「新規注文承認」の順序番号となり得る。 For example, returning to the base sequence identifier field 110-15, the value for the base sequence number is assigned by the sequencer for an "incoming" message originating from the participant device 130 and introduced into the electronic trading system 100 by the gateway 120. A corresponding "outgoing" message, such as a response message generated by compute node 140, may refer to the sequence number value of the incoming message to which it is responding. In this example, a "new order approval" message or "fill" message generated by compute node 140 is a response in which compute node 140 responds with a "new order approval" message or fulfills an order with a "fill" message. The reference order identifier field 110-15 will contain the value for the order identifier assigned to the "New Order" message. However, in general, the value for the base order identifier field 110-15 need not necessarily be that of a message being responded to directly by electronic trading system 100, but that of a previous message that is part of the same order chain, e.g. , can be a sequence number for "New Order" or "New Order Approval".

一部の実施形態では、少なくとも一部のメッセージタイプについて、ゲートウェイ120は、それらが電子取引システム100に導入するメッセージにおける基準順序識別子フィールド110-15に、関連する前メッセージに対する順序識別子の値を加えてもよい。例えば、ゲートウェイ120は、「取消し注文」又は「置換え注文」メッセージにおける基準順序識別子フィールド110-15に、前の対応する「新規注文」又は「新規注文承認」メッセージに割り当てられた順序識別子の値を加えてもよい。同様に、コアコンピュートノード140は、対応する「取消し注文承認」メッセージ又は「置換え注文承認」メッセージに対する順序識別子フィールド110-15に、コンピュートノード140が直接応答しているメッセージのものではなく(例えば、「取消し注文」又は「置換え注文」メッセージの順序識別子ではなく)「新規注文」又は「新規注文承認」に対する順序識別子の値も加える。ここでも、基準順序識別子フィールド110-15は、電子取引システム100におけるノードが一般にメッセージを同じ注文チェーンにおける1以上の前メッセージに相関付けることを可能とする。 In some embodiments, for at least some message types, the gateway 120 adds the value of the sequence identifier for the associated previous message to the base sequence identifier field 110-15 in messages that they introduce into the electronic trading system 100. It's okay. For example, the gateway 120 populates the base order identifier field 110-15 in a "cancellation order" or "replacement order" message with the value of the order identifier assigned to the previous corresponding "new order" or "new order approval" message. May be added. Similarly, the core compute node 140 indicates that the order identifier field 110-15 for a corresponding "cancellation order approval" or "replacement order approval" message is not of a message to which the compute node 140 is directly responding (e.g., Also add the value of the order identifier for "new order" or "new order approval" (rather than the order identifier for "cancel order" or "replace order" message). Again, the reference order identifier fields 110-15 allow nodes in the electronic trading system 100 to generally correlate a message to one or more previous messages in the same order chain.

生成ノードは、それが電子取引システム100に導入するメッセージにノード特有タイムスタンプフィールド110-13を含めてもよい。シーケンサ150によって出力される順序マーク付きメッセージの順序識別子フィールド110-14に含まれる順序識別子は電子取引システム100の全体を通じて固有となることが意図されているが、ノード特有タイムスタンプフィールド110-13における値は、特定の生成ノードによって電子取引システム100に導入されたメッセージの一部の組の間で固有となり得る。ここでは「タイムスタンプ」というが、ノード特有タイムスタンプフィールド110-13に入る値は、当該ノードによって生成されるメッセージの間で固有な任意の適宜の値であり得る。例えば、ノード特有タイムスタンプは、実際にはタイムスタンプ又は任意の適宜の単調増加若しくは単調減少する値となり得る。 The producing node may include a node-specific timestamp field 110-13 in messages that it introduces into the electronic trading system 100. Although the order identifier contained in the order identifier field 110-14 of the order marked message output by the sequencer 150 is intended to be unique throughout the electronic trading system 100, the order identifier in the node-specific timestamp field 110-13 The value may be unique among some set of messages introduced into electronic trading system 100 by a particular producing node. Although referred to herein as a "timestamp," the value contained in the node-specific timestamp field 110-13 may be any suitable value that is unique among messages generated by that node. For example, a node-specific timestamp may actually be a timestamp or any suitable monotonically increasing or decreasing value.

一部の実施形態は、メッセージフォーマットに他のタイムスタンプフィールドを含み得る。例えば、一部のメッセージフォーマットは基準タイムスタンプフィールドを含んでいてもよく、それは前の関連メッセージの生成ノードによって割り当てられたタイムスタンプ値であってもよい。このような実施形態では、コンピュートノード140は、それが生成するメッセージに対するノード特有タイムスタンプフィールド110-13における新たなタイムスタンプ値を含んでいてもよく、コンピュートノードが生成するメッセージの基準タイムスタンプフィールドにおける関連メッセージからのタイムスタンプ値を含んでいてもよい。例えば、コンピュートノードによって生成される「新規注文承認」メッセージは、それが「新規注文承認メッセージ」の基準タイムスタンプフィールドにおいて応答している「新規注文」のタイムスタンプ値を含み得る。またさらに、一部の実施形態では、コンピュートノード140は、それらが生成するメッセージにおけるノード特有タイムスタンプフィールド110-13における新たなタイムスタンプ値を含まなくてもよいが、単に当該ノード特有タイムスタンプフィールド110-13に前の関連メッセージからのタイムスタンプ値を加えてもよい。 Some embodiments may include other timestamp fields in the message format. For example, some message formats may include a reference timestamp field, which may be a timestamp value assigned by the generating node of a previous associated message. In such embodiments, the compute node 140 may include a new timestamp value in the node-specific timestamp field 110-13 for messages it generates, and the reference timestamp field for messages it generates. may include timestamp values from associated messages at. For example, a "new order approval" message generated by a compute node may include a "new order" timestamp value to which it responds in the "new order approval message" reference timestamp field. Still further, in some embodiments, compute nodes 140 may not include new timestamp values in node-specific timestamp fields 110-13 in messages they generate, but simply The timestamp value from the previous related message may be added to 110-13.

メッセージフォーマット110は、エンティティタイプフィールド110-16及びエンティティカウントフィールド110-17も含み得る。メッセージのエンティティタイプは、それが電子取引システム100にゲートウェイ120によって導入されるのか又はそれともコンピュートノード140によって導入されるのか、言い換えると、メッセージが参加者デバイス130からゲートウェイ120において受信されている着信メッセージであるのか又はそれが参加者デバイス130に送信されるコンピュートノード140によって生成されている発信メッセージであるのかに依存し得る。例えば、一部の実施形態では、着信メッセージは、エンティティタイプ「フロー」とみなされる(かつエンティティタイプフィールド110-16には、タイプ「フロー」を表す値がゲートウェイ120によって着信メッセージに加えられる)一方で、発信メッセージはエンティティタイプ「銘柄記号」とみなされる(かつエンティティタイプフィールド110-16には、タイプ「銘柄記号」を表す値がコンピュートノード140によって発信メッセージに加えられる)。このような実施形態では、タイプ「フロー」のエンティティカウントがゲートウェイ120によって保持され、タイプ「銘柄記号」のエンティティカウントがコンピュートノード140によって保持される。 Message format 110 may also include an entity type field 110-16 and an entity count field 110-17. The entity type of a message determines whether it is introduced into electronic trading system 100 by gateway 120 or by compute node 140; in other words, an incoming message where the message is received at gateway 120 from participant device 130. or whether it is an outgoing message being generated by compute node 140 that is sent to participant device 130. For example, in some embodiments, the incoming message is considered to be of entity type "Flow" (and the entity type field 110-16 has a value added to the incoming message by the gateway 120 representing the type "Flow"); , the outgoing message is considered to be of entity type "Stock Symbol" (and the entity type field 110-16 has a value added to the outgoing message by the compute node 140 representing the type "Stock Symbol"). In such an embodiment, an entity count of type "flow" is maintained by gateway 120 and an entity count of type "stock symbol" is maintained by compute node 140.

エンティティタイプ「フロー」を検討すると、ゲートウェイ120は、フローあたりの着信メッセージカウントを保持し、ゲートウェイ120上でアクティブな各フローを介してゲートウェイ120によって受信された着信メッセージをカウントする。例えば、4本の非冗長フローがゲートウェイ120上でアクティブな場合、各フローは上述のように固有のフロー識別子に割り当てられることになり、ゲートウェイ120はフローあたりの着信メッセージカウントを保持し、それら4本のフローの各々を介して受信された着信メッセージ数をカウントすることになる。このような実施形態では、ゲートウェイ120は、着信メッセージのエンティティカウントフィールド110-17に、(メッセージのフロー識別子フィールド110-12に加えられたフロー識別子の値によって電子取引システム100の全体を通じて識別されるような)着信メッセージのフローに関連するフローあたりの着信メッセージカウントを加える。 Considering the entity type "Flow", the gateway 120 maintains an incoming message count per flow, counting the incoming messages received by the gateway 120 via each flow active on the gateway 120. For example, if four non-redundant flows are active on gateway 120, each flow would be assigned a unique flow identifier as described above, and gateway 120 would maintain an incoming message count per flow and The number of incoming messages received through each of the book flows will be counted. In such embodiments, the gateway 120 enters the Entity Count field 110-17 of the incoming message (identified throughout the electronic trading system 100 by the flow identifier value added to the message's Flow Identifier field 110-12). Add the incoming message count per flow associated with the flow of incoming messages (such as).

アクティブ/アクティブ構成(すなわち、上述したように、複数のフローが同じメッセージ又は少なくとも機能的に同等なメッセージを、1以上のゲートウェイ120を介して接続された参加者デバイス130から並列に受信する構成)における冗長フローの場合、各内在する冗長フローは、同じフロー識別子に割り当てられることになり、さらに、特に冗長フローが別個のゲートウェイ120上で実施される場合、フローあたりの着信メッセージカウントはそれでも各冗長フローに対して別個に保持され得る。参加者デバイス130は同じ順位(すなわち、順序)における同じ組のメッセージを電子取引システム100に冗長フローの各々を介して送信することが予想されることから、別個の冗長フローを介して受信される機能的に同等なメッセージに割り当てられるエンティティカウントは同一となるべきことも予想される。これらの機能的に同等な着信メッセージは、ゲートウェイ120によってシーケンサ150及びコンピュートノード140に転送され得る。したがって、このような実施形態では、シーケンサ150及びコンピュートノード140は、同じフロー識別子に関連する複数の機能的に同等な着信メッセージを受信し得るが、同じフロー識別子を有する複数のメッセージに対してエンティティカウントが同一である場合、シーケンサ150及びコンピュートノード140はそのようなメッセージが機能的に同等であるものとして識別し得る。一部の実施形態では、シーケンサ150及びコンピュートノード140は、各フローに関連する着信メッセージのエンティティカウントフィールド110-17に含まれていた最も高いエンティティカウントをフロー毎に追跡し得る。これにより、シーケンサ150及びコンピュートノード140は、各ノードが受信した複数の機能的に同等な着信メッセージの最初に到着するものに対してのみ行動をとり、後に到着する他の機能的に同等な着信メッセージを無視することができる。例えば、シーケンサ150は、一部の実施形態では、最初に到着するそのような機能的に同等な着信メッセージのみを順序付け、コンピュートノード140は最初に到着するそのような機能的に同等なメッセージに対してのみ処理を開始し得る。ノード(すなわち、シーケンサ150又はコンピュートノード140)によって受信される着信メッセージが、そのノードが当該フローに対して把握している最も高いエンティティカウント以下のエンティティカウントを有する場合には、そのノードは、着信メッセージは以前に受信された他の着信メッセージと機能的に同等である推定することができ、後に受信される機能的に同等な着信メッセージを単に無視してもよい。 Active/active configuration (i.e., a configuration in which multiple flows receive the same message, or at least functionally equivalent messages, in parallel from participant devices 130 connected via one or more gateways 120, as described above) In the case of redundant flows in Can be kept separate from the flow. Participant devices 130 are expected to send the same set of messages in the same rank (i.e., order) to electronic trading system 100 via each of the redundant flows and thus are received via separate redundant flows. It is also expected that the entity counts assigned to functionally equivalent messages should be the same. These functionally equivalent incoming messages may be forwarded by gateway 120 to sequencer 150 and compute node 140. Thus, in such embodiments, sequencer 150 and compute node 140 may receive multiple functionally equivalent incoming messages associated with the same flow identifier, but the entity If the counts are the same, sequencer 150 and compute node 140 may identify such messages as being functionally equivalent. In some embodiments, sequencer 150 and compute node 140 may track, for each flow, the highest entity count that was included in entity count field 110-17 of an incoming message associated with each flow. This allows sequencer 150 and compute nodes 140 to take action only on the first of multiple functionally equivalent incoming messages received by each node, and to act on other functionally equivalent incoming messages that arrive later. You can ignore the message. For example, sequencer 150 may, in some embodiments, only order such functionally equivalent incoming messages that arrive first, and compute node 140 may order only such functionally equivalent incoming messages that arrive first. Processing may only begin if the If an incoming message received by a node (i.e., sequencer 150 or compute node 140) has an entity count that is less than or equal to the highest entity count that the node knows about for that flow, then that node A message can be presumed to be functionally equivalent to other previously received incoming messages, and later received functionally equivalent incoming messages may simply be ignored.

ここでエンティティタイプ「銘柄記号」の場合を検討すると、コンピュートノード140は、銘柄記号あたりの発信メッセージカウントを保持し、コンピュートノード140によって取り扱われる各銘柄記号に対してコンピュートノード140によって生成されてそこから送信される発信メッセージをカウントし得る。例えば、4個の銘柄記号(例えば、MSFT、GOOG、IBM、ORCL)がコンピュートノード140によって取り扱われる場合、各銘柄記号は、上述したように、メッセージの銘柄記号フィールド110-2に加えられた銘柄記号識別子に割り当てられ、コンピュートノード140は銘柄記号あたりの発信メッセージカウントを保持し、これら4個の銘柄記号の各々を取り扱っていた、それが生成及び送信した発信メッセージ数をカウントすることになる。このような実施形態では、コンピュートノード140は、(メッセージの銘柄記号フィールド110-2に加えられた値によって電子取引システム100の全体を通じて識別されるような)発信メッセージの銘柄記号に関連する銘柄記号あたりの発信メッセージカウントを着信メッセージのエンティティカウントフィールド110-17に加える。 Considering now the case of the entity type "Stock Symbol", the Compute node 140 maintains an outgoing message count per stock symbol that is generated and sent by the Compute node 140 for each stock symbol handled by the Compute node 140. may count outgoing messages sent from. For example, if four stock symbols (e.g., MSFT, GOOG, IBM, ORCL) are handled by the compute node 140, each stock symbol is added to the stock symbol field 110-2 of the message, as described above. Assigned to a symbol identifier, the compute node 140 will maintain an outgoing message count per stock symbol, counting the number of outgoing messages it has generated and sent while handling each of these four stock symbols. In such embodiments, the compute node 140 determines the stock symbol associated with the stock symbol of the outgoing message (as identified throughout the electronic trading system 100 by the value added to the message's stock symbol field 110-2). Adds the outgoing message count to the incoming message's entity count field 110-17.

一部の実施形態では、さらに後述するように、コンピュートノードは、複数のコンピュートノードが、高可用性の理由により、特定の銘柄記号を並行して取り扱うように構成されてもよい。シーケンサ150によって与えられる電子取引システム100の全体を通じたメッセージの確定的な順位付けのために、複数のコンピュートノードが所与の銘柄記号を取り扱っていても、それらは同じ銘柄記号を同じ順位(すなわち、順序)で同様に参照する着信メッセージを処理していることになり、それにより、機能的に同等な応答メッセージを並列に生成することが保証可能となる。複数のコンピュートノード140にわたって特定の銘柄記号に対して送出される発信メッセージを検討すると、当該銘柄記号を参照する各発信メッセージは、当該銘柄記号を積極的に取り扱う他の各コンピュートノード140によって送出されている機能的に同等なメッセージを有すべきである。これらの発信メッセージは全て、コンピュートノード140によってシーケンサ150及びゲートウェイ120に送信され得る。したがって、このような実施形態では、シーケンサ150及びゲートウェイ120は、同じ銘柄記号に関連する複数の機能的に同等な着信メッセージを受信し得るが、シーケンサ150及びゲートウェイ120は、同じ銘柄記号識別子を有する複数のメッセージに対してエンティティカウントが同一である場合、メッセージは機能的に同等であるものとして識別し得る。一部の実施形態では、シーケンサ150及びゲートウェイ120は、銘柄記号に関連する発信メッセージのエンティティカウントフィールド110-17に含まれていた最も高いエンティティカウントを銘柄記号毎に追跡し得る。これにより、シーケンサ150及びゲートウェイ120は、各ノードが受信した複数の機能的に同等な発信メッセージの最初に到着するものに対してのみ行動をとり、後に到着する他の機能的に同等な発信メッセージを無視することができる。例えば、シーケンサ150は、一部の実施形態では、最初に到着するそのような機能的に同等な発信メッセージのみを順序付けてもよい。同様に、ゲートウェイ120は、最初に到着するそのような機能的に同等なメッセージのみを処理し始めてもよい。ノード(すなわち、シーケンサ150又はゲートウェイ120)によって受信される発信メッセージが、そのノードが当該銘柄記号に対して以前に把握している最も高いエンティティカウント以下のエンティティカウントを有する場合には、そのノードは、発信メッセージは以前に受信された他の発信メッセージと機能的に同等である推定することができ、後に受信される機能的に同等な発信メッセージを単に無視してもよい。 In some embodiments, as described further below, the compute nodes may be configured such that multiple compute nodes handle a particular stock symbol in parallel for high availability reasons. Because of the deterministic ranking of messages throughout electronic trading system 100 provided by sequencer 150, even if multiple compute nodes are handling a given stock symbol, they will rank the same stock symbol in the same order (i.e. , order), thereby ensuring that functionally equivalent response messages are generated in parallel. Considering outgoing messages sent for a particular stock symbol across multiple compute nodes 140, each outgoing message that references that stock symbol is sent by each other compute node 140 that actively handles that stock symbol. should have functionally equivalent messages. All of these outgoing messages may be sent by compute node 140 to sequencer 150 and gateway 120. Thus, in such embodiments, sequencer 150 and gateway 120 may receive multiple functionally equivalent incoming messages related to the same stock symbol, but sequencer 150 and gateway 120 may receive multiple functionally equivalent incoming messages that have the same stock symbol identifier. If the entity count is the same for multiple messages, the messages may be identified as functionally equivalent. In some embodiments, sequencer 150 and gateway 120 may track, for each stock symbol, the highest entity count that was included in the entity count field 110-17 of the outgoing message associated with the stock symbol. This allows sequencer 150 and gateway 120 to take action only on the first of multiple functionally equivalent outgoing messages received by each node, and to act on other functionally equivalent outgoing messages that arrive later. can be ignored. For example, sequencer 150 may order only such functionally equivalent outgoing messages that arrive first in some embodiments. Similarly, gateway 120 may begin processing only the first such functionally equivalent message that arrives. If an outgoing message received by a node (i.e., sequencer 150 or gateway 120) has an entity count less than or equal to the highest entity count previously known to that stock symbol, that node , an outgoing message can be presumed to be functionally equivalent to other previously received outgoing messages, and later received functionally equivalent outgoing messages may simply be ignored.

シーケンサ150が、シーケンサに到着する複数の機能的に同等なメッセージの最初のメッセージのみを順序付ける実施形態では、シーケンサは様々な態様でそれを行うことができる。一例では、最初に到着する当該機能的に同等なメッセージと機能的に同等な他の後続の到着メッセージは、シーケンサによって単に無視されてもよい(この場合、機能的に同等なメッセージの組に対して単一の順序マーク付きメッセージのみがシーケンサによって出力されてもよい)。他の可能性は、シーケンサが、例えば、メッセージのエンティティカウント、そのフロー識別子又は銘柄記号識別子(「フロー」及び「銘柄記号」のエンティティタイプをそれぞれ有するメッセージについて)、及びその順序番号間を関連付けることによって最初の機能的に同等なメッセージに割り当てる順序番号を追跡することである。それにより、シーケンサは各機能的に同等なメッセージの順序付きバージョンを出力することができ、その各機能的に同等なメッセージの順序付きバージョンでは、全ての機能的に同等なメッセージの順序マーク付きバージョンについて順序識別子フィールド110-14の値が、シーケンサ150によって受信された機能的に同等なメッセージの間で最初に到着したメッセージにシーケンサによって割り当てられたものと同じである。 In embodiments where sequencer 150 orders only the first of multiple functionally equivalent messages arriving at the sequencer, the sequencer can do so in a variety of ways. In one example, other subsequent arriving messages that are functionally equivalent to the first arriving functionally equivalent message may simply be ignored by the sequencer (in this case, for a set of functionally equivalent messages) only a single ordered marked message may be output by the sequencer). Another possibility is for the sequencer to make an association between, for example, a message's entity count, its flow identifier or stock symbol identifier (for messages with entity types of "flow" and "stock symbol" respectively), and its sequence number. to keep track of the sequence number assigned to the first functionally equivalent message. Thereby, the sequencer can output an ordered version of each functionally equivalent message, and in that ordered version of each functionally equivalent message, an ordered version of all functionally equivalent messages can be output. The value of the order identifier field 110-14 is the same as that assigned by the sequencer 150 to the first arriving message among the functionally equivalent messages received by the sequencer 150.

他の実施形態では、シーケンサ150は、メッセージが機能的に同等であるか否かを追跡しなくてもよく、当該メッセージが複数の機能的に同等なメッセージのうちの1つであるか否かにかかわらず、シーケンサ150に到着する各順序付けなしメッセージに固有の順序番号を割り当ててもよい。このような実施形態では、複数の機能的に同等なメッセージのうちの順序マーク付きバージョンのメッセージの各々は、順序識別子フィールド110-14における値としてシーケンサによって異なる順序識別子に割り当てられる。機能的に同等なメッセージの組に対して有効な順序識別子を決定するために、このような実施形態における順序付けられた機能的に同等なメッセージの受信者ノードは、最初にノードに到着する順序付けられた機能的に同等なメッセージのうちの順序付きバージョンのメッセージにおける順序識別子を用いてもよい。電子取引システム100におけるノードの間に直接のポイントツーポイント接続がある実施形態では、メッセージの順序マーク付きバージョンはシーケンサ150によって順序付けられた順位で送出されるので、シーケンサに直接接続された全てのノードの間では同じ順序付け順位で受信されるべきである。したがって、シーケンサとのそれぞれの直接ポイントツーポイント接続を介して順序マーク付きメッセージを受信する全てのノードについて、複数の機能的に同等な順序マーク付きメッセージのうちの最初に到着した順序マーク付きメッセージは、順序識別子フィールド110-14に同じ値を有すべきである。 In other embodiments, sequencer 150 may not track whether a message is functionally equivalent, and whether the message is one of a plurality of functionally equivalent messages. Regardless, each unordered message arriving at sequencer 150 may be assigned a unique sequence number. In such embodiments, each of the order marked versions of the plurality of functionally equivalent messages is assigned a different order identifier by the sequencer as a value in the order identifier field 110-14. To determine a valid ordering identifier for a set of functionally equivalent messages, a recipient node of an ordered functionally equivalent message in such embodiments determines the ordering identifier of the ordered functionally equivalent message that arrives at the node first. An order identifier in an ordered version of a functionally equivalent message may be used. In embodiments where there are direct point-to-point connections between nodes in electronic trading system 100, the order-marked versions of the messages are sent out in an ordered order by sequencer 150 so that all nodes directly connected to the sequencer should be received in the same ordering order. Therefore, for every node that receives an order-marked message via its respective direct point-to-point connection with a sequencer, the order-marked message that arrives first of multiple functionally equivalent order-marked messages is , should have the same value in the order identifier field 110-14.

上述から明らかとなるように、メッセージの順序識別子に加えて、メッセージフォーマット110などのメッセージフォーマットを有する実施形態では、電子取引システム100の全体を通じてメッセージを一意的に識別する多数の他の態様が存在し得る。例えば、メッセージがノード識別子及びノード特有タイムスタンプの双方を含む実施形態では、メッセージにおけるこれら2つの識別子の存在は、電子取引システム100の全体を通じてメッセージを一意的に識別するのに充分となり得る。そのようなフィールドは、メタデータを含むものとして理解され得る。そのような同一のメタデータを含む複数のメッセージは、共通のメタデータを含むものとして理解され得る。同様に、フロー識別子が電子取引システム100の全体を通じて固有である実施形態では、メッセージのフロー識別子及びノード特有タイムスタンプの組合せは、電子取引システム100の全体を通じてメッセージを一意的に識別するのに充分となり得る。またさらに、フロー識別子及びエンティティカウントの組合せはエンティティタイプ「フロー」のメッセージを一意的に識別するのに充分となり、銘柄記号識別子及びエンティティカウントの組合せはエンティティタイプ「銘柄記号」のメッセージを一意的に識別するのに充分となり得る。 As will be apparent from the above, in addition to message order identifiers, in embodiments with message formats such as message format 110, there are numerous other aspects that uniquely identify messages throughout electronic trading system 100. It is possible. For example, in embodiments where a message includes both a node identifier and a node-specific timestamp, the presence of these two identifiers in the message may be sufficient to uniquely identify the message throughout electronic trading system 100. Such fields can be understood as containing metadata. Multiple such messages containing the same metadata may be understood as containing common metadata. Similarly, in embodiments where flow identifiers are unique throughout electronic trading system 100, the combination of a message's flow identifier and node-specific timestamp is sufficient to uniquely identify the message throughout electronic trading system 100. It can be. Still further, the combination of flow identifier and entity count is sufficient to uniquely identify a message of entity type "Flow", and the combination of stock symbol identifier and entity count is sufficient to uniquely identify a message of entity type "stock symbol". This may be sufficient for identification.

ただし、メッセージに割り当てられた順序識別子に加えて、電子取引システム100の全体を通じてメッセージを一意的に識別する他の態様が存在し得るが、電子取引システム100の全体を通じて他のノードによって生成される他のメッセージの間でメッセージの相対順位付けを公平かつ確定的な態様で指定するために、依然として順序識別子が必要であることが注記されるべきである。例えば、ノード特有タイムスタンプが実際にタイムスタンプ値として実施される場合、ノード間のシステムクロックが完全に同期されていても、異なるノードによって各々生成された2つの異なるメッセージの各々がそれらのそれぞれの生成ノードによって同じタイムスタンプ値に割り当てられる場合があり、そしてこれら2つのメッセージ間の相対順位付けは曖昧となる。メッセージが一意的に識別可能であっても、両メッセージの受信者ノードは、依然としてメッセージに対して可能な行動をとる前に2つのメッセージの相対順位付けを決定する態様を必要とすることになる。 However, in addition to the ordinal identifier assigned to a message, there may be other aspects that uniquely identify a message throughout electronic trading system 100 that are generated by other nodes throughout electronic trading system 100. It should be noted that order identifiers are still needed to specify the relative ranking of messages among other messages in a fair and deterministic manner. For example, if a node-specific timestamp is actually implemented as a timestamp value, even if the system clocks between the nodes are perfectly synchronized, each of two different messages each generated by a different node will They may be assigned the same timestamp value by the producing node, and the relative ranking between these two messages becomes ambiguous. Even if the messages were uniquely identifiable, the recipient nodes of both messages would still need a way to determine the relative ranking of the two messages before taking possible actions on the messages. .

受信者ノードがその曖昧さを解消する1つの可能なアプローチとして、例えば、電子取引システム100の全体を通じてメッセージの相対順位付けにおける一方のメッセージを他方に先行するものとしてランダムに選択することによる、ランダム性の使用によるものが考えられる。ただし、曖昧さを解消するのにランダム性を用いることは、電子取引システム100の全体を通じて「状態確定性」を支持するものではない。異なる受信者ノードが、同じ組のメッセージの間での異なる相対順位付けをランダムに決定することになり、電子取引システム100内では予測不能で非確定的な挙動をもたらし、フォールトトレランス、高可用性及び災害復旧性などの重要な特徴の適正な実施を阻害してしまう。 One possible approach for the recipient node to resolve the ambiguity is by randomly selecting one message to precede the other in the relative ranking of messages throughout the electronic trading system 100, for example. This may be due to the use of sex. However, using randomness to resolve ambiguity does not support "state certainty" throughout the electronic trading system 100. Different recipient nodes will randomly determine different relative rankings among the same set of messages, leading to unpredictable and non-deterministic behavior within the electronic trading system 100, which may lead to fault tolerance, high availability and This hinders the proper implementation of important features such as disaster resiliency.

受信者ノードが順位付けにおける曖昧さを解消する他のアプローチとして、例えば、メッセージに関連するノード識別子に基づく所定の優先順位付け方法によるものが考えられる。ただし、そのようなアプローチは、電子取引システム100にメッセージを導入したノードのノード識別子に基づくだけで一部のメッセージに高い優先順位を与えることにより、公平性という重要な目標に反して作用する。例えば、一部の参加者デバイス130が、それらが偶発的に所定の優先順位付け方法において高いとみなされるゲートウェイ120を介して電子取引システム100に接続されたというだけで、優先されてしまうことになる。 Other approaches for recipient nodes to resolve ranking ambiguities include, for example, through predetermined prioritization methods based on node identifiers associated with messages. However, such approaches work against the important goal of fairness by giving higher priority to some messages solely based on the node identifier of the node that introduced the message to electronic trading system 100. For example, some participant devices 130 may end up being prioritized simply because they happen to be connected to electronic trading system 100 via a gateway 120 that is deemed high in a predetermined prioritization method. Become.

メッセージが、メッセージがそれぞれ「銘柄記号」又は「フロー」のエンティティタイプを有するか否かに応じてエンティティカウント及び銘柄記号識別子又はフロー識別子のいずれかを介して一意的に識別されるとすると、当該銘柄記号(「銘柄記号」のエンティティタイプを有するメッセージの場合)又は当該フロー(「フロー」のエンティティタイプを有するメッセージの場合)に関連する他のメッセージの間での確定的な順位付けが存在し得る。ただし、それぞれ異なる銘柄記号及びフローに関連する他のメッセージの間での順位付けは、依然として非確定的となる。 Given that a message is uniquely identified via an entity count and either a stock symbol identifier or a flow identifier depending on whether the message has an entity type of "stock symbol" or "flow" respectively, the There is a definitive ranking between the stock symbol (for messages with an entity type of "stock symbol") or other messages associated with the flow (for messages with an entity type of "flow"). obtain. However, the ranking among other messages associated with different stock symbols and flows will still be non-deterministic.

したがって、メッセージフォーマット110における他のフィールドが電子取引システム100の全体を通じてメッセージを一意的に識別するのに充分となり得る場合であっても、電子取引システム100における他のメッセージに対するメッセージの順位付けを公平かつ確定的に指定するためには、シーケンサ150によってメッセージに割り当てられる順序識別子が依然として必要となり得る。このような実施形態では、シーケンサ150(又は複数のシーケンサ150が存在する場合には単一の現在アクティブなシーケンサ)は、電子取引システム100の全体を通じて順序マーク付きメッセージの間の真に確定的な順位付けの信頼できるソースとして作用する。 Therefore, even though other fields in message format 110 may be sufficient to uniquely identify a message throughout electronic trading system 100, it is not fair to rank a message relative to other messages in electronic trading system 100. And for deterministic designation, an ordering identifier assigned to the message by sequencer 150 may still be required. In such embodiments, sequencer 150 (or the single currently active sequencer if multiple sequencers 150 are present) provides a truly deterministic system of sequence-marked messages throughout electronic trading system 100. Act as an authoritative source for rankings.

一部の実施形態では、電子取引システム100におけるノードは、2つのバージョンのメッセージ:生成ノードによって電子取引システム100に導入されるような順序付けなし(マークなし)バージョンのメッセージ、及びシーケンサ150によって割り当てられた順序識別子を含むメッセージの(マーク付き)バージョンを受信し得る。これは、生成ノードがマークなしメッセージを1以上の受信者ノード及びシーケンサ150に送信する実施形態で起こり得る。そして、シーケンサ150は、同じメッセージの順序マーク付きバージョンを同じ受信者ノードを含むノードの組に送信し得る。 In some embodiments, the nodes in the electronic trading system 100 have two versions of the message: an unordered (unmarked) version of the message, as introduced into the electronic trading system 100 by the generating node, and an unordered (unmarked) version of the message, as assigned by the sequencer 150. A (marked) version of the message containing the ordered order identifier may be received. This may occur in embodiments where the producing node sends unmarked messages to one or more recipient nodes and sequencer 150. Sequencer 150 may then send order-marked versions of the same message to a set of nodes that include the same recipient node.

上述したように、順序マーク付きバージョンのメッセージは電子取引システム100における他のマーク付きメッセージ間のメッセージの相対処理順位(すなわち、順序内の位置)を決定するのに有用であるが、受信者ノードがマークなしバージョンのメッセージを受信するのにも有用となり得る。例えば、予期せぬ場合に(例えば、ノード間に直接の接続がある実施形態では)、マークなしバージョンのメッセージがマーク付きバージョンのメッセージの前に受信されることが確かに可能となる。なぜなら、マーク付きバージョンのメッセージは、介在するホップを介してシーケンサ150を通じて送信されるためである。したがって、一部の実施形態では、信頼性を以って他のマーク付きメッセージの間のマーク付きメッセージの相対順位付けを示すマーク付きバージョンのメッセージを受信者ノードが受信する前であっても、受信者ノードはマークなしメッセージの受信に応じてマークなしメッセージの処理を活性化させる機会がある。 As discussed above, the order-marked version of a message is useful for determining the message's relative processing order (i.e., position in the order) among other marked messages in electronic trading system 100; may also be useful for receiving unmarked versions of messages. For example, it is certainly possible that in unexpected cases (eg, in embodiments where there is a direct connection between nodes), an unmarked version of a message is received before a marked version of the message. This is because the marked version of the message is sent through sequencer 150 via intervening hops. Thus, in some embodiments, even before a recipient node receives a marked version of the message that reliably indicates the relative ranking of the marked message among other marked messages, A recipient node has an opportunity to activate unmarked message processing in response to receiving an unmarked message.

同じメッセージのマーク付き及びマークなしバージョンの双方を受信するノードは、両バージョンのメッセージにおける同じ識別情報又は「共通のメタデータ」を介して2つのバージョンのメッセージを相互に相関付けることができる。例えば、上述したように、生成ノードは、それが生成するメッセージ(すなわち、マークなしメッセージ)に、電子取引システム100の全体を通じてともに各メッセージを一意的に識別し得るノード識別子及びノード特有タイムスタンプを含めてもよい。メッセージのマーク付き及びマークなしバージョンが、シーケンサ150によって割り当てられた順序識別子を除いて基本的に同一である実施形態では、マーク付きメッセージは対応するマークなしメッセージにも含まれる同じノード識別子及びノード特有タイムスタンプも含むことになり、それにより、両バージョンのメッセージの受信者ノードがマーク付き及びマークなしバージョンを相関付けることができる。したがって、マーク付きメッセージは電子取引システム100の全体を通じて他のマーク付きメッセージに対するマーク付きメッセージの相対順位付けを示すが、同じメッセージのマークなしバージョンとマーク付きバージョンの間で行われ得る相関付けのために、マーク付きメッセージは(少なくとも上述の相関付けを介して間接的に)電子取引システム100の全体を通じて(マーク付けされ又はマーク付けされない)他のメッセージに対するそのメッセージの相対順位付けを示す。電子取引システム100におけるノードが、上述したメッセージを一意的に識別する他の態様によってメッセージの順序マーク付きバージョンをマークなしバージョンに相関付けてもよいことが理解されるべきである。例えば、順序マーク付きメッセージとマークなしメッセージの間の相関付けは、フロー識別子及びノード特有タイムスタンプの組合せによって行われてもよい。そのような相関付けは、それぞれエンティティタイプ「銘柄記号」及び「フロー」を有するメッセージについて、メッセージにおける銘柄記号識別子又はフロー識別子とともにメッセージのエンティティカウントによって追加的又は代替的に行われてもよい。 A node that receives both marked and unmarked versions of the same message can correlate the two versions of the message via the same identification information or "common metadata" in both versions of the message. For example, as discussed above, a producing node may stamp the messages it produces (i.e., unmarked messages) with a node identifier and a node-specific timestamp that together may uniquely identify each message throughout electronic trading system 100. May be included. In embodiments where the marked and unmarked versions of a message are essentially the same except for the ordinal identifier assigned by sequencer 150, the marked message has the same node identifier and node-specific information that is also included in the corresponding unmarked message. A timestamp will also be included, allowing recipient nodes of both versions of the message to correlate the marked and unmarked versions. Thus, although a marked message indicates a relative ranking of the marked message to other marked messages throughout the electronic trading system 100, due to the correlation that may be made between unmarked and marked versions of the same message. In addition, a marked message indicates (at least indirectly via the correlation described above) the relative ranking of that message relative to other messages (marked or unmarked) throughout electronic trading system 100. It should be appreciated that nodes in electronic trading system 100 may correlate order-marked versions of messages to unmarked versions by other aspects of uniquely identifying messages as described above. For example, correlation between order-marked and unmarked messages may be performed by a combination of flow identifiers and node-specific timestamps. Such correlation may additionally or alternatively be performed by the entity count of the message along with the stock symbol identifier or flow identifier in the message, for messages with entity types "stock symbol" and "flow", respectively.

マイクロ秒又はさらにはナノ秒が重要となる高速取引の時代において、メッセージを電子取引システム100と交換する参加者デバイス130はレイテンシーに非常に影響を受け易いことが多く、低い予測可能なレイテンシーが好ましい。図1Dに示す構成は、少なくともゲートウェイ120の各々とコンピュートノード140の各々との間のポイントツーポイントメッシュ172のアーキテクチャを提供することによってこの要件に対応する。一部の実施形態では、メッシュ172における各ゲートウェイ120は、コンピュートノード140及びシーケンサ150に対する専用高速直接接続180を有し得る。 In the era of high-speed trading where microseconds or even nanoseconds matter, participant devices 130 that exchange messages with electronic trading system 100 are often very latency sensitive, and low, predictable latency is preferred. . The configuration shown in FIG. 1D addresses this requirement by providing a point-to-point mesh 172 architecture between at least each of the gateways 120 and each of the compute nodes 140. In some embodiments, each gateway 120 in mesh 172 may have a dedicated high-speed direct connection 180 to compute nodes 140 and sequencers 150.

例えば、専用接続180-1-1がゲートウェイ120-1(すなわち、GW1)とコアコンピュートノード140-1(すなわち、Core1)の間に設けられ、専用接続180-1-2が、ゲートウェイ120-1(すなわち、GW1)とコアコンピュートノード140-2(すなわち、Core2)の間に設けられ、それが続く。そして、例示の接続180-g-cがゲートウェイ120-gとコンピュートノード140-cの間に設けられ、例示の接続180-s-cがシーケンサ150とコアコンピュートノード140-c(すなわち、Core c)の間に設けられ、例示の接続180-gw1-s1がゲートウェイ120-1(すなわち、GW g)とシーケンサ150-1の間に設けられ、例示の接続180-c1-s1がコアコンピュートノード140-1(すなわち、Core1)とシーケンサ150-1の間に設けられる。 For example, dedicated connection 180-1-1 is provided between gateway 120-1 (i.e., GW1) and core compute node 140-1 (i.e., Core1), and dedicated connection 180-1-2 is provided between gateway 120-1 (i.e., GW1) and core compute node 140-1 (i.e., Core1); (ie, GW1) and core compute node 140-2 (ie, Core2), and so on. An example connection 180-gc is then provided between gateway 120-g and compute node 140-c, and an example connection 180-sc is provided between sequencer 150 and core compute node 140-c (i.e., Core c ), an example connection 180-gw1-s1 is provided between the gateway 120-1 (i.e., GW g) and the sequencer 150-1, and an example connection 180-c1-s1 is provided between the core compute node 140 -1 (ie, Core1) and the sequencer 150-1.

ポイントツーポイントメッシュ172における各専用接続180は、一部の実施形態では、共有スイッチを利用しないポイントツーポイント直接接続であることが理解されるべきである。専用又は直接接続を、ここでは互換可能に直接又は専用「リンク」という場合があり、それは2つのエンドポイント間のその間の通信に専用の(すなわち、非共有の)直接接続である。このような専用/直接リンクは、以下にさらに開示するような任意の適宜の相互接続又はインターフェースであってもよく、有線イーサネットネットワーク接続又は他のタイプの有線若しくは無線ネットワークリンクなどのネットワークリンクに限られない。専用/直接の接続/リンクを、ここでは2つのエンドポイント間のエンドツーエンドパスという場合もある。このようなエンドツーエンドパスは、単一の接続/リンクであってもよいし、直列の接続/リンクを含んでいてもよい。ただし、その全体における、すなわち、一方のエンドポイントから他方のエンドポイントへの専用/直接の接続/リンクの帯域幅は、非共有であり、専用/直接の接続/リンクの帯域幅もレイテンシーも、要素が横断していたとしてもそのリソース利用によって影響を受け得ない。例えば、専用/直接の接続/リンクは、その利用に基づく帯域幅又はレイテンシーが影響を与えない1以上のバッファ又は他の要素を横断し得る。ただし、専用/直接の接続/リンクは、共有ネットワークスイッチを横断することはない。なぜなら、そのようなスイッチは、その共有使用に起因して帯域幅及び/又はレイテンシーに影響し得るためである。 It should be understood that each dedicated connection 180 in point-to-point mesh 172 is, in some embodiments, a direct point-to-point connection that does not utilize a shared switch. A dedicated or direct connection may be interchangeably referred to herein as a direct or dedicated "link," which is a direct connection between two endpoints that is dedicated (i.e., non-shared) to communication between them. Such dedicated/direct link may be any suitable interconnect or interface, as further disclosed below, and is limited to network links such as wired Ethernet network connections or other types of wired or wireless network links. I can't do it. A dedicated/direct connection/link may also be referred to herein as an end-to-end path between two endpoints. Such an end-to-end path may be a single connection/link or may include a series of connections/links. However, the bandwidth of the dedicated/direct connection/link in its entirety, i.e. from one endpoint to the other endpoint, is non-shared, and neither the bandwidth nor the latency of the dedicated/direct connection/link Even if an element crosses it, it cannot be affected by its resource usage. For example, a dedicated/direct connection/link may traverse one or more buffers or other elements whose bandwidth or latency is not affected based on its utilization. However, dedicated/direct connections/links do not traverse shared network switches. This is because such switches can impact bandwidth and/or latency due to their shared usage.

例えば、一部の実施形態では、ポイントツーポイントメッシュ172における専用接続180は、10ギガビットイーサネット(GigE)、25GigE、40GigE、100GigE、InfiniBand、Peripheral Component Interconnect-Express(PCIe)、RapidIO、Small Computer System Interface(SCSI)、FireWire、Universal Serial Bus(USB)、High Definition Multimedia Interface(HDMI)又はカスタムのシリアル若しくはパラレルバスなどの多数の態様で提供され得る。したがって、コンピュートエンジン140、ゲートウェイ120、シーケンサ150及び他の構成要素をここでは「ノード」ということもあるが、他のタイプの相互接続又はインターフェースが可能であるため、「コンピュートノード」、「ゲートウェイノード」、「シーケンサノード」又は「メッシュノード」などの用語の使用は、特定の構成要素が必ずネットワークリンクを用いて接続されることを意味するものと解釈されるべきではない。また、ここで開示される「ノード」は、ノードについて前述したそれぞれの機能を実行するように構成された任意の適宜のハードウェアコンポーネント、ソフトウェアコンポーネント、ファームウェアコンポーネント又はそれらの組合せであり得る。以下により詳細に説明するように、ノードは、プログラムされた汎用プロセッサであってもよいが、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)などの専用ハードウェアデバイス、又は他のハードウェアデバイス若しくはデバイス群、ハードウェアデバイス内のロジック、印刷回路基板(PCB)又は他のハードウェアコンポーネントであってもよい。 For example, in some embodiments, dedicated connections 180 in point-to-point mesh 172 include 10 Gigabit Ethernet (GigE), 25GigE, 40GigE, 100GigE, InfiniBand, Peripheral Component Interconnect-Express (PCIe), Rap idIO, Small Computer System Interface (SCSI), FireWire, Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or custom serial or parallel buses. Accordingly, although the compute engine 140, gateway 120, sequencer 150, and other components may be referred to herein as "nodes," other types of interconnections or interfaces are possible; ”, “sequencer node” or “mesh node” should not be construed to mean that the particular components are necessarily connected using network links. Additionally, a "node" as disclosed herein may be any suitable hardware component, software component, firmware component, or combination thereof configured to perform the respective functions described above for a node. As explained in more detail below, a node may be a programmed general-purpose processor, but may also be a specialized hardware device such as a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or other It may be a hardware device or devices, logic within a hardware device, a printed circuit board (PCB), or other hardware component.

ここに開示されるノードは独立した要素であってもよいし、ロジックを実行してここに前述したようなノードの機能を実行するように構成された単一のFPGA、ASIC又は他の要素内などの単一の要素内で相互に集積されていてもよいことが理解されるべきである。また、ノードは、汎用コンピュータ及び/又は上記デバイスのいずれかによって実行されるソフトウェア実行ロジックの実体物であり得る。 The nodes disclosed herein may be independent elements or within a single FPGA, ASIC, or other element configured to execute logic and perform the functions of the nodes as hereinbefore described. It should be understood that they may be integrated together within a single element, such as. A node may also be an entity of software executing logic executed by a general purpose computer and/or any of the above devices.

1以上の共有スイッチを通じてコンピュートエンジン140、ゲートウェイ120及びシーケンサ150などの構成要素を接続する従来のアプローチは、可能な最低レイテンシーを与えない。これらの従来のアプローチはまた、メッセージ通信量が増加した期間において、レイテンシーにおける予測不能なスパイクをもたらしてしまう。 Traditional approaches of connecting components such as compute engine 140, gateway 120, and sequencer 150 through one or more shared switches do not provide the lowest possible latency. These traditional approaches also result in unpredictable spikes in latency during periods of increased message traffic.

例示実施形態では、専用接続180は、各ゲートウェイ120と各シーケンサ150の間、及び各シーケンサ150と各コアコンピュートノード140の間にも直接的に設けられる。またさらに、一部の実施形態では、専用接続180は、例示のシーケンサ150-1が他の各シーケンサ150-2、・・・、150-sに対する専用接続180を有するように、全てのシーケンサの間に設けられる。図1Dには図示していないが、一部の実施形態では、専用接続180はまた、各ゲートウェイ120-1が、図3に関して以下にさらに開示するような他の各ゲートウェイ120-2、・・・、120-gに対する専用接続180を有するように、全てのゲートウェイ120の間に設けられてもよい。同様に、一部の実施形態では、専用接続180はまた、例示のコアコンピュートノード140-1が、図3に関して以下にさらに開示するような他の各コアコンピュートノード140-2、・・・、140-cに対する専用接続180を有するように、全てのコンピュートノード140の間に設けられる。 In the exemplary embodiment, dedicated connections 180 are also provided directly between each gateway 120 and each sequencer 150 and between each sequencer 150 and each core compute node 140. Still further, in some embodiments, the dedicated connections 180 are for all sequencers, such that the example sequencer 150-1 has a dedicated connection 180 for each other sequencer 150-2,..., 150-s. provided in between. Although not shown in FIG. 1D, in some embodiments, the dedicated connection 180 also connects each gateway 120-1 to each other gateway 120-2, as further disclosed below with respect to FIG. , 120-g may be provided between all gateways 120 to have dedicated connections 180 to them. Similarly, in some embodiments, the dedicated connection 180 also connects the example core compute node 140-1 to each other core compute node 140-2, . . . , as further disclosed below with respect to FIG. 140-c is provided between all compute nodes 140 to have a dedicated connection 180 to 140-c.

2つのノード間(例えば、任意の2つのノード120、150又は140の間)の専用接続180は、一部の実施形態では、冗長性及び信頼性の増加のために、それらの同2つのノード間の複数の冗長専用接続として実施されてもよいことも理解されるべきである。例えば、ゲートウェイ120-1とコアコンピュートノード140-1の間の専用接続180-1-1は、実際に一対の専用接続として実施されてもよい。 A dedicated connection 180 between two nodes (e.g., between any two nodes 120, 150, or 140) is, in some embodiments, a dedicated connection 180 between those same two nodes for redundancy and increased reliability. It should also be understood that it may also be implemented as multiple redundant dedicated connections between. For example, dedicated connection 180-1-1 between gateway 120-1 and core compute node 140-1 may actually be implemented as a pair of dedicated connections.

さらに、一部の実施形態によると、ノードによって送出された任意のメッセージは、ポイントツーポイントメッシュ172においてそれに直接接続された全てのノードに並列に送出される。ポイントツーポイントメッシュ172における各ノードは、メッセージの受信に応じて何らかの行動をとるのか、それとも単にメッセージを無視するのかを、例えば、ノードの構成に基づいて、それ自体で決定し得る。一部の実施形態では、ノードは、完全にメッセージを無視しなくてもよい。ノードが、その構成に起因して、メッセージの受信に応じて実質的な行動をとらない場合でも、シーケンサ150によってメッセージに割り当てられたいずれかの順序番号を消費するなど、少なくとも最小限の行動をとるようにしてもよい。すなわち、このような実施形態では、ノードは、ノードがより実質的な行動をメッセージに対してとる場合に適切な順序付け順位でそのようにすることを確実にするために、最後の受信順序番号を追跡してもよい。 Further, according to some embodiments, any message sent by a node is sent in parallel to all nodes directly connected to it in point-to-point mesh 172. Each node in the point-to-point mesh 172 may decide for itself whether to take some action in response to receiving a message or simply ignore the message, based, for example, on the node's configuration. In some embodiments, a node may not ignore the message completely. Even if a node, due to its configuration, takes no substantial action in response to receiving a message, it may take at least a minimal action, such as consuming any sequence number assigned to the message by sequencer 150. You can also take it. That is, in such embodiments, a node may use the last received order number to ensure that if the node takes more substantive action on the message, it does so in the appropriate ordering order. May be tracked.

例えば、「Microsoftを10株、190.00ドルで売る」という取引注文を含むメッセージが、トレーダーのパーソナルコンピュータなどの参加者デバイス130-1から生じ、ゲートウェイ120-1(すなわち、GW1)に到着するものとする。当該メッセージは、コアコンピュートノード140-2のみが現在Microsoft株の注文についてマッチングを実行しているとしても、全てのコアコンピュートノード140-1、140-2、・・・、140-cに送信される。全ての他のコアコンピュートノード140-1、140-3、・・・、140-cは、受信に応じてメッセージを無視し、又はメッセージに最小限の行動のみをとり得る。例えば、140-1、140-3、・・・、140-cによってとられる唯一の行動は、シーケンサ150-1によってメッセージに割り当てられた順序番号を消費することとなり得る。当該メッセージは、単一のシーケンサ(本例では、シーケンサ150-1)が、メッシュにサービスを提供する現在アクティブなシーケンサであってもシーケンサ150-1、150-2、・・・、150-sの全てにも送信される。他のシーケンサ150-2、・・・、150-sもメッセージを受信して、シーケンサ150-1(現在アクティブなシーケンサ)が故障した場合、又は異なるアクティブなシーケンサを移動することによって電子取引システム100の全体的信頼性が増加することになる場合、現在アクティブなシーケンサを引き継ぐ機会をそれらに与える。他のシーケンサの1以上(例えば、シーケンサ150-2)も、ディザスタリカバリサイト155にシステム状態を中継する責任を担う。ディザスタリカバリサイト155は他の物理的位置に電子取引システム100の複製を含んでいてもよく、その複製は電子取引システム100の個々の構成要素の一部又は全部の物理的又は仮想的な実体物を備える。 For example, a message containing a trade order to "Sell 10 shares of Microsoft for $190.00" originates from participant device 130-1, such as a trader's personal computer, and arrives at gateway 120-1 (i.e., GW1). shall be taken as a thing. The message is sent to all core compute nodes 140-1, 140-2, ..., 140-c, even though only core compute node 140-2 is currently performing matching for Microsoft stock orders. Ru. All other core compute nodes 140-1, 140-3,..., 140-c may ignore the message or take only minimal action on the message upon receipt. For example, the only action taken by 140-1, 140-3,..., 140-c may be to consume the sequence number assigned to the message by sequencer 150-1. The message is sent to sequencers 150-1, 150-2, ..., 150-s even if a single sequencer (in this example, sequencer 150-1) is the currently active sequencer serving the mesh. It will also be sent to all. The other sequencers 150-2, ..., 150-s also receive the message and if sequencer 150-1 (currently active sequencer) fails or by moving a different active sequencer, electronic trading system 100. Give them an opportunity to take over the currently active sequencer if the overall reliability of the sequencer is to increase. One or more of the other sequencers (eg, sequencer 150-2) are also responsible for relaying system state to the disaster recovery site 155. Disaster recovery site 155 may include a replica of electronic trading system 100 at another physical location, which replica may be a physical or virtual entity of some or all of the individual components of electronic trading system 100. Equipped with

各メッセージを全ての直接接続されたノードに並列に送出することによって、電子取引システム100は、複雑さを減少させ、さらに冗長性及び高可用性を促進する。全ての直接接続されたノードがデフォルト設定で全てのメッセージを受信する場合、複数のノードは同じメッセージに対して冗長的な態様で行動をとるように構成され得る。「Microsoftを10株、190.00ドルで売る」という注文の上記例に戻ると、一部の実施形態では、複数のコアコンピュートノード140が、Microsoft株の注文についてのマッチングを同時に実行し得る。例えば、コアコンピュートノード140-1及びコアコンピュートノード140-2の双方が、Microsoft株メッセージについてのマッチングを同時に行うことになり、当該「売り」注文の着信メッセージを受信した後、コアコンピュートノード140-1及びコアコンピュートノード140-2の各々がシーケンサ150を通じてゲートウェイ120に送信して1以上の参加者デバイス130に渡される承認又は実行メッセージなどの応答メッセージを各々独立して生成し得る。 By sending each message to all directly connected nodes in parallel, electronic trading system 100 reduces complexity and further promotes redundancy and high availability. If all directly connected nodes receive all messages by default, multiple nodes may be configured to act on the same message in a redundant manner. Returning to the above example of the order to "sell 10 shares of Microsoft for $190.00," in some embodiments, multiple core compute nodes 140 may concurrently perform matching for orders of Microsoft stock. For example, both core compute node 140-1 and core compute node 140-2 will perform matching on Microsoft stock messages at the same time, and after receiving the incoming message for the "sell" order, core compute node 140- 1 and core compute node 140-2 may each independently generate a response message, such as an approval or execution message, that is transmitted to gateway 120 through sequencer 150 and passed to one or more participant devices 130.

シーケンサ150によって保証される厳密な順位付け及び状態確定性のために、コアコンピュートノード140-1及び140-2によって独立して生成されてそこから送信された関連する応答メッセージの各々が、実質的にかつ機能的に同等となることが保証可能となる。したがって、電子取引システム100のアーキテクチャはメッセージの冗長な処理を直ちにサポートするので、システムの可用性及び復元性が増加する。このような実施形態では、ゲートウェイ120は、同じ対応する着信メッセージに対してコアコンピュートノード140から複数の関連する発信メッセージを受信し得る。これら複数の関連する応答メッセージが同等となることが保証可能であるということに起因して、ゲートウェイ120は、単に最初に受信した発信メッセージのみを処理すればよく、同じ着信メッセージに対応する後続の関連する発信メッセージを無視する。一部の実施形態では、「最初の」及び「後続の」メッセージは、当該メッセージは順序マーク付きメッセージであり得るため、それらの関連する順序番号によって識別され得る。しかし、シーケンサ150が複数の機能的に同等なメッセージの間で単一の順序識別子を割り当てるものなど、他の実施形態では、メッセージは、図1Eに関連してさらに上述したように、エンティティタイプフィールド110-16及びエンティティカウントフィールド110-17における値など、メッセージにおける他の識別情報に基づいて機能的に同等であるものとして識別され得る。 Because of the strict ranking and state determinism guaranteed by sequencer 150, each of the associated response messages independently generated by and transmitted from core compute nodes 140-1 and 140-2 is substantially It is possible to guarantee that the two products are functionally equivalent. Thus, the architecture of electronic trading system 100 readily supports redundant processing of messages, thereby increasing system availability and resiliency. In such embodiments, gateway 120 may receive multiple related outgoing messages from core compute node 140 for the same corresponding incoming message. Due to the fact that these multiple related response messages can be guaranteed to be equivalent, the gateway 120 need only process the first received outgoing message and not the subsequent one that corresponds to the same incoming message. Ignore related outgoing messages. In some embodiments, the "first" and "subsequent" messages may be identified by their associated order numbers, as the messages may be order marked messages. However, in other embodiments, such as those in which sequencer 150 assigns a single ordering identifier among multiple functionally equivalent messages, the messages may have an entity type field, as described further above in connection with FIG. 1E. 110-16 and as functionally equivalent based on other identifying information in the message, such as the values in the entity count field 110-17.

したがって、ゲートウェイ120が複数の機能的に同等な関連する応答メッセージのうちの最初にそれらに到着するものに対して行動をとることを可能とすることは、電子取引システム100のレイテンシー全体を改善することにもなり得る。またさらに、電子取引システム100は、任意の着信メッセージが複数のコンピュートノード140によって処理されるように容易に構成可能であり、複数のコンピュートノード140の各々は先着順にゲートウェイ120によって処理され得る同等な応答メッセージを生成する。そのようなアーキテクチャは、コンピュートノード140が(システム故障、ノード再構成又は保守作業に起因するかにかかわらず)所定期間にわたって着信メッセージを取り扱っていない場合に、レイテンシーに知覚可能な影響を与えることなく高い可用性に供する。 Therefore, allowing gateway 120 to take action on the first of multiple functionally equivalent related response messages to arrive improves the overall latency of electronic trading system 100. It could also happen. Still further, electronic trading system 100 is easily configurable such that any incoming message is processed by multiple compute nodes 140, each of which has an equivalent Generate a response message. Such an architecture allows compute nodes 140 to handle incoming messages for a period of time (whether due to system failure, node reconfiguration, or maintenance activities) without appreciable impact on latency. Provide high availability.

このような電子取引システム100のポイントツーポイントメッシュ172のアーキテクチャは、低い予測可能なレイテンシー及びメッセージの冗長処理を維持することに加えて、複数の内蔵冗長パスにも供するものである。図から分かるように、任意のゲートウェイ120と任意のコンピュートノード140の間には複数のパスが存在する。ゲートウェイ120-1とコンピュートノード140-1の間の直接接続180-1-1が利用不能となった場合でも、通信は、代わりにシーケンサ150の1つを横断することによるなどして、代替のパスを介してこれら2つの要素間で依然として可能である。したがって、より一般的には、ポイントツーポイントメッシュ172では、任意のノードと任意の他のノードの間に複数のパスが存在する。 The point-to-point mesh 172 architecture of such an electronic trading system 100, in addition to maintaining low predictable latency and redundant processing of messages, also provides for multiple built-in redundant paths. As can be seen, multiple paths exist between any gateway 120 and any compute node 140. If the direct connection 180-1-1 between the gateway 120-1 and the compute node 140-1 becomes unavailable, communications can still be made via an alternative connection, such as by traversing one of the sequencers 150 instead. It is still possible between these two elements via a path. Thus, more generally, in point-to-point mesh 172, multiple paths exist between any node and any other node.

またさらに、このポイントツーポイントメッシュアーキテクチャは、金融取引システムの他の重要な目標、すなわち、公平性を本来的に維持する。ノード間の直接接続を有するポイントツーポイントアーキテクチャは、任意のゲートウェイ120と任意のコアコンピュートノード140の間又はシーケンサ150と任意の他のノードの間のパスが同一の又は少なくとも非常に近似するレイテンシーを有することを確実にする。したがって、2つの異なるゲートウェイ120から同時にシーケンサ150に送出される2つの着信メッセージは、実質的に同時にシーケンサ150に到着するはずである。同様に、コアコンピュートノード140から送信される発信メッセージは、全てのゲートウェイ120に同時に送信され、実質的に同時に各ゲートウェイによって受信されるはずである。ポイントツーポイントメッシュのトポロジーはいずれか1つのゲートウェイ120を選好しないため、特定のゲートウェイ120に接続されることが参加者デバイス130に不公平な優劣を与え得る機会が最小化される。 Still further, this point-to-point mesh architecture inherently maintains another important goal of financial trading systems: fairness. A point-to-point architecture with direct connections between nodes ensures that the paths between any gateway 120 and any core compute node 140 or sequencer 150 and any other node have identical or at least very similar latencies. Ensure that you have the following. Therefore, two incoming messages sent to sequencer 150 from two different gateways 120 at the same time should arrive at sequencer 150 at substantially the same time. Similarly, outgoing messages sent from core compute node 140 should be sent to all gateways 120 simultaneously and received by each gateway at substantially the same time. Because the point-to-point mesh topology does not favor any one gateway 120, the chance that being connected to a particular gateway 120 could give a participant device 130 an unfair advantage is minimized.

さらに、電子取引システム100のポイントツーポイントメッシュアーキテクチャは、ノードの機能、すなわち、ノードが現在ゲートウェイ120、コアコンピュートノード140又はシーケンサ150として作用しているかを容易に再構成することを可能とする。各ノードがそれ自体とポイントツーポイントメッシュにおける他の各ノードとの間の直接接続を有する実施形態においてそのような再構成を実行することは、特に容易である。各ノードがメッシュにおける他の各ノードに直接接続を介して接続される場合、メッシュ内でのノードの機能の変更(例えば、ノードの機能をコアコンピュートノード140からゲートウェイ120に、又はゲートウェイ120からシーケンサ150に変更すること)のために、ポイントツーポイントメッシュ172内の接続180(物理的か仮想的かにかかわらず)の配線又はケーブルの引き直しが必要となる。このような実施形態では、ポイントツーポイントメッシュ172の内部的に必要な再構成は、遠隔で実行される構成変更を通じて容易に実現され得る。ノードが新たなゲートウェイ120として作用するように再構成され、又はゲートウェイ120として作用することから他の機能に再構成される場合、ポイントツーポイントメッシュ172の外部的に幾らかの付随的なネットワーキング変更が必要となり得るが、メッシュの内部的な配線はそのままであってもよい。 Additionally, the point-to-point mesh architecture of electronic trading system 100 allows for easy reconfiguration of a node's functionality, ie, whether the node is currently acting as a gateway 120, core compute node 140, or sequencer 150. It is particularly easy to perform such reconfiguration in embodiments where each node has a direct connection between itself and each other node in the point-to-point mesh. If each node is connected to each other node in the mesh via a direct connection, changing the functionality of the node within the mesh (e.g., changing the functionality of the node from the core compute node 140 to the gateway 120 or from the gateway 120 to the sequencer) 150) requires rewiring or recabling of the connections 180 (whether physical or virtual) within the point-to-point mesh 172. In such embodiments, any necessary internal reconfiguration of point-to-point mesh 172 may be easily accomplished through remotely performed configuration changes. When a node is reconfigured to act as a new gateway 120 or from acting as a gateway 120 to other functions, some incidental networking changes external to point-to-point mesh 172 occur. may be required, but the internal wiring of the mesh may be left as is.

したがって、一部の実施形態では、ノードの機能の再構成は、取引時間中にライブで、さらには動的に実現され得る。例えば、電子取引システム100の負荷の特性の変化又は新たな要求に起因して、コアコンピュートノード140-1を代わりに追加のゲートウェイ120として作用するように再構成することが有用となる場合がある。他のコンピュートノード140への状態又は構成の幾つかの可能な再分散後に、新たなゲートウェイ120が利用可能となり、参加者デバイス130からの新たな接続を受け入れ始めることになる。 Thus, in some embodiments, reconfiguration of a node's functionality may be accomplished live, even dynamically, during trading hours. For example, due to changing load characteristics or new demands on electronic trading system 100, it may be useful to reconfigure core compute node 140-1 to act as an additional gateway 120 instead. . After some possible redistribution of state or configuration to other compute nodes 140, a new gateway 120 becomes available and will begin accepting new connections from participant devices 130.

一部の実施形態では、より低速で潜在的により高遅延の共有接続182が、ゲートウェイ120及び/又はコアコンピュートノード140の間など、システム構成要素の間に設けられてもよい。これらの共有接続182は、図1B-2に関して以上に開示したメッセージ106及び応答107などの、ポイントツーポイントメッシュ172における専用接続180を介して実行される取引アクティビティに関連するメッセージとは対照的に、非常に低遅延の通信を必要としない保守、管制作業、管理作業及び/又は同様の作業に使用され得る。取引アクティビティに関連するトラフィックを搬送する第1の直接接続180-a、第2の直接接続180-b及び第3の直接接続180-cとは対照的に、共有接続182g及び182cは非取引アクティビティタイプのトラフィックを搬送する。非取引トラフィックを搬送する共有接続182は、1以上の共有ネットワークを介し、かつ1以上のネットワークスイッチを介するものであってもよく、メッシュにおけるノードは異なる態様でこれらの共有ネットワーク間で分散されてもよい。例えば、一部の実施形態では、ゲートウェイ120は全てゲートウェイ全域共有ネットワーク182-g内にあり、コンピュートノード140はそれら自体のそれぞれのコンピュートノード全域共有ネットワーク182-c内にあり、シーケンサ150はそれら自体の別個のシーケンサ全域共有ネットワーク182-s内にあり得るが、他の実施形態では、メッシュ内の全てのノードはそれらのレイテンシーに影響を受けない作業のための同じ共有ネットワークを介して通信し得る。 In some embodiments, slower and potentially higher latency shared connections 182 may be provided between system components, such as between gateway 120 and/or core compute node 140. These shared connections 182 are in contrast to messages related to trading activities performed over dedicated connections 180 in point-to-point mesh 172, such as messages 106 and responses 107 disclosed above with respect to FIG. 1B-2. , for maintenance, control operations, administrative operations, and/or similar operations that do not require very low-latency communications. In contrast to first direct connection 180-a, second direct connection 180-b, and third direct connection 180-c, which carry traffic related to trading activity, shared connections 182g and 182c carry traffic related to non-trading activity. carries type of traffic. Shared connections 182 carrying non-transaction traffic may be through one or more shared networks and through one or more network switches, and the nodes in the mesh may be distributed among these shared networks in different ways. Good too. For example, in some embodiments, the gateways 120 are all in the gateway-wide shared network 182-g, the compute nodes 140 are in their own respective compute node-wide shared network 182-c, and the sequencers 150 are in their own may be in separate sequencer-wide shared networks 182-s, but in other embodiments, all nodes in the mesh may communicate via the same shared network for their latency-insensitive work. .

電子取引システム100などの分散コンピューティング環境は、種々の構成要素の間で緊密な同期を維持するように高分解能クロックに従うことがある。この目的のため、ノード120、140、150のうちの1以上には、一部の実施形態では、高分解能の全地球測位システム(GPS)クロック195などのクロックへのアクセスが与えられてもよい。以下の記載の目的のため、ポイントツーポイントメッシュ172に接続されたゲートウェイ120、コンピュートノード140及びシーケンサ150を「メッシュノード」といい、それらは図2に関して以下にさらに開示するようなアーキテクチャを有し得る。 Distributed computing environments, such as electronic trading system 100, may follow high-resolution clocks to maintain tight synchronization among the various components. To this end, one or more of the nodes 120, 140, 150 may be provided with access to a clock, such as a high-resolution Global Positioning System (GPS) clock 195, in some embodiments. . For purposes of the following description, gateways 120, compute nodes 140, and sequencers 150 connected to point-to-point mesh 172 are referred to as "mesh nodes" and have an architecture as further disclosed below with respect to FIG. obtain.

図1Fは、電子取引システム100によって実行されてメッセージを処理し得る処理125の例示実施形態のフロー図である。図1B-2を参照すると、ゲートウェイ120-1は参加者デバイスからメッセージを受信し(131)、これに対して、メッセージ106をシーケンサ150-1及びコンピュートノード140-1に送信し得る(132)。ゲートウェイ120-1はメッセージ106におけるゲートウェイ120-1によって生成される識別子を任意選択的に含んでいてもよく、複数のコンピュートノード及び/又はシーケンサを備える電子取引システムにおいて、ゲートウェイ120-1はメッセージ106を全ての当該ノードに送信し得る。コンピュートノード140-1は、メッセージ106の受信に応じて、まず、メッセージ106はコンピュートノード140-1が処理に対して割り当てたものなのか否かを判定し、メッセージ106の1以上の値又は識別子(例えば、所与の金融商品を表す銘柄記号又はトランザクションのタイプなどの共通パラメータの値)に基づいてこの判定を行ってもよい。メッセージ106が処理に割り当てられたものである場合には、コンピュートノード140-1はメッセージ106に前処理を実行して(134)予備結果を生成し得る。例えば、コンピュートノード140-1は、メッセージ106において参照される値に関連する情報(例えば、金融商品の銘柄記号)をメモリに読み込んでもよい。代替的又は追加的に、一部の実施形態では、前処理は、非限定的な例として、承認メッセージ又は実行メッセージを含む応答メッセージを生成すること、メッセージ106において参照される値(例えば、金融商品についての銘柄記号)に対する注文控え帳の予備更新を行うことなど、マッチング機能を実行することを含み得る。このような前処理は、それが有害な副作用を有さないように行われてもよいし、又は必要に応じて、前処理が実行されたメッセージが順通りには受信されなかったことが後に判定される場合にアトミックに(すなわち、トランザクション毎に)「ロールバック」されてもよい。 FIG. 1F is a flow diagram of an exemplary embodiment of a process 125 that may be performed by electronic trading system 100 to process messages. Referring to FIG. 1B-2, gateway 120-1 may receive a message from a participant device (131) and in response may send message 106 to sequencer 150-1 and compute node 140-1 (132). . Gateway 120-1 may optionally include an identifier generated by gateway 120-1 in message 106; in an electronic trading system with multiple compute nodes and/or sequencers, gateway 120-1 may include an identifier generated by gateway 120-1 in message may be sent to all such nodes. In response to receiving the message 106, the compute node 140-1 first determines whether the message 106 has been assigned for processing by the compute node 140-1, and identifies one or more values or identifiers of the message 106. This determination may be made based on the value of a common parameter (e.g., the stock symbol representing a given financial instrument or the type of transaction). If the message 106 is assigned for processing, the compute node 140-1 may perform preprocessing on the message 106 (134) to generate preliminary results. For example, compute node 140-1 may read into memory information related to the value referenced in message 106 (eg, a stock symbol for a financial instrument). Alternatively or additionally, in some embodiments, pre-processing includes, by way of non-limiting example, generating a response message, including an authorization message or an execution message, the values referenced in message 106 (e.g., financial This may include performing matching functions, such as performing a preliminary update of an order book for a product (stock symbol). Such preprocessing may be performed so that it has no harmful side effects, or if necessary, if the message on which the preprocessing was performed was received out of order. It may be "rolled back" atomically (ie, on a transaction-by-transaction basis) when determined.

同時に、シーケンサ150-1は、例えば、所与の順位(すなわち、順序)で処理される必要があり得る一連のメッセージ内でメッセージ106の位置が識別されることを可能とする固有順序識別子にメッセージ106を関連付けること(133)によってメッセージ106を順序付けて、メッセージ106の順序マーク付きバージョン、すなわち、順序マーク付きメッセージ106´を生成し得る。完了すると、シーケンサ150-1は、メッセージ106(又はその表示)及び順序識別子を含む順序マーク付きメッセージ106´をコンピュートノード140-1に送信してもよい(135)。コンピュートノード140-1が順序マーク付きメッセージ106´を受信すると、それは、一部の実施形態では、それがその前処理を実行した(順序付けなし)メッセージ106が順通りに受信されたか否かを判定し、すなわち、順序を検証し得る(136)。順序を検証することの一部として、コンピュートノード140-1は、両バージョンのメッセージにおける共通のメタデータ又は共通の識別情報によってメッセージ106を順序マーク付きメッセージ106´に相関付けてもよい。例示実施形態の処理125において、メッセージ106は順通りに受信されており、コンピュートノード140-1はメッセージ106を処理するステップを継続すること(137)に進むことができる。前処理の結果として、コンピュートノード140-1は、順序マーク付きメッセージ106´を受信した後に実行していたことになる幾つかの動作(例えば、値のキャッシュメモリ参照)を既に完了しており、それにより、コンピュートノード140-1は、前処理動作がなかったとした場合に完了するよりも早くメッセージ106を処理するステップを完了し得る。 At the same time, sequencer 150-1 assigns messages to unique order identifiers that allow, for example, the position of message 106 to be identified within a series of messages that may need to be processed in a given order (i.e., order). Messages 106 may be ordered by associating (133) 106 to produce an order-marked version of message 106, ie, order-marked message 106'. Once complete, sequencer 150-1 may send an order-marked message 106' containing message 106 (or an indication thereof) and an order identifier to compute node 140-1 (135). When compute node 140-1 receives an order-marked message 106', it determines, in some embodiments, whether the (unordered) message 106 on which it performed preprocessing was received in order. ie, the order may be verified (136). As part of verifying order, compute node 140-1 may correlate message 106 to order-marked message 106' with common metadata or common identification information in both versions of the message. In process 125 of the exemplary embodiment, message 106 has been received in order and compute node 140-1 can proceed to continue processing message 106 (137). As a result of the pre-processing, the compute node 140-1 has already completed some operations (e.g., cache memory lookup of the value) that it would have performed after receiving the order-marked message 106'; Thereby, compute node 140-1 may complete the steps of processing message 106 sooner than it would have completed in the absence of the preprocessing operations.

図1Gは、電子取引システムの動作の他の例示実施形態を示す処理165の例示実施形態のフロー図である。処理165は、電子取引システム100によって実行されてメッセージを処理し得る。図1Gの実施形態では、電子取引システム100は、少なくとも第2のゲートウェイであるゲートウェイ120-2を含む。図1B-2を参照すると、ゲートウェイ120-1は、第1のメッセージ(M1)を参加者デバイスから受信し(166)、これに対して、第1のメッセージM1に対応するメッセージ106をシーケンサ150-1及びコンピュートノード140-1に送信し得る(167)。メッセージ106を第1のメッセージM1ともいう場合があるが、ゲートウェイがそのメッセージを、非限定的な例として、ゲートウェイ120-1の識別子など異なるメタデータを含むように修正している場合があるため、メッセージ106はM1と同一ではない場合があることが理解されるべきである。ゲートウェイ120-2は、第2のメッセージ(M2)を他の参加者デバイスから受信し(168)、第2のメッセージM2に対応するメッセージをシーケンサ150-1及びコンピュートノード140-1に送信し得る(169)。第2のメッセージM2に対応するメッセージを、ここでは第2のメッセージM2という場合もある。本例では、第1及び第2のメッセージは共通の一連のメッセージに属し、それにより、第1及び第2のメッセージが処理される相対順位(すなわち、順序)が電子取引システム100の状態に影響を与え得る。図1Gの例示実施形態では、コンピュートノード140-1は第1のメッセージを受信する前に第2のメッセージを受信し、第2のメッセージはコンピュートノード140-1が処理に割り当てたものであると確認すると、その後にコンピュートノード140-1はメッセージに対して前処理を実行し得る(171)。第1のメッセージ(M1)を受信すると、コンピュートノード140-1は、第1のメッセージ(M1)に対しても前処理を実行し得る(173)。 FIG. 1G is a flow diagram of an example embodiment of process 165 illustrating another example embodiment of the operation of an electronic trading system. Process 165 may be performed by electronic trading system 100 to process the message. In the embodiment of FIG. 1G, electronic trading system 100 includes at least a second gateway, gateway 120-2. Referring to FIG. 1B-2, gateway 120-1 receives (166) a first message (M1) from a participant device and in response sends message 106 corresponding to first message M1 to sequencer 150. -1 and compute node 140-1 (167). Message 106 may also be referred to as first message M1, since the gateway may have modified the message to include different metadata, such as, by way of non-limiting example, an identifier for gateway 120-1. , it should be understood that message 106 may not be the same as M1. Gateway 120-2 may receive (168) a second message (M2) from other participant devices and send a message corresponding to second message M2 to sequencer 150-1 and compute node 140-1. (169). The message corresponding to the second message M2 may also be referred to as second message M2 here. In this example, the first and second messages belong to a common set of messages such that the relative ranking (i.e., order) in which the first and second messages are processed affects the state of electronic trading system 100. can be given. In the exemplary embodiment of FIG. 1G, compute node 140-1 receives a second message before receiving the first message, and the second message is one that compute node 140-1 has assigned for processing. Once confirmed, compute node 140-1 may then perform pre-processing on the message (171). Upon receiving the first message (M1), compute node 140-1 may also perform preprocessing on the first message (M1) (173).

シーケンサ150-1は、第1及び第2のメッセージの双方を受信し得る。そして、シーケンサ150-1は、第1及び第2のメッセージの各々に、第1及び第2のメッセージの相対順位付け、すなわち、順序を決定するのに使用され得るそれぞれの固有順序識別子を割り当て得る(170、174)。一部の実施形態では、シーケンサによってメッセージに割り当てられる順序識別子は、非限定的な例として単調増加する順序番号であり得る。またさらに、一部の実施形態では、シーケンサによってメッセージに割り当てられる順序識別子の値は、シーケンサ150-1におけるメッセージの到着時刻に基づいていてもよい。すなわち、一部の実施形態では、非限定的な例として、メッセージは、それらがシーケンサ150-1によって受信される毎に先入先出(FIFO)キューに入れられ、それらがFIFOキューから除去される毎に順序識別子を割り当てられる。図1Gの例示実施形態では、シーケンサ150-1においてメッセージM1はメッセージM2よりも先に受信されているので、順序識別子が単調増加する順序番号である実施形態では、シーケンサ150-1によって、メッセージM1は、メッセージM2に割り当てられた他方の順序番号に相対してより低い順序番号を割り当てられることになる。順序識別子を各メッセージに割り当てる処理が完了すると、シーケンサ150-1は、第1及び第2のメッセージ又はそれらの表示に対応するマーク付きメッセージ(すなわち、順序識別子を含むメッセージ)をコンピュートノード140-1に送信し得る(175、177)。一部の実施形態では、コンピュートノード140-1がマーク付きメッセージを受信すると、それがその前処理を実行した(順序付けなし)メッセージ106が順通りに受信されたか否かを判定し、すなわち、順序を検証し得る(176)。順序を検証することの一部として、コンピュートノード140-1は、両バージョンのメッセージにおける共通のメタデータ又は共通の識別情報によって順序付けなしメッセージ106を順序マーク付きメッセージ106´に相関付けてもよい。処理165において、コンピュートノード140-1は、第2のメッセージを順通りには受信されていない。この結果において、前処理(例えば、非限定的な例として、メッセージの共通パラメータの値についてのキャッシュ参照)の成果物の一部又は全部は、任意選択的に破棄されてもよく、又は他のタイプの前処理についてはアトミックロールバックされてもよい。そして、コンピュートノード140-1は、第1及び第2のメッセージの双方をシーケンサ150-1によって示されるように順位(すなわち、順序)通りに処理すること(178)に進み得る。 Sequencer 150-1 may receive both the first and second messages. The sequencer 150-1 may then assign each of the first and second messages a respective unique ordering identifier that may be used to determine the relative ranking, or order, of the first and second messages. (170, 174). In some embodiments, a sequence identifier assigned to a message by a sequencer may be a monotonically increasing sequence number, as a non-limiting example. Still further, in some embodiments, the value of the ordering identifier assigned to a message by the sequencer may be based on the time of arrival of the message at sequencer 150-1. That is, in some embodiments, as a non-limiting example, messages are placed in a first-in-first-out (FIFO) queue as they are received by sequencer 150-1, and they are removed from the FIFO queue. An ordering identifier is assigned to each item. In the exemplary embodiment of FIG. 1G, message M1 was received earlier than message M2 at sequencer 150-1, so in embodiments where the sequence identifier is a monotonically increasing sequence number, sequencer 150-1 will be assigned a lower sequence number relative to the other sequence number assigned to message M2. Once the process of assigning an ordering identifier to each message is complete, the sequencer 150-1 sends the marked messages (i.e., messages containing the ordering identifier) corresponding to the first and second messages or representations thereof to the compute node 140-1. (175, 177). In some embodiments, when compute node 140-1 receives a marked message, it determines whether the preprocessed (unordered) message 106 was received in order, i.e., in order. may be verified (176). As part of verifying order, compute node 140-1 may correlate unordered message 106 to order-marked message 106' with common metadata or common identification information in both versions of the message. In operation 165, compute node 140-1 receives the second message out of order. In this result, some or all of the artifacts of preprocessing (e.g., cache lookups for values of common parameters of messages, as a non-limiting example) may optionally be discarded, or other Type preprocessing may be atomically rolled back. Compute node 140-1 may then proceed to process (178) both the first and second messages in order (ie, order) as indicated by sequencer 150-1.

順序付けなしメッセージがコンピュートノード140-1において順通りには受信されなかったことが判定された場合でも、ノード140-1は前処理をメッセージに行うことから依然として利益を受けることになる。メッセージを前処理することによって、コンピュートノード140-1は、このメッセージを将来処理する必要がありそうであると判定しており、これにより、時間を節約する先手の行動をとることができる。例えば、同じ株式表示記号に対する現在の未決済取引注文についての情報など、メッセージを完全に処理するのに必要となる情報は、メッセージが完全に処理可能となる前により高速側メモリ(例えば、図2に示す固定ロジックメモリ250などのFPGAメモリ、又は他のキャッシュメモリ)に存在している必要があり、高速側メモリに未だ存在していない場合には、低速側メモリ(例えば、ハードディスク、又は図2に示すDRAM280などのDRAM)からの取得が最初に必要となり得る。最近参照されていないメッセージの株式表示記号などの共通パラメータの値について、この情報は現在高速側メモリに存在ない場合もあるが、コンピュートノード140-1は、順序通りでないメッセージの場合であっても予めメモリコピー動作を実行し、それにより、順序付きメッセージが適切な順位(すなわち、順序)でその後に速やかに到着する場合に時間を節約することができる。高速側メモリが複数の値に対して情報を保持するのに充分に大容量であることを条件として、コンピュートノードが予め多数の値に対して情報をプリフェッチすることを可能とすることによって、複数の連続する順通りでないメッセージの列を受信することさえも有益となり得る。したがって、コンピュートノード140-1は、前処理動作の結果を無視するのではなく、その結果を後の処理動作中の参照のために一時的に保存してもよい。 Even if it is determined that the unordered message was received out of order at compute node 140-1, node 140-1 will still benefit from performing pre-processing on the message. By pre-processing the message, compute node 140-1 has determined that this message will likely need to be processed in the future, thereby allowing it to take proactive action to save time. Information needed to fully process a message, such as information about current open trade orders for the same stock symbol, is transferred to faster side memory (e.g., Figure 2) before the message can be fully processed. FPGA memory, such as fixed logic memory 250 shown in FIG. (such as DRAM 280 shown in FIG. Although this information may not currently exist in high-speed memory for the value of a common parameter, such as a stock ticker, for messages that have not been recently referenced, compute node 140-1 can The memory copy operation can be performed in advance, thereby saving time if the ordered messages arrive quickly afterwards in the proper order (ie, order). By allowing a compute node to prefetch information for a large number of values in advance, provided that the fast-side memory is large enough to hold the information for multiple values, It may even be beneficial to receive a series of consecutive out-of-order messages. Therefore, rather than ignoring the results of pre-processing operations, compute node 140-1 may temporarily store the results for reference during later processing operations.

一部の例示実施形態では、コンピュートノードによる前処理の成果物は、順序順位付けに従わないインスタンスにおいては依然として有効であり得る。例えば、各コンピューティングノードが、メッセージの共通パラメータの値の一部の組(例えば、限定的な数の株式表示記号、又は金融商品の他のインジケータ)など、動作の一部の組を取り扱う実施形態では、コンピューティングノードは、それが取り扱わない他の株式表示記号を参照するメッセージを依然として受信し得るが、順序の順位は、コンピューティングノードが取り扱う値にそれが影響を与える限りにおいてのみ、コンピュートノードに関連し得る。また、異なる値を参照するメッセージの順位付けは、相互から独立しているものとみなされ得る。例えば、メッセージが、異なる値の株式表示記号を参照する他のメッセージに相対して順通りに受信されない場合、これら2つのメッセージが処理される順序はマッチング機能動作の結果に影響することはなく、前処理に関する更なる行動(例えば、ロールバック)は必要とならず、前処理された結果は、最終的には修正なしに使用され及び/又は分散システムの状態に拘束され得る。 In some example embodiments, the artifacts of preprocessing by a compute node may still be valid in instances that do not follow order ranking. For example, an implementation in which each computing node handles some set of operations, such as some set of values for a common parameter of a message (e.g., a limited number of stock tickers or other indicators of a financial instrument). In this case, a computing node may still receive messages that refer to other stock symbols that it does not handle, but the ranking of the ordering changes only insofar as it affects the values that the computing node handles. Can be related to nodes. Also, the ranking of messages referencing different values may be considered independent of each other. For example, if messages are received out of order relative to other messages that refer to stock symbols of different values, the order in which these two messages are processed will not affect the result of the matching function operation; No further action regarding preprocessing (eg, rollback) is required, and the preprocessed results may ultimately be used without modification and/or bound to the state of the distributed system.

一部の実施形態では、順序を検証すること(図1Fの136及び図1Gの176)は、コンピュートノード140-1によって実行される前処理の性質によっては必要でない場合もあることが理解されるべきである。例えば、順序付けなしメッセージに対して実行される前処理が有害な副作用を有さず、他のメッセージの処理(例えば、メッセージにおいて参照される銘柄記号に関連するデータを高速側のメモリに読み込むこと)の結果に影響することがない場合には、順序付けなしメッセージの前処理がシーケンサ150-1によって決定される順序に応じて行われたことを検証する必要はない場合があり、確かに前処理の結果を破棄又はアトミックロールバックする必要がない場合もある。このような実施形態では、コンピュートノード140-1は、単にその後に、前処理された結果を利用する間は常に、順序マーク付きメッセージ106´において順序識別子によって指定された順序の順位で、順序マーク付きメッセージ106´を受信したことに応じてメッセージの処理を完了し得る。 It is understood that in some embodiments, verifying the order (136 in FIG. 1F and 176 in FIG. 1G) may not be necessary depending on the nature of the pre-processing performed by compute node 140-1. Should. For example, preprocessing performed on an unordered message has no harmful side effects and processing of other messages (e.g., loading data related to stock symbols referenced in the message into memory on the fast side) It may not be necessary to verify that the preprocessing of unordered messages was performed according to the order determined by sequencer 150-1, and certainly the preprocessing There may be no need to discard or atomically roll back the results. In such embodiments, the compute node 140-1 simply subsequently marks the order mark at the order rank specified by the order identifier in the order marked message 106' whenever utilizing the preprocessed results. Processing of the message may be completed in response to receiving the attached message 106'.

順序付けなしメッセージについて行われ得る前処理の量、及びその前処理の結果が破棄又はロールバックされる必要があるか否かは、図1Eの実施形態に係るメッセージタイプフィールド110-1、銘柄記号フィールド110-2、サイドフィールド110-3又は価格フィールド110-4など、メッセージにおけるフィールドに応じていてもよい。それは、同じ株式表示記号など、メッセージにおける共通パラメータに対する同じ値を参照する他の順序付けなしメッセージが現在未処理である(すなわち、それに対して対応する順序マーク付きメッセージが未だ受信されていない)か否かに応じてもよい。 The amount of preprocessing that may be done on an unordered message, and whether the results of that preprocessing need to be discarded or rolled back, is determined by the message type field 110-1, stock symbol field, according to the embodiment of FIG. 1E. 110-2, side field 110-3, or price field 110-4. It determines whether other unordered messages that refer to the same value for a common parameter in the message, such as the same stock ticker, are currently outstanding (i.e., for which a corresponding order-marked message has not yet been received). You may choose to do so.

例えば、「新規注文」のメッセージタイプを有する順序付けなしメッセージがコアコンピュートノード140-1によって受信された場合、コアコンピュートノード140-1は注文控え帳の関連部分に関連する銘柄記号情報を高速メモリに読み込み、その新規注文が注文控え帳において未決済注文に対して一致するものである場合、コンピュートノード140-1は、それにより「約定」メッセージを生成し始めるが、当該メッセージの順序付きバージョンを受信するまで、注文控え帳の更新を確約すること及び「約定」メッセージを送出することを控えることになる。ただし、コンピュートノード140-1が、注文控え帳における同じ未決済注文に対する潜在的な一致ともなるような、同じ株式表示記号、サイド、価格などを参照する他の未処理の順序付けなし「新規注文」メッセージも受信している場合、コアコンピュートノード140-1はその前処理を異なる態様で実行してもよい。一部の実施形態では、コアコンピュートノード140-1は、未決済注文に対して一致として作用し得る2つの未処理の順序付けなし「新規注文」メッセージの各々について、競合する潜在的な「約定」メッセージを生成し得る。メッセージの順序付きバージョンに基づいて、潜在的な「約定」メッセージの1つが破棄されてもよく、他方は注文控え帳に確約されてゲートウェイ120に送出されることになる。他の実施形態では、2以上の可能性ある未処理の順序付けなしメッセージが潜在的に同じ未決済注文に一致し得る場合、コンピュートノード140-1は、破棄若しくはロールバックされる必要があるいずれの前処理も実行せず(例えば、いずれの潜在的な「約定」メッセージも作成せず)又はこれらの未処理の順序付けなしメッセージについてのいずれの当該前処理も中止若しくは中断し得る。 For example, if an unordered message with a message type of "new order" is received by core compute node 140-1, core compute node 140-1 stores stock symbol information associated with the relevant portion of the order book in high-speed memory. If the new order is a match for an open order in the order book, compute node 140-1 thereby begins generating a "Fill" message, but does not receive an ordered version of that message. Until then, the customer will refrain from committing to updating the order book and from sending "Confirmed" messages. However, Compute node 140-1 does not accept any other outstanding unordered "new orders" that refer to the same stock symbol, side, price, etc. that are also potential matches for the same open orders in the order book. If a message is also being received, core compute node 140-1 may perform its preprocessing differently. In some embodiments, core compute node 140-1 determines that each of the two outstanding unordered "new order" messages may act as a match against a potential conflicting "fill" for each outstanding order. Messages may be generated. Based on the ordered version of the messages, one of the potential "fill" messages may be discarded and the other will be committed to the order book and sent to gateway 120. In other embodiments, if two or more possible outstanding unordered messages can potentially match the same outstanding order, Compute node 140-1 determines which messages need to be discarded or rolled back. No pre-processing may be performed (e.g., without creating any potential "fill" messages) or any such pre-processing may be aborted or interrupted for these unprocessed unordered messages.

他の例として、注文控え帳における未決済注文に対する潜在的な一致となる未処理の順序付けなし「新規注文」メッセージは、「新規注文」メッセージに対する潜在的な一致として作用することになる注文控え帳における同じ未決済注文をそれぞれ置き換え又は取り消すことを試みる未処理の順序付けなし「置換え注文」メッセージ又は「取消し注文」メッセージと競合し得る。この場合、「新規注文」メッセージ対「置換え/取消し注文」メッセージの、シーケンサによって割り当てられた相対順序に応じて、最終結果は、注文控え帳における未決済注文と「新規注文」メッセージとの間の一致となるか、それとも当該未決済注文が取り消され又は異なる価格若しくは数量の新規注文によって置き換えられるかのいずれかとなり得る。競合する未処理の順序付けなしメッセージの順序マーク付きバージョンがシーケンサ150-1によって受信されるまで、コンピュートノード140-1はこれら2つの結果のいずれとなるべきかを決定することはできない。 As another example, an outstanding unordered "new order" message that would be a potential match for an open order in the order book would act as a potential match for a "new order" message in the order book. may conflict with outstanding unordered "replace order" or "cancel order" messages that attempt to replace or cancel the same open order, respectively. In this case, depending on the relative order assigned by the sequencer of the "New Order" message versus the "Replacement/Cancellation Order" message, the final result is the difference between the open order and the "New Order" message in the order book. There may be a match, or the outstanding order may be canceled or replaced by a new order at a different price or quantity. Compute node 140-1 cannot determine which of these two outcomes should occur until the order-marked versions of the conflicting outstanding unordered messages are received by sequencer 150-1.

この場合、コンピュートノード140-1は、前処理を異なる態様で実行し得る。一部の実施形態では、複数の競合する未処理の順序付けなしメッセージがある場合、コンピュートノード140-1は、両競合メッセージにおいて参照される銘柄記号に関連する注文控え帳の関連部分を高速側のメモリに読み込むなど、ロールバック又は破棄される必要のない前処理を単に実行し得る。他の実施形態では、コンピュートノード140-1は、各々が複数の競合シナリオの1つに対応する1以上の暫定の潜在的な応答を構成するなど、追加の前処理を実行してもよい。例えば、コンピュートノード140-1は、潜在的な「約定」メッセージ及び/又は潜在的な「置換え承認」メッセージ又は「取消し承認」メッセージを作成し、場合によっては、複数の可能性ある結果のうちの1以上に対応する注文控え帳の暫定的な更新を行ってもよい。一部の実施形態では、コンピュートノード140-1はこの追加の前処理を全ての当該競合シナリオについて実行し得るが、他の実施形態では、コンピュートノード140-1は追加の前処理を競合シナリオのうちの1つ又は一部の組についてのみ実行し得る。例えば、コンピュートノード140-1は、他の未処理の競合する順序付けなしメッセージがない場合にのみ追加の前処理を未処理の順序付けなしメッセージに対して実行してもよい。代替的又は追加的に、コンピュートノード140-1は、前処理の結果をロールバック又は破棄することに伴う時間及び/又は複雑さの量に従って未処理の競合する順序付けなしメッセージについて、追加の前処理の実行を優先し得る。コンピュートノード140-1は、未処理の順序付けなしメッセージの順序マーク付きバージョンを受信すると、その後、未処理の順序付けなしメッセージが処理されるべき(シーケンサ150-1によって割り当てられるような)順序を決定し、その順序でのメッセージの処理を完了し得る。これは、一部の実施形態では、前処理の1以上の結果をロールバック又は破棄することを含み得る。 In this case, compute node 140-1 may perform preprocessing differently. In some embodiments, if there are multiple conflicting unordered messages outstanding, the compute node 140-1 sends the relevant portions of the order book associated with the stock symbols referenced in both conflicting messages to the fast side. One may simply perform preprocessing, such as loading into memory, that does not need to be rolled back or discarded. In other embodiments, compute node 140-1 may perform additional pre-processing, such as configuring one or more tentative potential responses, each corresponding to one of a plurality of conflict scenarios. For example, compute node 140-1 may create a potential "Fill" message and/or a potential "Replacement Approval" or "Cancellation Approval" message, and in some cases select one of multiple possible outcomes. You may provisionally update the order book corresponding to one or more items. In some embodiments, Compute node 140-1 may perform this additional pre-processing for all such conflict scenarios, while in other embodiments, Compute node 140-1 may perform this additional pre-processing for all conflict scenarios. It may be performed for only one or some of the sets. For example, compute node 140-1 may perform additional preprocessing on outstanding unordered messages only if there are no other outstanding conflicting unordered messages. Alternatively or additionally, Compute node 140-1 may perform additional pre-processing on unprocessed conflicting unordered messages according to the amount of time and/or complexity involved in rolling back or discarding the results of the pre-processing. Priority can be given to the execution of Upon receiving the order-marked versions of the outstanding unordered messages, the compute node 140-1 then determines the order (as assigned by the sequencer 150-1) in which the outstanding unordered messages are to be processed. , may complete processing of messages in that order. This may include rolling back or discarding one or more results of the preprocessing in some embodiments.

既に上述した前処理のタイプに加えて、一部の実施形態では、コンピュートノード140-1は、追加的又は代替的に、メッセージの有効性に関して前処理を実行してメッセージを受諾するのか拒否するのかを決定し得る。例えば、前処理は、メッセージによって指定された価格又は数量が最大値を超えないこと(すなわち、「最大価格確認」又は「最大数量確認」)、メッセージにおける銘柄記号が既知の銘柄記号であること(すなわち、「未知銘柄記号確認」)、当該銘柄記号に対して取引が現在許可されていること(すなわち、「銘柄記号停止確認」)又は価格が正しい小数点以下の桁数に従って適正に指定されていること(すなわち、「サブペニー確認」)を確認することなど、メッセージにリアルタイムリスク確認を行うことを含み得る。一部の実施形態では、前処理のタイプは、特定のクライアント又は取引注文に対して「自己取引防止」が有効化されている場合、特定の潜在的な一致が自己取引となること、すなわち、取引中のクライアントがそれ自体に対してマッチングすることを防止するための「自己取引防止」有効性確認を含み得る。取引注文がこれらの有効性確認の1以上に失敗した場合、電子取引システム100は適宜の拒否メッセージで応答し得る。これらの有効性確認が上記実施形態ではコンピュートノード140-1によって実行されるものとして説明するが、これらのタイプの有効性確認の少なくとも一部は、一部の実施形態では、ゲートウェイ120又は電子取引システム100における他のノードによって代替的又は追加的に実行され得ることが理解されるべきである。 In addition to the types of pre-processing already described above, in some embodiments, compute node 140-1 additionally or alternatively performs pre-processing regarding the validity of the message to accept or reject the message. can be determined. For example, preprocessing may include ensuring that the price or quantity specified by the message does not exceed a maximum value (i.e., "Maximum Price Check" or "Maximum Quantity Check"), that the stock symbol in the message is a known stock symbol ( (i.e., "Unknown Stock Symbol Confirmation"), trading is currently permitted for the stock symbol (i.e., "Stock Symbol Confirmation"), or the price is properly specified according to the correct number of decimal places. This may include subjecting messages to real-time risk confirmations, such as confirming that they are true (i.e., “subpenny confirmations”). In some embodiments, the type of pre-processing is that if "self-trading prevention" is enabled for a particular client or trading order, certain potential matches become self-trading, i.e. May include a "self-trading prevention" validation to prevent a trading client from matching against itself. If a trading order fails one or more of these validation checks, electronic trading system 100 may respond with an appropriate rejection message. Although these validation checks are described in the above embodiments as being performed by compute node 140-1, at least some of these types of validation checks may be performed by gateway 120 or electronic transaction in some embodiments. It should be understood that it may alternatively or additionally be performed by other nodes in system 100.

更なる実施形態では、ゲートウェイ120-1が、クライアントから生じたメッセージに関連する固有のシステム全体順序識別子を通知されることが有益又は必要となり得る。この情報によって、ゲートウェイ120-1が当初の着信メッセージを固有順序番号に一致することが可能となり得る。これは、電子取引システム100の全体を通じてメッセージの適正な順位付けを確実にするのに使用される。ゲートウェイにおけるこのような構成は、電子取引システム100が状態確定性を実現してゲートウェイにおけるアクティビティに関してフォールトトレランス、高可用性及び災害復旧性を与えることを必要とし得る。着信メッセージに関連する順序識別子の情報を保持するようにゲートウェイ120-1を構成する1つの解決手段は、ゲートウェイ120-1に、メッセージをコンピュートノード140-1に転送する前に順序識別子とともにシーケンサ150-1からの返信を待機させることである。このようなアプローチは、メッセージの処理にレイテンシーを付加し得る。更なる例では、コンピュートノード140-1に、それがゲートウェイ120-1から当初受信した順序マーク付きメッセージを転送することに加えて、シーケンサ150-1は順序マーク付きメッセージ(例えば、図1B-2に示すようなマーク付きメッセージ106´)をゲートウェイ120-1に並列に送信してもよい。結果として、ゲートウェイ120-1は、電子取引システム100におけるレイテンシーを最小化しつつ、順序識別子の情報を保持し得る。 In further embodiments, it may be beneficial or necessary for gateway 120-1 to be informed of a unique system-wide ordering identifier associated with a message originating from a client. This information may enable gateway 120-1 to match the original incoming message to a unique sequence number. This is used to ensure proper ranking of messages throughout electronic trading system 100. Such configuration at the gateway may require electronic trading system 100 to implement state determinism to provide fault tolerance, high availability, and disaster recovery with respect to activity at the gateway. One solution for configuring the gateway 120-1 to maintain sequence identifier information associated with incoming messages is to have the gateway 120-1 send the message to the sequencer 150 along with the sequence identifier before forwarding the message to the compute node 140-1. This is to wait for a reply from -1. Such an approach may add latency to message processing. In a further example, in addition to forwarding to compute node 140-1 the order-marked messages that it originally received from gateway 120-1, sequencer 150-1 forwards order-marked messages (e.g., FIG. 1B-2 Marked messages 106') as shown in FIG. 1 may be sent in parallel to the gateway 120-1. As a result, gateway 120-1 can maintain order identifier information while minimizing latency in electronic trading system 100.

図2は、以上に開示した電子取引システム100などの電子取引システムのポイントツーポイントメッシュアーキテクチャにおけるメッシュノードの例示実施形態のブロック図である。図2は、電子取引システム100のポイントツーポイントメッシュ172のアーキテクチャにおけるメッシュノード200の例示実施形態を示す。メッシュノード200は、例えば、ゲートウェイ120、シーケンサ150又はコアコンピュートノード140を表し得る。本例ではメッシュノード200における機能はハードウェア及びソフトウェアの双方にわたって分散されているが、メッシュノード200は純粋なハードウェア及び純粋なソフトウェアの実施例を含むハードウェア及びソフトウェアの任意の適宜の組合せで実施されてもよいし、一部の実施形態では、ゲートウェイ120、コンピュートノード140及び/又はシーケンサ150のいずれか又は全てが市販品のコンポーネントで実施されてもよい。 FIG. 2 is a block diagram of an exemplary embodiment of a mesh node in a point-to-point mesh architecture of an electronic trading system, such as electronic trading system 100 disclosed above. FIG. 2 shows an exemplary embodiment of a mesh node 200 in a point-to-point mesh 172 architecture of electronic trading system 100. Mesh node 200 may represent, for example, gateway 120, sequencer 150, or core compute node 140. Although in this example the functionality in mesh node 200 is distributed across both hardware and software, mesh node 200 may be implemented in any suitable combination of hardware and software, including pure hardware and pure software implementations. In some embodiments, any or all of gateway 120, compute node 140, and/or sequencer 150 may be implemented with commercially available components.

図2に示す実施形態では、ローレイテンシーを達成するために、一部の機能は固定ロジックデバイス230においてハードウェアで実施される一方で、他の機能はデバイスドライバ220及びメッシュソフトウェアアプリケーション210においてソフトウェアで実施される。固定ロジックデバイス230は、特定用途向け集積回路(ASIC)、組み込みプロセッサ又はフィールドプログラマブルゲートアレイ(FPGA)を含む任意の適宜の態様で実施され得る。メッシュソフトウェアアプリケーション210及びデバイスドライバ220は、中央処理装置(CPU)などの1以上のプログラマブルデータプロセッサを実行する命令として実施され得る。異なるバージョン又は構成のメッシュソフトウェアアプリケーション210が、その役割に応じてメッシュノード200にインストールされ得る。例えば、メッシュノード200がゲートウェイ120、シーケンサ150又はコアコンピュートノード140のいずれで動作しているのかに基づいて、異なるバージョン又は構成のメッシュソフトウェアアプリケーション210がインストールされ得る。 In the embodiment shown in FIG. 2, some functions are implemented in hardware in fixed logic device 230 while other functions are implemented in software in device driver 220 and mesh software application 210 to achieve low latency. Implemented. Fixed logic device 230 may be implemented in any suitable manner, including an application specific integrated circuit (ASIC), an embedded processor, or a field programmable gate array (FPGA). Mesh software application 210 and device driver 220 may be implemented as instructions executing one or more programmable data processors, such as a central processing unit (CPU). Different versions or configurations of mesh software applications 210 may be installed on mesh nodes 200 depending on their roles. For example, different versions or configurations of mesh software application 210 may be installed based on whether mesh node 200 is operating as gateway 120, sequencer 150, or core compute node 140.

任意の適宜の物理通信リンクレイヤが採用され得るが(ユニバーサルシリアルバス(USB)、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCI-Express、すなわち、PCI-E)、高精細度マルチメディアインターフェース(HDMI)、10ギガビットイーサネット(GigE)、40GigE、100GigE又はInfiniBand(IB)を含み、ファイバ又は銅ケーブルを介する)、本例では、メッシュノード200は複数の低遅延10ギガビットイーサネット・スモールフォームファクタープラガブルプラス(SFP+)コネクタ(インターフェース)270-1、270-2、270-3、・・・、270-n(コネクタ270としてまとめて示す)を有する。コネクタ270は、例えば、専用接続180を介してポイントツーポイントメッシュにおいて他のノードに直接接続され、共有接続182を介して接続され、及び/又はゲートウェイ120を介して参加者デバイス130に接続され得る。これらのコネクタ270は、本例では、それぞれ10GigEメディアアクセス(MAC)コア260-1、260-2、260-3、・・・、260-n(GigEコア260としてまとめて示す)に電子的に結合され、それは本実施形態では最小のレイテンシーを確実にするように固定ロジックデバイス230によって実施される。他の実施形態では、10GigE MACコア260は、例えば、PCI-Eネットワークインターフェースカードアダプタにおいて、固定ロジックデバイス230の外部の機能によって実施され得る。 Any suitable physical communication link layer may be employed (Universal Serial Bus (USB), Peripheral Component Interconnect (PCI) Express (PCI-Express, or PCI-E), High Definition Multimedia Interface (HDMI), 10 Gigabit Ethernet (GigE), 40GigE, 100GigE, or InfiniBand (IB) (via fiber or copper cable), in this example, the mesh node 200 supports multiple low-latency 10 Gigabit Ethernet Small Form Factor Pluggable Plus (SFP+) It has connectors (interfaces) 270-1, 270-2, 270-3, . . . , 270-n (collectively shown as connector 270). Connector 270 may be connected directly to other nodes in a point-to-point mesh via dedicated connection 180, connected via shared connection 182, and/or connected to participant device 130 via gateway 120, for example. . These connectors 270, in this example, are electrically connected to respective 10 GigE media access (MAC) cores 260-1, 260-2, 260-3, ..., 260-n (collectively shown as GigE core 260). combined, which in this embodiment is implemented by a fixed logic device 230 to ensure minimal latency. In other embodiments, 10GigE MAC core 260 may be implemented by functionality external to fixed logic device 230, for example, in a PCI-E network interface card adapter.

一部の実施形態では、固定ロジックデバイス230は、他のコンポーネントも含み得る。図2の例では、固定ロジックデバイス230は、固定ロジック240のコンポーネントも含む。一部の実施形態では、固定ロジックコンポーネント240は、メッシュノード200の役割に応じて、例えば、それがゲートウェイ120、シーケンサ150又はコアコンピュートノード140のいずれであるのかに応じて、異なる機能を実施し得る。固定ロジックデバイス230には、固定ロジック240によって最小のレイテンシーでアクセスされるメモリとなり得る固定ロジックメモリ250も含まれる。固定ロジックデバイス230は、PCIエクスプレス機能を実施し得るPCI-Eコア235も含む。本例では、PCIエクスプレスは、ハードウェアとソフトウェアの間で、より具体的には、固定ロジックデバイス240とメッシュソフトウェアアプリケーション210の間で、PCIエクスプレスバス233を介してデバイスドライバ220によってデータを転送するコンジット機構として使用される。ただし、ダイレクトメモリアクセス(DMA)、共有メモリバッファ又はメモリマッピングを含む任意の適宜のデータ転送機構が、ハードウェアとソフトウェアの間で採用されてもよい。 In some embodiments, fixed logic device 230 may also include other components. In the example of FIG. 2, fixed logic device 230 also includes fixed logic 240 components. In some embodiments, fixed logic component 240 performs different functions depending on the role of mesh node 200, e.g., whether it is gateway 120, sequencer 150, or core compute node 140. obtain. Fixed logic device 230 also includes fixed logic memory 250, which can be memory accessed with minimal latency by fixed logic 240. Fixed logic device 230 also includes a PCI-E core 235 that may implement PCI Express functionality. In this example, PCI Express transfers data between hardware and software, and more specifically, between fixed logic device 240 and mesh software application 210 via PCI Express bus 233 by device driver 220. Used as a conduit mechanism. However, any suitable data transfer mechanism may be employed between hardware and software, including direct memory access (DMA), shared memory buffers, or memory mapping.

一部の実施形態では、メッシュノード200は、他のハードウェアコンポーネントも含み得る。例えば、電子取引システム100におけるその役割に応じて、メッシュノード200は、一部の実施形態では、電子取引システム100内のノード間の高分解能クロック同期の実施に使用される高分解能クロック195(図1Dとの関連でも図示及び開示される)を含んでいてもよい。ダイナミックランダムアクセスメモリ(DRAM)280も、固定ロジックメモリ250との関連で追加のメモリとしてメッシュノード200に含まれ得る。DRAM280は、1以上のランダムアクセスメモリバンク、ハードディスク及びソリッドステートディスクを含む任意の適宜の揮発性又は不揮発性メモリであってもよく、任意の適宜のメモリ又はストレージインターフェースを介してアクセスされてもよい。以上に開示したように、メッシュノード200は、ゲートウェイ120、シーケンサ150又はコアコンピュートノード140を表し得るものであり、図1A~Dに関して以上に開示し、以下にさらに図3に関して開示するようなポイントツーポイントメッシュアーキテクチャにおいて構成され得る。 In some embodiments, mesh node 200 may also include other hardware components. For example, depending on its role in electronic trading system 100, mesh node 200, in some embodiments, is equipped with a high-resolution clock 195 (Fig. 1D). Dynamic random access memory (DRAM) 280 may also be included in mesh node 200 as additional memory in conjunction with fixed logic memory 250. DRAM 280 may be any suitable volatile or nonvolatile memory, including one or more random access memory banks, hard disks, and solid state disks, and may be accessed through any suitable memory or storage interface. . As disclosed above, mesh node 200 may represent gateway 120, sequencer 150, or core compute node 140, and as disclosed above with respect to FIGS. 1A-D and further below with respect to FIG. Can be configured in a two-point mesh architecture.

図1B-1、1B-2、1C、1D、1E及び図2において記載した例示実施形態の観点では、電子取引システム100のポイントツーポイントメッシュアーキテクチャ172が多数の態様でレイテンシーの改善に供することは明らかなはずである。メッセージがスイッチを横断することなく直接専用接続180を介して電子取引システム100内のノード間で交換される実施形態では、スイッチを回避すること自体によって、レイテンシー関連の多数の有利な効果が可能となる。
a)スイッチが単一のメッセージを処理するのに必要な時間(メッセージがスイッチに入ってからそのメッセージがスイッチから出るまでの時間間隔)が完全に排除される。このスイッチ処理のレイテンシーは、通常は約1.0マイクロ秒であり、メッセージのヘッダにおいて指定されるように、バッファリング時間及びメッセージを適切な宛先にルーティングする時間を含む。
b)2つの伝送時間(送信ノードとスイッチの間の伝送時間及びスイッチと受信ノードの間の伝送時間)が送信ノードと受信ノードの間で直接メッセージを伝送するための単一の伝送時間によって置き換えられる。
c)スイッチなしの直接のポイントツーポイント接続を介して通信することは、スイッチによって必要とされ得るが送信ノード及び受信ノードにも処理時間オーバーヘッドを付加し得るTCP/IPなどの特定の確立されたプロトコルに従うメッシュ内でのメッセージを交換する要件も排除する。送信ノードが、TCP/IPヘッダを構成すること、チェックサムを計算することなどのプロトコル特有の処理を実行するのに必要となる時間、及び受信ノードがさらに、TCP/IPヘッダを解釈すること、チェックサムを検証することなどの同様のプロトコル特定の処理を実行するのに必要となる時間は、送信ノード及び受信ノードの各々に約0.5マイクロ秒、合計約1.0マイクロ秒となる。このプロトコル特有のオーバーヘッドは、任意選択的に、TCP/IPなど、スイッチによって必要とされる特定の確立されたプロトコルではなく、1以上のカスタムのプロトコルに応じてメッセージを交換するポイントツーポイントメッシュアーキテクチャ172の一部の実施形態では排除され得る。
d)メッセージは、さらに後述するように、直接接続されたノードに完全に同時にブロードキャストされ、直接接続された受信者ノードによって完全に同時に受信され得る。異なるメッセージも、さらに後述するように、複数の直接接続された送信者ノードから完全に同時に受信され得る。
In view of the exemplary embodiments described in FIGS. 1B-1, 1B-2, 1C, 1D, 1E, and 2, point-to-point mesh architecture 172 of electronic trading system 100 provides for improved latency in a number of ways. It should be obvious. In embodiments where messages are exchanged between nodes within electronic trading system 100 via direct dedicated connections 180 without traversing a switch, bypassing the switch itself allows for a number of latency-related beneficial effects. Become.
a) The time required for a switch to process a single message (the time interval between when a message enters the switch and when it leaves the switch) is completely eliminated. The latency of this switch process is typically about 1.0 microseconds and includes buffering time and time to route the message to the appropriate destination, as specified in the message's header.
b) two transmission times (transmission time between the sending node and the switch and transmission time between the switch and the receiving node) are replaced by a single transmission time for transmitting the message directly between the sending node and the receiving node It will be done.
c) Communicating via a direct point-to-point connection without a switch may be required by a switch, but may add processing time overhead to the sending and receiving nodes as well. It also eliminates the requirement to exchange messages within a mesh that follows a protocol. the time required for the sending node to perform protocol-specific processing such as constructing the TCP/IP header, calculating the checksum, and for the receiving node to further interpret the TCP/IP header; The time required to perform similar protocol-specific processing, such as verifying a checksum, is about 0.5 microseconds for each of the sending and receiving nodes, for a total of about 1.0 microseconds. This protocol-specific overhead can optionally be applied to point-to-point mesh architectures that exchange messages according to one or more custom protocols rather than a specific established protocol required by the switch, such as TCP/IP. 172 may be excluded in some embodiments.
d) Messages may be broadcast to directly connected nodes at exactly the same time and received by directly connected recipient nodes at exactly the same time, as described further below. Different messages may also be received completely simultaneously from multiple directly connected sender nodes, as discussed further below.

ノード間の直接専用接続180が、図2に関連して上述したように、それぞれGigE MACコア260及びコネクタ270など、専用通信ロジック及び専用インターフェースを介して実施される実施形態では、レイテンシーが改善し得る。一部のこのような実施形態では、GigE MACコア260の各々はそのノードと単一の他のノードとの間のメッセージ通信を扱い、コネクタ270の各々はポイントツーポイントメッシュアーキテクチャ172内の単一の他のノードに専用接続180を介して接続される。例えば、図1Dの実施形態のポイントツーポイントメッシュ内の3個のノード(ゲートウェイ120-1、コアコンピュートノード140-1及びコアコンピュートノード140-2)を検討すると、ゲートウェイ120-1はコアコンピュートノード140-1に専用接続180-1-1を介して接続され、ゲートウェイ120-1はコアコンピュートノード140-2にも別個の専用接続180-1-2を介して接続される。これら3個のノードの各々が図2の実施形態によって実施される場合、専用接続180-1-1を介して、ゲートウェイ120-1に対するGigE MACコア260-1及びコネクタ270-1がコアコンピュートノード140-1との通信に対して単独で使用され、コアコンピュートノード140-1に対するGigE MACコア260-1及びコネクタ270-1がゲートウェイ120-1との通信に対して単独で使用され得る。同様に、専用接続180-1-2を介して、ゲートウェイ120-1に対するGigE MACコア260-2及びコネクタ270-2がコアコンピュートノード140-2との通信に対して単独で使用され、コアコンピュートノード140-2に対するGigE MACコア260-1及びコネクタ270-1がゲートウェイ120-1との通信に対して単独で使用され得る。したがって、このような実施形態によると、GigE MACコア260の1つ及びコネクタ270の1つなど専用コンピュートリソースは、専用接続180を有する他の各ノードと通信するための各ノードに対して使用される。 Embodiments in which direct dedicated connections 180 between nodes are implemented via dedicated communication logic and dedicated interfaces, such as GigE MAC core 260 and connector 270, respectively, as described above in connection with FIG. 2, improve latency. obtain. In some such embodiments, each GigE MAC core 260 handles message communication between its node and a single other node, and each connector 270 handles message communication between its node and a single other node, and each GigE MAC core 260 handles message communication between its node and a single other node, and each to other nodes via a dedicated connection 180. For example, considering three nodes (gateway 120-1, core compute node 140-1, and core compute node 140-2) in the point-to-point mesh of the embodiment of FIG. 1D, gateway 120-1 is the core compute node 140-1 via a dedicated connection 180-1-1, gateway 120-1 is also connected to core compute node 140-2 via a separate dedicated connection 180-1-2. If each of these three nodes is implemented according to the embodiment of FIG. GigE MAC core 260-1 and connector 270-1 for core compute node 140-1 may be used solely for communication with gateway 120-1. Similarly, via dedicated connection 180-1-2, GigE MAC core 260-2 and connector 270-2 to gateway 120-1 are used solely for communication with core compute node 140-2, and GigE MAC core 260-1 and connector 270-1 for node 140-2 may be used solely for communication with gateway 120-1. Thus, according to such embodiments, a dedicated compute resource, such as one of the GigE MAC cores 260 and one of the connectors 270, is used for each node to communicate with each other node having a dedicated connection 180. Ru.

専用接続180あたりのこれらの専用コンピュートリソースによって、メッセージは、特にGigEコア260が固定ロジックデバイス230などのハードウェアで実施される場合に、送信ノードによって、当該送信ノードに(例えば、専用接続180を介して)直接接続される他のメッシュノードの間で完全に同時にブロードキャスト可能となる。逆に、送信ノードからのブロードキャストメッセージは、全ての受信ノードによって完全に同時に受信され得る。各受信ノードは、送信ノードに対するそれぞれの専用接続180を有し、受信者ノードに直接接続された各ノードについて、受信が専用接続通信ロジック及び専用インターフェースによって実施される。各受信ノードはブロードキャストメッセージを完全に同時に受信し、メッシュ内の異なるノード間での内部的なメッセージレイテンシーは同一となるはずであるので、いずれの受信ノードも選好されない。さらに、受信ノードは、それに直接接続された異なるノードから各々、異なるメッセージを完全に同時に受信し得る。 These dedicated compute resources per dedicated connection 180 allow messages to be sent by the sending node to the sending node (e.g., if the GigE core 260 is implemented in hardware such as fixed logic device 230). completely simultaneously between other mesh nodes that are directly connected (via). Conversely, a broadcast message from a sending node may be received by all receiving nodes completely simultaneously. Each receiving node has a respective dedicated connection 180 to the sending node, and for each node directly connected to the receiving node, reception is performed by dedicated connection communication logic and a dedicated interface. Since each receiving node receives the broadcast message exactly at the same time, and the internal message latency between different nodes in the mesh should be the same, no receiving node is preferred. Furthermore, a receiving node may receive different messages completely simultaneously from each different node directly connected to it.

複数のメッセージを完全に同時に送受信する能力は、サーバ間の通信がスイッチを介して行われる他の環境とは対照的であり、そのような環境は通常、メッセージの送受信がシリアル化されることを要する。通信がスイッチを介して行われる場合、通常、各サーバはそれ自体とスイッチの間に単一の接続(又は複数の冗長接続の場合もあるが、それでも単一の論理的接続とみなされるものとする)を有する。サーバがメッセージをシステム内の複数の他のサーバにブロードキャストする必要がある場合、それらのメッセージは、実際にはスイッチに同時に送信されるわけでもスイッチによって同時に受信されるわけでもないが、その代わりに、サーバとスイッチの間の単一の論理的接続を介して直列的に順次送信/受信される必要がある。同様に、スイッチが、同じサーバに宛てられているが(スイッチが発生サーバの各々への単一の接続を有し得るために)異なる送信サーバから発生する複数の異なるメッセージを同時に受信することが可能である場合であっても、これらの複数の異なるメッセージはスイッチと宛先サーバの間の単一の論理的接続を介して1つずつそれらを送信するためには、依然としてスイッチによってシリアル化される必要がある。このような環境で必要となるメッセージのシリアル化は、システムのレイテンシー全体を増加させるだけでなく、このようなシステム内のサーバ間の予測し難いレイテンシーをもたらすことになる。例えば、メッセージがサーバからシステム内の15個の他のサーバにブロードキャストされる必要がある場合、これら15個のメッセージは、それらがスイッチに送信されるにつれてシリアル化される必要があり、レイテンシーの差は、特定の宛先サーバに宛てられたメッセージが一連のブロードキャストメッセージにおいて最初のメッセージとなるのか15番目のメッセージとなるのかによって大きくなり得る。 The ability to send and receive multiple messages completely simultaneously is in contrast to other environments where communication between servers occurs through switches, and such environments typically require that message sending and receiving be serialized. It takes. When communication is through a switch, each server typically has a single connection (or possibly multiple redundant connections, but is still considered a single logical connection) between itself and the switch. have). When a server needs to broadcast a message to multiple other servers in the system, those messages are neither actually sent to nor received by the switch at the same time, but instead , must be sent/received serially and sequentially over a single logical connection between the server and the switch. Similarly, it is possible for a switch to simultaneously receive multiple different messages destined for the same server but originating from different sending servers (because the switch may have a single connection to each of the originating servers). Even if possible, these multiple different messages would still be serialized by the switch in order to send them one by one over a single logical connection between the switch and the destination server. There is a need. The message serialization required in such an environment not only increases the overall latency of the system, but also results in unpredictable latency between servers within such a system. For example, if a message needs to be broadcast from a server to 15 other servers in the system, these 15 messages need to be serialized as they are sent to the switch, and the latency difference can be large depending on whether the message addressed to a particular destination server is the first or the 15th message in a series of broadcast messages.

スイッチの横断を必要としない専用接続180の使用から得ることができるレイテンシーの有利な効果に加えて、ポイントツーポイントメッシュアーキテクチャ172は、さらに他のレイテンシーの改善を可能とする。図1B-1との関連で上述したように、ゲートウェイ120-1からコアコンピュートノード140-1になど、ポイントツーポイントメッシュ内での2つのノード間で送信されているメッセージは、メッセージが他のメッセージに対する確定的な順序で電子取引システム100の全体を通じて処理可能となることを確実にするために、順位付けパス117を介して送信され得る。メッセージが順位付けパス117を通じて横断するにつれて、シーケンサ150-1を通過し、シーケンサ150-1はメッセージを固有順序識別子でマーク付けし、その後にシーケンサ150-1が宛先ノード(本例では、コアコンピュートノード140-1)に送信する順序マーク付きメッセージを生成する。順序マーク付きメッセージの受信により、宛先ノード(本例では、コアコンピュートノード140-1)は、電子取引システム100内の他のメッセージ(これもシーケンサによって順序マーク付けされている)に対して順序マーク付きメッセージの順序識別子によって指定されるように、メッセージが正しい確定的順位で処理されることを確実にし得る。 In addition to the latency benefits that can be obtained from the use of dedicated connections 180 that do not require traversal of switches, point-to-point mesh architecture 172 allows for yet other latency improvements. As discussed above in connection with FIG. 1B-1, messages being sent between two nodes within a point-to-point mesh, such as from gateway 120-1 to core compute node 140-1, are To ensure that messages can be processed throughout electronic trading system 100 in a deterministic order, they may be sent via ranking path 117. As the message traverses through ranking path 117, it passes through sequencer 150-1, which marks the message with a unique ordering identifier, after which sequencer 150-1 passes to the destination node (in this example, a core compute generate an order-marked message to send to node 140-1); Receipt of the order-marked message causes the destination node (in this example, core compute node 140-1) to mark the order with respect to other messages within electronic trading system 100 (which are also order-marked by the sequencer). It may be ensured that messages are processed in the correct deterministic order, as specified by the order identifier of the attached message.

図1B-1との関連で上述したように、この順位付けパス117は、複数の直接接続:送信ノードとシーケンサの間の直接接続(ゲートウェイ120-1とシーケンサ150-1の間の直接接続180-gw1-s1など)及びさらにシーケンサと宛先ノードの間の直接接続(シーケンサ150-1とコンピュートノード140-1の間の直接接続180-c1-s1など)を含み得る。順位付けパス117を備えるこれら複数の直接接続は、一部の実施形態では、スイッチを通過せず、既に上述したレイテンシーの有利な効果から利益を受けることができる。それでもなお、このような実施形態では、順位付けパス117のレイテンシーは、シーケンサ150-1におけるメッセージの処理時間(すなわち、シーケンサ150-1が非順序マーク付き(すなわち、順序付けなし)メッセージを受信し、それを順序識別子でマーク付けし、順序マーク付きメッセージを宛先に送信するのに必要な時間)及び2つの直接接続を通じるメッセージの伝送時間によって影響される。(すなわち、非順序マーク付きバージョンが最初に送信者ノードからシーケンサに直接接続を介して送信され、その後に順序マーク付きバージョンがシーケンサから宛先ノードに別個の直接接続を介して送信される)。試験は、単一の直接接続と比較した場合の順位付けパス117のこのレイテンシーの影響が、TCP/IPなどの特定の確立されたプロトコルではなくカスタムプロトコルが使用されるのか否かなどの要因に応じて、順位付けパス117に対して追加の0.5~1.0マイクロ秒であることを示す。 As discussed above in connection with FIG. 1B-1, this ranking path 117 includes multiple direct connections: a direct connection between the transmitting node and the sequencer (a direct connection 180 between the gateway 120-1 and the sequencer 150-1); -gw1-s1) and further direct connections between the sequencer and the destination node (such as the direct connection 180-c1-s1 between sequencer 150-1 and compute node 140-1). These multiple direct connections with ranking path 117, in some embodiments, do not pass through a switch and can benefit from the beneficial effects of latency already mentioned above. Nevertheless, in such embodiments, the latency of ranking pass 117 is determined by the processing time of the message at sequencer 150-1 (i.e., when sequencer 150-1 receives an out-of-order marked (i.e., unordered) message; the time required to mark it with an order identifier and send the order-marked message to its destination) and the transmission time of the message over the two direct connections. (i.e., the unordered marked version is first sent over a direct connection from the sender node to the sequencer, and then the ordered marked version is sent from the sequencer to the destination node over a separate direct connection). Testing will determine the impact of this latency on the ranking path 117 when compared to a single direct connection, depending on factors such as whether a custom protocol is used rather than a specific established protocol such as TCP/IP. Accordingly, it indicates an additional 0.5-1.0 microseconds for the ranking pass 117.

したがって、順位付けパス117を通じたメッセージの横断の可能性あるレイテンシーの影響を最小化するための最適化として、非順序マーク付きメッセージも、ゲートウェイ120-1とコアコンピュートノード140-1の間の直接接続180-1-1など、送信者ノードと宛先ノードの間の単一の直接接続であり得る活性化リンク180-1-1を介して並列に送信されてもよい。したがって、一部の実施形態では、非順序マーク付きメッセージは、活性化リンク180-1-1を介して宛先ノード(例えば、コアコンピュートノード140-1)に、及び順位付けパス117の一部として、送信ノードとシーケンサ150-1の間の直接接続(例えば、直接接続180-gw1-s1)を介してシーケンサ150-1に、送信ノード(例えば、ゲートウェイ120-1)によって完全に同時に送信され得る。このような実施形態によると、シーケンサ150-1及び宛先ノード(例えば、コアコンピュートノード140-1)は、メッセージの非順序マーク付きバージョンを同時に受信することができ、これにより、宛先ノードがその受信に応じて直ちに非順序マーク付きメッセージの処理を活性化することが可能となる。順序マーク付きメッセージがシーケンサ150-1によって生成されて宛先ノードに送信されているのと同時に、宛先ノードは、並行して非順序マーク付きメッセージを処理することを開始してもよく、この処理は、メッセージにおいて参照される銘柄記号に関連するデータを高速側メモリに読み込むこと、予備応答メッセージを構築すること、又は電子取引のためのマッチング機能アクティビティを開始することを含む。上述したように、宛先ノードは、順序マーク付きメッセージを受信すると、順序識別子によって指定されるような適正な確定的順位(すなわち、順序)に応じてメッセージの処理を完了し得る。ただし、宛先ノードが順位付けパス117を介して順序マーク付きメッセージを受信する時間までに、宛先ノードはメッセージの非順序マーク付きバージョンの有用な処理を実行する機会(例えば、0.5~1.0マイクロ秒の処理時間に相当)を既に有していることになり、宛先ノードが活性化リンク180-1-1を介してメッセージの非順序マーク付きバージョンをまだ受信していない場合よりも迅速に順序マーク付きメッセージの処理を完了し、より低い対応のレイテンシーの応答メッセージを生成することが可能となる。 Therefore, as an optimization to minimize the potential latency impact of message traversal through ranking path 117, out-of-order marked messages are also used directly between gateway 120-1 and core compute node 140-1. It may be transmitted in parallel over activation link 180-1-1, which may be a single direct connection between the sender node and the destination node, such as connection 180-1-1. Accordingly, in some embodiments, out-of-order marked messages are sent to a destination node (e.g., core compute node 140-1) via activation link 180-1-1 and as part of ranking path 117. , may be sent completely simultaneously by the sending node (e.g., gateway 120-1) to sequencer 150-1 via a direct connection between the sending node and sequencer 150-1 (e.g., direct connection 180-gw1-s1). . According to such embodiments, sequencer 150-1 and a destination node (e.g., core compute node 140-1) may simultaneously receive an out-of-order marked version of a message, thereby allowing the destination node to It becomes possible to immediately activate the processing of out-of-order marked messages in response to the request. At the same time that ordered marked messages are being generated and sent to the destination node by sequencer 150-1, the destination node may begin processing out-of-order marked messages in parallel; , loading data related to stock symbols referenced in the message into high-speed memory, constructing a preliminary response message, or initiating matching function activities for electronic trading. As discussed above, upon receiving an order-marked message, a destination node may complete processing of the message according to the proper deterministic order (ie, order) as specified by the order identifier. However, by the time the destination node receives the ordered marked message via ranking path 117, the destination node has a chance (e.g., 0.5 to 1. 0 microseconds of processing time) than if the destination node had not yet received the out-of-order marked version of the message over the activated link 180-1-1. It becomes possible to complete processing of ordered marked messages and generate corresponding lower latency response messages.

したがって、上述したように、ポイントツーポイントメッシュアーキテクチャ(例えば、102及び172)は、多数の態様でレイテンシーの改善に供する。試験を通じて、これらのレイテンシーの改善の少なくとも一部は、経験的に定量化されてきた。例えば、スイッチを回避するノード間の直接接続の使用に起因するレイテンシーの改善は、少なくとも合計1.0マイクロ秒となり、場合によっては、各方向(すなわち、着信対発信)において3.0マイクロ秒までとなる。さらに、順位付けパス117を介したメッセージの処理及び伝送と並行して、活性化リンク180-1-1を介して受信された非順序マーク付きメッセージを宛先ノードが処理する機会に起因するレイテンシーの改善は、各方向にさらに0.5~1.0マイクロ秒となる。したがって、着信メッセージが参加者デバイス130からゲートウェイ120を介して電子取引システム100に入る時間から対応の応答メッセージがゲートウェイ120から参加者デバイス130に送信される時間までの全体の可能なレイテンシーの改善は、少なくとも2.5~7.0マイクロ秒となる。電子取引など、レイテンシーの影響を受け易いアプリケーションでは、マイクロ秒のレイテンシーの差でさえも非常に重要となる。これらのレイテンシーの改善によって、電子取引システム100の一部の実施形態は、5.0~7.0マイクロ秒の所望の応答時間レイテンシーに応じて確実に応答することが可能となる。これは従来技術の取引システムに対する顕著な改善であり、その最良のものは現在のところ50~75マイクロ秒の範囲の応答時間レイテンシーを有する。 Thus, as discussed above, point-to-point mesh architectures (eg, 102 and 172) provide for improved latency in a number of ways. Through testing, at least some of these latency improvements have been quantified empirically. For example, the latency improvement resulting from the use of a direct connection between nodes that avoids switches would total at least 1.0 microseconds, and in some cases up to 3.0 microseconds in each direction (i.e., incoming vs. outgoing). becomes. Additionally, in parallel with the processing and transmission of messages via ranking path 117, latency due to the opportunity for the destination node to process out-of-order marked messages received via activation link 180-1-1. The improvement is an additional 0.5-1.0 microseconds in each direction. Therefore, the overall possible latency improvement from the time an incoming message enters electronic trading system 100 from participant device 130 via gateway 120 to the time a corresponding response message is sent from gateway 120 to participant device 130 is , at least 2.5 to 7.0 microseconds. In latency-sensitive applications such as electronic trading, even microsecond latency differences can be very important. These latency improvements enable some embodiments of electronic trading system 100 to reliably respond according to desired response time latencies of 5.0 to 7.0 microseconds. This is a significant improvement over prior art trading systems, the best of which currently have response time latencies in the range of 50-75 microseconds.

図3は、ポイントツーポイントメッシュシステム302の他の例示実施形態のブロック図である。ポイントツーポイントメッシュシステム302は、複数のゲートウェイ320、複数のコアコンピュートノード340及びシーケンサ350を含む。複数のゲートウェイ320の各ゲートウェイ320-1、320-2、・・・、320-gが、それぞれの第1の直接接続、すなわち、第1の直接接続380-aを介して複数のコアコンピュートノード340の各コアコンピュートノード340-1、340-2、・・・、340-cに結合される。シーケンサ350は、それぞれの第2の直接接続、すなわち、第2の直接接続380-bを介して複数のゲートウェイ320の各ゲートウェイに結合され、それぞれの第3の直接接続、すなわち、第3の直接接続380-cを介して複数のコアコンピュートノードの各コアコンピュートノードに結合される。図1B-1、1B-2、1D及び図3を参照すると、ゲートウェイ120-1は、図1Dに関して以上に開示したような共有ゲートウェイネットワークを介して又は図3の直接接続384a、384b、・・・、384gを介して相互に通信可能に結合された複数のゲートウェイ320のうちの所与のゲートウェイであり得る。複数のゲートウェイ320は、例示実施形態では、ゲートウェイ320-1、320-2、・・・、320-gを含む。コアコンピュートノード140-1は、図1Dに関して以上に開示したような共有コアコンピュートノードネットワークを介して、又は図3の直接接続386a、386b、・・・、386cを介して相互に通信可能に結合され得るコアコンピュートノード340-1、340-2、・・・、340-cを含む複数のコアコンピュートノード340のうちの所与のコアコンピュートノードであり得る。ゲートウェイの番号gは、ポイントツーポイントメッシュシステム302におけるコアコンピュートノードの他の番号cと同じであっても異なっていてもよいことが理解されるべきである。例示実施形態によると、シーケンサ150-1は、図1Dに関して以上に開示したシーケンサ全域共有ネットワーク182-sなどの共有シーケンサネットワークを介して、又は図4に関して以下に開示する第4の直接接続482などの直接接続を介して相互に通信可能に結合された複数のシーケンサのうちの所与のシーケンサであり得る。 FIG. 3 is a block diagram of another exemplary embodiment of a point-to-point mesh system 302. Point-to-point mesh system 302 includes multiple gateways 320, multiple core compute nodes 340, and sequencer 350. Each gateway 320-1, 320-2, . 340 core compute nodes 340-1, 340-2, . . . , 340-c. The sequencer 350 is coupled to each gateway of the plurality of gateways 320 via a respective second direct connection, i.e., a second direct connection 380-b, and a respective third direct connection, i.e., a third direct connection. Coupled to each core compute node of the plurality of core compute nodes via connection 380-c. 1B-1, 1B-2, 1D and 3, gateway 120-1 can be connected via a shared gateway network as disclosed above with respect to FIG. 1D or directly connected 384a, 384b, . . . of FIG. , may be a given gateway of a plurality of gateways 320 communicatively coupled to each other via 384g. The plurality of gateways 320 include gateways 320-1, 320-2, . . . , 320-g in the exemplary embodiment. Core compute nodes 140-1 are communicatively coupled to each other via a shared core compute node network as disclosed above with respect to FIG. 1D or via direct connections 386a, 386b, ..., 386c of FIG. A given core compute node may be one of a plurality of core compute nodes 340, including core compute nodes 340-1, 340-2, . . . , 340-c. It should be understood that the number g of the gateway may be the same or different from the other number c of the core compute nodes in the point-to-point mesh system 302. According to an exemplary embodiment, the sequencer 150-1 is connected via a shared sequencer network, such as the sequencer-wide shared network 182-s disclosed above with respect to FIG. 1D, or through a fourth direct connection 482, such as the fourth direct connection 482 disclosed below with respect to FIG. A given sequencer may be one of a plurality of sequencers communicatively coupled to each other via a direct connection.

図4は、ポイントツーポイントメッシュシステム402の他の例示実施形態のブロック図である。図1B-2及び図4を参照すると、シーケンサ150-1は、ポイントツーポイントメッシュシステム402において、シーケンサ450-1及び少なくとも1つの他のシーケンサ450-2を含む複数のシーケンサのうちの所与のシーケンサであり得る。 FIG. 4 is a block diagram of another exemplary embodiment of a point-to-point mesh system 402. Referring to FIGS. 1B-2 and 4, sequencer 150-1 is configured to perform one of the following sequencers in point-to-point mesh system 402, including sequencer 450-1 and at least one other sequencer 450-2. It can be a sequencer.

ポイントツーポイントメッシュシステム402において、複数のゲートウェイ420の各ゲートウェイ420-1、420-2、・・・、420-gは、それぞれの第1の直接接続、すなわち、第1の直接接続480aを介して複数のコアコンピュートノードの各コアコンピュートノード440-1、440-2、・・・、440-cに結合される。複数のゲートウェイ420の各ゲートウェイは、それぞれの第2の直接接続、すなわち、第2の直接接続480-b-1及び480-b-2を介して複数のシーケンサの各シーケンサ450-1、・・・、450-2に結合される。複数のコアコンピュートノード440の各コアコンピュートノード440-1、440-2、・・・、440-cは、それぞれの第3の直接接続、すなわち、第3の直接接続480-c-1及び480-c-2を介して複数のシーケンサの各シーケンサ450-1、・・・、450-2に結合される。 In the point-to-point mesh system 402, each gateway 420-1, 420-2, ..., 420-g of the plurality of gateways 420 is connected via a respective first direct connection, i.e., first direct connection 480a. and is coupled to each core compute node 440-1, 440-2, . . . , 440-c of the plurality of core compute nodes. Each gateway of the plurality of gateways 420 connects each sequencer 450-1 of the plurality of sequencers 450-1, . . . , 450-2. Each core compute node 440-1, 440-2, . -c-2 to each of the sequencers 450-1, . . . , 450-2 of the plurality of sequencers.

所与のシーケンサ、すなわち、シーケンサ450-1・・・450-2の特定のシーケンサは、ポイントツーポイントメッシュシステムにサービス提供している現在アクティブなシーケンサであってもよく、複数のシーケンサの他の各シーケンサは現在アクティブなシーケンサを引き継ぐことを待機しているスタンバイシーケンサであってもよい。複数のシーケンサの各シーケンサは、第4の直接接続482などのそれぞれの第4の直接接続を介して複数のシーケンサの他の各シーケンサに結合され得る。複数のゲートウェイ420の各ゲートウェイ420-1、420-2、・・・、420-gは、さらに、そこから送信されるそれぞれのコンピュートノード宛てメッセージ(不図示)を複数のシーケンサ450-1、・・・、450-2のうちの所与のシーケンサに送信するように構成され得る。複数のコアコンピュートノード440の各コアコンピュートノード440-1、440-2、・・・、440-cは、さらに、そこから送信されるそれぞれのゲートウェイ宛てメッセージ(不図示)を複数のシーケンサ450-1、・・・、450-2のうちの所与のシーケンサに送信するように構成される。少なくとも1つの他のシーケンサは、スタンバイ状態である。 A given sequencer, i.e., a particular sequencer of sequencers 450-1...450-2, may be the currently active sequencer serving a point-to-point mesh system, and other sequencers of multiple sequencers may be Each sequencer may be a standby sequencer waiting to take over for the currently active sequencer. Each sequencer of the plurality of sequencers may be coupled to each other sequencer of the plurality of sequencers via a respective fourth direct connection, such as fourth direct connection 482. Each of the gateways 420-1, 420-2, . . . , 450-2. Each of the core compute nodes 440-1, 440-2, . 1, . . . , 450-2. At least one other sequencer is on standby.

スタンバイ状態(スタンバイロール)は、少なくとも1つの他のシーケンサが電源投入されて「リスニングオンリー」モードとなるように構成された受動状態を表し得る。「リスニングオンリー」モードでは、少なくとも1つのシーケンサは、メッセージを受信するように構成されるが、メッセージを送信せず、現在アクティブなシーケンサが故障した場合にアクティブなシーケンサを引き継ぐことが可能となっている。現在アクティブなシーケンサは、メッセージを送受信可能なアクティブ状態(アクティブロール)である。一般的に、スタンバイシーケンサは、電源投入され、メッセージを受信可能であり、アクティブシーケンサを引き継ぐことが可能となっている冗長な(バックアップの)シーケンサである。このような切換え、すなわち、スタンバイ状態(ロール)からアクティブ状態(ロール)への切換えは、現在アクティブなシーケンサの故障に起因して又は非限定的な例として現在アクティブなシーケンサに適用されているソフトウェアアップデートなど、他の理由によってコントローラ(不図示)によって発出された切換コマンドの受信に基づき得る。 A standby state (standby role) may represent a passive state in which at least one other sequencer is powered on and configured to be in a "listening only" mode. In "listening-only" mode, at least one sequencer is configured to receive messages, but not to send messages, and is capable of taking over as the currently active sequencer if the currently active sequencer fails. There is. The currently active sequencer is in an active state (active role) in which it can send and receive messages. Typically, a standby sequencer is a redundant (backup) sequencer that is powered on, capable of receiving messages, and capable of taking over for the active sequencer. Such a switchover, i.e. from a standby state (roll) to an active state (roll), may occur due to a failure of the currently active sequencer or, by way of non-limiting example, to software applied to the currently active sequencer. It may be based on receiving a switching command issued by a controller (not shown) for other reasons, such as an update.

所与のシーケンサ(アクティブ状態にある)は、さらに、現在アクティブなシーケンサが故障した場合又は非限定的な例としてソフトウェアアップデートなど、その他の理由でアクティブなシーケンサとして指定されなくなった場合に、順序マーク付きメッセージ106´及び順序マーク付き応答107´などの順序マーク付きメッセージを各それぞれの第4の直接接続482を介して複数のシーケンサ450-1、・・・、450-2の他の各シーケンサに送信して、スタンバイシーケンサが現在アクティブなシーケンサを引き継ぐことができるように構成され得る。ただし、アクティブなシーケンサ、すなわち、アクティブ状態にある所与のシーケンサは順序付けされたマーク付きメッセージをスタンバイシーケンサ、すなわち、スタンバイ状態にあるシーケンサに転送する必要はなく、代替的に、継続的に、図1Dに関して以上に開示したようなスタンバイシーケンサに状態ログ(そこにおける順序情報を含むことになる)ともいうジャーナルをブロードキャスト/複製し得ることが理解されるべきである。 A given sequencer (which is in the active state) may also receive an order mark if the currently active sequencer fails or is no longer designated as the active sequencer for any other reason, such as, by way of non-limiting example, a software update. order-marked messages 106' and order-marked responses 107' to each other sequencer of the plurality of sequencers 450-1, . . . , 450-2 via each respective fourth direct connection 482. may be configured to allow the standby sequencer to take over for the currently active sequencer. However, the active sequencer, i.e., a given sequencer in the active state, need not forward ordered and marked messages to the standby sequencer, i.e., the sequencer in the standby state; alternatively, continuously, It should be understood that the journal, also known as the state log (which will contain the ordering information therein), may be broadcast/replicated to a standby sequencer such as disclosed above with respect to 1D.

電子取引システム100は、図1Dを参照して上述したようなシステム状態ログ(不図示)をさらに備え得る。アクティブなシーケンサは、共有シーケンサネットワークを介してアクティブなシーケンサから複数のシーケンサの少なくとも1つの他のシーケンサにシステム状態ログを送信するように構成され得る。例えば、共有シーケンサネットワークは、第4の直接接続482を含んでいてもよく、シーケンサ450-1がアクティブ状態にある所与のシーケンサである場合にシステム状態ログはシーケンサ450-1からシーケンサ450-2に送信され得る。 Electronic trading system 100 may further include a system status log (not shown) as described above with reference to FIG. 1D. The active sequencer may be configured to transmit a system state log from the active sequencer to at least one other sequencer of the plurality of sequencers via a shared sequencer network. For example, a shared sequencer network may include a fourth direct connection 482 such that the system state log is logged from sequencer 450-1 to sequencer 450-2 when sequencer 450-1 is a given sequencer in the active state. can be sent to.

図5は、電子取引を実行するための方法の例示実施形態のフロー図500である。方法が開始し(502)、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージを、ゲートウェイからコアコンピュートノードに第1の直接接続を介して送信する(504)。メッセージは、これに対して、電子取引システムにおいて電子取引機能を実行するためにコアコンピュートノードによって受信される。方法は、メッセージをゲートウェイから電子取引システムのシーケンサに第2の直接接続を介して送信し(506)、これに対して、順序マーク付きメッセージをシーケンサからコアコンピュートノードに第3の直接接続を介して送信する(508)。第1、第2及び第3の直接接続は、それぞれの非共有帯域幅を有する。シーケンサは、ゲートウェイとコアコンピュートノードとの間に第2及び第3の直接接続を介して挿入される。シーケンサによって送信された順序マーク付きメッセージは、第2の直接接続を介してゲートウェイから送信されるメッセージの順序付けされたバージョンである。順序マーク付きメッセージは、これに対して、コアコンピュートノードによって受信される。方法は、コアコンピュートノードにおいて、他のメッセージをゲートウェイから受信し、他のメッセージの順序マーク付きバージョンをシーケンサから受信し、コアコンピュートノードにおいて、電子取引システムにおいてコアコンピュートノードによって受信された他のメッセージの順序マーク付きバージョン間で順序マーク付きメッセージの相対順位付けを決定する(510)。コアコンピュートノードは、決定された相対順位付けに応じて、電子取引要求に対する電子取引マッチング機能を完了する。この完了によって、金融商品について指値が反対指値とマッチングされ、当該金融商品の電子取引が可能となる。方法は、その後、例示実施形態において終了する(512)。 FIG. 5 is a flow diagram 500 of an example embodiment of a method for performing electronic transactions. The method begins (502) and sends a message representing an electronic trading request with a limit price to buy or sell a financial instrument from a gateway to a core compute node via a first direct connection (504). Messages, in turn, are received by core compute nodes to perform electronic trading functions in the electronic trading system. The method includes transmitting (506) a message from the gateway to a sequencer of an electronic trading system via a second direct connection, and in response transmitting an order-marked message from the sequencer to a core compute node via a third direct connection. and send it (508). The first, second and third direct connections have respective unshared bandwidths. A sequencer is inserted between the gateway and the core compute node via second and third direct connections. The order marked messages sent by the sequencer are ordered versions of the messages sent from the gateway over the second direct connection. Order marked messages, in turn, are received by core compute nodes. The method includes, at a core compute node, receiving another message from a gateway, receiving an order-marked version of the other message from a sequencer, and, at the core compute node, receiving another message received by the core compute node in an electronic trading system. A relative ranking of the order-marked messages is determined (510) among the order-marked versions of the order-marked messages. The core compute node completes the electronic transaction matching function for the electronic transaction request according to the determined relative ranking. Upon completion of this, the limit price is matched with the counter limit price for the financial product, and electronic trading of the financial product becomes possible. The method then ends (512) in the exemplary embodiment.

メッセージは、ゲートウェイメッセージであり得る。方法は、ゲートウェイにおいて参加者デバイスから着信メッセージを受信するステップをさらに備え得る。ゲートウェイメッセージを送信するステップは、参加者デバイスからゲートウェイによって着信メッセージの受信に応じてゲートウェイによってゲートウェイメッセージを送信するステップを含み得る。順序マーク付きメッセージは、第1の順序マーク付きメッセージであり得る。方法は、第1の順序マーク付きメッセージをシーケンサからゲートウェイに第2の直接接続を介して送信するステップをさらに備え得る。これに対して、第1の順序マーク付きメッセージは、ゲートウェイによって受信される得る。方法は、メッセージの受信に応じて、コアコンピュートノードメッセージをコアコンピュートノードからゲートウェイに第1の直接接続を介して送信するステップと、コアコンピュートノードメッセージをシーケンサに第3の直接接続を介して送信し、これに対して第2の順序マーク付きメッセージをシーケンサからゲートウェイに第2の直接接続を介して送信するステップとをさらに備え得る。第2の順序マーク付きメッセージは、コアコンピュートノードメッセージの順序付けされたバージョンである。方法は、コアコンピュートノードからゲートウェイに送信された第2の順序マーク付きメッセージ及び他のメッセージの順序マーク付きバージョンの相対順位付けをゲートウェイにおいて決定ステップと、発信メッセージを参加者デバイスに送信するステップであって、発信メッセージは決定された相対順位付けに応じて送信される、ステップと、第2の順序マーク付きメッセージをシーケンサからコアコンピュートノードに第3の直接接続を介して送信するステップとをさらに備え得る。 The message may be a gateway message. The method may further comprise receiving an incoming message from a participant device at the gateway. Sending the gateway message may include sending the gateway message by the gateway in response to receiving an incoming message by the gateway from a participant device. The order marked message may be a first order marked message. The method may further comprise transmitting the first order marked message from the sequencer to the gateway via the second direct connection. In contrast, the first order marked message may be received by the gateway. The method includes, in response to receiving the message, transmitting a core compute node message from the core compute node to the gateway via the first direct connection; and transmitting the core compute node message to the sequencer via the third direct connection. and, in response, transmitting a second order-marked message from the sequencer to the gateway via the second direct connection. The second order marked message is an ordered version of the core compute node message. The method includes determining, at the gateway, a relative ranking of a second order-marked message and order-marked versions of other messages sent from a core compute node to the gateway; and transmitting the outgoing message to a participant device. and transmitting the second order-marked message from the sequencer to the core compute node via the third direct connection. I can prepare.

ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。方法は、複数のゲートウェイの各ゲートウェイからのそれぞれのコンピュートノード宛てメッセージを複数のコアコンピュートノードの全てのコアコンピュートノード及びシーケンサに送信するステップをさらに備え得る。方法は、複数のコアコンピュートノードの各コアコンピュートノードからのそれぞれのゲートウェイ宛てメッセージを複数のゲートウェイの全てのゲートウェイ及びシーケンサに送信するステップと、シーケンサにおいて受信されたそれぞれのコンピュートノード宛てメッセージ及びそれぞれのゲートウェイ宛てメッセージに応じて、それぞれの順序マーク付きメッセージをシーケンサから複数のゲートウェイ及び複数のコアコンピュートノードに送信するステップとをさらに備え得る。 The gateway may be a given gateway of a plurality of gateways, and the core compute node may be a given core compute node of a plurality of core compute nodes. The method may further comprise sending a respective compute node-directed message from each gateway of the plurality of gateways to all core compute nodes and the sequencer of the plurality of core compute nodes. The method includes the steps of: transmitting a respective gateway-bound message from each core compute node of the plurality of core compute nodes to all gateways of the plurality of gateways and a sequencer; and transmitting each compute node-bound message received at the sequencer and the respective and transmitting respective order-marked messages from the sequencer to the plurality of gateways and the plurality of core compute nodes in response to the gateway-directed message.

シーケンサは、複数のシーケンサのうちの所与のシーケンサであり得る。方法は、それぞれのコンピュートノード宛てメッセージを複数のゲートウェイの各ゲートウェイから所与のシーケンサに送信するステップと、それぞれのゲートウェイ宛てメッセージを複数のコアコンピュートノードの各コアコンピュートノードから所与のシーケンサに送信するステップと、順序マーク付きメッセージを所与のシーケンサから複数のシーケンサのうちの他の各シーケンサに送信するステップとをさらに備え得る。 The sequencer may be a given sequencer among a plurality of sequencers. The method includes the steps of: sending a message addressed to each compute node from each gateway of the plurality of gateways to a given sequencer; and sending a message addressed to each gateway from each core compute node of the plurality of core compute nodes to the given sequencer. and sending an order-marked message from a given sequencer to each other of the plurality of sequencers.

方法は、複数のコアコンピュートノードにおいて同じメッセージを受信するステップであって、同じメッセージは所与のゲートウェイによって送信されたそれぞれのコンピュートノード宛てメッセージである、ステップと、同じメッセージの受信に応じて、複数のコアコンピュートノードにおいて応答メッセージを生成するステップと、所与のゲートウェイにおいて、複数のコアコンピュートノードの中から応答メッセージを受信するステップとをさらに備え得る。方法は、同じメッセージの受信に応じて生成された応答メッセージのうちの所与の応答メッセージに基づいて所与のゲートウェイにおいて行動を実行するステップをさらに備え得る。所与の応答メッセージは、同じメッセージの受信に応じて生成された応答メッセージのうちの他の応答メッセージに相対して最初に所与のゲートウェイに到着するものであり得る。方法は、所与の応答メッセージの後に所与のゲートウェイに到着する他の応答メッセージを無視するステップをさらに備え得る。このように、「同じメッセージ」とは、単一のゲートウェイから全てのコンピュートノードにブロードキャストされ、それにより、各コンピュートノードが当該単一のメッセージの1つのコピーを取得するような単一のメッセージをいう。そして、複数のコンピュートノードの各々は、当該単一の同じメッセージに応答し、複数の機能的に同等な応答が、所与のゲートウェイによって受信されることなど、全てのゲートウェイにブロードキャストされることになり得る。そして、所与のゲートウェイを含むゲートウェイは、これら複数の機能的に同等なメッセージを「先着」順にソートすることができる。 The method includes receiving the same message at a plurality of core compute nodes, the same message being a message addressed to each compute node sent by a given gateway; The method may further include generating a response message at the plurality of core compute nodes, and receiving the response message from among the plurality of core compute nodes at a given gateway. The method may further comprise performing an action at a given gateway based on a given response message of the response messages generated in response to receiving the same message. A given response message may be the first to arrive at a given gateway relative to other response messages generated in response to receipt of the same message. The method may further comprise ignoring other response messages that arrive at the given gateway after the given response message. Thus, the "same message" refers to a single message that is broadcast from a single gateway to all Compute nodes such that each Compute node obtains one copy of the single message. say. Each of the multiple compute nodes then responds to the same single message, and multiple functionally equivalent responses are broadcast to all gateways, such that they are received by a given gateway. It can be. Gateways, including a given gateway, can then sort these multiple functionally equivalent messages on a "first come, first served" basis.

方法は、所与のコンピュートノードにおいて、複数のゲートウェイのうちの少なくとも2つのゲートウェイから複数のコンピュートノード宛てメッセージを受信するステップを備え得る。複数のコンピュートノード宛てメッセージの各コンピュートノード宛てメッセージは、同じメッセージのそれぞれのバージョンを表してもよく、それぞれのバージョンはそれぞれの高可用性フローを介して少なくとも2つのゲートウェイのうちのそれぞれのゲートウェイに入力されている。方法は、複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて所与のコンピュートノードにおいて行動を実行するステップをさらに備え得る。所与のコンピュートノード宛てメッセージは、複数のコンピュートノード宛てメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に所与のコンピュートノードに到着するものであり得る。方法は、所与のコンピュートノード宛てメッセージの後に所与のコンピュートノードに到着する他のコンピュートノード宛てメッセージを無視するステップをさらに備え得る。 The method may comprise receiving, at a given compute node, messages destined for the plurality of compute nodes from at least two gateways of the plurality of gateways. Each Compute node-destined message of a plurality of Compute node-destined messages may represent a respective version of the same message, each version entering a respective one of the at least two gateways via a respective high availability flow. has been done. The method may further include performing an action at the given compute node based on the given compute node-directed message of the plurality of compute node-directed messages. A message destined for a given compute node may be the first one to arrive at the given compute node relative to other messages destined for the compute node among the plurality of messages destined for the compute node. The method may further comprise ignoring messages destined for other compute nodes that arrive at the given compute node after the message destined for the given compute node.

方法は、実行される電子取引マッチング機能に基づいて、コアコンピュートノードにおいて、金融商品に関する取引注文をマッチングさせるステップをさらに備え得る。方法は、注文控え帳における金融商品の残持ち高を維持するステップをさらに備えていてもよく、残持ち高は実行された電子取引マッチング機能によってもたらされた金融商品の金額不一致である。 The method may further comprise matching trade orders for the financial instrument at the core compute node based on the electronic trade matching function performed. The method may further comprise maintaining a balance balance of the financial instrument in the order book, where the balance balance is an amount mismatch of the financial instrument resulting from the executed electronic trade matching function.

方法は、ゲートウェイ、コアコンピュートノード及びシーケンサをクロックに基づいて同期させるステップをさらに備え得る。 The method may further include synchronizing the gateway, the core compute node, and the sequencer based on a clock.

メッセージは、ゲートウェイメッセージであり得る。方法は、ゲートウェイにおいて少なくとも1つの参加者デバイスにサービスを提供するステップと、ゲートウェイにおいて着信メッセージを受信するステップと、ゲートウェイにおける着信メッセージの受信に応じてゲートウェイメッセージをゲートウェイからシーケンサ及びコアコンピュートノードに送信するステップとをさらに備え得る。着信メッセージは、少なくとも1つの参加者デバイスによって発送されたものであり得る。方法は、固有順序識別子を用いてメッセージ又はその表示をマーク付けすることによって、順序マーク付きメッセージを生成するステップをさらに備え得る。 The message may be a gateway message. The method includes the steps of: providing service to at least one participant device at a gateway; receiving an incoming message at the gateway; and transmitting a gateway message from the gateway to a sequencer and a core compute node in response to receiving the incoming message at the gateway. The method may further include the step of: The incoming message may have been dispatched by at least one participant device. The method may further comprise generating an ordinal marked message by marking the message or representation thereof with a unique ordinal identifier.

方法は、第1の直接接続、第2の直接接続及び第3の直接接続又はこれらの一部の組を、少なくとも1つのそれぞれの冗長直接接続を介して保護するステップをさらに備え得る。 The method may further comprise protecting the first direct connection, the second direct connection, and the third direct connection, or a subset thereof via at least one respective redundant direct connection.

ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、シーケンサは複数のシーケンサのうちの所与のシーケンサであり得る。方法は、複数のゲートウェイが共有ゲートウェイネットワークを介して通信可能となるようにするステップと、複数のコアコンピュートノードが共有コアコンピュートノードネットワークを介して通信可能となるようにするステップと、複数のシーケンサが共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して通信可能となるようにするステップとをさらに備え得る。 The gateway is a given gateway of the plurality of gateways, the core compute node is a given core compute node of the plurality of core compute nodes, and the sequencer is a given sequencer of the plurality of sequencers. obtain. The method includes the steps of: enabling a plurality of gateways to communicate via a shared gateway network; enabling a plurality of core compute nodes to communicate via a shared core compute node network; communicable via a shared sequencer network or via a respective fourth direct connection.

方法は、所与のシーケンサから複数のシーケンサのうちの少なくとも1つの他のシーケンサに共有シーケンサネットワークを介してシステム状態ログを送信し、又は所与のシーケンサによってシステム状態ログをデータストアに記憶するステップをさらに備え得る。データストアは、共有シーケンサネットワークを介して複数のシーケンサにアクセス可能であり得る。 The method includes the steps of transmitting a system state log from a given sequencer to at least one other sequencer of a plurality of sequencers via a shared sequencer network, or storing the system state log by a given sequencer in a data store. It may further include: A data store may be accessible to multiple sequencers via a shared sequencer network.

電子取引システムは、アクティブな電子取引システムであり得る。方法は、複数のシーケンサのうちの少なくとも1つのシーケンサがディザスタリカバリサイトと通信可能となるようにするステップを備え得る。ディザスタリカバリサイトは、スタンバイ電子取引システムを含み得る。スタンバイ電子取引システムは、アクティブな電子取引システムの複製であり、アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成され得る。 The electronic trading system may be an active electronic trading system. The method may include enabling at least one sequencer of the plurality of sequencers to communicate with a disaster recovery site. A disaster recovery site may include a standby electronic trading system. The standby electronic trading system is a replica of the active electronic trading system and may be configured to allow electronic trading to continue if the active electronic trading system fails.

図6は、以上に開示した電子取引システム100などの電子取引システムのシーケンサ650の例示実施形態のブロック図である。例示実施形態では、シーケンサ650は、以上に開示した電子取引システム100のポイントツーポイントメッシュシステム102などのポイントツーポイントメッシュシステムにおいて第1の直接接続680aを介してゲートウェイ620と直接通信するように構成された第1の通信モジュール652を備える。シーケンサ650は、電子取引システムにおけるポイントツーポイントメッシュシステムにおいて第2の直接接続680bを介してコアコンピュートノード640と直接通信するように構成された第2の通信モジュール654をさらに備える。シーケンサ650は、第1の通信モジュール652及び第2の通信モジュール654と結合された順序付けロジック656をさらに備える。 FIG. 6 is a block diagram of an exemplary embodiment of a sequencer 650 of an electronic trading system, such as electronic trading system 100 disclosed above. In the exemplary embodiment, sequencer 650 is configured to communicate directly with gateway 620 via first direct connection 680a in a point-to-point mesh system, such as point-to-point mesh system 102 of electronic trading system 100 disclosed above. A first communication module 652 is provided. Sequencer 650 further comprises a second communication module 654 configured to communicate directly with core compute node 640 via a second direct connection 680b in a point-to-point mesh system in an electronic trading system. Sequencer 650 further includes sequencing logic 656 coupled to first communication module 652 and second communication module 654 .

順序付けロジック656は、メッセージ606又はその表示を固有順序識別子(不図示)でマーク付けすることによって順序マーク付きメッセージ606´を生成するように構成され、メッセージ606は、それぞれ第1の直接接続680a又は第2の直接接続680bを介して第1の通信モジュール652又は第2の通信モジュール654によって受信される。順序付けロジック656はさらに、順序マーク付きメッセージ606´を、それぞれ第1の通信モジュール652及び第2の通信モジュール654を介してゲートウェイ620及びコアコンピュートノード640に送信するように構成される。 The ordering logic 656 is configured to generate an order-marked message 606' by marking the message 606 or an indication thereof with a unique order identifier (not shown), such that the message 606 is associated with the first direct connection 680a or Received by first communication module 652 or second communication module 654 via second direct connection 680b. Ordering logic 656 is further configured to send order marked messages 606' to gateway 620 and core compute node 640 via first communication module 652 and second communication module 654, respectively.

例示実施形態によると、順序付けロジックは、例えば、以上に開示した図2の固定ロジックデバイス230におけるFPGAの論理の部分又はASICである。さらに、通信モジュール652及び654の双方とも、FPGAにおいて、例えば、図2を参照して以上に開示した10 GigE MACコア260において実施され得る。 According to an exemplary embodiment, the ordering logic is, for example, part of the logic of an FPGA or an ASIC in the fixed logic device 230 of FIG. 2 disclosed above. Additionally, both communication modules 652 and 654 may be implemented in an FPGA, such as the 10 GigE MAC core 260 disclosed above with reference to FIG. 2.

図7は、以上に開示した図1B-1及び図1B-2の電子取引システム100などの電子取引システムの他の例示実施形態のブロック図である。図1B-2及び図7を参照すると、ゲートウェイ120-1、コアコンピュートノード140-1、シーケンサ150-1、第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1が第1のポイントツーポイントメッシュシステム702aを構成する。電子取引システム100は、プロキシノード772と通信可能に結合した第1の電子取引システム700aであり得る。プロキシノード772は、さらに、少なくとも1つの参加者デバイス730及び第2の電子取引システム700bと通信可能に結合され得る。第2の電子取引システム700bは、図1B-2に関して以上に開示したポイントツーポイントメッシュシステム102などの第2のポイントツーポイントメッシュシステム702bを含み得る。 FIG. 7 is a block diagram of another exemplary embodiment of an electronic trading system, such as electronic trading system 100 of FIGS. 1B-1 and 1B-2, disclosed above. 1B-2 and FIG. 7, gateway 120-1, core compute node 140-1, sequencer 150-1, first direct connection 180-1-1, second direct connection 180-gw1-s1 and A third direct connection 180-c1-s1 constitutes a first point-to-point mesh system 702a. Electronic trading system 100 may be a first electronic trading system 700a communicatively coupled to proxy node 772. Proxy node 772 may further be communicatively coupled to at least one participant device 730 and second electronic trading system 700b. The second electronic trading system 700b may include a second point-to-point mesh system 702b, such as the point-to-point mesh system 102 disclosed above with respect to FIG. 1B-2.

プロキシノード772は、少なくとも1つの参加者デバイス730からの着信メッセージ703の受信に応じて、メッセージ703´を第1の電子取引システム700a及び第2の電子取引システム700bに送信するように構成される。第1及び第2の電子取引システムは、プロキシノード772によって送信されたメッセージに対するそれぞれの応答を生成するように構成され得る。プロキシノード772は、さらに、第1の電子取引システム700a又は第2の電子取引システム700bから受信された第1の到着応答705´の受信に応じて、応答、すなわち、発信メッセージ705を少なくとも1つの参加者デバイス730に送信するように構成され得る。第1の電子取引システム700a及び第2の電子取引システム700bは、例えば、日時を提供する共通のクロックに基づいて、例えば、同期され得る(777)。ただし、第1の電子取引システム700a及び第2の電子取引システム700bは、共通のクロックに基づいて同期されること(777)に限定されない。 Proxy node 772 is configured to send a message 703' to first electronic trading system 700a and second electronic trading system 700b in response to receiving an incoming message 703 from at least one participant device 730. . The first and second electronic trading systems may be configured to generate respective responses to messages sent by proxy node 772. The proxy node 772 further sends a response, i.e., an outgoing message 705, to at least one incoming response 705' received from the first electronic trading system 700a or the second electronic trading system 700b. The information may be configured to transmit to participant device 730. The first electronic trading system 700a and the second electronic trading system 700b may be synchronized (777), for example, based on a common clock that provides date and time, for example. However, the first electronic trading system 700a and the second electronic trading system 700b are not limited to being synchronized based on a common clock (777).

例示実施形態によると、電子取引システム700a及び電子取引システム700bの双方を包含する全体のシステムの単一のアクティブ/プライマリシーケンサ(不図示)は、電子取引システム700aと電子取引システム700bの間の順序番号を調整するのに採用され得る。例えば、単一のアクティブ/プライマリシーケンサは、到着応答705´が電子取引システム700a及び電子取引システム700bの双方によって同じ順序番号を割り当てられるようにこの順序番号を調整してもよく、それにより、プロキシノード772はメッセージの相対順位付けを適切に決定できる。例えば、単一のアクティブ/プライマリシーケンサが電子取引システム700aにある場合、例えば、アクティブシーケンサは電子取引システム700bにおいてスタンバイシーケンサと通信することによって電子取引システム700bと通信するように構成されてもよく、順序番号はメッセージ毎に割り当てられる。 According to an exemplary embodiment, a single active/primary sequencer (not shown) for the entire system that includes both electronic trading system 700a and electronic trading system 700b is a It can be employed to adjust the number. For example, a single active/primary sequencer may adjust the sequence number such that an incoming response 705' is assigned the same sequence number by both electronic trading system 700a and electronic trading system 700b, thereby allowing the proxy Node 772 can appropriately determine the relative ranking of messages. For example, if there is a single active/primary sequencer in electronic trading system 700a, the active sequencer may be configured to communicate with electronic trading system 700b by communicating with a standby sequencer in electronic trading system 700b, for example; A sequence number is assigned to each message.

ポイントツーポイントメッシュアーキテクチャなどの上記アーキテクチャは、電子取引システム以外の用途で使用され得る。例えば、証券取引注文を扱う以外の用途のために、ネットワークを流れるデータストリームを監視し、パケットを捕捉し、パケットの生データを復号し、パケットの内容をリアルタイムで分析し、応答を提供するために使用され得ることが可能である。 The above architectures, such as point-to-point mesh architectures, may be used in applications other than electronic trading systems. For example, to monitor data streams flowing through a network, capture packets, decode the raw data of the packets, analyze the contents of the packets in real time, and provide responses for purposes other than processing securities trading orders. It is possible that it can be used for

さらに、ここで開示される例示実施形態は、コンピュータプログラム製品を使用して構成されてもよく、例えば、制御が、例示実施形態を実施するためのソフトウェアにプログラムされてもよい。更なる例示実施形態は、プロセッサによって実行され得る命令を含む非一時的なコンピュータ可読媒体を含んでいてもよく、読み込まれて実行されると、ここに記載される方法をプロセッサに完了させることができる。ブロック図及びフロー図の要素は、以上に開示した図2の回路の1つ以上の配置、又はその均等物、ファームウェア、カスタム設計された半導体ロジック、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、それらの組合せ、又は将来的に決定する他の同様の実施例などによって、ソフトウェア又はハードウェアで実施されてもよいことが理解されるべきである。 Additionally, the example embodiments disclosed herein may be implemented using a computer program product, for example, controls may be programmed into software for implementing the example embodiments. Further example embodiments may include a non-transitory computer-readable medium containing instructions executable by a processor that, when loaded and executed, cause the processor to complete the methods described herein. can. Elements of the block diagrams and flow diagrams may include one or more arrangements of the circuits of FIG. 2 disclosed above, or equivalents thereof, firmware, custom designed semiconductor logic, application specific integrated circuits (ASICs), field programmable gates, etc. It should be understood that it may be implemented in software or hardware, such as by an array (FPGA), a combination thereof, or other similar implementations to be determined in the future.

さらに、ここで記載されたブロック図及びフロー図の要素は、ソフトウェア、ハードウェア又はファームウェアにおいて、任意の方法で組み合わせ又は分割され得る。ソフトウェアで実施される場合、ソフトウェアは、ここに開示される例示実施形態に対応し得る任意の言語で書かれてもよい。ソフトウェアは、1以上のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、コンパクトディスク読み取り専用メモリ(CD-ROM)などの任意の形態のコンピュータ可読媒体に記憶されてもよい。動作において、汎用又は特定用途向けプロセッサ又は処理コアは、当技術分野でよく理解されている方法でソフトウェアを読み込み、実行する。さらに、ブロック図及びフロー図は、より多数の又はより少数の要素を含み、異なる態様で配置若しくは配向され、又は異なるように表現されてもよいことが理解されるべきである。実施例は、ここに開示される実施形態の実行を示すブロック図、フロー図及び/又はネットワーク図並びにブロック図及びフロー図の数を決定し得ることが理解されるべきである。 Furthermore, the elements of the block diagrams and flow diagrams described herein may be combined or divided in any manner in software, hardware, or firmware. If implemented in software, the software may be written in any language that may be compatible with the example embodiments disclosed herein. The software may be stored on any form of computer readable media, such as one or more random access memory (RAM), read only memory (ROM), compact disk read only memory (CD-ROM), and the like. In operation, a general or special purpose processor or processing core loads and executes software in a manner that is well understood in the art. Additionally, it is to be understood that the block diagrams and flow diagrams may include more or fewer elements, be arranged or oriented in different manners, or be represented differently. It should be understood that the examples may determine the number of block diagrams, flow diagrams and/or network diagrams and block diagrams and flow diagrams illustrating the implementation of the embodiments disclosed herein.

したがって、更なる実施形態は、様々なコンピュータアーキテクチャ、物理的な、仮想的な、クラウドのコンピュータ及び/又はそれらの何らかの組合せで実施されてもよく、したがって、ここに記載されるデータ処理システムは例示のみを目的としており、実施形態の限定を意図するものではない。 Accordingly, further embodiments may be implemented with a variety of computer architectures, physical, virtual, cloud computers, and/or any combination thereof; thus, the data processing systems described herein are exemplary. and is not intended as a limitation of the embodiments.

例示実施形態を具体的に図示及び説明してきたが、添付の特許請求の範囲によって包含される実施形態の範囲から逸脱することなく、形態及び詳細における種々の変更がここでなされ得ることは当業者に理解されるはずである。
While the exemplary embodiments have been specifically shown and described, those skilled in the art will appreciate that various changes in form and detail may be made therein without departing from the scope of the embodiments encompassed by the appended claims. should be understood.

Claims (30)

電子取引システムであって、
ゲートウェイと、
電子取引マッチング機能を実行するように構成されたコアコンピュートノードと、
シーケンサと、
を備え、
前記ゲートウェイと前記コアコンピュートノードとは第1の直接接続を介して結合され、前記ゲートウェイと前記シーケンサとは第2の直接接続を介して結合され、前記シーケンサと前記コアコンピュートノードとは第3の直接接続を介して結合され、前記第1、第2及び第3の直接接続はそれぞれの非共有帯域幅を有し、
前記ゲートウェイは、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージを前記コアコンピュートノードに前記第1の直接接続を介して送信するように構成され、これに対して、前記メッセージは、前記コアコンピュートノードによって受信され、前記ゲートウェイはさらに、前記メッセージを前記シーケンサに前記第2の直接接続を介して送信するように構成され、前記シーケンサは、これに対して順序マーク付きメッセージを前記コアコンピュートノードに前記第3の直接接続を介して送信するように構成され、前記シーケンサは、前記ゲートウェイと前記コアコンピュートノードの間に前記第2及び第3の直接接続を介して挿入され、前記シーケンサによって送信される前記順序マーク付きメッセージは、前記ゲートウェイによって送信された前記メッセージの順序付けされたバージョンであり、これに対して、前記順序マーク付きメッセージは、前記コアコンピュートノードによって受信され、前記コアコンピュートノードは、前記電子取引システムにおいて前記コアコンピュートノードによって受信される他のメッセージの順序マーク付きバージョンの間で前記順序マーク付きメッセージの相対順位付けを決定するように構成され、前記コアコンピュートノードはさらに、決定された前記相対順位付けに応じて前記電子取引要求について前記電子取引マッチング機能を完了し、前記金融商品について前記指値を相手方指値とマッチングさせ、前記金融商品の電子取引を可能とするように構成されている、電子取引システム。
An electronic trading system,
gateway and
a core compute node configured to perform electronic transaction matching functionality;
sequencer and
Equipped with
The gateway and the core compute node are coupled via a first direct connection, the gateway and the sequencer are coupled via a second direct connection, and the sequencer and the core compute node are coupled via a third direct connection. coupled via a direct connection, the first, second and third direct connections having respective non-shared bandwidths;
The gateway is configured to send a message representing an electronic trading request with a limit price to buy or sell a financial instrument to the core compute node via the first direct connection; is received by the core compute node, and the gateway is further configured to send the message to the sequencer via the second direct connection, and the sequencer receives an order-marked message therefrom. configured to transmit to the core compute node via the third direct connection, the sequencer inserted between the gateway and the core compute node via the second and third direct connections; The order-marked messages sent by the sequencer are ordered versions of the messages sent by the gateway, whereas the order-marked messages are received by the core compute node and The core compute node is configured to determine a relative ranking of the order-marked message among order-marked versions of other messages received by the core compute node in the electronic trading system, and the core compute node further completes the electronic transaction matching function for the electronic transaction request according to the determined relative ranking, matches the limit price with a counterparty limit price for the financial instrument, and enables electronic trading of the financial instrument. An electronic trading system configured as follows.
前記メッセージ及び前記順序マーク付きメッセージは同一のユーザデータを含み、該ユーザデータは前記電子取引要求に対応付けられる、請求項1に記載の電子取引システム。 2. The electronic trading system of claim 1, wherein the message and the order marked message include the same user data, and the user data is associated with the electronic trading request. 前記メッセージは、参加者デバイスから前記ゲートウェイによって受信された着信メッセージの受信に応じて前記ゲートウェイによって送信されたゲートウェイメッセージであり、前記シーケンサはさらに、これに対して、前記順序マーク付きメッセージを前記ゲートウェイに前記第2の直接接続を介して送信するように構成され、これに対して、前記順序マーク付きメッセージは前記ゲートウェイによって受信され、前記順序マーク付きメッセージは第1の順序マーク付きメッセージであり、前記コアコンピュートノードはさらに、
前記ゲートウェイメッセージの受信に応じて、コアコンピュートノードメッセージを前記ゲートウェイに前記第1の直接接続を介して送信するように構成され、
前記コアコンピュートノードメッセージを前記シーケンサに前記第3の直接接続を介して送信するように構成され、前記シーケンサはさらに、これに対して第2の順序マーク付きメッセージを前記ゲートウェイに前記第2の直接接続を介して送信するように構成され、前記第2の順序マーク付きメッセージは前記コアコンピュートノードメッセージの順序付けされたバージョンであり、前記ゲートウェイはさらに、
前記コアコンピュートノードから前記ゲートウェイに送信された前記第2の順序マーク付きメッセージ及び他のメッセージの順序マーク付きバージョンの前記相対順位付けを決定するように構成され、
発信メッセージを前記参加者デバイスに送信するように構成され、前記発信メッセージは決定された前記相対順位付けに応じて送信され、前記シーケンサはさらに、これに対して前記第2の順序マーク付きメッセージを前記コアコンピュートノードに前記第3の直接接続を介して送信するように構成されている、請求項1に記載の電子取引システム。
the message is a gateway message sent by the gateway in response to receipt of an incoming message received by the gateway from a participant device; via the second direct connection, wherein the order-marked message is received by the gateway, and the order-marked message is a first order-marked message; The core compute node further includes:
configured to send a core compute node message to the gateway via the first direct connection in response to receiving the gateway message;
The core compute node message is configured to send to the sequencer via the third direct connection, and the sequencer is further configured to send a second order marked message to the gateway via the second direct connection. configured to send over a connection, the second order-marked message being an ordered version of the core compute node message, the gateway further configured to:
configured to determine the relative ranking of order-marked versions of the second order-marked message and other messages sent from the core compute node to the gateway;
The sequencer is configured to send an outgoing message to the participant device, the outgoing message being sent in accordance with the determined relative ranking, and the sequencer further configured to send the second order marked message thereto. The electronic trading system of claim 1, configured to transmit to the core compute node via the third direct connection.
前記ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、前記コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、
前記複数のゲートウェイの各前記ゲートウェイは、前記複数のコアコンピュートノードの各前記コアコンピュートノードにそれぞれの前記第1の直接接続を介して結合され、
前記シーケンサは、前記複数のゲートウェイの各前記ゲートウェイにそれぞれの前記第2の直接接続を介して結合され、前記複数のコアコンピュートノードの各前記コアコンピュートノードにそれぞれの前記第3の直接接続を介して結合され、前記複数のゲートウェイ、前記複数のコアコンピュートノード、前記シーケンサ及びそれぞれの直接接続は、ポイントツーポイントメッシュシステムの少なくとも一部分を構成し、該ポイントツーポイントメッシュシステム内で、
前記複数のゲートウェイの各前記ゲートウェイは、そこから送信されるそれぞれのコンピュートノード宛てメッセージを前記複数のコアコンピュートノードの全てのコンピュートノード及び前記シーケンサに送信するように構成され
前記複数のコアコンピュートノードの各前記コアコンピュートノードは、そこから送信されたそれぞれのゲートウェイ宛てメッセージを前記複数のゲートウェイの全ての前記ゲートウェイ及び前記シーケンサに送信するように構成され、
前記シーケンサはさらに、前記それぞれのコンピュートノード宛てメッセージ又は前記それぞれのゲートウェイ宛てメッセージの受信に応じて、それぞれの前記順序マーク付きメッセージを前記複数のゲートウェイ及び前記複数のコアコンピュートノードに送信するように構成されている、請求項1に記載の電子取引システム。
the gateway is a given gateway of a plurality of gateways; the core compute node is a given core compute node of the plurality of core compute nodes;
each gateway of the plurality of gateways is coupled to each core compute node of the plurality of core compute nodes via a respective first direct connection;
The sequencer is coupled to each of the plurality of gateways via a respective second direct connection and to each of the plurality of core compute nodes via a respective third direct connection. and the plurality of gateways, the plurality of core compute nodes, the sequencer and their respective direct connections constitute at least a portion of a point-to-point mesh system, within the point-to-point mesh system:
each gateway of the plurality of gateways is configured to send messages destined for a respective compute node sent therefrom to all compute nodes of the plurality of core compute nodes and the sequencer; each said core compute node is configured to send messages sent therefrom addressed to a respective gateway to all said gateways and said sequencer of said plurality of gateways;
The sequencer is further configured to send each of the order-marked messages to the plurality of gateways and the plurality of core compute nodes in response to receiving a message directed to the respective compute node or a message directed to the respective gateway. The electronic trading system according to claim 1, wherein the electronic trading system is
前記シーケンサは、前記ポイントツーポイントメッシュシステムにおける複数のシーケンサのうちの所与のシーケンサであり、
前記複数のゲートウェイの各前記ゲートウェイは、前記複数のシーケンサの各前記シーケンサにそれぞれの前記第2の直接接続を介して結合され、
前記複数のコアコンピュートノードの各前記コアコンピュートノードは、前記複数のシーケンサの各前記シーケンサにそれぞれの前記第3の直接接続を介して結合され、
前記所与のシーケンサは前記ポイントツーポイントメッシュシステムにサービス提供中の現在アクティブなシーケンサであり、前記複数のシーケンサの他の各シーケンサは前記現在アクティブなシーケンサを引き継ぐために待機しているスタンバイシーケンサであり、
前記複数のシーケンサの各前記シーケンサは、前記複数のシーケンサの他の各シーケンサにそれぞれの第4の直接接続を介して結合され、
前記複数のゲートウェイの各前記ゲートウェイはさらに、それぞれのコンピュートノード宛てメッセージを前記複数のシーケンサのうちの前記所与のシーケンサに送信するように構成され、
前記複数のコアコンピュートノードの各前記コアコンピュートノードはさらに、それぞれのゲートウェイ宛てメッセージを前記複数のシーケンサのうちの前記所与のシーケンサに送信するように構成され、
前記所与のシーケンサにはさらに、前記順序マーク付きメッセージを前記複数のシーケンサの他の各シーケンサに各それぞれの前記第4の直接接続を介して送信して、前記現在アクティブなシーケンサが故障した場合に、前記スタンバイシーケンサが前記現在アクティブなシーケンサを引き継ぐことを可能とするように構成されている、請求項4に記載の電子取引システム。
the sequencer is a given sequencer among a plurality of sequencers in the point-to-point mesh system;
each said gateway of said plurality of gateways is coupled to each said sequencer of said plurality of sequencers via a respective said second direct connection;
each of the core compute nodes of the plurality of core compute nodes is coupled to each of the sequencers of the plurality of sequencers via a respective third direct connection;
The given sequencer is the currently active sequencer serving the point-to-point mesh system, and each other sequencer of the plurality of sequencers is a standby sequencer waiting to take over the currently active sequencer. can be,
each said sequencer of said plurality of sequencers is coupled to each other of said plurality of sequencers via a respective fourth direct connection;
Each gateway of the plurality of gateways is further configured to send a message addressed to a respective compute node to the given sequencer of the plurality of sequencers;
Each core compute node of the plurality of core compute nodes is further configured to send a respective gateway-directed message to the given sequencer of the plurality of sequencers;
The given sequencer is further configured to transmit the order marked message to each other sequencer of the plurality of sequencers via each respective fourth direct connection if the currently active sequencer fails. 5. The electronic trading system of claim 4, wherein the standby sequencer is configured to allow the currently active sequencer to take over.
前記所与のゲートウェイによって送信される前記それぞれのコンピュートノード宛てメッセージは、前記複数のコアコンピュートノードによって受信される同じメッセージであり、前記複数のコアコンピュートノードは、前記同じメッセージの受信に応じて、応答メッセージを生成するように構成され、該応答メッセージは前記複数のコアコンピュートノードの中から前記所与のゲートウェイにおいて受信され、前記所与のゲートウェイはさらに、
前記同じメッセージの受信に応じて生成された前記応答メッセージのうちの所与の応答メッセージに基づいて行動をとるように構成され、該所与の応答メッセージは前記同じメッセージの受信に応じて生成された他の応答メッセージに相対して最初に前記所与のゲートウェイに到着するものであり、前記所与のゲートウェイはさらに、
前記所与の応答メッセージの後に到着する前記他の応答メッセージを無視するように構成されている、請求項4に記載の電子取引システム。
the respective compute node-directed messages sent by the given gateway are the same messages received by the plurality of core compute nodes, and the plurality of core compute nodes, in response to receiving the same message, configured to generate a response message, the response message being received at the given gateway from among the plurality of core compute nodes, the given gateway further comprising:
configured to take action based on a given one of the response messages generated in response to receipt of the same message, the given response message being generated in response to reception of the same message; arriving at said given gateway first relative to other response messages, said given gateway further comprising:
5. The electronic trading system of claim 4, configured to ignore the other response messages that arrive after the given response message.
同じメッセージを表す複数のコンピュートノード宛てメッセージは、前記所与のコンピュートノードにおいて前記複数のゲートウェイの中から受信され、前記所与のコンピュートノードはさらに、
前記複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて行動をとるように構成され、該所与のコンピュートノード宛てメッセージは前記同じメッセージを表す前記複数のコンピュートノード宛てメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に前記所与のコンピュートノードに到着するものであり、前記所与のコンピュートノードはさらに、
前記所与のコンピュートノード宛てメッセージの後に到着する前記他のコンピュートノード宛てメッセージを無視するように構成されている、請求項4に記載の電子取引システム。
Messages addressed to multiple compute nodes representing the same message are received from among the multiple gateways at the given compute node, and the given compute node further:
The device is configured to take action based on a given Compute node-directed message of the plurality of Compute node-directed messages, where the given Compute node-directed message is one of the plurality of Compute node-directed messages representing the same message. arrives at the given Compute node first relative to messages addressed to other Compute nodes, and the given Compute node further:
5. The electronic trading system of claim 4, configured to ignore messages destined for the other compute nodes that arrive after the message destined for the given compute node.
前記コアコンピュートノードによってアクセス可能な注文控え帳をさらに備え、前記コアコンピュートノードはさらに、
前記電子取引マッチング機能を用いて前記金融商品に関する取引注文をマッチングさせるように構成され、
前記注文控え帳における前記金融商品の残持ち高を維持するように構成され、前記金融商品の金額不一致が、前記電子取引マッチング機能を実行する結果としてもたらされ、前記残持ち高は前記金融商品の前記金額不一致を含む、請求項1に記載の電子取引システム。
further comprising an order book accessible by the core compute node, the core compute node further comprising:
configured to match trade orders regarding the financial instrument using the electronic trade matching functionality;
configured to maintain a balance balance of the financial instrument in the order book, wherein an amount mismatch of the financial instrument results from performing the electronic transaction matching function; The electronic trading system according to claim 1, wherein the electronic trading system includes the amount mismatch of.
クロックをさらに備え、前記ゲートウェイ、前記コアコンピュートノード及び前記シーケンサは、前記クロックに基づいて同期される、請求項1に記載の電子取引システム。 The electronic trading system of claim 1, further comprising a clock, and wherein the gateway, the core compute node, and the sequencer are synchronized based on the clock. 前記ゲートウェイはさらに、
少なくとも1つの参加者デバイスにサービスを提供するように構成され、
前記ゲートウェイにおける着信メッセージの受信に応じて前記メッセージを前記シーケンサ及び前記コアコンピュートノードに送信するように構成され、前記着信メッセージは前記少なくとも1つの参加者デバイスによって発送され、前記シーケンサはさらに、固有順序識別子を用いて前記メッセージをマーク付けすることによって、又は受信した前記メッセージの表示を作成し、前記固有順序識別子を用いて前記表示をマーク付けし、マーク付けされた表示を送信することによって、前記順序マーク付きメッセージを生成するように構成され、前記マーク付けされた表示は前記順序マーク付きメッセージである、請求項1に記載の電子取引システム。
The gateway further includes:
configured to provide service to at least one participant device;
the sequencer is configured to send the message to the sequencer and the core compute node in response to receiving an incoming message at the gateway, the incoming message is routed by the at least one participant device, and the sequencer further comprises: said message by marking said message with an identifier, or by creating an indication of said message received, marking said indication with said unique ordinal identifier, and sending said marked indication; 2. The electronic trading system of claim 1, configured to generate an order-marked message, and wherein the marked representation is the order-marked message.
前記第1の直接接続、前記第2の直接接続及び前記第3の直接接続又はこれらの一部の組について、少なくとも1つのそれぞれの冗長直接接続をさらに備える請求項1に記載の電子取引システム。 2. The electronic trading system of claim 1, further comprising at least one respective redundant direct connection for the first direct connection, the second direct connection, and the third direct connection, or a subset thereof. 前記ゲートウェイは、共有ゲートウェイネットワークを介して相互に通信可能に結合された複数のゲートウェイのうちの所与のゲートウェイであり、
前記コアコンピュートノードは、共有コアコンピュートノードネットワークを介して相互に通信可能に結合された複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、
前記シーケンサは、共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して相互に通信可能に結合された複数のシーケンサのうちの所与のシーケンサである、請求項1に記載の電子取引システム。
the gateway is a given gateway of a plurality of gateways communicatively coupled to each other via a shared gateway network;
The core compute node is a given core compute node among a plurality of core compute nodes communicatively coupled to each other via a shared core compute node network;
2. The electronic transaction of claim 1, wherein the sequencer is a given sequencer of a plurality of sequencers communicatively coupled to each other via a shared sequencer network or via a respective fourth direct connection. system.
システム状態ログをさらに備え、前記所与のシーケンサは、前記システム状態ログを前記複数のシーケンサのうちの少なくとも1つの他のシーケンサに前記共有シーケンサネットワークを介して送信し、又は前記システム状態ログをデータストアに記憶するように構成され、該データストアは、前記共有シーケンサネットワークを介して前記複数のシーケンサにアクセス可能である、請求項12に記載の電子取引システム。 further comprising a system state log, the given sequencer transmitting the system state log to at least one other sequencer of the plurality of sequencers via the shared sequencer network, or transmitting the system state log to data. 13. The electronic trading system of claim 12, configured to store data in a store, the data store being accessible to the plurality of sequencers via the shared sequencer network. 前記電子取引システムはアクティブな電子取引システムであり、前記複数のシーケンサの少なくとも1つの前記シーケンサはディザスタリカバリサイトに通信可能に結合され、該ディザスタリカバリサイトはスタンバイ電子取引システムを含み、該スタンバイ電子取引システムは、前記アクティブな電子取引システムの複製であり、該アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成される、請求項12に記載の電子取引システム。 The electronic trading system is an active electronic trading system, and at least one of the sequencers of the plurality of sequencers is communicatively coupled to a disaster recovery site, the disaster recovery site including a standby electronic trading system, and the standby electronic trading system. 13. The electronic trading system of claim 12, wherein the system is a replica of the active electronic trading system and is configured to allow electronic trading to continue in the event of a failure of the active electronic trading system. 前記ゲートウェイ、前記コアコンピュートノード、前記シーケンサ並びに前記第1、第2及び第3の直接接続は、第1のポイントツーポイントメッシュシステムを構成し、
前記電子取引システムは、プロキシノードに通信可能に結合された第1の電子取引システムであり、前記プロキシノードはさらに少なくとも1つの参加者デバイス及び第2の電子取引システムに通信可能に結合され、該第2の電子取引システムは第2のポイントツーポイントメッシュシステムを含み、
前記プロキシノードは、前記少なくとも1つの参加者デバイスからの着信メッセージの受信に応じて前記メッセージを前記第1及び第2の電子取引システムに送信するように構成され、該第1及び第2の電子取引システムは、前記プロキシノードによって送信された前記メッセージに対するそれぞれの応答を生成するように構成され、前記プロキシノードはさらに、前記第1又は第2の電子取引システムから生成及び受信された前記それぞれの応答のうちの最初に到着する応答の受信に応じて前記少なくとも1つの参加者デバイスに応答を送信するように構成されている、請求項1に記載の電子取引システム。
the gateway, the core compute node, the sequencer and the first, second and third direct connections constitute a first point-to-point mesh system;
The electronic trading system is a first electronic trading system communicatively coupled to a proxy node, the proxy node further communicatively coupled to at least one participant device and a second electronic trading system; the second electronic trading system includes a second point-to-point mesh system;
The proxy node is configured to transmit the message to the first and second electronic trading systems in response to receiving an incoming message from the at least one participant device, The trading system is configured to generate respective responses to the messages sent by the proxy node, and the proxy node further generates respective responses to the messages generated and received from the first or second electronic trading system. The electronic trading system of claim 1, configured to transmit a response to the at least one participant device in response to receiving a first of the responses to arrive.
電子取引を実行する方法であって、
金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージをゲートウェイからコアコンピュートノードに第1の直接接続を介して送信するステップと、
これに対して、電子取引システムにおいて電子取引機能を実行するために前記メッセージを前記コアコンピュートノードにおいて受信するステップと、
前記メッセージを前記ゲートウェイから前記電子取引システムにおけるシーケンサに第2の直接接続を介して送信し、これに対して順序マーク付きメッセージを前記シーケンサから前記コアコンピュートノードに第3の直接接続を介して送信するステップであって、前記第1、第2及び第3の直接接続はそれぞれの非共有帯域幅を有し、前記シーケンサは前記ゲートウェイと前記コアコンピュートノードの間に前記第2及び第3の直接接続を介して挿入され、前記シーケンサによって送信される前記順序マーク付きメッセージは、前記第2の直接接続を介して前記ゲートウェイから送信された前記メッセージの順序付けされたバージョンである、ステップと、
これに対して、前記コアコンピュートノードにおいて、前記順序マーク付きメッセージを受信するステップと、
前記コアコンピュートノードにおいて、前記ゲートウェイからの他のメッセージを受信し、前記コアコンピュートノードにおいて、前記シーケンサからの前記他のメッセージの順序マーク付きバージョンを受信するステップと、
前記電子取引システムにおいて前記コアコンピュートノードによって受信された前記他のメッセージの前記順序マーク付きバージョンのうちの前記順序マーク付きメッセージの相対順位付けを前記コアコンピュートノードにおいて決定するステップと、
前記コアコンピュートノードにおいて、決定された前記相対順位付けに応じて前記電子取引要求に対して電子取引マッチング機能を完了するステップであって、該完了するステップは前記金融商品について前記指値を相手方指値とマッチングさせ、前記金融商品の電子取引を可能とする、ステップと、
を備える方法。
A method of performing an electronic transaction, the method comprising:
sending a message representing an electronic trading request with a limit price to buy or sell a financial instrument from the gateway to the core compute node via the first direct connection;
In contrast, receiving the message at the core compute node to perform an electronic trading function in an electronic trading system;
transmitting the message from the gateway to a sequencer in the electronic trading system via a second direct connection, and transmitting an order-marked message from the sequencer to the core compute node via a third direct connection; the first, second and third direct connections have respective non-shared bandwidths, and the sequencer connects the second and third direct connections between the gateway and the core compute node. the order-marked message inserted over a connection and sent by the sequencer is an ordered version of the message sent from the gateway over the second direct connection;
In contrast, receiving the order-marked message at the core compute node;
receiving, at the core compute node, another message from the gateway, and receiving, at the core compute node, an order-marked version of the other message from the sequencer;
determining at the core compute node a relative ranking of the order marked message among the order marked versions of the other messages received by the core compute node in the electronic trading system;
completing, in the core compute node, an electronic transaction matching function for the electronic transaction request according to the determined relative ranking, the completing step including determining the limit price and the counterparty limit price for the financial instrument; matching and enabling electronic trading of the financial instrument;
How to prepare.
前記メッセージ及び前記順序マーク付きメッセージは同一のユーザデータを含み、該ユーザデータは電子取引要求に対応付けられる、請求項16に記載の方法。 17. The method of claim 16, wherein the message and the order marked message include the same user data, and the user data is associated with an electronic transaction request. 前記メッセージはゲートウェイメッセージであり、前記方法は、前記ゲートウェイにおいて参加者デバイスからの着信メッセージを受信するステップをさらに備え、前記ゲートウェイメッセージを送信するステップは、前記ゲートウェイによる前記参加者デバイスからの前記着信メッセージの受信に応じて前記ゲートウェイによって前記ゲートウェイメッセージを送信するステップを含み、前記順序マーク付きメッセージは第1の順序マーク付きメッセージであり、前記方法は、
前記第1の順序マーク付きメッセージを前記シーケンサから前記ゲートウェイに前記第2の直接接続を介して送信するステップであって、これに対して、前記第1の順序マーク付きメッセージは前記ゲートウェイによって受信される、ステップと、
前記メッセージの受信に応じて、コアコンピュートノードメッセージを前記コアコンピュートノードから前記ゲートウェイに前記第1の直接接続を介して送信するステップと、
前記コアコンピュートノードメッセージを前記シーケンサに前記第3の直接接続を介して送信し、これに対して第2の順序マーク付きメッセージを前記シーケンサから前記ゲートウェイに前記第2の直接接続を介して送信するステップであって、前記第2の順序マーク付きメッセージは前記コアコンピュートノードメッセージの順序付けされたバージョンである、ステップと、
前記コアコンピュートノードから前記ゲートウェイに送信された前記第2の順序マーク付きメッセージ及び他のメッセージの前記順序マーク付きバージョンの前記相対順位付けを前記ゲートウェイにおいて決定ステップと、
発信メッセージを前記参加者デバイスに送信するステップであって、前記発信メッセージは決定された前記相対順位付けに応じて送信される、ステップと、
前記第2の順序マーク付きメッセージを前記シーケンサから前記コアコンピュートノードに前記第3の直接接続を介して送信するステップと、
をさらに備える請求項16に記載の方法。
The message is a gateway message, and the method further comprises receiving an incoming message from a participant device at the gateway, and transmitting the gateway message includes receiving an incoming message from the participant device by the gateway. transmitting the gateway message by the gateway in response to receiving a message, the order marked message being a first order marked message, the method comprising:
transmitting the first order-marked message from the sequencer to the gateway via the second direct connection, wherein the first order-marked message is received by the gateway; step,
In response to receiving the message, transmitting a core compute node message from the core compute node to the gateway via the first direct connection;
sending the core compute node message to the sequencer via the third direct connection, and in response sending a second order marked message from the sequencer to the gateway via the second direct connection; the second order marked message is an ordered version of the core compute node message;
determining, at the gateway, the relative ranking of the second order-marked message and the order-marked versions of other messages sent from the core compute node to the gateway;
sending an outgoing message to the participant device, the outgoing message being sent in response to the determined relative ranking;
sending the second order-marked message from the sequencer to the core compute node via the third direct connection;
17. The method of claim 16, further comprising:
前記ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、前記コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、前記方法は、
前記複数のゲートウェイの各前記ゲートウェイから送信されるそれぞれのコンピュートノード宛てメッセージを前記複数のコアコンピュートノードの全ての前記コアコンピュートノード及び前記シーケンサに送信するステップと、
前記複数のコアコンピュートノードの各前記コアコンピュートノードから送信されたそれぞれのゲートウェイ宛てメッセージを前記複数のゲートウェイの全ての前記ゲートウェイ及び前記シーケンサに送信するステップと、
前記シーケンサにおいて受信された前記それぞれのコンピュートノード宛てメッセージ及び前記それぞれのゲートウェイ宛てメッセージに応じて、それぞれの前記順序マーク付きメッセージを前記シーケンサから前記複数のゲートウェイ及び前記複数のコアコンピュートノードに送信するステップと、
をさらに備える請求項16に記載の方法。
the gateway is a given gateway of a plurality of gateways, the core compute node is a given core compute node of a plurality of core compute nodes, and the method includes:
transmitting a message addressed to each compute node sent from each of the plurality of gateways to all of the core compute nodes and the sequencer of the plurality of core compute nodes;
transmitting a message addressed to each gateway sent from each core compute node of the plurality of core compute nodes to all of the gateways and the sequencer of the plurality of gateways;
transmitting respective order-marked messages from the sequencer to the plurality of gateways and the plurality of core compute nodes in response to the respective messages addressed to the respective compute nodes and the respective gateways received at the sequencer; and,
17. The method of claim 16, further comprising:
前記シーケンサは、複数のシーケンサのうちの所与のシーケンサであり、前記方法は、
前記複数のゲートウェイの各ゲートウェイから送信されたそれぞれのコンピュートノード宛てメッセージを前記所与のシーケンサに送信するステップと、
前記複数のコアコンピュートノードの各コアコンピュートノードから送信された前記それぞれのゲートウェイ宛てメッセージを前記所与のシーケンサに送信するステップと、
前記順序マーク付きメッセージを前記所与のシーケンサから前記複数のシーケンサのうちの他の各前記シーケンサに送信するステップと、
をさらに備える請求項19に記載の方法。
The sequencer is a given sequencer among a plurality of sequencers, and the method includes:
transmitting a respective message addressed to a compute node sent from each gateway of the plurality of gateways to the given sequencer;
transmitting a message addressed to the respective gateway sent from each core compute node of the plurality of core compute nodes to the given sequencer;
transmitting the order marked message from the given sequencer to each other of the plurality of sequencers;
20. The method of claim 19, further comprising:
前記複数のコアコンピュートノードにおいて同じメッセージを受信するステップであって、該同じメッセージは前記所与のゲートウェイによって送信された前記それぞれのコンピュートノード宛てメッセージである、ステップと、
前記同じメッセージの受信に応じて、前記複数のコアコンピュートノードにおいて応答メッセージを生成するステップと、
前記所与のゲートウェイにおいて、前記複数のコアコンピュートノードの中から前記応答メッセージを受信するステップと、
前記同じメッセージの受信に応じて生成された前記応答メッセージのうちの所与の応答メッセージに基づいて前記所与のゲートウェイにおいて行動を実行するステップであって、前記所与の応答メッセージは、前記同じメッセージの受信に応じて生成された前記応答メッセージのうちの他の応答メッセージに相対して最初に前記所与のゲートウェイに到着するものである、ステップと、
前記所与の応答メッセージの後に前記所与のゲートウェイに到着する前記他の応答メッセージを無視するステップと、
をさらに備える請求項19に記載の方法。
receiving the same message at the plurality of core compute nodes, the same message being a message sent by the given gateway and addressed to the respective compute node;
generating a response message at the plurality of core compute nodes in response to receiving the same message;
receiving, at the given gateway, the response message from among the plurality of core compute nodes;
performing an action at the given gateway based on a given response message of the response messages generated in response to receipt of the same message, the given response message being the first of the response messages generated in response to receiving a message to arrive at the given gateway relative to other response messages;
ignoring the other response messages arriving at the given gateway after the given response message;
20. The method of claim 19, further comprising:
前記所与のコンピュートノードにおいて、前記複数のゲートウェイの中から複数のコンピュートノード宛てメッセージを受信するステップであって、該複数のコンピュートノード宛てメッセージは同じメッセージを表す、ステップと、
前記複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて前記所与のコンピュートノードにおいて行動を実行するステップであって、前記所与のコンピュートノード宛てメッセージは、前記同じメッセージを表す前記複数のコンピュートノード宛てメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に前記所与のコンピュートノードに到着するものである、ステップと、
前記所与のコンピュートノード宛てメッセージの後に前記所与のコンピュートノードに到着する前記他のコンピュートノード宛てメッセージを無視するステップと、
をさらに備える請求項19に記載の方法。
receiving, at the given compute node, a plurality of compute node-directed messages from among the plurality of gateways, the plurality of compute node-directed messages representing the same message;
performing an action at the given compute node based on a given compute node addressed message of the plurality of compute node addressed messages, the given compute node addressed message being the first to arrive at the given compute node relative to other compute node-bound messages of the plurality of compute node-bound messages representing;
ignoring messages destined for the other compute nodes that arrive at the given compute node after the messages destined for the given compute node;
20. The method of claim 19, further comprising:
実行される前記電子取引マッチング機能に基づいて、前記コアコンピュートノードにおいて、前記金融商品に関する取引注文をマッチングさせるステップと、
注文控え帳における前記金融商品の残持ち高を維持するステップであって、前記残持ち高は実行された前記電子取引マッチング機能によってもたらされた前記金融商品の金額不一致である、ステップと、
をさらに備える請求項16に記載の方法。
matching trade orders regarding the financial instrument at the core compute node based on the electronic trade matching function performed;
maintaining a balance of the financial instrument in an order book, the balance being an amount mismatch of the financial instrument resulting from the executed electronic trade matching function;
17. The method of claim 16, further comprising:
前記ゲートウェイ、前記コアコンピュートノード及び前記シーケンサをクロックに基づいて同期させるステップをさらに備える請求項16に記載の方法。 17. The method of claim 16, further comprising synchronizing the gateway, the core compute node, and the sequencer based on a clock. 前記メッセージはゲートウェイメッセージであり、前記方法は、
前記ゲートウェイにおいて少なくとも1つの参加者デバイスにサービスを提供するステップと、
前記ゲートウェイにおいて着信メッセージを受信するステップと、
前記ゲートウェイにおける前記着信メッセージの受信に応じて前記ゲートウェイメッセージを前記ゲートウェイから前記シーケンサ及び前記コアコンピュートノードに送信するステップであって、前記着信メッセージは前記少なくとも1つの参加者デバイスによって発送されたものである、ステップと、
固有順序識別子を用いて前記メッセージ又はその表示をマーク付けすることによって、前記順序マーク付きメッセージを生成するステップと、
をさらに備える請求項16に記載の方法。
The message is a gateway message, and the method includes:
servicing at least one participant device at the gateway;
receiving an incoming message at the gateway;
transmitting the gateway message from the gateway to the sequencer and the core compute node in response to receiving the incoming message at the gateway, the incoming message being dispatched by the at least one participant device; There are steps and
generating the ordinal marked message by marking the message or representation thereof with a unique ordinal identifier;
17. The method of claim 16, further comprising:
前記第1の直接接続、前記第2の直接接続及び前記第3の直接接続又はこれらの一部の組を、少なくとも1つのそれぞれの冗長直接接続を介して保護するステップをさらに備える請求項16に記載の方法。 17. The method of claim 16, further comprising protecting the first direct connection, the second direct connection, and the third direct connection or a subset thereof via at least one respective redundant direct connection. Method described. 前記ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、前記コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、前記シーケンサは複数のシーケンサのうちの所与のシーケンサであり、前記方法は、
前記複数のゲートウェイが共有ゲートウェイネットワークを介して通信可能となるようにするステップと、
前記複数のコアコンピュートノードが共有コアコンピュートノードネットワークを介して通信可能となるようにするステップと、
前記複数のシーケンサが共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して通信可能となるようにするステップと、
をさらに備える請求項16に記載の方法。
The gateway is a given gateway of a plurality of gateways, the core compute node is a given core compute node of a plurality of core compute nodes, and the sequencer is a given gateway of a plurality of sequencers. a sequencer, and the method includes:
enabling the plurality of gateways to communicate via a shared gateway network;
enabling the plurality of core compute nodes to communicate via a shared core compute node network;
enabling the plurality of sequencers to communicate via a shared sequencer network or via respective fourth direct connections;
17. The method of claim 16, further comprising:
前記所与のシーケンサから前記複数のシーケンサのうちの少なくとも1つの他のシーケンサに前記共有シーケンサネットワークを介してシステム状態ログを送信し、又は前記所与のシーケンサによって前記システム状態ログをデータストアに記憶するステップであって、該データストアは前記共有シーケンサネットワークを介して前記複数のシーケンサにアクセス可能である、ステップをさらに備える請求項27に記載の方法。 transmitting a system state log from the given sequencer to at least one other sequencer of the plurality of sequencers via the shared sequencer network, or storing the system state log by the given sequencer in a data store; 28. The method of claim 27, further comprising the step of: wherein the data store is accessible to the plurality of sequencers via the shared sequencer network. 前記電子取引システムはアクティブな電子取引システムであり、前記方法は、
前記複数のシーケンサのうちの少なくとも1つの前記シーケンサがディザスタリカバリサイトと通信可能となるようにするステップであって、該ディザスタリカバリサイトはスタンバイ電子取引システムを含み、該スタンバイ電子取引システムは、前記アクティブな電子取引システムの複製であり、前記アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成される、ステップをさらに備える請求項27に記載の方法。
The electronic trading system is an active electronic trading system, and the method includes:
enabling at least one sequencer of the plurality of sequencers to communicate with a disaster recovery site, the disaster recovery site including a standby electronic trading system, the standby electronic trading system communicating with the active 28. The method of claim 27, further comprising the step of being a replica of an active electronic trading system and configured to allow electronic trading to continue if the active electronic trading system fails.
電子取引システムのシーケンサであって、一連の命令を符号化した非一時的コンピュータ可読媒体を備え、前記一連の命令は、前記シーケンサに読み込まれて実行されると、該シーケンサに、
前記電子取引システムのポイントツーポイントメッシュシステムにおいて第1の直接接続を介してゲートウェイと直接通信させ、
前記電子取引システムの前記ポイントツーポイントメッシュシステムにおいて第2の直接接続を介してコアコンピュートノードと直接通信させ、前記シーケンサは前記ゲートウェイと前記コアコンピュートノードの間に前記第1及び第2の直接接続を介して挿入され、前記第1及び第2の直接接続はそれぞれの非共有帯域幅を有し、
固有順序識別子を用いてメッセージ又はその表示をマーク付けすることによって順序マーク付きメッセージを生成させ、該メッセージは前記シーケンサによってそれぞれ前記第1又は第2の直接接続を介して受信され、前記一連の命令はさらに、前記シーケンサに、前記順序マーク付きメッセージを前記ゲートウェイ及び前記コアコンピュートノードに送信させる、シーケンサ。
A sequencer for an electronic trading system, comprising a non-transitory computer readable medium on which a series of instructions is encoded, and when the series of instructions is read into and executed by the sequencer, the sequencer:
communicating directly with a gateway via a first direct connection in a point-to-point mesh system of the electronic trading system;
direct communication with a core compute node via a second direct connection in the point-to-point mesh system of the electronic trading system, the sequencer connecting the first and second direct connections between the gateway and the core compute node; inserted via the first and second direct connections having respective non-shared bandwidths;
Marking a message or an indication thereof with a unique ordering identifier generates an order marked message, which message is received by the sequencer via the first or second direct connection, respectively, and the sequence of instructions The sequencer further causes the sequencer to send the order marked message to the gateway and the core compute node.
JP2023507533A 2020-08-07 2021-08-05 Electronic trading system and method based on point-to-point mesh architecture Pending JP2023539430A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16/988,510 US11315183B2 (en) 2020-08-07 2020-08-07 Electronic trading system and method based on point-to-point mesh architecture
US16/988,491 2020-08-07
US16/988,491 US11328357B2 (en) 2020-08-07 2020-08-07 Sequencer bypass with transactional preprocessing in distributed system
US16/988,510 2020-08-07
PCT/US2021/044754 WO2022031975A1 (en) 2020-08-07 2021-08-05 Electronic trading system and method based on point-to-point mesh architecture

Publications (1)

Publication Number Publication Date
JP2023539430A true JP2023539430A (en) 2023-09-14

Family

ID=77750322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023507533A Pending JP2023539430A (en) 2020-08-07 2021-08-05 Electronic trading system and method based on point-to-point mesh architecture

Country Status (4)

Country Link
EP (1) EP4193255A1 (en)
JP (1) JP2023539430A (en)
AU (1) AU2021320315A1 (en)
WO (1) WO2022031975A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11315183B2 (en) 2020-08-07 2022-04-26 Hyannis Port Research, Inc. Electronic trading system and method based on point-to-point mesh architecture
US11683199B2 (en) 2020-08-07 2023-06-20 Hyannis Port Research, Inc. Distributed system with fault tolerance and self-maintenance
US11088959B1 (en) 2020-08-07 2021-08-10 Hyannis Port Research, Inc. Highly deterministic latency in a distributed system
WO2024127202A1 (en) * 2022-12-12 2024-06-20 Financial & Risk Organisation Limited Pauseless end-of-interval rollover with fault tolerance

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280394A (en) * 2006-04-04 2007-10-25 Espeed Inc A system that optimizes the execution of trade orders

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748210B2 (en) * 2016-08-09 2020-08-18 Chicago Mercantile Exchange Inc. Systems and methods for coordinating processing of scheduled instructions across multiple components
US20200034929A1 (en) * 2018-07-26 2020-01-30 Nasdaq, Inc. In-Order Processing of Transactions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280394A (en) * 2006-04-04 2007-10-25 Espeed Inc A system that optimizes the execution of trade orders

Also Published As

Publication number Publication date
AU2021320315A1 (en) 2023-03-09
EP4193255A1 (en) 2023-06-14
WO2022031975A1 (en) 2022-02-10

Similar Documents

Publication Publication Date Title
JP2023539430A (en) Electronic trading system and method based on point-to-point mesh architecture
US10504183B2 (en) Methods, apparatus, and systems for processing data transactions
US20240007404A1 (en) Local and global quality of service shaper on ingress in a distributed system
US9774462B2 (en) Methods and apparatus for requesting message gap fill requests and responding to message gap fill requests
US11315183B2 (en) Electronic trading system and method based on point-to-point mesh architecture
US8868461B2 (en) Electronic trading platform and method thereof
US11729107B2 (en) Highly deterministic latency in a distributed system
US12081365B2 (en) Distributed system with fault tolerance and self-maintenance
WO2022031971A1 (en) Sequencer bypass with transactional preprocessing in distributed system
WO2022031970A1 (en) Distributed system with fault tolerance and self-maintenance
JP2023540448A (en) Highly deterministic latency in distributed systems
US20220343424A1 (en) Stock exchange trading platform
US20230316399A1 (en) Electronic Trading System and Method based on Point-to-Point Mesh Architecture
US20090313160A1 (en) Hardware accelerated exchange order routing appliance
KR20140058411A (en) A market access system and method
EP1736886A1 (en) Methods for configuring cache memory size
JP2021135828A (en) Request processing system and request processing method
CN113014516A (en) Method and device for transmitting data stream

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250910