Dynamisch routeren zonder dynamische protocollen OSPF of BGP

Dynamisch routeren zonder dynamische protocollen OSPF of BGP

Dynamische routing is onmisbaar in IT infrastructuren, maar het implementeren van dynamische routeringsprotocollen zoals OSPF of BGP kan voor een simpel netwerk als overweldigend of onnodig worden gezien. Er zijn echter ook mogelijkheden welke de basisfunctionaliteiten van dynamic routing geven zonder dat er BGP of OSPF aan te pas hoeft te komen. Het BFD protocol (Bidirectional forward detection protocol) wordt in OSPF en BGP netwerken gebruikt om snel te detecteren of een verbinding tussen twee routers in twee richtingen functioneel is. Zo niet, dan wordt de BGP of OSPF neighbour sneller op “down” gezet dan dat het protocol dit zelf herkent. Het BFD protocol kan daarentegen ook gebruikt worden in combinatie met statische routering, wat in kleine implementaties zeer behulpzaam kan zijn om snel te kunnen schakelen tussen meerdere mogelijke links/routes.

Normaliter worden statische routes alleen uit de route tabel gehaald als de desbetreffende interface van de route down is: oftewel, de interface moet fysiek of administratief down zijn om de route uit de routetabel te halen. Op een directe link is dit geen probleem, maar op een indirecte link (waar er zich infrastructuur zich tussen de routers bevindt) kan dit een probleem zijn waarbij een route geïnstalleerd blijft ondanks dat de volgende router niet meer bereikbaar is.

Dit artikel is geschreven met configuratie zoals gedaan op Juniper QFX/MX/EX/SRX routers en Arista EOS, maar dit is ook toe te passen op vele andere router/firewall merken.

Er is in dit document vanuit gegaan dat primair 1 pad gebruikt wordt, en dat het tweede pad als alternatief beschikbaar is. Deze oplossing kan ook toegepast worden in Equal Cost Multi Path (ECMP) wanneer de metric configuratie niet toegepast wordt op de backup route en de desbetreffende router ECMP configuratie ingesteld heeft staan.

Juniper/HPE Junos Opstelling

Dynamische routering zonder OSPF of BGP
Juniper/HPE Junos Configuratie

RT1 configuratie:

set interfaces ge-0/0/1 unit 0 family inet address 10.0.1.1/24
set interfaces ge-0/0/2 unit 0 family inet address 10.0.2.1/24
set interfaces lo0 unit 0 family inet address 10.0.0.1/32
set routing-options static route 10.0.0.2/32 next-hop 10.0.1.2
set routing-options static route 10.0.0.2/32 qualified-next-hop 10.0.2.2 metric 10
set routing-options static route 10.0.0.2/32 bfd-liveness-detection minimum-interval 100
set routing-options static route 10.0.0.2/32 bfd-liveness-detection multiplier 4

 

RT2 configuratie:

set interfaces ge-0/0/1 unit 0 family inet address 10.0.1.2/24
set interfaces ge-0/0/2 unit 0 family inet address 10.0.2.2/24
set interfaces lo0 unit 0 family inet address 10.0.0.2/32
set routing-options static route 10.0.0.1/32 next-hop 10.0.1.1
set routing-options static route 10.0.0.1/32 qualified-next-hop 10.0.2.1 metric 10
set routing-options static route 10.0.0.1/32 bfd-liveness-detection minimum-interval 100
set routing-options static route 10.0.0.1/32 bfd-liveness-detection multiplier 4

Juniper/HPE Junos Detail Configuratie

Stap voor stap gaan we door de configuratie:

set interfaces ge-0/0/1 unit 0 family inet address 10.0.1.1/24
set interfaces ge-0/0/2 unit 0 family inet address 10.0.2.1/24
set interfaces lo0 unit 0 family inet address 10.0.0.1/32

We starten met de standaard interface configuratie. Interface ge-0/0/1 en interface ge-0/0/2 hebben ieder een eigen broadcast domain en IP reeks en gebruiken deze om met de andere router te verbinden. Op iedere router staat een Loopback adres welke we willen bereiken vanaf de andere router.

set routing-options static route 10.0.0.2/32 next-hop 10.0.1.2
set routing-options static route 10.0.0.2/32 qualified-next-hop 10.0.2.2 metric 10

Dit gedeelte is de statische route naar de loopback van de andere router. Daarbij willen we primair de route over ge-0/0/1 gebruiken en de route over ge-0/0/2 gebruiken als backup mocht de route over ge-0/0/1 niet beschikbaar zijn. Middels qualified-next-hop en Metric geven we aan dat deze route een “backup” route is.

