콘텐츠로 이동

집성 (A-MSDU·A-MPDU)

규격 · 개정판

A-MSDU: 802.11e/n · A-MPDU: 802.11n · 형식 Clause 9 (A-MSDU, A-MPDU 형식), 동작 Clause 10 · 최대 길이: HT/VHT/HE/EHT Capabilities 요소의 Maximum A-MPDU Length Exponent, Maximum MPDU Length

한눈에 보기

Wi-Fi 패킷 하나를 보낼 때마다 경쟁 대기, 프리앰블, ACK 같은 고정 비용이 수십–수백 µs 듭니다. 데이터가 1201 Mbps로 10 µs만에 끝나도 고정 비용은 그대로라, 패킷을 하나씩 보내면 효율이 매우 낮습니다.

**집성(aggregation)**은 여러 패킷을 한 번에 묶어 고정 비용을 나눠 내는 방법입니다.

  • A-MSDU: IP 패킷 여러 개를 MAC 프레임 하나에 넣음. 헤더 하나, FCS 하나 → 하나라도 깨지면 전부 재전송
  • A-MPDU: MAC 프레임 여러 개를 PHY 패킷 하나에 넣음. 프레임마다 FCS가 있어 깨진 것만 재전송 → Block Ack로 확인

둘을 함께 쓰는 것(A-MSDU들을 담은 A-MPDU)이 가장 효율적입니다. Wi-Fi 5 이후 모든 데이터는 A-MPDU 형식입니다.

A-MPDU 구조

PPDU ⊃ A-MPDU ⊃ MPDU ⊃ A-MSDU ⊃ MSDU 계층. A-MPDU의 각 MPDU 앞에는 4옥텟 구분자(delimiter)가 붙습니다.

A-MSDU vs A-MPDU

항목 A-MSDU A-MPDU
묶는 계층 MAC 상위 (MSDU) MAC 하위 (MPDU)
헤더 MAC 헤더 1개 + 서브프레임 헤더(DA, SA, 길이 14옥텟) MPDU마다 MAC 헤더
오류 검사 FCS 1개 — 하나 깨지면 전체 손실 MPDU마다 FCS — 개별 재전송
암호화 전체를 한 번 (CCMP/GCMP 헤더 1개) MPDU마다
확인 ACK 또는 BA (MPDU 단위) Block Ack 필수
같은 목적지 필요 (같은 RA, 같은 TID) 필요 (같은 RA; HT/VHT는 같은 TID, 11ax는 multi-TID 가능)
최대 크기 HT 3839/7935옥텟, VHT 이후 MPDU 한도(최대 11 454) 안 HT 65 535, VHT 1 048 575옥텟, HE·EHT는 더 큼

최대 A-MPDU 길이

세대 최대 A-MPDU 길이 표현 최대값
HT \(2^{13+e} - 1\), e = 0–3 65 535옥텟
VHT \(2^{13+e} - 1\), e = 0–7 1 048 575옥텟 (약 1 MB)
HE VHT 지수 + HE 확장 지수 VHT보다 큼
EHT EHT 확장 지수 HE보다 큼

실제로는 PPDU 시간 한도(약 5.484 ms)와 Block Ack 윈도(64/256/1024 MPDU)가 먼저 걸리는 경우가 많습니다. 예를 들어 1500바이트 MPDU를 64개 묶으면 약 96 KB이므로, 2 Gbps 링크에서는 0.4 ms면 끝나 윈도가 병목이 됩니다. 11ax가 BA 윈도를 256으로, 11be가 1024로 늘린 이유입니다.

A-MPDU 구분자

필드 비트 의미
EOF 1 마지막(또는 단일) MPDU 표시 (VHT 이후)
MPDU Length 14 (HT 12) 뒤따르는 MPDU 길이
CRC 8 구분자 자체의 오류 검사
Delimiter Signature 8 0x4E (ASCII 'N'). 오류 후 다음 구분자를 찾는 표식

수신기는 MPDU 하나가 깨져도 다음 4옥텟 경계마다 서명 'N'과 CRC를 확인하며 다음 구분자를 찾아 나머지 MPDU를 살립니다.

전문가 노트 — 최소 간격과 실무 튜닝

최소 MPDU 시작 간격. 수신기 처리 능력에 따라 연속 MPDU 시작 사이에 최소 간격(0, 1/4, 1/2, 1, 2, 4, 8, 16 µs)을 요구할 수 있고(HT Capabilities의 Minimum MPDU Start Spacing), 송신 측은 길이 0인 빈 구분자로 이 간격을 채웁니다.

A-MSDU in A-MPDU. HT에서 이 조합 사용 여부는 Block Ack 합의(ADDBA)의 A-MSDU Supported 비트로 협상합니다. 큰 A-MSDU는 헤더·암호화 오버헤드를 줄이지만, 채널이 나쁠 때 FCS 하나 실패로 여러 MSDU를 잃으므로 레이트 적응과 함께 조절해야 합니다. Linux mac80211은 기본적으로 낮은 MCS에서 A-MSDU 크기를 줄입니다.

Multi-TID A-MPDU (11ax). 서로 다른 TID의 MPDU를 한 A-MPDU에 담고 Multi-STA BlockAck의 Per-AID TID Info로 TID별로 확인합니다. 하향 OFDMA에서 STA마다 짧은 데이터를 효율적으로 실을 때 유용합니다.

암호화와 집성. CCMP/GCMP는 MPDU 단위라 A-MPDU의 MPDU마다 PN(패킷 번호)이 증가합니다. 수신 측 재정렬 버퍼와 PN 재전송 검사(replay check)를 TID별로 일관되게 처리해야 하며, MLO에서는 MLD 단위 PN 공간을 링크들이 공유합니다.