Résumé

  • Dans le mode contrôlé par la passerelle du RFC 5347, gw autorise la passerelle à choisir une méthode fax, mais ne garantit pas qu’une méthode spéciale commune existe. Le Call Agent peut ne l’apprendre qu’au démarrage du fax, lorsque nopfax(start) est émis.
  • Une description distante jointe à une ancienne commande ne peut pas justifier la sélection de la procédure dans la commande courante. En revanche, la description la plus récemment reçue commande l’envoi effectif du média. Ces deux horloges de preuve ne doivent pas être fusionnées.
  • t38(stop) clôt une procédure T.38 sans erreur détectée par la passerelle ; il ne certifie ni page transmise, ni intégrité, ni acceptation distante. La commande, la délégation, le média, la procédure et la livraison exigent des reçus séparés.

La délégation accepte une responsabilité, pas un résultat

Le RFC 5347 propose deux familles de contrôle. Le Call Agent peut conduire explicitement une procédure T.38, ou laisser la passerelle choisir et administrer une méthode fax. La seconde option paraît offrir une abstraction commode : le centre exprime gw, puis l’équipement local traite les détails.

Mais cette délégation ne crée pas une méthode compatible. Une prise en charge spéciale n’existe que si les deux extrémités reconnaissent une méthode commune et si cette méthode apparaît dans les descriptions SDP échangées. Si cette intersection est vide, la passerelle ne réalise aucun traitement fax spécial.

Le point le plus délicat est temporel. Le Call Agent peut recevoir une réponse positive à sa commande sans savoir qu’aucune méthode commune n’a été trouvée. La lacune apparaît seulement quand le signal fax est détecté. La passerelle émet alors nopfax(start) : le fax vient de commencer alors qu’aucune procédure spéciale n’est en place.

La réussite initiale était donc un reçu de délégation. Elle n’était ni un reçu de sélection, ni une preuve d’exécution. Pour éviter cette confusion, une plateforme doit enregistrer l’intention déléguée, les capacités échangées, la méthode choisie si elle est connue, l’événement de début et l’éventuelle absence de traitement spécial.

gwfax(start) ouvre une période de non-conflit

Quand une méthode contrôlée par la passerelle démarre réellement, l’événement gwfax(start) informe le Call Agent. Ce signal n’est pas décoratif. Tant que la méthode se poursuit, le Call Agent devrait éviter les commandes susceptibles de la contredire.

La délégation impose donc deux obligations au délégant. Il lui faut d’abord attendre un reçu attestant que l’exécution déléguée a commencé. Il lui faut ensuite respecter la fenêtre durant laquelle le délégataire possède le contrôle opérationnel de la procédure.

Une interface qui affiche simplement « mode passerelle » efface cette dynamique. Elle ne dit pas si le mode a été seulement demandé, si une méthode commune a été trouvée, si cette méthode a commencé, ni si une commande centrale concurrente a été bloquée.

Le journal utile relie gw aux SDP des deux côtés, à la décision du fournisseur de passerelle, à gwfax(start), aux commandes suspendues, puis à gwfax(stop) ou gwfax(failure). En l’absence de départ, il conserve nopfax(start) comme preuve que la délégation n’a produit aucune méthode spéciale au moment décisif.

Une option omise change la force de la commande

L’autre exemple déterminant du RFC commence par une connexion établie avec T.38 Strict. Le Call Agent envoie ensuite ModifyConnection avec une RemoteConnectionDescriptor qui ne prend pas T.38 en charge.

Si l’option fax locale est omise, la commande réussit. Sa valeur courante est conservée, mais cette conservation n’oblige pas la nouvelle commande à satisfaire T.38. La procédure ne sera plus invoquée et la détection ultérieure du fax provoquera nopfax(start).

Si le Call Agent répète explicitement t38, la même modification doit échouer. Le code 532 est recommandé lorsque aucune procédure demandée ne peut être satisfaite. Cet échec protège l’intention : il empêche une mise à jour de connexion de se présenter comme réussie alors qu’elle a supprimé la condition opérationnelle requise.