set routing-options static route 10.0.0.2/32 bfd-liveness-detection minimum-interval 100
set routing-options static route 10.0.0.2/32 bfd-liveness-detection multiplier 4

Met deze configuratie wordt BFD aangezet op de desbetreffende route. BFD zal automatisch voor de geconfigureerde next-hop routers een BFD sessie initiëren.

Met minimum-interval wordt bepaald hoeveel milliseconden tussen elk BFD pakket moet zitten, en met multiplier wordt aangegeven hoeveel pakketten er “gemist” moeten worden voordat BFD de link als Down ziet.

Met de bovenstaande configuratie betekent het dat de BFD de link als tussen 400 en 500 milliseconden nadat het laatste pakket ontvangen is.

Juniper/HPE Junos Resultaten

Op de routers zien de routetabellen er als volgt uit:

solidbe@RT01# run show route

inet.0: 8 destinations, 9 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.1/32        *[Direct/0] 00:50:58
                    >  via lo0.0
10.0.0.2/32        *[Static/5] 00:06:03 <<<----
                    >  to 10.0.1.2 via ge-0/0/1.0 <<<----
                    [Static/5] 00:09:30, metric 10
                    >  to 10.0.2.2 via ge-0/0/2.0
(snip)
solidbe@RT02# run show route

inet.0: 8 destinations, 9 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.1/32        *[Static/5] 00:22:26 <<<----
                    >  to 10.0.1.1 via ge-0/0/1.0 <<<----
                    [Static/5] 00:26:01, metric 10
                    >  to 10.0.2.1 via ge-0/0/2.0
10.0.0.2/32        *[Direct/0] 01:07:10
                    >  via lo0.0
(snip)

! Met <<<—- geef ik aan de voorkeursroute over ge-0/0/1. Aan de * kunnen we zien welke route nu actief is.

We kunnen ook de BFD gegevens opvragen en de status in zien:

solidbe@RT01# run show bfd session
                                                  Detect   Transmit
Address                  State     Interface      Time     Interval  Multiplier
10.0.1.2                 Up        ge-0/0/1.0     0.400     0.100        4
10.0.2.2                 Up        ge-0/0/2.0     0.400     0.100        4

2 sessions, 2 clients
Cumulative transmit rate 20.0 pps, cumulative receive rate 20.0 pps
solidbe@RT02# run show bfd session
                                                  Detect   Transmit
Address                  State     Interface      Time     Interval  Multiplier
10.0.1.1                 Up        ge-0/0/1.0     0.400     0.100        4
10.0.2.1                 Up        ge-0/0/2.0     0.400     0.100        4

2 sessions, 2 clients
Cumulative transmit rate 20.0 pps, cumulative receive rate 20.0 pps

Nu gaan we een probleemsituatie veroorzaken d.m.v. een “onjuist” vlan wijziging op de tussenliggende switch. Daarbij blijven de links op, maar kunnen de routers niet meer met elkaar communiceren. De onderstaande poort wordt van VLAN 1 naar VLAN 2 geconfigureerd:

run show bfd session

Er komen direct wijzigingen in de route tabel, de route via ge-0/0/1.0 is verdwenen uit de route tabel, en de statische route wordt nu over ge-0/0/2 uitgevoerd:

solidbe@RT01# run show route

inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.1/32        *[Direct/0] 01:12:56
                    >  via lo0.0
10.0.0.2/32        *[Static/5] 00:31:28, metric 10 <<<----
                    >  to 10.0.2.2 via ge-0/0/2.0 <<<----
(snip)
solidbe@RT02# run show route

inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.1/32        *[Static/5] 00:31:48, metric 10 <<<----
                    >  to 10.0.2.1 via ge-0/0/2.0 <<<----
10.0.0.2/32        *[Direct/0] 01:12:57
                    >  via lo0.0
(snip)

In de BFD sessie overzicht zien we dat deze route weggevallen is omdat de BFD sessie niet meer functioneel is op ge-0/0/1

solidbe@RT01# run show bfd session
                                                  Detect   Transmit
Address                  State     Interface      Time     Interval  Multiplier
10.0.1.2                 Init      ge-0/0/1.0     8.000     2.000        4 <<<----
10.0.2.2                 Up        ge-0/0/2.0     0.400     0.100        4

2 sessions, 2 clients
Cumulative transmit rate 10.5 pps, cumulative receive rate 10.5 pps
solidbe@RT02# run show bfd session
                                                  Detect   Transmit
Address                  State     Interface      Time     Interval  Multiplier
10.0.1.1                 Down      ge-0/0/1.0     0.400     2.000        4 <<<----
10.0.2.1                 Up        ge-0/0/2.0     0.400     0.100        4

