Комментарии
Спасибо за статью (перевод)! А встречался ли вам подобного качества материал на тему Fuchsia OS? Было бы весьма интересно понять, насколько быстра эта тёмная лошадка.
Кстати, как книгоиздатель подтверждаю — тема BPF сейчас на подъёме не только у нас, но и на западе. По этому хотелось бы обратить внимание на нашу книгу «BPF для мониторинга Linux». Мы очень стараемся отслеживать тренды ещё на этапе формирования и готовить для русскоязычных читателей актуальные книги. Да и в целом у нас по Linux много востребованных изданий.
Более подробно с книгой можно ознакомиться на сайте издательства.
Вряд ли Fuchsia будет очень бысрой. Там все слишком изолированно и асинхронно. Например, драйвер сетевой карты работает с одном процессе (не в ядре), а релиазация протокола TCP/IP — в другом (тоже не в ядре). Файловая система в третьем, и так далее. Ядро, по сути, лишь предоставляет примитивы межпроцессной коммуникации. Упор на бесопасность и изоляцию, за что скорее всего придется заплатить производительностью.
Фуксия, вроде бы, использует наработки по разновидностям микроядер L4, где такие проблемы практически нивелировали. Сам не вдавался в детали, но интересно было бы взглянуть. Впрочем Хуавей для своей альтернативной ОС тоже выбрали микроядерную архитектуру.
WireGuard обладает редким качеством в надежности программы: его код чист и прост. Кроме того, он поддерживает передовые технологии криптографии: Noise Protocol Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24 и HKDF.
Что еще более важно для пользователей, так это то, что он намного быстрее своих конкурентов.
А еще он на раз-два детектируется и режется даже самым простым DPI, что автоматически ставит крест на нем в очень многих случаях. Печальбеда.

Роль VPN — защитить соединение от внешнего наблюдателя. С этой ролью он справляется хорошо. То, что он плохо справляется с задачей, для которой просто не предназначен — ну, так и картошку им не вскопаешь и воду на нём тоже не вскипятишь.

По вашей логике, даже HTTPS не должен был бы существовать: ведь изначальная роль HTTP — передавать гипертекст файлы и данные веб-форм между браузером и веб-сервером, а то что данные не зашифрованы — ну это не его дело.

Точно так же есть тысячи, если не миллионы пользователей для которых важна именно комбинированная задача: защитить соединение от внешнего наблюдатели и в то же время скрыть сам факт защиты этого соединения от этого внешнего наблюдателя.
И делается это либо самим протоколом (типа как в SSTP/Anyconnect), или unix-way сочетанием инструментов (например OpenVPN через wstunnel). Wireguard не умеет первый вариант, и не совместим ни с чем известным для второго.
Спешу вас расстроить, но как показали события в РБ, wstunnel и ко бесполезны от слова совсем.
А есть подробности?
Насколько я помню, в РБ местами резали именно «классические» VPN-протоколы (типа голого OpenVPN, L2TP, и т.д.), а местами полностью шатдаунили (чуть ли не по белым спискам). Понятное дело, что во втором случае не помогут вообще никакие стандартные туннели и VPN. А wstunnel на незасвеченный сервер работает вообще везде, где работает HTTPS и где нет MitM (и даже при использовании active probing со стороны цензоров, если правильно настроить морду).
Понятное дело, что во втором случае не помогут вообще никакие стандартные туннели и VPN.

Именно. Нельзя решать политические вопросы техническими методами. Никакое средство обхода блокировок не поможет, если блокировки выполняются методом условного топора по кабелю.
Однако, эти средства помогают повысить цену блокировок. Если для блокировки неугодного сайта вам нужно выключить весь интернет навсегда, то это серьезная проблема и у этого есть высокая цена. Не многие страны готовы на это пойти.
Так в итоге лягушку варят медленно. Вот не работал интернет в соседней стране несколько дней, и что? Во многих странах его периодически отключают, и что?
Нет. Глобальное правило. Резали все tls handshake. некоторые гос организации и банки имели ряд исключений. Позже исключения расширяли. + Сильно ограничен был канал.
Неоднозначность правил объясняется тем, что у одного из двух поставщиков услуг неоднородное решение для dpi. И то, что они ещё в течении времени «игрались» с правилами.
Специально vpn протоколы не выпиливали ибо нет ни ресурсов ни смысла, когда работа идёт по площадям( обрубая tls).
Топора по кабелю по сути не было.
http, icmp работал. https естественно нет, позже работал только по белому списку.
Решение — обфускация. Все, что скрывало tls-handshake позволяло обойти. Решения на shadowsocks или аналоге(lantern, psiphon), obfsproxy заранее подготовленный корректно и т.п. Все это проходило без проблем.