La différence ne figure pas dans la valeur finale d’un simple champ. Elle réside dans la présence ou l’absence de ce champ dans la transaction courante. Un audit qui ne conserve que « fax=t38 » ne peut pas dire si T.38 constituait une condition explicite de l’acceptation ou un héritage sans force contraignante.

Une liste ordonnée comporte des sorties cachées

Quatre choix structurent le paquet. t38 désigne T.38 Strict sous contrôle du Call Agent. t38-loose demande la forme souple. gw délègue les détails à la passerelle. off écarte toute procédure fax spéciale, hors ajustements locaux comme l’annulation d’écho ou un changement de codec.

Une liste séparée par des points-virgules exprime généralement un ordre de préférence. Pourtant, t38-loose et off peuvent toujours être pris en charge ; ils rendent donc inaccessibles les choix placés après eux. gw a une exception différente : il peut laisser passer une procédure ultérieure autre que off si la sélection propre à la passerelle n’aboutirait à aucun traitement spécial.

Ce n’est pas une simple liste de solutions interchangeables. Chaque terme modifie le graphe de décision. Déplacer un élément peut rendre une politique suivante morte, sans produire d’erreur de syntaxe.

Le contrôle doit donc représenter l’ordre soumis, le premier choix applicable, les raisons de rejet, le passage particulier depuis gw et le résultat effectif. Une colonne « méthode finale » ne permet pas de savoir si le système a respecté une exigence stricte, toléré une incertitude ou choisi l’absence de traitement.

Deux horloges gouvernent la description distante

Pour sélectionner la procédure dans la commande courante, seule une RemoteConnectionDescriptor incluse dans cette commande compte. Une description reçue auparavant ne peut pas être réutilisée comme preuve de sélection actuelle.

Pour envoyer le média, la règle change. La description distante la plus récemment reçue doit contenir la ligne média correspondante et un transport acceptable. Une passerelle peut commencer la procédure T.38 avant de posséder cette autorisation, mais elle doit attendre avant d’émettre des paquets T.38. Si l’attente expire, la procédure s’arrête ou échoue.

La première horloge répond à la question : quelles procédures cette transaction peut-elle établir ? La seconde répond à une question plus immédiate : quel média peut quitter l’interface maintenant ? Une nouvelle description peut modifier la seconde réponse après que la première décision a été prise.

Les systèmes d’observabilité qui ne gardent qu’un dernier bloc SDP écrasent ce lien causal. Ils doivent plutôt conserver la description jointe à chaque commande, la dernière description valable à chaque émission, le temps d’attente, le transport retenu et l’événement qui a débloqué ou interrompu l’envoi.

Une capacité annoncée n’accorde pas la permission

Une déclaration de capacité SDP peut décrire des aptitudes actuelles ou latentes. Elle peut indiquer qu’un équipement sait traiter T.38 alors que le Call Agent n’a pas autorisé son utilisation dans la commande.

La capacité répond à « que saurait faire cette extrémité ? ». L’option explicite répond à « que peut-elle faire dans cette transaction ? ». Transformer la première réponse en permission contournerait l’autorité du Call Agent.

L’absence d’annonce est également ambiguë. Un pair peut prendre T.38 en charge sans savoir l’exprimer selon le mécanisme attendu. Le mode strict risque alors un faux négatif : il refuse une possibilité réelle faute de preuve exploitable. Le mode souple accepte cette absence, mais risque un faux positif en tentant T.38 face à un pair réellement incapable.

Le RFC ne prétend pas résoudre universellement ce compromis. Le choix dépend des extrémités, de la qualité de leurs annonces et de la classe d’erreur que l’opérateur préfère subir. La décision doit être nommée comme politique, et non masquée derrière un indicateur de capacité unique.