2 sessions, 2 clients
Cumulative transmit rate 10.5 pps, cumulative receive rate 20.0 pps

Wanneer de configuratie fout hersteld wordt op de switch, wordt de route hersteld op ge-0/0/1

solidbe@RT01# run show route

inet.0: 8 destinations, 9 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.1/32        *[Direct/0] 01:22:40
                    >  via lo0.0
10.0.0.2/32        *[Static/5] 00:01:44 <<<----
                    >  to 10.0.1.2 via ge-0/0/1.0 <<<----
                    [Static/5] 00:41:12, metric 10
                    >  to 10.0.2.2 via ge-0/0/2.0

Arista EOS Opstelling

Arista EOS Opstelling

Arista EOS Configuratie

RT01 configuratie:

interface Ethernet1
   no switchport
   ip address 10.0.1.1/24
!
interface Ethernet2
   no switchport
   ip address 10.0.2.1/24
!
interface Loopback0
   ip address 10.0.0.1/32
!
ip routing
!
ip route 10.0.0.2/32 10.0.1.2 track bfd
ip route 10.0.0.2/32 10.0.2.2 track bfd metric 10
!
router bfd
   interval 100 min-rx 100 multiplier 4 default
!

 

RT02 configuratie:

interface Ethernet1
   no switchport
   ip address 10.0.1.2/24
!
interface Ethernet2
   no switchport
   ip address 10.0.2.2/24
!
interface Loopback0
   ip address 10.0.0.2/32
!
ip routing
!
ip route 10.0.0.1/32 10.0.1.1 track bfd
ip route 10.0.0.1/32 10.0.2.1 track bfd metric 10
!
router bfd
   interval 100 min-rx 100 multiplier 4 default
!

Arista EOS Detail configuratie

Stap voor stap gaan we door de configuratie:

interface Ethernet1
   no switchport
   ip address 10.0.1.1/24
!
interface Ethernet2
   no switchport
   ip address 10.0.2.1/24
!
interface Loopback0
   ip address 10.0.0.1/32
!

We starten met de standaard interface configuratie. Interface 1 en interface 2 hebben ieder een eigen broadcast domain en IP reeks en gebruiken deze om met de andere router te verbinden. Op iedere router staat een Loopback adres welke we willen bereiken vanaf de andere router.

ip routing
!
ip route 10.0.0.1/32 10.0.1.1 track bfd
ip route 10.0.0.1/32 10.0.2.1 track bfd metric 10
!

Dit gedeelte is de statische route naar de loopback van de andere router. Daarbij willen we primair de route over Ethernet 1 gebruiken en de route over Ethernet 2 gebruiken als backup mocht de route over Ethernet 1 niet beschikbaar zijn. Op beide routes wordt BFD tracking aangezet en middels Metric geven we aan dat deze route een “backup” route is.

router bfd
   interval 100 min-rx 100 multiplier 4 default
!

Dit gedeelte wordt gebruikt om timings aan te passen. Met minimum-interval wordt bepaald hoeveel milliseconden tussen elk BFD pakket moet zitten, en met multiplier wordt aangegeven hoeveel pakketten er “gemist” moeten worden voordat BFD de link als Down ziet.

Met de bovenstaande configuratie betekent het dat de BFD de link als tussen 400 en 500 milliseconden nadat het laatste pakket ontvangen is.

Arista EOS Resultaten

RT01(config)#show ip route

Gateway of last resort is not set

 C        10.0.0.1/32
           directly connected, Loopback0
 S        10.0.0.2/32 [1/0] <<<----
           via 10.0.1.2, Ethernet1 <<<----
 C        10.0.1.0/24
           directly connected, Ethernet1
 C        10.0.2.0/24
           directly connected, Ethernet2
RT02(config)#show ip route

Gateway of last resort is not set

 S        10.0.0.1/32 [1/0] <<<----
           via 10.0.1.1, Ethernet1 <<<----
 C        10.0.0.2/32
           directly connected, Loopback0
 C        10.0.1.0/24
           directly connected, Ethernet1
 C        10.0.2.0/24
           directly connected, Ethernet2

Met <<<—- geef ik aan de voorkeursroute over Ethernet 1. De Backup route is niet zichtbaar omdat deze zich (nog) niet in de routetabel bevindt.

We kunnen ook de BFD gegevens opvragen en de status in zien:

