The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

CARP для Linux и реализация TCP/IP стека в виде пользовательского процесса

16.06.2008 15:10

Евгений Поляков выпустил обновление трех интересных проектов:

  • Вышла новая версия реализации протокола 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, реализованная в виде пользовательского процесса.
  • Доступно обновление системы unetstack, - реализации TCP/IP стека минимального размера, работающего как пользовательский процесс. Тестирование показало, что unetstack работает в 3 раза быстрее стандартного TCP/IP стека Linux и при этом в 4 раза меньше нагружает CPU.
  • Вышло обновление iptables модуля osf, позволяющего блокировать пакеты в зависимости от операционной системы отправителя. Свободный перевод примера использования можно найти здесь.

    1. Главная ссылка к новости (http://tservice.net.ru/~s0mbre...)
    2. OpenNews: Поддержка CARP в OpenBSD
    3. Интервью с Ryan McBride по поводу CARP и IPv6 в OpenBSD
    4. OpenNews: Под FreeBSD портирован CARP
    5. OpenNews: Поддержка CARP добавлена в NetBSD
    Лицензия: CC-BY
    Тип: Программы
    Короткая ссылка: https://opennet.ru/16497-carp
    Ключевые слова: carp, linux, iptables, kernel, tcpip
    Поддержать дальнейшую публикацию новостей на OpenNET.


    Обсуждение (29) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, mitya (ok), 15:42, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    CARP для линукс --- это замечательно.
    Давно юзаю в ОпенБСД. Отличная вещь.
     
  • 1.2, azalio (??), 15:52, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что можно сказать - ура carp'у под linux!
     
  • 1.4, dm (ok), 16:32, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Доступно обновление системы unetstack, - реализации TCP/IP стека минимального >размера, работающего как пользовательский процесс. Тестирование показало, что >unetstack работает в 3 раза быстрее стандартного TCP/IP стека Linux и при этом в >4 раза меньше нагружает CPU.

    :-D

     
  • 1.5, Аноним (5), 16:54, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    тогда уж в три раза меньше CPU нагружает, почему четыре?
     
     
  • 2.6, Andrey Mitrofanov (?), 17:03, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >тогда уж в три раза меньше CPU нагружает, почему четыре?

    Потому что в три раза длиннее и в четыре раза толще. /Так/ понятнее??

     
  • 2.16, cheeboorashka (ok), 23:23, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >тогда уж в три раза меньше CPU нагружает, почему четыре?

    CPUTIME = 4*x sес  
    TIME = 3*y  sес.
    IDLE = k*y

    CPUTIME = TIME - IDLE ==>  4*x = 3*y - k*y =>  4*x = y*(3-k)

    ---------

    NEWSPEED = SPEED/4
    NEWTIME  = TIME/3  
    NEWIDLE  = m*y

    NEWCPUTIME = 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


     
     
  • 3.17, cheeboorashka (ok), 23:27, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    О чём это я... А, короче, простой (IDLE) уменьшился в 3/4 раза (0.75)
     

  • 1.7, cryptoanonymous (?), 17:20, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Стырили да, ну молдцы что сказать :)
     
     
  • 2.9, somebody (??), 18:43, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    аха.. иди попробуй "стырь".
    и вообще глупо так указывать на опенсорс. тому же опенбсд не помешало б очень много "стырить" у других, но на все сил не хватит
     
  • 2.29, Аноним (5), 11:57, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    мне всегда казалось, что открытыми исходники публикуют в том числе и для того, чтобы "тырили". И, кстати, это называется заимствовать. Что вполне допускается лицензией и традициями. OpenSource вообще строится на том, что все друг у друга что-то заимствуют и делятся.
     
  • 2.30, i_am (ok), 14:50, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Что значит стырили?То есть когда MS юзает - это не стырили а когда в линухе - так все, стырили?Где логика в таких заявах? oO
     
     
  • 3.31, Аноним (-), 22:30, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Что значит стырили?То есть когда MS юзает - это не стырили а
    >когда в линухе - так все, стырили?Где логика в таких заявах?
    >oO

    Дело в том, что Linux реализация написана с нуля без использования исходников BSD.
    Только спецификация протокола. Так что это точно не "стырили", но авторство идеи принадлежит BSD.

     

  • 1.8, Дохтур (?), 17:26, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хм... s0mbre - зе бест! :)
    нравится тщательность, с которой он подходит к разработке и регулярные тесты.
     
  • 1.10, гость (?), 20:25, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Евгений безусловно молодец, но его английский это просто караул - я из-за этого его блог читать не могу - аж корёжит от ошибок через каждое слово... посоветуйте ему кто-нибудь на языковые курсы походить :-)

    По теме:
    - а нафик нужен ядерный carp при наличии ucarp? Он ведь особой производительности не требует, зачем его в ядро пихать?
    - где и как можно использовать unetstack? У него какие-нибудь специфические требования к ядру есть или ванильное пойдёт?

     
     
  • 2.21, vitek (??), 01:15, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    для встраиваемых систем, например.
     

  • 1.11, chesnok (ok), 21:47, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А каким образом достигается распределение нагрузки при использовании данного модуля (carp) ?
     
     
  • 2.13, Аноним (-), 22:56, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    дерный CARP нужен для создания сетевого интерфейса, от имени которого рассылаются сообщения. В ucarp используется МАС адреса того компьютера, который является мастером, поэтому смена мастера в случае форвардинга пакетов приводит к ступору некоторого железа, которое хочет только один МАС.
     
     
  • 3.18, guest (??), 00:27, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >дерный CARP нужен для создания сетевого интерфейса, от имени которого рассылаются сообщения.
    >В ucarp используется МАС адреса того компьютера, который является мастером, поэтому
    >смена мастера в случае форвардинга пакетов приводит к ступору некоторого железа,
    >которое хочет только один МАС.

    В смысле дешёвые коммутаторы колом встают?
    А в Linux нельзя создать виртуальный интерфейс с отдельным маком "привязав" его к одному из физических?

     

  • 1.12, cheeboorashka (ok), 22:52, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > ...обновление iptables модуля osf, позволяющего  блокировать пакеты
    > в зависимости от операционной системы отправителя.

    Вот как надо трояны и вири фильтровать :)

     
     
  • 2.20, vitek (??), 01:13, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    особенно у провайдеров актуально :-)
     

  • 1.14, Аноним (-), 22:59, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сетевой стек работает так быстро только с его же netchannels - мостом между физическим устройсвтом и userspace, поэтому можно избежать больших накладных расходов на сисколы при передаче маленьких пакетов. Через packet socket все работает как через packet socket, т.е. медленно.
     
  • 1.15, Guest (??), 23:17, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Тестирование показало, что unetstack работает в 3 раза быстрее стандартного TCP/IP стека Linux и при этом в 4 раза меньше нагружает CPU.

    Интересно. Это говорит либо о том, что стандартный стек убог до невозможности, либо о том, что убог unetstack, ибо не поддерживает всех фич/нужных проверок/неэффективно использует память и т.п.

    Никогда userspace поделка не будет быстрее ядерной. Иначе что-то где-то явно не так.

     
     
  • 2.25, vitek (??), 02:50, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    а тут как-то про микро-ядерную архитектуру говорили...
     
     
  • 3.26, dct (??), 05:24, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    prof флудер... :)
    ты хочешь поговорить об этом? :)
     
     
  • 4.28, vitek (??), 09:58, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    я ведь это не для денег!
    я ведь это для души! :-D
     
  • 2.27, Аноним (-), 08:29, 17/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    А сисвызовы, по-твоему, ничего не стоят?
    Ну и да, реализуй полноценный стек TCP/IP в одиночку в разумное время, а мы будем тебе на нервы капать, что у тебя херня получается.
     
     
  • 3.32, Guest (??), 03:28, 18/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А сисвызовы, по-твоему, ничего не стоят?

    А в буфер сетевухи ты будешь пакеты класть из userspace наверное? И выгребать N раз в секунду в случае polling/обрабатывать прерывания в случае не polling? Ну-ну.

    >Ну и да, реализуй полноценный стек TCP/IP в одиночку в разумное время,
    >а мы будем тебе на нервы капать, что у тебя херня
    >получается.

    Я свое время привык тратить более конструктивно. И, к слову, не пользуюсь системами где нормальный CARP неализовали только сейчас и где userspace поделка работает на порядок производительней родного TCP/IP стека :))

     
     
  • 4.34, Аноним (-), 14:54, 20/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А в буфер сетевухи ты будешь пакеты класть из userspace наверное?

    В netchannels практически так и делается.

    >Я свое время привык тратить более конструктивно. И, к слову, не пользуюсь системами где нормальный CARP неализовали только сейчас и где userspace поделка работает на порядок производительней родного TCP/IP стека :))

    Ядерный CARP был реализован в 2005 году, это просто очередной релиз.
    Почему userspace решение работает быстрее ядерного в данной задаче, вы так и не поняли.

     
  • 2.33, Дмитрий Ю. Карпов (?), 11:54, 18/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Никогда userspace поделка не будет быстрее ядерной.

    Скорость падает в т.ч. из-за переходов из режима ядра в режим задачи и обратно. Если за каждым чихом переходить в режим ядра, то потери будут велики, и поэтому ряд функций лучше реализовать в режиме задачи (например, как рах по этой причине fopen/fclose/fread/fwrite/fscanf/fprintf выполняются в режиме задачи, а не в режиме ядра).

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру