Евгений Поляков выпустил обновление трех интересных проектов:- Вышла (http://tservice.net.ru/~s0mbre/blog/devel/networking/2008_06...) новая версия реализации (http://tservice.net.ru/~s0mbre/old/?section=projects&item=carp) протокола CARP (Common Address Redundancy Protocol) в виде модуля для Linux ядра 2.6.25. Код портирован из OpenBSD. CARP выступает в роли открытой альтернативы протоколам HSRP (Hot Standby Router Protocol) и VRRP (Virtual Router Redundancy Protocol), позволяет организовать совместное использование IP между несколькими серверами в локальной сети, что может применяться для балансировки нагрузки (IP одновременно используют все сервера) или для создания отказоустойчивых систем (IP использует первичный сервер, при нарушении его работы, IP подхватывает другой). Существует еще одна реализация CARP для Linux - ucarp (http://www.ucarp.org/), реализованная в виде пользовательского процесса.
- Доступно (http://tservice.net.ru/~s0mbre/blog//devel/networking/unetst...
URL: http://tservice.net.ru/~s0mbre/blog/2008/06/14/
Новость: http://www.opennet.me/opennews/art.shtml?num=16497
CARP для линукс --- это замечательно.
Давно юзаю в ОпенБСД. Отличная вещь.
Что можно сказать - ура carp'у под linux!
>Доступно обновление системы unetstack, - реализации TCP/IP стека минимального >размера, работающего как пользовательский процесс. Тестирование показало, что >unetstack работает в 3 раза быстрее стандартного TCP/IP стека Linux и при этом в >4 раза меньше нагружает CPU.:-D
тогда уж в три раза меньше CPU нагружает, почему четыре?
>тогда уж в три раза меньше CPU нагружает, почему четыре?Потому что в три раза длиннее и в четыре раза толще. /Так/ понятнее??
>тогда уж в три раза меньше CPU нагружает, почему четыре?CPUTIME = 4*x sес
TIME = 3*y sес.
IDLE = k*yCPUTIME = TIME - IDLE ==> 4*x = 3*y - k*y => 4*x = y*(3-k)
---------
NEWSPEED = SPEED/4
NEWTIME = TIME/3
NEWIDLE = m*yNEWCPUTIME = NEWSPEED-NEWIDLE => x = -y+m*y => x = -y*(1+m)
/
| 4*x = -y*(3+k)
<
| x = -y*(1+m)
\| 4 -3+k | | 4 3+k |
| | = | |
| 1 1+m | | 0 1/4+m+(1/4)*k |
IDLE = m + 1/4*(-1-k) ля, ля, 3 делим на это =>......3/4
О чём это я... А, короче, простой (IDLE) уменьшился в 3/4 раза (0.75)
Стырили да, ну молдцы что сказать :)
аха.. иди попробуй "стырь".
и вообще глупо так указывать на опенсорс. тому же опенбсд не помешало б очень много "стырить" у других, но на все сил не хватит
мне всегда казалось, что открытыми исходники публикуют в том числе и для того, чтобы "тырили". И, кстати, это называется заимствовать. Что вполне допускается лицензией и традициями. OpenSource вообще строится на том, что все друг у друга что-то заимствуют и делятся.
Что значит стырили?То есть когда MS юзает - это не стырили а когда в линухе - так все, стырили?Где логика в таких заявах? oO
>Что значит стырили?То есть когда MS юзает - это не стырили а
>когда в линухе - так все, стырили?Где логика в таких заявах?
>oOДело в том, что Linux реализация написана с нуля без использования исходников BSD.
Только спецификация протокола. Так что это точно не "стырили", но авторство идеи принадлежит BSD.
Хм... s0mbre - зе бест! :)
нравится тщательность, с которой он подходит к разработке и регулярные тесты.
Евгений безусловно молодец, но его английский это просто караул - я из-за этого его блог читать не могу - аж корёжит от ошибок через каждое слово... посоветуйте ему кто-нибудь на языковые курсы походить :-)По теме:
- а нафик нужен ядерный carp при наличии ucarp? Он ведь особой производительности не требует, зачем его в ядро пихать?
- где и как можно использовать unetstack? У него какие-нибудь специфические требования к ядру есть или ванильное пойдёт?
для встраиваемых систем, например.
А каким образом достигается распределение нагрузки при использовании данного модуля (carp) ?
дерный CARP нужен для создания сетевого интерфейса, от имени которого рассылаются сообщения. В ucarp используется МАС адреса того компьютера, который является мастером, поэтому смена мастера в случае форвардинга пакетов приводит к ступору некоторого железа, которое хочет только один МАС.
>дерный CARP нужен для создания сетевого интерфейса, от имени которого рассылаются сообщения.
>В ucarp используется МАС адреса того компьютера, который является мастером, поэтому
>смена мастера в случае форвардинга пакетов приводит к ступору некоторого железа,
>которое хочет только один МАС.В смысле дешёвые коммутаторы колом встают?
А в Linux нельзя создать виртуальный интерфейс с отдельным маком "привязав" его к одному из физических?
> ...обновление iptables модуля osf, позволяющего блокировать пакеты
> в зависимости от операционной системы отправителя.Вот как надо трояны и вири фильтровать :)
особенно у провайдеров актуально :-)
Сетевой стек работает так быстро только с его же netchannels - мостом между физическим устройсвтом и userspace, поэтому можно избежать больших накладных расходов на сисколы при передаче маленьких пакетов. Через packet socket все работает как через packet socket, т.е. медленно.
> Тестирование показало, что unetstack работает в 3 раза быстрее стандартного TCP/IP стека Linux и при этом в 4 раза меньше нагружает CPU.Интересно. Это говорит либо о том, что стандартный стек убог до невозможности, либо о том, что убог unetstack, ибо не поддерживает всех фич/нужных проверок/неэффективно использует память и т.п.
Никогда userspace поделка не будет быстрее ядерной. Иначе что-то где-то явно не так.
а тут как-то про микро-ядерную архитектуру говорили...
prof флудер... :)
ты хочешь поговорить об этом? :)
я ведь это не для денег!
я ведь это для души! :-D
А сисвызовы, по-твоему, ничего не стоят?
Ну и да, реализуй полноценный стек TCP/IP в одиночку в разумное время, а мы будем тебе на нервы капать, что у тебя херня получается.
>А сисвызовы, по-твоему, ничего не стоят?А в буфер сетевухи ты будешь пакеты класть из userspace наверное? И выгребать N раз в секунду в случае polling/обрабатывать прерывания в случае не polling? Ну-ну.
>Ну и да, реализуй полноценный стек TCP/IP в одиночку в разумное время,
>а мы будем тебе на нервы капать, что у тебя херня
>получается.Я свое время привык тратить более конструктивно. И, к слову, не пользуюсь системами где нормальный CARP неализовали только сейчас и где userspace поделка работает на порядок производительней родного TCP/IP стека :))
>А в буфер сетевухи ты будешь пакеты класть из userspace наверное?В netchannels практически так и делается.
>Я свое время привык тратить более конструктивно. И, к слову, не пользуюсь системами где нормальный CARP неализовали только сейчас и где userspace поделка работает на порядок производительней родного TCP/IP стека :))
Ядерный CARP был реализован в 2005 году, это просто очередной релиз.
Почему userspace решение работает быстрее ядерного в данной задаче, вы так и не поняли.
> Никогда userspace поделка не будет быстрее ядерной.Скорость падает в т.ч. из-за переходов из режима ядра в режим задачи и обратно. Если за каждым чихом переходить в режим ядра, то потери будут велики, и поэтому ряд функций лучше реализовать в режиме задачи (например, как рах по этой причине fopen/fclose/fread/fwrite/fscanf/fprintf выполняются в режиме задачи, а не в режиме ядра).