대역폭 지연 곱이란?
대역폭 지연 곱(BDP, Bandwidth-Delay Product)은 특정 순간에 네트워크 링크 위를 '날아다니고 있을' 수 있는 데이터의 최대량을 뜻합니다. 값은 링크의 대역폭에 왕복 지연 시간(RTT)을 곱해 구합니다. BDP는 TCP 튜닝에서 핵심 개념인데요, 고속·고지연 링크(이른바 '롱 팻 네트워크', LFN)를 100% 활용하려면 TCP 수신 윈도우가 최소한 BDP 이상이어야 합니다. 그렇지 않으면 처리량(스루풋)이 가용 대역폭보다 훨씬 낮은 수준에서 묶여 버립니다.
계산기 사용 방법
먼저 링크 대역폭을 입력하고 단위를 선택하세요(bit/s, Kbit/s, Mbit/s, Gbit/s). 그다음 왕복 지연 시간을 밀리초(ms) 단위로 입력합니다. 이 값은 보통 ping 명령으로 측정되는 수치를 그대로 쓰면 됩니다. 계산기는 BDP를 비트, 바이트, 킬로바이트 단위로 알려 줍니다. 소켓 버퍼나 TCP 윈도우 크기를 설정할 때는 바이트 값을 활용하면 됩니다.
공식 풀이
BDP(비트) = 대역폭(비트/초) × RTT(초)입니다. 계산 과정에서는 대역폭을 먼저 초당 비트(bit/s)로 환산하고, RTT는 밀리초를 초로 바꿉니다(1000으로 나눔). 비트 결과를 8로 나누면 바이트가 되고, 다시 바이트를 1024로 나누면 키비바이트(KB)가 됩니다.
$$\text{BDP (bytes)} = \frac{\text{Bandwidth} \times \text{Unit} \times \dfrac{\text{RTT (ms)}}{1000}}{8}$$
예제로 보는 계산
RTT가 40ms인 100Mbit/s 링크를 생각해 봅시다. 대역폭 = 100,000,000 bit/s, RTT = 0.040초입니다. BDP는 다음과 같습니다.
$$\text{BDP} = 100{,}000{,}000 \times 0.040 = 4{,}000{,}000 \text{ bit} = 500{,}000 \text{ byte} \approx 488.28 \text{ KB}$$이 링크를 가득 채우려면 TCP 윈도우가 최소 약 500KB는 되어야 합니다.
BDP 결과 해석
BDP는 송신자가 링크를 완전히 활용하기 위해 통신선 위에 유지해야 하는 승인되지 않은 데이터의 양입니다. TCP는 승인을 기다리기 전에 한 윈도우 크기만큼의 데이터만 미처리 상태로 유지할 수 있으므로, 수신 윈도우는 다음을 만족해야 합니다:
$$\text{TCP 윈도우} \ge \text{BDP}$$윈도우가 BDP보다 작으면, 송신자는 윈도우 크기만큼의 데이터를 전송한 후 ACK를 기다리는 동안 나머지 왕복 시간 동안 유휴 상태가 됩니다. 그러면 링크가 제공하는 대역폭이 얼마나 크든 상관없이 달성 가능한 처리량이 제한됩니다:
$$\text{처리량} \approx \frac{\text{윈도우 (바이트)} \times 8}{\text{RTT (초)}}$$예를 들어, 150 ms의 대륙 간 경로에서 전형적인 64 KB 윈도우는 \(\frac{65{,}536 \times 8}{0.150} \approx 3.5\) Mbit/s만 달성합니다 — 100 Mbit/s 링크 용량보다 훨씬 낮습니다.
- 기본 윈도우 (스케일링 없음): 원래 16비트 TCP 윈도우 필드의 최댓값은 65,535바이트(64 KB)입니다. 저지연 LAN에서는 보통 충분합니다.
- 윈도우 스케일링 (RFC 1323 / RFC 7323): BDP가 64 KB를 초과하는 경로는 TCP 윈도우 스케일 옵션이 필요합니다. 이는 공시된 윈도우를 2의 거듭제곱으로 곱하여 대략 1 GB까지 확대합니다. 양쪽 끝점에서 활성화되어야 하며 미들박스에 의해 제거되지 않아야 합니다.
- 부족한 윈도우: 처리량이 윈도우 ÷ RTT로 제한됩니다. 지연 시간이 두 배로 늘어나면 고정 윈도우에서 달성 가능한 속도는 반으로 줄어듭니다. 이것이 "장거리 고용량 네트워크"(높은 BDP)가 빠른 링크에서도 느리게 느껴지는 이유입니다.
- 과도한 윈도우: 윈도우를 BDP보다 훨씬 크게 설정하면 메모리를 낭비하고 버퍼링/지연을 증가시킬 수 있지만, 정상 상태 처리량을 개선하지는 않습니다.
실용적인 규칙으로서, 최대 TCP 버퍼를 최소한 BDP로 설정하세요(보통 ACK 타이밍과 재전송을 흡수하기 위해 BDP의 2배를 사용합니다). 최신 운영 체제는 윈도우를 BDP로 향해 자동으로 조정하므로, 확인해야 할 주요 사항은 윈도우 스케일링이 끝에서 끝까지 허용되는지 여부입니다.
일반적인 RTT 및 대역폭 참고값
측정된 RTT가 없을 때 이러한 일반적인 범위를 입력값으로 사용하세요. 실제 RTT는 물리적 거리, 라우팅, 큐잉 및 매체에 따라 달라집니다. 위성 링크는 정지궤도로의 전파 지연 왕복으로 지배됩니다.
| 네트워크 경로 | 일반적인 RTT | 참고 |
|---|---|---|
| 동일 LAN / 데이터 센터 | < 1 ms | 스위칭된 이더넷, 로컬 서브넷 |
| 동일 도시 / ISP | 1–10 ms | 로컬 피어링, 지역 서버 |
| 동일 국가 | 10–40 ms | 지역 간 육상 광섬유 |
| 대륙 간 / 대륙 간 | 80–150 ms | 예: 미국–유럽, 미국–아시아 |
| 정지궤도 위성 | 500–700 ms | 홉당 약 36,000 km 상하 왕복 |
연결 유형별 일반적인 액세스 대역폭(다운스트림, 명목상):
| 연결 유형 | 일반적인 대역폭 |
|---|---|
| ADSL | 5–24 Mbit/s |
| VDSL / 고정 무선 | 25–100 Mbit/s |
| 케이블 (DOCSIS) | 100–1000 Mbit/s |
| 가정용 광섬유 (FTTH) | 100 Mbit/s – 10 Gbit/s |
| 4G LTE | 10–100 Mbit/s |
| 5G | 100 Mbit/s – 1 Gbit/s+ |
| 기가비트 이더넷 (LAN) | 1 Gbit/s |
| 10 기가비트 이더넷 | 10 Gbit/s |
BDP를 계산하기 전에 인용된 요금제 속도를 단위 사이에 변환하려면 Gbps-대-Mbps 또는 Kbps-대-Mbps 변환이 도움이 될 수 있습니다. BDP 공식은 초당 원시 비트를 예상합니다.
자주 묻는 질문
지연 시간이 처리량에 영향을 주는 이유는? 송신 측은 ACK를 받지 못한 데이터를 한 번에 한 윈도우만큼만 내보낼 수 있기 때문입니다. 윈도우가 BDP보다 작으면 송신 측이 ACK를 기다리느라 멈추게 되고, 그만큼 대역폭이 놀게 됩니다.
바이트로 봐야 하나요, 비트로 봐야 하나요? 대역폭은 보통 비트로 표기하지만, 버퍼와 윈도우 크기는 바이트 단위로 설정합니다. 따라서 튜닝에는 바이트 결과가 가장 유용합니다.
어떤 RTT 값을 써야 하나요? 두 종단점 사이의 왕복 지연 시간을 사용하세요. 보통 ping으로 측정하거나 지리적 거리로 추정합니다.