Résumé

  • Pour RFC 9599, la capacité ECN appartient à toute la boucle de retour : une couche basse ne devrait marquer que si les sorties possibles, le récepteur et le régulateur de charge peuvent conserver puis exploiter l’indication.
  • Une migration sûre couvre chaque nœud susceptible de retirer l’en-tête marqué. À la décapsulation, l’état sortant est calculé à partir des états interne et externe ; si le transport interne ne comprend pas ECN, la perte redevient le signal honnête.
  • Les modes feed-forward-and-up, feed-up-and-forward et feed-backward ont des limites différentes. Un taux de pertes plus faible ne prouve ni la transmission du marquage, ni le retour du récepteur, ni la réduction du débit source.

Le programme de modernisation commence par le cœur. Quelques commutateurs de nouvelle génération savent marquer une unité de données au lieu de la supprimer lorsque leur file se remplit. Les premiers tableaux de bord sont flatteurs : moins de pertes, davantage de paquets livrés, aucun incident visible. L’organisation parle déjà d’un réseau « ECN activé ».

Mais les sorties n’ont pas toutes été modernisées. Lorsqu’un paquet emprunte un chemin de secours, un ancien équipement enlève l’en-tête externe sans reporter la marque de congestion dans l’en-tête IP. Le paquet est livré. La preuve qui devait demander à la source de ralentir disparaît. Une migration évaluée par le nombre de boîtiers remplacés masque donc l’unique équipement qui peut annuler tout le mécanisme.

RFC 9599 traite cette incohérence comme un problème de conception du protocole et du déploiement. Son but est de faire remonter une notification explicite depuis une couche basse ou un tunnel jusque dans IP, afin que la couche Internet transporte le signal vers le transport de bout en bout. Le document ne choisit ni l’algorithme de marquage de la file ni la réaction du transport. Il protège la chaîne qui les relie.

Le périmètre réel est la boucle de retour

La notice du RFC Editor et l’IETF Datatracker classent RFC 9599 comme Best Current Practice d’août 2024, intégrée à BCP 89. Elle actualise les conseils de RFC 3819 aux concepteurs de sous-réseaux. Les états ECN d’IP proviennent de RFC 3168, tandis que RFC 8311 assouplit le cadre d’expérimentation.

Le texte définit un ECN-PDU par son appartenance à une boucle où tous les nœuds nécessaires peuvent ramener la notification au régulateur de charge. Un Not-ECN-PDU appartient à une boucle qui comporte au moins une rupture. Cette propriété peut être portée par un champ, par un label, par l’état d’un flux ou par un plan de contrôle lié au paquet. Elle ne se réduit pas à l’apparence d’un bit dans une capture.

Une couche basse ne devrait donc pas apposer une marque explicite sur des données destinées à un transport ancien qui ne la comprend pas. Elle ne devrait pas davantage marquer si une sortie du sous-réseau risque de ne pas transmettre l’indication à la couche supérieure. Le système doit distinguer les boucles capables de porter la marque de celles qui ne le sont pas.

Il n’est pas nécessaire que tous les nœuds intérieurs marquent. Certains peuvent continuer à jeter des paquets. En revanche, dès qu’un seul nœud peut produire une marque, toutes les sorties pertinentes doivent savoir la préserver ou la convertir. L’asymétrie du déploiement est autorisée à l’intérieur ; elle ne l’est pas à la frontière qui supprime l’en-tête.

Une marque doit avancer puis monter

Dans le mode feed-forward-and-up, la congestion est signalée dans l’en-tête de la couche basse, avance jusqu’à la sortie du sous-réseau, puis monte dans l’en-tête supérieur lorsque l’enveloppe est retirée. À destination, le transport renvoie l’information vers la source. Chaque technologie peut encoder la congestion différemment ; c’est le sens du signal qui doit survivre.

Cette méthode est déjà utilisée pour les tunnels IP dans RFC 6040 et pour MPLS dans RFC 5129. RFC 9600 l’applique à TRILL, et RFC 9601 traite des en-têtes IP séparés par un shim. RFC 9599 en extrait des règles communes pour les autres protocoles qui encapsulent IP.

L’entrée ne doit pas remettre l’historique de congestion à zéro lorsqu’elle crée l’en-tête externe. Si elle conserve le niveau déjà observé, un moniteur peut lire dans l’en-tête externe la congestion accumulée depuis le régulateur de charge et estimer l’apport du sous-réseau par différence avec l’en-tête interne. Si elle réinitialise la valeur, le même compteur exige une connaissance privée du comportement de chaque entrée.

Conserver la ligne de base n’identifie pas le routeur congestionné et ne mesure pas sa file. Cela conserve une arithmétique commune. Une migration qui change cette convention doit être traitée comme un changement de mesure, pas comme une simple mise à jour de format.

La sortie fusionne des états au lieu de copier un bit

Le décapsulateur ne peut pas recopier mécaniquement l’externe vers l’interne. Il calcule l’indication sortante selon une priorité. Si les deux couches savent signaler la congestion et portent des sévérités différentes, l’état le plus sévère doit prévaloir. Sinon, l’en-tête interne plus faible effacerait ce que la couche externe vient d’apprendre.

Le cas d’un intérieur Not-ECN est plus révélateur. Si l’extérieur porte la marque la plus sévère, le transport intérieur ne saura pas interpréter une marque explicite. La sortie doit jeter le paquet. Dans cette situation, la perte n’est pas l’échec honteux d’une fonction « zéro perte » ; elle est le seul langage de congestion compris par le transport ancien.

