5.6. Настройка PBR (Policy-Based Routing)

Назначение

PBR (маршрутизация на основе политик) предназначена для пересылки и маршрутизации пакетов в соответствии с заданными политиками.

Описание

PBR не входит в спецификации традиционных протоколов маршрутизации.

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

Настройка

Настройка PBR

Ниже показана настройка в соответствии с представленной сетевой конфигурацией.

image

Рис. 5.17 Конфигурация сети

После включения PBR на интерфейсе “eth-0-1” коммутатора “Switch1”, пакеты с узла 172.16.6.1 должны пересылаться на узел 172.16.4.2, а остальные пакеты должны пересылаться в соответствии с исходными маршрутами.

Ниже приведена настройка коммутатора “Switch1”.

Шаг 1: Вход в режим “Global config”

Switch# configure terminal

Шаг 2: Создание листа ACL с IP-адресом источника

Switch(config)# ip access-list acl1
Switch(config-ip-acl)# 10 permit any 172.16.6.0 0.0.0.255 any
Switch(config-ip-acl)# exit

Шаг 3: Создание и настройка политики маршрутизации

Создание политики маршрутизации, настройка совпадения с ACL, установка адреса nexthop:

Switch(config)# route-map rmap permit 10
Switch(config-route-map)# match ip address acl1
Switch(config-route-map)# set ip next-hop 172.16.4.2
Switch(config-route-map)# exit

Шаг 4: Настройка порта

Вход в режим конфигурации порта, настройка порта и применение политики маршрутизации

Switch(config)# interface eth-0-1
Switch(config-if)# no switchport
Switch(config-if)# ip address 172.16.5.2/24
Switch(config-if)# no shutdown
Switch(config-if)# ip policy route-map rmap
Switch(config-if)# exit

Шаг 5: Создание статического маршрута с адресом nexthop 172.16.4.3 (необязательно)

Подсказка

Для пересылки пакетов, не попавших в PBR, можно использовать статический маршрут или протоколы динамической маршрутизации такие как RIP или OSPF.

 Switch(config)# ip route 0.0.0.0/0 172.16.4.3

Шаг 6: Выход из режима “Global config”

Switch(config)# end

Шаг 6: Проверка

Switch# show ip policy route-map
Route-map                     interface 
rmap                          eth-0-1

Настройка связи PBR и BFD

Показана настройка коммутаторов “Switch1” - “Switch3” в соответствии с представленной конфигурацией сети.

image

Рис. 5.18 Конфигурация сети

Коммутатор “Switch2” будет пересылать пакеты на “eth-0-13” в соответствии с маршрутами PBR. После того, как порт “eth-0-13” коммутатора “Switch3” отключится, статусы сессий BFD будут отключены, затем отключится маршрут “track 1”, и PBR nexthop (4.1.1.2) станет недействительным. Трафик будет пересылаться на “eth-0-14”.

Шаг 1: Настройка коммутатора “Switch1”

Switch1(config-if)# interface eth-0-9
Switch1(config-if)# no shutdown
Switch1(config-if)# no switchport
Switch1(config-if)# ip address 2.1.1.1/24
Switch1(config-if)# quit
Switch1(config)# ip route 5.1.1.0/24 2.1.1.2
Switch1(config)# ip route 6.1.1.0/24 2.1.1.2

Шаг 2: Настройка коммутатора “Switch2”

Switch2# configure terminal
Switch2(config)# ip access-list acl1
Switch2(config-ip-acl)# 10 permit any host 2.1.1.1 any 
Switch2(config-ip-acl)# quit
Switch2(config)# route-map rmap permit 10
Switch2(config-route-map)# match ip address acl1
Switch2(config-route-map)# set ip next-hop 4.1.1.2 track 1
Switch2(config-route-map)# quit
Switch2(config)# interface eth-0-9
Switch2(config-if)# no shutdown
Switch2(config-if)# no switchport
Switch2(config-if)# ip address 2.1.1.2/24
Switch2(config-if)# ip policy route-map rmap
Switch2(config-if)# interface eth-0-13
Switch2(config-if)# no shutdown
Switch2(config-if)# no switchport
Switch2(config-if)# ip address 4.1.1.1/24
Switch2(config-if)# interface eth-0-14
Switch2(config-if)# no shutdown
Switch2(config-if)# no switchport
Switch2(config-if)# ip address 5.1.1.1/24
Switch2(config-if)# quit
Switch2(config)# track 1 bfd source interface eth-0-13 destination 4.1.1.2
Switch2(config-track)# quit
Switch2(config)# ip route 1.1.1.0/24 2.1.1.1
Switch2(config)# ip route 6.1.1.0/24 5.1.1.2

