Configuration de base des routeurs:
R1:
Ipv unica
!
interface Serial2/0
ipv6 address 13::1/64
ipv6 ospf 1 area 0
no shut
!
interface Serial2/1
ipv6 address 12::1/64
ipv6 ospf 1 area 2
no shut
!
ipv6 router ospf 1
router-id 0.0.0.1
R2:
Ipv unica
!
interface Serial2/0
ipv6 address 25::2/64
ipv6 ospf 1 area 2
no shut
!
interface Serial2/1
ipv6 address 12::2/64
ipv6 ospf 1 area 2
no shut
!
ipv6 router ospf 1
router-id 0.0.0.2
R3:
Ipv unica
!
interface Serial2/0
ipv6 address 13::3/64
ipv6 ospf 1 area 0
no shut
!
interface Serial2/1
ipv6 address 34::3/64
ipv6 ospf 1 area 1
no shut
!
ipv6 router ospf 1
router-id 0.0.0.3
R4:
Ipv unica
!
interface Serial2/0
ipv6 address 45::4/64
no shut
!
interface Serial2/1
ipv6 address 34::4/64
ipv6 ospf 1 area 1
no shut
!
ipv6 router ospf 1
router-id 0.0.0.4
redistribute connected route-map CONNECTED
!
route-map CONNECTED permit 10
match interface Serial2/0
R5:
Ipv unica
!
interface Serial2/0
ipv6 address 45::5/64
no shut
!
interface Serial2/1
ipv6 address 25::5/64
ipv6 ospf 1 area 2
no shut
!
ipv6 router ospf 1
router-id 0.0.0.5
redistribute connected route-map CONNECTED
!
route-map CONNECTED permit 10
match interface Serial2/0
Les routeurs R4 et R5 redistribuent le préfixe 45::/64 dans OSPF.
Vérifions la LSDB de R1.
Les ASBRs R4 et R5 annoncent deux LSAs Type-5 au routeur R1 pour le préfixe externe 45::/64, le Forward Address n’est pas défini, cela signifie que la valeur est mise à Zéro. Dans OSPFv2 le Forward Address lorsqu’il n’est pas défini, l’ASBR l’affiche avec l’adresse 0.0.0.0 dans le LSA Type-5. Dans OSPFv3 c’est différent, c’est l’absence de Forward Address qui signifie qu’il n’est pas défini.
Lorsque le Forward Address n’est pas défini, cela pousse le routeur OSPF qui reçoit le LSA Type-5 de chercher le meilleur chemin vers l’ASBR qui est à l’origine du LSA Type-5 afin de déterminer la meilleure route vers le préfixe externe 45::/64.
R1#sh ipv ospf database external
OSPFv3 Router with ID (0.0.0.1) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA
LS age: 128
LS Type: AS External Link
Link State ID: 0
Advertising Router: 0.0.0.4
LS Seq Number: 80000001
Checksum: 0x274C
Length: 36
Prefix Address: 45::
Prefix Length: 64, Options: None
Metric Type: 2 (Larger than any link state path)
Metric: 20
Routing Bit Set on this LSA
LS age: 109
LS Type: AS External Link
Link State ID: 0
Advertising Router: 0.0.0.5
LS Seq Number: 80000001
Checksum: 0x2151
Length: 36
Prefix Address: 45::
Prefix Length: 64, Options: None
Metric Type: 2 (Larger than any link state path)
Metric: 20
R1#
La commande show ipv osp bor affiche le meilleur coût vers chaque ASBR R4 et R5.
1-Le meilleur coût vers R5 0.0.0.5 est 128 via une route intra-area avec R2 comme next-hop.
2-Le meilleur coût vers R4 0.0.0.4 est 128 via une route inter-area avec R3 comme next-hop.
R1#sh ipv os bor
OSPFv3 Router with ID (0.0.0.1) (Process ID 1)
Codes: i – Intra-area route, I – Inter-area route
i 0.0.0.3 [64] via FE80::A8BB:CCFF:FE00:300, Serial2/0, ABR, Area 0, SPF 7
i 0.0.0.5 [128] via FE80::A8BB:CCFF:FE00:200, Serial2/1, ASBR, Area 2, SPF 8
I 0.0.0.4 [128] via FE80::A8BB:CCFF:FE00:300, Serial2/0, ASBR, Area 0, SPF 7
R1#
Du moment les routes pointent vers deux destinations différentes 0.0.0.4 et 0.0.0.5, R1 installe les routes externes OE2 avec équilibrage de charge à coût égal.
Note: Cisco IOS devices utilisent la RFC 1583 par défaut et dans la RFC 1583, le choix de route est basé uniquement sur le coût.
R1#sh ipv route | s 45::
OE2 45::/64 [110/20]
via FE80::A8BB:CCFF:FE00:300, Serial2/0
via FE80::A8BB:CCFF:FE00:200, Serial2/1
R1#
Analysons maintenant ce qui se passe au niveau du routeur R2.
Le LSA Type-5 lorsqu’il est injecté par un ASBR dans le domaine OSPF, il est inondé sur toutes les areas sans modification.
Par conséquent, le routeur R2 reçoit naturellement les mêmes LSAs Type-5 pour le préfixe externe 45::/64, annoncés par les ASBRs R4 et R5, comme le montre la commande sho ipv os data ext.
R2#sh ipv ospf data ext
OSPFv3 Router with ID (0.0.0.2) (Process ID 1)
Type-5 AS External Link States
LS age: 299
LS Type: AS External Link
Link State ID: 0
Advertising Router: 0.0.0.4
LS Seq Number: 80000001
Checksum: 0x274C
Length: 36
Prefix Address: 45::
Prefix Length: 64, Options: None
Metric Type: 2 (Larger than any link state path)
Metric: 20
Routing Bit Set on this LSA
LS age: 278
LS Type: AS External Link
Link State ID: 0
Advertising Router: 0.0.0.5
LS Seq Number: 80000001
Checksum: 0x2151
Length: 36
Prefix Address: 45::
Prefix Length: 64, Options: None
Metric Type: 2 (Larger than any link state path)
Metric: 20
R2#
Suivant la même logique vue auparavant pour le routeur R1, le routeur R2 cherchera la meilleur route vers l’ASBR car le Forward Address n’est pas défini.
1-Le meilleur coût vers R5 0.0.0.5 est 64 via une route intra-area avec R5 comme next-hop.
2-Le meilleur coût vers R4 0.0.0.4 est 192 via une route inter-area avec R1 comme next-hop.
R2#sh ipv os bord
OSPFv3 Router with ID (0.0.0.2) (Process ID 1)
Codes: i – Intra-area route, I – Inter-area route
i 0.0.0.1 [64] via FE80::A8BB:CCFF:FE00:100, Serial2/1, ABR, Area 2, SPF 4
I 0.0.0.4 [192] via FE80::A8BB:CCFF:FE00:100, Serial2/1, ASBR, Area 2, SPF 4
i 0.0.0.5 [64] via FE80::A8BB:CCFF:FE00:500, Serial2/0, ASBR, Area 2, SPF 4
R2#
Comme ça été mentionné précédemment pour le raisonnement fait par le routeur R1.
Du moment les routes pointent vers deux destinations différentes 0.0.0.4 et 0.0.0.5, R2 compare les coûts vers les ASBRs R4 et R5, comme le chemin via R5 avec le coût 92 est meilleur à celui à travers R4 192, R2 conclut que la meilleure route qui le mene vers le préfixe externe 45::/64 est à travers l’ASBR R5 comme le montre la table de routage de R2 ci-dessous.
R2#sh ipv route | s 45::
OE2 45::/64 [110/20]
via FE80::A8BB:CCFF:FE00:500, Serial2/0
R2#
Le coût des interfaces série des routeurs dans la topologie est 64 par défaut comme le montre la commande suivante au niveau de R2 et R5.
R2#sh ipv os int s2/0 | s Cost
Network Type POINT_TO_POINT, Cost: 64
R2#
R5#sh ipv os int s2/1 | s Cost
Network Type POINT_TO_POINT, Cost: 64
R5#
Nous allons maintenant configurer le coût 193 au niveau du lien R2<–>R5
R2(config)#int s2/0
R2(config-if)#ipv os cost 193
R5(config)#int s2/1
R5(config-if)#ipv ospf cost 193
Vérifions maintenant les coûts vers les ASBRs R4 et R5.
1-Le meilleur coût vers R5 0.0.0.5 est 193 via une route intra-area avec R5 comme next-hop.
2-Le meilleur coût vers R4 0.0.0.4 est 192 via une route inter-area avec R1 comme next-hop.
R2#sh ipv os bord
OSPFv3 Router with ID (0.0.0.2) (Process ID 1)
Codes: i – Intra-area route, I – Inter-area route
i 0.0.0.1 [64] via FE80::A8BB:CCFF:FE00:100, Serial2/1, ABR, Area 2, SPF 7
I 0.0.0.4 [192] via FE80::A8BB:CCFF:FE00:100, Serial2/1, ASBR, Area 2, SPF 7
i 0.0.0.5 [193] via FE80::A8BB:CCFF:FE00:500, Serial2/0, ASBR, Area 2, SPF 7
R2#
Le coût 192 pour joindre l’ASBR R4 est maintenant meilleur au coût vers l’ASBR R5. Par conséquent, R2 préfère la route externe à travers R4 pour aller vers la destination externe 45::/64.
R2#sh ipv route | s 45::
OE2 45::/64 [110/20]
via FE80::A8BB:CCFF:FE00:100, Serial2/1
R2#
Au niveau du routeur R1, vérifions maintenant les coûts vers les ASBRs R4 et R5.
1-Le meilleur coût vers R5 0.0.0.5 est 257 via une route intra-area avec R2 comme next-hop.
2-Le meilleur coût vers R4 0.0.0.4 est 128 via une route inter-area avec R3 comme next-hop.
R1#sh ipv os bord
OSPFv3 Router with ID (0.0.0.1) (Process ID 1)
Codes: i – Intra-area route, I – Inter-area route
i 0.0.0.3 [64] via FE80::A8BB:CCFF:FE00:300, Serial2/0, ABR, Area 0, SPF 7
i 0.0.0.5 [257] via FE80::A8BB:CCFF:FE00:200, Serial2/1, ASBR, Area 2, SPF 11
I 0.0.0.4 [128] via FE80::A8BB:CCFF:FE00:300, Serial2/0, ASBR, Area 0, SPF 7
R1#
Naturellement, le routeur R1 va préférer la route externe via R3 pour la destination externe 45::/64.
R1#sh ipv route | s 45::
OE2 45::/64 [110/20]
via FE80::A8BB:CCFF:FE00:300, Serial2/0
R1#
OSPFv3 pour IPv6 est décrit dans la RFC 5340.
En se basant sur la RFC 5340, les règles de sélection du meilleur chemin vers une destination externe lorsque plusieurs routes existent vers des ASBRs ou bien des Forward Address est comme suit:
1-Une route intra-area via une area non-backbone est toujours la meilleure par rapport à toute autre route (une route intra-area via l’area backbone ou bien une route inter-area) indépendamment du coût.
2-les autres routes (une route intra-area via l’area backbone ou bien une route inter-area) sont équivalentes, c’est le coût qui déterminera le meilleur chemin
En anglais cela donne ceci:
1-Intra-area paths using nonbackbone areas are always the most preferred.
2-The other paths, intra-area backbone paths and inter-area paths, are of equal preference.
Une précision est importante, ces règles sont décrites dans la RFC 5340. Par défaut les routeurs Cisco implémentent la RFC 1583.
En d’autres termes, les règles de la RFC 5340 ne sont applicable que si la RFC 1583 est désactivée avec la commande “no compatible rfc1583”.
Pour confirmer, la commande show ipv ospf exécuté au niveau du routeur R1 nous montre bien que la RFC 1583 est active par défaut.
R1#sh ipv os | s RFC
Supports NSSA (compatible with RFC 3101)
RFC1583 compatibility enabled
Area BACKBONE(0)
R1#
Dans ce scenario, que va-t-il se passer si l’on désactive la RFC 1583 au niveau de R1.
Exécutant la commande “no compatible rfc1583” dans R1:
R1(config-rtr)#ipv router osp 1
R1(config-rtr)#no compatible rfc1583
La commande show ipv ospf nous confirme que la RFC 1583 est désactivée.
R1#sh ipv os | s RFC
Supports NSSA (compatible with RFC 3101)
RFC1583 compatibility disabled
Area BACKBONE(0)
R1#
Cela signifie que la RFC 5340 est active.
La commande show ipv osp bor ci-dessous dans R1 nous donne le résultat suivant.
1-Le meilleur chemin vers l’ASBR R5 est via une route intra-area à travers l’area 2 NON-BACKBONE dont le coût est 257 avec R2 comme next-hop.
2-Le meilleur chemin vers l’ASBR R4 est via une route inter-area à travers l’area 0 BACKBONE dont le coût est 128 avec R3 comme next-hop.
R1#sh ipv os bord
OSPFv3 Router with ID (0.0.0.1) (Process ID 1)
Codes: i – Intra-area route, I – Inter-area route
i 0.0.0.3 [64] via FE80::A8BB:CCFF:FE00:300, Serial2/0, ABR, Area 0, SPF 7
i 0.0.0.5 [257] via FE80::A8BB:CCFF:FE00:200, Serial2/1, ASBR, Area 2, SPF 11
I 0.0.0.4 [128] via FE80::A8BB:CCFF:FE00:300, Serial2/0, ASBR, Area 0, SPF 7
R1#
Puisque la RFC 5340 stipule que vers plusieurs ASBRs, la route intra-area via une area NON-BACKBONE est toujours la meilleure quelque soit le coût. R1 préfére la route intra-area via l’area 2 pour joindre le préfixe externe 45::/64 au lieu de la route inter-area.
La table de routage de R1 montre finalement que pour aller vers le préfixe externe 45::/64, il passe par le chemin R2-R5 avec R2 comme Next-Hop.
R1#sh ipv route | s 45::
OE2 45::/64 [110/20]
via FE80::A8BB:CCFF:FE00:200, Serial2/1
R1#
Le résultat final obtenu est que R1 préfère la route ou bien le LSA Type-5 annoncé par R5 à la route via R4. Malgré le coût vers l’ASBR R5 est plus grand que le coût vers l’ASBR R4. La RFC 5340 a changé le comportement de R1 en le forçant toujours à preferer l’ASBR R5 qui est joignable via une route intra-area NON-BACKBONE ingnorant ainsi le coût.
En meme temps R2 préfère la route externe via R4 car le coût 192 vers l’ASBR R4 est meilleur au coût 193 via l’ASBR R5, R2 utlisent par défaut la RFC 1583 dont le choix de route est basé sur le coût, pour R2 le meilleur ASBR est R4, et pour aller vers l’ASBR R4, il passe par le next-hop R1. Donc R2 installes tout bonnement la route vers le préfixe externe 45::5/64 avec R1 comme next-hop.
R2#sh ipv route | s 45::
OE2 45::/64 [110/20]
via FE80::A8BB:CCFF:FE00:100, Serial2/1
R2#
Ainsi on obtient une boucle de routage entre R1 et R2, R1 utilise R2 comme next-hop pour aller vers 45::/64 tandis que R2 utilise R1 comme next-hop pour aller vers 45::/64.
R2#tracer 45::
Type escape sequence to abort.
Tracing the route to 45::
1 12::1 10 msec 10 msec 10 msec
2 12::2 10 msec 10 msec 10 msec
3 12::1 18 msec 13 msec 24 msec
4 12::2 18 msec 18 msec 19 msec
5 12::1 20 msec 29 msec 27 msec
6 12::2 27 msec 20 msec 26 msec
7 12::1 37 msec 33 msec 37 msec
8 12::2 36 msec 34 msec 35 msec
9 12::1 43 msec 49 msec 45 msec
10 12::2 48 msec 44 msec 46 msec
11 12::1 52 msec 53 msec 54 msec
12 12::2 57 msec 42 msec 63 msec
13 12::1 52 msec 67 msec 56 msec
14 12::2 65 msec 69 msec 61 msec
15 12::1 77 msec 77 msec 70 msec
16 12::2 76 msec 70 msec 68 msec
17 12::1 88 msec 76 msec 77 msec
18 12::2 84 msec 77 msec 76 msec
19 12::1 85 msec 90 msec 84 msec
20 12::2 88 msec 104 msec 92 msec
21 12::1 96 msec 103 msec 91 msec
22 12::2 98 msec 101 msec 95 msec
23 12::1 110 msec 108 msec 107 msec
24 12::2 111 msec 111 msec 97 msec
25 12::1 119 msec 115 msec 108 msec
26 12::2 109 msec 117 msec 115 msec
27 12::1 128 msec 126 msec 127 msec
28 12::2 126 msec 123 msec 130 msec
29 12::1 128 msec 129 msec 143 msec
30 12::2 138 msec 127 msec 133 msec
Destination not found inside max hopcount diameter.
R2#
R1#tracer 45::
Type escape sequence to abort.
Tracing the route to 45::
1 12::2 5 msec 9 msec 9 msec
2 12::1 11 msec 9 msec 9 msec
3 12::2 18 msec 19 msec 14 msec
4 12::1 19 msec 18 msec 18 msec
5 12::2 29 msec 30 msec 29 msec
6 12::1 26 msec 26 msec 30 msec
7 12::2 36 msec 47 msec 35 msec
8 12::1 38 msec 31 msec 39 msec
9 12::2 42 msec 46 msec 46 msec
10 12::1 43 msec 42 msec 36 msec
11 12::2 58 msec 56 msec 54 msec
12 12::1 49 msec 52 msec 56 msec
13 12::2 56 msec 64 msec 68 msec
14 12::1 64 msec 65 msec 58 msec
15 12::2 74 msec 76 msec 73 msec
16 12::1 72 msec 62 msec 78 msec
17 12::2 80 msec 86 msec 78 msec
18 12::1 79 msec 81 msec 77 msec
19 12::2 83 msec 91 msec 89 msec
20 12::1 88 msec 88 msec 86 msec
21 12::2 100 msec 97 msec 98 msec
22 12::1 100 msec 96 msec 102 msec
23 12::2 106 msec 106 msec 100 msec
24 12::1 107 msec 112 msec 107 msec
25 12::2 111 msec 116 msec 107 msec
26 12::1 106 msec 125 msec 116 msec
27 12::2 126 msec 125 msec 119 msec
28 12::1 125 msec 125 msec 119 msec
29 12::2 124 msec 132 msec 140 msec
30 12::1 123 msec 134 msec 133 msec
Destination not found inside max hopcount diameter.
R1#
En manipulant accidentellement les RFCs OSPF, on peut provoquer des boucles de routage et meme des suboptimal routing.
C’est pour cela qu’il faut prendre ses precautions lors de la modifications des RFCs dans OSPF dans une architecture avec plusieurs ASBRs, car tout simplement certains comportements changent et le choix de route change aussi, la recommendation est de s’assurer que tous les routeurs implementent la meme RFC sinon un résulat indésirable est risqué, jouer avec les RFCs c’est comme jouer avec le feu!