ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] mod_gio




On Thu, Sep 11, 2003 at 11:52:15AM +0300, Nick Kostirya wrote:
> 
> Автор mod_gio использует "склеивание" супернетов
> (http://www.lexa.ru/apache-talk/msg06757.html) ,
> а поиск осушествляет по дереву.

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

> В коде автора я до конца разобраться не смог :-(, поэтому простите, если
> заблуждаюсь.
Это не мой код, это libpatricia (немножко покоцаная, насколько я помню).

> При такой базе (со "склеиными сетями") при поиске, когда по дереву найдется
> сеть с наилучшим совпадением IP, идет сопоставление с маской,
> если IP не входит в найденную сеть, то необходимо вернутся наверх к более
> широкой сетке и проверить маску ее.
Не надо этого делать. Мы в списке поддеревьев ищем совпадающий с адресом префикс
нужной длины. Если его нет, то мы либо в начале дерева (т.е. ничего не
нашли), либо на какой-то ветке, которая описывает (matches) текущий адрес.

> Вот мне интересно, как автор выкрутился в этой ситуации.
> Из исходников я не понял и буду благодарен за краткое объяснение.
libpatricia - это тот же код (или практически тот же), который
за роутинг в BSD-ядре отвечает. Принципы ровно те же - нашли prefix
match - значит пользуемся, если нет more specific

Алексей Тутубалин
mailto: lexa@lexa.ru
Web: http://www.lexa.ru/lexa 


 




Copyright © Lexa Software, 1996-2009.