Ethernet повсюду, и десятки тысяч производителей выпускают оборудование с его поддержкой. Однако почти у всех этих устройств есть одно общее число – MTU:
$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
MTU (Maximum Transmission Unit) [максимальная единица передачи] определяет максимальный размер отдельного пакета данных. В общем случае, когда вы обмениваетесь сообщениями с устройствами вашей LAN, MTU будет иметь размер порядка 1500 байт, а весь интернет почти целиком тоже работает с размером 1500 Б. Однако это не означает, что эти технологии связи не могут передавать пакетов большего размера.
К примеру, у 802.11 (шире известного как WiFi) MTU равен 2304 б, а если ваша сеть использует FDDI, тогда ваш MTU равен 4352 б. У самого Ethernet есть концепция «гигантских кадров», когда MTU можно назначить размер до 9000 б (при поддержке такого режима NIC, коммутаторами и роутерами).
Однако в интернете это не особенно нужно. Поскольку основные магистрали интернета в основном состоят из соединений Ethernet, де-факто неофициальный максимальный размер пакета выставлен в 1500 Б, чтобы избежать фрагментации пакетов на других устройствах.
Само по себе число 1500 странное – можно было бы ожидать, что константы в мире компьютеров будут основаны на степенях двойки, например. Так откуда взялись 1500 Б и почему мы их до сих пор используем?
Волшебное число
Первый большой прорыв Ethernet в мир произошёл в форме стандартов 10BASE-2 (тонкий) и 10BASE-5 (толстый), числа в которых говорят о том, сколько сотен метров может покрывать отдельный сегмент сети.
Поскольку в то время конкурирующих протоколов было множество, а у железа имелись свои ограничения, создатель формата признаёт, что требования к памяти буфера пакетов сыграли свою роль в появлении волшебного числа 1500:
Оглядываясь назад, становится ясно, что максимум большего размера, возможно, был бы лучшим решением, однако если бы мы увеличили стоимость NIC (сетевых контроллеров) на ранних этапах, это не дало бы Ethernet так широко распространиться.
Однако это не вся история. В работе «Ethernet: распределённая коммутация пакетов в локальных компьютерных сетях» 1980 года приведён один из ранних анализов эффективности использования в сетях пакетов большого размера. В то время это было особенно важно для сетей Ethernet, поскольку те либо могли соединять все системы одним коаксиальным кабелем, либо состоять из хабов, способных в один момент времени отправлять по одному пакету для всех узлов одного сегмента.
Нужно было выбрать число, которое давало бы не слишком высокие задержки при передаче сообщений в сегментах (иногда довольно загруженных), и при этом не слишком бы увеличивало число пакетов.
Судя по всему, инженеры в то время выбрали число 1500 Б (около 12000 бит) как наиболее «безопасный» вариант.
С тех пор появлялись и исчезали различные другие системы передачи сообщений, однако среди них самое низкое значение MTU было у Ethernet с его 1500 Б. Превышать минимальное значение MTU в сети – значит, либо вызывать фрагментацию пакетов, либо заниматься PMTUD [поиск максимального размера пакета для выбранного пути]. У обоих вариантов были свои особые проблемы. Даже если иногда крупные производители ОС опускали значение MTU ещё ниже.
Фактор эффективности
Теперь нам известно, что MTU в интернете ограничен размером в 1500 Б по большей части из-за старых показателей задержек и ограничений оборудования. Насколько сильно это сказывается на эффективности интернета?
Если посмотреть на данные с крупной точки обмена интернет-трафиком AMS-IX, мы увидим, что не менее 20% передаваемых пакетов имеют максимальный размер. Можно также посмотреть на общий трафик LAN:
Если скомбинировать оба графика, получится что-то вроде следующего (оценка трафика для каждого диапазона размеров пакетов):
Или, если посмотреть на трафик всех этих заголовков и прочей служебной информации, мы получим тот же график с другим масштабом:
Довольно большая часть пропускной способности тратится на заголовки для пакетов из самого крупного класса размеров. Поскольку на пике трафика наибольшие накладные расходы составляют 246 Гб/с, можно предположить, что если бы мы все перешли на «гигантские кадры», когда такая возможность ещё существовала, эти накладные расходы составляли бы всего около 41 Гб/с.
Но, думаю, сегодня для крупнейшей части интернета этот поезд уже ушёл. И хотя некоторые провайдеры работают с MTU равным 9000, большая часть его не поддерживает, а попытки изменить что-то глобально в интернете раз от раза оказывались чрезвычайно трудным делом.