US 12,217,308 B2
In-order processing of network packets
Sandeep Rao, Southport, CT (US); Thomas Fay, Succasunna, NJ (US); Dominick Paniscotti, Totowa, NJ (US); and Yuriy Buglo, New York, NY (US)
Assigned to NASDAQ, INC., New York, NY (US)
Filed by Nasdaq, Inc., New York, NY (US)
Filed on Aug. 8, 2022, as Appl. No. 17/883,347.
Application 17/883,347 is a continuation of application No. 16/522,316, filed on Jul. 25, 2019, abandoned.
Claims priority of provisional application 62/721,973, filed on Aug. 23, 2018.
Claims priority of provisional application 62/703,746, filed on Jul. 26, 2018.
Prior Publication US 2022/0377019 A1, Nov. 24, 2022
Int. Cl. G06Q 40/04 (2012.01); G06F 9/48 (2006.01); G06F 9/54 (2006.01); H04J 3/06 (2006.01); H04L 43/16 (2022.01); H04L 47/283 (2022.01); H04L 47/56 (2022.01); H04L 47/62 (2022.01); H04L 65/102 (2022.01)
CPC G06Q 40/04 (2013.01) [G06F 9/4881 (2013.01); G06F 9/546 (2013.01); H04J 3/065 (2013.01); H04L 43/16 (2013.01); H04L 47/283 (2013.01); H04L 47/562 (2013.01); H04L 47/6235 (2013.01); H04L 65/102 (2013.01)] 19 Claims
OG exemplary drawing
 
18. A method for addressing variance in network communication latency from multiple different physical locations in a distributed computer system, the method performed using at least one processor of a server infrastructure system of the distributed computer system, wherein the server infrastructure system includes a reorder buffer and an associated flush timer and is connected through a communication infrastructure to a plurality of gateway infrastructure systems located at a plurality of geographically distributed locations at different distances from the server infrastructure system, wherein packet latencies from respective gateway infrastructure systems to the server infrastructure system over respectively different paths through the communications infrastructure are different, the method comprising:
receiving each of a plurality of gateway timestamp-attached data transaction request packets from a plurality of gateway infrastructure systems via the communication infrastructure, wherein a respective gateway timestamp is attached to each gateway timestamp-attached data transaction request packet, the respective gateway timestamp corresponds to either a time at which a respective corresponding incoming data transaction request packet is in the gateway infrastructure system or in a network device located between the gateway infrastructure system and a client computer system from the one or more client computer systems from which the respective corresponding incoming data transaction request packet originated;
for each of the gateway timestamp-attached data transaction request packets:
attaching a server timestamp to the gateway timestamp-attached data transaction request packet, the server timestamp corresponding to a time at which the gateway timestamp-attached data transaction request packet is in the server infrastructure system;
determining a transaction delay based upon the gateway timestamp and the server timestamp attached to the server timestamp-attached data transaction request packet;
comparing the transaction delay to a preset threshold time interval, and:
if the transaction delay is less than the preset threshold time interval, assigning, using the flush timer, a respective flush time to the gateway timestamp-attached data transaction request packet and insert the gateway timestamp-attached transaction request packet into the reorder buffer; or
if the transaction delay is not less than the preset threshold time interval, outputting the gateway timestamp-attached data transaction request packet to a data processing application without storing the gateway timestamp-attached data transaction request packet in the reorder buffer;
reordering, using the reorder buffer, the server timestamp-attached data transaction request packets in order of oldest to newest of the respective gateway timestamps of the server timestamp-attached data transaction request packets, wherein the reordering is based on both the gateway timestamp and the server timestamp of respective ones of the server timestamp-attached data transaction request packets; and
outputting the reordered server timestamp-attached data transaction request packets from the reorder buffer in an order of oldest to newest of the respective gateway timestamps and in accordance with the respective associated flush times, via a shared memory pipe, to the data processing application, wherein the data processing application is configured to process the data transaction request packets in order of receipt at the data processing application;
wherein the server infrastructure system is configured to perform the reordering and the outputting such that the output server timestamp-attached data transaction request packets are received by the data processing application in order of arrival at the plurality of gateway infrastructure systems, even if the corresponding gateway timestamp-attached transaction request packets arrived out of order at the server infrastructure due to the different packet latencies and jitter in the communication infrastructure between the plurality of gateway infrastructure systems and the server infrastructure system.