OSPF (première partie)

Cet article a été écrit pour moi, afin que, si nécessaire, rafraîchisse rapidement ma mémoire et comprenne la théorie. J'ai décidé de le publier, peut-être qu'il sera utile à quelqu'un, ou peut-être que je me trompe dans quelque chose.

Dans cet article, nous allons essayer de comprendre la théorie du protocole OSPF. Nous ne nous pencherons pas sur l'histoire et le processus de création du protocole; cette information est abondante dans presque tous les articles sur OSPF. Nous allons essayer de comprendre plus en détail comment fonctionne OSPF et comment il construit sa table de routage. Il est important de donner une définition générale du protocole:

OSPF (Open Shortest Path First) est un protocole de routage dynamique basé sur la technologie d'état des liens et utilise l'algorithme Dijkstra pour trouver le chemin le plus court.

La question se pose immédiatement - Qu'est-ce que la technologie de suivi des canaux? Je pense que ce nom n'est pas entièrement réussi. Il se trouve qu'il existe deux types de protocoles de routage dynamique: Link-state et Distance-Vector. Considérez leurs principes de travail:

Dans les protocoles à vecteur de distance, le routeur reconnaît les informations de route via des routeurs directement connectés au même segment de réseau. Autrement dit, le routeur ne dispose d'informations sur la topologie que dans les limites de ses routeurs voisins et n'a aucune idée de la disposition de la topologie derrière ces routeurs, en se concentrant uniquement sur les métriques. Dans les protocoles à état de liaison, chaque routeur ne doit pas facilement connaître les meilleurs itinéraires vers tous les réseaux distants, mais doit également avoir en mémoire une carte réseau complète avec toutes les connexions existantes entre d'autres routeurs, y compris. Ceci est réalisé en construisant une base LSDB spéciale, mais plus à ce sujet plus tard.

Commençons donc par la façon dont LSDB est construit à partir duquel le routeur apprend les routes tout-tout? Nous construisons la topologie initiale pour l'étude. Cela ressemble à ceci:

image

Nous allons configurer OSPF. Où commence OSPF? C établissement d'un voisinage entre les routeurs - après avoir activé OSPF sur les interfaces du routeur, les routeurs commencent à envoyer des messages Hello. Ce message est envoyé à l'adresse de multidiffusion - 224.0.0.5 toutes les 10 secondes (Hello Timer). Nous allons d'abord activer OSPF sur le routeur vIOS1.

Voyons à quoi ressemble le package Hello:

image

Dans le message, il est important de faire attention aux champs tels que l'ID de zone, le routeur OSPF source. Lorsque le processus OSPF démarre, l'ID de routeur est sélectionné, ce qui est nécessaire pour identifier le routeur parmi les autres routeurs OSPF. Les règles de choix de ce paramètre sont les suivantes:

1. Configuré par une commande spéciale routeur-id ABCD - au format d'adresse IP.
2. Une interface de bouclage et plusieurs interfaces avec différentes adresses sont configurées:

  • L'adresse attribuée à l'interface de bouclage sera l'ID du routeur.

3. Configuré plusieurs interfaces de bouclage avec plusieurs adresses IP dans chacune:

  • L'adresse IP la plus élevée attribuée à l'une des interfaces de bouclage sera l'ID du routeur.

4. Configuré plusieurs interfaces avec une adresse IP sur chacune:

  • La plus grande adresse IP de toutes les interfaces actives sera l'ID du routeur.

Passons maintenant au champ Area ID - c'est un concept plus important et fondamental dans OSPF. Pour fonctionner avec un grand nombre de routeurs, OSPF utilise des zones. Chacune des interfaces de routeur doit appartenir à une seule zone. Dans notre topologie, les interfaces Gi0 / 0 des routeurs vIOS1, vIOS2, vIOS3, vIOS4 appartiennent à la zone 0. La zone 0 est appelée Backbone et est le centre de toutes les autres zones. Chaque autre zone doit être connectée à la zone Backbone (le lien virtuel n'est pas encore pris en compte). Dans une analyse plus approfondie, ces concepts deviendront plus clairs.

Nous avons donc activé OSPF sur vIOS1 et il a commencé à envoyer des paquets Hello toutes les 10 secondes. Activez OSPF sur vIOS2 et voyez comment les relations avec les voisins sont établies.

image

