Brevet FR2848049A1 — publié le 20040604

PROCEDE DE TRAITEMENT DE PAQUETS DE DONNEES RE US SUR DES RESEAUX ASYNCHRONES, ET DISPOSITIF POUR LA MISE EN îUVRE DU PROCEDE La présente invention concerne les techniques de traitement de 5 signaux à contraintes temporelles reçus par l'intermédiaire de liaisons asynchrones. Elle concerne plus particulièrement un mécanisme pouvant être mis en oeuvre dans le cas d'une transmission asynchrone avec forte gigue temporelle, par exemple dans le cas de communications sur réseaux fonctionnant selon le 10 protocole Internet (IP, "Internet Protocol"). Ce mécanisme s'intègre dans les terminaux, ponts, passerelles, et plus généralement dans tous éléments du réseau pouvant intervenir sur les données transportées. Plus spécifiquement, l'invention s'applique particulièrement dans tous équipements recevant des flux (audio, vidéo, et/ou données) constitués de 15 paquets envoyés de manière régulière et munis d'une mémoire organisée en mode premier entré-premier sorti (FIFO, "First In-First Out") pour tenir compte du phénomène de gigue réseau. C'est notamment le cas pour des terminaux supportant la voix sur IP (VOIP, "Voice Over IP"), qui intègrent tous une mémoire tampon gérée en FIFO pour absorber notamment la gigue réseau et 20 qui s'échangent des flux de données audio de manière régulière au travers de paquets IP transportés à l'aide du protocole UDP ("User Datagram Protocol"). Par exemple, deux terminaux en communication à l'aide du codeur de parole G.723.1 normalisé par l'Union Internationale des Télécommunications (ITUT) échangent classiquement 24 octets de données audio toutes les 30 25 millisecondes. L'invention complète ou adapte les mécanismes classiques de gestion de FIFO déjà utilisés. L'invention vise particulièrement les applications interactives de type communication vocale par exemple, mais peut aussi avoir un intérêt dans les 30 applications moins interactives comme notamment la lecture en transit -2 ("streaming"). Dans toute communication asynchrone en mode paquet, le réseau introduit un retard fixe ainsi qu'un retard variable appelé "gigue réseau". La réception des paquets qui traversent le réseau se trouve retardée par rapport à 5 leur instant d'émission. Le retard fixe, s'il reste faible, n'est pas le plus contraignant. Son effet est essentiellement ressenti comme posant un problème d'interactivité dans la communication. La gigue réseau est plus gênante car elle entraîne d'une part des trous (manque de signal à restituer, le paquet arrivant trop tard) et d'autre part, à d'autres moments, une 10 surabondance de paquets à restituer (arrivée simultanée de plusieurs paquets consécutifs formant une rafale), ce qui peut introduire un retard supplémentaire néfaste à l'interactivité de la communication, par exemple dans le cas de la VOIP. Il faut donc introduire à la réception un mécanisme permettant de gérer 15 dans une certaine mesure ces variations de retard de transmission. Ce mécanisme est à placer au niveau du récepteur et non au niveau de l'émetteur, car ce dernier émet des paquets de façon périodique, les variations étant introduites par le réseau asynchrone. Comme ce réseau ne peut être contrôlé ni par l'émetteur, ni par le récepteur, il est nécessaire de s'adapter à son 20 comportement non déterministe et non prédictible. Le mécanisme généralement utilisé pour contrôler le phénomène de gigue, est la mise en couvre d'une FIFO qui permet de compenser les retards des paquets reçus au système de restitution. Il est possible que les paquets soient reçus dans un ordre différent de 25 celui dans lequel ils ont été émis. Ce phénomène, appelé "déséquencement", est d au fait que les paquets transmis circulent de façon indépendante sur les réseaux IP. Néanmoins, c'est un phénomène relativement rare sur Internet (probabilité de l'ordre de 0,01%). Les protocoles temps réel employés permettent, grâce à un numéro de séquence attribué à chaque paquet, de 30 remettre ceux-ci dans le bon ordre à la réception, ou encore de détruire les paquets déséquencés si leur instant de restitution est dépassé. C'est le cas -3 notamment du protocole RTP ("Real Time Protocol") décrit dans les RFC 1889 et 1890 ("Request For Comments") publiées en janvier 1996 par I'IETF ("Internet Engineering Task Force"). La FIFO précitée peut se trouver à différents endroits au sein de la chaîne de réception. Les figures 1 et 2 montrent un récepteur de type VOIP comportant une interface réseau 1, consistant habituellement en un modem ou une carte réseau, reliée à un module 2 implémentant les protocoles IP, UDP et RTP pour recevoir les paquets IP et extraire leur contenu (opération de 10 "dépaquétisation"). Ce contenu est soumis à un décodeur de parole 3 correspondant au codeur (G.723.1 ou autre) utilisé par l'émetteur et opérant la décompression numérique du signal audio. La parole est finalement restituée au moyen d'une carte son 4 munie d'un tampon de restitution et d'un hautparleur 5. Dans la configuration illustrée par la figure 1, la FIFO 6 est située entre le module de dépaquétisation 2 et le décodeur 3. Dans la configuration illustrée par la figure 2, elle est située entre le décodeur 3 et la carte son 4. Cette FIFO 6 est associée à un module de contrôle 7 qui met en oeuvre les algorithmes de compensation de la gigue réseau. Les figures 3 et 4 illustrent d'autres environnements possibles de la FIFO de gigue 6, ailleurs que dans un récepteur restituant la parole transmise. Dans la pratique, les configurations possibles sont très nombreuses. Le schéma de la figure 3 ne comporte pas de décodeur audio. Il correspond par exemple à une passerelle placée entre le réseau asynchrone 25 de type IP et un réseau synchrone. Le flux d'informations lu dans la FIFO 6 est fourni à l'interface réseau 8 qui le met en forme pour la transmission sur le réseau synchrone. L'exemple d'équipement représenté sur la figure 4 assure une fonction de transcodage, par exemple entre une compression G.723.1 sur le réseau 30 asynchrone et un codage à plus haut débit tel que G.711 sur un réseau local - 4 (LAN, "Local Area Network"). La FIFO de gigue 6 peut être placée après le décodeur 3 de type G.723.1, comme représenté, ou avant celui-ci. Le flux audio décodé lu dans la FIFO 6 est recodé par le codeur 9 de type G.711 puis fourni au circuit 10 d'interface avec le LAN. La position de la FIFO peut avoir une influence sur la gestion de celleci. En effet, dans le cas de la VOIP par exemple, lorsque la FIFO est placée avant le décodeur (figure 1 ou 3), l'algorithme ne peut pas accéder au signal lui-même car il ne dispose alors que d'une version codée des paramètres caractérisant le signal. Lorsque la FIFO est placée après le décodeur (figure 2 10 ou 4), il est alors possible d'adapter la gestion de la FIFO au signal décodé qu'elle contient. Une des premières techniques de gestion de la gigue qui a été proposée consiste en l'utilisation d'un seuil fixe: lorsque la FIFO est pleine et qu'un paquet arrive, celui-ci ne peut être intégré à la FIFO ce qui entraîne sa 15 destruction. C'est alors la taille de la FIFO qui impose le retard maximal qu'elle peut absorber. C'est également cette taille qui permet de définir le compromis interactivité/perte. La gigue réseau peut prendre des valeurs relativement élevées (par exemple 300 ms). Si la FIFO est dimensionnée pour pouvoir absorber une 20 gigue maximale moins grande, alors lorsque la gigue d'un paquet dépasse cette limite, le système de restitution détecte une absence de paquet, et doit pallier le manque de signal en générant un morceau de signal de remplacement correspondant à un paquet (pour simplifier l'expression, on dira qu'il génère un paquet de remplacement ou de substitution pour le paquet 25 manquant, même si le mécanisme précis utilisé ne comporte généralement pas la production effective d'un paquet). Cette absence de paquet est donc gérée de la même façon qu'une perte du paquet dans le réseau. La durée de signal stocké dans la FIFO est donc un paramètre important pour l'interactivité et la qualité de la communication. Une FIFO trop grande réduit l'interactivité mais 30 préserve la qualité, une FIFO trop petite améliore l'interactivité mais peut dégrader la qualité en impliquant la génération trop fréquente de paquets de remplacement. -5 Lorsque la FIFO est pleine, une autre possibilité est de conserver les nouveaux paquets mais de détruire les paquets plus anciens déjà présents dans la FIFO. Cette méthode de vidange de la FIFO altère de façon équivalente la qualité du signal. Cependant, cette méthode assez brutale est 5 couramment utilisée dans la pratique, afin de privilégier le fil de la communication en mettant à jour la FIFO avec les données les plus récentes. La vidange peut être totale ou partielle. Dans ce dernier cas, l'utilisation conjointe d'une technique de DAV (Détection d'Activité Vocale) permet de supprimer judicieusement les trames de signal ne comportant que du bruit de 10 fond. De même, dans certaines réalisations, la décision de vidange de la FIFO peut être prise avant qu'elle soit pleine. Quelles que soient les techniques, plus ou moins complexes, adoptées pour gérer la FIFO de gigue, celle-ci a une taille finie et est exposée au problème suivant. Il a été constaté que sur des réseaux à qualité de service non garantie, Internet par exemple, ayant une gigue relativement importante, les rafales ("bursts") de paquets étaient fréquentes et parfois de taille très importante. Dans le cas considéré de l'émission régulière de paquets, lorsqu'un paquet est retenu dans un routeur du réseau IP pendant un temps supérieur à la période 20 d'émission, un certain nombre de paquets peuvent s'accumuler dans ce même routeur et être libérés de façon quasi instantanée avec le paquet le plus ancien. Plus le temps de rétention dans le routeur est important plus la taille de la rafale sera importante. Cette taille peut alors être supérieure à la taille finie de la FIFO et donc engendrer une saturation de celle-ci. Ce phénomène de saturation est géré par les mécanismes de gestion de FIFO précités, soit en ne permettant plus d'écrire dans la FIFO lorsqu'elle est pleine, soit en effectuant une vidange partielle ou globale de la FIFO pour pouvoir continuer à y écrire. Dans le premier cas, la FIFO est pleine à la fin de la rafale, et introduit 30 donc un retard maximal dans la communication. Dans le deuxième cas, une quantité significative de signal a pu être - 6 supprimée, et le taux de remplissage de la FIPO est dans un état dépendant de la taille de la rafale et de celle de la FIFO. En effet, prenons l'exemple d'une rafale de taille juste inférieure à 2 fois la taille de la FIFO. Dès la réception de la première partie de cette rafale dans la FIFO, on effectue une vidange de celle5 ci, et donc la deuxième partie est placée intégralement dans la FIFO. On se retrouve alors dans un état proche du premier cas, avec un retard maximal dans la communication. Si au contraire la taille de la rafale avait été égale ou peu supérieure à la taille de la FIFO, celle-ci aurait subi une vidange vers la fin réception de cette rafale et serait alors vide, c'est-à-dire dans un état o le 10 moindre retard pour le paquet suivant entraîne un problème. En effet, ce petit retard impose alors la génération d'un paquet de remplacement, avec l'altération de qualité qui en résulte, alors que des paquets valides viennent juste d'être supprimés. Dans tous les cas, l'apparition de rafales de taille excessive entraîne 15 une dégradation de la qualité de la communication. Dans certains cas, elle s'accompagne d'un accroissement fort du retard dans la communication, et donc d'une dégradation forte de l'interactivité de celle-ci, cet état pouvant être plus ou moins long suivant les mécanismes de gestion de FIFO de gigue mis en place et le type de transmission. Les mécanismes connus de gestion de cette FIFO de gigue ne comportent pas de procédures particulières pour gérer de telles rafales de taille excessive. Ils se contentent de gérer les saturations de la FIFO, en prévoyant parfois des états de transition vers cette saturation, dans un examen a posteriori de son degré de remplissage. Un but de la présente invention est de limiter la dégradation inévitable de qualité due au phénomène de gigue réseau, et notamment de limiter dans le temps l'impact des fortes perturbations engendrées par le réseau. L'invention propose ainsi un procédé de traitement de paquets de données numériques reçus, contenant des données de description de 30 segments temporels successifs d'un flux de signal à restituer, dans lequel on enregistre dans une mémoire tampon des éléments obtenus à partir des paquets reçus, et on délivre en mode premier entré - premier sorti des éléments enregistrés dans la mémoire tampon. Selon l'invention, on détecte a priori une rafale de paquets remplissant une condition de taille de rafale, sur la base d'un retard de réception évalué en réponse à la réception d'un premier 5 paquet de la rafale, et on contrôle le contenu de la mémoire tampon en tenant compte de la détection de la rafale remplissant ladite condition de taille. Un "segment" de signal peut s'entendre ici comme correspondant à un intervalle de temps d'un signal continu dans le temps tel qu'un signal audio ou vidéo (il peut par exemple consister en une ou plusieurs trames consécutives 10 d'un codeur de parole, d'images animées, ...). Le "segment" de signal peut aussi s'entendre comme correspondant à des données régulièrement produites par une source de données (par exemple échantillons de mesures prises périodiquement, images, ...). Dans un cas comme dans l'autre, ces segments sont généralement produits de façon régulière ou quasi-régulière par un 15 émetteur distant. Le procédé applique un traitement spécifique aux rafales de taille excessive, ou "rafales excessives", à partir d'une détection de celles-ci. On peut notamment viser en fin de ce traitement spécifique un état considéré comme idéal de la mémoire tampon de type FIFO, c'est-à-dire un état assurant 20 le compromis désiré entre interactivité et perte, exprimé par une valeur cible SFIFO pour le remplissage de la FIFO en fin de rafale. Ceci permet de ne pas prolonger l'effet de la forte perturbation momentanée causée par le réseau. La détection d'une rafale excessive se fait à l'aide d'une estimation de taille de rafale, résultant du retard de réception de son premier paquet, pour 25 déterminer si la rafale qui est en train d'arriver peut ou non être considérée comme normale. Une rafale normale (ne remplissant pas la condition de taille) sera alors traitée normalement dans la FIFO. La condition de taille peut s'exprimer par un seuil à définir par l'utilisateur ou l'environnement du procédé. Ce seuil, fixe ou adaptatif, est 30 borné à une valeur correspondant à la taille de la FIFO. Il pourra avoir des valeurs inférieures en fonction de l'application et du réseau support. Par - 8 exemple, une même application de VOIP pourra utiliser un seuil plus faible dans le cadre d'une transmission sur un réseau privé que dans le cadre d'une transmission sur un réseau à gigue et perturbations plus fortes tel que l'lnternet. Ce seuil pourra éventuellement être adapté de manière dynamique 5 en fonction du comportement du réseau. Néanmoins, il sera généralement assez élevé, car le classement d'une rafale en rafale excessive doit correspondre à une perturbation forte et occasionnelle du réseau. Les perturbations courantes ou normales doivent quant à elles être gérées par les mécanismes normaux de contrôle de la FIFO de gigue, notamment par le choix 10 d'une taille adaptée de la FIFO. Pour ne pas avoir à traiter le problème a posteriori, l'estimation de la taille de rafale a lieu dès l'arrivée du premier paquet de la rafale. Ceci permet de déclencher immédiatement le traitement approprié de la rafale. Dans le cas o il faut supprimer des paquets, la suppression peut avoir lieu avant que ces 15 paquets ne soient placés dans la FIFO, ce qui évite de la perturber. Dans le cas courant de communications sur IP, un certain nombre d'informations permettent d'estimer la taille d'une rafale, en particulier des informations obtenues par le protocole RTP à savoir le numéro de séquence et/ou l'estampille temporelle ("timestamp"). Lors de l'arrivée de rafales de taille importante, les paquets conservés introduisent un taux de remplissage de la FIFO qui peut se propager pendant un certain nombre de cycles d'horloge et réduire l'efficacité de celle-ci pour des phénomènes de gigue relativement faibles. L'invention, en se basant sur une détection de ces rafales de taille importante, résout ce problème à l'aide de 25 différentes techniques d'actions et de suppressions de paquets constitutifs de la rafale excessive. Ces suppressions peuvent dépendre de la position de FIFO (par exemple avant ou après le décodeur de parole). La mise en oeuvre de ces techniques de suppression, totale ou partielle, est simple lorsque la FIFO est placée avant le décodeur. Seule la 30 valeur de SFIFO doit être choisie de façon pertinente afin d'une part de conserver un nombre suffisant de paquets, et d'autre part de ne pas introduire une saturation de la FIFO, ce qui allongerait l'effet d'une rafale sur la qualité du signal restitué. Toutefois, les paquets sont supprimés sans avoir connaissance a priori de leur contenu. La conception des systèmes peut prévoir une relation entre la FIFO et 5 le système de restitution pour envisager des suppressions de paquets en fonction de leur contenu. Parfois, on pourra se contenter d'une lecture partielle du paquet (avec un décodage partiel, par exemple pour obtenir le gain audio du signal, une information de voisement, .. .) pour sélectionner judicieusement des paquets à supprimer. Un positionnement de la FIFO après le décodeur de 10 parole simplifie la suppression de paquets en fonction de leur contenu. D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après d'exemples de réalisation non limitatifs, en référence aux dessins annexés, dans lesquels: - les figures 1 à 4 sont des schémas synoptiques d'équipements o 15 l'invention trouve application; la figure 5 est un organigramme illustrant une réalisation de la détection et de l'évaluation de rafales excessives selon l'invention; et - les figures 6 à 13 sont des diagrammes temporels illustrant diverses techniques de suppression de paquets utilisables conformément à 20 l'invention. L'invention est décrite ci-après dans son application, non limitative, à la transmission de voix sur IP (VOIP) en utilisant le protocole RTP aux extrémités pour gérer les aspects temporels de la transmission sur le réseau asynchrone. On relèvera que les principes décrits sont transposables à d'autres applications 25 de transmission sur des réseaux asynchrones. Le procédé ci-après peut être mis en oeuvre dans l'une quelconque des configurations illustrées par les figures 1 à 4, ou dans toute autre configuration appropriée. On note 6 la période d'émission des paquets IP/UDP/RTP par l'émetteur et CR, la capacité de réception sur le réseau, c'est-à-dire le nombre de paquets que peut recevoir le récepteur pendant une durée 0. La durée 0 10 considérée ici pour la gestion de la FIFO de gigue correspond à la période 6, pour simplifier l'exposé de l'invention, la capacité de réception réseau étant donc exprimée par CRS. Cependant, on notera que cette gestion peut également se fonder sur la durée L de la trame de base du codeur-décodeur 5 (un paquet pouvant contenir plusieurs trames), ou encore sur une notion locale de "trame récepteur" correspondant à un bloc lu dans la FIFO. Dans le cas de la VOIP, les paquets IP transmis contiennent des trames de signal audio de longueur fixe émis périodiquement. Par exemple, pour une communication en G.723.1 avec une trame par paquet, les paquets 10 contenant chacun L = 30 ms de signal sont émis de manière régulière, soit un paquet toutes les 6 = L = 30 ms. Au niveau du récepteur, 6 étant connu ainsi que la taille des paquets, on peut estimer le retard, ou gigue, wn d'un paquet (n) par rapport au précédent (n-I). Si le paquet n-1 est arrivé à l'instant Tn-i et le paquet n à 15 l'instant Tni cette gigue wn vaut généralement: Wn = Tn - (Tn-1 +6) (1) Si la gigue estimée wn est supérieure à environ 26 ou 36, le comportement classique d'un réseau de type IP fait qu'on peut s'attendre à recevoir une rafale. La taille B de cette rafale, exprimée en nombre de paquets, peut alors être estimée par la formule: B= Wn +1 (2) ô Cette estimation de wn et de B correspond à des conditions idéales d'émission régulière de données, et ne tient pas compte: - de la transmission discontinue, qui engendre des périodes sans signal transmis, notamment en présence de mécanismes de VAD/DTX/CNG - 11 ("Voice Activity Detection I Discontinous Transmission / Comfort Noise Generation"); - des cas de perte de paquets; et - des déséquencements éventuels. Néanmoins, ces phénomènes peuvent être pris en compte dans l'estimation de la taille de la rafale. Le mécanisme de VAD/DTXICNG est basé sur un algorithme de détection d'activité vocale (VAD) qui fait arrêter l'émission du signal lorsque celui-ci ne contient que du bruit (silence) et reprendre cette émission sur un 10 début de parole. Dans une mise en oeuvre courante de ce mécanisme, la dernière trame transmise avant une interruption est particulière: c'est une trame dite SID ("Silence Identifier") indiquant le passage en mode silence. Si le récepteur sait qu'il est en mode silence, le paquet n précédemment considéré correspond au paquet de reprise de parole, et donc le temps Tn de réception 15 n'est pas à mettre en relation avec le temps Tn-,' car un temps indéterminé X correspondant à la longueur de la zone de bruit qui les sépare. De même, si la transmission discontinue est mise en oeuvre sans trame SID, le temps T. de réception n'est pas à mettre en relation directe avec le temps Tn-I* Lorsqu'un tel mécanisme de VAD/DTX/CNG est activé ou peut l'être, le 20 récepteur en a été informé lors de l'établissement de la communication, ou il prend en compte d'office cette éventualité. L'estampille temporelle RTP permet alors d'assurer la détection de la taille d'une éventuelle rafale. En effet, cette estampille temporelle indique, suivant une horloge définie par la RFC 1890 précitée, l'instant d'échantillonnage du premier échantillon représenté par le 25 contenu du paquet. Ceci nous permet donc d'estimer le temps T. Si on note ESn l'estampille temporelle du paquet n, on a: T = ESn - (ESn-1 + )(3) La gigue réelle du paquet n peut alors être estimée à partir de cette estimation de T: - 12- Wn = Tn- (Tn-1 + 6) -T (4) Le paquet reçu juste après le paquet du numéro de séquence n-1, a un numéro de séquence p qui permet au récepteur de savoir s'il s'agit bien du paquet n suivant le paquet n-1 du point de vue de l'émetteur. Trois cas peuvent alors se présenter: 1/ p = n. Ce paquet est le paquet n attendu. Sa gigue est estimée comme précédemment, par la formule (1) ou la formule (4) si un mécanisme de VAD/DTX/CNG est utilisé. 2/ p 3/ p > n. On déduit de la réception de ce paquet que p-n paquets ont été perdus dans le réseau ou déséquencés. L'estimation de la gigue temporelle de ce paquet p arrivé à l'instant Tp est donnée par wp= Tp - (Tn_1 + (p-n+ 1)6), un retard c pouvant aussi être pris en compte en cas de VAD/DTX/CNG. On note que, lorsque l'estampille temporelle est présente, la gigue wp 20 peut être estimée de la façon suivante dès lors que p > n-1: wp = (TpTn_1) - (ESp- ESn-1) (5) La figure 5 est un organigramme montrant un exemple de traitement que peut appliquer le module 7 de contrôle de la FIFO de gigue 6 pour détecter une éventuelle rafale excessive à réception d'un paquet IP/UDP/RTP. La 25 réception 11 du paquet est signalée par le module de dépaquétisation 2 qui relève le numéro de séquence p et l'estampille temporelle ES présents dans ce paquet ainsi que l'heure de réception T, et adresse ces trois paramètres p, ES, T au module de contrôle 7. - 13 Le module 7 garde en mémoire les valeurs p' (n-1), ES' (ESn-1) et T' (Tn1) de ces trois paramètres qui ont été relevées à l'arrivée du précédent paquet (hors paquets déséquencés). Les numéros de séquence p et p' sont comparés à l'étape 12. Si p p' d'après le test 12, le module 7 procède à l'estimation de la 10 gigue w = wp conformément à la formule (5) à l'étape 14, puis met à jour les variables p', ES' et T' avec les dernières valeurs p, ES et T à l'étape 15. La taille de rafale B peut alors être estimée à l'étape 16 selon la formule (2). La détection de rafale excessive proprement dite résulte du test 17 ou la taille de rafale estimée B est comparée au seuil SBE. Si le seuil n'est pas atteint, la 15 gestion normale 13 de la FIFO est appliquée, c'est-à- dire par exemple que le module 7 commande l'enregistrement du paquet à l'emplacement approprié de la FIFO. Si B > SBE au test 17, la rafale est détectée comme étant excessive (étape 18) et le module de contrôle 7 entre dans un mode de gestion adapté à ces rafales excessives. Dans certains cas, la détection des rafales excessives peut être confortée par l'indication depuis l'interface réseau 1 de la présence de plusieurs paquets à traiter pendant l'intervalle de temps &. Suivant la taille B de la rafale détectée comme excessive, les paquets de la rafale peuvent être reçus quasi-simultanément, c'est-à-dire pendant un 25 laps de temps inférieur à b, ou reçus sur plusieurs périodes 6. Cette réception dépend du débit des routeurs IP, mais aussi de la capacité de réception CR, de l'interface réseau 1. Ces informations ne sont généralement pas connues par l'application. Le débit de réception des routeurs ne peut de toute façon pas être utilisé, car on ne peut pas savoir quel(s) routeur(s) indui(sen)t le retard. En revanche, l'information CR8 concernant la capacité de réception de - 14 l'interface réseau peut être estimée de façon approximative par l'application. En effet, lorsqu'un paquet fortement retardé arrive enfin à destination, le récepteur dispose au bout d'un temps 6 du nombre Mb de paquets reçus pendant ce temps 6. Pour avoir une idée de la capacité de réception CR6 de l'interface réseau, on peut prendre CR, = Mb. Une telle estimation de CR8 est approximative. Elle est minorée si le nombre de paquets B constituant la rafale est inférieur à la capacité réelle de réception de l'interface réseau. C'est pourquoi on cherche le maximum des valeurs Mb observées au cours de la communication, afin d'approcher au 10 mieux cette capacité de réception CR,. Le module de contrôle 7 observe donc le nombre Mb de paquets reçus pendant le temps 6 suivant la détection d'une rafale excessive, et il prendra comme nouvellevaleur de CR, (pour la rafale suivante) le maximum entre Mb et la précédente valeur de CR6. Cette information de capacité de réception permet de déterminer à 15 l'étape 19 le nombre Nb6 de périodes ô nécessaires à la réception complète des paquets de la rafale en cours: Nb6 LCR (6) o [x1 désigne l'entier égal ou immédiatement supérieur à x. Pendant ces Nb, périodes, l'émetteur délivre autant de paquets 20 supplémentaires qui, si les choses se passent normalement, seront reçus immédiatement après l'arrivée complète de la rafale. Avant que la réception reprenne un rythme quasi-normal, le récepteur devra alors gérer un nombre de paquets NPB potentiellement plus grand que B, évalué à l'étape 20 par: NPB = B + Nb6- 1 (7) Différentes actions sont ensuite applicables pour le traitement 21 des rafales excessives. - Une première possibilité consiste à détruire globalement les B paquets de la rafale. Cette solution est relativement radicale car du signal utile peut être contenu dans ces B paquets consécutifs. Une seconde possibilité consiste à détruire les k premiers paquets de 5 la rafale, ou les k derniers. Le nombre k Une autre solution proposée consiste à détecter la fin d'un mot, à conserver le signal jusque là et à supprimer la suite. Cette solution permet de 15 garder une partie d'information cohérente contenue dans la rafale. Toutes autres combinaisons de destruction de ces paquets peuvent être envisagées. Par exemple on peut supprimer un paquet sur deux de la rafale. Ces solutions relativement brutales peuvent s'avérer utiles lorsque la puissance de calcul du récepteur ne permet pas la mise en place d'algorithmes 20 plus complexes pour améliorer la gestion de cette surabondance de trames. La valeur cible SFIFO correspond au nombre de paquets que l'on souhaite avoir dans la FIFO à la fin du traitement de la rafale excessive, c'estàdire au moment o on prévoit que le réseau revienne dans un mode normal de fonctionnement après la forte perturbation qui a entraîné la rafale excessive. 25 De la même manière que pour le seuil SBE, la valeur cible SFIFO pourra être fixe ou adaptative et déterminée en fonction du type d'application et du comportement du réseau. Une possibilité est de la fixer égale au remplissage moyen de la FIFO, estimé dans les phases o le réseau n'engendre que des perturbations 30 normales (pas de rafale excessive, mode de gestion de l'étape 13). - 16 L'objectif général est de supprimer au moins B - SFIFO paquets de la rafale détectée comme excessive. Dans le cas o B > CR,, la reprise de l'état normal du réseau intervient dès la période 6 suivante, et dans ces conditions la reprise se fait bien avec SFIFO paquets dans la FIFO 6. Dans le cas o B > CRô, le traitement de la rafale va s'étaler sur Nb, périodes pendant lesquelles du son devra être restitué. Idéalement, on restituerait du son réel, la suppression de B - SFIFO paquets permettant de conserver Nb, paquets à jouer pendant la réception de la rafale, ainsi que SFIFO paquets pour assurer l'état désiré de la FIFO en fin de rafale. Pour 10 garantir la restitution de son réel, les Nb, paquets sont à puiser dans les premiers paquets de la rafale à concurrence de CR6 paquets. Si Nb6 > CR6, cette opération devra être répétée autant de fois que nécessaire dans la ou les périodes ô suivantes pour éviter la génération de paquets de substitution. Toutefois, si une technique de suppression entraînant la génération de PS 15 paquets de substitution est préférée, cela reviendra à augmenter d'autant la taille perçue de la rafale. Pour tenir le critère de SFIFO paquets dans la FIFO en fin de rafale, B - SFIFO - PS paquets devront alors être supprimés de la rafale. Le traitement 21 préféré est celui o on tient compte des propriétés du signal contenu dans la rafale. Toutefois, si l'accès à ces informations n'est pas 20 possible ou trop complexe, on pourra préférer une technique qui permet d'éviter d'avoir à générer des paquets de substitution. Pendant la suppression des paquets de la rafale, il convient d'être vigilant par rapport aux phénomènes de transmission discontinue, aux pertes de paquets et au déséquencement, qui vont entraîner une diminution de la 25 taille réelle de la rafale. Ces phénomènes ne pouvant être pris en compte que lors de la détection sur les paquets concernés de la rafale, cela pourra entraîner finalement moins de SFIFO paquets dans la FIFO. Mais l'objectif principal d'éviter un impact trop fort et trop durable de la rafale excessive sera respecté. En effet, si par exemple certains des SFIFO derniers paquets de la - 17 rafale ont été perdus alors que les premiers ont déjà été supprimés, seuls les paquets non perdus parmi les SFIFO derniers paquets de la rafale seront conservés. Une façon de pallier ceci est de prévoir un tampon FIFO intermédiaire 5 de SFIFO paquets en amont de la FIFO de gigue, qu'on fait glisser sur la zone idéale à conserver finalement dans la FIFO de gigue en fonction de la détection ou pas de ces phénomènes de transmission discontinue, de perte et de déséquencement. Dans l'exemple précédent, on place alors dans le tampon intermédiaire les SFIFO premiers paquets valides, et on continue la lecture des 10 informations des paquets de la rafale, en décalant la décision de suppression des paquets de SFIFO paquets. Le premier paquet de la rafale est supprimé si l'on constate que le (SFIFO+1)-ième paquet est bien présent dans la rafale, et ainsi de suite jusqu'aux SFIFO derniers paquets de la rafale. Les exemples qui suivent exposent plus précisément quelques unes 15 des techniques de suppression de paquets de rafales excessives dont le principe général vient d'être décrit. La technique de suppression totale peut être utilisée lorsqu'une rafale de taille importante est reçue pendant un ou plusieurs intervalle de lecture dans la FIFO de gigue 6. La suppression totale signifie que SFIFO = O. Deux cas 20 correspondant aux exemples 1 et 2 peuvent se présenter. Dans le cas o SFIFO > 0 (cette valeur SFIFO est définie de façon statique ou dynamique, suivant les conditions réseau et/ou l'application visée), une suppression partielle doit être envisagée. Plusieurs techniques sont possibles: la première supprime les B - SFIFO premiers paquets reçus de la 25 rafale, la seconde supprime les B - SFIFO derniers paquets reçus de la rafale, d'autres techniques pourrait conserver kl premiers paquets et k2 = B - SFIFO k1 derniers paquets, ou une toute autre combinaison de suppression respectant la valeur de SFIFO* Dans la mesure du possible, très peu de paquets de substitution (voire aucun) doivent être générés en plus de ceux - 18 créés pendant l'interruption de réception précédant la rafale, car en présence de vrai signal il est préférable d'utiliser celui-ci, plutôt qu'un signal de substitution. Exemple 1: Suppression totale, avec CR, k B Le cas o CR8 Ä B est généralement le plus probable lors de l'utilisation d'une connexion directe au niveau de l'interface réseau 1, par exemple à l'aide d'une carte réseau Ethernet à 10 Mbitls (IEEE 802.3). On considère l'utilisation du codeur/décodeur G.723.1, les paquets consistant chacun en deux trames (ô = 2L) et étant émis à une périodicité de 10 6 = 60 ms. Un paquet fait alors 48 octets pour le codage du signal audio + 40 octets d'en-tête IP/UDP/RTP + 26 octets d'en-tête IEEE 802.3, soit 912 bits. La carte réseau est capable de recevoir environ CR3 =Lîoocoooox0,06/9121=657 paquets en 60 ms (Lxi désigne l'entier égal ou immédiatement inférieur à x), soit une durée de signal de 15 657 x 0,06 = 39,42 s, très supérieure aux retards introduits par le réseau. La totalité des paquets de la rafale sera donc reçue en un seul cycle de l'horloge de lecture dans la FIFO. La suppression sera immédiate. Le paquet reçu en premier après la rafale pourra être placé dans la FIFO de gigue 6 par le module de contrôle 7 et la communication se poursuivra. Exemple 2: Suppression totale, avec CR, La figure 6 illustre cet exemple dans le cas o CR6 = 3 et B = 7 (Nbb = 3) , avec une FIFO de gigue 6 de taille LFIFO = 5 en nombre de paquets. Il est considéré ici, comme dans tous les exemples qui suivent, que les paquets sont traités au fur à fur de leur mise à disposition par l'interface réseau de l'application, à concurrence de CRS paquets par période 6. La décision de 10 placer finalement ces paquets dans la FIFO dépendant du résultat du traitement choisi. La technique de suppression totale implique, après la rupture de B.6 secondes pendant laquelle la rafale s'accumule dans le réseau, la génération de NTC = [C I trames de correction, notées TC sur le dessin o NTC = 2. 15 Cette valeur NTC est un minimum car les conditions prévalant dans le réseau asynchrone peuvent encore retarder l'arrivée des Nb, paquets émis après la rafale. Exemple 3: Suppression partielle des B SFIFO premiers paquets, avec La figure 7 illustre cet exemple, dans un cas o B = 7 F I F OIF Dans les techniques de suppression partielle lorsque CR8 La capacité de réception CR, peut être soit inférieure soit supérieure à la taille LFIFO de la FIFO de gigue 6. Quand CR, Dans cet exemple, il est généré NPG = 1 paquet de substitution provoquant la suppression du paquet supplémentaire n+3 au deuxième cycle d'horloge suivant la détection de la rafale. Exemple 6: Suppression partielle des B - SFIFO derniers paquets, avec 20 OR6 Pour l'interactivité de l'application, il est généralement préférable que la rupture du signal intervienne en début plutôt qu'à la fin du traitement de la 5 rafale (figure 9 plutôt que figure 10). Cependant, la suppression en début de rafale a pour inconvénient de causer la production locale de paquets de substitution dès que B - SFIFO Ä CR8 (NPG '1)- Un compromis avantageux peut être réalisé en adaptant la technique de l'exemple 5 de la façon suivante: - lorsque la rafale excessive est détectée, le module de contrôle 7 évalue 10 NpG= SFIFO, qui représente, en nombre de paquets, la quantité de signal qui pourrait manquer à cause de l'état vide de la FIFO 6 au cours du traitement de la rafale si la partie supprimée était placée au début de la rafale détectée; - si NPG = 0, les B - SFIFO premiers paquets de la rafale sont supprimés; - si NPG = 1, un des CR, premiers paquets de la rafale est conservé pour restituer dans la première période ô un signal qui a effectivement été émis de préférence à un signal de substitution. Le paquet conservé peut notamment être le premier (ce qui revient à garder le paquet n à la place du paquet de substitution TC dans l'illustration de la figure 9). Les 20 B - SFIFO paquets suivants (n+1, n+2 et n+3 dans l'illustration de la figure 9) sont alors supprimés; - si NPG> 1, on conserve NPG paquets parmi les B - SFIFO premiers paquets de la rafale, dont au moins un des CR, premiers paquets. Une possibilité est de conserver les NPG premiers paquets de la rafale (si 25 NPG ' LFIFO) et de supprimer les B - SFIFO paquets suivants. Une autre possibilité est de conserver le premier des CR3 paquets reçus au cours de chacune des NPG périodes 6 suivant la détection de la rafale excessive. - 22 Cette adaptation place la partie supprimée de la rafale excessive de façon à éviter que la FIFO 6 se retrouve vide au cours du traitement de la rafale, alors qu'il y a pléthore de paquets. Exemple 7: Suppression partielle des B - SFIFO premiers paquets, avec LFIFO LFIFO, une suppression de CR8 - LFIFO paquets sera nécessaire dès le premier cycle d'horloge suivant le début de la rafale. Aux cycles suivants, un paquet pourra alors être conservé sur les CR, nouveaux paquets présentés à la FIFO de gigue, mais avec une rupture du signal entre 10 ce paquet et les paquets précédemment enregistrés dans la FIFO. La technique de suppression des B - SFIFO premiers paquets est illustrée par la figure 11 dans un cas o B = 7, CRÈ = 6, SFIFO = 4 et LFIFO = 5. On voit que cette technique peut permettre de ne pas générer de paquets de substitution supplémentaires dans le cas o B - SFIFO Lors du cycle d'horloge suivant la réception des CR, premiers paquets, il est possible que des paquets soient supprimés car la FIFO peut se trouver saturée. Dans le cas o le système de génération de paquet de substitution est performant, la valeur de B - SFIFO peut être supérieure à CRU. Exemple 8: Suppression partielle des B - SFIFO derniers paquets, avec FIFO La technique de suppression des B - SFIFO derniers paquets est illustrée par la figure 12 dans un cas o B = 7, CR6 = 6, SFIFO = 4 et LFIFO = 5. 23 Une rupture du signal de (B - SFIFO).6 secondes est également introduite, mais en fin de rafale. Les techniques de suppression totale ou partielle des exemples 1 à 8 ne requièrent aucune connaissance a priori du contenu des trames par le 5 module de contrôle 7. Ces techniques sont donc avantageusement utilisables lorsque la puissance de calcul disponible au récepteur limite la complexité des algorithmes de traitement du signal. Ces techniques de suppression totale ou partielle peuvent être appliquées de façon semblable quand la FIFO de gigue 6 est placée avant 10 (figures 2 et 4) ou après le décodeur audio 3 (figure 1). Elles sont même applicables en l'absence de décodeur audio (figure 3). Le choix entre l'une de ces techniques peut résulter d'une configuration de l'équipement comportant la FIFO de gigue. Il peut aussi s'adapter à des souhaits exprimés par un utilisateur et/ou à l'évolution du comportement du 15 réseau. Lorsque c'est possible, il est cependant préférable que le module de contrôle 7 choisisse parmi les paquets de la rafale quels sont ceux qu'il est judicieux de conserver, afin d'éviter les irrégularités dues à la suppression brutale de signal ou de supprimer des paquets en fonction de leur contenu. Une solution envisageable pour sélectionner les paquets à conserver consiste à utiliser une VAD permettant de supprimer préférentiellement des trames de bruit, ou du moins des trames ayant une plus grande probabilité que les autres de contenir du bruit. Le nombre de trames de signal supprimées est choisi pour conserver un nombre de trames de signal utile inférieur ou égal à 25 l'équivalent de SFIFO paquets. Si ce n'est pas le cas, des trames de signal utile devront également être supprimées. Dans une réalisation, la VAD porte sur le signal survenu juste avant le blanc correspondant à l'accumulation de la rafale dans le réseau. Si on sait que ce signal représente du bruit (silence), on privilégie une méthode de - 24 suppression en début de rafale (exemple 3, 5 ou 7), car il est probable que le silence se prolonge un peu au début de la rafale. Si par contre on détecte de la parole juste avant la rafale, on privilégie une méthode de suppression en fin de rafale (exemple 4, 6 ou 8) pour moins risquer de couper la fin d'une phrase. 5 L'avantage de cette réalisation est que, la VAD étant effectuée a posteriori, il n'est pas nécessaire de faire une détection immédiate dès l'arrivée des paquets de la rafale. Si les données de codage du signal contiennent une information sur l'état silence/parole, on peut extraire l'information de VAD des paquets reçus 10 sans nécessairement avoir à décoder le signal. Mais ce n'est généralement pas le cas. L'accès à l'information de VAD requiert alors que la puissance de calcul disponible soit suffisante pour permettre un décodage au moins partiel des trames reçues avant de les écrire dans la FIFO de gigue. Pour les techniques de suppression partielle, il est avantageux de 15 conserver soit les premières trames allant jusqu'à une période de bruit (comparable à la suppression des B - SFIFO derniers paquets), soit les dernières trames de signal utile après une période de bruit (comparable à la suppression des B - SFIFO premiers paquets). Ces méthodes nécessitent d'une part que la puissance de calcul disponible au récepteur permette le 20 décodage de certaines au moins des trames reçues pendant une période b, et d'autre part qu'il dispose d'une fonction de VAD et d'un algorithme permettant de détecter le début ou la fin d'une phrase. Il est également possible d'identifier, au sein même des trames conservées, des trames considérées comme du bruit, et de les supprimer afin 25 de réduire davantage ce nombre de trames conservées. Exemple 9: Suppression de B - SFIFO paquets choisis sur un critère de VAD. avec LFIFO R E V E N D I C A T IO N S 1. Procédé de traitement de paquets de données numériques reçus, contenant des données de description de segments temporels successifs d'un flux de signal à restituer, dans lequel on enregistre dans une mémoire tampon 5 (6) des éléments obtenus à partir des paquets reçus, et on délivre en mode premier entré - premier sorti des éléments enregistrés dans la mémoire tampon, caractérisé en ce qu'on détecte a priori une rafale de paquets remplissant une condition de taille de rafale, sur la base d'un retard de réception évalué en réponse à la réception d'un premier paquet de la rafale, et 10 en ce qu'on contrôle le contenu de la mémoire tampon en tenant compte de la détection de la rafale remplissant ladite condition de taille. 2. Procédé selon la revendication 1, dans lequel on évalue une taille de rafale (B) à l'arrivée d'un paquet, et la condition de taille est exprimée par une valeur de seuil à laquelle est comparée la taille de rafale évaluée. 3. Procédé selon la revendication 2, dans lequel le seuil est sélectionné en prenant en compte un type d'application et/ou le type du réseau et son comportement. 4. Procédé selon la revendication 2 ou 3, dans lequel l'évaluation de la taille de rafale est basée sur des paramètres comprenant l'instant d'arrivée des 20 paquets. 5. Procédé selon la revendication 4, dans lequel les paramètres sur lesquels est basée l'évaluation de la taille de rafale comprennent en outre des paramètres inclus dans les paquets. - 27 6. Procédé selon la revendication 5, dans lequel lesdits paramètres inclus dans les paquets comprennent un numéro de séquence et/ou une estampille temporelle inclus dans des paquets du protocole RTP. 7. Procédé selon l'une quelconque des revendications précédentes, dans lequel le contrôle du contenu de la mémoire tampon (6) comprend la prise en compte d'une valeur cible (SFIFO) pour le remplissage de la mémoire tampon à la fin du traitement de la rafale détectée. 8. Procédé selon la revendication 7, dans lequel on détermine la valeur cible (SFIFO) en fonction du remplissage de la mémoire tampon (6) dans des 10 phases o il n'est pas détecté de rafales remplissant la condition de taille et/ou en fonction de l'application. 9. Procédé selon l'une quelconque des revendications précédentes, dans lequel le contrôle du contenu de la mémoire tampon (6) comprend la prise en compte d'une capacité de réception de paquets (CR,) par un équipement 15 incorporant la mémoire tampon. 10. Procédé selon la revendication 9, dans lequel on estime la capacité de réception de paquets (CR6) comme un maximum des nombres de paquets reçus pendant une durée déterminée suivant chaque détection d'une rafale remplissant ladite condition de taille. 11. Procédé selon l'une quelconque des revendications précédentes, dans lequel le contrôle du contenu de la mémoire tampon (6) comprend la suppression d'au moins certains des éléments obtenus à partir des paquets de la rafale détectée, avant l'enregistrement desdits éléments dans la mémoire tampon. 12. Procédé selon la revendication 11, dans lequel on supprime tous les éléments obtenus à partir des paquets de la rafale détectée sans les enregistrer dans la mémoire tampon (6). - 28 13. Procédé selon la revendication 11, dans lequel on supprime une partie seulement des éléments obtenus à partir des paquets de la rafale détectée sans les enregistrer dans la mémoire tampon (6). 14. Procédé selon la revendication 13, dans lequel on évalue la taille (B) de la rafale remplissant la condition de taille, et la partie supprimée représente une quantité de signal correspondant sensiblement à la différence entre une quantité de signal correspondant à la taille de rafale évaluée et une quantité de signal correspondant à une valeur cible (SFIFO) pour le remplissage de la mémoire tampon à la fin de la rafale détectée. 15. Procédé selon la revendication 13 ou 14, dans lequel la partie supprimée est placée au début de la rafale détectée. 16. Procédé selon la revendication 13 ou 14, dans lequel la partie supprimée est placée à la fin de la rafale détectée. 17. Procédé selon la revendication 13 ou 14, dans lequel la partie supprimée est placée dans la rafale détectée en fonction d'une information d'activité du signal à restituer. 18. Procédé selon la revendication 17, dans lequel l'information d'activité du signal à restituer est obtenue après un décodage au moins partiel du contenu des paquets. 19. Procédé selon la revendication 13 ou 14, dans lequel la partie supprimée est placée de façon à éviter que la mémoire tampon (6) se trouve vide au cours du traitement de la rafale. 20. Procédé selon la revendication 19, dans lequel on évalue une quantité de signal qui pourrait manquer à cause d'un état vide de la mémoire 25 tampon (6) au cours du traitement de la rafale si la partie supprimée était placée au début de la rafale détectée, et lorsque la quantité évaluée est non nulle, on place ladite partie dans la rafale détectée de façon à enregistrer dans - 29 la mémoire tampon des éléments obtenus à partir d'au moins un paquet reçu au début de la rafale détectée et représentant une quantité de signal au moins égale à la quantité évaluée. 21. Procédé selon l'une quelconque des revendications précédentes, dans lequel les éléments enregistrés dans la mémoire tampon (6) comprennent des données de codage du signal extraites des paquets reçus. 22. Procédé selon l'une quelconque des revendications 1 à 20, dans lequel les éléments enregistrés dans la mémoire tampon (6) comprennent des segments temporels du flux de signal à restituer, obtenus par décodage du 10 contenu des paquets reçus. 23. Dispositif de réception de paquets de données numériques représentatifs de segments temporels successifs d'un signal à restituer, comprenant une mémoire tampon (6) organisée en mode premier entré premier sorti pour recevoir des éléments obtenus à partir des paquets reçus, et 15 des moyens pour contrôler le contenu de la mémoire tampon conformément à un procédé selon l'une quelconque des revendications précédentes.