Листы префиксов, как метод управления процессом обмена маршрутными обновлениями

в 9:19, , рубрики: Cisco, маршрутизация, Сетевые технологии, метки: ,

1. Введение в листы префиксов


Для управления обменом маршрутной информацией, ее приемом, отправкой или перераспределением, в Cisco IOS можно использовать различные методы фильтрации маршрутных обновлений, такие как листы распределения (distribute-list) и листы префиксов (prefix-list).
Использование листов распределения обладает определенными недостатками, такими как:

  • ACL (Access-List, листы управления доступом), используемые в листах распределения, изначально разрабатывались для фильтрации пакетов, а не для фильтрации маршрутов
  • Невозможность определения совпадения маски маршрута
  • Работа ACL достаточно мелена, так как они последовательно применяется к каждой записи в маршрутном обновлении
  • Использование расширенных ACL может оказаться громоздким для конфигурирования

Листы префиксов разрабатывались как альтернатива использованию ACL, их можно использовать во множестве команд предназначенных для фильтрации маршрутов.

Основными достоинствами использования листов префиксов являются:

  • Значительное увеличение производительности по сравнению с ACL и просмотре больших списков записей. Маршрутизатор преобразует лист префиксов в древовидную структуру, в которой каждая ветка дерева представляет собой определенное условие, что позволяет Cisco IOS определить необходимое действие, разрешение или запрет, значительно быстрее
  • Поддержка инкрементных изменений. Стандартные нумерованные ACL, не поддерживают редактирование, в них одна команда no удаляет весь ACL. Листы префиксов могут быть модифицированы. Вы можете назначить последовательный номер каждой строке листа префиксов, эти последовательные номера маршрутизатор будет использовать для сортировки записей. Если вы будете назначать последовательные номера с определенным запасом (10, 20, 30), то в последствии можно будет добавлять новые записи между уже существующими. Так же можно удалять отдельные записи по их номерам

Примечание: Именованные ACL поддерживают инкрементные изменения.

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

Листы префиксов так же обладают и определенными схожими чертами с ACL. Листы префиксов могут содержать произвольное количество записей, каждая из которых содержит условие и действие. Когда маршрутизатор выполняет проверку соответствия маршрута листу префиксов, первое совпадение с условием будет определять применяемое к маршруту действие – разрешение или запрет. Если маршрут не будет соответствовать ни одной записи, то на него будет действовать неявная политика по умолчанию deny any.

2. Общие правила фильтрации маршрутов с помощью листов префиксов


Маршрут будет разрешен или запрещен на основании следующих правил:

  • Пустой лист разрешает все префиксы
  • Если префикс разрешен, то маршрут используется, иначе – не используется
  • Лист префиксов содержит нумерованные записи, маршрутизатор начинает проверку соответствия начиная сверху списка, с записи с минимальным номером
  • Если соответствие найдено, то просмотр листа префиксов прекращается. Для повышения эффективности располагайте записи с наибольшей вероятностью совпадения вверху списка с меньшими порядковыми номерами
  • Если не произошло ни одного соответствия, будет применена неявная политика по умолчанию deny any

3. Настройка листов префиксов


Для создания листа префиксов используется команда ip prefix-list {list-name | list-number} [seq seq-value] {deny | permit} network/length [ge ge-value] [le le-value] глобального режима конфигурации. Описание параметров этой команды приведены в таблице 1.

Таблица 1. Описание параметров команды ip prefix-list

Параметр                                 Описание
list-name Имя создаваемого листа префиксов, регистрозависимо
list-number Номер создаваемого листа префиксов
seq seq-value 32 битный номер записи в листе префиксов, используемый для определения порядка проверки соответствия при фильтрации. По умолчанию увеличивается на 5
deny | permit Действие, выполняемое при нахождении соответствия
network/length Условие записи – префикс (номер сети) и длина его маски. Номер сети задается в виде IP адреса, длина маски в виде количества единичных бит в ней
ge ge-value Диапазон соответствия длины маски для сетей с маской, более длинной, чем указана параметре network/length. Если используется только параметр ge, диапазоном считается от значения ge-value до 32
le le-value Диапазон соответствия длины маски для сетей с маской, более длинной, чем указана параметре network/length. Если используется только параметр le, диапазоном считается от значения length до ge-value

