Back to results
US 12,425,357 B2Granted
Communication apparatus generating and eliminating redundant data packets
AssigneeMellanox Technologies, Ltd.
InventorsAvi Urman, Lior Narkis, Gil Kremer, Saar Tarnopolsky, Dotan David Levi
Life of this patent
Estimating the term…
Abstract
Apparatuses, systems, and techniques to eliminate redundant data packets. In at least one embodiment, a communication apparatus generates redundant data packets, and sends them in multiple packet streams. In at least one embodiment, a communication apparatus eliminates redundant data packets from received packet streams.
Claims41
A communication apparatus comprising:
- at least one connection to host memory of a host computing system comprising the communication apparatus, and at least one host processor;
- a network interface to receive a plurality of packets for transmitting at least a message, each of the plurality of packets comprising a packet identifier of a plurality of packet identifiers and at least one payload;
- and
- packet processing circuitry to:
- order at least a portion of the plurality of packets received in a particular stream within a sliding window;
- discard any late packets received in the particular stream outside the sliding window;
- maintain a bit vector comprising bits corresponding to the plurality of packet identifiers and indicating which of the plurality of packet identifiers have been received in at least one of the plurality of packets, a particular one of the bits to indicate that a corresponding packet identifier has been received if the particular bit is set;
- detect as one or more redundant packets any of the plurality of packets comprising a received packet identifier corresponding to a bit in the bit vector that is set,
- drop the one or more redundant packets to prevent communication of the one or more redundant packets over the at least one connection,
- receive a base address within the host memory from the at least one host processor,
- store a reconstructed version of the message in the host memory by storing each remaining packet in a set of remaining packets in the host memory at a location determined based at least in part on the base address, and the packet identifier of the remaining packet;
- and
- notify the host computing system after the reconstructed version of the message has been stored in the host memory.
10 more elements
A system comprising:
- a packet source comprising a virtual machine, the packet source to transmit a plurality of packets comprising a plurality of payloads associated one each with a plurality of packet identifiers, as a plurality of packet streams over multiple different communication channels;
- and
- a receiver device comprising at least one processor, a memory, and a network interface, the network interface comprising circuitry to receive the plurality of packet streams transmitting at least a message, use a bit vector to detect one or more redundant packets in the plurality of packet streams, discard the one or more redundant packets to avoid communication of the one or more redundant packets over a connection to the memory, receive a base address within the memory from the at least one processor, determine memory addresses for respective individual payloads based, at least in part, on the base address, write payloads to respective memory addresses determined by the circuitry, and notify the at least one processor after the payloads have been written to the respective memory addresses.
A method comprising:
- receiving, by a network interface of a computing system comprising at least one processor, a plurality of packet streams transmitted over multiple different communication channels, the plurality of packet streams comprising a plurality of packets comprising a plurality of payloads associated one each with a plurality of packet identifiers;
- using, by the network interface, a bit vector to identify a subset of the plurality of packets comprising one copy of each of at least some of the plurality of packet identifiers;
- discarding, by the network interface, one or more of the plurality of packets not included in the subset to prevent communication of the one or more packets over a connection to a memory of the computer system, wherein discarding the one or more packets comprises discarding all but one of the plurality of packets associated with each unique one of the plurality of packet identifiers received within a sliding window, and the memory is separate from the network interface;
- if a late packet is received outside the sliding window, discarding the late packet or storing the late packet in a queue for subsequent processing;
- receiving, by the network interface, a base memory address within the memory from the at least one processor;
- determining, by the network interface, a memory address within the memory for a payload of each packet in the subset based at least in part on the base memory address;
- writing, by the network interface, the payload of each packet in the subset to the memory address determined for the payload;
- and
- notifying, by the network interface, the computing system after the payload of each packet in the subset has been written to the memory.
6 more elements
A communication apparatus comprising:
- at least one connection to host memory of a host computing system comprising the communication apparatus, and at least one host processor;
- a network interface to receive a plurality of packets for transmitting at least a message, each of the plurality of packets comprising a packet identifier of a plurality of packet identifiers and at least one payload;
- and
- packet processing circuitry to:
- order at least a portion of the plurality of packets received in a particular stream within a sliding window;
- store any late packets received in the particular stream outside the sliding window in a queue for subsequent processing;
- maintain a bit vector comprising bits corresponding to the plurality of packet identifiers and indicating which of the plurality of packet identifiers have been received in at least one of the plurality of packets, a particular one of the bits to indicate that a corresponding packet identifier has been received if the particular bit is set;
- detect as one or more redundant packets any of the plurality of packets comprising a received packet identifier corresponding to a bit in the bit vector that is set,
- drop the one or more redundant packets to prevent communication of the one or more redundant packets over the at least one connection,
- receive a base address within the host memory from the at least one host processor,
- store a reconstructed version of the message in the host memory by storing each remaining packet in a set of remaining packets in the host memory at a location determined based at least in part on the base address, and the packet identifier of the remaining packet;
- and
- notify the host computing system after the reconstructed version of the message has been stored in the host memory.
10 more elements
Dependencies are inferred from the claim text.