Что такое произведение пропускной способности на задержку?
Произведение пропускной способности на задержку (BDP, bandwidth-delay product) — это максимальный объём данных, который может одновременно находиться «в пути» по сетевому каналу. Он равен пропускной способности канала, умноженной на время кругового обхода (RTT). BDP — ключевое понятие при тонкой настройке TCP: чтобы полностью загрузить быстрый канал с высокой задержкой (так называемый «длинный толстый канал», long fat network), окно приёма TCP должно быть не меньше значения BDP. Иначе реальная скорость передачи останется заметно ниже доступной пропускной способности.
Как пользоваться калькулятором
Введите пропускную способность канала и выберите единицу измерения (бит/с, Кбит/с, Мбит/с или Гбит/с). Затем укажите время кругового обхода в миллисекундах — обычно это значение, которое показывает команда ping. Калькулятор выдаст BDP в битах, байтах и килобайтах. Значение в байтах удобно использовать для настройки размера буфера сокета или TCP-окна.
Разбираем формулу
$$\text{BDP (биты)} = \text{пропускная способность (бит/с)} \times \text{RTT (секунды)}$$ Сначала пропускную способность переводят в биты в секунду, а RTT — из миллисекунд в секунды (делим на 1000). Деление результата в битах на 8 даёт байты, а деление байтов на 1024 — кибибайты (КБ).
Пример расчёта
Возьмём канал 100 Мбит/с с RTT 40 мс. Пропускная способность = \(100\,000\,000\) бит/с, RTT = \(0{,}040\) с. $$\text{BDP} = 100\,000\,000 \times 0{,}040 = 4\,000\,000 \text{ бит} = 500\,000 \text{ байт} \approx 488{,}28 \text{ КБ}$$ Чтобы полностью загрузить такой канал, размер TCP-окна должен быть не менее ~500 КБ.
Частые вопросы
Почему задержка влияет на скорость передачи? Потому что отправитель может держать «в полёте» лишь одно окно неподтверждённых данных. Если окно меньше BDP, отправитель простаивает в ожидании подтверждений (ACK), и часть пропускной способности остаётся незадействованной.
Что использовать — байты или биты? Пропускную способность обычно указывают в битах, но размеры буферов и окон задаются в байтах, поэтому для настройки удобнее всего результат в байтах.
Какое значение RTT брать? Используйте время кругового обхода между двумя узлами — обычно его измеряют командой ping или оценивают по географическому расстоянию.
Интерпретация вашего результата BDP
BDP — это объём неподтверждённых данных, который отправитель должен иметь возможность удерживать в канале для полного использования линии связи. TCP может иметь только одно окно данных, ожидающих отправки, прежде чем должен ждать подтверждений, поэтому окно приёма должно удовлетворять:
$$\text{окно TCP} \ge \text{BDP}$$Если окно меньше BDP, отправитель передаёт окно данных и затем ожидает в течение остального времени туда и обратно, пока ждёт подтверждений. Достижимая пропускная способность тогда ограничена, независимо от того, какую ширину полосы предлагает линия связи:
$$\text{Пропускная способность} \approx \frac{\text{Окно (байты)} \times 8}{\text{RTT (с)}}$$Например, классическое окно из 64 КБ на трансконтинентальном пути с задержкой 150 мс даёт только \(\frac{65{,}536 \times 8}{0.150} \approx 3.5\) Мбит/с — намного ниже пропускной способности канала 100 Мбит/с.
- Окно по умолчанию (без масштабирования): исходное 16-битное поле окна TCP имеет максимум 65 535 байт (64 КБ). На локальных сетях с низкой задержкой этого обычно достаточно.
- Масштабирование окна (RFC 1323 / RFC 7323): любой путь, у которого BDP превышает 64 КБ, требует параметра масштабирования окна TCP, который умножает объявленное окно на степень двойки до примерно 1 ГБ. Он должен быть включен (и не удален промежуточными узлами) на обоих конечных точках.
- Недостаточное окно: пропускная способность ограничена значением окно ÷ RTT; удвоение задержки уменьшает вдвое достижимую скорость для фиксированного окна. Вот почему «длинные толстые сети» (высокий BDP) кажутся медленными даже на быстрых линиях.
- Избыточное окно: установка окна намного больше, чем BDP, тратит память и может увеличить буферизацию/задержку, но не улучшает стационарную пропускную способность.
Как практическое правило, установите максимальный буфер TCP как минимум равным BDP (часто используется 2× BDP для поглощения несинхронности подтверждений и повторных передач). Современные операционные системы автоматически увеличивают окно в направлении BDP, поэтому главное — убедиться, что масштабирование окна разрешено на всём пути.
Типичные значения справочника RTT и пропускной способности
Используйте эти типичные диапазоны в качестве входных данных, когда у вас нет измеренной RTT. Фактическая RTT зависит от физического расстояния, маршрутизации, очередей и среды передачи; спутниковые линии доминируются задержкой распространения до геостационарной орбиты и обратно.
| Сетевой путь | Типичная RTT | Примечания |
|---|---|---|
| Одна локальная сеть / центр обработки данных | < 1 мс | Коммутируемый Ethernet, локальная подсеть |
| Один метрополь / ISP | 1–10 мс | Локальный пиринг, региональные серверы |
| Одна страна | 10–40 мс | Кроссрегиональное наземное волокно |
| Трансконтинентальный / межконтинентальный | 80–150 мс | например США–Европа, США–Азия |
| Геостационарный спутник | 500–700 мс | ~36 000 км вверх и обратно за переход |
Типичные полосы пропускания доступа по типам соединения (исходящий, номинальный):
| Тип соединения | Типичная пропускная способность |
|---|---|
| ADSL | 5–24 Мбит/с |
| VDSL / фиксированная беспроводная сеть | 25–100 Мбит/с |
| Кабельное (DOCSIS) | 100–1000 Мбит/с |
| Волокно до дома (FTTH) | 100 Мбит/с – 10 Гбит/с |
| 4G LTE | 10–100 Мбит/с |
| 5G | 100 Мбит/с – 1 Гбит/с и более |
| Gigabit Ethernet (локальная сеть) | 1 Гбит/с |
| 10 Gigabit Ethernet | 10 Гбит/с |
Для преобразования указанной скорости плана между единицами перед вычислением BDP может помочь конвертер из Гбит/с в Мбит/с или из Кбит/с в Мбит/с; помните, что формула BDP требует необработанных битов в секунду.