26 November 2005. A2 writes:
Unfortunately for the NSA, the "method" described in patent 6,957,374 is
VERY similar to one described 6 years prior in RFC 2018
(http://ietf.org/rfc/rfc2018.txt).
The only difference, as far as I can tell, is that in RFC 2018 the receiver
informs the sender of the groups of packets it has received, while in this
patent the receiver sends a list of the groups of packets it has not received.
The patent is also described on the NSA website
(http://www.nsa.gov/techtrans/techt00023.cfm),
but here they state that the receiver can list the groups of packets received,
OR the groups of missing packets.
Lastly, note that this patent does not contain any mention of TCP/IP, and
rather claims its use on any connectionless packet switched network. This
differs from RFC 2018, which is specific to TCP/IP.
26 November 2005. A. writes:
Looking at that patent, it's not about identifying packets. It's about
a higher-throughput version of TCP/IP for use in special circumstances.
One circumstance might be high-power to low-power connections; like earth
to orbit and back; earth-to-orbit is high-power, orbit-to-earth is
low-power. A similar circumstance is comparing submarine transmitters
to coastal transmitters.
The TCP/IP protocol already sequentially identifies packets (they are numbered
by the byte position where they 'begin'), but civilian TCP/IP discards packets
from the 'future' -- packets where it has not requested the transmission
of those bytes yet. Also, this patent specifies a reply that is complex
in that it can list a heterogenous byte range of received or missed
packets. Then, the sender does not retransmit all packets from the
whole possible range, but only the missed packets.
So this patent is about a different use of the existing packet IDs.
It seems like it is optimizing for lossy, low-bandwidth connections where
losses are common enough to consider and retransmission is too expensive
(or revealing) to perform inefficiently. They make changes that would
affect the behavior of the receiver (permissive toward accepting unrequested
data if possible, sending complex missed-packet lists) and the sender (responding
to complex missed-packet lists).
24 November 2005
Source:
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/srchnum.htm&r=1&f=G&l=50&s1=6,957,374.WKU.&OS=PN/6,957,374&RS=PN/6,957,374
United States Patent |
6,957,374 |
Redeske
|
October 18, 2005 |
Method of acknowledging receipt of data packets
Abstract
A method of acknowledging receipt of data packets, where each data packet
has an identification number. A counter is set to the identification number
of the first data packet expected. A data packet is then received. If the
data precedes the expected data packet then it is discarded. If the data
packet has an identification number greater than what is expected and not
already stored then it is stored because it is out of order. If the received
packet is as expected then it is delivered and the counter is incremented.
If the counter equals an identification number of a stored data packet then
that packet is delivered along with any other stored data packet contiguous
there with, with respect to identification number, the counter is set to
one plus the highest identification number of a delivered data packet, and
the delivered data packets are deleted from storage. An acknowledgement message
is constructed which list the gaps in the stored data packets. Each gap is
identified by the first and last identification number of the gap. If additional
processing is desired then another data packet is received and processed
as above. Otherwise, the acknowledgement message is sent.
Inventors: |
Redeske; Thomas G. (Glen Burnie, MD) |
Assignee: |
The United States of America as represented
by the National Security Agency (Washington, DC) |
Appl. No.: |
134848 |
Filed: |
April 23, 2002 |
Current U.S. Class: |
714/748; 370/412; 370/428 |
Intern'l Class: |
H04L 001/00; H04L 012/28; H04B
007/21.2 |
Field of Search: |
714/748 370/412,428 |
References Cited
[Referenced
By]
U.S. Patent Documents
4352183 |
Sep., 1982 |
Davis et al. |
|
5150368 |
Sep., 1992 |
Autruong et al. |
|
5477550 |
Dec., 1995 |
Crisler et al. |
|
5553083 |
Sep., 1996 |
Miller. |
|
5570367 |
Oct., 1996 |
Ayanoglu et al. |
|
5727002 |
Mar., 1998 |
Miller et al. |
|
5815667 |
Sep., 1998 |
Chien et al. |
|
6252851 |
Jun., 2001 |
Siu et al. |
|
6282172 |
Aug., 2001 |
Robles et al. |
|
6519731 |
Feb., 2003 |
Huang et al. |
|
Other References
"Improvement of TCP Performance on Asymmetric Channels Based on Enhancements
of Compressing TCP/IP Header Algorithm" Sato et al. International Conference
on Communication Technology Proceedings Publication Date: Oct. 22-24, 1998
pp. 5 pp. vol. 2.
"NAK-based Flow Control Scheme for Reliable Multicast Communications" by
Tamamoto et al. Global Telecommunications Conference, 1998 IEEE GLOBECOM
1998 'The Bridge to Global Integration' page(s): 2611-2616 vol. 5 Nov. 8-12,
1998. |
Primary Examiner: Lamarre; Guy
Assistant Examiner: Britt; Cynthia
Attorney, Agent or Firm: Morelli; Robert D.
Parent Case Text
This application claims the benefit of U.S. Provisional Application No.
60/354,059, filed Jan. 31, 2002.
Claims
1. A method of acknowledging receipt of data packets, where each data packet
includes an identification number, comprising the steps of:
(a) setting a counter to an identification number of the first expected data
packet;
(b) receiving a data packet;
(c) if the identification number is less than the counter then discarding
the data packet, otherwise proceeding to step (d);
(d) if the identification number is greater than the counter and not already
stored then storing the data packet, otherwise proceeding to step (e);
(e) delivering the data packet;
(f) incrementing the counter;
(g) if the counter is equal to an identification number of a stored data
packet then delivering the stored data packet and any other stored data packet
contiguous there with, with respect to identification number, setting the
counter to one plus the highest identification number of a delivered data
packet, and deleting the delivered data packets from storage;
(h) constructing an acknowledgement message that lists the beginning and
end identification numbers of any contiguous string of identification numbers
missing from storage that are less than the highest identification number
of a stored data packet;
(i) returning to step (b) if additional processing is desired, otherwise,
proceeding to step (j); and
(j) sending the acknowledgement message.
Description
FIELD OF THE INVENTION
The present invention relates, in general, to multiplex communications and,
in particular, to data flow congestion prevention or control including signaling
between network elements.
BACKGROUND OF THE INVENTION
Computer networks over which a message may be transmitted are either
connection-oriented or connectionless.
A connection-oriented computer network is one in which a dedicated connection
is identified for transmitting a message. If the connection-oriented network
fails (e.g., the message isn't transmitted, the message is corrupted) at
any point during the transmission of the message, the entire message must
be retransmitted once the connection-oriented network is reestablished. If
the connection is reliable, the connection-oriented network is the fastest
way to transmit a message.
A connectionless computer network is one in which no dedicated connection
is identified for transmitting a message, but one in which numerous available
network connections are used to transmit a message. A message to be transmitted
over a connectionless network is broken up into numerous packets, and the
packets are transmitted over any available network connection to the intended
recipient. Between the sender and the intended final recipient, there may
be a number of intermediate recipients that must receive and reconstruct
the packets for further transmission. In a connectionless network such as
an Internet Protocol (IP) network, the packets to be transmitted, most likely,
will be transmitted over a number of different network connections and will
be received out of order by the recipient. Additional information is added
to each packet prior to transmission to identify the message to which a packet
pertains and its position within the message so that the recipient may
reconstruct the message. If the transmission of a packet over a network
connection fails then only those packets that were not properly transmitted
must be retransmitted and not the entire message. The recipient of a message
sent over a connectionless network sends messages, commonly referred to as
acknowledgment messages, to inform the sender which packets were received
(i.e., a positive acknowledgment message) or which packets were not received
(i.e., a negative acknowledgment message). The sender uses the acknowledgment
message to determine which packets to retransmit to the recipient. The sender
keeps a copy of each packet sent until it receives a message from the recipient
that indicates that the packet was received. Connectionless networks decrease
the likelihood that an entire message must be retransmitted, but increase
the likelihood that some of the packets of a message must be retransmitted.
Technological advancements continue to decrease the time it takes to transmit
a packet. These improvements in speed make it more feasible to transmit messages
containing large amounts of data such as photographs. With an increase in
the size of messages being sent comes an increase in the number of packets
that must be retransmitted and an increase in the number of acknowledgment
messages that are sent. An increase in acknowledgement messages comes at
a time when the network connections are less likely to transmit them reliably,
causing even more acknowledgement messages to be sent.
Prior art methods record the length of a group of packets received that start
with the first packet of the message (i.e., a complete pointer), record the
number of the highest numbered packet received (i.e., a current pointer),
store each packet that is out of order, and record the number of each missing
packets, where the highest packet number received is assumed to be the end
of the message (this assumption may prove incorrect). In such a scheme, a
received packet is compared to the recorded data to determine if the received
packet is a duplicate and should be discarded or a missing packet that must
be stored on the out-of-order list, or further transmitted because it is
the next packet in a contiguous string of packets starting with the first
packet (i.e., an expected packet). The number of steps that are required
by such a method to determine if a received packet is a duplicate is 1+n
in the worst case and 1+n/2 in the average case, and 1 in the best case,
where n is the number of packets that are out of order. The number of steps
that are required by this method to identify the received packet as a missing
frame is 3+n in the worst case, 3+n/2 in the average case, and 3 in the best
case. This method requires that the entire list of out-of-order packets be
searched prior to sending an acknowledgment message. So, the time to send
an acknowledgment message increases with the number of packets received that
are out of order. As messages increase in size, the number of packets received
that are out of order are expected to grow and, therefore, the time it takes
to send an acknowledgment message is expected to increase. So, there is a
need for a more efficient method of acknowledging the receipt of packets
and reassemble the same for further transmission. The present invention is
just such a method.
U.S. Pat. No. 5,553,083, entitled "METHOD FOR QUICKLY AND RELIABLY TRANSMITTING
FRAMES OF DATA OVER COMMUNICATIONS LINKS," discloses a method of a receiver
sending acknowledgments (i.e., messages indicating which packets were received)
while the sender is sending data but does not disclose the method of the
present invention. U.S. Pat. No. 5,553,083 is hereby incorporated by reference
into the specification of the present invention.
U.S. Pat. No. 5,727,002, entitled "METHOD FOR TRANSMITTING DATA," discloses
a method of a receiver sending negative acknowledgments (i.e., messages that
indicate which packets were not received) while the sender is sending data
but does not disclose the method of the present invention. U.S. Pat. No.
5,727,002 is hereby incorporated by reference into the specification of the
present invention.
U.S. Pat. No. 5,815,667, entitled "CIRCUITS AND METHODS FOR INTELLIGENT
ACKNOWLEDGEMENT BASED FLOW CONTROL IN A PROCESSING SYSTEM NETWORK," discloses
a device for and method of monitoring and adjusting the utilization level
of a network and the transmission delay of an acknowledgment signal but does
not disclose the method of the present invention. U.S. Pat. No. 5,815,667
is hereby incorporated by reference into the specification of the present
invention.
U.S. Pat. No. 6,252,851, entitled "METHOD FOR REGULATING TCP FLOW OVER
HETEROGENEOUS NETWORKS," discloses a method of releasing acknowledgment signals
in a time released manner to avoid overflow of the packet buffer due to bandwidth
limitations but does not disclose the method of the present invention. U.S.
Pat. No. 6,252,851 is hereby incorporated by reference into the specification
of the present invention.
U.S. Pat. No. 6,282,172, entitled "GENERATING ACKNOWLEDGEMENT SIGNALS IN
A DATA COMMUNICATION SYSTEM," discloses a method of generating an acknowledgment
signals upon receipt of a data packet but before the data packet is completely
received, preventing the sender from reducing the data rate of the transmission
due to high latency or asymmetry of the communication link, but does not
disclose the method of the present invention. U.S. Pat. No. 6,282,172 is
hereby incorporated by reference into the specification of the present invention.
SUMMARY OF THE INVENTION
It is an object of the present invention to efficiently acknowledge the receipt
of data packets.
The present invention is a method of efficiently acknowledging the receipt
of data packets, where each data packet includes an identification number.
The first step of the method is setting a counter to an identification number
of the first data packet expected to be received.
The second step of the method is receiving a data packet.
The third step of the method is discarding the received data packet if its
identification number is less than the counter.
The fourth step of the method is storing the received data packet if its
identification number is greater than the counter and it is not already stored.
The fifth step of the method is delivering the data packet if its identification
number is equal to the counter.
The sixth step of the method is incrementing the counter if the received
data packet was delivered.
The seventh step of the method is delivering every stored data packet that
is contiguous with the delivered data packet, with respect to identification
number, setting the counter to one plus the highest identification number
of a delivered data packet, and deleting the delivered data packets from
storage.
The eighth step of the method is constructing an acknowledgement message
that lists the gaps in the stored data packets.
The ninth step of the method is returning to the second step if additional
processing is desired.
The tenth step of the method is sending the acknowledgement message.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a list of steps of the present invention.
DETAILED DESCRIPTION
The present invention is a method of efficiently acknowledging the receipt
of data packets of a data stream. Upon receipt of an acknowledgment message,
the sender will retransmit any missing data packets. A data packet is the
smallest unit of a data stream. A data packet includes information that tells
a recipient where the data packet goes in the data stream. If a recipient
receives a data packet in order (e.g., the first data packet received is
the first data packet in the data stream) then the recipient can send, or
deliver, that data packet along to its next destination without having to
wait for the other data packets in the data stream to arrive. However, if
the recipient receives a data packet that is out of order (e.g., receives
the third data packet first) then the recipient stores that data packet and
does not send it along until it receives the data packets that should precede
it (e.g., the first and second data packets). Typically, a number of out
of order data packets are stored and not transmitted until all of the missing
data packets that precede it are received. For example, if the first data
packet is received first, it will be sent immediately. If the next data packet
received is the fifth data packet, it will be stored until the second, third,
and fourth data packets are received. If the next two data packets received,
in any order, are the third and fourth data packets then they will be stored.
If the next data packet received is the second data packet then it will be
transmitted because it is contiguous, with respect to identification number,
with the last data packet sent. The third, fourth, and fifth data packets
will also be sent because they are contiguous with the last data packet sent.
So, only a data packet that is not the expected data packet or contiguous
with the last data packet sent is stored as an out of order data packet.
The present invention is based on the recognition that data packets tend
to be lost or corrupted in contiguous groups. This results in contiguous
groups of out of order data packets. Instead of using the data packet as
the fundamental unit of accounting in an acknowledgement message as do the
prior art methods, the present method accounts for data packets that are
out of order in groups, or gaps, where a gap is a set of data packets where
their identification numbers are contiguous. A gap in the present method
is identified by the identification numbers of the first and last data packets
in the gap. This is much more efficient than having to send every identification
number in a gap.
Since the data packets of a data stream make up the gaps of the data stream,
there are fewer gaps than there are data packets. Therefore, there would
be fewer out of order gaps in the data stream than there would be out of
order data packets. So, it is more efficient to acknowledge the receipt of
data packets from a data stream by accounting for out of order gaps as does
the present method than by accounting for out of order data packets as do
the prior art methods.
The increase in efficiency provided by accounting for out of order gaps also
extends to the storage of out of order packets, which requires storing the
out of order data packets such that their relative ordering within the stream
is known. Ordering the out of order packets according to gaps therein breaks
the storage into manageable segments. Each storage segment is a group of
contiguous out-of-order data packets. In this method, a newly received data
packet is compared to previously received data packets to determine if the
newly received data packet is a duplicate and should be discarded or a missing
data packet that must be stored as an out of order data packet. The number
of steps that are required by this method to determine if an out of order
data packet is a duplicate or a missing data packet is 1+G in the worst case
and 1+G/2 in the average case, and 1 in the best case, where G is the number
of gaps. Since G is not larger than the number of out of order data packets,
and is often much less, the present invention requires fewer steps than do
the prior art methods.
FIG. 1 is a list of the steps of the present invention. The first step
1 of the method is initializing a counter. The counter is initialized
to an identification number of the next data packet that is expected to be
received. For example, before the first data packet of a data stream is received,
the expected data packet would be the first data packet in the stream. That
is, the data packet with an identification number (e.g., 1) that indicates
that it is the first data packet in the data stream. The present method assumes
that the first data packet is identified by the number one, but other numbering
schemes may be employed.
The second step 2 of the method is receiving a data packet from a
sender.
The third step 3 of the method is discarding the received data packet
if its identification number is less than the present contents of the counter.
Having an identification number less than the present contents of the counter
indicates that the data packet was previously received and is, therefore,
a duplicate data packet that may be discarded without any further processing.
The fourth step 4 of the method is storing the received data packet
if its identification number is greater than the present contents of the
counter and the data packet is not already stored. This indicates that the
received packet is out of order and should not be sent until the missing
data packets that precede it are received. In the meantime, the out of order
data packet is in storage.
The fifth step 5 of the method is delivering the data packet because
the data packet received is the expected data packet by virtue of having
not met the two conditions above.
The sixth step 6 of the method is incrementing the contents of the
counter to the identification number of the next expected data packet.
The seventh step 7 of the method is delivering a stored data packet
and any other stored data packet contiguous there with, with respect to
identification number, if the counter is equal to an identification number
of a stored data packet, and setting the counter to one plus the highest
identification number of a delivered data packet, and deleting the delivered
data packets from storage.
The eighth step 8 of the method is constructing an acknowledgement
message that lists the beginning and end identification numbers of any contiguous
string of identification numbers missing from storage that are less than
the highest identification number of a stored data packet. That is, any gaps
in the stored data packets are determined and the beginning and end point
of each gap are put into an acknowledgement message.
The ninth step 9 of the method is returning to the second step
2 if additional processing is desired. Otherwise, proceeding to the
tenth step 10. The ninth step 9 allows for the processing of
a user-definable number of data packets before sending an acknowledgement
message. Time is another variable that may be used to determine when an
acknowledgement message is to be sent.
The tenth step 10 of the method is sending the acknowledgement message.
The acknowledgement message contains only the gaps, in the received data
packets, where each gap is identified by only two data packet identification
numbers (i.e., the identification numbers of the beginning and ending data
packets in the gap). This is a more efficient method of sending an
acknowledgement message than listing the identification number of each received
or missing data packets as do the prior art.
* * * * *