Nous surveillons donc attentivement la séquence des messages. Tout d'abord, Hello envoie uniquement le routeur 1.1.1.1 (192.168.1.1), dès que nous activons OSPF sur 192.168.1.2, un paquet Hello sera envoyé. vIOS1 et vIOS2 recevront des paquets Hello l'un de l'autre et pour que le voisinage ait lieu, il est important que les paramètres suivants soient les mêmes dans la configuration OSPF sur les deux routeurs:

  • Hello Interval - fréquence d'envoi des messages Hello
  • Router Dead Interval - la période de temps après laquelle le voisin est considéré comme indisponible s'il n'y a pas de Bonjour.
  • ID de zone - le quartier ne peut être établi que via des interfaces dans une zone.
  • Authentification - le mot de passe utilisé pour l'authentification et le type d'authentification, le cas échéant.
  • Indicateur de zone de stub - indicateur facultatif défini sur tous les routeurs appartenant à la zone de stub

Si vous regardez le package Hello illustré ci-dessus, tous ces paramètres sont indiqués dans le package Hello. Dès qu'un des routeurs (vIOS1) reçoit un nouveau paquet Hello et vérifie toutes les conditions, il enverra immédiatement un paquet Hello où il indiquera l'adresse du nouveau routeur (vIOS2) dans le champ Voisin actif, vIOS2 se recevra et se verra dans le champ voisins, ajoutera vIOS1 aux voisins et enverra le paquet de monodiffusion à 192.168.1.1 (vIOS1), où il l'indiquera comme voisin. Pour ainsi dire, ils sont devenus voisins et maintenant le plaisir commence - l'échange d'informations et la construction de la base LSDB. Pour l'implantation du quartier, je vous conseille de lire l' article suivant.

La base LSDB contiendra des informations sur les itinéraires et ce LSDB après l'établissement du quartier devrait être identique sur tous les routeurs dans la même zone. Et, tout d'abord, les routeurs, après avoir établi un quartier, commencent le processus de synchronisation de leurs bases de données (vIOS1 avec vIOS2). Comme vous pouvez le voir, tout commence par l'échange de messages DB Description (DBD). Pour être plus clair, parlons des types de messages qu'OSPF utilise:

  • Bonjour - utilisé pour découvrir les voisins, vérifier les paramètres, établir des relations de voisinage avec eux et surveiller la disponibilité.
  • Description de la base de données (DBD) - Vérifie l'état de la synchronisation de la base de données sur les routeurs.
  • Link-State Request (LSR) - demande des enregistrements spécifiques sur l'état des canaux du routeur au routeur pour la synchronisation.
  • Link-State Update (LSU) - Envoie des enregistrements d'état de canal spécifiques en réponse à une demande.
  • Accusé de réception d'état de liaison (LSAck) - accuse réception d'autres types de paquets.

Il est également important d'introduire un concept tel que LSA:

Link State Advertisement (LSA) - Une unité de données qui décrit l'état local d'un routeur ou d'un réseau. De nombreux LSA décrivant les routeurs et les réseaux forment une base de données d'état de liaison (LSDB). LSDB se compose de plusieurs types de LSA. Très détaillé sur chaque LSA est écrit dans cet article. Les messages DBD utilisent de nombreux indicateurs pour déterminer l'état de synchronisation et ces messages contiennent des informations sur leur propre base de données. C'est-à-dire que vIOS1 signale dans ces messages que dans ma base de données il y a des informations sur des réseaux tels que 192.168.0 / 24, 1.1.1.0/24 (LSA Type 1), et vIOS2 signale à son tour qu'il a des enregistrements sur Réseaux: 192.168.2.0/24, 2.2.2.0/24 (LSA Type 1). Après avoir reçu les messages DBD, chaque routeur envoie LSAck pour confirmer le message reçu, puis compare les informations de la base de données voisine avec les siennes. S'il s'avère qu'aucune information n'est disponible, le routeur envoie une demande LS, où il demande des informations complètes sur tout LSA. Par exemple, vIOS1 a demandé LS Request à vIOS2, vIOS2 répond avec LS Update, qui contient déjà des informations détaillées sur chaque route. Voici la mise à jour LS:

image

Comme vous pouvez le voir, dans ce post, vIOS2 parle des sous-réseaux connus de lui et des informations qui leur sont associées. De plus, vIOS1 parle de son LSDB. Et à la fin, les routeurs ont le même LSDB. Une fois le processus terminé, l'algorithme de Dijkstra (Shortest Path First) est lancé. Il calcule tous les itinéraires connus à partir de LSDB et place les meilleurs d'entre eux dans la table de routage. Le meilleur avec la métrique inférieure, mais plus à ce sujet plus tard.