Для многих это было неожиданно. Как и вы хотели и готовились прятаться среди https. Только вот его обрезали как и прочие, очевидно для железяки, шифрованные данные. Посему или мешать распознавать(обфускация) или среди разрешённого(http).
Понятно.
Просто в некоторых странах работает наоборот: HTTPS на домены и айпишники не из блеклиста бегает (если на его морде при этом открывается рабочий веб-сайт), а все обфусцированное (то что не похоже ни на что известное) режется до черепашьей скорости.

В приципе логично иметь в рукаве обе карты (и https, и какой-нибудь obfsproxy), но WireGuard не подходит ни в том ни в другом случае: хендшейк у него слишком примечательный.
про первую половину
HTTPS на домены и айпишники не из блеклиста бегает

так у всех поголовно. По поводу открывается, не открывается. Это когда за каждым смотрят индивидуально. Автоматизировать это сложно и сверх накладно. Вы спалитесь раньше на тривиальных вещах нежели на этом. Когда на вас обратили внимание.
По поводу резать не распознанное, это наверняка ваши предположения. Чрезвычайно дорого и бессмысленно. Быть может вы приведёте пример(не проходной зоны типа аэропорта, метро) где так реализовано?
А еще WG по функционалу крайне аскетичен по сравнению с OVPN.
Как по мне так сравнивать его нужно с чем-то типа tinc, да и у того возможностей сильно больше.
Другое дело что большая часть функций OVPN большинству пользователей и ненужна.
Другое дело, что может корректнее сравнивать сколько лет WG и сколько OpenVPN? Следовательно сравнивать текущее состояние WG и состояние OpenVPN, когда он был в таком же возрасте, в котором сейчас WG?

Наверное, такое сравнение тоже будет неудачное. Скорость разработки радикально изменилась с момента первого релиза опенвпн

Это как сравнивать мотоцикл и трактор. Изначально создавались под разное.
Вот когда (если) WG по фичам приблизится к OVPN тогда и будет любопытно каким количеством костыльного кода он обрастет (или нет).
eBPF… он делает это, выполняя код пользовательского пространства внутри виртуальной машины в ядре

и порождает новое поколение вирусов, которое живет в пространстве ядра и поэтому не определяется ровно ничем? все эти selinux сразу станут бесполезны.
и порождает новое поколение вирусов, которое живет в пространстве ядра и поэтому не определяется ровно ничем?

как будто раньше нельзя было сделать insmod и подложить в ядро руткит… Суть-то не поменялась. А вот удобство работы через eBPF существенно больше, чем компилить модуль ядра. Причем именно для пользователя.

Было бы интересно посмотреть на вирус, в котором ни нет циклов, ни переходов назад.
К концу этого года появится Linux 6.0. Но не стоит сильно обращать внимание на это число. В свое время, Торвальдс сказал о выпуске 5.0 следующее: «Я хотел бы отметить (ещё раз), что мы не делаем функциональные релизы, и что 5.0 не означает ничего большего, чем то, что числа 4.х стали такими большими, что у меня не хватает пальцев на руках и ногах, чтобы сосчитать их».

Когда-нибудь они таки придут к самой логичной в таком случае (когда выпуск осуществляется строго по расписанию) нумерации — просто одно число.
Дата выпуска ненадёжна — она может по каким-то причинам отличаться от запланированной. В итоге, получится введение в заблуждение, когда релиз 20200929 будет выпущен 30.09.2020. Например, это произошло с OpenWrt, когда выпуск 19.07 случился в 2020 году вместо середины 2019.

