Patent ID: 11915315
Assignee: BGC PARTNERS, L.P.
Field: Digital communication (Electrical engineering)
Classification: CPC G  H | IPC G  H

Claim 13:
14. An apparatus comprising:
at least one programmable hardware device configured to:
receive, from each of plurality of first transmission control protocol (TCP) client circuits, at least one TCP segment representative of at least one data item; and
for each data item,
identify a last data byte (LDB) data packet in a given TCP segment containing an identifier indicating a LDB of a plurality of data bytes forming the data item;
determine a time stamp for the data item based on a time indicated by a local clock at a time the LDB data packet of the data item is received at the at least one programmable hardware device; and
generate at least one data item message for the data item, in which the at least one data item indicates the time stamp for the data item; and

at least one processor configured to:
for each data item for which at least one data item message is generated:
determine an updated time stamp based on a time offset associated with a given first TCP client circuit of the first TCP client circuits from which the data item is received, in which the time offset corresponds to a network path extending from the given first TCP circuit client to the at least one programmable hardware device, and in which each of the first TCP client circuits has a time offset corresponding to a network path extending respectively from the first TCP client circuit to the at least one programmable hardware device; and
generate an updated data item message indicating the updated time stamp; and

in which the at least one programmable hardware device is configured to:
assign a sequencer time stamp to each data item of an updated data item message having a time indicated by a sequencer clock at a time of receipt of the updated data item message at a sequencer of the at least one programmable hardware device;
for each data item assigned a sequencer time stamp,
in a first queue, order the data item in time sequence, starting with an earliest time, based on the updated time stamp;
in a second queue, order the data item in time sequence, starting with an earliest time, based on the sequencer time stamp;

for a given data item in the second queue, when the time of the sequencer clock is determined to be same as or after a sum of the sequencer time stamp for the given data item and a hold delay:
remove the given data item from the second queue;
include in an output stream, in time sequence order starting with an earliest time based on a respective updated time stamp, the updated data time message of the given data item and an updated data item message of each other data item in the first queue, if any, having an updated time stamp earlier than the updated time stamp of the given data item;
remove, from the first queue, the given data item and, if in the first queue, the each other data item; and
remove, from the second queue, the each data item, if in the second queue; and

for each data item represented in the output stream, instruct at least two of a plurality of TCP server circuits to simultaneously transmit a second stream of output data packets representative of the data item represented in the output stream.