Brevet FR2948838A1 — publié le 20110204

PROCEDE DE TRANSMISSION DE DONNEES MULTIMEDIA DANS DES RESEAUX DE COMMUNICATION AD HOC L'objet de la présente invention concerne un procédé de transmission de données dans un réseau de communication qui utilise des � proxy � intelligents dans chaque point d'un réseau pair. Par le mot � proxy � on désigne le relayage des requêtes entre un poste client et un serveur ou une source et par l'expression � réseau pair à pair �, un réseau dans lequel il y a partage des fichiers en pair à pair, expression plus connue sous l'acronyme anglo-saxon � Peer-to-Peer �. Le procédé selon l'invention concerne les diffusions de flux multimédia dans un contexte de réseau de communication ad hoc d'une source vers de multiples clients. Pour des raisons de simplification dans la suite de la description, le mot � proxylite � sera utilisé pour désigner de manière générique le procédé selon l'invention, quelque soit le mode de réalisation envisagé. Dans le domaine des communications sans fils, différents protocoles ont été introduits ces dernières années afin de permettre la propagation dans les couches OSI (acronyme de � Interconnexion de systèmes ouverts �) de paquets dont le contenu n'est pas parfait. Wimax acronyme pour Worldwide lnteroperability for Microwave Access est le cas le plus notable pour les couches radio, où une somme de contrôle réduite à l'en-tête liaison a été introduite, et permet de remonter à la couche réseau un paquet non parfait. Similairement sont apparus des protocoles de transport comme UDP-Lite qui est très similaire au protocole UDP. Le protocole UDP Lite autorise des contrôles partiels qui couvrent une partie seulement des données et peut délivrer des paquets partiellement corrompus. II est particulièrement utile pour des transmissions multimédias, telles que la diffusion de flux vidéo ou la voix sur IP, dans lequel il est préférable de recevoir un paquet avec une charge utile partiellement endommagée que de ne pas recevoir de paquets du tout. Le protocole DCCP acronyme de "Datagram Congestion Control Protocol � est un protocole de communication de couche de transport orienté message. Ces deux derniers protocoles, UDP-Lite et DCCP de transport ont introduit des sommes de contrôle partielles permettant de vérifier les en-têtes des paquets tout en laissant passer des paquets dont la charge utile ou données utiles est erronée. L'art antérieur connu du Demandeur présente notamment comme inconvénient de travailler exclusivement avec des solutions de retransmission en mode point à point ou avec des solutions de multicast, émission de diffusion de l'information d'un émetteur vers un groupe (éventuellement avec retransmissions) pour des diffusions multipoints synchronisés dans le temps. Dans les techniques de l'art antérieur, on ne tire donc pas parti de la capacité qu'ont les flux multimédias à autoriser des décodages même sur des flux partiellement corrompus. Les techniques connues de l'art antérieur ne s'adaptent donc pas aux limitations des réseaux ad hoc, par exemple, en sachant tirer efficacement parti des capacités particulières des flux multimédias. L'objet de la présente demande de brevet est relatif à un procédé de diffusion plus efficace que les procédés connus de l'art antérieur pour des flux multimédia dans un contexte de communication ad hoc d'une source vers de multiples clients. L'intérêt de considérer en particulier les transmissions multimédia s'explique par le fait que les décodeurs son, image ou vidéo sont capables d'absorber un taux d'erreur résiduel. En effet, ces décodeurs mettent en général en place des techniques de masquage jouant sur les capacités humaines de l'oeil et de l'oreille à accepter ou compenser des défauts résiduels. L'objet de l'invention concerne un procédé de transmission de données multimédia dans un réseau de communication ad hoc comprenant au moins une source S et plusieurs noeuds Ni communiquant entre eux au moyen de liens Li, un nombre Np desdits noeuds étant équipé d'un processeur pour mettre en oeuvre au moins les étapes suivantes : Recevoir au moins un paquet de données multimédia, Effectuer un calcul du CRC radio complet dudit paquet reçu, a) dans le cas où la valeur du CRC en-tête comporte une erreur, alors le paquet est éliminé, b) dans le cas où la valeur du CRC en-tête est sans erreur, alors l'étape suivante consiste à regarder si le noeud en cours Ni est le noeud destinataire c) Si le noeud courant est le noeud destinataire, alors le procédé va remonter la valeur du CRC radio complet, tester si la valeur du CRC transport est erronée, éliminer le paquet si cette valeur est erronée, sinon, remonter le paquet vers l'application pour décodage, d) Si le noeud courant n'est pas le noeud destinataire, alors, le procédé stocke le paquet dans une pile temporaire Q et initialise un timer T (pkltd) correspondant à une durée maximale de traitement des données du paquet, le procédé vérifie ensuite la valeur du CRC radio complet du paquet, si cette dernière est correcte alors le procédé va modifier la pile Q et remettre à zéro le timer T(pkltd) pour envoi du paquet, puis le procédé passe au traitement d'un autre paquet de données multimédia, si la valeur du CRC des données est erronée, alors le procédé lance le déclenchement du timer CKS_VER(Pkld), pour une vérification au niveau de l'intégrité de la charge des données, en parallèle, le procédé effectue la remontée du paquet des données multimédia vers les couches hautes du réseau radio, en éliminant les paquets dont la valeur du CRC transport est erronée et en faisant remonter les en-têtes correctes pour le paquet Pkld pour les paquets dont la valeur du CRC est correcte, si le timer CKS_VER(Pkld) qui correspond à la vérification de l'intégrité du paquet, est expiré, dans tous les cas, le procédé modifie la pile Q en éliminant le paquet, e) à l'expiration du timer T(Pkld) le procédé va extraire le paquet de la pile Q pour le transmettre sur un nouveau bond, ou vers un autre noeud du réseau, pour cela il va effectuer un recalcul du CRC radio complet, puis va émettre le paquet sur le lien physique vers le bond suivant en destination d'un noeud du réseau. Au cours de l'étape d), si le timer CKS_VER(Pkld) n'est pas expiré, alors le procédé peut modifier la pile ou mémoire temporaire Q en positionnant un champ indiquant la corruption du paquet, par exemple par l'indication (CRC_Error_Flag). Selon une variante de réalisation un paquet de données comprend une étiquette correspondant à une information dans une extension spécifique de l'en-tête RTP du paquet, ladite en-tête RTP spécifique contenant une somme de contrôle supplémentaire permettant la validation de l'en-tête RTP et éventuellement des premiers octets de la charge utile, les paquets étant éliminés lorsque cette valeur est erronée. Le procédé peut comporter une étape de mémorisation d'informations incluant au moins les étapes suivantes : lorsque le noeud sur lequel sont reçues les données est destinataire, simultanément le procédé remonte la valeur du CRC radio complet, et fait une copie du paquet dans une pile P pour stockage dans ladite pile P de l'identifiant du paquet, de la charge utile ou ses données du paquet et l'état du paquet, dans le cas où le noeud n'est pas destinataire, alors, lorsque la 30 valeur du CRC radio complet est incorrecte, le procédé remonte, l'information erronée pour stockage, et déclenche le timer CKS_VER(Pkld) de vérification du paquet, lorsque la valeur du CRC radio complet est correct et la valeur du CRC_Error Flag est correcte, ledit procédé transmet l'information correcte pour stockage, remonte l'information erronée pour stockage et selon les étapes du procédé décrites ci-dessus, le procédé déclenche une demande de vérification de l'intégrité du paquet CKS_VER_REQ, et le lancement de timer CKS_VER(Pkld) pour vérification de l'intégrité du paquet, lors de l'étape de remontée du paquet vers les couches hautes, le 10 procédé va remonter vers la pile P l'information de stockage pour le paquet Pkld, dans le cas où la transmission sur le dernier bond a corrompu le paquet, le module de réponse aux demandes de contrôle CKS_VER_REQ est sollicité et va donc, au lancement du timer CKS-VER(Pkld), en parallèle 15 de la remontée, interroger la pile P pour vérifier si cette dernière contient une version intègre du paquet, auquel. cas le timer CKS_VER(Pk-d) est mis à zéro, et le procédé substitue à la charge utile erronée la charge utile intègre dans le tampon Q, à l'expiration du timer T(Pkld), le procédé va extraire le paquet 20 pour transmission en ayant au préalable, recalculé le CRC radio, s'il ne trouve pas de paquet intègre, le procédé attend la remontée de paquet et il propage le paquet lorsque seule la charge utile ou données a été corrompue. Lors du stockage dans la pile P, le procédé mémorise, par 25 exemple, les données reçues au niveau du noeud ainsi que l'identification de données, information sur sa possible corruption à chaque remontée dans la pile P. Le procédé peut comporter une étape d'interception des requêtes en voie montante, les requêtes émises d'un client vers la source d'émission, 3o et en ce qu'il comporte au moins les étapes suivantes : Sur réception d'une nouvelle demande de transmission multimédia, le procédé : - calcule la valeur CRC radio complet. - teste la valeur du CRC en-tête liaison, si cette dernière est erronée, alors le paquet est éliminé si la valeur du CRC en-tête est sans erreur: alors si le noeud est le destinataire: le paquet est remonté vers l'application si le noeud n'est pas le destinataire, alors : le paquet est stocké dans la pile temporaire Q avec le timer T(pkltd) le paquet est remonté vers l'application, à l'expiration du timer le paquet est transmis sur un nouveau bond après re-calcul du CRC complet Au niveau application: -si les données demandées sont stockées dans la pile P, la pile envoie la réponse nécessaire ou commence directement la transmissions des données demandées, sinon elle envoie un message pour éliminer le paquet de la pile Q. L'invention concerne aussi un système de transmission de données multimédia dans un réseau ad hoc comprenant au moins une source émettrice de données multimédia et plusieurs noeuds Ni communiquant entre eux grâce à des liens Li, lesdits noeuds comprenant une partie récepteur, permettant de recevoir un paquet de données, une partie émettrice ayant pour fonction de transférer un paquet vers un Ni, caractérisé en ce que Np noeuds sont équipés des éléments supplémentaires suivants : une pile Q correspondant à une mémoire de stockage temporaire, une pile P ou mémoire à long terme, un processeur adapté à exécuter les étapes du procédé selon les caractéristiques décrites précédemment.30 D'autres caractéristiques et avantages du dispositif selon l'invention apparaîtront mieux à la lecture de la description qui suit d'un exemple de réalisation donné à titre illustratif et nullement limitatif annexé des figures qui représentent : • La figure 1, un exemple de réseau ad-hoc et des différentes communications pair à pair mobile, • La figure 2A, un exemple d'architecture du réseau selon l'invention, la figure 2B, un exemple de structure de paquets de données, la figure 2C, un exemple d'implémentation physique au niveau d'un noeud du réseau, • Les figures 3A, 3B, une comparaison entre le nombre de bonds réalisés dans le cas des transmissions selon l'art antérieur et dans le cas de transmissions selon l'invention, • La figure 4, la réduction du nombre de bonds à opérer • La figure 5A, une première variante de réalisation du procédé selon l'invention et la figure 5B, une variante où un noeud du réseau comprend une pile de stockage permanente, • Les figures 6, 7, 8 et 9 des résultats prouvant l'amélioration de la transmission par rapport aux techniques de l'art antérieur par la mise en oeuvre du procédé et du système selon l'invention. Afin de mieux faire comprendre l'objet de la présente invention, la description qui va suivre concerne le cas où deux clients distincts souhaitent obtenir le même contenu d'une même source. La figure 1 schématise un réseau ad hoc selon l'art antérieur de communication pair à pair mobile depuis une source S de données vidéo avec deux clients 1, 2 identifiés parmi les pairs du réseau ad hoc. La figure 2A schématise un exemple de mise en oeuvre du procédé et du système selon l'invention comprenant, de la même façon que sur la figure 1, une source S et deux clients 1, 2. Les clients 1, 2 dans cet exemple souhaitent obtenir le même contenu d'une même source. Les demandes étant, en générales asynchrones, elles sont traitées séparément comme des communications unicast (acronyme pour définir une connexion réseau point à point). De plus, même en cas de demandes synchrones, l'établissement de liens multicast sur un réseau ad hoc reste un problème complexe. Sur cette figure sont représentés n noeuds référencés Ni, dont un nombre donné Np est équipé d'une application PL selon l'invention ou logiciel permettant de gérer les transmissions de données multimédia, par exemple, le noeud N4 sur la figure n'étant pas pourvu d'un équipement selon l'invention. Des liens Li permettent la communication et la transmission des informations ou des données entre eux. La figure 2B schématise un exemple de structure de paquets de données multimédia au niveau MAC (medium access control), comprenant un ou plusieurs en-têtes, zones Zi, suivis d'une zone Z2 contenant la charge utile ou données multimédia, et comprenant aussi une ou plusieurs zones Zi pour les différents CRC détaillés dans la suite de la description. Dans les CRC à vérifier, il est possible de mentionner les CRC transport, en-tête, radio qui sont en général disposés avant la zone de données Z2. La figure 2C représente un exemple d'architecture de noeud pourvu d'un équipement selon l'invention comprenant une partie récepteur 4 classique, permettant de recevoir un paquet de données et de le transmettre vers un processeur 6 sur lequel est implémenté un procédé selon l'invention, une pile P ou mémoire à long terme et une pile Q correspondant à une mémoire de stockage temporaire, un émetteur 5 ayant pour fonction de retransmettre le paquet vers un autre bon ou autre noeud Ni, un module de requête 70 de réponse aux demandes de contrôle de l'intégrité d'un paquet, ledit module étant par exemple implémenté au niveau du processeur 6 et non représenté sur la figure. Le noeud peut aussi comporter une table de routage non représentée pour des raisons de simplification donnant la destination d'un paquet reçu ou encore un logiciel permettant d'effectuer des requêtes de routage pour connaître le noeud destinataire d'un paquet. Dans le cas de la transmission de flux multimédia, le découpage en paquets pour la transmission sur un réseau de type IP (abréviation du protocole Internet) fait que chaque paquet IP contient un fragment de l'information du flux multimédia. En réception, la concaténation des fragments de données permettra d'obtenir un flux égal ou proche (si des pertes ou des erreurs sont apparues) du flux original. Dans le cas classique, selon les procédés connus de l'art antérieur, chaque client recevra ses données directement de la source S, ce qui est représenté sur la figure 3A par le � diagramme � des bonds effectués à partir de la source jusqu'au client 1 ou jusqu'au client 2. En revanche, dans le cas où une fonction de proxy intelligente selon l'invention est introduite au moins au niveau de certains des noeuds Ni d'un réseau de type ad hoc, la deuxième demande, celle du client 2, par exemple, n'aura pas nécessairement à remonter jusqu'à la source S mais pourra être servie grâce à la mémorisation des données exécutée, suite à la première communication. Cette différence est illustrée sur la figure 3B par les diagrammes de bonds Dp1 et Dp2, où l'on voit que les bonds pour le client 2 partent du troisième noeud N3, et passent par le noeud N6. La figure 4 représente le résultat théorique du gain en nombre de messages à envoyer pour deux clients selon leur distance respective et leur distance à la source S. Ce nombre de mesure est proportionnel au nombre de bonds éliminés. De manière plus détaillée, le procédé mis en oeuvre par l'invention est détaillé à la figure 5A et à la figure 5B selon deux variantes de mise en oeuvre. Sur ces figures 5A, 5B, on a représenté, pour mémoire, la couche physique 10, la couche liaison 11, la couche réseau 12 sur laquelle se trouve la couche transport 13 pouvant être composée d'une couche protocolaire de type UDP-Lite et de la couche RTP, puis de la couche application 14. Cet exemple correspond à une structure donnée à titre illustratif et nullement limitatif pour décrire le procédé mis en oeuvre par l'invention. La description va s'appuyer sur ces deux figures 5A et 5B, pour décrire deux variantes de mise en oeuvre du procédé selon l'invention. La première mise en oeuvre concerne plus particulièrement le traitement des paquets reçus par un noeud non destinataire, la deuxième variante ajoute au noeud une pile P ou mémoire de stockage. Une des fonctions du procédé �proxylite � selon l'invention implémenté sur différents noeuds du réseau est, notamment, de remplacer la fonction de simple relais réalisée par le noeud dans le réseau ad hoc en exécutant des opérations en voie descendante, c'est-à-dire, sur les paquets transmis depuis la source S vers un client 1, 2. Le détail des traitements opérés par le procédé � proxylite � selon l'invention est résumé comme suit, et comme illustré par la description aux figures 5A, 5B de deux variantes de réalisation, de la machine à état traitant du stockage des données en réception et retransmission vers le bond suivant en (opérations en voie � descendante �). La première variante de mise en oeuvre comprend, par exemple, les étapes suivantes, les numéros permettant de retrouver l'étape sur la figure 5: 20 û la réception d'un paquet de données 21 û le processeur 6 effectue un calcul de la somme de contrôle (notée classiquement CRC) radio complet, c'est-à-dire portant sur la totalité des données, y compris les différents en-têtes ; On notera que dans le cadre du procédé selon l'invention, différentes sommes de contrôles pourront être effectuées sur le paquet total, soit certaines en-têtes : en-tête niveau couche liaison, en-tête du protocole de transport, et optionnellement une somme de contrôle spécifique pouvant être introduite sur l'en-tête RTP (Real-time Transfer Protocol) 22 û dans le cas où la valeur du CRC en-tête liaison comporte une 30 erreur, alors le paquet est éliminé, 24 û dans le cas où la valeur du CRC en-tête liaison est sans erreur, alors l'étape suivante consiste à regarder si le noeud en cours Ni est le noeud destinataire. Ceci se fait, par exemple en vérifiant un identifiant contenu dans le paquet de données transmis. Si le noeud courant est le noeud destinataire, alors le procédé va remonter la valeur du CRC radio complet 25, le processeur va tester, 26, si la valeur du CRC transport est erronée, dans le cas où cette valeur est erronée, 27, le paquet est éliminé, dans le cas contraire, le processeur peut également tester si la valeur ~o du CRC spécifique pour RTP est erroné, dans le cas où un CRC spécifique RTP a été ajouté si elle est erronée, 29, le paquet est éliminé, sinon, le paquet est remonté vers l'application 30 pour décodage et affichage ; l'ajout du CRC RTP est une étape optionnelle au procédé; 15 Si le noeud courant n'est pas le noeud destinataire, alors, 40, le procédé va stocker le paquet dans la pile temporaire Q et initialiser un timer T(pkltd) correspondant à une durée maximale de traitement des données du paquet, le procédé vérifie ensuite la valeur du CRC radio 20 complet du paquet, 41, (vérification du CRC de l'intégrité des données et de l'en-tête), si cette dernière est correcte alors le procédé va modifier la pile en mettant à zéro le timer T (pkltd) 43, pour envoi immédiat du paquet (56, 57, 58) après avoir recalculé le CRC radio, le paquet est émis par la couche 25 physique vers le bord suivant, puis le procédé passe au traitement d'un autre paquet de données multimédia, si la valeur du CRC est des données est erronée, alors 44, il lance le déclenchement du timer CKS_VER(Pkld), 45, vérification au niveau de l'intégrité de la charge des 30 données, et en parallèle, le processeur exécute la remontée 46 du paquet vers les couches hautes, puis calcule 47 le CRC transport, si la valeur du CRC transport est erronée, 48, alors le procédé élimine le paquet, si la valeur du CRC transport est exacte, alors le procédé peut aussi tester la valeur du CRC spécifique RTP, 49, dans le cas où ce dernier existe, par exemple, si cette valeur est erronée, alors le paquet est éliminé 50, si cette valeur est exacte, alors le procédé va remonter 51 les en-têtes correctes pour le paquet Pkld, si le timer VER(Pkld) qui correspond à la vérification de l'intégrité du paquet, est expiré, dans tous les cas, le procédé modifie la pile Q en éliminant 55 le paquet Pkld, si le timer VER(PkId) n'est pas expiré, alors le procédé peut de manière optionnelle modifier la pile ou mémoire temporaire Q en positionnant dans le paquet un champ d'information spécifique (dit CRC error flag du paquet Pkld) indiquant qu'il n'est pas parfait 54, à l'expiration du timer T(Pkld), 56, le procédé va extraire le paquet de la pile Q pour le transmettre vers l'émetteur du noeud pour transmission sur un nouveau bond, ou vers un autre noeud du réseau, pour cela il va effectuer un re-calcul du CRC radio complet 57, puis va émettre le paquet sur le lien physique 58 vers le bond suivant en destination d'un noeud du réseau. Selon une deuxième variante de mise en oeuvre, on considère qu'un noeud peut être équipé d'une pile P ou mémoire à long terme qui va servir à stocker des informations sur des paquets ayant transité par ce noeud, que le noeud soit destinataire ou simplement un noeud de transit capable de conserver les données pour une utilisation une requête future après éventuels recalculs de CRC. Dans ce cas, le procédé détaillé à la figure 5B possède en plus des étapes décrites en relation avec la figure 5A les étapes supplémentaires décrites ci-après, les références semblables sur les figures 5A et 5B correspondent à des états ou étapes du procédé identiques. Lorsque le noeud est destinataire, lorsque le procédé remonte la valeur du CRC radio complet (étape 25), il va en plus, 61, faire une copie du paquet dans la pile P pour stockage et 62, stocker dans la pile P l'identifiant du paquet, la charge utile ou les données du paquet et l'état du paquet (intégrité du paquet, erreurs contenues dans les données ou la charge utile), par exemple le champ CRC error flag. Dans le cas où le noeud n'est pas destinataire, alors, lorsque la ~o valeur du CRC radio complet est incorrect, le procédé remonte 63, l'information erronée 63A, pour stockage, et déclenche 52 le timer CKS_VER(Pkld) de vérification du paquet, étape 63 = erroné, information pour stockage PKT_RX_INF (Pkld)=1, étape 52 = erroné, envoi de CKS_VER_ REQ. 15 Lorsque la valeur du CRC radio complet 41 est correcte et la valeur du CRC_Error Flag est correcte 42, il transmet, 65, l'information correcte pour stockage, alors le procédé remonte 64, l'information erronée pour stockage dans la pile P et comme dans le sous-procédé précédent, a lieu la transmission d'une demande de vérification de l'intégrité du paquet 20 CKS_VER_REQ, et le lancement de timer (44, 45) CKS_VER(PkId) pour vérification de l'intégrité du paquet, étape 65 = correcte, information pour stockage PKT_RX_INF (Pkld) = O. Lors de l'étape de remontée du paquet vers les couches hautes 46, décrites à la figure 5A, le procédé va remonter, 66, vers la pile P 25 l'information de stockage pour le paquet Pkld (pendant de l'information PKT_RX_INF(Pkld) qui informait de la potentielle arrivée d'un paquet avec la valeur du CRC_Error Flag, tenant compte y compris du CRC en-tête RTP dans le cas où cette somme de contrôle existe. Dans le cas où la transmission sur le dernier bond a corrompu le 30 paquet, le module de réponse 70 aux demandes de contrôle CKS VER REQ est sollicité et va donc, au lancement du timer CKS- VER(Pkld), en parallèle de la remontée 51, interroger 67, la pile P pour vérifier si cette dernière contient une version intègre du paquet, auquel cas le timer CKS_VER(PkId) est mis à zéro, et c'est la charge utile intègre qui sera substituée à la charge utile erronée dans le tampon Q 54, remplacement par le paquet Pkt correct. Ensuite, à l'expiration du timer T(Pkld) 56, le procédé va extraire le paquet pour transmission en ayant au préalable, recalculé, 57, le CRC radio comme il a été expliqué précédemment. S'il ne trouve pas de paquet intègre, le procédé attend la remontée 51 et alors propage le paquet lorsque seule la charge utile a été corrompue puisqu'un décodeur multimédia robuste pourrait être en mesure d'utiliser correctement de paquet. Dans ce cas, les en-têtes pour paquet (Pkld) sont correct, étape 51 = En-tête correct pour paquet (Pkld), PKT_HD_INF (Pkld) =0. Un des autres intérêts de l'introduction de la pile P est la possibilité grâce à elle pour le noeud de réaliser une fonction proxy, en agissant sur la voie montante, c'est-à-dire sur les requêtes transmises depuis le client vers la source, afin d'interroger la pile P sur les paquets demandés au serveur et de modifier les requêtes pour ne laisser passer que les requêtes que le noeud courant ne peut servir (avec paquets erronés ou non selon éventuellement le choix du client) et l'envoi en parallèle des paquets disponibles vers le client. Cette variante de réalisation est mise en oeuvre de la manière suivante : Sur réception d'une nouvelle demande de transmission multimédia, le procédé : - calcule la valeur CRC radio complet. - teste la valeur du CRC en-tête liaison, si cette dernière est erronée, alors le paquet est éliminé si la valeur du CRC en-tête est sans erreur: alors si le noeud est le destinataire: le paquet est remonté vers l'application si le noeud n'est pas le destinataire, alors : le paquet est stocké dans la pile temporaire Q avec le timer T(pkltd) le paquet est remonté vers l'application, à l'expiration du aimer le paquet est transmis sur un nouveau bond après re-calcul du CRC complet Au niveau application: -si les données demandées sont stockées dans la pile P, la pile envoie la réponse nécessaire ou commence directement la transmissions des données demandées, sinon elle envoie un message pour éliminer le paquet de la pile Q (ce paquet ne doit pas être transmis sur un nouveau bond). En résumé, dans la deuxième variante de réalisation de l'invention comprenant la présence d'une pile P, le procédé en plus des étapes mises en oeuvre au cours de la première variante exécute les étapes suivantes : Stocker les données reçues au niveau du noeud dans une pile P, Ajouter une information de marquage, c'est-à-dire l'identification du fragment de données, l'information sur sa possible corruption à chaque remontée dans la pile (fonctionnalité qui n'était qu'optionnelle dans la première variante). En pratique, afin de réaliser ces fonctions, les opérations devront être réalisées dans le logiciel selon l'invention nommé � proxylite � au niveau des couches hautes (application). La gestion du paquet est déportée au niveau application (espace utilisateur) ainsi que les vérifications et décisions, puis le procédé fait un retour vers la pile de paquets stockés temporairement pour éventuellement modifier, éliminer ou retransmettre le paquet. Cette remontée dans les couches s'explique par le fait que le marquage s'appuie sur le calcul de sommes de contrôle (au niveau radio et au niveau transport) qui sont naturellement traités par la machine en remontant les paquets depuis la couche radio. Le � proxylite � pourra ainsi procéder au stockage dans une pile au niveau applicatif des paquets reçus et à la mise en place d'un outil de marquage des paquets permettant de leur appliquer une étiquette indiquant si le paquet est correct ou corrompu. Le paquet (identifié par Pkld) est reçu sur l'interface radio, et si le noeud n'est pas sa destination, est copié dans un tampon local (Q) en attendant la vérification du paquet : la transmission au noeud suivant ne sera faite que si et seulement si les en-têtes (radio, réseau et transport) sont corrects. Le paquet est également remonté vers les couches hautes pour d'une part vérification de sa possible corruption (l'intégrité des différentes en-têtes est vérifié grâce à leurs sommes de contrôle respectives) et d'autre part stockage dans une pile locale (P) de longue durée avec des informations supplémentaires sur le fragment de données (identifiant du fragment, possible corruption, ...). Dans le cas où la transmission sur le dernier bond avant le noeud courant a corrompu le paquet, on vérifie que les en-têtes sont intègres afin de pouvoir router convenablement le paquet, après avoir vérifié si la pile P est présente et si elle contient une version intègre du paquet, auquel cas c'est la charge utile intègre qui sera substituée à la charge utile erronée dans le tampon (Q). Si la pile P n'est pas présente ou ne contient pas le paquet, alors on propagera tout de même le paquet lorsque seule la charge utile a été corrompue puisqu'un décodeur multimédia robuste pourrait être en mesure d'utiliser correctement ce paquet. A chaque nouveau bond radio, le CRC de la couche radio est recalculé, puisque c'est un nouveau lien radio qui est établi. Ceci permet également un traitement plus rapide des transmissions bond par bond (la détection de nouvelles erreurs engendrant plus de traitements) et évite que des noeuds non équipés du procédé selon l'invention ne jettent le paquet partiellement corrompu. II est important de noter que le recalcul de ce CRC fait que pour ne pas perdre la connaissance d'une corruption, il est nécessaire de marquer le paquet d'informations avec une étiquette (notée CRC_Error_flag) indiquant si la charge utile est erronée on non. En effet, l'utilisation de la somme de contrôle transport n'est pas suffisant pour détecter ce que seul l'en-tête radio du bond où la corruption a eu lieu saura détecter. Dans la réalisation considérée ici, on propose d'intégrer cette étiquette comme une information dans une extension spécifique de l'en-tête RTP du paquet. de manière optionnelle, l'en-tête RTP spécifique peut contenir une somme de contrôle supplémentaire (dit CRC RTPproxylite) permettant la validation de l'en-tête RTP et éventuellement des premiers octets de la charge utile. Cette fonctionnalité supplémentaire permettra de protéger les informations clefs non protégées par la somme de contrôle de la couche transport, et donc d'assurer que le paquet conservé avec une étiquette CRC_Error flag égale à 1 a des chances raisonnables d'être utile pour le décodeur multimédia. L'information CRC_Error_flag a notamment trois buts : Permettre de mettre à jour la pile de stockage (P) avec une version détectée correcte d'un paquet qui aurait été préalablement reçu avec erreurs, Choisir ou non (selon des paramètres de la requête du client, ou choix du système) de propager l'ensemble des paquets stockés ou seulement les paquets corrects, Permettre au client de fournir à son décodeur multimédia l'information de corruption pour lancer au besoin un décodage robuste. Comme dit précédemment, la pile locale (P) stocke en couche application (espace utilisateur) avec les fragments reçus également leurs identifiants et l'information CRC_error flag. Pour que la fonction de proxy soit efficace, l'identifiant du paquet doit être unique et pertinent. Comme l'on souhaite que le noeud réponde à une requête d'un autre utilisateur avec cette fonction de proxy, l'identifiant doit donc contenir à la fois l'information de dénomination du flux multimédia mais aussi une identification du paquet dans ce flux. De nombreuses solutions sont envisageables pour cet identifiant, qui sera lui aussi stocké dans l'en-tête RTP spécifique du paquet. Du fait de l'approche variable retenue pour la diffusion, plus que le fichier vidéo lui-même, les fragments que sont les paquets de données segmentés de manière cohérente à la fois pour l'application et pour l'encapsulation réseau sont ici 5 considérés comme l'unité à identifier. II est ainsi possible d'envisager le format présenté en Table 1 Identifiant du Identification Informations Somme de contrôle Validité du fichier du fragment du fragment fragment dans le fichier (optionnel) S par 4 numéro de 4 champ 5 Somme de 4 exemple fragment permettant contrôle sur le étiquette obtenu par dans le d'indiquer fragment + CRC_error fonction de fichier. d'éventuelles information de portée. _flag hachage sur opérations La somme de indiquant le nom du faites sur le contrôle porte sur si le fichier (ex : fragment (i.e. l'en-tête RTP+ fragment MD5 sur 64 application de éventuellement une est ou 128 bits) protection, partie de la charge corrompu type de CRC utile. Cette somme a ou valide utilisé, ...). pour objet de (pas permettre de détecter d'erreur). la validité du paquet véhiculant le fragment multimédia (ex : 16/32 bits d'un CRC, 64 bits avec MD5 ...) Table û Proposition d'identifiant d'un fragment transmis sur le réseau adhoc. Grâce au fonctionnement du proxylite, les requêtes faites par les clients dans le réseau adhoc (opérations en voie � montante �) seront interceptées par chacun des noeuds et la requête sera comparée à la liste des paquets en mémoire dans la pile (P) du noeud courant. Dans le cas où l'un (ou plusieurs) des paquets demandés est (sont) présent(s) dans la pile, la requête du client est modifiée pour ne plus porter que sur les fragments manquants et les fragments disponibles sont extraits de la pile (P) pour transmission vers le client demandeur. Cependant, il reste important de garder en mémoire le fait que les paquets marqués d'un CRC_error_flag égal à 1 pourraient être trop corrompus pour être utilisables par un, plusieurs ou tous les clients. Afin de permettre la remise en cause de la pertinence du paquet corrompu, nous proposons donc également de stocker dans la liste des informations supplémentaires annexées à son fragment dans la pile (P) les destinataires auxquelles les trames corrompues ont été transmises. Ainsi, dans le cas où une seconde requête d'un client serait reçue pour un fragment corrompu qui lui aurait déjà été transmis, on en déduira que le fragment a de fortes chances d'être trop corrompu pour être utile, et donc on le supprimera de la pile (P) avant de retransmettre la requête concernant ce fragment vers la source. Les figures 6 et 7 décrivent les mesures d'évolution du débit utile offert pour différentes configurations du système, les courbes I, II, III correspondent aux résultats obtenus par les systèmes de l'art antérieur, respectivement pour 2, 4 et 6 bonds. Les courbes Ip, Ilp, Illp sont obtenues respectivement pour 2, 4 et 6 en utilisant le procédé selon l'invention. De ces courbes, il ressort que la fonctionnalité proxylite permet d'obtenir un gain, qui limite la chute du débit avec l'augmentation de la durée de l'intervalle moyen de temps entre la réception de deux trames vidéo pour le client. La figure 8 montre pour les mêmes configurations du système que sur les figures 6 et 7 le gain en qualité objective (représenté par le PSNR Peak Signal to Noise Ratio), les courbes IV, V, VI correspondent aux résultats obtenus par les systèmes de l'art antérieur, respectivement pour 2, 4 et 6 bonds, l'indice p correspondant aux courbes obtenues en utilisant le procédé selon l'invention. Ceci apparaît encore plus clairement en observant l'évolution de la qualité vidéo instantanée de la vidéo transmise. Dans un contexte où la ressource radio est rare ou chère et/ou par souci d'économie des batteries de noeud jouent le rôle d'un réseau ad hoc (dans un réseau de pairs mobiles, chaque noeud joue le rôle de relais y compris pour des données qui ne le concerne pas, et donc pour lesquels il ne voudra pas épuiser sa batterie, il sera donc intéressant de ne demander une retransmission des données multimédia erronés que si le taux d'erreurs est réellement important, c'est-à-dire que l'information transmise par le paquet corrompu ne suffit pas au décodeur multimédia pour fournir un masquage pertinent. Statistiquement, le fait d'obtenir des en-têtes corrects, par exemple au moyen de la somme de contrôle UDP-Lite, dans un paquet est un test raisonnable permettant de savoir si le paquet a des chances de ne pas être trop corrompu pour le décodeur de sources sache l'utiliser. Le procédé et le système selon l'invention permettent d'améliorer les performances des transmissions point à multipoints grâce à la double fonction de � proxy � et � lite �. Un des intérêts de ce système est qu'il peut s'adapter sur toute technique de routage adaptatif pour en tirer parti et améliorer les performances du système. L'invention permet aussi de limiter de la bande passante utilisée aux transmissions utiles (un noeud ayant connaissance d'une information la fournit directement, sans qu'il soit besoin de remonter jusqu'à la source (fonction de proxy). Cette opération est fait y compris pour les paquets éventuellement corrompus au niveau de la charge utile, afin de tirer parti des capacités des flux multimédias à être affichés avec quelques erreurs ou pertes (fonction de proxylite). De plus, chaque paquet est marqué afin que l'on puisse savoir son état exact (corrompu ou non) et autoriser des demandes de retransmission 30 ou non en fonction des choix utilisateurs/système. REVENDICATIONS1 Procédé de transmission de données multimédia dans un réseau de communication ad hoc comprenant au moins une source S et plusieurs noeuds Ni communiquant entre eux au moyen de liens Li, un nombre Np desdits noeuds étant équipé d'un processeur (6) pour mettre en oeuvre au moins les étapes suivantes : Recevoir (20) au moins un paquet de données multimédia, Effectuer (21) un calcul du CRC radio complet dudit paquet reçu, a) dans le cas où la valeur du CRC en-tête comporte une erreur, alors le paquet est éliminé, (22) b) dans le cas où la valeur du CRC en-tête est sans erreur, alors l'étape suivante consiste à regarder si le noeud en cours Ni est le 15 noeud destinataire c) Si le noeud courant est le noeud destinataire, alors le procédé va remonter la valeur du CRC radio complet (25), tester (26) si la valeur du CRC transport est erronée, éliminer le paquet (27) si cette valeur est erronée, sinon, remonter le paquet vers l'application 20 (30) pour décodage, d) Si le noeud courant n'est pas le noeud destinataire, alors, (40), le procédé stocke le paquet dans une pile temporaire Q et initialise un timer T (pkltd) correspondant à une durée maximale de traitement des données du paquet, 25 le procédé vérifie ensuite la valeur du CRC radio complet du paquet (41), si cette dernière est correcte alors le procédé va modifier la pile Q et remettre à zéro le timer T(pkltd) (43) pour envoi du paquet (56, 57, 58), puis le procédé passe au 30 traitement d'un autre paquet de données multimédia, si la valeur du CRC des données est erronée, alors (44), le procédé lance le déclenchement du timer CKS_VER(Pkld) (45) pour une vérification au niveau de l'intégrité de la charge des données, en parallèle, le procédé effectue la remontée (46) du paquet des données multimédia vers les couches hautes du réseau radio, en éliminant les paquets dont la valeur du CRC transport est erronée (48) et en faisant remonter les en-têtes correctes pour le paquet Pkld (51) pour les paquets dont la valeur du CRC est correcte, si le timer CKS_VER(PkId) qui correspond à la vérification de l'intégrité du paquet, est expiré, dans tous les cas, le procédé modifie la pile Q en éliminant le paquet (55), e) à l'expiration du timer T(Pkld) (56) le procédé va extraire le paquet de la pile Q pour le transmettre sur un nouveau bond, ou vers un autre noeud du réseau, pour cela il va effectuer un re-calcul du CRC radio complet (57), puis va émettre le paquet sur le lien physique (58) vers le bond suivant en destination d'un noeud du réseau. 2 ù Procédé selon la revendication 1 caractérisé en ce que au cours de l'étape d), si le timer CKS_VER(Pkld) n'est pas expiré, alors le procédé modifie la pile ou mémoire temporaire Q en positionnant un champ indiquant la corruption du paquet. 3 ù Procédé selon la revendication 2 caractérisé en ce qu'il indique la corruption du paquet par l'indication (CRC_Error Flag) (54). 4 ù Procédé selon la revendication 1 caractérisé en ce qu'un 30 paquet de données comprend une étiquette correspondant à une information dans une extension spécifique de l'en-tête RTP du paquet, ladite en-tête25 RTP spécifique contenant une somme de contrôle supplémentaire permettant la validation de l'en-tête RTP et éventuellement des premiers octets de la charge utile, les paquets étant éliminés lorsque cette valeur est erronée. 5 û Procédé selon l'une des revendications 1 ou 2 caractérisé en ce qu'il comprend une étape de mémorisation d'informations incluant au moins les étapes suivantes lorsque le noeud sur lequel sont reçues les données est destinataire, simultanément le procédé remonte la valeur du CRC radio complet (25), et fait (61), une copie du paquet dans une pile P pour stockage (62) dans ladite pile P de l'identifiant du paquet, de la charge utile ou ses données du paquet et l'état du paquet, dans le cas où le noeud n'est pas destinataire, alors, lorsque la valeur du CRC radio complet est incorrecte, le procédé remonte (63), l'information erronée (63A), pour stockage, et déclenche le timer CKS VER(Pkld) de vérification du paquet (52), lorsque la valeur du CRC radio complet est correct (41) et la valeur du CRC_Error Flag est correcte (42), ledit procédé transmet (65) l'information correcte pour stockage, remonte l'information erronée (64) pour stockage et selon les étapes des revendications 1 ou 2, le procédé déclenche une demande de vérification de l'intégrité du paquet CKS VER REQ, et le lancement de timer (44, 45) CKS VER(Pkld) pour vérification de l'intégrité du paquet, lors de l'étape de remontée du paquet vers les couches hautes (46), le procédé va remonter (66) vers la pile P l'information de stockage pour le paquet Pkld, dans le cas où la transmission sur le dernier bond a corrompu le paquet, le module (70) de réponse aux demandes de contrôle CKS VER REQ est sollicité et va donc, au lancement du timer CKS- VER(Pkld), en parallèle de la remontée (51), interroger (67), la pile P pour vérifier si cette dernière contient une version intègre du paquet, auquel cas le timer CKS_VER(Pkld) est mis à zéro, et le procédé substitue à la charge utile erronée la charge utile intègre dans le tampon Q, à l'expiration du timer T(Pkld), le procédé va extraire le paquet pour transmission en ayant au préalable, recalculer (57) le CRC radio, s'il ne trouve pas de paquet intègre, le procédé attend la remontée (51) de paquet et il propage le paquet lorsque seule la charge utile ou données a été corrompue. 6 ù Procédé selon l'une des revendications 2 à 5 caractérisé en ce que lors du stockage dans la pile P, le procédé mémorise les données reçues au niveau du noeud ainsi que l'identification de données, information sur sa possible corruption à chaque remontée dans la pile P. 15 7 Procédé selon la revendication 1 caractérisé en ce qu'il comporte une étape d'interception des requêtes en voie montante, les requêtes émises d'un client vers la source d'émission, et en ce qu'il comporte au moins les étapes suivantes : sur réception d'une nouvelle demande de transmission multimédia, le 20 procédé : - calcule la valeur CRC radio complet. - teste la valeur du CRC en-tête liaison, si cette dernière est erronée, alors le paquet est éliminé si la valeur du CRC en-tête est sans erreur: alors 25 si le noeud est le destinataire: le paquet est remonté vers l'application si le noeud n'est pas le destinataire, alors : le paquet est stocké dans la pile temporaire Q avec le timer T(pkltd) 30 le paquet est remonté vers l'application, à l'expiration du timer le paquet est transmis sur un nouveau bond après re-calcul du CRC complet Au niveau application: -si les données demandées sont stockées dans la pile P, la pile envoie la réponse nécessaire ou commence directement la transmissions des données demandées, sinon elle envoie un message pour éliminer le paquet de la pile Q. 8 - Système de transmission de données multimédia dans un réseau ad hoc comprenant au moins une source émettrice de données multimédia et plusieurs noeuds Ni communiquant entre eux grâce à des liens Li, lesdits noeuds comprenant une partie récepteur (4), permettant de recevoir un paquet de données, une partie émettrice (5) ayant pour fonction de transférer un paquet vers un Ni, caractérisé en ce que Np noeuds sont équipés des éléments supplémentaires suivants : une pile Q correspondant à une mémoire de stockage temporaire, une pile P ou mémoire à long terme, un processeur (6) adapté à exécuter les étapes du procédé selon l'une des revendications 1 à 7.