Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Настройка политик маршрутизации Route-map
Якорь
Настройка политик маршрутизации Route-map
Настройка политик маршрутизации Route-map

Route-map - это механизм, позволяющий применять условия (условные фильтры) и действия к маршрутам и ,соответственно, к трафику. Он используется для фильтрации, изменения и управления атрибутами протокола BGP, обеспечивая расширенные возможности по сравнению с Prefix-list.   Подробная логика работы описана в  разделе разделе Политика фильтрации маршрутной информации.

Функциональные возможности Route-map позволяют работать со следующими атрибутами:

...

ШагОписаниеКомандаКлючи
1Создать маршрутную карту для фильтрации и модификации
IP-маршрутов.
esr(config)# route-map <NAME><NAME> – имя маршрутной карты, задается строкой до 31 символа.
2Создать правило маршрутной карты.esr(config-route-map)# rule <ORDER>

<ORDER> – номер правила, принимает значения [1 .. 10000].

3Указать действие, которое должно быть применено для маршрутной информации.esr(config-route-map-rule)# action <ACT>

<ACT> – назначаемое действие:

  • permit – прием или анонсирование маршрутной информации разрешено;
  • deny – запрещено.
4Задать значение атрибута BGP AS-Path в маршруте, для которого должно срабатывать правило
(необязательно).
esr(config-route-map-rule)# match as-path  { [begin | contain | end ] <AS-PATH> | empty | regex <REGEX> }

<AS-PATH> – список номеров автономных систем, задается в виде AS,AS,AS, принимает значения [1..4294967295]. Опциональные параметры:

<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.

  • begin – значение атрибута начинается с указанных номеров AS;
  • contain – значение атрибута содержит указанные номера AS;
  • empty – значение атрибута пусто;
  • end – значение атрибута заканчивается указанными номерами AS;
  • regex – значение атрибута соответствует регулярному выражению.
5

Задать значение атрибута BGP Community, для которого должно срабатывать правило (необязательно).

esr(config-route-map-rule)# match community  { <COMMUNITY-LIST> | regex <REGEX> }

<COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, принимает значения [1..4294967295]. Можно указать до 64 community.

  • regex – значение атрибута соответствует регулярному выражению.

<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.

6

Задать значение атрибута BGP Extended Community, для которого должно срабатывать правило (необязательно).

esr(config-route-map-rule)# match extcommunity  { <EXTCOMMUNITY-LIST> | regex <REGEX> }

<EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где

KIND – тип extcommunity:

  • rt (Route Target);
  • ro (Route Origin).

N – номер extcommunity, принимает значения [1..65535].

  • regex – значение атрибута соответствует регулярному выражению.

<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.

7

Задать профиль IP-адресов, содержащий значения подсетей назначения в маршруте (необязательно).

esr(config-route-map-rule)# match ip address  object-group <OBJ-GROUP-NETWORK-NAME>


<OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задаётся строкой до 31 символа.

esr(config-route-map-rule)# match ipv6 address  object-group <OBJ-GROUP-NETWORK-NAME>

8

 Задать профиль IP-адресов, содержащий значения атрибута BGP Next-Hop в маршруте для которого должно срабатывать правило (необязательно).


 esr esr(config-route-map-rule)# match ip bgp next-hop  object-group <OBJ-GROUP-NETWORK-NAME>


<OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа.

esr(config-route-map-rule)# match ipv6 bgp next-hop  object-group <OBJ-GROUP-NETWORK-NAME> NAME> 

9

Задать профиль, содержащий IP-адреса маршрутизатора, анонсировавшего маршрут, для которого должно срабатывать правило (необязательно).

 

esr(config-route-map-rule)# match ip route-source  object-group <OBJ-GROUP-NETWORK-NAME>


<OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа.

esr(config-route-map-rule)# match ipv6 route-source  object-group <OBJ-GROUP-NETWORK-NAME>

