Рассмотрим сценарии использования редистрибуции маршрутов из OSPF VRF lite в BGP VPNv4.
В качестве примера разберем схему на рисунке 1.
Рисунок 1 — Тестовая схема
На рисунке 1 изображено следующее оборудование:
R1, R2 — PE (Provider Edge) маршрутизаторы.
R3, R4 — RR (Route Reflectors) маршрутизаторы.
CE — Customer Edge router, граничный маршрутизатор клиента и присоединенная к нему сеть 10.0.1.0/24.
На CE устройстве мы настраиваем редистрибуцию подключенных сетей в OSPF VRF Test и указываем формирование типа маршрута External Type 2.
Пример настройки OSPF на CE:
! interface vlan 10 ip vrf Test ip address 10.0.1.1 255.255.255.0 exit ! router ospf 1 vrf Test network 10.11.0.0 area 0.0.0.0 network 10.11.0.2 area 0.0.0.0 network 10.11.15.12 area 0.0.0.0 router-id 10.11.15.12 redistribute connected metric-type type-2 subnets exit
CE рассылает маршрутную информацию своим соседям, а именно маршрутизатору R1 и R2.
Настройка OSPF на маршрутизаторе R1(на R2 аналогично):
outer ospfv2 Test vrf Test area 0.0.0.0 interface loopback 10 passive exit interface tengigabitethernet 0/0/1.100 network point-to-point exit exit redistribution bgp 64500 < ======== редистрибуция в BGP priority 20 exit router-id 10.0.1.12 exit exit
Маршрутизаторы получив маршруты от CE импортируют их в BGP, и отдают роут рефлекторам R3(RR) и R4(RR), как показано на рисунок 2.
Рисунок 2 — Распространение маршрутной информации BGP
Далее маршрутизаторы R3(RR) и R4(RR) отражают полученные маршруты на маршрутизаторы R2 и R1 соответственно. Таким образом на маршрутизаторах R1 и R2 присутствует по два одинаковых маршрута, один получен по BGP, другой по OSPF.
Проверяем на R1 полученные маршруты по BGP от R3 и R4:
0/ME5100:R1# show bgp vpnv4 unicast rd 10.0.1.13:100 prefix 10.0.1.0/24 Fri Mar 17 18:17:34 2023 BGP router identifier 10.0.1.12, local AS number 65500 BGP routing table entry for 10.0.1.0/24 Path #0 AS path: RD 10.0.1.13:100, 10.0.1.13 from 10.0.1.1 (10.0.1.1), Source VRF: Test Received Label: 16 Origin incomplete, metric 21, local-pref 100, weight 0, not-tracked, internal, best Address family: ipv4/vpn NLRI pathID: 0 Aggregator AS: 0, Address: 0.0.0.0, Atomic aggregate: absent Extended Community: RT 65200:10 (0.0.0.10), ospf-route-type area 0.0.0.0router-type:0x05, metric-type:E2E1 Cluster List: 1.1.1.1 Originator ID: 10.0.1.13 Is not stale, is not history Route flap penalty: 0, flap count 0, is not suppressed Route flap time left: 00:00:00, time start: never Route is not ECMP Path #1 AS path: RD 10.0.1.13:100, 10.0.1.13 from 10.0.1.2 (10.0.1.2), Source VRF: Test Received Label: 16 Origin incomplete, metric 21, local-pref 100, weight 0, not-tracked, internal Address family: ipv4/vpn NLRI pathID: 0 Aggregator AS: 0, Address: 0.0.0.0, Atomic aggregate: absent Extended Community: RT 65200:10 (0.0.0.10), ospf-route-type area 0.0.0.0router-type:0x05, metric-type:E2E1 Cluster List: 1.1.1.1 Originator ID: 10.0.1.13 Is not stale, is not history Route flap penalty: 0, flap count 0, is not suppressed Route flap time left: 00:00:00, time start: never Route is not ECMP Total entries: 2
по OSPF от CE:
0/ME5100:R1# show ospfv2 vrf Test database detailed external … LSA ID: 10.0.1.0 Router-id: 10.11.15.12 Age: 00:04:07 Seq#: 0x800002A1 Checksum: 0xede7 Type: external-lsa Options: E LSA type: AS external link Length: 36 Network Mask: 255.255.255.0 …
Смотрим какой маршрут был установлен в таблицу маршрутизации в VRF Test:
0/ME5100:R1# show route vrf Test 10.0.1.0/24 Fri Mar 17 18:48:59 2023 Routing entry for 10.0.1.0/24 Last update: 01w04d00h Routing Descriptor Blocks 10.0.1.13 Known via bgp, distance 200, metric 21 <=============================== type bgp-vpn, protection none, route-type remote Entries: 1
Проверяем на маршрутизаторе R2.
Маршрут по OSPF от CE:
0/ME5100:R2# show ospfv2 vrf Test database detailed external ... LSA ID: 10.0.1.0 Router-id: 10.11.15.12 Age: 00:07:15 Seq#: 0x800002A1 Checksum: 0xede7 Type: external-lsa Options: E LSA type: AS external link Length: 36 Network Mask: 255.255.255.0 …
Смотрим какой маршрут был установлен в таблицу маршрутизации в VRF Test:
0/ME5100:R2# show route vrf Test 10.0.1.0/24 Fri Mar 17 18:41:00 2023 Routing entry for 10.0.1.0/24 Last update: 02w00d01h Routing Descriptor Blocks 10.11.0.2, via te0/0/12.12 Known via ospf, distance 110, metric 20 <=============================== type ospf-type2-external, protection none, route-type remote Entries: 1
Таким образом мы видим следующее: маршрутизатор R1 установил маршрут, полученный по BGP, а R2 маршрут, полученный по OSPF, в результате получаем неоптимальный маршрут.
На рисунке 3 показан пример прохождения трафика от сетей подключенных к R1 и R2 до CE.
Рисунок 3 — Направление движения трафика
Что произошло?
Маршрутизатор R1 получил маршрут по BGP, который оказался лучшим, и был установлен в таблицу маршрутизации vrf Test. Далее маршрутизатор R1 перестал распространять маршрутную информацию по правилу split horizon, и маршрутизатор R2 установил единственный маршрут, полученный по OSPF.
Почему маршрутизатор R1 выбрал маршрут полученный по BGP?
Во первых, в случае использования комбинации OSPF в VRF и BGP VPNv4 сравнение будет выполнятся по опции "vpn-pe-ce-support" (RFC 4577). То есть сравнение будет происходит по метрике, без учета AD (Administrative Distance) протокола.
В момент редистрибуции BGP унаследовал часть параметров OSPF маршрута , которые были записаны в Extended Communities attributes, один из данных параметров является MED (Multiexit Discriminator attribute), в который мигрировало значение метрики (cost ).
Во вторых, не смотря на то, что метрика BGP маршрута больше, по умолчанию у маршрута полученного по BGP, параметр MED не учитывается и при сравнении берется значение 0, в результате маршрут полученный по OSPF отбрасывается.
Для решения данной проблемы необходимо изменить дефолтное поведение маршрутизатора и учитывать параметр веса (MED). Это делается командой “metric-conversion same“. Также необходимо заметить, что по RFC 4577 к параметру веса прибавляется единица. Команду: “metric-conversion same“, мы прописываем на маршрутизаторах R1 и R2.
Пример конфигурации на R1:
router ospfv2 Test vrf Test redistribution bgp 65500 metric-conversion same <=============== exit exit exit
Таким образом, параметр веса будет учитываться и маршрут, полученный по OSPF, окажется более приоритетным, так как вес маршрута полученного по BGP будет на единицу больше.
Проверяем маршрут до 10.0.1.0/24 на маршрутизаторе R1:
0/ME5100:R1# show route vrf Test 10.0.1.0/24 Fri Mar 17 19:27:24 2023 Routing entry for 10.0.1.0/24 Last update: 00h00m49s Routing Descriptor Blocks 10.11.0.0, via te0/0/12.11 Known via ospf, distance 110, metric 20 <======= type ospf-type2-external, protection none, route-type remote
На маршрутизаторе R2:
0/ME5100:R2# show route vrf Test 10.0.1.0/24 Fri Mar 17 19:29:38 2023 Routing entry for 10.0.1.0/24 Last update: 02w00d02h Routing Descriptor Blocks 10.11.0.2, via te0/0/12.12 Known via ospf, distance 110, metric 20 <======= type ospf-type2-external, protection none, route-type remote
Тем самым мы избавимся от неоптимального маршрута, и линк между R1 и CE будет задействован: рисунок 4.
Рисунок 4 — Направление движения трафика после изменения поведения маршрутизаторов.
Ниже, для иллюстрации, приведены дампы пакетов.
LSU OSPF пакет от CE в сторону маршрутизатора R1:
Frame 2: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) Ethernet II, Src: EltexEnt_10:ab:00 (e4:5a:d4:10:ab:00), Dst: IPv4mcast_05 (01:00:5e:00:00:05) Internet Protocol Version 4, Src: 10.11.0.0, Dst: 224.0.0.5 Open Shortest Path First OSPF Header LS Update Packet Number of LSAs: 1 LSA-type 5 (AS-External-LSA (ASBR)), len 36 .000 1110 0001 0000 = LS Age (seconds): 3600 0... .... .... .... = Do Not Age Flag: 0 Options: 0x02, (E) External Routing LS Type: AS-External-LSA (ASBR) (5) Link State ID: 10.0.1.0 Advertising Router: 10.11.15.12 Sequence Number: 0x8000033c Checksum: 0xb584 Length: 36 Netmask: 255.255.255.0 1... .... = External Type: Type 2 (metric is larger than any other link state path) .000 0000 = TOS: 0 Metric: 20 <======================== Forwarding Address: 0.0.0.0 External Route Tag: 0
В данном пакете передается метрика 20.
BGP Update отправленный с маршрутизатора R2 в сторону R4(RR):
Frame 119: 598 bytes on wire (4784 bits), 598 bytes captured (4784 bits) Ethernet II, Src: EltexEnt_de:01:e7 (e4:5a:d4:de:01:e7), Dst: EltexEnt_5b:2e:27 (e4:5a:d4:5b:2e:27) Internet Protocol Version 4, Src: 10.0.1.13, Dst: 10.0.1.2 Transmission Control Protocol, Src Port: 42498, Dst Port: 179, Seq: 150, Ack: 175, Len: 532 Border Gateway Protocol - UPDATE Message Marker: ffffffffffffffffffffffffffffffff Length: 99 Type: UPDATE Message (2) Withdrawn Routes Length: 0 Total Path Attribute Length: 76 Path attributes Path Attribute - ORIGIN: INCOMPLETE Flags: 0x40, Transitive, Well-known, Complete Type Code: ORIGIN (1) Length: 1 Origin: INCOMPLETE (2) Path Attribute - AS_PATH: empty Flags: 0x40, Transitive, Well-known, Complete Type Code: AS_PATH (2) Length: 0 Path Attribute - MULTI_EXIT_DISC: 21 Flags: 0x80, Optional, Non-transitive, Complete Type Code: MULTI_EXIT_DISC (4) Length: 4 Multiple exit discriminator: 21 <============================ Path Attribute - LOCAL_PREF: 100 Flags: 0x40, Transitive, Well-known, Complete Type Code: LOCAL_PREF (5) Length: 4 Local preference: 100 Path Attribute - EXTENDED_COMMUNITIES Flags: 0xc0, Optional, Transitive, Complete Type Code: EXTENDED_COMMUNITIES (16) Length: 16 Carried extended communities: (2 communities) Route Target: 65200:10 [Transitive 2-Octet AS-Specific] Type: Transitive 2-Octet AS-Specific (0x00) Subtype (AS2): Route Target (0x02) 2-Octet AS: 65200 4-Octet AN: 10 OSPF Route Type: Area: 0.0.0.0, Type: External [Transitive Opaque] Type: Transitive Opaque (0x03) Subtype (Opaque): OSPF Route Type (0x06) Area ID: 0.0.0.0 Route type: External (5) Options: 0x01 (Metric: Type-2) Path Attribute - MP_REACH_NLRI Flags: 0x90, Optional, Extended-Length, Non-transitive, Complete Type Code: MP_REACH_NLRI (14) Length: 32 Address family identifier (AFI): IPv4 (1) Subsequent address family identifier (SAFI): Labeled VPN Unicast (128) Next hop: RD=0:0 IPv4=10.0.1.13 Number of Subnetwork points of attachment (SNPA): 0 Network Layer Reachability Information (NLRI) BGP Prefix Prefix Length: 112 Label Stack: 16 (bottom) Route Distinguisher: 10.0.1.13:100 MP Reach NLRI IPv4 prefix: 10.0.1.0 <===================
В данном пакете передается метрика 21.