Comprendre les coûts des routes OSPF (O, O IA, O E1/E2)

Hello les Boyzs !

Today, j’ai envie de partager avec vous un truc super important (bon, okay j’exagère peut être un peu) : les coûts des routes OSPF.

J’ai décidé d’aborder ce sujet pour 2 raisons :
  • Car c’est une chose un peu particulière qui fait partie de la base quand on étudie l’OSPF, mais qui n’est pas forcément très intuitive à première vue
  • Aussi parce qu’actuellement, je révise l’OSPF et que j’en profite donc pour être à l’aise avec cette partie

Dans cet article, on verra donc :
-le coût des routes Intra-Area (O)
-le coût des routes Inter-Area ( O IA)
-le coût des routes External (O E1/E2)

C’est parti !

1. Intra-Area routes cost

Petit récapitulatif à propos d’OSPF : pour calculer les coûts des différentes routes intra-area, un routeur va dans un premier temps, utiliser les LSAs contenus dans sa LSDB pour pouvoir créer son propre “SPF Tree” (qui est l’équivalent d’un schéma des routeurs OSPF présents dans l’area avec les interfaces appartenant à cette area). Un peu comme ce schéma suivant :

Grâce à cette vision topologique de l’area, le routeur va déterminer tous les chemins possibles pour joindre une destination. Il va ensuite calculer le coût de chacun des chemins puis sélectionner celui ayant le coût le plus faible et l’ajoutera dans sa table de routage. Jusque la, je ne vous apprends rien !
Pour effectuer son calcul de coût d’un chemin, le routeur va additionner l’ensemble des coûts des interfaces pour atteindre une destination donnée. Par défaut, le calcul de la métrique est 108 / bande passante de l’interface. Ce qui revient à des coûts d’interfaces correspondant :
  • Ethernet (10M) : 10
  • FastEthernet (100M) : 1
  • GigaEthernet (1000M) : 1
  • Loopback : 1
Revenons à notre schéma et prenons le point de vue de R3. Sa seule interface connectée à l’area 1 est eth 0/1 et son coût est de 10 :
R3#sh ip ospf interface ethernet 0/1
Ethernet0/1 is up, line protocol is up 
  Internet Address 10.133.0.3/24, Area 1, Attached via Network Statement
  Process ID 888, Router ID 3.3.3.3, Network Type BROADCAST, Cost: 10
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           10        no          no            Base
Voici les LSAs de type 1 que son voisin R13 lui envoie avec les métriques associées :
R3#sh ip ospf database router 13.13.13.13

            OSPF Router with ID (3.3.3.3) (Process ID 888)

                Router Link States (Area 1)

  LS age: 291
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 13.13.13.13
  Advertising Router: 13.13.13.13
  LS Seq Number: 8000000C
  Checksum: 0xFB07
  Length: 60
  Number of Links: 3

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.13.10
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.133.0.3
     (Link Data) Router Interface address: 10.133.0.13
      Number of MTID metrics: 0
       TOS 0 Metrics: 10
          
    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.131.0.1
     (Link Data) Router Interface address: 10.131.0.13
      Number of MTID metrics: 0
       TOS 0 Metrics: 10
Donc, pour joindre le réseau 13.13.13.10 (loopback 10 de R13), la métrique de cette route sera de 1 (coût de l’interface loop 10 de R13) + 10 (coût de l’interface de R3) soit 11. Vérification :
R3#sh ip route 13.13.13.10
Routing entry for 13.13.13.10/32
  Known via "ospf 888", distance 110, metric 11, type intra area
  Last update from 10.133.0.13 on Ethernet0/1, 06:16:04 ago
  Routing Descriptor Blocks:
  * 10.133.0.13, from 13.13.13.13, 06:16:04 ago, via Ethernet0/1
      Route metric is 11, traffic share count is 1
