Найти в Дзене
SkyNet

Прямое подключение, а скорость ниже тарифной. Как это связано с оверхедом?

Оглавление

Начнём с главной интриги. Оверхед — это накладные расходы трафика, избавиться от которых не получится. Они необходимы для функционирования сети и передачи служебной информации протоколов.

Давайте посчитаем, как долго будет передаваться файл размером в 100 Мбайт, если скорость доступа у абонента — 100 Мбит/с?
Одну секунду? Не учли, что передача идёт в байтах.
8 секунд? Уже теплее.
На самом деле — 8.5 секунд. А если учесть протокол IPsec, то 9 секунд.


Казалось бы, всего одна лишняя секунда. Но если перевести задержку в проценты, то она составит около 13% — таким образом, файл, передача которого должна была уложиться в час, займёт у вас 1 час и 8 минут — и это в идеальных условиях, без учёта дополнительных факторов.

Оверхед «съедает» 13% пропускной способности. Да, в наше время высоких скоростей может показаться, что такие нюансы незначительны. Однако, всё меняется при больших объёмах данных: для интернет-провайдеров или корпораций вроде Facebook и Google каждые полпроцента имеют значение. В Google даже пытались разработать собственный протокол для уменьшения объёмов данных - SPDY, который лёг в основу протокола HTTP/2.

В этой статье подробно разберём, почему 100 Мбайт никогда не скачаются за одну секунду при скорости в 100 Мбит/с, но для этого придётся столкнуться с математикой.

Если расчёты неинтересны, то переходите к короткому изложению в конце статьи.

И так, сразу начнём с расчётов:

< математика началась >

Вместо двоичных префиксов (где 1 Кбит = 1024 бита) будем использовать десятичные:

  • 1 Кбайт = 1000 байт (8000 бит)
  • 1 Мбайт = 1 000 000 байт (8 000 000 бит)

Вспомним несколько нюансов про десятичные (метрические) префиксы:

  • Скорость Ethernet, объём SSD/HDD, команды в Linux — десятичные префиксы.
  • А вот в Windows и в стандартах передачи данных по сети традиционно используются двоичные метрики.
  • Чтобы узнать точный размер, узнайте его в байтах и переведите в нужный префикс.

Биты и байты:

1 байт = 8 бит

Размеры файлов обычно считают в байтах. Скорость передачи данных считается в битах в секунду (и соответственно кило-, мега-, гигабитах), именно поэтому передача файла в 100 Мбайт займет 8 секунд при скорости в 100 Мбит без учета оверхедов.

Что ещё за оверхеды?

В сетях под оверхедами подразумевают передаваемую служебную информацию, необходимую для работы сети, и таких оверхедов существует несколько:

  • TCP/IP Handshake (в наших расчетах опускаем, он слишком незначительный).
  • Оверхеды Ethernet (тоже пока не учитываем, о них добавим отдельно в конце — их уже посчитали вместо нас).
  • Оверхеды TCP/IP (их и будем рассчитывать).

Предположим следующее:

  • У нас не происходит потерь пакетов, повторов и подобных событий.
  • Передаём в одну сторону, только данные и оверхед.
  • MTU (максимальный размер пакета, который может быть передан по сети без фрагментации) 1500 байт.
  • MSS (максимальный размер полезного блока данных в пакете) 1460 байт — остальные 40 заняты заголовками.
  • Используем полнодуплексный канал, то есть полная ширина доступна в обе стороны одновременно.
  • Когда данных остаётся меньше максимального размера пакета, округляем до целого, ведь пакет всё равно нужно передать.
-2

Расчёты:

Используем пять примеров, чтобы показать, что оверхед остаётся примерно тем же, пока объём данных превосходит 1460 байт (IP MSS).

1 байт данных

  • 1 байт может поместиться в 1 пакет, так как меньше 1460 байт (стандартный TCP MSS)
  • 1 x 40 байт заголовков дают 40 байт, 4.1% TCP/IP оверхеда.
  • Итого, 41 байт данных передан в сети.

1 Килобайт данных

  • 1 Кбайт (1000 байт) может поместиться в 1 пакет, так как он меньше 1460 байт (1000 / 1460 = 0.684)
  • 1 x 40 байт заголовков дают 40 байт, 4% TCP/IP оверхеда.
  • Итого, 1040 байт данных передано в сети.

20 Килобайт данных

  • 20 Кбайт (20 000 байт) поделятся на 14 пакетов, не превышающих 1460 байт (20 000 / 1460 = 13.70)
  • 14 x 40 байт заголовков дают 560 байт, 2.8% TCP/IP оверхеда.
  • Итого, 20 560 байт данных передано в сети.

480 Килобайт данных

  • 480 Кбайт (480 000 байт) поделятся на 329 пакетов, не превышающих 1460 байт (480 000 / 1460 = 328,77)
  • 329 x 40 байт заголовков дают 13160 байт, 2.74% TCP/IP оверхеда.
  • Итого, 493 160 байт данных передано в сети.

1 Мбайт данных

  • 1 Мбайт (1 000 000 байт) поделится на 685 пакетов, не превышающих 1460 байт (1 000 000 / 1460 = 684,93)
  • 685 x 40 байт заголовков дают 27 400 байт, 2.74% TCP/IP оверхеда.
  • Итого, 1 027 400 байт данных передано в сети.

</ математика закончилась >

-3

Вывод

Таким образом, для объёмов данных свыше обычного размера сегмента (MSS) в 1460 байт, оверхед будет около 2.8%. Это приводит к эффективности в 97.33% (1460/1500) — такая ширина канала останется для полезных данных, если помещать в каждый пакет максимальное их количество. При этом для очень малых объёмов данных оверхед может превышать 4%.

Кроме того, в Ethernet тоже присутствует оверхед. Он считается схожим образом, расчёты можно посмотреть здесь. Теперь, если к нашим 97.33% добавить оверхед Ethernet и теги VLAN, то пропускная способность линка в 100 Мбит/с составит 100 х 0.9733 (посчитанная выше эффективность) х 0.9728 (эффективность Ethernet с тегами) = 94.68 Мбит/с, что даёт эффективность в 94.68%. Именно поэтому при ширине канала в 100 Мбит/с Speedtest не покажет нам больше 94.68 Мбит/с.

Добавим к этому протокол безопасности, сессионные и прикладные оверхеды, и станет ясно, куда уходит скорость. К примеру, шифрование AES уменьшит нашу цифру до 87.7%, так обычно происходит при подключении по Wi-Fi. С HTTP, другими заголовками, cookie-файлами можно легко потерять до 25% ширины канала.

Оригинал — Steven Iveson на packetpushers.net

Подключайтесь к SkyNet, 5 месяцев интернета за 1000 рублей с промокодом 345534

Подключиться💚