Integrated IS-IS
Ce document a pour but de présenter succintement le protocole de routage IS-IS.
1. Généralités
IS-IS est un protocole de routage à état de liens tout comme OSPF. Il se base lui aussi
sur l’algorithme SPF de Dijktra. De plus, IS-IS est basé sur le standard ISO 10589.
La distance administrative est 115. La métrique utilisée est de type ‘path cost’ (coût du chemin) comme en OSPF.
La métrique est comprise entre 0 et 63. Celle-ci est par défaut de 10 par interface. Cette métrique change
uniquement de manière manuelle, elle n’est pas fonction de la bande passante (OSPF), délai, BW (EIGRP)…
IS-IS maintient trois tables différentes :
- Table des ses voisins
- Table contenant la topologie IS-IS
- Table de routage RIB
La découverte des voisins est faite au moyens des PDU Hello et la relation de voisinage est elle aussi
maintenu grâce à ces paquets. Les PDU Hello sont envoyés tous les 3,3s (=> convergence rapide).
Une des particularités d’IS-IS est d’être indépendant d’IP au niveau 3. En effet, IS-IS
possède son propre protocole de niveau 3. IS-IS est l’implémentation d’un protocole de niveau de l’OSI.
Tout comme IP est le procole de niveau 3 pour le modèle TCP/IP, IS-IS est le protocole de niveau 3 pour l’OSI.
Integrated IS-IS est l’implémentation d’IS-IS supportant IPv4.
Une des autres particularités et qui découle de
la première est la complexité de l’adressage (plus hiérarchique et complet qu’IP). Une autre
particularité d’IS-IS est de se baser sur le motif TLV pour décrire les données.
TLV pour :
- T : Type
- L : Length
- V : Value
L’utilité d’utiliser un découpage des données en TLV est la flexibilité accrue du protocole. En effet,
il n’est pas extrêmement difficile de supporter IPv6 avec IS-IS, alors qu’OSPF a nécessité une reconstruction
pour supporter v6.
2. Types de système
IS-IS définit les noeuds en deux catégories:
- ES: End System (machines hôtes, serveurs, ..)
- IS: Intermediate System (routeurs)
On parle donc de communications ES-IS pour un dialogue entre un hôte et un routeur.
Et IS-IS signifie un dialogue inter-routeur.
=> IS-IS est donc bien un protocole de routage inter-routeur 🙂
3. Types de routeurs
Il existe différents types de communications, elles sont décrites de la manière suivante :
- L0 : ES-IS ;
- L1 : IS-IS (dans la même aire) ;
- L2 : IS-IS (dans des aires différentes) ;
- L3 : Domaine de routage différent (RIP, OSPF, BGP, …).
Par voie de conséquence, il existe donc différent type de routeur:
- L1: Routeur faisant partie d’une aire uniquement, possède une base de données de type L1 et maintient
des relations de voisinage avec les routeurs de types L1. De plus, on peut concevoir les routeurs de types L1 comme les routeurs à l’intérieur d’une aire OSPF de type totally stubby. La route par défaut vers les autres aires est vers le routeur L1/L2 le plus proche (path cost == metric) ; - L2: Routeur de type backbone (ne connaît que des résumé de routes des aires non-backbone) ;
- L1/L2 : Routeur possédant deux LSDB: une de type L1, une de type L2.
- Maintient une LSDB pour la topologie avec les routeurs de type L1 (de son aire) ;
- Maintient des relations de voisinage avec les routeurs de type L1 ;
- Maintient une LSDB pour la topologie avec les routeurs de type L2 (backbone) ;
- Maintient des relations de voisinage avec les routeurs de type L2 ;
Le backbone IS-IS se définit comme les connexions entre les routeurs de type L1/L2 et les routeurs
de type L2. Ceci implique plus de fléxibilité dans la conception du backbone que ne peut l’être OSPF avec la
règle impliquant que toutes les aires doivent être connectées à l’aire backbone et sa conception hiérarchique.
4. Conception réseau
La conception réseau avec IS-IS ne se conçoit pas de la même manière qu’avec OSPF.
Néanmoins, IS-IS s’appuie lui aussi sur le concept d’aire de routage. Un routeur dans une aire
de type L1 et de type L1 n’a conscience que de ses condisciples dans l’aire. Il demande/route les
PDU à son routeur de L1/L2 pour joindre des routeurs dans des aires différentes (un peu comme
les totally stub area en OSPF)
Cela est dû simplement au fait qu’une adresse IS-IS n’est pas portée par une interface, mais pas un routeur.
Cela implique donc qu’il n’y a pas d’ABR au sens propre du terme en IS-IS. Il n’y a pas de routeur avec des interfaces
dans deux aires différentes.
De plus, il n’existe pas de nécessité comme en OSPF d’avoir les aires connectées à une aire centrale (backbone).
Le backbone est constitué de routeurs faisant parti d’un certain type (L1/L2).
5. Terminologie OSI
IS-IS est basé sur OSI. En IS-IS, on ne parle pas de paquets, ni de couche réseau, …
TCP/IP | IS-IS (OSI) |
Paquet | PDU (Protocol Data Unit) |
Network link Layer packet | Network PDU |
Datalink layer frame | Datalink PDU |
6. Les différents types de paquets
- Hello :
- Hello de type L1
- Hello de type L2
De plus, les hello sont de type différents suivant les machines auxquelles on s’adresse :
- ESH : Hello d’un hôte vers un routeur (permet de décrouvrir son routeur le plus proche (~~~~~DHCP~~~~) ;
- ISH : Hello d’un routeur vers un hôte ;
- IIH : Hello d’un routeur vers un autre routeur.
- LSP Packet : Link State Packet : grossièrement similaire un LSA en OSPF ;
- Annonce un réseau ;
- PNSP : Partial Number Sequence Packet :
- Acknoledge un LSP ;
- Faire une requête d’un LSP
- CNSP : Complete Number Sequence Packet : Grossièrement similaire au DBD en OSPF ;
- Résumé des LSP contenu dans la LSDB d’IS-IS :
Par exemple : Je connais l’ensemble des LSP de 0 à 315
- Résumé des LSP contenu dans la LSDB d’IS-IS :
7. Adresse IS-IS
C’est une des choses les plus difficile à appréhender en venant du monde TCP/IP.
La première chose à retenir est qu’une adresse OSI est nommée NSAP et que celle-ci est portée
par un routeur et pas par une interface.
Voyons maintenant plus en détail les adresses NSAP :
- IDP : Inter Domain Part => Sélection du domaine de routage IS-IS
- AFI : Address Family Identifier
- IDI : Initial Domain Identifier
- DSP : Domain Specific Part => Sélection de l’hôte
- High Order DSP : L’aire dans le système autonome.
- System ID : Mon identifiant dans l’aire
- NSEL :
- 0x00 : routeur
- != 0x00 : Autre
Néanmoins, il faut mémoriser que l’adresse se décompose en trois parties :
- Area ID
- System ID
- NSEL
Typiquement une adresse NSAP serait :
49.0003.0000.0000.000A.00
Avec :
- Aead ID : 49.0003 (49 signifie: adresse privée comme la RFC1918 en IP) et 0003 le numéro de l’aire ;
- System ID : 0000.0000.000A => Adresse du système (à choisir ou une adresse MAC(6 octets)) ;
- NSEL : 00 => Routeur.
De plus, une adresse NSAP dont le NSEL est à 0x00 s’appelle aussi une adresse NET. Les adresses OSI est
plus communément appelée adresse NET. C’est ainsi que vous la trouverez dénommée dans la configuration
du processus IS-IS sur un routeur Cisco.
Néanmoins, il faut faire attention car une adresse NSAP a une longueur qui peut varier entre 8 et 20 octets.
Par conséquent, il est important de garder en tête qu’il est important de lire une adresse IS-IS de droite à gauche.
En effet, on sait que NSEL (1 octets) et System ID fait 6 octets. La partie variable se situe souvent sur la partie IDP.On déduit donc en lisant de droite à gauche les partie, alors que le contraire ne serait pas vrai.
On peut donc en déduire trois règles :
- Lire l’adresse de droite à gauche pour déduire l’Area ID ;
- System ID : 6 octets ;
- NSEL = 0x00 => Routeur.
De plus, il est à noter que IS-IS est flexible dû à l’utilisation des motifs TLV (Type/Length/Value) (et son
embriquement). En effet, il est possible de changer/modifier facilement les paquets et donc les protocoles supportés
grâce à ce motif. IPv6 a été facilement supporté par IS-IS, contrairement à OSPF qui a nécessité une ré-écriture
et donc la venue d’OSPFv3.
Paquet LSP illustrant le motif TLV:
Chacune des sous informations d’un groupe TLV est lui-même inclut dans un motif TLV.
Par exemple, il y a un motif TLV qui décrit les voisins, et bien chaque voisin est décrit par un motif TLV.
8. Types de réseau
IS-IS supportent deux types de réseaux :
- Broadcast (Ethernet par exemple)
- Point à point (LS)
IS-IS peut être utilisé sur des réseau dits NBMA (Non Broadcast Multiple Access), néanmoins il est fortement
recommandé d’utilisé les sous-interfaces point à point.
Sur les réseaux de types ‘Broadcast’, un DIS (Designated Intermediate IS ou Designated IS) est élu afin de réduire
le nombre d’adjacences à former et un surplus de bande passante, CPU et mémoire utilisés.
Il n’y pas de de backup DIS comme peut le faire OSPF avec son BDR.
Le but du DIS est de :
- Crééer et maintenir les adjacences avec ses petits copains ;
- Crééer et mettre à jour le pseudo-noeud (noeuud du réseau qui annonce en multicast les mises à jours réseaux aux routeurs L1 et L2 ;
- Envoit les LSP sur le LAN ;
Les critère pour former une adjacence sont les suivantes :
- Même type de niveau (L1, L2, L1/L2) ;
- MTU ;
- Pour se connecter à une autre aire, cela nécessite au moins un routeur de type L1/L2 ;
- System ID unique dans l’aire ;
- Si niveau 1: les routeurs doivent se trouver dans la même aire ;
- Authentification OK ;
- Hello et Holdown timer doivent être les mêmes.
9. Formation de la RIB et processus de transmission des PDU
9.1 Formation de la RIB
- Chaque routeur trouve le meilleur chemin vers ses voisins dans l’aire au moyen de SPF (best path cost) ;
- Les routeurs L1/L2 disposent d’une LSDB différentes par aires, donc des calculs de routes par SPF différents ;
- Les meilleurs chemins sont ajoutés à la table de routage OSI ;
- Un second algorithme est alors mis en place (PRC: Partial Routing Calculate) afin d’établir à partir de la
table de routage OSI, la table de routage IP ; - Les meilleurs chemins calculés par PRC sont ajoutés à la RIB
- SPF est calculé en cas de changement d’un voisin ;
- PRC est calculé en cas de perte d’une route ;
Afin de syncroniser la LSDB, les routeurs utilisent des PDU de types différents (énoncés ci-dessus)
afin d’arriver à leur fin :
- CNSP : Résumé des LSP disponibles dans la LSDB (J’ai les LSP de 0 .. 47)
- PSNP : Demande d’un LSP (Hey, mais j’ai pas le LSP n°9, donne le moi !
- LSP : le LSP (information IS-IS sur un type donné) (Tiens voilà l’information)
- PSNP : Acknoledge de reception d’un LSP
9.2 Processus de transmission
IS-IS regarde la destination d’un PDU si :
- != aire => routage basé sur l’aire
- même aire => routage basé sur le System ID
Si je suis un routeur de type L1 (je ne sais rien des autres aires) :
- inter-aire : envoyé au routeur L1/L2 le plus proche ;
- intra-aire : routage basé sur la L1 LSDB ;
Si je suis un routeur de type L1/L2 :
- inter-aire : routage basé sur la L2 LSDB ;
- intra-aire : routage basé sur la L1 LSDB ;
10. IS-IS par la pratique
Avec la topologie vue ci-dessus, on a les configurations suivantes :
Et la table de routage de R1 est :
R1# sh ip route Gateway of last resort is not set 172.16.0.0/24 is subnetted, 2 subnets i L1 172.16.1.0 [115/20] via 192.168.1.2, FastEthernet1/0 i L1 172.16.2.0 [115/20] via 192.168.1.2, FastEthernet1/0 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks i L2 10.2.2.0/30 [115/20] via 10.1.1.1, FastEthernet1/1 C 10.1.1.0/30 is directly connected, FastEthernet1/1 i L2 10.0.0.0/24 [115/40] via 10.1.1.1, FastEthernet1/1 i L2 10.0.1.0/24 [115/40] via 10.1.1.1, FastEthernet1/1 C 192.168.1.0/24 is directly connected, FastEthernet1/0 i L2 192.168.2.0/24 [115/30] via 10.1.1.1, FastEthernet1/1
Et sur R3 :
R3#sh ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is 192.168.1.1 to network 0.0.0.0 172.16.0.0/24 is subnetted, 2 subnets C 172.16.1.0 is directly connected, Loopback0 C 172.16.2.0 is directly connected, Loopback1 C 192.168.1.0/24 is directly connected, FastEthernet1/0 i*L1 0.0.0.0/0 [115/10] via 192.168.1.1, FastEthernet1/0
R3 est un routeur de type L1: On voit bien qu’il apprend sa route par défaut par le routeur R1 de type L1/L2.
Faisons un résumé de route. Celui-ci ce fait sur le routeur L1/L2 en sortie de l’aire 49.0002 :
R1(config)#rout R1(config)#router isis R1(config)#router isis R1(config-router)#sum R1(config-router)#summary-address 172.16.0.0 255.255.0.0 R1(config-router)#^Z R1#wr Building configuration... [OK] R1# *Mar 3 15:49:15.987: %SYS-5-CONFIG_I: Configured from console by console R1#sh ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks i su 172.16.0.0/16 [115/20] via 0.0.0.0, Null0 i L1 172.16.1.0/24 [115/23] via 192.168.1.2, FastEthernet1/0 i L1 172.16.2.0/24 [115/20] via 192.168.1.2, FastEthernet1/0 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks i L2 10.2.2.0/30 [115/20] via 10.1.1.1, FastEthernet1/1 C 10.1.1.0/30 is directly connected, FastEthernet1/1 i L2 10.0.0.0/24 [115/40] via 10.1.1.1, FastEthernet1/1 i L2 10.0.1.0/24 [115/40] via 10.1.1.1, FastEthernet1/1 C 192.168.1.0/24 is directly connected, FastEthernet1/0 i L2 192.168.2.0/24 [115/30] via 10.1.1.1, FastEthernet1/1
Et donc sur R2 on récupère :
R2#sh ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set i L2 172.16.0.0/16 [115/40] via 10.2.2.1, FastEthernet1/0 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks C 10.2.2.0/30 is directly connected, FastEthernet1/0 i L2 10.1.1.0/30 [115/20] via 10.2.2.1, FastEthernet1/0 i L1 10.0.0.0/24 [115/20] via 192.168.2.2, FastEthernet1/1 i L1 10.0.1.0/24 [115/20] via 192.168.2.2, FastEthernet1/1 i L2 192.168.1.0/24 [115/30] via 10.2.2.1, FastEthernet1/0 C 192.168.2.0/24 is directly connected, FastEthernet1/1Voyons maintenant comment on change une metrique :R1#sh ip route 172.16.0.0 Routing entry for 172.16.0.0/24, 2 known subnets Redistributing via isis i L1 172.16.1.0 [115/20] via 192.168.1.2, FastEthernet1/0 i L1 172.16.2.0 [115/20] via 192.168.1.2, FastEthernet1/0 R1#Donc sur R3 :
R3(config)#int lo 0 R3(config-if)#isis me R3(config-if)#isis metr R3(config-if)#isis metric ? <1-16777214> Default metric maximum Maximum metric. All routers will exclude this link from their SPF R3(config-if)#isis metric 13 R3(config-if)#Maintenant on a :
R1#sh ip route 172.16.0.0 Routing entry for 172.16.0.0/24, 2 known subnets Redistributing via isis i L1 172.16.1.0 [115/23] via 192.168.1.2, FastEthernet1/0 i L1 172.16.2.0 [115/20] via 192.168.1.2, FastEthernet1/0 R1#Finalement, voyons comment est la table de routage sur le routeur R0 qui est lui de type L2 (donc totalement backbone):
R0>sh ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set i L2 172.16.0.0/16 [115/30] via 10.1.1.2, FastEthernet1/0 10.0.0.0/8 is variably subnetted, 5 subnets, 3 masks C 10.2.2.0/30 is directly connected, FastEthernet1/1 C 10.1.1.0/30 is directly connected, FastEthernet1/0 i L2 10.0.0.0/24 [115/30] via 10.2.2.2, FastEthernet1/1 i L2 10.0.1.0/24 [115/30] via 10.2.2.2, FastEthernet1/1 C 10.0.0.1/32 is directly connected, Loopback0 i L2 192.168.1.0/24 [115/20] via 10.1.1.2, FastEthernet1/0 i L2 192.168.2.0/24 [115/20] via 10.2.2.2, FastEthernet1/1 R0>Bon, je vous laisse mettre en oeuvre cette topologie par vous même. La topologie est ici.
IS-IS