US-20260128818-A1 - SYSTEM AND METHOD FOR ERROR-DETECTING CODE-BASED PACKET TRANSMISSION ACKNOWLEDGEMENT
Abstract
A method, computer program product, and computing system for processing a plurality of packets transmitted from a first computing device to a second computing device. A packet sequence number associated with each packet is identified. An error-detecting code representation is generated using the packet sequence number of each packet. The error-detecting code representation is compared with an error-detecting code representation generated from a sequence of expected packet sequence numbers associated with transmission of a plurality of expected packets. A notification indicating that a packet is missing from the plurality of expected packets is generated when the error-detecting code representation is not equal to the error-detecting code representation generated from the sequence of expected packet sequence numbers.
Inventors
- Yevgeny Yankilevich
- Assaf Shacham
- Konstantin Taranov
- Mahmoud S. Elhaddad
- Dongwook Lee
Assignees
- MICROSOFT TECHNOLOGY LICENSING, LLC
Dates
- Publication Date
- 20260507
- Application Date
- 20251230
Claims (20)
- 1 . A computer-implemented method, executed on a computing device, comprising: processing a plurality of packets transmitted from a first computing device to a second computing device; identifying a packet identifier associated with each packet; generating an error-detecting code using the packet identifier of each packet; comparing the error-detecting code representation with an error-detecting code representation generated from one or more expected packet identifiers associated with transmission of a plurality of expected packets; and generating a notification indicating that a packet is missing from the plurality of expected packets when the error-detecting code representation is not equal to the error-detecting code representation.
- 2 . The computer-implemented method of claim 1 , wherein the error-detecting code representation is cyclic redundancy check (CRC).
- 3 . The computer-implemented method of claim 2 , wherein generating the error-detecting code representation includes generating a CRC of each packet independent of an order of arrival of the plurality of packets using the packet identifier of each packet.
- 4 . The computer-implemented method of claim 3 , wherein generating the CRC of each packet independent of the order of arrival includes: generating the CRC for each packet separately; and generating a combined CRC for the plurality of packets by combining the CRC from each packet using a bitwise exclusive-or operation.
- 5 . The computer-implemented method of claim 1 , wherein the plurality of packets include a plurality of remote direct memory access (RDMA) packets.
- 6 . The computer-implemented method of claim 1 , wherein the error-detecting code representation generated from the one or more expected packet identifiers is based upon, at least in part, a number of expected packets.
- 7 . The computer-implemented method of claim 1 , wherein generating the notification indicating that a packet is missing from the plurality of expected packets includes sending a request to the first computing device to retransmit at least one packet of the plurality of packets.
- 8 . A computing system comprising: a memory; and a processor configured to: process a plurality of packets transmitted from a first computing device to a second computing device; identify a packet identifier associated with each packet; generate cyclic redundancy check (CRC) using the packet identifier of each packet; compare the CRC with a CRC generated from a one or more expected packet identifiers associated with transmission of a plurality of expected packets; and generate a notification indicating that a packet is missing from the plurality of expected packets.
- 9 . The computing system of claim 8 , wherein generating the error-detecting code representation includes generating a CRC of each packet independent of an order of arrival of the plurality of packets using the packet identifier of each packet.
- 10 . The computing system of claim 9 , wherein generating the CRC of each packet independent of the order of arrival includes: generating the CRC for each packet separately; and generating a combined CRC for the plurality of packets by combining the CRC from each packet using a bitwise exclusive-or operation.
- 11 . The computing system of claim 10 , wherein generating the CRC for each packet separately includes padding the CRC with a plurality of zeros based upon, at least in part, the packet identifier for the respective packet.
- 12 . The computing system of claim 8 , wherein the plurality of packets include a plurality of remote direct memory access (RDMA) packets.
- 13 . The computing system of claim 8 , wherein the error-detecting code representation generated from the one or more expected packet identifiers is based upon, at least in part, a number of expected packets.
- 14 . The computing system of claim 8 , wherein generating the notification indicating that a packet is missing from the plurality of expected packets includes sending a request to the first computing device to retransmit at least one packet of the plurality of packets.
- 15 . A computer-implemented method, executed on a computing device, comprising: identifying, for each packet of a plurality of packets transmitted from a first computing device to a second computing device, a packet identifier associated with the packet; generating, for each packet, an error-detecting code representation using the packet identifier; generating, for the plurality of packets, a combined error-detecting code representation by combining the error-detecting code representation generated for each packet with an accumulated error-detecting code representation in a manner that is independent of an order of arrival of the plurality of packets; comparing the combined error-detecting code representation with an expected error-detecting code representation associated with transmission of expected packets; and generating a notification indicating that a packet is missing when the combined error-detecting code representation is not equal to the expected error-detecting code representation.
- 16 . The computer-implemented method of claim 15 , wherein the error-detecting code representation is cyclic redundancy check (CRC).
- 17 . The computer-implemented method of claim 15 , wherein the plurality of packets include a plurality of remote direct memory access (RDMA) packets.
- 18 . The computer-implemented method of claim 15 , wherein the error-detecting code representation generated from the one or more expected packet identifiers is based upon, at least in part, a number of expected packets.
- 19 . The computer-implemented method of claim 15 , wherein generating the notification indicating that a packet is missing from the plurality of expected packets includes sending a request to the first computing device to retransmit at least one packet of the plurality of packets.
- 20 . The computer-implemented method of claim 15 , further comprising generating a CRC for each packet separately, and wherein generating a error-detecting code representation for the plurality of packets further comprises combining the CRC from each packet using a bitwise exclusive-or operation.
Description
CROSS REFERENCE TO RELATED APPLICATION This is a continuation application for patent entitled to a filing date and claiming the benefit of earlier-filed U.S. patent application Ser. No. 18/759,620, filed Jun. 28, 2024, which is herein incorporated by reference in its entirety. BACKGROUND The efficient transmission of packets or portions of data between computing devices is cornerstone of modern communication systems, encompassing diverse domains such as telecommunications, data networking, Internet protocols, etc. Packet transmission protocols and systems enable the efficient transfer of data across diverse network architectures. Packets traverse complex network topologies, encountering various challenges such as latency, packet loss, and congestion. Conventional protocols provide for the acknowledgement of receipt of the packets and the opportunity to identify missing or corrupted packets of data through various processes that identify and seek retransmission of packets lost during transmission. However, these approaches generally require the retransmission of too many packets that may be lost, or are computationally expensive and slow, thus increasing network latency between the source and destination computing devices. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a flow chart of an implementation of a packet transmission acknowledgment process; FIG. 2 is a diagrammatic view of the transmission of a message from one computing device to another according to an implementation of the packet transmission acknowledgment process of FIG. 1; FIG. 3 is a diagrammatic view of the generating of an error-detecting code representation of a message when compared to an expected error-detecting code representation of the packets according to an implementation of the packet transmission acknowledgment process of FIG. 1; FIG. 4 is a diagrammatic view of an expected error-detecting code representation database generated according to an implementation of the packet transmission acknowledgment process of FIG. 1; FIG. 5 is a diagrammatic view of the generating of an error-detecting code representation of a message independent of the order in which each packet is received when compared to an expected error-detecting code representation of the packets according to an implementation of the packet transmission acknowledgment process of FIG. 1; and FIG. 6 is a diagrammatic view of computer system and the packet transmission acknowledgment process coupled to a distributed computing network. Like reference symbols in the various drawings indicate like elements. DETAILED DESCRIPTION OF THE EMBODIMENTS Implementations of the present disclosure allow for packets communicated between computing devices to be tracked using packet sequence numbers within a “message” (i.e., a plurality of packets) by generating an error-detecting code representation of the received sequence and comparing this error-detecting code representation with an expected error-detecting code representation of the message. For example, in the context of packet transmission, packet loss occurs in computer networks when data packets traveling from one point to another fail to reach their destination. This can happen due to various reasons: congestion (i.e., when network traffic between computing devices is heavy, routers and switches may become overwhelmed, causing them to drop packets); faulty hardware or connections (i.e., malfunctioning network equipment or damaged cables can result in packet loss); software errors (i.e., bugs or misconfigurations in network devices or applications can cause packets to be dropped); and wireless interference (i.e., in wireless networks, interference from other devices or environmental factors can lead to packet loss). Conventional approaches to managing packet loss include, for example, the “Go-Back-N” (GBN) retransmission protocol that maintains a window of packets that have been sent but not yet acknowledged. The sending computing device continues to send packets within the window until it reaches a maximum window size, at which point it waits for acknowledgements before sending additional packets. In environments where the packet loss rate is not low enough and the round-trip time for send packets is high, this requirement to retransmit unnecessary packets for every lost packet leads to high flow completion times (FTC) (i.e., the time it takes for all data packets of a particular flow or message to be successfully transmitted and acknowledged). Accordingly, the packet transmission acknowledgment process described below processing a plurality of packets transmitted from a first computing device to a second computing device. A packet sequence number (i.e., sequentially assigned numbers used to identify packets within a message) associated with each packet is identified. An error-detecting code representation (e.g., cyclic redundancy check (CRC), checksum, cryptographic hash functions, parity bits, etc.) is generated using the packet se