OSPF expliqué : voisinages, LSA, zones et coût
Deux routeurs, un câble, le lien est actif, OSPF est activé des deux côtés, et toujours aucune route. Le voisin reste en ExStart et n'en bouge plus. La cause tient généralement à un seul nombre, et ce n'est pas celui que l'on vérifie en premier.
Cette page explique comment OSPF construit sa carte, les huit états de voisinage, le routeur désigné, les zones et les types de LSA, et les valeurs par défaut qui mettent Cisco, Huawei, Aruba et Juniper en désaccord sur un même lien.
L'état de liens en une minute
OSPF est un protocole à état de liens. Chaque routeur décrit ses propres liens dans des link state advertisements et les diffuse par inondation, si bien que chaque routeur d'une zone détient la même base de données, la même carte. Chaque routeur exécute ensuite l'algorithme shortest path first sur cette carte et construit son propre arbre des meilleures routes.
OSPF fonctionne directement sur IP, protocole 89, et envoie ses hellos à l'adresse multicast 224.0.0.5.
Le router ID
Chaque routeur a besoin d'un router ID de 32 bits, unique dans le réseau. Si vous n'en définissez pas, chaque constructeur le choisit à sa manière. Cisco, Huawei et Aruba prennent l'adresse de loopback la plus haute, puis l'adresse d'interface la plus haute. Juniper fait l'inverse : la loopback la plus basse, puis l'adresse physique la plus basse.
Et une fois choisi, il ne change qu'au redémarrage du processus OSPF. Le conseil de Juniper vaut pour tout le monde : configurez-le explicitement.
Les huit états de voisinage
Deux routeurs deviennent voisins étape par étape. Down. Init, quand arrive un hello qui ne me mentionne pas encore. Two way, quand chacun se voit dans le hello de l'autre. Puis ExStart, où ils conviennent de qui mène l'échange, Exchange, où ils décrivent leurs bases de données, Loading, où ils demandent ce qui leur manque, et Full.
Avant tout cela, les hellos doivent concorder sur le masque de sous-réseau, les intervalles hello et dead, la zone et le drapeau stub. À la moindre différence, le paquet est tout simplement rejeté.
Le routeur désigné
Sur un segment partagé comme Ethernet, les routeurs ne deviennent pas tous pleinement adjacents entre eux. Ils élisent un routeur désigné et un routeur de secours. La priorité la plus haute l'emporte, puis le router ID le plus haut. Une priorité de zéro signifie jamais. L'élection n'est pas préemptive : un routeur qui arrive plus tard avec une meilleure priorité attend.
La priorité par défaut est de 1 chez Cisco, Huawei et Aruba, et de 128 chez Juniper : dans un segment mixte, c'est donc le routeur Juniper qui gagne, sauf si vous fixez vous-même les priorités.
Les zones et les types de LSA
Les grands réseaux sont découpés en zones autour du backbone, la zone zéro. Les LSA de type 1 (router) et de type 2 (network) restent à l'intérieur de leur zone. Les routeurs de bordure de zone les résument en type 3. Le type 4 désigne les routeurs qui injectent des routes externes, et ces routes externes circulent en type 5 dans tout le réseau.
Dans une zone not so stubby, les routes externes entrent en type 7 et sont traduites en type 5 à la bordure.
Stub, totally stubby, NSSA
Une zone stub refuse les routes externes de type 5 et reçoit à la place une route par défaut de son routeur de bordure. Totally stubby, un terme de constructeur absent du standard, bloque en plus les résumés de type 3. Une zone not so stubby est une zone stub qui importe malgré tout ses propres routes externes, en type 7.
Un piège, documenté par Juniper, Aruba et Huawei chacun à sa manière : la zone stub ne reçoit sa route par défaut que si le routeur de bordure est configuré ou connecté de la manière attendue.
Le coût, et le piège de la bande passante de référence
Le standard laisse le coût d'interface à l'administrateur. Les constructeurs le calculent en divisant une bande passante de référence par le débit du lien, et ils ne s'accordent pas sur la référence. Cisco IOS XE, Huawei et Juniper utilisent 100 mégabits. Cisco NX-OS utilise 40 gigabits. Aruba utilise 100 gigabits.
Le même lien gigabit coûte 1 sur un commutateur, 40 sur un autre et 100 sur un troisième. Dans un réseau mixte, fixez la bande passante de référence à la même valeur partout.
Les temporisateurs
Hello toutes les 10 secondes, dead au bout de 40, sur les liens broadcast et point à point ; 30 et 120 sur les réseaux non broadcast. Les deux côtés doivent correspondre exactement. Huawei ajoute un garde-fou : il n'utilise pas d'intervalle dead inférieur à 20 secondes, sauf si vous insistez.
L'authentification
Le standard d'origine prévoit trois types d'authentification OSPF : aucune, un mot de passe simple en clair, et un condensé cryptographique MD5. La RFC 5709 a ajouté HMAC SHA.
Huawei classe simple, MD5 et HMAC MD5 comme des risques de sécurité dans sa propre documentation et recommande HMAC SHA256. Si vos routeurs le permettent, utilisez l'algorithme le plus robuste que les deux côtés prennent en charge.
Trois pannes classiques
Premièrement, le voisin bloqué en ExStart ou en Exchange. Cisco désigne une incohérence de MTU comme la cause la plus fréquente. Huawei se comporte autrement : par défaut, il annonce un MTU de zéro et saute la vérification, si bien que l'adjacence atteint Full, puis de grosses mises à jour peuvent être perdues et des routes ne jamais être apprises. La correction de Huawei est ospf mtu enable.
Deuxièmement, un router ID dupliqué : Cisco en documente les symptômes, des avertissements de flooding et un calcul du plus court chemin relancé toutes les quelques secondes.
Troisièmement, la zone stub qui ne reçoit jamais sa route par défaut.
La lecture sur quatre constructeurs
La première question porte toujours sur les voisins. Cisco : show ip ospf neighbor. Huawei : display ospf peer brief. Aruba : show ip ospf neighbors. Juniper : show ospf neighbor.
Ensuite la base de données, pour vérifier que chaque routeur détient bien la même carte.
Ce que NacTrack montre
Comparer les bases de données routeur par routeur ne passe pas à l'échelle. NacTrack lit OSPF sur chaque routeur en SSH, quel que soit le constructeur, et affiche sur une seule page les voisins, les zones et la base de données à état de liens, avec une analyse de la topologie qu'ils décrivent.
Voir ce protocole sur votre réseau
NacTrack lit ces protocoles sur vos équipements, en SSH et en lecture seule.
