BIG TCP приходит в Linux — теперь и для IPv4

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Финальный релиз Linux kernel 6.3 запланирован на конец апреля. Одно из примечательных нововведений — увеличение максимального размера TCP-пакета в контексте IPv4.

/ unsplash.com / Pat Whelen
/ unsplash.com / Pat Whelen

Зачем нужна эта технология

При работе в 100-гигабитных сетях вычислительные системы оперируют миллионами пакетов за секунду. И у процессора мало времени на выполнение всех задач, связанных с их обработкой. Снизить темп можно, если увеличить размер посылок. Для этих целей применяют методы GRO и TSO. Один агрегирует пакеты в единый блок размером 64 Кбайта для передачи по сетевому стеку, а другой — вновь их сегментирует.

Но в дата-центрах и других высокопроизводительных средах, оперирующих терабайтами и петабайтами данных, число пакетов все равно остается чрезмерно высоким. Решение проблемы — сделать пакеты еще больше, чтобы сильнее сократить их количество. Этой цели и служит технология BIG TCP.

IPv6 был первым

Вообще, BIG TCP — идея не новая. Для протокола IPv6 концепцию описали еще в RFC 2675 в 1999 году, а её поддержку добавили в Linux kernel 5.19. Специальный патч реализовал логику для передачи так называемых jumbo-кадров. При отправке jumbo-пакета система устанавливает 16-битное значение длины посылки на ноль и добавляет заголовок hop-by-hop с её реальной длиной. Поле заголовка включает 32 бита, и это означает, что jumbo-пакет может содержать до 4 Гбайт данных.

Технология значительно увеличила производительность протокола IPv6, особенно в 100-гигабитных сетях. Нововведение с энтузиазмом встретили облачные провайдеры и операторы гиперскейлеров. Установка размера пакета на уровне в 185 Кбайт увеличила пропускную способность на 50% во внутренних сетях дата-центров.

На очереди IPv4

На этой неделе вышел первый релиз-кандидат Linux kernel 6.3-rc1. Разработчики включили в него поддержку BIG TCP для IPv4.

По умолчанию в заголовках IPv4 нельзя указать размер увеличенного пакета. Поэтому в качестве индикатора BIG TCP использовали нулевое значение tot_len. Такой подход приемлем, поскольку кадры BIG TCP — это пакеты GSO/GRO. В них нет паддинга (padding), и skb->len – network_offset представляет собой точный размер пакета IPv4. Для обеспечения соответствующей функциональности разработчики реализовали несколько новых API.

Первые бенчмарки показали рост производительности и пропускной способности с патчем IPv4 BIG TCP.

Другие сетевые изменения

Linux kernel 6.3 включает несколько других дополнений, связанных с сетевыми технологиями. Например, смешение IPv4 и IPv6 в многопутевой модификации Multipath TCP (MPTCP). Также добавят драйвера для нескольких Ethernet-свитчей и пару обновлений, связанных с реализацией WiFi 7.

/ unsplash.com / Eamonn Maguire
/ unsplash.com / Eamonn Maguire

Больше нововведений можно ожидать в последующих релиз-кандидатах. Но скорее всего, в них не будет новых крупных фишек. По словам Линуса Торвальдса, все пока более-менее обычно. Первую половину патча составляют обновлённые и новые драйвера, а вторую — обновления архитектуры, документации и файловых систем.


Больше материалов в нашем корпоративном блоге и не только:

  • Нужен ли NAT в мире IPv6

  • Говорим о сквоттинге IPv4

  • В каких направлениях развиваются оптоволоконные технологии

  • Взять и перейти на IPv6 — регуляторы начинают давать рекомендации

Источник: https://habr.com/ru/company/vasexperts/blog/721696/


Интересные статьи

Интересные статьи

Предыдущая статья по установке тонкого разъема от Nokia вполне зашла моим читателям. Так почему бы не продолжить рубрику с китайскими репликами, особенно учитывая то, что их можно найти за пару сотен ...
Цель этой статьи показать и объяснить многообразие дистрибутивов Линукс. Показать основные сходства (они же все почему то называются "Линуксы" или даже правильнее "GNU/Linux") и основные различия (есл...
МойОфис запустил открытый сервис, где любой желающий может поработать с текстовыми и табличными документами, а также оценить интерфейс, ключевые функциональные возможност...
Тем, кому надо обеспечить себе, любимому, доступ к своим серверам из любой точки мира по SSH/RDP/иное — небольшое RTFM/шпора.
Захотелось как-то мне использовать в Linux внедряемые ресурсы, причём, автоматически. В общем, задача такая: Имеется Eclipse проект программы на C++. ОС: Linux Ubuntu. Компилятор: G++ В проект...