CH4. LES PROTOCOLES
Objectifs
•
Fonctions de base des protocoles de routage :
• déterminer et mettre à jour les tables de routage
• répartition des charges pour éviter les congestions,
• Évaluation des critères pour déterminer le coût d'une liaison (nombre de nœuds, temps de traversée, taille des files d'attente etc.)
•
Fonctions avancées, liées à la qualité de service :
• définir des classes de trafic, ordonnancement,
• instaurer la sécurité,
• contrôle de flux et contrôle de congestion,
• qualité de service: temps-réel, multimédia etc.
Internet : un routage hiérarchique
Internet Backbone : Dorsale Internet
• Une dorsale Internet (ou épine dorsale) est un réseau longue distance très haut débit qui constitue le cœur du réseau Internet.
• Le backbone est l’ensemble des supports de transmission et de commutation à partir du commutateur d’abonné ; il supporte la partie la plus importante du trafic avec une bande passante importante.
• Le débit atteint 800 Gb/s en employant des liaisons à fibre optique. En théorie, ces liaisons peuvent atteindre plusieurs Tb/s (terabits par seconde).
Hiérarchie dans l’Internet
• Trois niveaux de hiérarchie dans les adresses IP
• adresse réseaux,
• adresse sous-réseaux,
• adresse de la machine.
• Les réseaux de backbone ne publient les routes qu’aux réseaux, et pas aux sous-réseaux.
• ex. 135.104.*, 192.20.225.*
• Malgré cela, il y a environ 118,000 adresses de réseaux dans les routeurs de backbones (2003)
• Les gateways (EG) communiquent avec le backbone pour trouver le meilleur noeud suivant pour chaque réseau dans l’Internet.
Les approches de routage
• Vecteur de distance (Distance-Vector, DV)
• chaque routeur ne connaît initialement que le coût de ses propres liaisons, les routeurs échangent entre eux des informations de coûts,
• chaque routeur n'a qu'une vision partielle du réseau: coût vers chaque destination,
• fonctionne bien sur des systèmes de petite taille.
• Etat des liens (Link-State, LS)
• chaque routeur construit une vision complète de la topologie du réseau à partir d'informations distribuées,
• ne pas confondre connaître la topologie et connaître tous les noeuds terminaux,
• fonctionne sur des grands réseaux.
Approche vecteur de distance
•
Chaque routeur ne connaît initialement que le coût de ses propres liaisons vers ses voisins direct.
• C’est le vecteur initial
•
Chaque routeur va échanger son vecteur initial avec tous ses voisins
•
Après un certain nombre d’itérations, chaque routeur va connaître le coût vers chaque destination
•
Fonctionne bien sur des systèmes de petite taille
DV : exemple
Synchronisation pas nécessaire dans les envois de messages.
Algorithme DV (Bellman-Ford)
• Condition de consistance: D(i,j) = c(i,k) + D(k,j)
• L’algorithme DV évalue cette condition de manière récursive :
• À l’itération mi, le critère de consistance est vérifié, en supposant que chaque nœud N “voit” les noeuds et les liens à (au moins) m-sauts de lui : une vision à m-m-sauts
Algorithme DV
• A reçoit de B: DV(B,*)=(7,0,1, ∞,8)
• Pour tout voisin k, si c(i,k) + D(k,j) < D(i,j), alors:
• D(i,j) = c(i,k) + D(k,j)
• prochain-saut(j) = k
• Pour voisin B, si c(A,B)+D(B,C) < D(A,C), alors:
• D(A,C) = c(A,B) + D(B,C)
• prochain-saut(C) = B
Approche “état des liens”
• Chaque routeur construit une vision complète de la topologie du réseau à partir d'informations distribuées,
• Ne pas confondre connaître la topologie et connaître tous les noeuds terminaux,
• Fonctionne sur des grands réseaux.
• Approche itérative, et pivote autour des destinations j, et leur prédécesseurs k = p(j)
• Une autre vision du critère de consistance est utilisée :
• D(i,j) = D(i,k) + c(k,j)
Diffusion de la topologie
• Chaque noeud i collecte tous les états c(*,*) d’abord puis exécute localement l’algorithme de plus court chemin (Dijkstra).
• Un routeur décrit son voisinage avec un link state packet (LSP)
Diffusion de la topologie
• Utilise une diffusion contrôlée pour distribuer l’information dans le réseau
• Garde le LSP dans une base de données de LSP
• Si nouvelle, transmet sur chaque interface, sauf l’interface entrante
• Un réseau avec E sommets transmettra au plus 2E fois
• Après chaque itération, l’algorithme découvre un nouveau noeud destination j et un plus court chemin vers ce noeud.
• Après m itérations, l’algorithme a exploré les chemins à m sauts, ou moins, à partir du noeud i.
• Il a une vision du réseau à m-saut (tel le cas de l’approche distance-vector)
Dijkstra
L’algorithme de Dijkstra au noeud i utilise deux ensembles :
• l’ensemble V de tous les noeuds.
• l’ensemble VT des noeuds pour lesquels les plus courts chemins ont été trouvés, et
• Pour tout noeud k, deux valeurs sont calculées :
• [k] = D(i,k): la valeur en cours de la distance entre i et k.
• p(k): le noeud prédécesseur de k dans le chemin le plus court (connu) à partir de i
• SPF-tree : arbre de parcours des plus courts chemins à partir d’un noeud A (the shortest-paths spanning tree rooted at A)
Dijkstra
Algorithme de Dijkstra : exemple
Comment calculer la métrique coût ?
• Le choix du coût du lien détermine la charge du traffic :
• Coût faible = probabilité élevée que le lien appartienne au SPT et va attirer du traffic
• Tradeoff: convergence vs load distribution
• Eviter les oscillations
• Meilleure utilisation du réseau
• Métriques statiques (weighted hop count)
• Ne prend pas en compte la charge du traffic.
• Métriques dynamiques
• Coût évalué à partir de la taille des files d’attente, le délai, etc.
• Très oscillatoire, difficile à évaluer
• Métrique quasi-statique :
• Se baser sur l’état de l’ensemble du réseau pour attribuer des métriques statiques (nécessite d’avoir une matrice des charges)
Organisation en systèmes autonomes
•
L’Internet est organisée en un ensemble de systèmes autonomes (Autonomous System)
•
Chaque AS est un ensemble de réseaux et de routeurs sous une administration commune
• entreprise, campus, réseau régional…
• toutes les parties d’un AS doivent être connexes
•
Les numéros d’AS sur 16 bits
•
Le routage entre AS est appelé routage externe (EGP)
•
IGP ?
Le vrai routage dans l’Internet
Le routage dans l'Internet
• Interior Routing (IGP : Interior Gatway Protocol)
• utilise RIP (Routing Information Protocol, DV), IGRP/EIGRP (cisco, DV), IS-IS (LS) et OSPF (Open Shortest Path First, LS). Ce dernier est le préféré car plus performant.
• protocole d'échange de données de routage périodiques entre routeurs adjacents.
• Exterior Routing
• utilise EGP (Exterior Gateway Protocol, DV), BGP (Border Gateway Protocol, DV). Ce dernier est celui préféré.
• connexion TCP entre les routeurs pour les échanges d'informations,
• routage politique (accessibilité)
Exemple de routage interne et externe
Systèmes autonomes et routage externe
Les protocoles de routage interne
• RIP (v1 et v2)
• Routing Information Protocol
• Nombre de saut comme métrique
• Nombre de saut maximum = 15
• Mise à jour des tables de routage toutes les 30s
• IGRP
• Interior Gateway Routing Protocol (Cisco)
• Bande passante et délai comme métrique
• Mise à jour des tables de routage toutes les 30s
• OSPF
• Open Shortest Path First
• Notion de zones administratives
• Utilise SPF (Dijkstra) pour calculer le plus court chemin
• Le coût d’un lien dépend de la capacité (108/capacité)
• Paquet HELLO toutes les 10s ou 30s
• EIGRP
• Enhanced IGRP (Cisco)
• Utilise l’équilibrage
• Utilise DUAL (Diffused Update Algorithm) pour calculer le plus court chemin
RIP: rappel
• Se base sur un algorithme à vecteur de distance.
• Ancien, il a été prévu initialement pour être mis en place sur des réseaux dont le diamètre est inférieur ou égal à 15, une distance de 16 représentant un distance infinie (c'est à dire une impossibilité d'atteindre la destination).
• Il reprend les principales caractéristiques décrites dans le routage à vecteur de distance :
• Chaque routeur possède une table de routage, dont les entrées indiquent la distance et le prochain saut pour atteindre un réseau.
• Cette table de routage est périodiquement (30s + t) envoyée à tous les voisins (broadcast/multicast).
• Lorsqu'un routeur reçoit le contenu de la table d'un voisin, il calcule les nouvelles distances estimées et met à jour sa propre table dans deux cas :
• Si le nouveau coût est inférieur à celui indiqué par la table locale, et que le prochain saut est différent ;
• Ou si le prochain saut est identique, même si le nouveau coût est supérieur à l'ancien.
RIP : rappel
•
D'autres caractéristiques sont ajoutées pour résoudre les problèmes relatifs à l'algorithme utilisé :
• On considère qu'un routeur est tombé si on ne reçoit pas de nouvelles pendant plus de 180 secondes, et le coût pour l'atteindre est forcé à 16 (infini).
• Pour accélérer la convergence de l'algorithme, si un routeur modifie sa table de routage, il n'attend pas l'expiration de son temporisateur pour envoyer le contenu de sa table : il l'émet immédiatement à tous ses voisins.
•
Point fort : simplicité
RIP : le message
RIP : le message
• Commande : requête/réponse ou diffusion/mise à jour.
• Version 1 pour RIPv1 et 2 pour RIPv2
• Domaine de routage : permet de découper le réseau en sous-réseaux logiques.
• Famille d’adresse (Address familly identifier - AFI) AF_INET pour IPv4.
• Identifiant de route (Route tag - RIPv2) C’est un “ traceur ” ou marqueur pour :
• identifier une route qui provient d’un autre IGP voire d’un autre EGP et qui est propagée par RIP.
• distinguer les routes apprises en interne par RIP de celles apprises par d’autres protocoles (par exemple OSPF).
• Adresse IPv4 Il s’agit de la destination à atteindre par le routeur qui émet cette annonce.
• Masque de sous-réseau (RIPv2) C’est un des apports principaux de RIPv2 par rapport à RIPv1.
RIP : le message
• Adresse IPv4 du prochain routeur (Next hop - RIPv2) En fonctionnement normal l’adresse 0.0.0.0 signifie que la route passe par celui qui l’annonce. Ici il s’agit d’une autre adresse IPv4, différente de celle de l’annonceur. Celui-ci n’utilise pas RIP (sinon il ferait l’annonce lui-même), mais sans doute un autre protocole de routage. Ce cas de figure arrive à la frontière entre deux réseaux, quand par exemple un routeur interne annonce une meilleure route via un routeur du même LAN.
• Métrique distance de la route compris entre 1 et 15 (0 : hôte local ; 16 : infini non accessible)
RIP : la diffusion
• RIP est encapsulé dans un paquet UDP avec 520 comme port de destination.
• Le nombre maximum de routes est limité à 25
• Il faut 20 octets pour décrire une route
• La partie utile du datagramme fait au plus 4 + 25 × 20 = 504 octets et le datagramme complet 532 octets au maximum, le risque de fragmentation est nul sur des LANs et via les liaisons point à point (PPP).
• S’il faut propager plus de 25 routes, il faut envisager l’émission d’autant de datagrammes que nécessaire !
RIP1 vs RIP2
• Gestion des adresses de sous-réseaux (Routage CIDR)
• Indication d’un prochain routeur qui n’est pas celui qui annonce la route
• Indication de routes de provenances externes, ou Route tag
• Usage de l’adresse multicast 244.0.0.9 pour propager des routes (plutôt qu’un limited broadcast IP 255.255.255.255, plus perturbateur parceque lu par tous les hôtes).
• … et RIPng (next generation) : extension de RIP2 pour IPv6
RIP v1 : Comptage à l’infini (boucle de routage)
• Table de routage de R1 :
• S1 et S2 : distance 0
• S3 : distance 1
• S4 : distance 2
• Table de routage de R3 :
• S3 et S4 : distance 0
• S1 : distance 2
• S2 : distance 1
• Après une coupure de S2 : R1 fait sa mise à jour donc n'envoie plus de route pour S1 vers R2
• Or R3 connaît une route pour S1 donc R2 va la prendre en compte
• Pour R2 : distance vers S1 sera 3, puis 4, puis ...
• Pour R3 : distance vers S1 sera 4, puis 5, puis ...
RIP v2
3 algorithmes de plus :
• split horizon : les données ne sont pas renvoyées vers le nœud d'où on les a appris
• hold down : le routeur ignore les informations relatives à un réseau pendant une période fixe après réception d'un message qui en spécifie l'inaccessibilité.
• poison reverse : si on détecte une route coupée et qu'on reçoit un message avec un coût très supérieur au coût initial, on ignore l'information (considérée revenue par une boucle).
Plus les améliorations suivantes :
• masque de sous-réseau : sous-réseaux possibles + agrégation des routes
• authentification (mot de passe en clair ou chiffré sur 16 octets)
RIP v2 : Split horizon (clivage d’horizon)
• Une règle qui interdit à tout routeur d'annoncer un préfixe réseau via l'interface par laquelle il a appris l'existence de celui-ci ou par laquelle il passe pour accéder à ce réseau
• Pourquoi ? Supposons que S2 ne soit plus disponible, R2 met à jour sa propre table et l'envoie à R3. En même temps, R3 envoie sa table à R2
• R2 apprend qu'il existe une route pour S2 par R3
• R3 apprend que S2 n'existe plus
• Avec le split horizon, dans ce cas, nous n'aurions pas le comptage à l'infini
• Mais le split horizon n'empêche pas toujours le comptage à l'infini comme dans l'exemple suivant (suppose que S2 est en panne, R3 fait une annonce...)
RIP v2 : Split horizon avec Poison-reverse
•
Cisco utilise une variante du Split horizon : antidote
•
Quand le réseau est stable, utilisation du split horizon classique
•
Quand une route vers un réseau est annoncée
avec une distance infinie, le destinataire de la
mise à jour l'annonce aussi avec une métrique
infinie sur toutes ces interfaces, y compris celles
protégées par le Split-horizon
RIP v2 : Temporisateur de retenue Hold-down
• Le comptage à l'infini peut être résolu par cette fonction, appelée aussi mécanisme de gel.
• Lorsqu'un routeur prend connaissance de l'indisponibilité d'une route : il doit ignorer toute information concernant un chemin vers ce sous-réseaux pendant une durée égale au temporisateur Hold-down
• Ainsi, si une annonce arrive sur un routeur qui vient d'annoncer une défaillance pour un même sous-réseau
• Ce routeur va attendre avant de prendre en compte cette annonce
• L'annonce de distance infinie aura le temps de se propager
• Mais : durant toute la période de gel :
• boucle de routage maintenue
• routes incorrectes conservées (même si route de remplacement existe)
RIP v2 : Fonction Route-poisoning
•
Dès qu'une ligne tombe en panne, un protocole de routage peut choisir de simplement arrêter de l'annoncer
•
Mais comment distinguer une panne réelle d'une absence de mise à jour perdue à cause de bruit sur la ligne ?
•
La fonction Route-poisoning impose au routeur
de faire une annonce pour la ligne en panne avec
une métrique infinie sur les mêmes interfaces
que celles par lesquelles elle a pu être annoncée.
RIP v2 : Mises à jour déclenchées
•
Dès qu'un routeur remarque un changement d'état sur le sous-réseau directement connecté, il expédie immédiatement ses nouvelles informations.
•
Cette technique couplée au routing-poisoning et
au Poison-reverse accélère la convergence des
algorithmes de routage
RIP : Équilibrage de charge
• RIP est capable de gérer jusque 6 routes d'un même coût (équivalentes)
• Quand un routeur reçoit une information via un algorithme de routage, il choisit toujours l'information avec la plus petite distance administrative.
• La distance administrative est la préférence dans une table de routage des routes apprises par un protocole de routage par rapport aux mêmes routes apprises par un autre protocole de routage.
Plus la valeur est faible et plus le protocole est préféré.
• Chaque protocole dispose de sa valeur par défaut sur les routeurs Cisco
RIP : discussion
• Points forts
• Simplicité de mise en œuvre ;
• Simplicité du protocole permettant une compréhension aisée des échanges ;
• Robustesse des implémentations.
• Points faibles
• Métrique : saut, pas adapté à des réseaux dont les nœuds sont séparés par des liaisons utilisant des bandes passantes disparates
• Limitation à une profondeur de 15 ;
• Problème de la vitesse de convergence (lente) de l’algorithme
• La topologie des réseaux RIP reste à un seul niveau (pas de hiérarchie par exemple entre l’arête centrale d’un réseau (backbone) et des réseaux terminaux.
RIP : configuration
• Pour activer le protocole de routage RIP sur un routeur, il suffit d'utiliser la commande router rip en mode de configuration global, puis de déclarer les réseaux connectés directement avec la commande network.
• Chaque commande network active RIP sur un ensemble d'interfaces
• envoie périodique de mises à jour
• écoute régulière par le routeur des mises à jour reçues par cette interface
RIP : ip classless
• network 10.0.0.0 affecte les 2 interfaces concernées
• La commande network attend en paramètre un numéro de réseau et non pas un sous-réseau.
• Dans le cas où vous tapez un numéro de sous-réseau, il sera automatiquement transformé en numéro de réseau
• Attention : si le routeur fonctionne en no ip classless, c'est à dire que le routage se fait suivant la classe, un paquet à destination de 10.1.3.3 ne sera pas routé sur la route par défaut car aucun réseau 10.1.3.0/24 n'est connecté au routeur
• En ip classless, il sera par contre routé sur la route par défaut
RIP : Configuration des options
• RIPv2 utilise les techniques suivantes pour éviter les boucles et accélérer la convergence
• Split horizon
• Split horizon with poison reverse (ou Poison reverse)
• Holddown
• Mise à jour déclenchée
• Pour désactiver le split horizon :
• Router(config-if)# no ip split-horizon
• Par défaut la valeur du holddown est de 180 secondes.
Dans certains cas, il peut être utile de diminuer cette valeur :
• en configuration router :
• timers basic update invalid holddown flush
• Faire un no timers basic pour retrouver les valeurs par défaut
RIP : Configuration des options
Dans l'exemple, un holddown de 90 secondes est suffisant.
Avec des mises à jour toutes les 30 secondes, si S2 disparaît, R2 va recevoir une nouvelle route pour S2 de la part de R3 (par exemple) mais si R2 attend 90 secondes avant de faire sa mise à jour, S2 aura disparu des tables de routage de R4 et de R3
RIP : Configuration des options
• Par défaut, les mises à jour sont faites toutes les 30 secondes
• Valeur modifiable par :
Router(config-router)# update-timer seconds
• Par la commande network, on « active » pour le routage toutes les interfaces sur le réseau spécifié. Pour qu'une interface n'envoie plus de mises à jour :
• Router(config-router)# passive-interface interface
• Attention : elle continue à les recevoir
RIP : Configuration des options
• Comme RIPv1 envoie ses mises à jour par broadcast, il se peut que le routeur soit connecté à un routeur voisin qui n'accepte pas les broadcast de part le protocole d'interconnexion qu'il utilise. Dans ce cas, on peut spécifier directement l'adresse de ce voisin pour lui envoyer en unicast les mises à jour
• Router(config-router)# neighbor ip_address
• Par défaut, les routeurs Cisco reçoivent les paquets RIPv1 et v2 mais n'envoie que des paquets RIPv1. Pour spécifier quel est le protocole à utiliser sur les interfaces
• Router(config-router)# version {1|2}
• Router(config-if)#ip rip send version 1 OU ip rip send version 2 OU ip rip send version 1 2
• Router(config-if)#ip rip receive version 1 OU ...
Vérification des protocoles utilisés
• Pour visualiser les routes : Router# show ip route
• Pour visualiser le protocole de routage utilisé:
• Router# show ip protocols
• Pour visualiser le détail d'une interface :
• Router# show interface interface
• ou Router# show interface pour visualiser toutes les interfaces
• Pour visualiser une interface ip
• Router# show ip interface
• ou Router# show ip interface brief pour visualiser uniquement les informations importantes de toutes les interfaces
• Pour visualiser la base de données RIP du routeur
• Router# show ip rip database
OSPF : principe
Routage à état des liens (Link-State) : permettre au routeur d'avoir une vision globale du réseau et de sa topologie
• une base de données sur chaque nœud représentant la topologie totale du réseau
• détection de boucle
• calcul de la route la plus courte par l'algorithme de Dijkstra
• configuration pour chaque interface
• métrique par type de coût (longueur de la file d'attente, débit, distance en saut, etc)
• Ne diffuser que les modifications détectées dans la topologie (accessibilité et coût)
• routage par type de service (champ TOS du datagramme)
• notion d'aire de routage : introduit des notions de domaine et de zone dans le but de limiter la charge de calcul de chaque routeur
OSPF : principe
• Le protocole Hello permet à chaque routeur d'échanger des informations concernant l'état de leurs liens, et de vérifier que les liaisons sont opérationnelles.
• Deux mécanismes pour détecter les changements d'état de lien :
• Les changements d'état d'interface : ces changements sont détectés localement par l’OS du routeur.
• L'expiration du temporisateur pour un paquet Hello, indiquant qu'un voisin est inactif.
• La détection d'un changement de topologie est suivie par l'inondation, sur toutes les interfaces, d'un paquet indiquant cette information.
• Chaque routeur met à jour sa base de donnée et recalcule le plus court chemin pour chaque destination.
OSPF : Aire de routage
Un réseau OSPF est divisé en plusieurs aires (Area) qui se connectent à une aire centrale de distribution appelée dorsale (backbone).
• Chaque aire est désignée par un identifiant de 32 bits mis sous la forme X.Y.Z.T. Cet identifiant ne correspond pas forcément à l'adresse réseau (même si par commodité, on le choisit souvent ainsi).
• Pas plus d'une cinquantaine de routeurs maximum par aire.
• Réduction du nombre de routeur par zone de diffusion
OSPF : Aire dorsale (area backbone)
L'aire dorsale :
• a pour identifiant 0.0.0.0 obligatoirement
• sert pour l'acheminement inter-aire
• est obligatoire si le réseau n'a pas été
découpé en aire, il y en a qu'une seule et
c'est la dorsale d'id 0.0.0.0.
OSPF : routeurs
On distingue 3 types de routeurs dans OSPF :
• routeur interne (Internal Router - IR) : qui annoncent les routes internes à leur aire
• routeur de la dorsale (Backbone Router - BR) : qui annoncent les routes internes à la dorsale. (En fait ce sont des IR de l'aire "dorsale")
• routeur frontière (Area Boundary Router - ABR) : qui assurent la connexion à la dorsale
• routeur frontière de systèmes autonomes (Autonomous System Boundary Router - ASBR) : pour assurer l‘échange avec d'autres systèmes autonomes
OSPF : routeurs
OSPF : relation de voisinage et relation d'adjacence
•
Deux routeurs sont voisins s'ils appartiennent à une même zone et sont reliés par un même média (lien de diffusion « broadcast domain » ou à chaque extrémité d'un lien point-à-point).
•
Deux routeurs sont adjacents si ils sont voisins
et synchronisés, c'est-à-dire s'ils échangent des
informations sur la topologie du réseau pour
s'assurer du bon fonctionnement l'un de l'autre.
(Designated Router - DR)
• Un seul routeur parmi les routeurs voisins est responsable.
• le DR (et le BDR) assure la diffusion des messages vers les routeurs de la zone
• évite d’établir n2 relations entre routeurs voisins et de dupliquer la même information
• Le DR (designated router) sert de point central d‘échange.
• Le BDR (backup designated router - DR de secours) surveille le DR et prend sa place s'il ne répond plus.