Параметры ge и le являются не обязательными, и могут быть использованы для определения диапазона длины маски маршрута, в рамках которого будет считаться что маршрут соответствует условию записи листа префиксов. Значения параметров length, ge-value и le-value должны удовлетворять следующему правилу: length<ge-value<le-value<= 32.
Для удаления листа префиксов используется команда no ip prefix-list list-name глобального режима конфигурации.
Команда [no]ip prefix-list list-name description text используется для добавления или удаления текстовых комментариев в лист префиксов.
Если параметры ge и le не указаны, то для выполнения условия записи требуется точное совпадение.
Использование параметров ge и le может показаться запутанным и сложным для понимания. Ниже приведены некоторые практические эксперименты, в результате анализа которых понять возможности использования этих параметров станет легче.
На рисунке 1 приведена топология, которая будет использоваться для демонстрации работы параметров ge и le.

Рисунок 1. Сеть используемая для демонстрации работы параметров ge и le команды ip prefix-list
Листы префиксов, как метод управления процессом обмена маршрутными обновлениями
В начальном состоянии листы префиксов не используются, и маршрутизатор A получил от маршрутизатора B информацию о следующих маршрутах:

172.16.0.0 subnetted:
172.16.10.0/24
172.16.11.0/24

В данном примере мы будем использовать некоторые команды BGP, но детальная информация о работе этих команд для понимания примеров с параметрами команды ip prefix-list не нужна. Важной является следующая информация: маршрутизатор B, изначально обладавший двумя маршрутами с маской /24, суммаризировал их в одну запись 172.16.0.0/16, таким образом у него теперь три маршрута доступных для передачи соседнему маршрутизатору C с IP адресом 10.1.1.1. Какие маршруты реально будут переданы зависит от того как будет использован лист префиксов.
Можно предположить 5 сценариев конфигурации:

В первом сценарии маршрутизатор B обладает следующей конфигурацией:

router bgp 65000
aggregate-address 172.16.0.0 255.255.0.0
neighbor 10.1.1.1 prefix-list test1 out
ip prefix-list test1 permit 172.16.10.0/8 le 24

Если просматривать текущую конфигурацию маршрутизатора с помощью команды show running-config то можно увидеть, что последняя строчка автоматически будет заменена на следующую:

ip prefix-list test permit 172.0.0.0/8 le 24

Это происходит потому что только первые 8 бит IPадреса считаются значимыми при маске /8. В этом случае соседнему маршрутизатору будут переданы все три маршрута: 172.16.0.0/16, 172.16.10.0/24 и 172.16.11.0/24. Все эти маршруты обладают одинаковыми и подходящими первыми 8 битами, и обладают маской водящей в диапазон длин от 8 до 24.

Во втором сценарии маршрутизатор B обладает следующей конфигурацией:

router bgp 65000
aggregate-address 172.16.0.0 255.255.0.0
neighbor 10.1.1.1 prefix-list test2 out
ip prefix-list test2 permit 172.16.10.0/8 le 16

В этом случае соседнему маршрутизатору будут передана только один маршрут: 172.16.0.0/16. Только он обладает подходящими первыми 8 битами, и маской водящей в диапазон длин от 8 до 16.

В третьем сценарии маршрутизатор B обладает следующей конфигурацией:

router bgp 65000
aggregate-address 172.16.0.0 255.255.0.0
neighbor 10.1.1.1 prefix-list test3 out
ip prefix-list test3 permit 172.16.10.0/8 ge 17

В этом случае соседнему маршрутизатору будут переданы маршруты: 172.16.10.0/24 и 172.16.11.0/24. В этом случае параметр маски /8 будет использоваться только для выделения проверяемых бит IP адреса, и игнорироваться в проверке длины маски, то есть проверка будет происходить на соответствие диапазону масок ge 17 le 32 – от /17 до /32.

В четвертом сценарии маршрутизатор B обладает следующей конфигурацией:

router bgp 65000
aggregate-address 172.16.0.0 255.255.0.0
neighbor 10.1.1.1 prefix-list test4 out
ip prefix-list test4 permit 172.16.10.0/8 ge 16 le 24

В этом случае соседнему маршрутизатору будут переданы все маршруты: 172.16.0.0/16, 172.16.10.0/24 и 172.16.11.0/24. В этом случае параметр маски /8 будет использоваться только для выделения проверяемых бит IP адреса, и игнорироваться в проверке длины маски, то есть проверка будет происходить на соответствие диапазону масок ge 16 le 24 – от /16 до /24.

