This figure demonstrates how data can be exchanged in a more efficient way using 11e and 11n. Each data frame shown can be simple data packet (MSDU) or AMSDU. The aggregate packet where multiple data frames are glued together is known as AMPDU. Hence, AMPDU is made up of multiple MSDUs or AMSDUs.
Sending AMPDU instead of multiple Data or AMSDU packets (separated by SIFS or RIFS) is more efficient as it saves inter frame space time b/w individual packets and also the PHY header.
We will refer the complete data transfer shown above as one transaction.
In the next post, we will see how this transaction fits into BA session. We will also see that each BA session can has multiple transactions.
SIFS: Duration that was originally designed to accommodate receive to transmit switching.
RIFS: Time required by the receiver to re-arm for the acquisition of new signal.
- Block ACK: Just like TCP, not every data packet is acknowledged. Possible modes are:
- Immediate: Response to BAR with BA is within SIFS
- uses uncompressed version of BA where each bit acknowledges one fragment of MSDU/Data packet and up-to 64 MSDU/Data packets can be acknowledged. Hence, uses 1024 (64*16) bit score card as each MSDU can have up-to 16 fragments.
- Each MPDU in the transaction (see below to see what transaction means in BA session) has its ACK policy field (inside QoS info field) set to Block ACK. However, it is also possible to have a single data frame in a transaction. Such data frame should be send with its ACK policy set to Normal ACK & in such a case, the receiver responds with normal ACK on receiving this data frame. This is efficient than setting ACK policy for a single frame to Block ACK as BAR is not required.
- Delayed: BAR is just acked and BA is sent little later (for ease of implementation)
- Modified Block ACK
- Partial State Block ACK
- Compressed Block ACK (send small & save time)
- one bit acknowledges one MSDU/Data packet of a transaction hence one BA can ACK up-to 64 MSDU or Data packets. Fragments are not supposed to be present as fragmentation & aggregation together makes little sense. This reduces the size of BA frames which is a control frame and send with robust MCS index rather than at data rates thus reducing the size of BA helps to be more efficient.
- Implicit BAR (BAR bye-bye but not always*)
- Not all MPDUs in the transaction have their ACK policy field (inside QoS info field) set to Block ACK and if any one or more of the MPDUs have their ACK policy set to normal then receiver responds with BA frame w/o requiring BAR.
- Invoke BA frame. [now can be done by sending Normal ACK policy]
- Flushes recipient reorder's buffer which is required when re-transmission count of MPDU has reached its MAX limit (each MPDU has time to live field which defines maximum allowed re-transmissions for the MPDU) and transmitter/originator wants recipient to flush its reorder buffer as that MPDU will NOT be transmitted again. Hence, in this case we still need to have BAR. Receiver will pass on the following MPDU after expired MPDU to the OS. MPDU Reordering is best tried by the receiver even if there are no fragments.
- Done at the top of MAC layer
- Good for aggregating small packets.
- Max AMSDU length which a station can receive is either 3839 or 7935 bytes. Its communicated by station using "HT capability info" element (available in Probe & Association Request, not available in ADDBA Request or Response)
- AMSDU introduction lead to increase of payload length to 7,955 in Data frames which was earlier 2,312 bytes.
- MSDU Delineation: Using prefix (DA, SA & len), possible only if AMSDU is not corrupted. Each MSDU aligned on 32 bit boundary.
- In the event of corruption in one MSDU other MSDUs in AMSDU are not recoverable.
- Done at the bottom of the MAC
- Each MPDU has its own wireless MAC header.
- Max AMPDU length which a station can receive is 8191, 16383, 32767 or 65535 bytes. Its communicated by station using "HT capability info" element (available in Probe & Association Request, not available in ADDBA Request or Response)
- MPDU Delineation: Each MPDU is aligned on 32 bit boundary + MPDU Delimiter has a signature (ASCII character "N") which helps to track MAC delimiter of each MPDU. Due to presence of CRC in the MPDU delimiter, length field in the delimiter is verified.
- MPDUs with corrupted delimiters or corrupted payload will be filtered out.
- After the PHY preamble, the receiver should be capable to understand either MPDU Delimiter or normal 802.11 MAC header.
- Packet Classification at receiver:
- Frames larger than AMSDU length or Length mentioned in AMPDU Delimiter header is only of one MPDU however actual frame receive length is larger will indicate AMPDU (multiple MPDUs)
- Data vs AMSDU: AMSDU is marked in QoS Field
- AMSDU or AMPDU can be sent only in the Block ACK session.
- All HT Stations are required to support HT-immediate block ACK as receiver.
- MAC Efficiency: Throughput with the above mentioned changes is 75% - 80% of Phy Data rate. Hence, 300Mbps phy rate should give 225 Mbps to 240 Mbps.