stringtranslate.com

алгоритм Лулео

Алгоритм компьютерной науки Лулео , разработанный Дегермарком и др. (1997), представляет собой метод эффективного хранения и поиска таблиц маршрутизации в Интернете . Он назван в честь Технологического университета Лулео , родного института/университета авторов метода. Название алгоритма не появляется в оригинальной статье, описывающей его, но было использовано в сообщении Крейга Партриджа в Internet Engineering Task Force, описывающем эту статью до ее публикации. [1]

Ключевая задача, которую необходимо выполнить при маршрутизации в Интернете, — сопоставить заданный адрес IPv4 (рассматриваемый как последовательность из 32 бит) с самым длинным префиксом адреса, для которого доступна информация о маршрутизации. Эту проблему сопоставления префиксов можно решить с помощью trie , но структуры trie используют значительный объем пространства ( узел для каждого бита каждого адреса), и для их поиска требуется пройти по последовательности узлов с длиной, пропорциональной количеству бит в адресе. Алгоритм Лулео сокращает этот процесс, сохраняя только узлы на трех уровнях структуры trie, а не сохраняя все trie.

Перед построением Luleå trie записи таблицы маршрутизации должны быть предварительно обработаны. Любой больший префикс, который перекрывает меньший префикс, должен быть многократно разделен на меньшие префиксы, и только разделенные префиксы, которые не перекрывают меньший префикс, сохраняются. Также требуется, чтобы дерево префиксов было полным. Если нет записей таблицы маршрутизации для всего адресного пространства, оно должно быть дополнено путем добавления фиктивных записей, которые несут только информацию о том, что для этого диапазона нет маршрута. Это позволяет упростить поиск в Luleå trie (Sundström 2007).

Главное преимущество алгоритма Лулео для задачи маршрутизации заключается в том, что он использует очень мало памяти, в среднем 4–5 байт на запись для больших таблиц маршрутизации. Этот небольшой объем памяти часто позволяет всей структуре данных поместиться в кэш процессора маршрутизации, ускоряя операции. Однако у него есть недостаток, заключающийся в том, что его нельзя легко модифицировать: небольшие изменения в таблице маршрутизации могут потребовать реконструкции большей части или всей структуры данных. Современный домашний компьютер (ПК) имеет достаточно оборудования/памяти для выполнения алгоритма.

Первый уровень

Первый уровень структуры данных состоит из

Чтобы найти данные для заданного адреса x на первом уровне структуры данных, алгоритм Лулео вычисляет три значения:

  1. базовый индекс в позиции в массиве базовых индексов, индексированный первыми 10 битами x
  2. смещение в позиции в массиве кодовых слов, индексированное первыми 12 битами x
  3. значение в maptable[ y ][ z ], где y — индекс maptable из массива кодовых слов, а z — биты 13–16 x

Сумма этих трех значений дает индекс, который следует использовать для x в массиве элементов.

Второй и третий уровни

Второй и третий уровни структуры данных структурированы аналогично друг другу; на каждом из этих уровней алгоритм Лулео должен выполнять сопоставление префиксов на 8-битных величинах (биты 17–24 и 25–32 адреса соответственно). Структура данных структурирована в «куски», каждый из которых позволяет выполнять эту задачу сопоставления префиксов на некоторой подпоследовательности адресного пространства; элементы данных из структуры данных первого уровня указывают на эти куски.

Если с фрагментом связано достаточно мало различных фрагментов маршрутной информации, фрагмент просто сохраняет список этих маршрутов и выполняет поиск по ним с помощью одного шага бинарного поиска, за которым следует последовательный поиск . В противном случае применяется метод индексации, аналогичный методу первого уровня.

Примечания

  1. ^ «Вторая поездка в Европу для членов IETF... Архивировано 19 августа 2012 г. на Wayback Machine », Крейг Партридж в IETF, 1 мая 1997 г.

Ссылки