8. Protocol Packet Processing (Traitement des paquets de protocole)
Ce chapitre décrit en détail comment les routeurs OSPF traitent les paquets de protocole reçus. C'est la partie centrale de l'implémentation OSPF, couvrant la logique de traitement de tous les types de paquets.
Aperçu du chapitre (Chapter Overview)
OSPF utilise 5 types différents de paquets de protocole, chacun avec un flux de traitement spécifique :
- Paquets Hello
- Paquets Database Description (DD)
- Paquets Link State Request (LSR)
- Paquets Link State Update (LSU)
- Paquets Link State Acknowledgment (LSAck)
8.1 Réception de paquets de protocole (Receiving Protocol Packets)
Traitement général de réception (General Reception Processing)
Étape 1 : Réception couche IP
- Adresse de destination : 224.0.0.5 (AllSPFRouters) ou 224.0.0.6 (AllDRouters) ou unicast
- Numéro de protocole : 89 (OSPF)
- IP TTL : Doit être 1 (sauf liens virtuels)
Étape 2 : Validation d'en-tête OSPF
| Élément de vérification | Exigence | Traitement en cas d'échec |
|---|---|---|
| Version Number | Doit être 2 | Rejeter le paquet |
| Packet Type | 1-5 valide | Rejeter le paquet |
| Checksum | Doit être correct | Rejeter le paquet |
| Area ID | Doit correspondre | Rejeter le paquet |
| Authentication | Doit passer | Rejeter le paquet |
8.2 Traitement des paquets Hello (Hello Packet Processing)
Réception de paquets Hello
Flux de traitement
Recevoir Hello
↓
Valider paramètres Hello
↓
Rechercher/Créer voisin
↓
Mettre à jour état voisin
↓
Vérifier élection DR/BDR
Validation des paramètres Hello
Paramètres devant correspondre
| Paramètre | Description | Traitement en cas de non-correspondance |
|---|---|---|
| Network Mask | Masque réseau | Rejeter le paquet |
| Hello Interval | Intervalle d'envoi Hello | Rejeter le paquet |
| Dead Interval | Intervalle d'expiration voisin | Rejeter le paquet |
| Options | Drapeaux d'options | Rejeter le paquet |
8.3 Traitement des paquets Database Description (DD Packet Processing)
Réception de paquets DD
Condition préalable
- L'état du voisin doit
être >= ExStart - Sinon, rejeter le paquet
Branches de logique de traitement
Branche 1 : État ExStart
Détermination du Master
if (DD reçu contient drapeaux I, M, MS):
if (Router ID voisin > Router ID local):
Ce routeur devient Slave
Le voisin devient Master
Accepter le numéro de séquence du voisin
else:
Ignorer ce DD
8.4 Traitement des paquets Link State Request (LSR Packet Processing)
Réception de paquets LSR
Condition préalable
- L'état du voisin doit
être >= Exchange - Sinon, rejeter le paquet
Flux de traitement
Recevoir LSR
↓
Parcourir la liste de demandes
↓
Rechercher chaque LSA dans LSDB
↓
Trouvé : Ajouter à la réponse LSU
Non trouvé : Événement BadLSReq
↓
Envoyer paquet LSU
8.5 Traitement des paquets Link State Update (LSU Packet Processing)
Réception de paquets LSU
Complexité du traitement
- LSU peut contenir plusieurs LSA
- Chaque LSA est traité indépendamment
- Type de paquet le plus complexe
Validation LSA
Étape 1 : Validation de base
| Élément de vérification | Exigence |
|---|---|
| LS Checksum | Doit être correct |
| LS Type | Doit être un type connu |
| LS Age | Doit être <= MaxAge (3600s) |
8.6 Traitement des paquets Link State Acknowledgment (LSAck Packet Processing)
Réception de paquets LSAck
Flux de traitement
Recevoir LSAck
↓
Parcourir la liste des en-têtes LSA confirmés
↓
Rechercher dans Link State Retransmission List
↓
Trouvé et correspond : Retirer de la liste de retransmission
Non trouvé ou ne correspond pas : Ignorer cette confirmation
8.7 Envoi de paquets de protocole (Sending Protocol Packets)
Décision d'envoi
Paquets Hello
- Envoi périodique (Hello Interval)
- Destination : AllSPFRouters (224.0.0.5)
Paquets DD
- Pendant la synchronisation de base de données
- Destination : Adresse unicast du voisin
Paquets LSU
- Réponse à LSR : Unicast
- Inondation de nouveaux LSA : Multicast ou unicast
8.8 Mécanisme de retransmission (Retransmission Mechanism)
Link State Retransmission List
Objectif
- Suivre les LSA non confirmés
- Chaque voisin maintient une liste indépendante
RxmtInterval
- Valeur par défaut : 5 secondes
- Configurable
- Doit être augmenté pour les liens à haute latence
Résumé technique (Technical Summary)
Principes de traitement clés
-
Validation stricte
- Tous les paquets doivent passer plusieurs couches de validation
- Tout non-correspondance entraîne un rejet immédiat
- Garantit la sécurité du protocole
-
Piloté par état
- L'état du voisin détermine la logique de traitement
- Transitions d'état claires
- Évite les opérations invalides
-
Transmission fiable
- Mécanisme de confirmation
- Mécanisme de retransmission
- Détection par numéro de séquence
Références (References)
- Texte complet : RFC 2328 Section 8
Note : Le traitement des paquets de protocole est au cœur de l'implémentation OSPF. Comprendre le flux de traitement de chaque type de paquet est essentiel pour une implémentation correcte et le dépannage.