10

Задать ACL-группу, для которой должно срабатывать правило (необязательно).

esr(config-route-map-rule)# match access-group <NAME>

<NAME> – имя списка контроля доступа, задается строкой до 31 символа.

11

Задать значение атрибута BGP MED в маршруте для которого должно срабатывать правило (необязательно).

esr(config-route-map-rule)# match metric bgp <METRIC>

<METRIC> – значение атрибута BGPMED, принимает значения [0..4294967295].

12

Задать значение атрибута BGP AS-Path, которое будет добавляться в начало списка AS-Path (необязательно).

esr(config-route-map-rule)# action set as-path
prepend <AS-PATH> {track <TRACK-ID>}

<AS-PATH> – список номеров автономных систем, который будет добавлен к текущему значению в маршруте. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295].

<TCACK-ID> – идентификатор vrrp-tracking, при котором будет исполняться указанное действие. Изменяется в диапазоне [1..60].

13Заменять номер или последовательность номеров AS в атрибуте BGP AS-Path на номер локальной AS (необязательно).

esr(config-route-map-rule)# action set as-path
 replace { any | <AS-PATH> }

<AS-PATH> – список номеров автономных систем, который будет заменён на локальный номер AS. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295].

  • any – заменять любой номер AS.
14

Задать значение атрибута BGP Community, которое будет установлено в маршруте (необязательно).

esr(config-route-map-rule)# action set community  {COMMUNITY-LIST> | no-advertise | no-export }

<COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, где каждая часть принимает значения [1..65535];

  • no - advertise – маршруты, передаваемые с данным community, не должны анонсироваться другим BGP-соседям;
  • no - export – маршруты, передаваемые с таким community, не должны анонсироваться eBGP-соседям, но анонсируются внешним соседям в конфедерации.
15

Задать значение атрибута BGP ExtCommunity, которое будет установлено в маршруте (необязательно).

esr(config-route-map-rule)# action set extcommunity  <EXTCOMMUNITY-LIST>

<EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где

KIND – тип extcommunity:

  • rt (Route Target);
  • ro (Route Origin).

N – номер extcommunity, принимает значения [1..65535].

16

Задать атрибут BGP Next-Hop, который будет установлен в маршруте при анонсировании (необязательно).


esr(config-route-map-rule)# action set ip bgp-next-hop <ADDR>

<ADDR> – IP-адрес шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

esr(config-route-map-rule)# action set ipv6 bgp-next-hop <IPV6-ADDR>

<IPV6-ADDR> – IPv6-адрес шлюза, задается в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF].

17

Задать значение атрибута BGP Local Preference, который будет установлен в маршруте (необязательно).

esr(config-route-map-rule)# action set local-preference <PREFERENCE>

<PREFERENCE> – значение атрибута BGP Local Preference, принимает значения [0..255].

18

Задать значение атрибута BGP Origin, которое будет установлено в маршруте (необязательно).

esr(config-route-map-rule)# action set origin <ORIGIN>

<ORIGIN> – значение атрибута BGP Origin:

  • egp – маршрут выучен по протоколу EGP;
  • igp – маршрут получен внутри исходной AS;
  • incomplete – маршрут выучен другим образом.

 

19

Задать значение BGP MED, которое будет установлено в маршруте
(необязательно).

esr(config-route-map-rule)# action set metric bgp <METRIC>

<METRIC> – значение атрибута BGP MED, принимает значения [0..4294967295].

20

Добавить фильтрацию и модификацию маршрутов во входящих или исходящих направлениях.


esr(config-bgp-neighbor)# route-map <NAME><DIRECTION>

<NAME> – имя сконфигурированной маршрутной карты;

<DIRECTION> – направление:

  • in – фильтрация и модификация получаемых маршрутов;
  • out – фильтрация и модификация анонсируемых маршрутов.

 

