Pull to refresh

Управления процессом обмена маршрутными обновлениями с помощью списков префиксов (prefix-list)

Reading time 11 min
Views 44K

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


Для управления обменом маршрутной информацией, ее приемом, отправкой или перераспределением, в Cisco IOS можно использовать различные методы фильтрации маршрутных обновлений, такие как списки распределения (distribute-list) и списки префиксов (prefix-list).
Использование списков распределения обладает определенными недостатками, такими как:
  • ACL (Access-List, списки управления доступом), используемые в спискахраспределения, изначально разрабатывались для фильтрации пакетов, а не для фильтрации маршрутов
  • Невозможность определения совпадения маски маршрута при использовании стандартных ACL
  • Использование расширенных 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)
Tags:
Hubs:
+8
Comments 22
Comments Comments 22

Articles