US10992603B2ActiveUtilityA1
Block acknowledgement with out-of-order packets
Est. expirySep 27, 2037(~11.2 yrs left)· nominal 20-yr term from priority
H04L 49/9057H04L 47/34H04L 47/27H04L 47/30H04W 84/12H04L 47/26H04W 28/18H04L 47/2483
66
PatentIndex Score
1
Cited by
11
References
20
Claims
Abstract
A wireless device can perform Out-of-Order packet processing and block acknowledgement. Multiple packets may be received at a lower layer of the wireless device. Identifying information may be determined for the received packets. It may be determined that the packets were received out of sequential order, based at least in part on the identifying information. Despite being received out of sequential order, payload information from the packets may be provided to a higher layer of the wireless device in a non-sequential order, such as the order of receipt.
Claims
exact text as granted — not AI-modifiedWe claim:
1. An apparatus, comprising a processing element configured to cause a first wireless device to:
at a media access control (MAC) layer of the first wireless device:
receive a plurality of first MAC protocol data units (MPDUs) from a second wireless device, wherein the plurality of first MPDUs comprise a plurality of first MAC service data units (MSDUs);
perform an out-of-order replay check for the plurality of first MSDUs, wherein any replayed MSDUs are discarded; and
provide, subsequent to the out-of-order replay check, to a network layer above the MAC layer of the first wireless device, the plurality of first MSDUs excluding any replayed MSDUs in a non-sequential sequence number order without reordering the plurality of first MSDUs or holding the plurality of first MSDUs in a reordering buffer.
2. The apparatus of claim 1 ,
wherein the plurality of first MPDUs are received in one or more aggregated MPDUs (A-MPDUs).
3. The apparatus of claim 2 , wherein the processing element is further configured to cause the MAC layer of the first wireless device to:
determine a sequence number for each MPDU of the plurality of first MPDUs that is successfully received by the first wireless device; and
provide a block acknowledgement to the second wireless device in response to each respective A-MPDU received by the first wireless device, wherein the block acknowledgement indicates the sequence number for each MPDU of the respective A-MPDU that is successfully received by the first wireless device.
4. The apparatus of claim 1 , wherein the processing element is further configured to cause the MAC layer of the first wireless device to:
receive an indication of a traffic identifier for the plurality of first MPDUs,
wherein providing the plurality of first MSDUs to the network layer of the first wireless device in a non-sequential sequence number order is based at least in part on the traffic identifier for the plurality of first MPDUs.
5. The apparatus of claim 4 , wherein the processing element is further configured to cause the MAC layer of the first wireless device to:
receive an indication of a second traffic identifier for a plurality of second MPDUs received by the first wireless device from the second wireless device, wherein the second traffic identifier for the plurality of second MPDUs is different than the traffic identifier for the plurality of first MPDUs, and
provide a plurality of second MSDUs included in the plurality of second MPDUs to the network layer of the first wireless device in a sequential sequence number order based at least in part on the second traffic identifier for the plurality of second MPDUs.
6. The apparatus of claim 1 , wherein the processing element is further configured to cause the MAC layer of the first wireless device to:
negotiate with the second wireless device to determine one or more traffic identifiers for which out-of-order packet processing is configured.
7. A wireless device, comprising:
an antenna;
a radio communicatively coupled to the antenna; and
a processing element communicatively coupled to the radio;
wherein the antenna, radio, and processing element are configured to:
receive, from a second device, one or more Media Access Control (MAC) Protocol Data Units (MPDUs), wherein the one or more MPDUs include one or more MAC Service Data Units (MSDUs) and a traffic identifier;
determine a sequence number for each of the one or more MPDUs;
determine that at least one other MPDU was not successfully received by the wireless device based at least in part on the sequence numbers for each of the one or more MPDUs;
perform an Out-of-Order Packet (OOP) Replay Check, wherein any replayed MSDUs are discarded; and
in response to the OOP Replay Check, pass, from a MAC layer to a network layer of the wireless device, at least one MSDU excluding any replayed MSDUs associated with a first MPDU of the one or more MPDUs having a higher sequence number than the at least one other MPDU prior to receiving the other MPDU and without holding the first MPDU in a reordering buffer.
8. The wireless device of claim 7 , wherein the wireless device is further configured to:
communicate with the second device to complete a setup phase, wherein completing the setup phase comprises negotiating one or more traffic identifiers associated with Out-of-Order (OOO) processing.
9. The wireless device of claim 8 , wherein completing the setup phase further comprises negotiating one or more of:
a block acknowledgement policy;
a traffic identifier associated with In-Order (IO) processing;
a buffer size; or
a starting sequence number (SSN).
10. The wireless device of claim 7 , wherein the wireless device is further configured to:
perform decryption of the one or more MPDUs; and
select a type of replay check of a plurality of types of replay check, wherein the plurality of types of replay check includes the OOP Replay Check and an In-Order Packet (IOP) Replay Check based at least in part on the traffic identifier for the one or more MPDUs, wherein a replay check provides for detection of duplicate packets.
11. The wireless device of claim 10 , wherein performing decryption of the one or more MPDUs comprises constructing additional authenticated data for each MPDU, wherein the additional authenticated data for a respective MPDU is based on the sequence number for the respective MPDU.
12. The wireless device of claim 7 , wherein to perform the OOP Replay Check, the wireless device is further configured to:
initialize an array of ordered pairs of sequence numbers and packet numbers, wherein each packet number of the array is initialized to a configured maximum packet number value; and
for each MPDU:
determine whether the MPDU is a valid packet, wherein the MPDU is determined to not be a valid packet when the packet number of the MPDU is less than or equal to a packet number paired with a sequence number associated with the MPDU in the array, and when the packet number paired with the sequence number associated with the MPDU in the array is less than the maximum packet number value; and
set the packet number paired with the sequence number of the MPDU in the array to the packet number of the MPDU when it is determined that the MPDU is a replayed packet.
13. A method for processing received packets at a wireless device, comprising:
at a Media Access Control (MAC) layer or a lower layer, below the MAC layer, of the wireless device:
receiving a plurality of packets, wherein the plurality of packets is received in a received order;
determining identifying information for each of the plurality of packets;
determining, based at least in part on the identifying information, that the received order of the plurality of packets is not the same as a sent order of the plurality of packets;
performing an out-of-order replay check, wherein any replayed packets of the plurality of packets are discarded; and
based on the out-of-order replay check, providing payload information from the plurality of packets excluding any replayed packets to a network layer of the wireless device in the received order without holding the payload information in a reordering buffer.
14. The method of claim 13 , wherein the identifying information for each respective packet of the plurality of packets comprises a sequence number for the respective packet and a packet number for the respective packet.
15. The method of claim 14 , further comprising:
decrypting one or more of the plurality of packets, wherein performing the out-of-order replay check is based at least in part on the decrypted one or more of the plurality of packets.
16. The method of claim 15 , wherein performing an out-of-order replay check for a packet comprises one of:
performing a range search in sequential order to determine whether the packet is a valid packet, or
performing a brute-force search in sequential order to determine whether the packet is a valid packet.
17. The method of claim 16 , wherein performing the range search in sequential order to determine whether the packet is a valid packet comprises:
arranging in ascending order, by sequence number, ordered pairs of sequence number and packet number for previously received valid packets;
determining at least one sequence number range and packet number range pair to search to determine whether the packet is a valid packet;
for each determined sequence number range and packet number range pair, determining if the sequence number of the packet is in the sequence number range and if the packet number of the packet is in the packet number range;
determining that the packet is a valid packet when the sequence number of the packet is in the sequence number range and the packet number of the packet is in the packet number range for at least one determined sequence number range and packet number range pair; and
determining that the packet is not a valid packet when there is no determined sequence number range and packet number range pair for which the sequence number of the packet is in the sequence number range and the packet number of the packet is in the packet number range.
18. The method of claim 16 , wherein performing the range search in sequential order to determine whether the packet is a valid packet comprises:
determining that the packet is a valid packet when the sequence number of the packet is not the same as any sequence number of a previously received valid packet in a current window and when a packet number of the packet is both greater than a packet number corresponding to a largest sequence number in the current window that is smaller than the sequence number of the packet and less than a packet number corresponding to a smallest sequence number in the current window that is larger than the sequence number of the packet; and
determining that the packet is not a valid packet when the sequence number of the packet is the same as a sequence number of any previously received valid packet or when the packet number of the packet is not both greater than the packet number corresponding to the largest sequence number in the current window that is smaller than the sequence number of the packet and less than the packet number corresponding to the smallest sequence number in the current window that is larger than the sequence number of the packet.
19. The method of claim 16 , wherein performing the brute-force search in sequential order to determine whether the packet is a valid packet comprises:
arranging ordered pairs of sequence number and packet number for previously received valid packets in ascending order by sequence number;
determining that the packet is a valid packet when the sequence number of the packet is different from a sequence number of every previously received valid packet within a current window and when a packet number of the packet is different from a packet number of every previously received valid packet within the current window; and
determining that the packet is not a valid packet when the sequence number of the packet is the same as a sequence number of any previously received valid packet within the current window or when a packet number of the packet is the same as a packet number of any previously received valid packet within the current window.
20. The method of claim 13 , further comprising:
transmitting a block acknowledgement to a second device indicating that the wireless device has received the plurality of packets.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.