- PVSM.RU - https://www.pvsm.ru -

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

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

/ unsplash.com / Pat Whelen

/ unsplash.com / Pat Whelen

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

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

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

IPv6 был первым

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

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

На очереди IPv4

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

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

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

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

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

/ unsplash.com / Eamonn Maguire

/ unsplash.com / Eamonn Maguire [11]

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


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

Автор: VAS Experts

Источник [17]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/383368

Ссылки в тексте:

[1] оперируют: https://lwn.net/Articles/884104/

[2] RFC 2675: https://datatracker.ietf.org/doc/html/rfc2675

[3] jumbo-кадров: https://en.wikipedia.org/wiki/Jumbo_frame

[4] заголовок hop-by-hop: https://en.wikipedia.org/wiki/IPv6_packet#Hop-by-hop_options_and_destination_options

[5] встретили: https://www.youtube.com/watch?v=llRX_34X8WY

[6] увеличила: https://rb.gy/foc6fb

[7] включили: https://www.phoronix.com/news/Linux-6.3-Networking-BIG-TCP

[8] IPv4 BIG TCP: https://lore.kernel.org/netdev/de811bf3-e2d8-f727-72bc-c8a754a9d929@tessares.net/T/

[9] дополнений: https://lore.kernel.org/lkml/20230221233808.1565509-1-kuba@kernel.org/

[10] MPTCP: https://www.multipath-tcp.org/

[11] Eamonn Maguire: https://unsplash.com/photos/ZUCkxnfJNL4

[12] словам: https://lkml.org/lkml/2023/3/5/308

[13] Нужен ли NAT в мире IPv6: https://vasexperts.ru/blog/ipv4-i-ipv6/nuzhen-li-nat-v-mire-ipv6/

[14] Говорим о сквоттинге IPv4: https://vasexperts.ru/blog/ipv4-i-ipv6/govorim-o-skvottinge-ipv4/

[15] В каких направлениях развиваются оптоволоконные технологии: https://habr.com/ru/company/vasexperts/blog/717806/

[16] Взять и перейти на IPv6 — регуляторы начинают давать рекомендации: https://habr.com/ru/company/vasexperts/blog/713452/

[17] Источник: https://habr.com/ru/post/721696/?utm_source=habrahabr&utm_medium=rss&utm_campaign=721696