ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
160780 Топик полностью
Evgeny_CD, Архитектор (04.07.2009 19:44, просмотров: 134) ответил Evgeny_CD на Задача поиска по массиву там наиважнейшая. От нее все скорости зависят. Если ориентироваться на то, что правило "резидентно" висит в плисине, то получится плохо масшабируемая система: чуть больше правил - и "не лезет". А так все красиво - с ростом
Самое грамотное там - сделать аппаратную поддержку поиска на плисине + SDRAM. Т.е. есть некий блок, которому задаешь вопрос - а какие есть правила в отношении такого объекта (IP адрес, порт и т.д.). Несколько мкс - и тебе приходит ответ - вот такое правило. Длаее ты его уже процессором разбираешь. Бинарное дерево там, вероятно, будет проще всего в реализации. Смотрим: 1024 байт - ячейка дерева. Содержит правило и указатели связанных списков. С запасом. При 16 битной шине и 100 Мгц SDRAM скорость транзакции с пакетом - 12 (открывание-закрывание и пр)+512=524 такта, или 191к транзакций в сек. При высоте дерева 13 имеем всего 15 к принятий решений/сек. Что мало для 100 мбит сети. При длине записи 128 байт (при условии, что записи выровнены по границе страниц SDRAM, "длинный" пакет от начала страницы можно прервать где угодно, но начинать его можно только по границе страницы; SDRAM она большая и тяжелая, так что ее неэффективное использованре не страшно) имеем 101к тразакций/сек, что хватит для 100 Мбит сети в одной сторону. DDR-266 позволят поднять скорость до 200к транзакций в сек, чего хватит на анализ дуплексного трафика 100 мбит. Таблицу надо обновлять - но и 100к пакетов в сек в реальной сети прет не каждую секунду :)