Dans la même idée, la métrique du réseau 10.131.0.0/24 située entre R13 et R1 sera donc de 10 (coût de l’interface de R13) + 10 (coût de l’interface de R3) soit 20. Vérification :
R3#sh ip route 10.131.0.0 
Routing entry for 10.131.0.0/24
  Known via "ospf 888", distance 110, metric 20, type intra area
  Last update from 10.133.0.13 on Ethernet0/1, 06:17:12 ago
  Routing Descriptor Blocks:
  * 10.133.0.13, from 1.1.1.1, 06:17:12 ago, via Ethernet0/1
      Route metric is 20, traffic share count is 1
Dans la même idée, on peut remonter à l’ABR (ici R2) qui a un coup de 10 + 10 + 10 soit 30. Vérification :
R3#sh ip ospf border-routers 

            OSPF Router with ID (3.3.3.3) (Process ID 888)


                Base Topology (MTID 0)

Internal Router Routing Table
Codes: i - Intra-area route, I - Inter-area route

I 4.4.4.4 [40] via 10.133.0.13, Ethernet0/1, ASBR, Area 1, SPF 13
i 2.2.2.2 [30] via 10.133.0.13, Ethernet0/1, ABR, Area 1, SPF 13
On peut voir le LSA généré par R2 contenant sa loopback (2.2.2.10) :
R3#sh ip ospf database router 2.2.2.2  

            OSPF Router with ID (3.3.3.3) (Process ID 888)

                Router Link States (Area 1)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 451
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 2.2.2.2
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000012
  Checksum: 0x6D0E
  Length: 60
  Area Border Router
  Number of Links: 3

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 2.2.2.10
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 1
La loopback de R2 (2.2.2.10) aura donc pour métrique 30 + 1 soit 31. Vérification :
R3#sh ip route 2.2.2.10
Routing entry for 2.2.2.10/32
  Known via "ospf 888", distance 110, metric 31, type intra area
  Last update from 10.133.0.13 on Ethernet0/1, 00:13:56 ago
  Routing Descriptor Blocks:
  * 10.133.0.13, from 2.2.2.2, 00:13:56 ago, via Ethernet0/1
      Route metric is 31, traffic share count is 1

2. Inter-Area routes cost

Maintenant que les choses sont claires pour les routes intra-area (O), passons aux routes inter-area (O IA). On se retrouve avec le schéma suivant (incluant les métriques) :

Pour les routes inter-area : il suffit d’additionner le coût de la route annoncée par l’ABR avec le coût vers l’ABR. Si on prend l’exemple de la loopback 10 de R12 (12.12.12.10), elle doit avoir une métrique de 30 (coût vers l’ABR) + 11 (coût annoncé par l’ABR) soit 41.

Coût vers l’ABR :
R3#sh ip ospf border-routers | i 2.2.2.2
i 2.2.2.2 [30] via 10.133.0.13, Ethernet0/1, ABR, Area 1, SPF 13
Coût annoncé par l’ABR :
R3#sh ip ospf database summary 12.12.12.10

            OSPF Router with ID (3.3.3.3) (Process ID 888)

                Summary Net Link States (Area 1)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 874
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 12.12.12.10 (summary Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0xA556
  Length: 28
  Network Mask: /32
        MTID: 0         Metric: 11
Coût total :
R3#sh ip route 12.12.12.10
Routing entry for 12.12.12.10/32
  Known via "ospf 888", distance 110, metric 41, type inter area
  Last update from 10.133.0.13 on Ethernet0/1, 00:14:23 ago
  Routing Descriptor Blocks:
  * 10.133.0.13, from 2.2.2.2, 00:14:23 ago, via Ethernet0/1
        Route metric is 41, traffic share count is 1
C’est plutôt simple 🙂

3. External routes cost

Enfin, nous voila au calcul des routes external. Si elles sont de type 2 (O E2 : type par défaut), leur coût sera toujours de 20 et ce, quel que soit le cumul des coûts traversés. Reprenons notre schéma :


Prenons la loopback 10 du routeur R4 (4.4.4.10), R3 reçoit bien le LSA type 5 avec un coût de 20) :