Шаг 3: Настройка коммутатора “Switch3”

Switch3# configure terminal
Switch3(config)# interface eth-0-1
Switch3(config-if)# no shutdown
Switch3(config-if)# no switchport
Switch3(config-if)# ip address 6.1.1.1/24
Switch3(config-if)# interface eth-0-13
Switch3(config-if)# no shutdown
Switch3(config-if)# no switchport
Switch3(config-if)# ip address 4.1.1.2/24
Switch3(config-if)# interface eth-0-14
Switch3(config-if)# no shutdown
Switch3(config-if)# no switchport
Switch3(config-if)# ip address 5.1.1.2/24
Switch3(config-if)# quit
Switch3(config)# track 1 bfd source interface eth-0-13 destination 4.1.1.1
Switch3(config-track)# quit
Switch3(config)# ip route 1.1.1.0/24 5.1.1.1
Switch3(config)# ip route 2.1.1.0/24 5.1.1.1

Шаг 4: Отправка ping-запросов на IP-адрес 6.1.1.1

На сбросить статистику пакетов на портах коммутатора “Switch2”:

Switch2# clear counters

Отправка ping-запросов на адрес 6.1.1.1 c коммутатора “Switch1”:

Switch1# ping -a 2.1.1.1 6.1.1.1
PING 6.1.1.1 (6.1.1.1) from 2.1.1.1 : 56(84) bytes of data.
64 bytes from 6.1.1.1: icmp_seq=1 ttl=63 time=1.56 ms
64 bytes from 6.1.1.1: icmp_seq=2 ttl=63 time=1.39 ms
64 bytes from 6.1.1.1: icmp_seq=3 ttl=63 time=1.38 ms
64 bytes from 6.1.1.1: icmp_seq=4 ttl=63 time=1.51 ms
64 bytes from 6.1.1.1: icmp_seq=5 ttl=63 time=1.34 ms

--- 6.1.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.343/1.440/1.563/0.096 ms

Коммутатор “Switch2” перешлет пакеты (ICMP запросы) через порт “eth-0-13”, но ответы получит на порт “eth-0-14”, что соответствует настроенному PBR (он настроен на “Switch2” и влияет только на пакеты, идущие от “Switch1” до “Switch3”):

Switch2# show interface eth-0-14
Interface eth-0-14
  Interface current state: UP
  Hardware is Ethernet, address is 0058.3f1c.fe85 (bia 0058.3f1c.fe85)
  Bandwidth 1000000 kbits
  Index 5 , Metric 1 , Encapsulation ARPA
  Speed - 1000Mb/s , Duplex - Full  , Media type is 1000BASE_T
  Last up time(UTC): 2024-10-30 07:16:19
  Last down time(UTC): 2024-10-30 07:15:42
  Current system time(UTC): 2024-10-30 07:48:49
  Link type is autonegotiation
  FEC config: DEFAULT
  FEC status: OFF
  Admin input flow-control is off, output flow-control is off
  Oper input flow-control is off, output flow-control is off
  The Maximum Frame Size is 9600 bytes
  The maximum transmit unit (MTU) is 1500 bytes
  VRF binding: not bound
  VRRP master of :  VRRP is not configured on this interface
  ARP timeout 01:00:00,  ARP retry interval 1s
  ARP Proxy is disabled, Local ARP Proxy is disabled
  Internet primary address:
    5.1.1.1/24 broadcast 5.1.1.255
    5 minute input rate 13 bits/sec, 0 packets/sec
    5 minute output rate 0 bits/sec, 0 packets/sec
    5 packets input, 610 bytes
    Received 5 unicast, 0 broadcast, 0 multicast
    0 runts, 0 giants, 0 input errors, 0 CRC
    0 frame, 0 overrun, 0 pause input
    0 packets output, 0 bytes
    Transmitted 0 unicast, 0 broadcast, 0 multicast
    0 underruns, 0 output errors, 0 pause output
    0 output discard