Простой номер, увеличивающийся каждый раз на единицу, лишён этого недостатка.
У простого номера огромный недостаток, он не несет никакой информации. Если ты не глубоко в теме то сложно определить насколько свеж релиз.
Как по мне, фактическая дата релиза несет больше смысла чем запланированная.

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


Если нумеровать по фактической дате, то опять же будет путаница, когда из-за задержки релиз, который все привыкли называть 19.07 (ну его же надо как-то называть до релиза), стал называться 20.01

Могу предолжить разве что привыкать отвыкать от подобных привычек.
Ничего более другого в голову не приходит :)
На самом деле идея мажоров/миноров была по своему неплохой. И достаточно информативной.
и все таки информаци у простого номера есть — его порядковость. Говоря о релизе 20200929 и 20201129 сложно сказать были ли релизы между этими датами. А вот между 1 и 4 было еще 2 выпуска. Можно конечно скомбинировать и иметь что-то вроде 2020092901 2020112904
Просто «свежесть» релиза сама по себе не особо много информации несёт. Если мне например, надо понять, с какой версии появилась поддержка функции X, то без таблицы релизов так и так не обойтись.

Иногда удобно, соглашусь — например, выбирая дистрибутив для старого ноута я в первом приближении смотрел именно на год релиза (благо в Ubuntu это удобно), сопоставляя его с годом выпуска самого ноута.

Мне кажется это было бы непрактичным с точки зрения выпуска патчей: была бы условная версия 20191124.68, почему-то вышедшая на месяц позже, чем 20200802 и на полгода позже, чем 20200126.8.

Мне лично так кажется вполне удобно. Видно откуда у кого ноги растут.
Но не настаиваю.
С Redis, хранилищем структур данных в памяти, с открытым исходным кодом, которая часто используется как база данных, прирост производительности составил более 50 процентов

интересно, почему именно один тест с redis и один тест с fio получили такой прирост? количество context switch это единственный фактор?

Перевод хороший, но оригинальная статья имеет очень странную "отсебятину" в сторону Rust.


Rust в качестве второго языка ядра

Прям очень громкое заявление. Речь идет о драйверах, которые и сейчас на C часто не удовлетворяют стилю кодирования, принятому в ядре. Очень сомнительно, что кто-то будет писать модули для основных подсистем Linux (аллокаторы памяти, СС алгоритмы в сети, LSM модули и пр.) на Rust.


Чтобы было больше треша, на Netdev предлагали и Lua в ядре https://lwn.net/Articles/830154/

Обьясните пожалуйста, почему ВПН должен быть в ядре. Разве модульность — это не юникс вей?

он не должен быть в ядре в общем случае.


но если нам нужна производительность, то нужно избегать context switch и копирования данных в/из userspace.

Кто знает, возможно, 2021 год станет годом рабочего стола Linux?


К сожалению не станет. Знаю очень много разрабов которые кайфуют от лини и в свое время готовы были на нее пересесть, но отсутствие софта (элементарного фотошопа даже или sketch например) — заставляет отказаться от него в пользу окон или яблока, что в принципе логично. Зачем ставить себе геморрой на комп, а потом носиться как курица с яйцами в поисках аналогов нужных программ (которых нет порой) или ставить всякие вайны и.т.п. Ну и плюс экосистема. Если бы забабахали общую экосистему андрюха на телефонах + линь на компе ит.п. как сделало яблоко — то перешлобы много пользоваталей не смотря даже на проблемы с программами.
Очень люблю эти все отмазки, люди не переходят на линукс не из-за того что там нету софта, а потому что нету привычного софта, не хотят разрушать свою зону комфорта. И да, фотошоп не елементарная програма, а проф-специализированая, и очень не дешевая, нарезать слои можна и в Krita. Я вот работал в маке 5 лет, и уже 2 года все делаю только в линуксе, под мои задачи подходит. И да, работать в macOS больше нету желания.
Ну тут не в зоне комфорта дела (хотя может отчасти). Дело в практичности и удобстве. Тебе клиент кидает sketch файл например какой-нибудь и говорит — заверстай по нему. А ты на лине, открыть нечем и sketch файлы нормально открываются только через сам sketch. Вот и задача нерешаемая — на маке бы открыл sketch и не было бы проблем, на окнах открыл бы adobe xd и тоже все бы завелось.
Дело в практичности и удобстве. Тебе клиент кидает sketch файл например какой-нибудь и говорит — заверстай по нему. А ты на лине, открыть нечем и sketch файлы нормально открываются только через сам sketch.

