>> Моё личное мнение: GO это тормозно, громоздко (в памяти), нифига не переносимо
>> (нельзя взять кусок кода и утащить в ядерный модуль любимой ОС).
> Более того. Зачем??? перетаскивать что-то в ядро? Очевидно я думаю что опять
> же хочется столь критичной (для вас) скорости из-за того что меньше
> дорогих (реально дорогих) переключений контекста программ в процессоре.Если вы не в курсе - там ещё и копирование данных есть, если всякие хаки не использовать.
Те эти 100 мегабит нужно два раза скопировать: в юзер спейс и обратно.
Но в случае с оверхэдом от GO это сущая ерунда :)
> Но если смотреть
> с точки зрения безопасности, то как-раз из ядра хочется вытаскивать как
> можно больше всего в userspace потому-что надёжнее, спокойнее, более изолировано, в
> случае краха не потянет за собой всё, в случае недобротного модуля/части
> ядра не будет скомпрометировано всё.
Если это VNP концентратор то его единственная задача - гонять шифрованный трафик.
Чем эффективнее он это делает тем лучше.
Нет особой разницы, в данном случае, будет проблема в ядре или в приложении, ибо результат один - проникновение в VPN (чужих пакетов), в худшем случае.
> Если вам надо решить проблему производительности,
> а мне безопасности -- то надо удешевить переключение контекста. Опять же
> вы готовы затратить кучу времени на написание сложной под-вопросом качества ядерной
> части, которая сильно ставит под вопрос безопасность системы, вместо того чтобы
> вынести в userspace, продвигать микроядерные ОС. В чём проблема?
В том, что код на GO.
В том, что у меня нет проблем с тем, чтобы запихать что то в ядро и убедится что оно не валится.
Те я вот в этом всём смысла не вижу совсем, какие то надуманные проблемы.
> Наверное в
> том что Intel имеет крайне убогую архитектуру в которой контекст это
> очень дорого. В отличии от RISC систем где например тот же
> QNX не проседал на 50% из-за переключений контекста. Вам нужна скорость.
При работе в ядре тоже нет никаких проседаний.
Но виноват интел, потому что мы не хотим писать на сях и складывать это в ядерный модуль.
Очень удобная позиция.
> Мне, моим целям -- безопасность. Userspace это бОльшая гарантия того что
> в случае краха оно не потянет за собой остальное. Плюс userpace
> это опять же портируемо: работаем с TAP как с файлом и
> радуемся, а не пишем с совершенно разным API куски кода ради
> экономии переключения контекста. Кстати любопытны абсолютные величины чего мы сэкономим.
У вас весь VPN - немногим больше хэлло ворда, большей частью состоящий из готовых криптопримитивов которые за вас уже отсмотрели, прочитали, проверили и заверили безопасность все кому только не лень.
Go только передаёт данные между ними, и делает это хреново.
Выносить в ядро вообще всё смыла не имеет, имеет смысл в ядро утащить сальсу, место где оно подписывает сообщения, и тот кусок который за окно приёма отвечает.
Ассиметричную крипту и всё остальное что связано с рукопожатием в начале оставить в юзерспейсе, и там пофик на каком тормозном и безопасном языке оно будет написано, ибо основная работа будет в ядре.
Примерно так и устроен mpd5 во фре, который жуёт гигабиты трафика от тысяч юзеров.
И accel-ppp (или как он там сейчас) тоже ядерный.