Шаг 5: Отключение порта “eth-0-13” коммутатора “Switch3”

Switch3# configure terminal
Switch3(config)# interface eth-0-13
Switch3(config-if)# shutdown

Шаг 6: Проверка

Switch3# show track
Track 1
    Type                : BFD state
    Source interface    : eth-0-13
    Destination IP      : 4.1.1.2
    BFD Local discr     : 8192
    rmap                : pref 10 track 1
    State               : down
Switch3# show bfd session 
Abbreviation: 
LD: Local Discriminator.  RD: Remote Discriminator
S: Single hop session.    M: Multi hop session.
SD: Static Discriminator.  DD: Dynamic Discriminator
SBFD: Seamless BFD
A: Admin down.    D:Down.    I:Init.    U:Up.
============================================================================
LD          RD          TYPE ST   UP-Time    Remote-Addr     Sbfd-Type VRF      
       
8192        0           S-DD A    00:00:00   4.1.1.2         None      default  
      
Number of Sessions:    1 

Сброс статистики пакетов на портах коммутатора “Switch2”:

Switch2# clear counters

Отправка ping-запросов на адрес 6.1.1.1 c коммутатора “Switch1”:

Switch1# ping -a 2.1.1.1 6.1.1.1
PING 6.1.1.1 (6.1.1.1) from 2.1.1.1 : 56(84) bytes of data.
64 bytes from 6.1.1.1: icmp_seq=1 ttl=63 time=1.56 ms
64 bytes from 6.1.1.1: icmp_seq=2 ttl=63 time=1.39 ms
64 bytes from 6.1.1.1: icmp_seq=3 ttl=63 time=1.38 ms
64 bytes from 6.1.1.1: icmp_seq=4 ttl=63 time=1.51 ms
64 bytes from 6.1.1.1: icmp_seq=5 ttl=63 time=1.34 ms

--- 6.1.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.343/1.440/1.563/0.096 ms

Коммутатор “Switch2” перешлет пакеты (ICMP запросы) через порт “eth-0-14”, и ответы получит также на порт “eth-0-14”, т.к. порт “eth-0-13” отключен и BFD-сессия оборвалась:

Switch2# show interface eth-0-14
Interface eth-0-14
  Interface current state: UP
  Hardware is Ethernet, address is 0058.3f1c.e099 (bia 0058.3f1c.e099)
  Description: DUT1
  Bandwidth 1000000 kbits
  Index 5 , Metric 1 , Encapsulation ARPA
  Speed - 1000Mb/s , Duplex - Full  , Media type is 1000BASE_T
  Last up time(UTC): 2024-10-30 07:17:23
  Last down time(UTC): 2024-10-30 07:16:47
  Current system time(UTC): 2024-10-30 08:07:29
  Link type is autonegotiation
  FEC config: DEFAULT
  FEC status: OFF
  Admin input flow-control is off, output flow-control is off
  Oper input flow-control is off, output flow-control is off
  The maximum frame size is 9600 bytes
  The maximum transmit unit (MTU) is 1500 bytes
  VRF binding: not bound
  VRRP master of :  VRRP is not configured on this interface
  ARP timeout 01:00:00,  ARP retry interval 1s
  ARP Proxy is disabled, Local ARP Proxy is disabled
  Internet primary address:
    5.1.1.2/24 broadcast 5.1.1.255
    5 minute input rate 13 bits/sec, 0 packets/sec
    5 minute output rate 13 bits/sec, 0 packets/sec
    5 packets input, 610 bytes
    Received 5 unicast, 0 broadcast, 0 multicast
    0 runts, 0 giants, 0 input errors, 0 CRC
    0 frame, 0 overrun, 0 pause input
    5 packets output, 610 bytes
    Transmitted 5 unicast, 0 broadcast, 0 multicast
    0 underruns, 0 output errors, 0 pause output
    0 output discard