Réfléchissons à la question, que se passe-t-il si nous activons OSPF sur vIOS3? Puisque vIOS3 devra construire LSDB et le synchroniser avec d'autres routeurs, la question se pose avec qui exactement synchroniser? Avec vIOS1 ou vIOS2? Avec chacun individuellement? Dans quelle mesure est-ce optimal? Par conséquent, dans OSPF, il existe une chose telle que le routeur désigné DR. Nous introduisons ce concept:

Routeur dédié (routeur désigné, DR) - gère le processus de distribution LSA sur le réseau. Chaque routeur de réseau établit une relation de voisinage avec DR. Les informations sur les modifications du réseau sont envoyées par DR, le routeur qui a détecté cette modification, et DR est responsable de veiller à ce que ces informations soient envoyées aux autres routeurs du réseau.

En d'autres termes, si un nouveau routeur apparaît dans le segment de réseau, il synchronisera son LSDB avec DR. Il est également important de noter que non seulement les nouveaux, mais tous les autres routeurs informeront le DR à ce sujet lorsque le réseau change ou qu'un nouvel itinéraire apparaît, et les autres prendront ces informations du DR. Mais alors des questions se posent: que se passera-t-il si la reprise après incident échoue? Comment DR est-il sélectionné?

En cas d'échec, un nouveau DR doit être sélectionné. De nouvelles relations de voisinage doivent être formées et, tant que les bases de données du routeur ne seront pas synchronisées avec la nouvelle base de données DR, le réseau ne sera pas disponible pour le transfert de paquets. Pour éliminer cet inconvénient, sélectionnez BDR - Routeur désigné de sauvegarde:

Routeur désigné de sauvegarde (BDR). Chaque routeur réseau établit une relation de voisinage non seulement avec DR, mais aussi BDR. DR et BDR établissent également des relations de voisinage entre elles. Lorsque DR échoue, BDR devient DR et remplit toutes ses fonctions. Étant donné que les routeurs réseau ont établi des relations de voisinage avec les BDR, le temps d'indisponibilité du réseau est minimisé. Ainsi, dans notre réseau, nous obtenons non seulement DR, mais aussi BDR. Les autres routeurs ne recevront et ne rapporteront des informations pertinentes sur le réseau que par leur intermédiaire. DR et BDR ne peuvent être sélectionnés que dans un seul segment, pas une zone! Autrement dit, pour les routeurs vIOS1, vIOS2, vIOS3, vIOS4, un DR et BDR seront sélectionnés, et, par exemple, entre vIOS et vIOS1, leurs DR et BDR seront déterminés par rapport à leur segment de réseau, même s'ils se trouvent dans la même zone 0. Pour la communication avec DR et BDR, les routeurs utilisent une adresse de multidiffusion de 224.0.0.6.

La question suivante est: comment le DR / BDR est-il sélectionné? Les critères suivants s'appliquent:

  1. DR: routeur de priorité la plus élevée de l'interface OSPF.
  2. BDR: Routeur avec la deuxième priorité la plus élevée de l'interface OSPF.
  3. Si les priorités des interfaces OSPF sont égales, l'ID de routeur le plus élevé est utilisé pour effectuer la sélection. Comme nous l'avons dit, les routeurs définissent leur ID de routeur. Au début, lorsque l'OSPF a été lancé sur vIOS1 et vIOS2, en plus d'établir un quartier, des élections DR / BDR ont également eu lieu. VIOS2 avec ID - 2.2.2.2 a gagné dans ce différend, alors que vIOS1 avait ID - 1.1.1.1. vIOS1 a été sélectionné comme BDR. Il est important de noter que le processus de sélection de DR et BDR ne se produit pas immédiatement après la réception des premiers paquets Hello du deuxième routeur. Pour ce faire, il existe un temporisateur spécial égal à Router Dead Interval - 40 secondes. Si pendant ce temps un paquet Hello avec le meilleur ID n'est pas reçu, une sélection sera effectuée en fonction des paquets Hello existants.

