콘텐츠로 이동

레이트 적응

규격 · 참고

표준은 알고리즘을 정하지 않음 (구현 영역) · 보조 신호: HT/VHT 링크 적응 (MCS Request/Feedback, HT Control), HE Link Adaptation (HLA A-Control), 11ax/be의 OMI · 공개 구현 예: Linux mac80211 Minstrel-HT, 각 칩 제조사 펌웨어

한눈에 보기

Wi-Fi는 패킷을 보낼 때마다 MCS, 대역폭, 공간 스트림 수, GI를 골라야 합니다. 너무 높으면 깨지고 재전송하느라 느려지고, 너무 낮으면 공중 시간을 낭비합니다.

셀룰러는 단말이 채널 품질(CQI)을 정기적으로 보고하고 기지국이 고르지만, Wi-Fi는 대부분 송신 측이 스스로 시행착오로 고릅니다. 보내 보고 Block Ack로 성공률을 보고, 그 결과로 다음 MCS를 정합니다.

대표적인 공개 알고리즘은 Linux의 Minstrel-HT로, "대부분은 최고 성능 조합으로 보내되 가끔 다른 조합을 시험 삼아 보내서 통계를 갱신"합니다.

무엇을 고르나

차원 선택지 고려
MCS 0–13 SNR, 간섭, 하드웨어 EVM
공간 스트림 1–N 채널 상관(LoS 환경에서는 2 SS가 어려움)
대역폭 20–320 MHz 2차 채널 상태, SNR 3 dB/배 손실
GI / LTF 0.8 / 1.6 / 3.2 µs, 2x/4x LTF 지연 확산, 실외
코딩 BCC / LDPC 대부분 LDPC
빔포밍 / STBC 사운딩 최신 여부
A-MPDU 길이 1–윈도 채널 변화 속도, 지연 요구

알고리즘 방식

방식 원리 예
성공률 통계 조합별 성공률 × 전송률 = 기대 처리량, 최대값 선택 + 탐색 Minstrel / Minstrel-HT
SNR 기반 수신 측 SNR(또는 ACK의 RSSI)로 MCS 표를 조회 일부 펌웨어
피드백 기반 수신 측이 MFB/HLA로 추천 MCS를 보냄 HT/VHT/HE 링크 적응 (선택)
학습 기반 과거 패턴·위치로 예측 연구·일부 제품
flowchart LR
    A["후보 조합 표<br/>(MCS × SS × BW × GI)"] --> B["대부분: 최고 기대 처리량 조합으로 전송"]
    A --> C["일정 비율: 탐색 조합으로 전송"]
    B --> D["Block Ack 비트맵<br/>→ 조합별 성공률 갱신 (EWMA)"]
    C --> D
    D --> A

재시도 체인

하나의 프레임에 여러 단계의 재시도 조합을 미리 정해 두는 것이 일반적입니다(Multi-Rate Retry).

시도 조합 (예) 횟수
1 최고 처리량 조합: MCS 11, 2 SS 2
2 두 번째: MCS 9, 2 SS 2
3 최고 성공률 조합: MCS 7, 1 SS 2
4 최저 기본: MCS 0 나머지
전문가 노트 — 함정과 디버깅

충돌 vs 채널 오류. 성공률 통계만 보면 혼잡에 의한 충돌 손실도 "채널이 나쁘다"로 해석해 MCS를 낮춥니다. 그러면 공중 시간이 늘어 혼잡이 더 심해지는 악순환이 생깁니다. A-MPDU에서 앞쪽 MPDU부터 연속 실패하면 충돌(프리앰블 손실), 흩어진 실패면 채널 오류로 보는 식의 휴리스틱으로 구분합니다. RTS/CTS 성공 후의 실패율은 채널 오류를 더 잘 반영합니다.

상향과 하향의 비대칭. 단말 송신 전력이 AP보다 낮아 같은 거리에서도 상향 MCS가 낮습니다. 트리거 기반 상향에서는 AP가 상향 MCS를 정하므로, AP가 상향 통계(HE TB PPDU 수신 SNR)로 레이트를 적응합니다.

MLO에서의 레이트. 링크마다 독립적으로 적응하되, 링크 간 트래픽 분배(어느 링크로 몇 % 보낼지)와 함께 최적화해야 합니다. 한 링크의 레이트가 급락하면 그 링크의 큐를 다른 링크로 옮기는 것이 MLO의 장점입니다.

확인 방법. Linux에서는 /sys/kernel/debug/ieee80211/phy0/netdev:wlan0/stations/<MAC>/rc_stats(Minstrel-HT, 드라이버에 따라 다름)로 조합별 성공률과 처리량 추정치를 볼 수 있습니다. 칩 펌웨어 레이트 제어(FullMAC)는 보통 제조사 디버그 도구로만 보입니다.