Опубликован сетевой стек F-Stack 1.24, представляющий собой редакцию сетевого стека FreeBSD, работающую в пространстве пользователя и использующую фреймворк DPDK для достижения максимальной производительности. Проект создан крупнейшей в Китае телекоммуникационной компанией Tencent и используется в её продуктах и сервисах. Код написан на языке Си и распространяется под лицензией BSD. Поддерживается работа в Linux и FreeBSD...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62076
Т.е. они сп-ли сетевой стек freebsd, скомпилив его под dpdk'шную ebpf (или что там еще) фигню? И оно в юзерленде через две прослойки и три прокладки оказалось быстрее чем оригинальный стек линукса?Ну ооок...
ну я так понимаю что переключений контекста не происходит, так как все в userland
Угу, доступ к прямому управлению сетевой картой - в userland. Ага, дайте две.(FreeBSD 20 лет назад - accf_http, accf_data. Чтобы отдавать в юзерленд готовые структуры данных конкретного приложения, а не по одному пакету с неизвестным содержимым (который может вообще придется выбросить и захлопнуть сокет - и это уж точно можно сделать прямо в ядре). Л@п4@тые сегодня: отдадим raw ethernet frames и управление регистрами сетевухи. Так - тооочно быстрее!
> (FreeBSD 20 лет назад - accf_http, accf_data. Чтобы отдавать в юзерленд
> готовые структуры данных конкретного приложенияС тех пор http немного поубавил популярности.
> raw ethernet frames и управление регистрами сетевухи. Так - тооочно быстрее!
Китайцам то? С GFW? Зачем им твой хттп, вот проксю или впн зобанить - это да, тема. Приложеньки у них специфичные.
> С тех пор http немного поубавил популярности.с тех пор и ktls завезли. А у больших у многих все по прежнему, кстати - шифрование выполняется специальными ящиками на границе периметра (где, кстати, уже можно плевать на переключения контекстов, все равно все пожрет - само шифрование). Внутри сплошь http - по многим причинам. У самых альтернативно-пряморуких там даже http2 (не спрашивай зачем).
> Китайцам то? С GFW?
зачем бы gfw nginx и redis?
gfw скорее уж как раз целиком в пространстве ведра реализован будет - чего ему там обрабатывать, сверяй по табличке с новыми указаниями партии, и блочь. Не будет успевать сверять - ну сделают на асиках, у плохой дороги такого есть.
А эти либо хостят, либо массовый клауд либо еще что подобное. Вполне себе белое и пушистое.
> (где, кстати, уже можно плевать на переключения контекстов, все равно все
> пожрет - само шифрование). Внутри сплошь http - по многим причинам.
> У самых альтернативно-пряморуких там даже http2 (не спрашивай зачем).Ну вот кстати процы сейчас довольно резвые - и шифрование в общем то тоже. И да, гугол возлюбил всякие 25519 и ChaCha как раз поэтому, даже в TLS прожал вроде на этой почве.
>> Китайцам то? С GFW?
> зачем бы gfw nginx и redis?Эти то наверное низачем. А вот отдать пакеты переростку в юзермоде на пожевать - вполне. И он вполне может быть 1 задачей на всю железку - цель его существования это пакости по сети, больше оно ничего и не умеет. Зато, вот, крупным оптом.
> gfw скорее уж как раз целиком в пространстве ведра реализован будет -
> чего ему там обрабатывать, сверяй по табличке с новыми указаниями партии,Он немного не так работает. Подозрительные хосты - могут подвергать допустим активному пробингу. Вот тут цербер заподозрил - что это серв впн. А правда - такой впн, или просто пакеты так сложились? Ответил на хендшейк того впна? Добро пожаловать в баню! Не ответил? Ложняк, вычеркивается.
> и блочь. Не будет успевать сверять - ну сделают на асиках,
> у плохой дороги такого есть.Асик тебе хендшейк впн не смогет активным пробингом прочекать. Особенно васянского какого-нибудь. Ты будешь асик под каждого васяна с новым впн перепекать? :)
> А эти либо хостят, либо массовый клауд либо еще что подобное. Вполне
> себе белое и пушистое.Или, вот, массовая анализировалка и пакостилка трафика. С этих станется.
> Ну вот кстати процы сейчас довольно резвые - и шифрование в общем то тоже.пока ты ворота обслуживаешь, в одном экземпляре.
> И да, гугол возлюбил всякие 25519 и ChaCha как раз поэтому
да xor'ом шифруй, чего уж там. Гугл полюбит.
У самого гугла, кстати, на бордерах стоят аппаратные шифровалки. Полагаю, asic'овые. Или на заказных криптоускорителях, а не на процах-сейчас, умеющих только aes в один поток.
Свои-то данные он люююююбит.> Он немного не так работает. Подозрительные хосты - могут подвергать допустим активному пробингу.
но не онлайн-же ж. Просто где-то будет кернельный сокет из которого вытекает список таких хостов. Парсит их обычный юзермод код, может даже на пихоне. Он же и "пробует", в этом месте торопиться совершенно некуда. Вердикт пушит в другой сокет.
> Асик тебе хендшейк впн не смогет активным пробингом прочекать.
он просто откинет список подозрительных на анализатор. Медленный, торопидзе нэ нада. Все равно это что-то явно левое, раз попало в подозрительные. А пока мы его заблочим. Пройдет проверку - разрешим обратно. А юзер подумал - ученья идут!
Код примитивен как палка, и не требует никаких переписываний сетевого стека из чужой операционки. Любой узкоглазый справится, если палкой бить как следует и плошку риса не выдавать до конца смены, а не секретные супер-специалисты.
> Или, вот, массовая анализировалка и пакостилка трафика. С этих станется.
с каких этих? Пакостят пока те (у этих - просто запретили и заблокировали). У тех - китайская мыльница за $120 (налогоплательщикам вышла чуть-чуть дороже но это их проблема,и на два же всего порядка, не на шесть) справляется. Чего там того траффика-то... она ж не видосики через себя крутит.
Причем, если вы думаете, что это только в Linux все так печально, то ошибаетесь!Windows тоже годами переходит на сетевой стек FreeBSD. Microsoft выкинул все старые наработки по сетям и начал этот переход активно с Server 2016/Windows 10. Результаты там были еще хуже чем с Linux...
> Windows тоже годами переходит на сетевой стек FreeBSD. Microsoft выкинул все старые
> наработки по сетям и начал этот переход активно с Server 2016/Windows
> 10. Результаты там были еще хуже чем с Linux...не вижу чем эта прохладная легенда лучше чем легенды конца 90х, когда врали что там и есть стек *bsd, причем те имели некоторое правдоподобие, из-за серии работающих бсдшных эксплойтов.
В общем и целом было бы странно не взять за исходную реализацию собственно референсную модель, поскольку этот стек и есть интернет в первом (и втором) приближении.
Но, кстати, bsdшники тоже не лыком шиты.
/usr/ports/sysutils/fusefs-lkl глянь. Тут ЦЕЛИКОМ линуксное ведро запихали в usermode. (Потому что оно нифига не модульное а спагетти-стайл и ничего отдельно вынуть нельзя.)Я проверял - работает даже.
Из *BSD невозможно ничего сп-ть - читай лицензию.
> Функциональность TCP/IP стека соответствует сетевому стеку FreeBSD 13 и выделена из данной операционной системы в независимую библиотеку.А у Пянгвинчика ведь были (и есть!) Google, Amazon, Cloudflare... и их "common core" не парило. Их парила возможность важный для SaaS-бизнеса код зажать, да переложить поддержку неважного на других - лицензия ведь позволяет.
И получилось то что получилось - до сих пянгвинята вынужденны к̵о̵л̵о̵т̵ь̵с̵я̵ ̵и̵ ̵п̵л̵а̵к̵а̵т̵ь̵ копировать из фряхи, правда криво и с отставанием, но зато не упуская ни одной возможности зайти в каждую фряшную новость и н̵а̵в̵а̵л̵и̵т̵ь̵ ̵к̵у̵ч̵у̵ ̵в̵ ̵к̵о̵м̵м̵е̵н̵т̵а̵х̵ похаять "отсталые бзды".
Действительно, захватили, понимаешь, весь серверный мир, а когда утончённые BSD-шники делятся своими трепетными фантазиями — эти простопингвины грубо и жестоко напоминают им о реальности.
>> F-Stack позиционируется как решение, позволяющее повысить производительность обработчиков сетевых запросов в условиях, когда штатный TCP/IP стек ядра Linux становится узким местом и ограничивает масштабирование - в некоторых ситуациях проект даёт возможность в разы увеличить число обрабатываемых мелких сетевых запросов....
>> Функциональность TCP/IP стека соответствует сетевому стеку FreeBSD 13 и выделена из данной операционной системы в независимую библиотеку.
> Действительно, захватили, понимаешь, весь серверный мир, а когда утончённые BSD-шники
> делятся своими трепетными фантазиями — эти простопингвины грубо и жестоко напоминают им о реальности.Реальность - вон, в новости, о "простопингвин"-подгорелец.
Интересно они осилили RACK или оно только с дефолтной TCP реализацией работает?
Вроде смогли еще в версии 1.22, но я не могут точно сказать насколько этот функционал FreeBSD Only.Вообще, на уровне ядра RACK работает только во FreeBSD и Windows, остальные ОС CUBIC-и мнут себе.
Файрвол в нём можно настроить?
На полянке HFT станет ещё теснее?
Это же какой bullshit из себя представляет Linux, что проще портировать сетевой стек(!) из другой ОС, чем исправить нативный.Я теперь не вижу ничего удивительного в том, что никто не в состоянии починить tty. Видимо, там такая помойка, что всё попросту развалится, если пошевелить.
Серверная система без без консоли и сетевого стека... Позорище, что тут ещё сказать.
F-Stack быстрее и при работе во FreeBSD. Переключение контекста очень затратная операция. С тем же успехом можно было бы вынести в userspace библиотеку сетевой стек Linux, но стек Linux раздут и притянут к куче разных подсистем, а TCP/IP стек FreeBSD и ядро FreeBSD заметно проще, предсказуемее и меняются не так интенсивно.Сравните https://github.com/freebsd/freebsd-src/tree/main/sys/net и https://github.com/torvalds/linux/tree/master/net
по факту этот ваш комментарий как монолог Тони "Пуля в зубах" из снетча. "Только ты попутал, и никакой демонстрации годности бсд систем здесь нет."
Само существование F-Stack является прямой демонстрацией годности *BSD. Ну или негодности Linux, как тебе больше нравится.
> сетевой стек Linux, но стек Linux раздут и притянут к куче
> разных подсистем,Тем не менее в линухе уже есть варианты без переключения контекста... и сисколы куда как эффективнее стали, там батчинг, чтоли, под нагрузкой делается и проч. И zerocopy во все поля :)
А сравнить - достаточно фаер в линухе и фаеры в бсд. Сразу видно где просто позор какой-то.
Бла, бла, бла и бла. Сколько маркетингового порожняка. На деле же линуксовый сетевой стек вместо с его убогим nftables без шансов сливают фряшным аналогам.
> Бла, бла, бла и бла. Сколько маркетингового порожняка. На деле же линуксовый
> сетевой стек вместо с его убогим nftables без шансов сливают фряшным аналогам.И чему именно nftables сливает? И кому из? Он так то довольно шустрый, фичастый, с неких пор умеет офлоад flow в fast path, скипая большую часть процесинга, умеет всякие забавные вещицы... вон там борцы за ютуб из него аж контр-DPI вылепили.
Такой обширный список железа умеет hw offload, красота
> Такой обширный список железа умеет hw offload, красотаОн и SW офлоад умеет - примерно так же по смыслу: после того как flow посчитан подлежащим пропуску, можно заскипать большую часть процессинга и отпуливать пакеты в софтварный вариант fast path. Это имеет свои особенности - но в целом работает.
план действий:
https://man.freebsd.org/cgi/man.cgi?query=ipfw
найти check-state
подумать
Где? По новостям и по вакансиям линукс везде побеждает. У вас какой-то свой мир где у линукса нет шансов?
afair, во фре нет даже аналога
-m string
ну да, ну да, данные внутри IP-пакета как раз должны фаером L3 проверяться, а не специальным протокольным фильтром L7, ага.
> Я теперь не вижу ничего удивительного в том, что никто не в
> состоянии починить tty.а раньше типа не догадывался?
> Видимо, там такая помойка, что всё попросту развалится,
> если пошевелить.в том который kms'ный псевдотекстовый - именно так все и есть. (а другого в новых модных линуксах и не положоно иметь)
> Серверная система без без консоли и сетевого стека... Позорище, что тут ещё
ну не то чтобы уж совсем, но да, с замысловатыми...
> в том который kms'ный псевдотекстовый - именно так все и есть. (а
> другого в новых модных линуксах и не положоно иметь)Вообще то там основной факапище - подсистема VT. И таки - ее - вот - пришлось таки малость отрефакторить. Невзирая на боль и ужас. PREEMPT_RT вон тем хотелось. Да, умение в гарантии RTOS это достаточно сильная замануха чтобы поднапрячься. И это хотят довольно толстые коты, типа автомотивщиков всяких, индустриалов и прочие (около)эмбедовочные.
точно. Только вот preempt и прочего rt нам в КОНСОЛИ, с-ка, не хватает. На этом фоне отсутствие возможности заглянуть за край монитора - ну прям нереально сложная задача, надо ее запретить совсем.Хорошо что рефакеры еще не добрались до текстовой. Почему-то она работает и scrollback в ней - тоже. Ну я уверен, ненадолго. Надо что-то такое понаделать чтоб даже там где нет никакой видеокарты был сплошной kms.
> Это же какой bullshit из себя представляет Linux, что проще портировать сетевой стек(!С чего ты взял? Быстрее не значит секьюрней. Как только начнут докручивать этот F-Stack для реальных задач он станет в несколько раз тормознее. Это обычная практика.
А откуда ядро знает, кому отдавать фрейм, если оно его не обрабатывает?
А оно и не знает, отдаёт отдельный TCP/IP стек в userspace, обращающийся напрямую с сетевой картой.
никак, сетевуха монопольно занята ЭТИМ вот. Если тебе нужно к примеру управление - подключай рядом вторую.Т.е. ВСЕ вообще фреймы отдаются вот туда, без разбора и обработки. (там вроде бы как-то можно потом вернуть необработанное обратно ведру, но это неточно, да и эффективность понятно какая)
> никак, сетевуха монопольно занята ЭТИМ вот. Если тебе нужно к примеру управление
> - подключай рядом вторую.А in-band послать данные управления своей приложухе религия в принципе не прзволяет? Или ты даже и близко не надеешься уметь это секурно? :)
> Т.е. ВСЕ вообще фреймы отдаются вот туда, без разбора и обработки. (там
> вроде бы как-то можно потом вернуть необработанное обратно ведру, но это
> неточно, да и эффективность понятно какая)А зачем тебе какая-то убер эффективность в управлении, которого by design мизер?
Почитай как работает DPDK, VPP, DMA
Этот совет я и сам кому угодно дать могу.
Забавная получается ситуация: во фряху тащат фреймворки для облегчения портирования доайверов из линукса, а в линукс тащат целые подсистемы из фряхи, ибо фряха отличная ОС без драйверов, а линукс отстойный, но с дровами.
Не, просто лицензия пермессивная.
А что не сразу PF_RING?
>Проект создан крупнейшей в Китае телекоммуникационной компанией Tencent и используется в её продуктах и сервисахВ "файрволе" что ли?
> за счёт исключения таких операций, как копирования сетевых пакетов,
> планирование потоков, обработка прерываний и применение системных вызововПоздравляю, применительно к Linux половина этой копипасты на данный момент уже не актуальна. Букмарки надо апдейтить иногда, дорогой автор.
На сайте F-Stack написано, что актуально: Therefore, kernel bypass can avoid performance bottlenecks caused by kernel packet copy, thread scheduling, system calls and interrupt.
> На сайте F-Stack написано, что актуально: Therefore, kernel bypass can avoid
> performance bottlenecks caused by kernel packet copy, thread scheduling, system calls
> and interrupt.Как говорится, сам себя не похвалишь - никто не похвалит. Уже есть варианты без копирования пакетов.
Чтобы это работало быстро, по идее надо вместо preemptive multitasking делать cooperative multitasking.Тогда никаких тебе неожиданных прерываний посередине дорогой операции. "Отдам управление, когда закончу."
Вообще не знаю на счёт стека Фряхи, но я смотрел своими глазами на стек Опёнка и Линукса, и, ну, типа, Опёнок сильно пахнет девяностыми, а А Линукс в целом, вполне ничего, хотя и малость заумно.
Хотя мне тоже непонятно, зачем сетевая подсистема в ядре. Ядро, по хорошему, должно только давать гипотетическому networkd облать памяти, mmap'нутую на сетевую карту, и всё. Можно даже просто mmap на /dev/networkcard0.
Пили. Прогонишь потом тесты, если будет быстрее/удобнее.
Хм, кто бы мог подумать, что отказ от прерываний и системных вызовов увеличить производительность.
> Хм, кто бы мог подумать, что отказ от прерываний и системных вызовов
> увеличить производительность.Самым скоростным вариантом может быть активный поллинг, когда софт плотно занимается только окучиванием сетевухи - и больше ничем вообще.
К сожалению подстава в том что система становится по сути однозадачной, а работа в стиле MSDOS в XXI веке впечатляет не всех. Хотя в случае многоядерных процов возможны варианты. Ну вот выделить ядро под окучивание сети. И хрен с ним что оно в полку занято, других навалом же есть. Рассматривайте его как очень жирный и программируемый DMA-автомат :)
Драйвер NTFS, работающий в пространстве пользователя, почему-то не радует производительностью. Халтура?
FUSE-драйверы дёргают ядро при каждом обращении к накопителю, переключений контекста там больше.
Производительность была бы при прямом обращении минуя ядро, но аналога DPDK для блочных устройств ещё не завезли.
> Драйвер NTFS, работающий в пространстве пользователя, почему-то не радует производительностью.угу, то-то из-за него в свое время судорожно рванули переписывать ext*
> Халтура?
просто ты опрашивал, вместо того чтоб мерять.