В пятом сценарии маршрутизатор B обладает следующей конфигурацией:

router bgp 65000
aggregate-address 172.16.0.0 255.255.0.0
neighbor 10.1.1.1 prefix-list test5 out
ip prefix-list test5 permit 172.16.10.0/8 ge 17 le 24

В этом случае соседнему маршрутизатору будут переданы маршруты: 172.16.10.0/24 и 172.16.11.0/24. В этом случае параметр маски /8 будет использоваться только для выделения проверяемых бит IP адреса, и игнорироваться в проверке длины маски, то есть проверка будет происходить на соответствие диапазону масок ge 17 le 24 – от /17 до /24.

4. Нумерация записей в листах префиксов


Нумерация записей в листах префиксов производится автоматически, если вы не отключите эту возможность. Если вы отключаете автоматическую нумерацию, то при создании каждой записи вам необходимо будет использовать параметр seq seq-value.
Лист префиксов, это отсортированный список. Номер записи является важным параметром, если маршрут может подойти под соответствие нескольким записям в листе префиксов, в этом случае будут выполняться действия, определенные в записи с наименьшим номером из всех, под условие которых подошел этот маршрут.
Проверка на соответствие всегда начинается с записи с наименьшим номером, и далее по списку по порядку возрастания номеров, до тех пор, пока соответствие не будет найдено. При нахождении соответствия маршрут будет или разрешен, или запрещен, в зависимости от того какое действие задано в соответствующей записи листа префиксов – permit или deny.
Независимо от того, используете ли вы нумерацию записей по умолчанию или нет, вам необязательно указывать их номера для того что бы удалить определенный элемент конфигурации.
По умолчанию элементы листа префиксов получат следующие номера: 5, 10, 15 и т.д. Если какой-то из номеров последовательности будет отсутствовать, то новая запись получит не отсутствующий номер, а номер на 5 больше чем максимальный. Таким образом если номер последней записи будет 23, то следующие получат номера: 28, 33, 38 и т.д.
Команда show ip prefix-list в своем выводе отображает последовательные номера всех записей.
Для выключения автоматической нумерации записей листов префиксов используется команда no ip prefix-list sequence-number глобального режима конфигурации. Для ее повторного включения используется команда ip prefix-list sequence-number.

5. Примеры использования листов префиксов


Рассмотрим лист префиксов ip prefix-list filter1 permit 192.168.0.0/16. Какие следующие маршруты будут соответствовать этой записи: 192.168.0.0/16, 192.168.0.0/20, 192.168.2.0/24?
Этой записи будет соответствовать только один маршрут 192.168.0.0/16 потому что как только он успешно удовлетворяет условиям совпадения адреса и маски.
Рассмотрим еще два листа префиксов:

  • ip prefix-list filter2 permit 192.168.0.0/16 le 20
  • ip prefix-list filter3 permit 192.168.0.0/16 ge 18

В первом случае под условия соответствия подойдут два маршрута: 192.168.0.0/16 и 192.168.0.0/20, маршрут 192.168.2.0/24 обладает более длинной маской, чем необходимо.
Во втором случае под условия соответствия подойдут так же два маршрута: 192.168.0.0/20 и 192.168.2.0/24, маршрут 192.168.0.0/16 обладает слишком короткой маской.
В качестве еще одного примера можно привести лист префиксов ip prefix-list filter4 0.0.0.0/0. Префиксу «Все нули» соответствуют все сети, но в данном случае параметры ge и le не используются и поэтому необходимо соответствии так же и нулевой маски /0. Под этот лист префиксов подойдет только маршрут по умолчанию.
Если мы используем лист префиксов: ip prefix-list filter5 0.0.0.0/0 ge 32, то ему будут соответствовать любые маршруты с маской /32.
Или же такому листу префиксов: ip prefix-list filter6 0.0.0.0/0 le 32, в свою очередь, будут соответствовать любые маршруты, любая сеть, и любая длина маски.
Если мы хотим выделить все маршруты с маской от /1 до /24, то необходимо использовать такой лист префиксов: ip prefix-list filter7 0.0.0.0/1 le 24.

6. Управление перераспределением с помощью листов префиксов


Рассмотрим сеть, показанную на рисунке 2. Допустим, нам надо ограничить перераспределение маршрутной информации из одного протокола в другой только определенными сетями:
Из домена маршрутизации протокола RIPv2 в домен маршрутизации протокола OSPFv2 необходимо передать информацию только о сетях:

  • 10.1.0.0
  • 10.2.0.0
  • 10.3.0.0