R3#sh ip ospf database external 4.4.4.10

            OSPF Router with ID (3.3.3.3) (Process ID 888)

                Type-5 AS External Link States

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 45
  Options: (No TOS-capability, DC, Upward)
  LS Type: AS External Link
  Link State ID: 4.4.4.10 (External Network Number )
  Advertising Router: 4.4.4.4
  LS Seq Number: 80000001
  Checksum: 0x7AFF
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        MTID: 0 
        Metric: 20 
        Forward Address: 0.0.0.0
        External Route Tag: 0
Cette métrique reste identique quand il met la route dans sa table de routage :
R3#sh ip route 4.4.4.10
Routing entry for 4.4.4.10/32
  Known via "ospf 888", distance 110, metric 20, type extern 2, forward metric 40
  Last update from 10.133.0.13 on Ethernet0/1, 00:00:09 ago
  Routing Descriptor Blocks:
  * 10.133.0.13, from 4.4.4.4, 00:00:09 ago, via Ethernet0/1
      Route metric is 20, traffic share count is 1
Par contre, si les routes externes sont de type 1 (O E1) la métrique va être modifiée. Pour l’exemple, j’ai reditribué les routes connectées sur R4 en leur mettant un métric-type à 1 et une métrique de base à 100 :
router ospf 888
 redistribute connected metric 100 metric-type 1 subnets
Voici le LSA (type 5) que R4 génère :
R4#sh ip ospf database external self-originate 

            OSPF Router with ID (4.4.4.4) (Process ID 888)

                Type-5 AS External Link States

  LS age: 171
  Options: (No TOS-capability, DC, Upward)
  LS Type: AS External Link
  Link State ID: 4.4.4.4 (External Network Number )
  Advertising Router: 4.4.4.4
  LS Seq Number: 8000000E
  Checksum: 0x3C67
  Length: 36
  Network Mask: /32
        Metric Type: 1 (Comparable directly to link state metric)
        MTID: 0 
        Metric: 100 
        Forward Address: 0.0.0.0
        External Route Tag: 0
R2 lui, voit R4 avec une métrique de 10 :
R2#sh ip ospf border-routers 

            OSPF Router with ID (2.2.2.2) (Process ID 888)


                Base Topology (MTID 0)

Internal Router Routing Table
Codes: i - Intra-area route, I - Inter-area route

i 4.4.4.4 [10] via 10.0.0.4, Ethernet0/0, ASBR, Area 0, SPF 13
Ce qui fait que R2 verra la loopback de R4 (4.4.4.10) avec un cumul de 10 + 100 soit 110 :
R2#sh ip route 4.4.4.10
Routing entry for 4.4.4.10/32
  Known via "ospf 888", distance 110, metric 110, type extern 1
  Last update from 10.0.0.4 on Ethernet0/0, 00:03:36 ago
  Routing Descriptor Blocks:
  * 10.0.0.4, from 4.4.4.4, 00:03:36 ago, via Ethernet0/0
      Route metric is 110, traffic share count is 1
Du point de vue de R3, c’est la même chose : il voit la loopback de R4 (4.4.4.10) avec la métrique de 100 :
R3#sh ip ospf database external 4.4.4.10

            OSPF Router with ID (3.3.3.3) (Process ID 888)

                Type-5 AS External Link States

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 276
  Options: (No TOS-capability, DC, Upward)
  LS Type: AS External Link
  Link State ID: 4.4.4.10 (External Network Number )
  Advertising Router: 4.4.4.4
  LS Seq Number: 80000003
  Checksum: 0x1692
  Length: 36
  Network Mask: /32
        Metric Type: 1 (Comparable directly to link state metric)
        MTID: 0
        Metric: 100
        Forward Address: 0.0.0.0
        External Route Tag: 0