esr(config-ipv6-bgp-neighbor)# route-map <NAME><DIRECTION>

Пример настройки 1

Задача:

Назначить сommunity для маршрутной информации, приходящей из AS 64498.

Cхема:

Image Modified

Базовая конфигурация:

...

Если AS PATH содержит AS 64497, то назначаем ему сommunity 64497:100,   выходим и применяем конфигурацию:

...

Блок кода
titleESR1
ESR1# sh ip route-map set_community 
Order:                                      1
Description:                                --
Matching pattern:
    Access group                                --
    AS path                                     contains 64497
    Community                                   --
    Extcommunity                                --
    BGP local-preference:                       --
    BGP metric (MED):                           --
    BGP weight:                                 --
    Address (object-group):                     --
    Next hop (object-group):                    --
    Route source (object-group):                --
    RIP metric                                  --
    RIP tag                                     --
    OSPF metric type                            --
    OSPF metric                                 --
    OSPF tag                                    --
Actions:
    Decision:                                   Permit
    Route next hop:                             --
    Route IPv6 next hop:                        --
    IP address:                                 --
    IPv6 address:                               --
    AS path (prepand):                          --
    Community:                                  64497:100
    Extcommunity:                               --
    Local preference:                           --
    BGP next hop address:                       --
    BGP IPv6 next hop address:                  --
    BGP metric (MED):                           --
    BGP weight:                                 --
    Origin:                                     --
    RIP metric                                  --
    RIP tag                                     --
    OSPF metric type                            --
    OSPF metric                                 --
    OSPF tag                                    --
--------------------------------------------------------------------------------

В контексте настройки  настройки BGP-инстанса заходим в настройки параметров соседа:

...

Пример настройки 2

Задача:

Для всей полученнной полученной маршрутной информации (с community 64497:100) от ESR2 установить следующие BGP-атрибуты:

  • MED - 240;
  • Origin - EGP.

Схема:

Image Modified

Базовая конфигурация:

AUI Tab Group
responsivetrue
ESR1ESR1


ESR2ESR2



Решение:

Для решение решения задачи настройка будет производиться на ESR1. Первым шагом создаем политику:

...

Блок кода
titleESR1
ESR1# sh ip route-map community_in 
Order:                                      1
Description:                                --
Matching pattern:
    Access group                                --
    AS path                                     --
    Community                                   64497:100
    Extcommunity                                --
    BGP local-preference:                       --
    BGP metric (MED):                           --
    BGP weight:                                 --
    Address (object-group):                     --
    Next hop (object-group):                    --
    Route source (object-group):                --
    RIP metric                                  --
    RIP tag                                     --
    OSPF metric type                            --
    OSPF metric                                 --
    OSPF tag                                    --
Actions:
    Decision:                                   Permit
    Route next hop:                             --
    Route IPv6 next hop:                        --
    IP address:                                 --
    IPv6 address:                               --
    AS path (prepand):                          --
    Community:                                  --
    Extcommunity:                               --
    Local preference:                           --
    BGP next hop address:                       --
    BGP IPv6 next hop address:                  --
    BGP metric (MED):                           set 240
    BGP weight:                                 --
    Origin:                                     EGP
    RIP metric                                  --
    RIP tag                                     --
    OSPF metric type                            --
    OSPF metric                                 --
    OSPF tag                                    --
--------------------------------------------------------------------------------

В констексте контексте настройки BGP-инстанса заходим в настройки параметров соседа:

...

Начиная с версии 1.23 доступно использование регулярных выражений в Route-map для контроля распространения маршрутной информации по протоколу BGP. Контроль можно производить по трём атрибутам BGP: AS-path, community, extcommunity. Синтаксис регулярных выражений соответствует стандарту POSIX ERE. В таблице ниже представлены некоторые примеры регулярных выражений.