Именно поэтому надо клиентов переводить с проприетарных форматов на свободные.

нарезать слои можна и в Krita.

Krita, кстати, тоже не очень элементарная. Т.е. может очень много всего. Меня раздражает снобизм людей, которые с важным видом заявляют, что кроме фотошопа они ничем не могут пользоваться.
Для меня уже как несколько лет Линукс настольная система. А виндоус у меня только для танчиков.

Не всем нужен этот специфический софт. А вот стабильности бы хотелось больше. Недавно прилетел апдейт и отвалился звук. Теперь перед совещанием в тимс, мне приходится запускать pavucontrol иногда по несколько раз в день. Вот такой он, линукс.

Складывается впечатление, что Linux решил захватить абсолютно все ранки кроме десктопа

А что он захватил кроме Сохо роутеров и небольшой доли серверов (https://www.itcandor.com/server-q219/)? Смартфоны используют его чисто номинально для запуска android и очевидно что андроид скоро переедет с базы линукса, подавляющее количество серверов работает на винде, в десктопной сегменте у него вообще около 1%. В суперкомпьютерах выстрелил science linux благодаря CERN.
и очевидно что андроид скоро переедет с базы линукса

Откуда дровишки? Зачем ему это делать?
подавляющее количество серверов работает на винде

А чёрт его знает как они это считают. Все виртуалки, что я брал, были на Linux.
подавляющее количество серверов работает на винде

настолько подавляющее, что даже у ms в azure больше linux-виртуалок.
и да, ms пилит гипервизор hyper-v под linux, так что, возможно, от windows и в роли гипервизора в azure со временем отойдут.

Занимательное замечание в топике об обновлениях ядра Linux. Могу ли я поинтересоваться, что же натолкнуло вас на эту мысль при прочтении поста и комментариев к нему?
Только давайте сразу без холивара. 2020 году я всё ищу сижу на семёрке, и пользуюсь Андроидом на телефоне планшетах и твбоксах. К как мне лично кажется Android и Linux развиваются гораздо динамичнее чем винда. Хотя Возможно всё новое для Linux уже давно существует в винде.

P.S.
Я устанавливал несколько раз десятку она мне тогда не очень понравилось это были 15 16 годы возможно с тех пор она стала гораздо лучше.
Только давайте сразу без холивара.

Вброс в корневом комментарии

Ну как бы вам сказать… Не факт, что выйдет.
К как мне лично кажется Android и Linux развиваются гораздо динамичнее чем винда.

Ну не знаю. В винде вон WSL какой-нибудь развивают, а многие изменения ядра Linux, судя по всему, это драйверы, которые в Windows лежат отдельно.
Я слабо понимаю, что в ядре делает протокол для построения VPN в ядре.
Rust в ядре? Насколько я помню, Hello World генерирует бинарник с мегабайт, из-за того, что Rust тянет свой как это называется… Ну в общем пару вагонов с тележкой. Хотя думаю, в ядро его добавляют без рантайма.
Я устанавливал несколько раз десятку она мне тогда не очень понравилось это были 15 16 годы возможно с тех пор она стала гораздо лучше.

Как по мне, все ОС катятся куда-то не туда, и лучше XP x64 уже никто ничего не сделает. Но десятку постоянно дорабатывают, да.
Как по мне, все ОС катятся куда-то не туда, и лучше XP x64 уже никто ничего не сделает. Но десятку постоянно дорабатывают, да.

судя по всему лучшей системой была OS/2 или NT 3.1, ну, максимум, четверка.

Ну ХЗ, не пользовался особо. В XP весь имеющийся мусор легко выпиливался, а пуск не бесил левыми плитками. Да даже банально диспетчер задач запускался мгновенно, а не с красивой анимацией, единственная задача которой прятать пустое окно, не успевшее прогрузится.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.