Résumé
- RFC 9959 autorise un émetteur à conserver la fenêtre de congestion effectivement utilisée, le RTT minimal, une identité de Remote Endpoint et une durée de vie afin d’accélérer une connexion ultérieure.
- Cet état n’est qu’une observation datée : la nouvelle connexion part normalement, réserve seule le souvenir, reconnaît le chemin, puis limite son saut à la moitié de l’ancienne fenêtre et rythme les paquets selon le RTT courant.
- Une perte, un marquage ECN ou un changement de chemin impose Safe Retreat : suppression de l’état, vidange des données non validées et réduction assez forte pour que les flux concurrents puissent reprendre leur part.
Le cas le plus séduisant est une liaison satellite. Une première connexion a payé plusieurs allers-retours pour atteindre son régime. Elle termine, puis une seconde commence presque aussitôt entre les mêmes extrémités visibles. Repartir comme si rien n’avait été appris pénalise le transfert. Repartir comme si rien n’avait pu changer pénalise le réseau.
Entre les deux, un autre client peut avoir commencé à émettre. Un équilibrage anycast peut avoir choisi un autre site. Une politique de routage peut déplacer le goulet. Le même serveur logique peut également répartir les connexions entre plusieurs processus, chacun persuadé que la même observation lui appartient.
Publié en mai 2026 sur la voie Standards Track de l’IETF, RFC 9959 appelle sa réponse Careful Resume. Le mécanisme ne transforme pas l’historique en réservation. Il permet de poser plus vite une question au chemin actuel, à condition de limiter la question, de mesurer la réponse et d’abandonner proprement l’hypothèse lorsqu’elle échoue.
Une observation de capacité ne devient pas un actif liquide
Une connexion établie peut sauvegarder saved_cwnd, volume réellement utilisé pendant un RTT, saved_rtt, RTT minimal de l’observation, saved_remote_endpoint et une Lifetime. Le système ne doit conserver qu’un seul jeu par Remote Endpoint et devrait le remplacer après une observation plus récente. Une petite fenêtre inférieure à quatre fois l’IW peut ne pas mériter ce traitement.
Ce souvenir ne dit pas « le lien vaut cette capacité ». Il dit « ce flux a utilisé ce volume à cet instant ». Il ignore l’occupation présente, la capacité contractuelle, la topologie exacte et la part équitable de la prochaine connexion.
RFC 2914 donne à cette prudence sa raison collective. Le contrôle de congestion protège un bien partagé. Un émetteur qui accélère gagne localement ; les files, pertes et délais de son erreur sont supportés par des flux qui n’ont approuvé ni sa cache ni sa Lifetime.
La mémoire doit donc être périssable. Elle se remplace, expire et disparaît après une mauvaise prédiction. Une succession de bons transferts ne crée pas un compte de capacité que l’application pourrait dépenser plus tard.
Le Remote Endpoint est une approximation exploitable
RFC 9959 laisse l’identité du Remote Endpoint à l’implémentation. Elle inclut une interface d’émission et une destination, unicast ou anycast, et peut ajouter le DSCP. Une clé plus fine réduit les confusions, mais aussi les occasions de réutilisation.
Même très fine, elle ne prouve pas le chemin. ECMP, NAT, tunnel, changement d’accès et réorientation anycast peuvent conserver des identifiants tout en déplaçant le plus petit goulet. Une route identique peut accueillir de nouveaux concurrents sans modifier son RTT de base.
Le protocole ajoute donc la reconnaissance. Une indication locale de changement annule la reprise. L’expiration annule la reprise. Un RTT minimal courant inférieur ou égal à la moitié du RTT sauvegardé indique qu’un demi-saved_cwnd, rythmé sur ce RTT plus court, pourrait dépasser le débit observé. Un RTT supérieur à dix fois l’ancien indique lui aussi un chemin différent.
Ces seuils écartent des incohérences ; ils ne certifient pas une route. La latence semblable de deux chemins ne leur donne pas la même file.
Reconnaître avant d’emprunter
La connexion commence avec le contrôle normal. RFC 5681 fournit la discipline TCP classique et RFC 6928 le contexte de l’IW moderne. La fenêtre sauvegardée n’est pas injectée à l’ouverture.
Pendant Reconnaissance, les données initiales restent dans l’IW. Perte ou ECN-CE, changement d’identité, Lifetime dépassée, RTT incompatible ou souvenir déjà utilisé par une autre connexion font sortir vers le contrôle ordinaire. Ce n’est qu’après acquittement de toutes les données initiales sans congestion signalée que l’Unvalidated Phase devient possible.
Le saut obéit à la borne :
jump_cwnd ≤ Min(max_jump, saved_cwnd / 2)
La moitié reconnaît que d’autres flux ont pu prendre la capacité. max_jump peut imposer moins. Tous les paquets non validés doivent être rythmés selon le RTT courant. PipeSize part du volume déjà en vol et n’augmente qu’avec les octets nouvellement acquittés.
Cette phase ne doit pas devenir un nouveau régime permanent. L’envoi de la fenêtre non validée, le premier ACK qui la couvre ou plus d’un RTT déclenchent la validation. Si l’application n’utilise qu’une partie du saut, le reliquat n’est pas conservé : la fenêtre revient à la capacité exercée.
Dans la phase Validating, le contrôleur normal peut réagir aux ACK, mais l’autorité de la reprise reste révocable jusqu’à l’acquittement sans congestion de tous les paquets non validés.
Un souvenir, une seule dépense
La règle d’usage unique ferme une faille d’agrégation. Avec un saved_cwnd de 200 paquets, cinq travailleurs qui appliquent chacun la limite de moitié peuvent créer 500 paquets de saut total. Chacun respecte sa formule ; le service viole l’invariant.
Un processus unique peut réserver l’entrée dans une table. Un service distribué doit coordonner atomiquement l’usage entre travailleurs, reprises, bascules et partitions. Faute de coordination certaine, il doit revenir au démarrage normal.
RFC 9040 décrit plus largement le partage temporel d’informations du TCP Control Block entre connexions. Il justifie l’existence de caches structurés, mais ne choisit ni la Lifetime de RFC 9959 ni l’étendue de la serrure distribuée. La haute disponibilité de la cache ne doit pas dupliquer le droit d’émettre.
Safe Retreat corrige aussi l’externalité
Une congestion après le saut n’est pas un échec ordinaire : le contrôleur a peut-être dépassé de loin ce qu’une montée lente aurait découvert. Réduire progressivement à partir de cette valeur pourrait prolonger la domination du flux fautif.
Safe Retreat supprime les paramètres sauvegardés, ramène CWND au plus à PipeSize / 2, lance la récupération avec cette fenêtre et interdit toute croissance pendant la vidange des données non validées. À la sortie, ssthresh ne dépasse pas PipeSize × Beta, avec 0,5 par défaut.
RFC 9937 définit Proportional Rate Reduction pour une réponse ordinaire orientée vers une cible choisie par le contrôleur. RFC 9959 précise que cette réduction graduelle ne convient pas ici lorsqu’un saut historique a pu créer un fort dépassement. RFC 9438 décrit CUBIC et son beta habituel de 0,7 ; cette valeur n’annule pas le devoir de repli propre à l’essai non validé.
Un contrôleur en débit comme BBR peut mémoriser une estimation équivalente de bande passante. Le nom de la variable change, pas la nécessité de rendre rapidement de la capacité aux autres. La congestion persistante ou un RTO termine Careful Resume ; un ACK tardif ne valide pas rétroactivement la décision.
La Lifetime répartit un risque invisible
RFC 9959 ne donne pas une durée universelle. Des chemins variables suggèrent des minutes. Un chemin stable, peu partagé, peut justifier des heures. Plus le goulet accueille d’émetteurs, plus une mémoire longue peut alimenter une surcharge répétée, et plus elle doit expirer vite. Un changement de configuration doit aussi pouvoir purger les entrées.
Augmenter la Lifetime améliore le taux de succès apparent de la cache. Cela élargit aussi la période durant laquelle route, site, accès et trafic peuvent changer. Élargir la clé augmente la réutilisation et les collisions sémantiques. Réduire max_jump protège les voisins mais réduit le bénéfice. La perte ne figure pas entièrement dans les métriques du service, car elle tombe sur d’autres flux.
RFC 7661 traite d’une fenêtre non validée au sein d’une connexion limitée par l’application et recommande un NVP n’excédant pas cinq minutes. Careful Resume traite une nouvelle connexion qui consulte l’ancienne. Les deux refusent qu’une permission inutilisée devienne un fait, mais leurs horloges et leurs remèdes diffèrent.
RFC 4782 fournit un contraste : Quick-Start sollicitait l’approbation des routeurs du chemin. Careful Resume n’obtient aucune réservation ni autorisation de leur part. Il infère puis vérifie.
CWND ne commande pas seul
Le récepteur peut savoir que son interface ou son matériel a changé, qu’un transfert sera bref ou qu’une autre activité a priorité. RFC 9959 permet à un mécanisme de transport d’exprimer une préférence d’activation ou d’inhibition, sans imposer un signal universel.
La fenêtre de réception TCP de RFC 9293, le crédit de flux et la limite anti-amplification de RFC 9000, ou l’absence de données applicatives peuvent tous empêcher l’usage de CWND. L’identité d’une connexion QUIC peut survivre à une migration alors que son autorité de congestion doit être reconstruite.
RFC 9002 fournit les règles QUIC d’IW, rythme, perte et congestion persistante. RFC 8085 rappelle que les transports et applications UDP ont la même obligation de ne pas imposer un débit sans discipline.
La preuve se trouve dans les transitions exécutées
Le principe de primauté du code en fonctionnement de Heng Lu interdit de conclure à partir d’un simple drapeau d’activation. Il faut conserver clé, âge, RTT, Lifetime, réservation unique, vol initial, saut, rythme, PipeSize, signaux ACK/perte/ECN, transitions, suppression et fenêtre finale.
Son texte sur la spécification minimale et les décisions futures locales décrit la répartition correcte : le RFC fixe les invariants de prudence ; l’exploitant choisit clé, Lifetime, max_jump, cache, signal du récepteur et périmètre, tout en assumant le passif.
Enfin, les couches de réalité séparent l’entrée sauvegardée, la ressemblance du chemin, l’état non validé, les ACK réellement reçus et l’effet de service sans préjudice pour les tiers. Un niveau ne vaut pas preuve du suivant.
Briefing des membres
Contexte approfondi du profil
Connectez-vous avec le bon niveau d'adhésion pour débloquer le briefing complet et les notes de source.
Réservé à Strategic Circle
Strategic Circle
Ouvert à tous les lecteurs. Débloquez les briefings de profil après adhésion et connexion.
Rejoindre Strategic CircleRéservé aux membres de Leadership Alliance
Leadership Alliance
Réservé aux propriétaires et dirigeants qualifiés d'actifs IP ; connectez-vous pour débloquer les briefings Alliance.
Rejoindre Leadership Alliance