Ce n'est que maintenant que nous pouvons revenir à la question - que se passera-t-il si nous activons OSPF sur vIOS3? Après avoir activé OSPF, vIOS3 commencera à envoyer et à écouter les paquets Hello. Il recevra les paquets Hello de vIOS1 et vIOS2, qui indiqueront quels routeurs sont DR et BDR et comprendront avec qui synchroniser LSDB. Il est important de noter que lorsqu'un routeur avec un meilleur ID apparaît, alors DR / BDR ne change pas jusqu'à ce que l'un d'eux se bloque. Après cela, vIOS3 commence à synchroniser son LSDB avec ces routeurs.

image

Après avoir reçu de nouvelles informations de vIOS3, DR envoie des messages de mise à jour LS à tous les routeurs à l'adresse 224.0.0.5, à laquelle d'autres routeurs, après avoir reçu un paquet, envoient LS Acknowledge à DR, mais à l'adresse 224.0.0.6 (adresse pour DR / BDR).

Selon le même schéma, nous connectons également vIOS4. Après la synchronisation, tous les routeurs ont le même LSDB. Voyons à quoi ressemblent les états de voisinage de vIOS3. Commande show ip ospf neighbour:

image

Comme nous pouvons le voir, DR est 2.2.2.2, BDR est 1.1.1.1 et 2WAY / DROTHER est sélectionné avec vIOS4. Les États du voisinage ont été mentionnés ci-dessus .

Et voici les états de voisinage sur vIOS1 avec le voisinage établi avec vIOS:

image

Comme vous pouvez le voir, il a deux DR car il a un voisin dans un autre segment du réseau.

Multizones


Considérez le fonctionnement d'OSPF lorsque plusieurs zones sont utilisées. Changez notre topologie en ajoutant de nouveaux routeurs:

image

Pour commencer, nous allons configurer OSPF sur vIOS1 et vIOS afin que leurs interfaces Gi0 / 1 sur vIOS et vIOS1 soient dans la zone 1. Voyons ce qui change. vIOS1 possède désormais des interfaces à la fois dans la zone 0 (Gi0 / 0) et dans la zone 1 (Gi0 / 0). Un tel routeur est appelé ABR - Area Border Router (ci-dessous, nous donnons une définition plus correcte de ABR). ABR enverra les informations d'itinéraire d'une zone à l'autre. Cela se fait via LSA Type 3:

Type 3 LSA - Network Summary LSA - annonce sommaire de l'état des canaux du réseau:

  • Diffusion d'annonces par les routeurs périphériques
  • L'annonce décrit les itinéraires vers des réseaux en dehors de la zone locale
  • Contient des informations sur les réseaux et le coût du chemin d'accès à ces réseaux, mais n'envoie pas d'informations sur la topologie du réseau
  • Par défaut, le routeur de périphérie envoie une annonce distincte pour chaque réseau qu'il connaît. Si nécessaire, sur le réseau ABR peut être résumé
  • ID d'état de liaison - numéro de réseau de destination.

À la base, entre les zones, le principe de fonctionnement du protocole ressemble à celui du protocole vecteur de distance, ne transmettant que des informations de route avec des métriques. Voici la mise à jour LS de vIOS1 dans la zone 0, qui contient 3 pièces LSA Type 3:

image

À la base, la structure de LSA Type 3 n'est pas très différente de LSA Type 1, mais elles affectent le protocole de différentes manières. Lorsqu'un LSA mis à jour est reçu ou si un LSA de type 1 et 2 est perdu, SPF (algorithme de chemin le plus court) est redémarré et recalcule le LSDB.

À la réception d'un LSA de type 3, ce processus ne se produit pas - un itinéraire avec une métrique dans le LSA de type 3 est obtenu. Ce LSA stocke les données par lesquelles ABR un itinéraire donné a été reçu (ABR est spécifié dans le champ Routeur publicitaire) et une métrique pour atteindre cet ABR déjà disponible en LSDB. Ainsi, la métrique de LSA Type 3 est résumée avec la métrique de la route vers ABR et nous obtenons la route terminée sans redémarrer le SPF. Ce processus est appelé calcul SPF partiel . Ceci est très important car sur les grands réseaux, les tailles LSDB peuvent être assez grandes et l'exécution de SPF n'est souvent pas bonne. De plus, la création de LSA de type 3 suggère que la modification et le recalcul des LSDB constituent un domaine. ABR signale seulement qu'avec une route, ce qui a changé.

