ISIS

From Livre IPv6

Revision as of 23:58, 7 February 2006 by Bruno Stévant (Talk | contribs)

RIPng Table des matières OSPFv3

IS-IS (Intermediate System to Intermediate System) est un protocole de routage interne à état de lien. Il a été standardisé par l'ISO (ISO 10589). C'est un protocole de niveau 3 (contrairement à OSPF et RIP qui sont de niveau 4) qui s'appuie sur une couche 2 de type Ethernet 802.2. Cet élément mérite d'être signalé car cela rend ce protocole indépendant d'IP, que ce soit IPv4 ou IPv6. Ce protocole travaille sur deux niveaux de hiérarchie : les aires (niveau 1) et le backbone (niveau 2).

Un routeur IS-IS peut être soit :

  • level-1 (routage intra aire),
  • level-2 (routage inter aire),
  • level-1-2 (routage intra et inter aire).

Un routeur de niveau 1 n'a de voisins que dans son aire, alors qu'un routeur de niveau 2 peut avoir des voisins dans une autre aire. Il n'y a pas d'aire de backbone (contrairement à OSPF). Le backbone est constitué de la réunion de tous les routeurs de level-2. Sur un réseau de type LAN, il y a élection d'un routeur désigné (DIS) qui a la charge de produire les annonces.

Afin de construire sa topologie, IS-IS utilise 3 types de messages:

  • les messages HELLO permettant de construire les adjacences;
  • les messages LSP (Link State Protocol) permettant d'échanger les informations sur l'état des liens;
  • les messages SNP (Sequence Number Packet) permettant de confirmer la topologie.

Pour élaborer ces messages, IS-IS se base sur l'utilisation d'éléments d'informations indépendants appelés TLV (Type, Longueur, Valeur). Le message est ainsi constitué d'un en-tête suivi d'une liste de TLV. Chaque TLV véhicule une information propre, et est donc standardisée. L'exemple ci-dessous montre une TLV Protocoles Supportés faisant partie d'un message HELLO, informant les voisins des protocoles supportés par l'émetteur du paquet :

0x81 0x02 0xCC 0x8E

Le premier octet donne le type de la TLV. Il s'agit ici du type 0x81, c'est-à-dire Protocoles supportés. Le second octet donne la longueur en octets de la TLV : ici les deux octets qui suivent. Les autres octets composent la valeur de la TLV. Ici nous avons deux octets indiquant des numéros de protocoles supportés (NLPID : Network Layer Protocol IDentifier): 0xCC pour IPv4 et 0x8E pour IPv6.

Le support d'IPv6

Les TLV permettent une évolution souple du protocole IS-IS. Cela s'est vérifié lorsque le support d'IPv4 a été ajouté (IS-IS est alors devenu integrated IS-IS ou i/IS-IS): en 1990, le (RFC 1195) a défini 6 nouvelles TLV afin de prendre en compte le routage d'IPv4.

De même, deux nouvelles TLV ont été ajoutées pour le support d'IPv6 . Elles sont définies dans le draft IETF See [Hopps-id](début 2003), ainsi que le numéro de protocole NLPID propre à IPv6 : il vaut 142 (soit 0x8E en décimal). C'est cette valeur que l'on voit dans l'exemple ci-dessus (exemple de TLV).

La capture ci-dessous est celle d'un paquet IS-IS HELLO provenant d'un routeur qui annonce sa capacité à traiter les protocoles IP et IPv6 (dans la TLV vue précédemment) ainsi que l'adresse IPv6 d'une de ses interfaces (dans une TLV de type 232).

Frame 12 (97 bytes on wire, 97 bytes captured)
IEEE 802.3 Ethernet
Logical-Link Control
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
Intra Domain Routing Protocol Discriminator: ISIS (0x83)
PDU Header Length : 27
Version (==1) : 1
System ID Length : 0
PDU Type : L2 HELLO (R:000)
Version2 (==1) : 1
Reserved (==0) : 0
Max.AREAs: (0==3) : 0
ISIS HELLO
Circuit type : Level 2 only, reserved(0x00 == 0)
System-ID {Sender of PDU} : 1921.6815.0001
Holding timer : 9
PDU length : 80
Priority : 64, reserved(0x00 == 0)
System-ID {Designated IS} : 1921.6815.0001.04
IS Neighbor(s) (6)
Protocols Supported (2)
NLPID(s): IP (0xcc), IPv6 (0x8e)
IP Interface address(es) (4)
IPv6 Interface address(es) (16)
IPv6 interface address: fe80::290:69ff:febf:b03e
Area address(es) (4)
Restart Signaling (3)
Multi Topology (4)
 