Si l’en-tête externe ne prend pas en charge la notification mais que l’intérieur est ECN-capable, la sortie conserve l’état interne. Une couche sans capacité ne reçoit pas l’autorité d’effacer la capacité d’une autre.

Les couches basses peuvent aussi coder plusieurs niveaux numériques. Une fonction doit alors convertir le niveau quantifié en fréquence de marques IP. Le reframing complique encore le bilan : un paquet IP peut devenir plusieurs cellules, ou une trame agrégée peut contenir plusieurs paquets. Les compteurs doivent annoncer s’ils mesurent des paquets, des octets, des cellules ou des trames ; un pourcentage sans unité ne franchit pas cette frontière.

MPLS montre une migration sûre, mais non universelle

Dans MPLS, l’espace d’en-tête est rare. Le domaine n’a pas besoin d’indiquer dans chaque paquet si la boucle entière est ECN-capable. L’opérateur peut appliquer une règle de déploiement : dès qu’un équipement intérieur est autorisé à marquer, toutes les sorties susceptibles de décapsuler sont mises à niveau. Une sortie qui trouve une marque autour d’un paquet Not-ECN effectue alors la perte à la place du nœud congestionné antérieur.

La sécurité de cette méthode vient de la maîtrise du domaine, pas du label MPLS lui-même. Elle suppose qu’un opérateur professionnel connaît toutes ses sorties et les configure ensemble. Dans un environnement plug-and-play, un ancien équipement peut être ajouté sans cette discipline. Il faut alors un mécanisme intrinsèquement sûr qui empêche les marques de tomber dans un trou noir, ou limiter la fonction aux environnements administrés.

Le KPI de migration doit donc être « couverture des sorties de décapsulation possibles ». Une moyenne de firmware, un taux de commutateurs compatibles ou une liste des chemins nominaux ne suffisent pas. Les sorties de secours, chaînes de service, changements de topologie et équipements de reprise appartiennent au périmètre.

Examiner l’en-tête IP est une optimisation bornée

Le mode feed-up-and-forward sert lorsque la couche basse n’a pas de champ de congestion mais qu’un équipement sait retrouver un en-tête IP dans sa charge utile. Un commutateur Ethernet dit de couche 3 peut continuer à aiguiller selon les adresses MAC tout en marquant ECN dans IP. Certains nœuds radio suivent une logique voisine.

Cette transgression de couche peut être utile, mais elle n’est pas générale. La charge peut être chiffrée. Le protocole supérieur peut ne pas être IP. Le silicium peut manquer de capacité d’analyse. Plusieurs enveloppes imbriquées peuvent rendre la recherche coûteuse ou incertaine.

RFC 9599 impose donc une profondeur bornée. Si aucun en-tête IP reconnu n’apparaît assez tôt, l’équipement utilise un mécanisme propre à la couche basse ou la perte. Il ne fouille pas indéfiniment une pile inconnue pour trouver deux bits ressemblant à ECN. Le premier en-tête IP suffit ; les sorties ultérieures transporteront le signal plus profondément.

Les recommandations AQM de RFC 7567 et les bénéfices d’ECN décrits par RFC 8087 justifient l’effort : une file peut avertir avant que la perte devienne son seul message. Elles ne transforment pas un parseur incertain en autorité sur une charge chiffrée.

Le retour arrière contrôle parfois le mauvais émetteur

Le mode feed-backward renvoie une information de couche basse vers l’entrée du sous-réseau. Il peut être rapide si cette entrée est aussi la source réelle. Lorsqu’un réseau IP plus large se trouve en amont, l’entrée intermédiaire réduit son débit, mais les sources d’origine continuent d’envoyer.

La file IP de l’entrée grossit jusqu’à créer une nouvelle congestion et un autre signal vers l’avant. Le retour arrière n’a pas fermé la boucle originale ; il a déplacé la file. RFC 9599 déconseille donc de concevoir une technologie appelée à s’interfacer avec IP uniquement sur ce mode, sauf cas particuliers.

L’abandon d’ICMP Source Quench, formalisé par RFC 6633, rappelle aussi le problème d’intégrité. Une source distingue difficilement une vraie demande venue d’un tampon sur le chemin d’un message contrefait. Un équipement de couche basse peine en outre à adresser la source de transport enfouie sous plusieurs en-têtes ou du chiffrement.

Le champ modifiable doit être authentifié comme tel

Si des nœuds intérieurs sont censés modifier un champ de congestion, le protocole doit le déclarer mutable en transit. Une authentification qui suppose tout l’en-tête immuable sera invalidée par chaque marque légitime. Ce n’est pas une attaque ; c’est un désaccord entre le contrat d’authentification et le contrat de congestion.

Déclarer la mutation ne garantit pas la sincérité du signal. Un acteur peut supprimer ou ajouter des marques. RFC 9599 privilégie les contrôles de bout en bout capables de révéler une suppression ou une réponse insuffisante, plutôt qu’une nouvelle mécanique d’intégrité hop-by-hop pour chaque couche.

La primauté du code en fonctionnement selon Lu Heng transforme la migration en chaîne de preuves : état interne entrant, état externe créé, marque intérieure, règle de sortie, état IP transmis, retour du récepteur et réponse du régulateur. Le simple inventaire d’une fonction ECN ne prouve aucune de ces transitions.

La spécification initiale minimale autorise des encodages locaux tout en conservant deux invariants : ne pas créer de marque qu’une boucle ne peut livrer, et ne pas effacer la congestion quand un en-tête disparaît. Les couches de réalité empêchent enfin de confondre pression de file, marque, retour, baisse de débit et service livré.

Une migration n’est terminée que lorsque le dernier décapsulateur peut rendre compte du signal qu’il retire.

Sources