L’événement vert ne certifie pas le document

t38(start) indique que le fax a été détecté et que la procédure T.38 contrôlée par le Call Agent a été lancée. t38(stop) indique que cette procédure s’est achevée sans erreur détectée par la passerelle. Le RFC précise que cet arrêt ne signifie pas nécessairement que le fax a été transmis avec succès.

La passerelle ne certifie alors ni le nombre de pages, ni l’intégrité du contenu, ni l’acceptation par l’application distante, ni le bon destinataire, ni la réception humaine. Une procédure peut être propre et le résultat métier absent.

t38(failure) désigne une terminaison anormale. Les événements gwfax décrivent de manière comparable le cycle d’une méthode déléguée. nopfax(start) signale le début d’un fax sans procédure spéciale et n’a pas d’événement d’arrêt, car le mode sans traitement ne doit pas déduire la fin du fax par inspection du média.

Le tableau de bord doit maintenir deux colonnes indépendantes : état de la procédure et résultat du document. Laisser la première remplir automatiquement la seconde crée une attestation que l’infrastructure n’a jamais observée.

La détection peut déclencher un vrai processus pour un faux fax

Les implémentations doivent au minimum reconnaître le préambule V.21. La détection de la tonalité d’appel CNG du T.30 reste optionnelle. Le RFC rapporte que certains modems émettaient CNG pendant des appels non fax, provoquant de faux déclenchements, et recommande de pouvoir désactiver cette détection.

Une fausse détection ne rend pas la procédure suivante incorrecte au sens protocolaire. Elle montre plutôt que chaîne d’autorité et chaîne d’observation sont distinctes. Une méthode peut être permise, démarrer correctement et se terminer proprement, tout en répondant à un signal qui n’annonçait aucun document fax.

L’une ou l’autre des passerelles, voire les deux simultanément, peut initier le passage T.38. La course doit être gérée. Pour comprendre un incident, il faut donc le signal détecté, l’équipement initiateur, l’horodatage, le traitement d’une initiation simultanée et la politique de détection active.

Un port stable ne donne pas un type stable

Le RFC recommande généralement de réutiliser la même adresse IP et le même port lors du passage de l’audio RTP à T.38. Cette continuité réduit les difficultés avec la qualité de service, le NAT et les pare-feux.

Elle retire toutefois un raccourci d’observation. Le quintuplet réseau ne permet plus de déduire le type de média attendu. La signalisation explicite fixe l’état ; le récepteur valide les paquets selon ce format attendu au lieu de reconnaître opportunément leur contenu.

De même, la tolérance conseillée envers certaines variantes de casse UDPTL/T.38 et d’anciens booléens erronés facilite l’interopérabilité sans prouver un accord de politique. Les compteurs peuvent inclure les paquets et octets fax, tandis que les mesures de gigue et de délai moyen peuvent être suspendues pendant le fax. Un graphique peut donc perdre ses mesures précisément au moment de la transition.

Ces accommodements sont utiles. Ils rendent d’autant plus nécessaire un journal de signalisation qui ne confond pas tolérance de syntaxe, autorisation média, exécution et résultat.

Un document historique, une frontière toujours actuelle

Publié en octobre 2008, le RFC 5347 est Informational et ne constitue pas une norme Internet. La recherche d’errata du RFC Editor recense six errata conservés pour une mise à jour du document. Leur statut doit être visible dans toute lecture opérationnelle.

Le texte ne prouve rien sur une plateforme actuelle sans preuve supplémentaire. Il n’impose pas T.38 à tout fax et ne garantit pas que les fournisseurs contemporains reproduisent exactement ses comportements.

Sa valeur durable tient à la netteté de ses frontières : une option omise ne porte pas la force d’une option explicite ; la capacité n’est pas l’autorisation ; la sélection et l’envoi consultent des états temporels différents ; la délégation n’est confirmée qu’au démarrage ; une procédure terminée n’est pas un document livré.