Условие совпаденияРегулярное выражение
Маршруты с любым содержимым AS-path.*
Маршруты с пустым AS-path^$
Маршруты с одной любой AS в AS-path^[0-9]+$
Маршруты с двумя любыми AS в AS-path^[0-9]+ [0-9]+$
Маршруты, зарождённые в AS 15(^|.* )15$
Маршруты, полученные из AS 20^20( .*|$)
Маршруты, проходящие через AS 22.* 22 .*
Маршруты, проходящие через AS 30, а затем через AS 22.* 22 30 .*
Маршруты, проходящие через AS 30 или AS 43.* (30|43) .*
Маршруты, зарождённые в AS 66 и проходящие через AS 60.* 60 (.* )*66$
Маршруты, зарождённые в AS 70 или проходящие через неё.* 70( .*|$)
Маршруты, содержащие приватные AS в AS-path(^|.* )((6451[2-9])|(645[2-9][0-9])|(64[6-9][0-9]{2})|(65[0-4][0-9]{2})|(655[0-2][0-9])|(6553[0-4]))( .*|$)
Номер AS 100, номер community 200^100:200$
Номера AS 112 или 232, любой номер community^(112|232):[0-9]*$
Номер AS 277, номер community начинается с 3^277:3[0-9]*$
Любой номер AS, номер community в диапазоне 150-1230

^([0-9]*):((1[5-9][0-9])|([2-9][0-9]{2})|(1[0-2][0-2][0-9])|(1230))$

Тип route target, IP-адрес 10.10.10.1, номер extcommunity 653 и 654^rt:10\.10\.10\.1:65[34]$

...

ШагОписаниеКомандаКлючи
1Создать маршрутную карту для фильтрации и модификации
IP-маршрутов.
esr(config)# route-map <NAME><NAME> – имя маршрутной карты, задается строкой до 31 символа.
2Создать правило маршрутной карты.esr(config-route-map)# rule <ORDER>

<ORDER> – номер правила, принимает значения [1 .. 10000].

3Указать действие, которое должно быть применено для маршрутной информации.esr(config-route-map-rule)# action <ACT>

<ACT> – назначаемое действие:

  • permit – прием или анонсирование маршрутной информации разрешено;
  • deny – запрещено.
4Задать значение BGP AS-Path, Community,Extended Community  в маршруте, для которого должно срабатывать правило
(необязательно).
esr(config-route-map-rule)# match as-path  { [begin | contain | end ] <AS-PATH> | empty | regex <REGEX> }

  regex – значение атрибута соответствует регулярному выражению.

<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.


esr(config-route-map-rule)# match community  { <COMMUNITY-LIST> | regex <REGEX> }
esr(config-route-map-rule)# match extcommunity  { <EXTCOMMUNITY-LIST> | regex <REGEX> }
5Описать  дополнительные условия для выбора и действие ( см. раздел Настройка политик маршрутизации Route-map). 


6Применить созданный Route-map в контекcте настройки BGP peer, peer-group, address-family. esr(config-bgp-neighbor)# route-map <NAME><DIRECTION>

<NAME> – имя сконфигурированной маршрутной карты;

  • in – фильтрация и модификация получаемых маршрутов;
  • out – фильтрация и модификация анонсируемых маршрутов.
 esr(config-ipv6-bgp-neighbor)# route-map <NAME><DIRECTION>
Пример настройки

Задача:

Запретить прием маршрутной информации по BGP,   содержащей в атрибуите атрибуте AS-path номер AS 64500.

Cхема:

Image Modified

Базовая конфигурация:

...

Первым шагом необходимо создать Route-map на ESR1, в котором с помощью регулярных выражений опишем интересующий AS-path.   В случае совпадение совпадения укажем - запретить:

Блок кода
titleESR1
route-map AS
  rule 1
    match as-path regex '(64500)'
    action deny
  exit
  rule 2
  exit
exit

...

