Что такое Police-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, EIGRP.
Основы конструкции
Собственно карта выглядит таким образом:
Route-map namemap permit 5
match int fa0/0
set ip default next-hop 10.10.10.1
Разберем по порядку:
Первая строка (route-map mapname [permit | deny] [sequence-number]) содержит непосредственно команду которая открывает нашу карту (route -map), далее идет имя карты (namemap), для дальнейшего применение к политике этой карты затем идет permit (так как мы хотим что бы трафик при выполнении условии описанных ниже выполнял действие т.е. перенаправлялся на шлюз 10.10.10.1), вместо параметра permit может выступать параметр deny но он не так часто применяется, в большей степени он применяется только при redistributions (перенаправления) в динамических протоколах маршрутизации, а если быть точнее наоборот не производить redistributions (перенаправления) для нижеуказанного условия карты, последним параметром идет sequence-number он у нас 5 т.е. порядковый номер карты, он удобен для логического представления карт с одним и тем же именем, так же для удобства администрирования карты (удаления в частности).
Вторая строка (match interface fa0/0) содержит условие для какого трафика применять нашу карту, в данном случае у нас будет применяться весь трафик проходящий через интерфейс роутера fastethernet0/0. Тут можно по различным критериям делать выборку, как правило, все рисуют карту по access-lists (листам доступа) т.е. рисуют access-list с параметрами для каких сетей применять карту. Примеры access-lists с легким комментарием сделал в сером виде, кому не интересно пропускайте.
Так же добавить хочется что параметр 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, скажу близкое к нашей тематике что можно в аналогичном порядке задать следующий шагом как дефолтным так и явным непосредственно интерфейс (к примеру set ip next-hop interface Dialer1), это удобно когда у вас к примеру не статический адрес на next-hop-е, а динамический и вы не можете явно прописать адрес 3-го уровня, ну или если вы забыли какой ip адрес у вас на интерфейсе и вам лень посмотреть. Другие параметры set ip, используются для изменения параметров ip пакета. Установка маркирования приоритета пакета в QoS(set ip precedence 3), или сброса параметра пакета don’t fragments (set ip df 0), что позволит установить размер пакета, какой нужен маршрутизаторам для дальнейшей передачи по каналам связи.
Остается мелочь повесить route-map на интерфес через которые проходят пакеты нуждающиеся для перенаправления пакетов в отличии от дефолтного маршрута глобальной таблицы маршрутизации. И получится такой листинг:
Прошу заметить что данная конфигурация не совсем правильная в нашем случае хотя рабочая. Тут сами подумайте, чем она не корректна и какие условия нужно изменить.
Послесловие:
В этой части я попытался раскрыть азы PBR и как он работает с пакетами. Если у меня это получилось не внятно прошу указать на ошибки. Буду очень признателен. Остальной текс послесловия я убрал, так как есть шанс не попасть в песочницу, так что скажу кратко дальше больше.
Материал для статьи брался из головы, так что литературу указать не смогу, разве что www.
Posted by Mario
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, EIGRP.
Основы конструкции
Собственно карта выглядит таким образом:
Route-map namemap permit 5
match int fa0/0
set ip default next-hop 10.10.10.1
Разберем по порядку:
Первая строка (route-map mapname [permit | deny] [sequence-number]) содержит непосредственно команду которая открывает нашу карту (route -map), далее идет имя карты (namemap), для дальнейшего применение к политике этой карты затем идет permit (так как мы хотим что бы трафик при выполнении условии описанных ниже выполнял действие т.е. перенаправлялся на шлюз 10.10.10.1), вместо параметра permit может выступать параметр deny но он не так часто применяется, в большей степени он применяется только при redistributions (перенаправления) в динамических протоколах маршрутизации, а если быть точнее наоборот не производить 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.177.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, скажу близкое к нашей тематике что можно в аналогичном порядке задать следующий шагом как дефолтным так и явным непосредственно интерфейс (к примеру set ip next-hop interface Dialer1), это удобно когда у вас к примеру не статический адрес на next-hop-е, а динамический и вы не можете явно прописать адрес 3-го уровня, ну или если вы забыли какой ip адрес у вас на интерфейсе и вам лень посмотреть. Другие параметры 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 и как он работает с пакетами. Если у меня это получилось не внятно прошу указать на ошибки. Буду очень признателен. Остальной текс послесловия я убрал, так как есть шанс не попасть в песочницу, так что скажу кратко дальше больше.
Материал для статьи брался из головы, так что литературу указать не смогу, разве что www.
Posted by Mario