Résumé

  • Dans RFC 5109, chaque niveau ULP possède son groupe de paquets et sa longueur de protection. Le succès d’un niveau ne garantit pas celui des suivants.
  • La réception du paquet FEC, la reconstruction d’un préfixe, la récupération complète, l’acceptation par le décodeur et la lecture à temps sont des faits différents.

Un verdict trop large

Le cas difficile n’est pas l’échec total. Il est la réussite partielle qui reçoit un nom trop ambitieux. Un récepteur perd un paquet RTP. Il possède les autres opérandes nécessaires à l’équation du niveau 0 et reconstruit les champs de récupération ainsi qu’un premier segment de données. Une autre équation, portant sur une partie plus éloignée du paquet et sur un groupe plus vaste, contient encore deux inconnues. Elle reste insoluble.

RFC 5109 prévoit ce résultat. Le récepteur obtient la longueur totale attendue grâce à l’opération du niveau 0 et la compare au volume réellement reconstruit. Si les longueurs ne coïncident pas, le paquet n’est que partiellement récupéré. La norme ne demande pas de baptiser cet état « succès complet » ; elle fournit au contraire l’instrument pour conserver la différence.

La protection inégale est une structure

ULP découpe les données en niveaux d’importance décroissante. Chaque niveau applique sa propre parité. Un même paquet FEC peut transporter plusieurs niveaux, mais ceux-ci n’ont pas nécessairement le même ensemble de paquets ni la même longueur protégée. Le début, souvent plus important pour l’interprétation du média, peut recevoir une protection plus forte grâce à des groupes plus petits ; la suite reçoit une protection moins coûteuse et plus fragile.

L’en-tête de niveau contient une longueur de protection sur 16 bits et un masque de 16 ou 48 bits. À partir du numéro de séquence de base N, le bit i désigne le paquet média N+i inclus dans l’équation de ce niveau. Ce masque répond à la question « quels opérandes ? ». La longueur répond à « quels octets ? ». Aucun des deux ne répond à « quels opérandes sont effectivement arrivés au récepteur ? ».

Les niveaux respectent une hiérarchie. Un paquet protégé au niveau p doit aussi l’être au niveau précédent ; un paquet FEC qui contient p contient également p-1. Toutefois, les groupes peuvent varier et les deux niveaux d’un même paquet média peuvent voyager dans des paquets FEC différents. Parler d’un taux de couverture FEC unique écrase cette géométrie.

Choisir l’équation n’est pas reconstruire les octets

La procédure sépare deux travaux. Le premier choisit la combinaison de paquets média et FEC susceptible de résoudre une perte. L’implémentation reste libre de son algorithme, car davantage de recherche consomme du calcul et du temps. Le second travail reconstruit les bits selon la procédure imposée.

Un échec peut donc provenir de l’absence d’un ensemble soluble, d’un algorithme qui ne le trouve pas à temps, ou d’un niveau supérieur qui contient encore plusieurs inconnues. La réussite du niveau 0 ne ferme aucune de ces questions pour le niveau 1.

Pour la charge utile, le récepteur lit la longueur Ln, construit les chaînes protégées au bon décalage, complète par des zéros les chaînes courtes, effectue le XOR et place le résultat à l’emplacement du niveau. Les résultats sont concaténés. La longueur totale récupérée au niveau 0 sert ensuite à contrôler si l’ensemble atteint vraiment la taille du paquet d’origine.

Une télémétrie sérieuse conserve donc le numéro de base, le masque, le niveau, la longueur, l’ensemble d’opérandes, le nombre d’inconnues, l’intervalle d’octets reconstruit et le contrôle final de longueur. Un compteur « paquets récupérés » ne suffit pas.

Le média compatible peut cacher une protection inutilisée

Lorsque FEC circule dans un flux séparé, RFC 5109 ne modifie pas les paquets média. Un terminal qui ignore ULPFEC peut continuer à lire le média. Lors de l’offre-réponse, le destinataire peut même refuser la session FEC séparée tout en acceptant la session média. Une lecture visible ne prouve donc ni la négociation, ni la réception, ni l’usage de FEC.

Le flux de protection peut emprunter une session RTP distincte ou être transporté comme codage redondant RFC 2198. Dans le premier cas, l’adresse, le port, le type de charge dynamique et l’association avec le flux média doivent être annoncés hors bande. Les chemins et espaces de séquence peuvent diverger. La perte de la session FEC peut être invisible si le média principal continue.

Il faut enregistrer la proposition, la réponse, la génération de l’association, les deux réceptions et l’équation réellement utilisée. Sinon, une séquence jouée peut signifier absence de perte, dissimulation par le codec, réparation effective ou simple chance.

Le XOR n’authentifie rien

Modifier les données FEC peut altérer la reconstruction, produire une longueur excessive et augmenter fortement le coût de calcul. RFC 5109 recommande des contrôles de vraisemblance avant la récupération et une validation du résultat avant utilisation. Une équation soluble peut être fausse ou hostile.

Cette limite est importante quand média et FEC sont des flux séparés, avec leurs clés et leurs changements de génération. La preuve doit inclure l’intégrité, l’association active, les bornes de longueur, la politique de calcul et le verdict du décodeur. « XOR terminé » n’est pas « donnée utilisable ».

Même un préfixe techniquement cohérent n’assure pas une image ou un son acceptable. ULP tend à laisser une lacune contiguë en fin de paquet plutôt que des trous dispersés. Certains formats peuvent exploiter ce préfixe ; la norme ne dit pas que tous le peuvent, ni que le délai de lecture sera respecté.

La réparation consomme la ressource qu’elle protège

Plus de redondance renforce souvent la tolérance aux pertes et augmente le débit total. Si les pertes proviennent de congestion, ajouter automatiquement du FEC peut aggraver la cause. RFC 5109 interdit d’augmenter substantiellement le débit média-plus-FEC lorsque les pertes montent et exige une surveillance des pertes en service best effort.

Toute modification du nombre de niveaux, de la taille des groupes ou de la répétition du niveau 0 doit donc être lue avec le débit total, le délai de file, la part média sacrifiée et la ponctualité de lecture. Un meilleur taux de reconstruction peut coexister avec un service plus tardif ou une file plus instable.

La portée exacte de RFC 5109

Publié en décembre 2007 sur la voie Standards Track, RFC 5109 remplace RFC 2733 et RFC 3009, corrige des incohérences RTP et introduit la protection inégale. Son format FEC n’est pas rétrocompatible avec les précédents, même si le média non modifié peut continuer à circuler. Ce constat décrit une compatibilité de transport, pas une adoption ni une performance de réparation.

Le masque est limité à 48 décalages. La norme définit une parité XOR, plusieurs modes de transport et des paramètres adaptables. Elle ne documente aucun opérateur, produit, codec déployé, taux de perte, qualité mesurée ou public réel. La conclusion défendable est plus sobre : le protocole permet de prouver la surface prévue et la surface reconstruite ; il ne transforme pas cette preuve en résultat média.

Sources