Блок кода
titleESR1
ESR1(config)# router bgp 64498 
ESR1(config-bgp)# neighbor 198.51.100.2 
ESR1(config-bgp-neighbor)# address-family ipv4 unicast 
ESR1(config-bgp-neighbor-af)# route-map AS in 
ESR1(config-bgp-neighbor-af)# do com
ESR1(config-bgp-neighbor-af)# do conf

Проверим, что BGP RIB не содержить содержит маршрут, содержащий в котором AS-path 64500:

Блок кода
titleESR1
ESR1# sh bgp ipv4 unicast 
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
              * - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete

     Network              Next Hop             Metric  LocPrf      Weight Path        
*> u 192.0.2.1/32         198.51.100.2         --      100         0      64497 i

...

Policy-Based Routing (PBR) это механизм маршрутизации, который позволяет принимать решения о форвардинге трафика на основе заданных политик, а не основываясь на таблицу  таблице маршрутизации. В отличие от традиционной маршрутизации, которая опирается исключительно на наилучший путь по метрике (например, кратчайший маршрут), PBR предоставляет администраторам гибкий инструмент для управления трафиком с учётом дополнительных параметров: источника трафика, типа протокола, VLAN, уровня приоритета и других.

...

BFD (Bidirectional Forwarding Detection) это протокол, работающий поверх других протоколов и позволяющий сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т. е. требует настройки обоих маршрутизаторов (оба маршрутизатора генерируют BFD-пакеты и отвечают друг другу).

По умолчанию сессия устанавливается в следующем режиме:

ПротоколРежим
iBGPmulti-hop
eBGPsingle-hop
eBGP multi-hopmulti-hop
OSPFsingle-hop
IS-ISsingle-hop
Static routesingle-hop
RIPsingle-hop

...

Блок кода
ESR(config)# ip bfd min-tx-interval 1000
ESR(config)# ip bfd min-rx-interval 1000
ESR(config)# do commmit

ESR# sh ip bfd 
Minimum RX interval: 1000 ms
Minimum TX interval: 1000 ms
Idle TX interval:    1000 ms
Multiplier:          5 packets
Passive:             No

После того как BFD-сессия установлена, каждая сторона индивидуально вычисляет свои Tx Interval и Detection Interval. Tx Interval выбирается как наибольшее значение из локального Tx Interval и удаленного RX Interval. Detection Interval вычисляется по следующей формуле: Detection Interval = remoteMultiplier * MAX( RxLocal || TxRemote), где remoteMultiplier – значение Multiplier удаленной стороны, RxLocal – локальный Tx Interval, TxRemote – Tx Interval удаленной стороны.

Локально настроенные таймеры, таймеры удаленной стороны, а также вычисленные таймеры можно посмотреть следующим образом:

Блок кода
esr-200# sh bfd neighbors 10.100.0.2
Neighbor address:                   10.100.0.2
Local address:                      10.100.0.1
Interface:                          --
Remote discriminator:               3751534121
Local discriminator:                1670865501
State:                              Up
Session type:                       Control
Session mode:                       Multi-hop
Local diagnostic code:              No Diagnostic
Remote diagnostic code:             No Diagnostic
Minimal Tx Interval:                300 ms       <----  Локальный  Tx Interval 
Minimal Rx Interval:                300 ms       <----  Локальный  Rx Interval 
Multiplier:                         5            <----  Локальный  Multiplier 
Actual Tx Interval:                 300 ms       <----  Вычисленный Tx Interval 
Actual Detection Interval:          1500 ms      <----  Вычисленный Detection Interval
Number of transmitted packets:      21781
Number of received packets:         21804
Uptime:                             1d21h54m
Client:                             BGP 
Last received packet:
    Desired Min Tx Interval:        300 ms       <----
    Required Min Rx Interval:       300 ms       <----    Таймеры удаленной стороны
    Multiplier:                     5            <----

...

Для установки BFD-сессии на R2  R2 также необходимо настроить соседа:

...