대역폭 지연 곱 계산기 쉽게 이해하기 — 개념과 원리
대역폭 지연 곱(BDP)은 네트워크 경로 위에 "떠 있는" 데이터, 즉 보냈지만 아직 확인 응답을 받지 못한 데이터의 양입니다. 링크를 빈틈없이 채우려면 TCP 윈도(또는 슬라이딩 윈도 버퍼)가 얼마나 커야 하는지 알려 줍니다. 이 계산기는 BDP, 필요한 윈도 크기(KB), 그리고 지정한 윈도로 TCP 단일 연결이 낼 수 있는 최대 처리량을 구합니다. 장거리 전송용 서버 튜닝, 버퍼 크기 산정, 빠른 회선이 해외 서버와는 왜 느린지 설명할 때 쓰입니다.
계산 방법
- BDP(바이트) = 대역폭(bit/s) × RTT(s) ÷ 8이며, MB(10^6바이트)로 표시합니다.
- 필요 윈도(KB) = 같은 바이트 수 ÷ 1,024
- 최대 처리량(bit/s) = 윈도(바이트) × 8 ÷ RTT(s)이며, 윈도 입력은 1,024바이트 단위 KB, 결과는 Mbps입니다.
대역폭은 Mbps(10^6 bit/s), RTT는 밀리초로 입력합니다.
원리
TCP는 윈도 크기만큼만 확인 응답 없이 보낼 수 있습니다. 윈도를 다 보내고 나면 약 한 번의 왕복 시간 동안 응답을 기다려야 다음 데이터를 보낼 수 있습니다. 따라서 연결 하나는 RTT마다 최대 윈도 하나만큼만 전달하고, 처리량은 윈도 ÷ RTT를 넘지 못합니다. 속도 B인 회선을 가득 채우려면 한 RTT 동안 보내는 양, 즉 B × RTT만큼의 윈도가 필요합니다. 호스 속 물의 양이 유량 × 길이인 것과 같은 이치입니다.
예제 풀이
- 입력: 대역폭 1,000 Mbps, RTT 80 ms, 윈도 64 KB
- BDP = 1,000 × 10^6 × 0.080 ÷ 8 = 10,000,000바이트 = 10 MB
- KB로는 10,000,000 ÷ 1,024 = 9,765.625 KB
- 64 KB 윈도: 64 × 1,024 × 8 = 524,288비트를 RTT마다 보내므로 524,288 ÷ 0.080 = 6,553,600 bit/s = 6.5536 Mbps
- 즉 튜닝하지 않은 64 KB 윈도로는 이 거리에서 기가비트 회선의 1%도 쓰지 못합니다.
| 대역폭 (Mbps) | BDP (MB) |
|---|---|
| 250 | 2.5 |
| 500 | 5 |
| 750 | 7.5 |
| 1,000 | 10 |
| 1,250 | 12.5 |
| 1,500 | 15 |
| 2,000 | 20 |
결과 해석
윈도가 BDP보다 작으면 연결은 윈도에 묶이며, 최대 처리량 값이 곧 상한입니다. 윈도가 BDP보다 크면 회선 속도나 혼잡이 한계가 됩니다. RTT가 1 ms 미만인 근거리 망은 BDP가 매우 작지만, RTT 100~200 ms인 대륙 간 기가비트 경로는 수십 MB의 윈도가 필요하며 TCP 윈도 스케일링(RFC 7323)이 있어야 합니다.
흔한 실수
- 비트와 바이트를 혼동하는 경우(대역폭은 비트, 윈도는 바이트)
- 왕복 시간 대신 편도 지연을 넣는 경우
- 윈도가 병목인데 회선 속도만 올리면 해결된다고 생각하는 경우
자주 묻는 질문
1 Gbps 회선인데 해외 서버에서 받는 속도가 느린 이유는 무엇인가요?
윈도가 작으면 회선 속도와 관계없이 처리량이 윈도 ÷ RTT로 제한되기 때문입니다.
스케일링 없이 TCP 윈도의 최대 크기는 얼마인가요?
헤더 필드가 16비트라서 65,535바이트입니다. 윈도 스케일링을 쓰면 약 1 GiB까지 늘릴 수 있습니다.
연결을 여러 개 쓰면 빨라지나요?
네, 연결마다 윈도가 따로 있으므로 N개 연결은 RTT마다 대략 윈도 N개만큼 보낼 수 있습니다.
출처: IETF RFC 7323, TCP Extensions for High Performance