Il est également important de noter que tout itinéraire d'une zone non nulle à une zone non nulle passe par la zone 0. S'il existe un ABR, il ne peut pas être connecté à la zone 0 (nous excluons l'option avec lien virtuel). La zone 0 est le cœur qui relie toutes les autres zones et assure le routage entre les zones. La définition de l'ABR ressemble à ceci:

Routeur frontière (routeur frontière de zone, ABR) - connecte une ou plusieurs zones à la zone de jonction et agit comme une passerelle pour le trafic inter-zone. Un routeur périphérique a toujours au moins une interface dans la zone de jonction. Pour chaque zone attachée, le routeur gère une base de données d'état des canaux distincte.
Nous avons traité de la mise en place du quartier, de la création de LSDB et SPF, avec la zone habituelle. Examinons maintenant la convergence et la réponse d'OSPF aux changements de topologie.

Examinons notre topologie et imaginons que vIOS3 a cessé de fonctionner (l'état des canaux n'a pas changé). Cela aidera à reconstruire la topologie de la minuterie d'intervalle mort - 40 secondes. Si pendant cet intervalle, le routeur ne reçoit pas de paquet Hello d'un voisin, le quartier s'effondre. Dans notre cas, DR enverra LS Update avec LSA Type 2, ce qui indique qu'il n'y a pas de vIOS3 parmi les routeurs connectés, cela entraînera le démarrage de SPF et le recomptage LSDB sans LSA reçu de vIOS3. Il est important de noter que sur un routeur vIOS4 normal, même l'épuisement du Dead Interval Timer et la perte de proximité avec vIOS3 ne conduisent pas à un recalcul de la topologie, c'est le message LS Update avec LSA Type 2 qui démarre ce processus.

Type 2 LSA - Network LSA - Annonce de l'état de la liaison réseau :

  • Distribué par DR dans plusieurs réseaux d'accès
  • Le LSA réseau n'est pas créé pour les réseaux dans lesquels DR n'est pas sélectionné
  • Distribué uniquement dans une zone
  • ID d'état de liaison - Adresse IP de l'interface DR

Ainsi, ignorer les données qui ont cessé de fonctionner se produit à l'aide de ce message. C'est cette indication des voisins qui est le déclencheur du rejet des itinéraires non pertinents.

Rallumez vIOS3 et rétablissez le quartier. La prochaine expérience sera une réaction à la désactivation de l'interface Gi0 / 1 sur vIOS3. Dès que vIOS3 détecte des coupures de liens, il envoie instantanément LS Update à DR à l'adresse 224.0.0.6, où il est signalé que certaines routes sont tombées en définissant un indicateur dans LSA - LS Age égal à 3600 secondes. Pour LSDB, il s'agit de Max Age et tous les LSA avec Max Age ne sont pas pris en compte dans SPF, ils ne seront donc pas dans la table de routage. La question est: quand Age LSA atteint naturellement Max Age, que se passe-t-il? Pour ce faire, OSPF a LSRefreshTime - égal à la moitié de l'âge maximal, toutes les 1800 secondes LS Update est envoyé par le routeur pour mettre à jour les données de la minuterie:

image

De plus, DR ayant traité cette mise à jour LS, envoie LS LS à tous les autres routeurs à l'adresse 224.0.0.5. Dès que les routeurs obtiennent de nouvelles informations, ils envoient LSAck. Cela garantit une bonne convergence dans OSPF.

Choisir le meilleur itinéraire


Le routeur sélectionne le meilleur itinéraire en fonction de la valeur métrique la plus faible. Cependant, OSPF prend également en compte plusieurs autres facteurs lors du choix d'un itinéraire. Dans ce cas, la source de l'itinéraire et son type sont importants. La sélection d'itinéraire prioritaire est la suivante:

  • Itinéraires internes d'une zone (intra-zone)
  • Itinéraires entre zones (inter-zones)
  • Routes externes de type 1 (E1)
  • Routes externes de type 2 (E2)

E2 ( ASBR), E2, ASBR, . , . (cost). :

cost = reference bandwidth / link bandwidth. Reference bandwidth — . , Cisco 100Mbit.

ABR Loop Prevention. , OSPF distance-vector . , , . , Split Horizon distance-vector . , 0 4 :

image

, vIOS18 100 Gi0/0. , vIOS18 LSA Type 3, 0. , LSA Type 3 0.

Source: https://habr.com/ru/post/fr418391/


All Articles