Résumé

  • Un ACK cumulatif confirme une progression dans l’espace de séquence ; après retransmission, il ne désigne pas la copie physique qui est arrivée.
  • RFC 1122 et RFC 6298 imposent la règle de Karn : aucun échantillon RTT ne vient d’un segment retransmis. L’expiration double le RTO jusqu’à l’arrivée d’une mesure non ambiguë.
  • Les timestamps négociés peuvent lever cette ambiguïté, mais ils ne prouvent ni le chemin, ni la cause de la perte, ni une heure civile.

Le reçu arrivait sans raconter son voyage

Un émetteur envoie des octets et arme son temporisateur. Aucun ACK n’apparaît avant l’échéance ; il renvoie donc les mêmes numéros de séquence. Puis l’ACK arrive.

Selon RFC 793, le numéro d’acquittement annonce le prochain octet attendu. Il autorise l’émetteur à avancer et à libérer des données conservées. Il ne dit pourtant pas si la première copie a tardé ou si elle a disparu au profit de la seconde.

Mesurer depuis le premier départ produit un RTT long. Mesurer depuis la relance produit un RTT court. Les deux calculs sont cohérents avec le même ACK. La preuve de livraison demeure vraie ; c’est son emploi comme preuve de durée qui devient illégitime.

Une moyenne ne corrige pas une mauvaise étiquette

Le RTO doit suivre une route qui ne publie pas son délai. Trop bref, il fabrique des doublons ; trop long, il laisse une perte réparable immobiliser la connexion. TCP apprend donc à partir de départs et d’acquittements observés.

Après retransmission, cet apprentissage peut s’auto-intoxiquer. Attribuer l’ACK à la copie récente abaisse parfois l’estimation, provoque une échéance encore plus précoce et crée davantage d’observations ambiguës. Toujours l’attribuer à l’original peut au contraire ralentir durablement le service. Un filtre statistique sophistiqué ne sauve pas une cause inventée.

Karn institua le droit de ne pas mesurer

RFC 1122 rend obligatoires deux corrections distinctes. Jacobson introduit la variance dans le calcul du RTO ; Karn choisit les RTT admissibles afin que l’ambiguïté ne contamine pas ce calcul.

La règle est un renoncement précis : un segment retransmis ne fournit pas d’échantillon RTT. RFC 6298 l’énonce comme MUST NOT. L’ACK garde toute sa valeur pour l’état cumulatif. Seule l’attribution temporelle est suspendue.

Écarter la mesure ne revient donc ni à rejeter le paquet, ni à accuser le récepteur, ni à diagnostiquer une panne. L’émetteur reconnaît simplement qu’il lui manque le nom de la copie.

Le recul empêchait l’incertitude de devenir agressive

RFC 1122 impose aussi le recul exponentiel. La procédure de RFC 2988, reprise par RFC 6298, retransmet le plus ancien segment non acquitté après expiration puis calcule RTO <- RTO * 2.

Le doublement protège le réseau contre une boucle où le silence provoquerait des essais toujours plus rapides. L’ACK ambigu ne doit pas effacer cette prudence. Quand de nouvelles données sont ensuite envoyées et acquittées sans retransmission, une mesure valide peut réviser l’estimateur et réduire le RTO.

Le recul n’est pas une punition définitive. C’est une réserve locale et réversible, conservée jusqu’à ce que la causalité redevienne observable.

Le timestamp créa une exception bornée

RFC 7323 définit TSval et son écho TSecr. Si l’option a été négociée, l’écho peut relier l’ACK à une émission horodatée ; RFC 6298 autorise alors la mesure malgré retransmission.

Ce timestamp n’est pas un certificat d’heure. Il n’authentifie pas le pair, ne révèle pas la route et ne mesure pas un délai aller simple. Il ajoute seulement une étiquette ordonnée dans la connexion.

Même cette étiquette ne suffit pas toujours. RFC 7323 permet de mettre à jour le RTT moyen lorsque le segment reçu fait avancer le bord gauche de la fenêtre d’émission. Un écho sans nouvel acquittement ne devient pas automatiquement une observation utile.

Trop de précision pouvait raccourcir la mémoire

Avec les timestamps, presque chaque ACK peut offrir un RTT. Mais l’estimateur de RFC 6298 a été pondéré pour une histoire d’environ un échantillon par aller-retour. L’alimenter à la cadence des paquets peut effacer trop vite les conditions antérieures et favoriser des retransmissions intempestives lorsque le chemin évolue sur plusieurs RTT.

RFC 7323 recommande donc de respecter l’esprit de cette mémoire. Davantage de points ne signifie pas davantage d’expériences indépendantes. Une rafale de mesures issues du même aller-retour ne doit pas voter comme une longue histoire du chemin.

L’ACK retrouva la limite de son mandat

Un ACK cumulatif peut faire avancer SND.UNA, retirer des octets de la file et réveiller l’application. Il ne prouve pas quelle copie est passée, où le délai s’est formé, ni si la perte venait de congestion, de réordonnancement ou d’autre chose.

La leçon de Karn est institutionnelle autant que technique : une preuve peut être suffisante pour une décision et insuffisante pour une autre. TCP accepte l’ACK comme reçu de progression, mais refuse de lui faire signer une durée qu’il ne connaît pas. L’émetteur conserve son modèle local sans demander au réseau une explication centrale inexistante.

Sources et limites

Le corpus fermé comprend RFC 793, RFC 1122, RFC 2988, RFC 6298 et RFC 7323. Il fixe des règles, non les réglages actuels de chaque système ni la cause d’une expiration réelle. Un échantillon ambigu peut coïncider avec la réalité ; la règle constate seulement que l’émetteur ne peut pas savoir laquelle des deux histoires est la bonne.