0000 01 80 c2 00 00 15 00 90 69 bf b0 3e 00 53 fe fe ........i..>.S..
0010 03 83 1b 01 00 10 01 00 00 02 19 21 68 15 00 01 ...........!h...
0020 00 09 00 50 40 19 21 68 15 00 01 04 06 06 00 05 ...P@.!h........
0030 dd fb 20 06 81 02 cc 8e 84 04 c0 a8 0a 03 e8 10 .. .............
0040 fe 80 00 00 00 00 00 00 02 90 69 ff fe bf b0 3e ..........i....>
0050 01 04 03 49 00 01 d3 03 00 00 00 e5 04 00 00 00 ...I............
0060 02 .

Le routeur est double pile car il annonce le support de IPv4 et IPv6. Son identificateur (System-ID: 1921.6815.0001.04) est dérivé de son adresse de loopback IPv4 (192.168.150.001), c'est une pratique courante. Dans le cas où un routeur ne serait que IPv6, il faudrait alors convenir d'une autre méthode pour attribuer l'identificateur de système au routeur IS-IS (l'adresse MAC par exemple).

Le problème de la mono topologie

Soit le réseau représenté figure Exemple de multi-topologie. Le point important à remarquer ici est que le routeur R3 n'implémente que la pile IPv4, alors que les deux routeurs R2 et R4 sont double-pile.

CS81.gif

Ce paragraphe va démontrer que dans ce cas de configuration il est nécessaire d'implémenter la multi topologies IS-IS afin de prendre en compte la non congruence des deux topologies IPv4 et IPv6. Considérons dans un premier temps que IS-IS ne gère qu'une seule et donc unique topologie. Dans ce cas, les adjacences sont les suivantes:

R2#sh clns nei
System Id Interface SNPA State Holdtime Type Protocol
R4 Gi2/0 0005.ddc8.0438 Up 25 L2 IS-IS
R2#

On remarque qu'il n'y a pas d'adjacence entre R2 et R3. La même commande passée sur R4 montrerait la même chose. Le routeur R3 se trouve donc isolé (au sens IS-IS). Dans cette même configuration, les routes apprises par R2 sont :

R2#sh ip route isis
192.168.127.0/32 is subnetted, 2 subnets
i L2 192.168.127.4 [115/50] via 192.168.24.2, GigabitEthernet2/0
i L2 192.168.34.0/24 [115/60] via 192.168.24.2, GigabitEthernet2/0
R2#sh ipv6 route isis
Codes: I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea
I2 2001:688:1F80:127::4/128 [115/50] via FE80::205:DDFF:FEC8:438, GigabitEthernet2/0
R2#

Pour atteindre la loopback IPv4 de R4, le chemin sélectionné est le chemin direct ayant un poids de 50 alors qu'un chemin plus léger existe en passant par R3. De plus les réseaux annoncés par R3 sont ignorés (on ne voit pas son adresse de loopback). La solution pour contrer ce problème est l'utilisation des TLV multi-topologies.

Le support de la multi topologies (MT)

Comme cela a été fait pour IP puis IPv6, le support de la multi topologies s'est fait par l'ajout de quatre nouvelles TLV. Elles sont définies dans le draft IETF [Prz-id]. Les principes sont les suivants :

  • adjacences : une nouvelle TLV annonce toutes les topologies auxquelles appartiennent chaque interface (TLV 229);
  • chaque topologie gère son propre espace d'adressage grâce à des TLVs spécifiques (type 235 et 237);
  • chaque topologie exécute un algorithme de plus court chemin et les résultats sont collectés dans des RIB séparées.

La capture ci-dessous est celle d'un paquet IS-IS LSP contenant des TLV multi-topologies :