Из домена маршрутизации протокола OSPFv2 в домен маршрутизации протокола RIPv2 необходимо передать информацию только о сетях:

  • 10.8.0.0
  • 10.9.0.0
  • 10.10.0.0
  • 10.11.0.0

Рисунок 2. Сеть используемая для демонстрации управление перераспределением с помощью листов префиксов
Листы префиксов, как метод управления процессом обмена маршрутными обновлениями
Маршрутизатор R2 обладает следующей конфигурацией:

router ospf 1
network 10.0.0.8 0.0.0.0 area 0
redistribute rip route-map intoOSPF subnets
router rip
network 10.0.0.0
version 2
passive-interface s0/0/0
redistribute ospf 1 route-map intoRIP metric 5
route-map intoOSPF permit 10
match ip address prefix-list PFX1
route-map intoRIP permit 10
match ip address prefix-list PFX2
ip prefix-list PFX1 permit 10.0.0.0/14
ip prefix-list PFX2 permit 10.8.0.0/14

Маршрутная карта intoOSPF использует лист префиксов PFX1. Таким образом, к перераспределению из RIP в OSPF будут разрешены все сети, входящие в диапазон 10.0.0.0/14 – от 10.0.0.0 до 10.3.0.0, остальные сети будут запрещены данным листом префиксов и не будут перераспределены.
Маршрутная карта intoRIP использует лист префиксов PFX2. Таким образом, к перераспределению из OSPFв RIP будут разрешены все сети, входящие в диапазон 10.8.0.0/14 – от 10.8.0.0 до 10.11.0.0, остальные сети будут запрещены данным листом префиксов и не будут перераспределены.
Обратите внимание на то, что решение о том, будут ли определенные маршруты перераспределены или нет, основывается только на действии permit или deny команды route-map, а не на действии permit или deny команды ip prefix-list. Действие permit или deny команды ip prefix-list влияет только на то, подойдет ли данный маршрут под условие маршрутной карты или нет.
В сетях с резервными путями, использование листов префиксов позволяет исключить возможность возникновения маршрутных петель. Но при этом, как и листы распределения, листы префиксов позволяют полностью фильтровать некоторые маршруты из маршрутных обновлений. Таким образом, некоторые маршрутизаторы в сети не будут знать об альтернативных путях достижения некоторых сетей, поэтому использовать эти технологии в сетях с резервными путями следует с осторожностью.

7. Проверка листов префиксов


Основные команды, применяемые для проверки и диагностики листов префиксов, приведены в таблице 2. Используйте справку ip prefix-list ? для получения полной информации о доступных параметрах и их назначении.

Таблица 2 Команды для проверки и диагностики листов префиксов

Параметр                                 Описание
show ip prefix-list [detail|summary] Отображение информации обо всех листах префиксов. Использование параметра detail отображает описание и счетчики для каждой записи в листе префиксов
show ip prefix-list [detail|summary] prefix-list-name Отображение записей указанного листа префиксов
show ip prefix-list prefix-listname [network/length] Отображение политики, определенной в данном листе префиксов для указанной пары сеть/маска
show ip prefix-list prefix-listname [seq sequence-number] Отображение записи с указанным номером данного листа префиксов
show ip prefix-list prefix-listname [network/length] longer Отображение всех записей листа префиксов, подходящих и более точных чем указанная пара сеть/маска
show ip prefix-list prefix-listname [network/length] firstmatch Отображение первой подходящей под указанную пару сеть/маска записи листа префиксов
clear ip prefix-list prefix-listname [network/length] Сброс всех счетчиков для данного листа префиксов

Ниже приведен пример, демонстрирующий вывод результатов работы команды show ip prefix-list detail. На маршрутизаторе создан один лист префиксов с именем «superonly» с одной записью, обладающей номером 5. Значение «hit count:0» означает что пока еще не было ни одного соответствия для данной записи.

Вывод команды show ip prefix-list detail:

ROUTER#show ip prefix-list detail
Prefix-list with the last deletion/insertion: superonly ip prefix-list superonly:
Description: only permit supernet
count: 1, range entries: 0, sequences: 5 - 5, refcount: 1
seq 5 permit 172.0.0.0/8 (hit count: 0, refcount: 1)

Автор: IDEAcademy

Источник

Поделиться

* - обязательные к заполнению поля