RT01(config)#show bfd peers
VRF name: default
-----------------
DstAddr               MyDisc         YourDisc       Interface/Transport         Type               LastUp       LastDown            LastDiag    State
-------------- ---------------- ---------------- ------------------------- ------------ -------------------- -------------- ------------------- -----
10.0.1.2          2208408764        869446214             Ethernet1(22)       normal       03/19/26 12:37             NA       No Diagnostic       Up
10.0.2.2           473511225       3299709112             Ethernet2(23)       normal       03/19/26 12:45             NA       No Diagnostic       Up

RT02(config)#show bfd peers
VRF name: default
-----------------
DstAddr               MyDisc         YourDisc       Interface/Transport         Type               LastUp       LastDown            LastDiag    State
-------------- ---------------- ---------------- ------------------------- ------------ -------------------- -------------- ------------------- -----
10.0.1.1           869446214       2208408764             Ethernet1(33)       normal       03/19/26 12:37             NA       No Diagnostic       Up
10.0.2.1          3299709112        473511225             Ethernet2(34)       normal       03/19/26 12:45             NA       No Diagnostic       Up

Nu gaan we een probleemsituatie veroorzaken d.m.v. een “onjuist” vlan wijziging op de tussenliggende switch. Daarbij blijven de links actief, maar kunnen de routers niet meer met elkaar communiceren. De onderstaande poort wordt van VLAN 1 naar VLAN 2 geconfigureerd:

Backup route

Er komen direct wijzigingen in de route tabel, de route via ethernet 1 is uit de route tabel verdwenen en de statische route via ethernet 2 is geactiveerd:

RT01(config)#show ip route

Gateway of last resort is not set

 C        10.0.0.1/32
           directly connected, Loopback0
 S        10.0.0.2/32 [1/10] <<<----
           via 10.0.2.2, Ethernet2 <<<----
 C        10.0.1.0/24
           directly connected, Ethernet1
 C        10.0.2.0/24
           directly connected, Ethernet2
RT02(config)#show ip route

Gateway of last resort is not set

 S        10.0.0.1/32 [1/10] <<<----
           via 10.0.2.1, Ethernet2 <<<----
 C        10.0.0.2/32
           directly connected, Loopback0
 C        10.0.1.0/24
           directly connected, Ethernet1
 C        10.0.2.0/24
           directly connected, Ethernet2
In de BFD sessies zien we dat deze route weggevallen is omdat de BFD sessie niet meer functioneel is op ethernet 1
RT01(config)#show bfd peers
VRF name: default
-----------------
DstAddr               MyDisc         YourDisc       Interface/Transport         Type               LastUp             LastDown              LastDiag    State
-------------- ---------------- ---------------- ------------------------- ------------ -------------------- -------------------- --------------------- -----
10.0.1.2          2208408764                0             Ethernet1(22)       normal       03/19/26 12:37       03/19/26 13:03       Detect Time Exp     Down
10.0.2.2           473511225       3299709112             Ethernet2(23)       normal       03/19/26 12:45                   NA         No Diagnostic       Up
RT02(config)#show bfd peers
VRF name: default
-----------------
DstAddr               MyDisc         YourDisc       Interface/Transport         Type               LastUp             LastDown            LastDiag    State
-------------- ---------------- ---------------- ------------------------- ------------ -------------------- -------------------- ------------------- -----
10.0.1.1           869446214       2208408764             Ethernet1(33)       normal       03/19/26 12:37       03/19/26 13:03       No Diagnostic     Init
10.0.2.1          3299709112        473511225             Ethernet2(34)       normal       03/19/26 12:45                   NA       No Diagnostic       Up

Wanneer de configuratie fout hersteld wordt op de switch, wordt de route hersteld op Ethernet 1

RT01(config)#show ip route

 C        10.0.0.1/32
           directly connected, Loopback0
 S        10.0.0.2/32 [1/0] <<<----
           via 10.0.1.2, Ethernet1 <<<----
 C        10.0.1.0/24
           directly connected, Ethernet1
 C        10.0.2.0/24
           directly connected, Ethernet2
RT02(config)#show ip route

Gateway of last resort is not set

 S        10.0.0.1/32 [1/0] <<<----
           via 10.0.1.1, Ethernet1 <<<----
 C        10.0.0.2/32
           directly connected, Loopback0
 C        10.0.1.0/24
           directly connected, Ethernet1
 C        10.0.2.0/24
           directly connected, Ethernet2

tot zover deze TechTalk

Vragen?

U kunt altijd contact met SolidBE opnemen mocht u een vraag hebben over een van de besproken onderwerpen (Arista, Juniper, TechTalk ) of wanneer u assistentie nodig heeft om netwerk- of security vraagstukken op te lossen. Wij helpen u graag bij de beheren van een veilige en solide ICT omgeving!

Auteur

Tom Scholten is Senior Network Engineer bij SolidBE

Scroll naar boven