A cette métrique, il ajoute le cout pour joindre l’ASBR (40) :
R3#sh ip ospf border-routers

            OSPF Router with ID (3.3.3.3) (Process ID 888)


                Base Topology (MTID 0)

Internal Router Routing Table
Codes: i - Intra-area route, I - Inter-area route

I 4.4.4.4 [40] via 10.133.0.13, Ethernet0/1, ASBR, Area 1, SPF 13
i 2.2.2.2 [30] via 10.133.0.13, Ethernet0/1, ABR, Area 1, SPF 13
En effet, il est de 40 car il met 30 pour rejoindre l’ABR (R2) et R2 mets 10 pour joindre l’ASBR (R4) :
R3#sh ip ospf database asbr-summary

            OSPF Router with ID (3.3.3.3) (Process ID 888)

                Summary ASB Link States (Area 1)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 1831
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(AS Boundary Router)
  Link State ID: 4.4.4.4 (AS Boundary Router address)
  Advertising Router: 2.2.2.2
  LS Seq Number: 8000000C
  Checksum: 0xD43A
  Length: 28
  Network Mask: /0
        MTID: 0         Metric: 10
Donc, le cumul total donne 40 + 100 soit 140 :
R3#sh ip route 4.4.4.10                 
Routing entry for 4.4.4.10/32
  Known via "ospf 888", distance 110, metric 140, type extern 1
  Last update from 10.133.0.13 on Ethernet0/1, 00:04:14 ago
  Routing Descriptor Blocks:
  * 10.133.0.13, from 4.4.4.4, 00:04:14 ago, via Ethernet0/1
      Route metric is 140, traffic share count is 1
Il existe une commande assez pratique pour voir les coûts des routes de manière rapide : sh ip ospf route.
R3#sh ip ospf route

            OSPF Router with ID (3.3.3.3) (Process ID 888)


                Base Topology (MTID 0)


    Area 1

    Intra-area Route List
*   10.133.0.0/24, Intra, cost 10, area 1, Connected
      via 10.133.0.3, Ethernet0/1
*>  10.131.0.0/24, Intra, cost 20, area 1
      via 10.133.0.13, Ethernet0/1
*>  10.12.0.0/24, Intra, cost 30, area 1
      via 10.133.0.13, Ethernet0/1
*>  2.2.2.10/32, Intra, cost 31, area 1
      via 10.133.0.13, Ethernet0/1
*>  13.13.13.10/32, Intra, cost 11, area 1
      via 10.133.0.13, Ethernet0/1

    Intra-area Router Path List
i 2.2.2.2 [30] via 10.133.0.13, Ethernet0/1, ABR, Area 1, SPF 13

    Inter-area Route List
*>  12.12.12.10/32, Inter, cost 41, area 1
      via 10.133.0.13, Ethernet0/1
*>  10.0.0.0/24, Inter, cost 40, area 1
      via 10.133.0.13, Ethernet0/1

    Inter-area Router Path List
I 4.4.4.4 [40] via 10.133.0.13, Ethernet0/1, ASBR, Area 1, SPF 13
          
    External Route List
*>  4.4.4.10/32, Ext1, cost 140, tag 0
      via 10.133.0.13, Ethernet0/1

Conclusion : On voit que la métrique des routes externes peut être influencée par rapport à l’endroit où on observe. La métrique du LSA de type 5 reste la même (peut importe l’endroit ou on observe le LSA), mais les routeurs prennent en compte le cumul des coûts vers l’ASBR.

Bon, je pense que ca fait assez pour un article, j’ai pas envie de vous décourager :-p

Dans le prochain article je poursuivrais sur ce sujet et on verra :
  • Comment améliorer la granularité pour le calcul des coût ?
  • Quels sont les différents moyens d’influencer le coût d’une route ?
Cya

One Reply to “Comprendre les coûts des routes OSPF (O, O IA, O E1/E2)”

Leave a Reply

Your email address will not be published. Required fields are marked *