Frame 11 (193 bytes on wire, 193 bytes captured)
IEEE 802.3 Ethernet
Logical-Link Control
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
Intra Domain Routing Protocol Discriminator: ISIS (0x83)
PDU Header Length : 27
Version (==1) : 1
System ID Length : 0
PDU Type : L2 LSP (R:000)
Version2 (==1) : 1
Reserved (==0) : 0
Max.AREAs: (0==3) : 0
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 176
Remaining Lifetime: 1197s
LSP-ID: 1921.6810.0001.00-00
Sequence number: 0x0000006d
Checksum: 0xf054 (correct)
Type block(0x03): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:3
Area address(es) (4)
Multi Topology (4)
IPv4 unicast Topology (0x000), no sub-TLVs present
IPv6 unicast Topology (0x002), no sub-TLVs present
Protocols supported (2)
Hostname (2)
IP Interface address(es) (4)
IPv6 Interface address(es) (16)
Extended IS reachability (11)
Multi Topology IS Reachability (13)
4 most significant bits reserved, should be set to 0 (0)
IPv6 routing topology (2)
IS neighbor: 1921.6815.0001.03
Extended IP Reachability (29)
Multi Topology Reachable IPv6 Prefixes (44)
4 most significant bits reserved, should be set to 0 (0)
IPv6 routing topology (2)
IPv6 prefix: 2001:688:3::/64, Metric: 10, Distribution: up, internal, no sub-TLVs present
IPv6 prefix: 2001:688:20::/64, Metric: 10, Distribution: up, internal, no sub-TLVs present
IPv6 prefix: 2001:688:100::/64, Metric: 0, Distribution: up, internal, no sub-TLVs present 

En reprenant l'exemple précédent, auquel est ajoutée la prise en compte de la multi topologies, les résultats suivants sont obtenus :

R2#sh isis topo
IS-IS IP paths to level-2 routers
System Id Metric Next-Hop Interface SNPA
R2 --
R3 10 R3 Fa4/0 000c.ce66.6e01
R4 20 R3 Fa4/0 000c.ce66.6e01
R2#
R2#sh isis ipv6 topo
IS-IS IPv6 paths to level-2 routers
System Id Metric Next-Hop Interface SNPA
R2 --
R3 **
R4 50 R4 Gi2/0 0005.ddc8.0438
R2#

Les deux topologies IPv4 et IPv6 sont différentes. Depuis R2, R3 est le next-hop pour la topologie IPv4, alors que c'est R4 pour la topologie IPv6. Un extrait de la base de donnée topologique sur R2 montre que les TLV multi topologies sont mises en oeuvre :

R1#sh isis data det
IS-IS Level-2 Link State Database:
LSPID LSP Seq Num LSP Checksum LSP Holdtime ATT/P/OL
R4.00-00 0x00000011 0x53A2 891 0/0/0
Area Address: 49.0001
Topology: IPv4 (0x0) IPv6 (0x2)
NLPID: 0xCC 0x8E
Hostname: R4
IP Address: 192.168.24.2
IPv6 Address: 2001:688:1F80:24::2
Metric: 10 IS-Extended R3.01
Metric: 50 IS-Extended R2.02
Metric: 50 IS (MT-IPv6) R2.02
Metric: 0 IP 192.168.127.4/32
Metric: 50 IP 192.168.24.0/24
Metric: 10 IP 192.168.34.0/24
Metric: 50 IPv6 (MT-IPv6) 2001:688:1F80:24::/64
Metric: 0 IPv6 (MT-IPv6) 2001:688:1F80:127::4/128
R2#

Les commandes traceroute suivantes sont intéressantes car elles montrent que les chemins IPv4 et IPv6 pour la même destination sont différents :

R2#traceroute 192.168.127.4
[...]
1 192.168.23.2 0 msec 0 msec 0 msec
2 192.168.34.2 4 msec * 0 msec
R2#
R2#traceroute 2001:688:1F80:127::4
[...]
1 2001:688:1F80:24::2 4 msec 0 msec 0 msec
R2#

De même, l'apprentissage des routes IPv4 et IPv6 montre que l'utilisation de la MT permet de différencier les routes IPv4 des routes IPv6 (on remarquera la métrique de 20 pour l'adresse de loopback IPv4 de R4, alors qu'elle vaut 50 pour l'adresse IPv6):

R2#sh ip route isis
192.168.127.0/32 is subnetted, 3 subnets
i L2 192.168.127.4 [115/20] via 192.168.23.2, FastEthernet4/0
i L2 192.168.127.3 [115/10] via 192.168.23.2, FastEthernet4/0
i L2 192.168.34.0/24 [115/20] via 192.168.23.2, FastEthernet4/0
R2#
R2#sh ipv6 route isis
IPv6 Routing Table - 8 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
U - Per-user Static route
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
I2 2001:688:1F80:127::4/128 [115/50]
via FE80::205:DDFF:FEC8:438, GigabitEthernet2/0
R2#
RIPng Table des matières OSPFv3
Personal tools