Pull to refresh

Policy-based Routing (PBR), как основное назначение (Часть 1)

Cisco *
Что такое Policy-based Routing (PBR)
Policy-based routing (PBR) перевод данного словосочетания несет смысл такого характера, как маршрутизация на основе определенных политик (правил, условий), которые являются относительно гибкими и устанавливаются Администратором. Другими словами это технология предоставляет условия гибкой маршрутизации (если смотреть на технологию с первоочередной ее задачи), по источнику или назначению пакета.
Где применяется
Применение данной технологии очень часто используется для организации избыточности в небольших офисах, при нескольких каналах связи с «вешним миром», «гуглится» примерно таким запросом (PBR 2 ISP). Ну, или другими аналогичными. Если вы «погуглите» то для избыточности нужно будет помимо PBR еще такие штуки как Tracking, SLA, на них я сильно внимание не буду заострять, как сейчас так и в дальнейшей части статьи.


Кратко про SLA и tracking — это две технологии, точнее связка двух технологий (в нашем случае), которые генерируют различного рода icmp трафик (при заданных условиях), это я про SLA, и выполняют мониторинг данного генератора, а это про tracking.

Так же PBR находит применение в настройках динамических протоколах маршрутизации (к примеру BGP; OSPF;EIGRP)для фильтрации и redistributions (перенаправления) роутов ну и мелочей типа изменение метрики маршрутов и т.п., и в статической маршрутизации (раскроется ниже), В построение механизмов улучшение качества сервисов (QoS). Возможно, что-то забыл, уж не обессудьте. В дальнейшем, в статье, я не буду раскрывать тему применения PBR в BGP, QoS, OSPF.
Основы конструкции
Собственно карта выглядит таким образом:
Route-map namemap permit 5
match int fa0/0
set ip default next-hop 10.10.10.1

Разберем по порядку:
Первая строка (route-map namemap [permit | deny] [sequence-number]) содержит непосредственно команду которая открывает нашу карту (route -map), далее идет имя карты (namemap), для дальнейшего применение к политике этой карты затем идет permit (так как мы хотим, что бы трафик при выполнении условии описанных ниже выполнял действие). Т.е. идет перенаправление пакетов на шлюз 10.10.10.1. Вместо параметра permit может выступать параметр deny, но он не так часто применяется. В большей степени он применяется только при redistributions (перенаправления), в динамических протоколах маршрутизации, а если быть точнее, наоборот, при deny не производить redistributions (перенаправления). Для нижеуказанного условия карты, последним параметром идет sequence-number он у нас 5 т.е. порядковый номер карты, он удобен для логического представления карт с одним и тем же именем. Так же для удобства администрирования карты (удаления в частности).

Вторая строка (match interface fa0/0), содержит условие, для какого трафика применять нашу карту. В нашем случае, у нас будет применяться весь трафик проходящий через интерфейс маршрутизатора fastethernet0/0. Тут можно по различным критериям делать выборку, как правило, все рисуют карту по access-lists (листам доступа) т.е. рисуют access-list с параметрами для каких сетей применять карту. Примеры access-lists с легким комментарием представлены ниже.
access-list 101 permit ip 192.168.0.0 0.0.0.255 any
### этот access-list примененный к route-maps будет выбирать трафик сети 192.168.0.0/24
до любого назначения.
А при применении такого access-lists
access-list 101 deny ip 192.168.0.0 0.0.0.255 host 192.168.2.44
access-list 101 deny ip 192.168.0.0 0.0.0.255 192.168.1.0 0.0.0.31
access-list 101 permit ip 192.168.0.0 0.0.0.255 any
### в первой строчке не будет перенаправлять трафик до хоста 192.168.2.44
### по второй строке так же не будет перенаправлять на сеть 192.168.1.0/27
### ну и по третьей строке будет применять для всего остального трафика, сети 192.168.0.0/24.


Так же добавить хочется что параметр match повторяющийся, т.е. выборку можно делать по нескольким критериям. К примеру метим по access-lists, и параллельно по размеру пакета match length min max, где min max это диапазон размера пакета от и до). И еще маленькое дополнение к этому параметру он не является обязательным. Другими словами если не делать выборку по критериям, то карта будет применяться ко всем пакетам, проходящим через интерфейс на который мы применим нашу карту маршрутизации.

Переходя к следующему параметру, скажу, что если вы выполните подкоманду set ? то помощь, вам покажет много значений, в основном эти значения направлены на опять же динамические протоколы маршрутизации. На данный момент я решил их не касаться (я планирую написать статьи про динамическую маршрутизацию, там и вернемся к ним). А перейдем сразу к set ip

Мы взяли в пример set ip default next-hop 10.10.10.1
Тут мы опять же рассмотрим ключевое слово default, оно означает, что если не будет роутов в глобальной таблице маршрутизации информации о сети назначения пакета, то будет отрабатывать наша карта и пакет будет отправлен на следующий шаг в данном случае 10.10.10.1.
Можно написать явный set ip next-hop 10.10.10.1 и тогда пакет в не зависимости от глобальной таблицы будет перенаправлен на наш next-hop, т.е. пакет попавший в критерий что он пришел на интерфейс fa0/0, отправится на 10.10.10.1 и он уже будет решать что с этим пакетом делать.

Далее рассматривая параметр set ip, можно задать следующий шагом(next-hop) как определенный ip адрес, для последующей маршрутизации, так непосредственно интерфейс. К примеру set ip next-hop interface Dialer1), это удобно когда у вас, к примеру не статический адрес на next-hop-е, а динамический и вы не можете явно прописать адрес 3-го уровня, ну или если вы забыли какой ip адрес у вас на интерфейсе и вам лень посмотреть. Как было подмечено ниже в комментариях, не стоит указывать интерфейсы, на которых прописана сеть с большим количеством хостов в сети, другими словами использовать стоит при point to point сети (с префиксов 30 ).Другие параметры set ip, используются для изменения параметров ip пакета. Установка маркирования приоритета пакета в QoS(set ip precedence 3), или сброса параметра пакета don’t fragments (set ip df 0), что позволит установить размер пакета, какой нужен маршрутизаторам для дальнейшей передачи по каналам связи.
Остается мелочь повесить route-map на интерфейс через который приходят пакеты нуждающиеся в перенаправлении пакетов в отличие от дефолтного маршрута глобальной таблицы маршрутизации. И получится такой листинг
Route-map namemap permit 5
match int fa0/0
set ip default next-hop 10.10.10.1

interface FastEthernet0/0
encapsulation dot1Q 20
ip address 192.168.0.1 255.255.255.0
ip policy route-map namemap


Прошу заметить, что данная конфигурация не совсем правильная в нашем случае, хотя рабочая. Тут сами подумайте, чем она не корректна, и какие условия нужно изменить.

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

UPD вот собственно и попытка продолжения часть 2

Материал для статьи брался из головы, так что литературу указать не смогу, разве что www.

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

Posted by Mario
Tags:
Hubs:
Total votes 31: ↑25 and ↓6 +19
Views 92K
Comments Comments 55