Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > [kernel] создание таблицы роутинга


Автор: null56 27.10.2011, 13:59
Всем привет
Сейчас решаю одну задачу, сложность которой заключается в том, чтобы быстро находить определенные записи в таблице, поэтому вопрос в том, как лучше организовать таблицу?
В общем моя основная цель создать некоторые таблицы (по аналогии таблицам роутинга ядра) и на основании этих таблиц уже принимать решение о маршрутизации.
Вот поля таблицы:
- исходный сетевой интерфейс (src_if) - скорее всего строковое значение, хотя надо посмотреть, может ядро ему индекс какой дает
- адрес отправителя (src_ip) -  целое
- адрес получателя (dst_ip) - целое
- выходной интерфейс (dst_if)

Мне интересные любые идея, как бы вы поступили для более быстрого поиска, конечно, мне хотелось бы использовать готовые структуры ядра для этого (деревья, хеши, списки и хз чо там еще), но если идея действительно толковая, то я с удовольствием реализую для нее всё что необходимо.
Пока я лишь думаю над использованием бинарных деревьев поиска, но я лишь начал думать и хочу услышать альтернативные решения

Заранее благодарен за помощь всем откликнувшемся, пойду пока изучу, как организован обычный роутинг в ядре

Автор: null56 27.10.2011, 17:07
вообще покавыряю я лучше fib механизм, может его можно будет заточить под мои цели, чем придумывать велосипед, отпишусь позже, если получится

Автор: tzirechnoy 27.10.2011, 23:48
Зачем бинарные? Используйте сбалансированные (в первую очередь BTREE+). 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)