변조와 MCS: 속도는 어디서 오나
휴대폰의 Wi-Fi 정보 화면에는 “링크 속도 1,201 Mbps”처럼 이상하게 딱 떨어지지 않는 숫자가 뜬다. 방을 옮기면 그 숫자가 864, 576, 288로 뚝뚝 떨어진다. 이 숫자는 아무렇게나 나오지 않는다. 몇 개의 정해진 값을 곱하고 나눈 결과다. 이 장에서는 그 공식을 하나씩 풀고, 와이파이가 거리에 따라 공식의 어느 부분을 바꾸는지 따라간다.
- BPSK에서 4096-QAM까지, 한 번에 싣는 비트 수와 잡음에 대한 약함이 함께 늘어나는 관계를 성좌도로 이해한다.
- 부호율(1/2~5/6)과 오류 정정 부호(BCC, LDPC)가 무엇을 사고파는지 안다.
- MCS 표와 링크 속도 공식으로 1,201 Mb/s 같은 숫자를 직접 계산한다.
- 거리·벽·채널 폭이 SNR을 거쳐 MCS와 속도를 계단처럼 바꾸는 과정을 시뮬레이터로 따라간다.
성좌도: 한 번에 몇 비트를 싣나
3장의 부반송파 하나는 심볼마다 한 가지 “상태”를 보낸다. 상태는 반송파의 세기와 위상의 조합이고, 이를 평면 위의 점으로 그린 것이 성좌도(constellation)다. 점이 2개면 1비트(BPSK), 4개면 2비트(QPSK), 16개면 4비트(16-QAM)… 4096개면 12비트(4096-QAM)다. 점을 촘촘히 놓을수록 한 번에 많이 싣지만, 점 사이 간격이 좁아져 잡음이 조금만 섞여도 옆 점으로 잘못 읽힌다.
시끄러운 회의실에서 멀리 앉은 사람에게 손짓으로 숫자를 알린다. 가까우면 손가락 열 개를 다 써서 빠르게 많은 숫자를 전할 수 있다(4096-QAM). 멀어지면 손가락이 흐릿해 “위냐 아래냐”만 구분된다(BPSK). 와이파이는 상대와의 거리(SNR)를 보고 손짓의 촘촘함을 계속 바꾼다.
성좌도와 잡음: 점이 촘촘할수록 약하다
부호율: 일부러 덧붙이는 여분
변조만으로는 잡음을 이길 수 없다. 와이파이는 보낼 비트에 여분의 비트를 섞어 수신기가 틀린 비트 몇 개를 스스로 고치게 한다. 원래 비트의 비율이 부호율(coding rate)이다. 1/2이면 비트 하나에 여분 하나, 5/6이면 다섯 개에 여분 하나다. 802.11a부터 쓰인 컨볼루션 부호(BCC)에 이어, 802.11n부터는 더 강력한 LDPC를 쓸 수 있고, Wi-Fi 6부터 넓은 채널에서는 LDPC가 기본이다.
그래서 와이파이의 “전송 방식”은 변조와 부호율의 짝이고, 이 짝에 번호를 매긴 것이 MCS(Modulation and Coding Scheme)다.
| MCS | 변조 | 부호율 | 세대 |
|---|---|---|---|
| 0 | BPSK | 1/2 | Wi-Fi 4~7 (Wi-Fi 4는 스트림마다 0~7) |
| 1 | QPSK | 1/2 | |
| 2 | QPSK | 3/4 | |
| 3 | 16-QAM | 1/2 | |
| 4 | 16-QAM | 3/4 | |
| 5 | 64-QAM | 2/3 | |
| 6 | 64-QAM | 3/4 | |
| 7 | 64-QAM | 5/6 | |
| 8 · 9 | 256-QAM | 3/4 · 5/6 | Wi-Fi 5~ |
| 10 · 11 | 1024-QAM | 3/4 · 5/6 | Wi-Fi 6~ |
| 12 · 13 | 4096-QAM | 3/4 · 5/6 | Wi-Fi 7 |
MCS별 속도의 상대비(1/2 BPSK = 1 → 5/6 4096-QAM = 20): Linux net/wireless/util.c cfg80211_calculate_bitrate_he/eht()의 mcs_divisors · Wi-Fi 4의 MCS 번호(0~31)는 스트림 수까지 담는다(mcs & 7 = 변조, (mcs >> 3) + 1 = 스트림): cfg80211_calculate_bitrate_ht()
링크 속도 공식
링크 속도 계산기 (Linux 커널 계산과 검증)
cfg80211_calculate_bitrate_ht/vht/he/eht()가 내는 값과 0.1 Mb/s 이내로 같은지 자동 검증한다.거리와 벽이 MCS를 고른다
어떤 MCS를 쓸지는 받는 쪽의 SNR(신호 대 잡음비)이 정한다. 잡음의 바닥은 채널 폭에 비례한다. 상온의 열잡음은 1 Hz당 −174 dBm이고, 20 MHz면 여기에 10·log₁₀(20,000,000) ≈ 73 dB를 더해 약 −101 dBm, 수신기 자체의 잡음(잡음 지수)까지 더하면 −95 dBm 안팎이다. 폭을 두 배로 넓히면 잡음도 3 dB 오른다. 받은 세기에서 이 잡음 바닥을 빼면 SNR이다.
와이파이 칩은 프레임을 보낼 때마다 결과(ACK가 왔는가)를 보고 MCS를 올리거나 내린다. 이것이 속도 적응(rate adaptation)이다. Linux에는 Minstrel이라는 알고리즘이 들어 있다. MCS는 정해진 몇 단계뿐이라 속도는 매끄럽게가 아니라 계단처럼 떨어진다.
거리 → 세기 → SNR → MCS → 속도
공유기 바로 옆에서는 1,201 Mb/s(Wi-Fi 6, 80 MHz, 2스트림, MCS 11)가 나온다. 콘크리트 벽 하나 너머 방에서 MCS 7이 되었다면 링크 속도는?
위 계산기에서 같은 조건의 MCS 7을 찾아보자.
핵심 정리
- 성좌점이 2b개면 심볼당 b비트: BPSK 1 … 1024-QAM 10, 4096-QAM 12. 촘촘할수록 잡음에 약하다(차수 4배마다 약 6 dB 더 필요).
- 부호율(1/2~5/6)은 오류 정정용 여분의 비율이다. 변조와 부호율의 짝이 MCS다(Wi-Fi 5: 0~9, 6: 0~11, 7: 0~13).
- 링크 속도 = NSD × 비트 × 부호율 × 스트림 ÷ 심볼 시간. Wi-Fi 6 80 MHz 2스트림 MCS 11 = 1,201 Mb/s.
- 잡음 바닥은 폭에 비례(20 MHz 열잡음 ≈ −101 dBm, 폭 2배 +3 dB). 받은 세기 − 잡음 = SNR이 MCS를 정하고, 속도는 거리와 벽에 따라 계단식으로 떨어진다.
확인 퀴즈
1024-QAM의 성좌점 하나는 몇 비트를 나르나?
Wi-Fi 4의 MCS 15가 뜻하는 것은?
Wi-Fi 6, 160 MHz(NSD 1,960), MCS 11, 2스트림, GI 0.8 µs의 링크 속도는?
같은 거리에서 채널 폭을 80 MHz → 160 MHz로 넓히면 SNR은?
방을 옮기자 링크 속도가 매끄럽지 않고 몇 단계로 뚝뚝 떨어졌다. 이유는?