Ограничения пропускной способности TCP и их расчет
Реальная скорость передачи данных в сети редко достигает номинальной пропускной способности физического канала. При использовании протокола TCP производительность одного потока ограничивается тремя независимыми факторами: физической скоростью соединения с учетом накладных расходов протоколов, размером окна приема на принимающей стороне и потерей пакетов на сетевом пути.
Инструмент «Калькулятор задержки и пропускной способности сети» позволяет рассчитать теоретический и практический предел скорости для одного TCP-соединения на основе заданных параметров сетевого пути. Вводя такие параметры, как скорость канала, время кругового обхода (RTT) и размер передаваемых данных, можно мгновенно определить наиболее узкое место, ограничивающее передачу, узнать ожидаемую скорость и общее время выполнения операции.
Входные параметры сетевого пути и TCP
Для точного моделирования производительности соединения в калькуляторе используются следующие параметры:
- Пропускная способность канала: скорость самого медленного участка на пути, которая часто соответствует номинальной скорости вашего тарифного плана. В качестве единицы измерения используется «Единица скорости». Значение должно быть строго больше нуля. Дополнительную информацию по этому полю можно найти в подсказке: «Самый медленный участок на пути — часто номинальная скорость вашего тарифа.».
- Время кругового обхода (RTT): время пинга до дальнего конца сетевого пути. Рекомендуется указывать наибольшее значение, которое ожидается под нагрузкой. В качестве единицы измерения выступает «Единица времени». Значение должно быть больше нуля. Подсказка к полю: «Время пинга до дальнего конца — используйте наибольшее значение, которое вы ожидаете под нагрузкой.».
- Размер данных: объем полезной нагрузки, которую необходимо передать (например, файл, резервная копия или набор данных). Измеряется в поле «Единица размера» и должно превышать ноль. Подсказка к полю: «Полезная нагрузка для перемещения — файл, резервная копия, набор данных.».
- Окно приема: объем данных в байтах, который получатель может буферизовать без отправки подтверждения. Значение должно быть больше нуля и не может превышать 1 073 725 440 байт. Если оставить это поле пустым, расчет будет производиться без ограничений по размеру окна. Подсказка к полю: «Байты, которые получатель может буферизовать. 65,535 — это максимум без масштабирования; пусто = без ограничений по окну.».
- MSS (байт): максимальный размер сегмента (Maximum Segment Size), определяющий количество байт полезной нагрузки в одном пакете. Значение должно быть целым числом в диапазоне от 1 до 65 495. Если оставить поле пустым, калькулятор проигнорирует накладные расходы протоколов и потери пакетов. Подсказка к полю: «Байты полезной нагрузки на пакет — 1,460 заполняют стандартный кадр Ethernet. Пусто = игнорировать накладные расходы и потери.».
- Потеря пакетов (%): средняя вероятность потери пакетов на сетевом пути в процентах. Допустимый диапазон значений — от 0 до 100. Пустое поле или ввод 0 означает отсутствие потерь. Подсказка к полю: «Средняя вероятность потери пакетов. Пусто или 0 = без ограничений по потерям.».
- Десятичные знаки: параметр, управляющий точностью округления выводимых результатов.
Для быстрого ознакомления с работой калькулятора предусмотрена кнопка «Загрузить пример», которая заполняет поля демонстрационными данными, а также кнопка «Очистить» для сброса всех введенных параметров.
Выходные показатели и результаты вычислений
После ввода данных калькулятор формирует подробный отчет, разделенный на несколько информационных блоков.
Пропускная способность и время передачи
В главном блоке результатов отображаются ключевые метрики эффективности передачи:
- Ожидаемая пропускная способность TCP — сопровождается динамической подписью «ограничено через
‹constraint›», где в качестве ограничивающего фактора выступает «пропускную способность канала», «окно приема» или «потерю пакетов». - Время передачи
- Время до первого байта (1 RTT)
- Время передачи данных
- Произведение пропускной способности на задержку
- Окно для заполнения пути
- Пропускная способность, ограниченная окном
- Пропускная способность, ограниченная потерями (Mathis)
- Предел канала после накладных расходов
- Эффективность протокола
Для сохранения полученных результатов в буфер обмена предусмотрена кнопка «Копировать результат».
Динамические системные уведомления
В зависимости от введенных параметров калькулятор выводит важные предупреждения о поведении протокола TCP на исследуемом пути:
- Если для заполнения емкости канала требуется окно, превышающее стандартный лимит без масштабирования, выводится сообщение: «Для заполнения этого пути требуется окно
‹window›— это выше немасштабируемого максимума в 65,535 байт, поэтому обе стороны должны согласовать масштабирование окон TCP (RFC 7323).». - Если требуемый размер окна превышает абсолютный предел протокола TCP, отображается предупреждение: «Для заполнения этого пути требуется
‹window›— больше максимального окна, которое TCP может согласовать (1,073,725,440 байт). Один поток на этом пути никогда не сможет превысить‹value›.». - Если текущее окно приема искусственно занижает скорость, калькулятор подскажет: «Увеличение окна приема до
‹window›позволило бы этой передаче достичь‹value›.». - При высоком уровне потерь пакетов выводится уведомление: «Потери выше 1% выходят за рамки надежного диапазона модели Mathis — считайте предел потерь оптимистичным.».
Методология расчетов и формулы
В блоке «Формулы и подстановка значений» приводится детальный математический разбор вычислений:
- Основная формула:
пропускная способность = min(rate × eff, window ÷ RTT, MSS ÷ RTT ÷ √p) · BDP = rate × RTT - Эффективность протокола:
Эффективность протокола = MSS ÷ (MSS + 78 B) = ‹mss› ÷ ‹frame› = ‹eff› (заголовки пакетов 40 B + 38 B в физическом канале) - Предел канала:
Предел канала = скорость × эффективность = ‹rate› × ‹eff› = ‹value› - BDP:
BDP = скорость × RTT = ‹rate› × ‹rtt› = ‹bdp› = ‹bytes› - Окно для заполнения пути:
Окно для заполнения пути = BDP ÷ 8 = ‹bdp› → ‹window› - Предел окна:
Предел окна = окно ÷ RTT = ‹window› ÷ ‹rtt› = ‹value› - Предел из-за потерь (Mathis):
Предел из-за потерь (Mathis) = MSS ÷ RTT ÷ √p = ‹mss› ÷ ‹rtt› ÷ √‹p› = ‹value› - Ожидаемая пропускная способность:
Ожидаемая пропускная способность = наименьший из этих пределов = ‹value› → ограничено через ‹constraint› - Время передачи:
Время передачи = RTT + 8 × размер ÷ пропускная способность = ‹rtt› + 8 × ‹size› ÷ ‹throughput› = ‹time›
Правила обработки данных и допущения модели
При анализе результатов необходимо учитывать заложенные в модель правила и ограничения:
- Десятичные единицы: Все расчеты используют стандартные десятичные сетевые единицы (1 kbit = 1 000 бит, 1 МБ = 1 000 000 байт). Файловые менеджеры операционных систем обычно используют двоичные единицы на основе 1024 (где 100 МБ в файловой системе фактически равны 100 MiB или примерно 104.86 десятичным МБ).
- Накладные расходы: Модель учитывает стандартные накладные расходы Ethernet, добавляя 78 байт к каждому пакету (40 байт на заголовки TCP/IP и 38 байт на физический уровень/кадр). Другие типы каналов связи могут иметь иные показатели накладных расходов.
- Границы модели Mathis: Формула Mathis предполагает равномерно распределенные, независимые потери пакетов. Она применима только при уровне потерь менее 1%. При превышении этого порога реальная скорость может оказаться значительно ниже расчетной, а вычисленный предел следует считать избыточно оптимистичным.
- Ограничения масштабирования окон: Стандартный протокол TCP без использования расширения RFC 7323 ограничен размером окна в 65 535 байт. Максимальный размер окна, который может быть согласован с помощью масштабирования окон согласно спецификации RFC 7323, составляет 1 073 725 440 байт.
- Идеализированное состояние: Расчеты выполняются для установившегося режима работы одного TCP-потока. Модель не учитывает фазу медленного старта (TCP slow start), алгоритмы динамического управления перегрузками, задержки на стороне медленного получателя и время, затрачиваемое на рукопожатия TLS. В реальных условиях передача всегда начинается медленнее и может не достигать расчетных пиковых значений.
Конфиденциальность
Каждое вводимое вами значение рассчитывается в этом браузере — никуда ничего не отправляется. Все вычисления производятся локально на вашем устройстве с помощью JavaScript.
Часто задаваемые вопросы
Что такое произведение пропускной способности на задержку и почему оно определяет размер окна?
BDP (произведение пропускной способности на задержку) — скорость канала × время кругового обхода — это объем данных, находящихся в пути в любой момент времени. TCP может иметь не более одного неподтвержденного окна в полете, поэтому окно меньше BDP оставляет канал частично пустым: при 100 Mbit/s и RTT 50 мс в канале помещается 625 кБ, а окно в 65,535 байт заполняет едва ли десятую его часть. Вот почему для быстрых и протяженных путей требуется масштабирование окон TCP (RFC 7323), которое увеличивает согласуемый максимум с 65,535 байт примерно до 1 ГБ.
Почему моя скорость передачи ниже, чем скорость канала, за которую я плачу?
Один поток TCP сталкивается с тремя независимыми пределами, и побеждает наименьший из них. Накладные расходы протокола урезают сам канал примерно на 5% — стандартный кадр Ethernet переносит 1,460 байт полезной нагрузки из 1,538 байт в физическом канале. Окно приема ограничивает пропускную способность как окно ÷ RTT, поэтому классическое окно в 65,535 байт ограничивает путь с задержкой 50 мс примерно до 10.5 Mbit/s независимо от скорости канала. А потери ограничивают ее как (MSS ÷ RTT) ÷ √потерь. Результат выше показывает, какой именно предел является определяющим для ваших чисел.
Как потеря пакетов ограничивает пропускную способность TCP?
TCP трактует потерю как перегрузку и сокращает скорость отправки вдвое при каждом событии потери, поэтому даже крошечные доли потерь имеют значение на быстрых путях. Модель Mathis оценивает предел как (MSS ÷ RTT) ÷ √p — при потере 0.01% на пути с задержкой 50 мс и MSS 1,460 байт это составляет около 23 Mbit/s, независимо от скорости канала. Модель предполагает равномерно распределенные, независимые события потерь; при потерях ниже примерно 1% она хорошо отражает реальность, а для пакетных потерь дает оптимистичный прогноз.
Совпадают ли мегабайты здесь с мегабайтами в моем файловом менеджере?
Не совсем. На этой странице используются десятичные единицы, принятые в сетевых технологиях: 1 kbit = 1,000 бит и 1 МБ = 1,000,000 байт. Большинство файловых менеджеров считают в единицах на основе 1024, часто ошибочно обозначая их как МБ — файл размером «100 МБ» там обычно равен 100 MiB ≈ 104.86 десятичных МБ, поэтому его передача занимает примерно на 5% больше времени, чем предполагает десятичное значение. Введите здесь 104.86 МБ, чтобы получить точное совпадение.