Вопрос касательно OpenBSD и вебпрограммирования.

classic Classic list List threaded Threaded
63 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2

On 25/11/10 18:28, Anton Maksimenkov wrote:

>> On 25/11/10 12:49, Anton Maksimenkov wrote:
>>> Насколько я помню одной из причин "маски-префиксы" было именно то, что
>>> эта логика тупо быстрее работает (конкретно бинарник, конкретно на
>> для любых приложений". Но времена меняются - PF чай не в 1980
>> году написан.
> Ну так и нагрузки с тех пор возросли ;)
Так вот я и думаю, может и алгоритмы подтянуть. :(

> Я так понимаю что раз например в том же роутинге нужно выбрать
> например наиболее "совпадающую" сеть, с наименьшей то есть маской - то
> получается что наша задача в том, чтобы подобрать наиболее длинную
> саму сеть, "до маски" (от 10.0.0.0/16 получается 10.0, а от
> 10.0.1.0/24 получается 10.0.1, что длиннее).
> Вот для этой конкретной хрени radix-tree кажется и запридумали.
> А для диапазонов оно не подойдёт. Так кажется.

Я думаю, radix-tree придумали раньше, и не совсем для этого, но не суть.
Для диапазонов оно действительно не годится. Но для них годится rb-tree
которое УЖЕ есть в PF.

> И ещё. Для проверки "попадания в маску" надо ОДИН&.
> А для попадания в диапазон нужно ДВА сравнения.

Наверное не стоит рассуждать так уж прямолинейно :)

Напишем фрагмент для диапазонов на asm:
mov eax, [addr]
cmp eax, [start]
jl  outside
cmp eax, [stop]
jg  outside

И его же для масок:
mov eax, [addr]
and eax, [mask]
cmp eax, [net]
jne outside

С одной стороны, в масках на одну команду меньше. Но зато and делается
всегда. В варианте с интервалом, первое же сравнение может дать
отрицательный результат, что и будет время от времени происходить.

Но, конечно, основное время будет сьедаться не здесь...

--
Local Observer

Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Anton Maksimenkov-2
26 ноября 2010 г. 15:21 пользователь Andrew Jelly
<[hidden email]> написал:
> Для диапазонов оно действительно не годится. Но для них годится rb-tree
> которое УЖЕ есть в PF.
rb-дерево оно не в pf, оно "просто есть", юзать можно где угодно так то...

>> И ещё. Для проверки "попадания в маску" надо ОДИН&.
>> А для попадания в диапазон нужно ДВА сравнения.
> Наверное не стоит рассуждать так уж прямолинейно :)
> С одной стороны, в масках на одну команду меньше. Но зато and делается
> всегда.
Извиняюсь, но с асмом - я пас (можно ещё добавить за скока тактов тот
или иной финт исполняется, но итак уже перебор, да).

И я есичесно (пару раз переписав письмо) потерял нить о чём отвечать:
о pf ли мы рассуждаем или уже о совсем не.
--
antonvm
Reply | Threaded
Open this post in threaded view
|

Re: Вопрос про таблицы в PF

Andrew Jelly-2

On 26/11/10 12:38, Anton Maksimenkov wrote:

> 26 ноября 2010 г. 15:21 пользователь Andrew Jelly

> Извиняюсь, но с асмом - я пас (можно ещё добавить за скока тактов тот
> или иной финт исполняется, но итак уже перебор, да).
>
> И я есичесно (пару раз переписав письмо) потерял нить о чём отвечать:
> о pf ли мы рассуждаем или уже о совсем не.

Хм. Ну, если еще раз сформулировать, то моя мысль:
Поддержка диапазонов в PF не сделает его хуже а только лучше (поскольку
позволит сократить конфиги и, возможно, убыстрит работу) и все
необходимые для этого компоненты уже есть.

Причина же отсутствия такой поддержки - исторически сложилось видимо...
Как-то так.

--
Local Observer

1234