= Сообщение: 939 из 10763 ====================================== RU.UNIX.BSD = От : Mike Yurlov 2:466/466.1737 10 Feb 14 12:37:36 Кому : Vassily Kiryanov 10 Feb 14 12:37:36 Тема : ipfw table /32 vs aggregation FGHI : area://RU.UNIX.BSD?msgid=2:466/466.1737+3db6bd1e На : area://RU.UNIX.BSD?msgid=2:5054/36+52f8ead5 = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Hello, Vassily!
> From: Alex Korchmar <noreply@linux.e-moe.ru> EG>> Есть. Поиск по таблице в ipfw дорогой. AK> а по просто списку правил?
по списку правил - линейно.
Если почитать ман и посмотреть код ipfw, то можно увидеть что работа с таблицами реализована через "обёртки" для системного radix tree (используемого, в частности, для таблиц маршрутизации в ядре), так что нужно скорее понимание устройства и процесса поиска по этому самому radix. Насколько я смог понять бегло просмотрев, устроено оно как бинарное/битовое дерево. Соответственно это уже не линейно а быстрее. Агрегируя, мы сократим путь просмотра до листьев дерева. Однако, я так и не понял как выполняются сравнения, поэтому допускаю, что процесс сравнения в случае агрегата if($ip & mask == x.x.x.x) может быть более сложным по сравнению с конкретным единичным адресом if($ip==x.x.x.x). И для агрегации разряженного списка адресов в мелкие подсетки /31 и /30 получим тож на тож. Отсюда и вопрос.