PROCEDE, SYSTEMES ET DISPOSITIF DE TEMPORISATION D'UN FLUX DE PAQUETS DE DONNEES
Préambule de la description Domaine concerné La présente invention concerne un procédé et un système s 'appliquant à un dispositif placé en coupure dans un réseau informatique, traversé par un flux de paquets de données et ayant pour objectif l'analyse et/ou la modification sélective et/ou le filtrage sélectif du flux de paquets de données. Le procédé permet au dispositif de réaliser ces objectifs en minimisant les ressources informatiques nécessaires, mémoire et/ou puissance de calcul, tout en améliorant les performances du dispositif. Les règles (protocole) de circulation des données sur le réseau Internet sont connues sous le nom de Protocole Internet (IP pour Internet Protocol, cf. RFC 791) . Ce protocole est basé sur le modèle standard OSI (cf. ISO/IEC 7498-1 :1994) . Le modèle OSI structure les données transitant sur le réseau en 7 couches : La couche 7, ou couche application, permet l'interface avec les applications . La couche 6, ou couche présentation, définit le format des données.
La couche 5, ou couche session, définit l'ouverture des sessions sur les machines du réseau. La couche 4, ou couche transport, permet de contrôler le transport des données et de gérer les erreurs. Le protocole TCP (cf. Transmission Control Protocol : RFC 793) est 1 'implémentation de la couche transport la plus courante. La couche 3, ou couche réseau, définit l'acheminement (routage) des données . La couche 2, ou couche liaison de données, définit l'interface avec la carte réseau. La couche 1, ou couche physique, définit la façon dont les données sont converties en signaux numériques . Nous utiliserons le terme de couches applicatives pour désigner les couches 5 à 7 du modèle OSI. Ces couches applicatives contiennent l'ensemble des informations nécessaires aux applications communiquant sur le réseau pour fonctionner et se comprendre. Nous réserverons le terme de couches basses pour désigner les couches 1 à 4 du modèle OSI. Les utilisateurs portent aujourd'hui un intérêt manifeste pour la sécurité des réseaux informatiques et demandent des moyens de lutte encore plus efficaces, entre autres contre les intrusions, contre les virus, contre les courriels non sollicités envoyés en masse, appelés usuellement "spam" et contre les fenêtres de publicité s Ouvrant automatiquement au-dessus des pages Web , appelées usuellement "popups" . Les attentes des utilisateurs sont multiples : ils souhaitent que tous ces services de sécurité soient combinés dans une solution tout-en-un, facile à déployer et transparente, c'est-à-dire une solution n'impliquant aucune installation sur la (ou les) machine (s) protégée (s) et ne nécessitant pas de reconfiguration des applications déjà installées. Par ailleurs, ils ne souhaitent pas qu'une part significative des ressources de la (ou des) machine (s) protégée (s) soient utilisée par ces
services de sécurité. Enfin, les utilisateurs "nomades", en nombre croissant, demandent une sécurité personnelle qu'ils peuvent transporter avec eux dans leurs déplacements. Pour répondre à ces multiples attentes, les services de sécurité tendent de plus en plus à être réalisés sur des systèmes embarqués placés en coupure sur le réseau, c'est-à-dire placés dans une position telle que tout le flux de communication émis par et à destination de la (ou des) machine (s) protégée (s) traverse le système. Ces systèmes apparaissent le plus souvent comme des "boîtes noires", expression que nous utiliserons par la suite. Ces "boîtes noires" de sécurité cherchent à intégrer tous les services de sécurité dans un dispositif unique afin d'offrir une solution tout-en-un. Elles doivent de plus être petites, pour être aisément transportables, et réalisées à un coût raisonnable de façon à être abordables par tous les utilisateurs potentiels du réseau. Un exemple de « boite noire » est la clé Zeribow® commercialisée depuis fin 2004 par la société Everbee Networks, Paris, France, et à travers laquelle est rerouté tout le flux «de communications entre un ordinateur et un réseau informatique. Mais ces "boîtes noires" sont aujourd'hui confrontées aux limites des systèmes embarqués : les nouveaux services de sécurité demandés par les utilisateurs exigent une inspection temps réel de plus en plus en profonde du flux réseau. Ils nécessitent des ressources informatiques de plus en plus importantes, tant au niveau de la puissance de calcul que de la capacité mémoire. En effet, un nombre toujours croissant de services de sécurité doit être réalisé simultanément. Par ailleurs, ces nouveaux services de sécurité sont de plus en plus orientés application : ils nécessitent une analyse approfondie des flux réseaux allant jusqu'aux couches applicatives (par opposition aux services de type pare-feu se limitant à l'étude des couches
transport et réseaux) , et requièrent donc des traitements exhaustifs et coûteux. Or pour un système embarqué, les ressources informatiques sont limitées par les contraintes de coût et d'encombrement. Les services offerts restent donc souvent limités et ne parviennent pas à répondre au niveau croissant d'exigence des utilisateurs, d'autant plus que ces limitations sont accentuées par la position des "boîtes noires" en coupure sur le réseau . Problème posé Pour circuler sur le réseau Internet, un message doit suivre les règles de circulation de données du protocole IP décrit précédemment : pour pouvoir être transmis à travers le réseau, un message est divisé par la machine émettrice en nombreux petits paquets comme les pièces d'un puzzle. Chaque paquet se voit ajouter un en-tête, une sorte d'enveloppe contenant l'ensemble des informations garantissant sa transmission : chaque paquet est, entre autres, numéroté et contient les adresses réseau des machines émettrices et réceptrices, appelées adresses IP. Ces paquets circulent sur le réseau séparément les uns des autres puis arrivent sur la machine réceptrice dans un ordre qui peut être différent de leur ordre initial. On parle alors de déséquencement. Ces paquets sont enfin rassemblés par la machine réceptrice qui lit puis supprime les en- êtes et reconstitue alors le message initial en réordonnant les paquets . Il en découle que les "boîtes noires" de sécurité voient passer les messages, en temps réel, sous forme de flux de paquets de données. Or, pour réaliser des services de sécurité sur ces flux, elles doivent analyser les messages, les modifier et/ou en supprimer certaines parties. On mesure alors toute la difficulté de réaliser un service sur un message lorsque l'on est trop limité en place mémoire pour stocker le message dans son intégralité et que l'on doit travailler à la volée sur des morceaux de ce message, des
paquets qui, difficulté supplémentaire, peuvent être déséquencés . Le problème à résoudre est donc de pouvoir offrir aux systèmes réalisant des services sur le réseau, un moyen leur permettant de réaliser ces services, tout en gardant la contrainte de limitation des ressources informatiques et sans perdre les avantages des "boîtes noires" cités plus haut. Art antérieur Les solutions adoptées aujourd'hui dans les systèmes embarqués pour réaliser des services du type de ceux cités plus haut, implémentent une technologie dite inspection de session ou "stateful inspection" : une table tient à jour la liste des flux qui ont été autorisés à traverser la "boîte noire" et ces flux autorisés peuvent être modifiés afin de réaliser les services. Lorsque l'analyse du flux est réalisée jusqu'aux couches applicatives (couche 5 à 7 du modèle OSI) , la technologie est alors dite inspection de contenu ou "content inspection" . Cependant, parmi les solutions actuelles implémentant une inspection de contenu, rares sont celles qui sont capables de modifier le flux. La plupart ne peuvent qu'interdire un flux lorsque l'analyse révèle une menace pour la sécurité du réseau. En outre, soumise aux contraintes dues à leur position en coupure sur le réseau, ces "boîtes noires" ne peuvent réaliser qu'un traitement paquet par paquet : elles décident à chaque paquet des modifications à faire sur le flux de paquet, puis décident de transmettre (ou non) le paquet. Les paquets sont donc traités séparément les uns des autres. Les modifications apportées à un paquet ne peuvent donc prendre en compte le contenu des paquets précédents ou suivants. Au mieux, une sorte d'historique du flux est réalisé en prenant une "photo" de chaque paquet à son arrivée et en mettant ces photos bout à bout pour reconstituer une fenêtre du flux. La "boîte noire" peut dans ce cas consulter l'historique du flux lorsqu'elle reçoit un paquet. Mais sa décision de
modifier et/ou de transmettre un paquet reste prise paquet par paquet et ne prend jamais en compte le contenu des paquets suivants . L'invention, objet du présent brevet, permet de résoudre les problèmes évoqués précédemment sans présenter les inconvénients de l'art antérieur. Elle pallie aux problèmes et aux limitations des technologies existantes en proposant une solution inventive. Solution Procédé L'invention concerne un procédé s 'appliquant à un dispositif placé en coupure dans un réseau informatique et traversé par un flux de paquets de données . Le dispositif a pour objectif l'analyse et/ou la modification sélective et/ou le filtrage sélectif du flux de paquets de données. Le procédé permet au dispositif de réaliser ces objectifs en minimisant les ressources informatiques nécessaires, mémoire et/ou puissance de calcul, tout en améliorant les performances du dispositif. Le procédé comprend une étape de temporisation. La temporisation consiste à retenir temporairement dans le dispositif tout ou partie des données, notamment des données des couches applicatives, du flux de paquets de données qui le traversent, de façon transparente pour l'émetteur et le récepteur du flux de paquets de données, indépendamment des données temporisées et en adaptant dynamiquement la taille des données temporisées aux objectifs. De préférence, selon l'invention le dispositif comprend un logiciel, un premier module, un deuxième module et au moins une mémoire dont une partie de taille variable, ci- après appelée fenêtre de temporisation, est destinée à la temporisation. De préférence, selon l'invention la temporisation comprend une sous-étape initiale pour le logiciel de fixer la
taille de la fenêtre de temporisation et d'initialiser le premier module et le deuxième module. De préférence, selon l'invention la temporisation comprend une sous-étape pour le premier module de recevoir tout ou partie des paquets du flux. De préférence, selon l'invention la temporisation comprend une sous-étape pour le premier module de se substituer au récepteur auprès de l'émetteur pour toutes les opérations d'échange d'information avec l'émetteur que le récepteur aurait effectuées s'il avait procédé lui-même à la réception, de sorte que la temporisation est transparente pour l'émetteur. De préférence, selon l'invention la temporisation comprend une sous-étape pour le premier module de placer dans la fenêtre de temporisation, tout ou parties des données, notamment applicatives, du paquet reçu par le premier module. De préférence, selon l'invention la temporisation comprend une sous-étape pour le logiciel d'être informé que de nouvelles données sont disponibles dans la fenêtre de temporisation. De préférence, selon l'invention la temporisation comprend une sous-étape pour le logiciel d'analyser et/ou de modifier sélectivement et/ou de filtrer sélectivement les données contenues dans la fenêtre de temporisation. De préférence, selon l'invention la temporisation comprend une sous-étape pour le logiciel d'informer le deuxième module que des données de la fenêtre de temporisation sont à émettre. De préférence, selon l'invention la temporisation comprend une sous-étape pour le deuxième module d'émettre les données à émettre vers le récepteur. De préférence, selon l'invention, le procédé comprend en outre une sous-étape, pour le deuxième module, de se substituer à l'émetteur auprès du récepteur pour toutes les opérations d'échange d'information avec le récepteur que l'émetteur aurait effectuées s'il avait procédé lui-même à
l'émission de données, de sorte que la temporisation est transparente pour le récepteur. De préférence, selon l'invention, la temporisation comprend une sous-étape pour le deuxième module d'informer le premier module et/ou le logiciel que les données ont été émises . De préférence, selon l'invention, la temporisation comprend une sous-étape pour le logiciel de modifier la taille de la fenêtre de temporisation. Système L'invention concerne aussi un système qui comprend un dispositif placé en coupure dans un réseau informatique et traversé par un flux de paquets de données . Le dispositif a pour objectif l'analyse et/ou la modification sélective et/ou le filtrage sélectif du flux de paquets de données. Le dispositif réalise ces objectifs en minimisant les ressources informatiques nécessaires, mémoire et/ou puissance de calcul, tout en améliorant les performances du dispositif. Le dispositif comprend des moyens de temporisation. Les moyens de temporisation retiennent temporairement dans le dispositif tout ou partie des données, notamment des données de la couche applicative, du flux de paquets de données, de façon transparente pour l'émetteur et le récepteur du flux de paquets de données, indépendamment des données temporisées et en adaptant dynamiquement la taille des données temporisées aux objectifs. De préférence, selon l'invention, le dispositif comprend un logiciel, un premier module, un deuxième module et au moins une mémoire dont une partie de taille variable, ci- après appelée fenêtre de temporisation. De préférence, selon l'invention le dispositif comprend des moyens d'initialisation permettant au logiciel de fixer la taille de la fenêtre de temporisation et d'initialiser le premier module et le deuxième module.
De préférence, selon l'invention, le dispositif comprend des moyens de réception permettant au premier module de recevoir tout ou partie des paquets du flux. De préférence, selon l'invention, le premier module est destiné à se substituer au récepteur auprès de l'émetteur pour toutes les opérations d'échange d'information avec l'émetteur que le récepteur aurait effectuées s'il avait procédé lui-même à la réception, de sorte que la temporisation est transparente pour l'émetteur. De préférence, selon l'invention, le premier module est destiné à placer dans la fenêtre de temporisation, tout ou parties des données, notamment applicatives, du paquet reçu par le premier module. De préférence, selon l'invention, le système est tel que le logiciel est informé que de nouvelles données sont disponibles dans la fenêtre de temporisation. De préférence, selon l'invention, le logiciel est associé à des moyens de traitement informatique pour analyser et/ou modifier sélectivement et/ou filtrer sélectivement les données contenues dans la fenêtre de temporisation. De préférence, selon l'invention, le système dispose de moyens permettant au logiciel d'informer le deuxième module que des données de la fenêtre de temporisation sont à émettre. De préférence, selon l'invention, le deuxième module comprend des moyens d'émission des données à émettre vers le récepteur. De préférence, selon l'invention, le deuxième module se substitue à l'émetteur auprès du récepteur pour toutes les opérations d'échange d'information avec le récepteur que l'émetteur aurait effectuées s'il avait procédé lui-même à l'émission de données, de sorte que la temporisation est transparente pour le récepteur. De préférence, selon l'invention, le système dispose de moyens permettant au deuxième module d'informer le premier module et/ou le logiciel que les données ont été émises.
De préférence, selon l'invention, le logiciel est associé à des moyens de modification de la taille de la fenêtre de temporisation. Description détaillée D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description de variantes de réalisation de l'invention données à titre d'exemple indicatif et non limitatif, et de la figure 1 qui représente le schéma général de l'interconnexion du système agissant dans l'invention avec un réseau informatique. Le système objet de la présente invention, s'applique à un dispositif D placé en coupure sur un réseau informatique R quelconque : il peut s'agir d'Internet, d'un réseau Intranet, d'un réseau domestique ou bien de seulement deux postes reliés entre eux. On entend par coupure la séparation physique du réseau R en deux sous réseaux reliés entre eux à l'aide du dispositif D. Ainsi tout le flux de paquets de données transitant d'un sous réseau à destination de l'autre sous réseau doit traverser le dispositif D. Le dispositif D a pour but la réalisation, à la volée, de services de sécurité sur le flux de paquets de données FPD qui le traverse. Nous utiliserons les termes émetteur A et récepteur B pour désigner l'émetteur du flux de paquets de données FPD et le récepteur du flux de paquets de données FPD. Les services sont réalisés par un logiciel L. Dans une réalisation particulière de l'invention, le logiciel L utilise des blocs "hardware" spécialisés pour réaliser tout ou partie des services. Le dispositif D possède une mémoire ME partagée par le logiciel L et par d'autres traitements informatiques réalisés par le dispositif D. Prenons l'exemple illustratif et non limitatif d'un service "anti-spam" réalisé sur les flux de réception de courriers électroniques.
Ce service "anti-spam" consiste à analyser uniquement le champ objet des courriers électroniques et, lorsqu'un courrier non sollicité est identifié, à ajouter la balise "[SPAM]" au début de l'objet du mail afin d'informer l'utilisateur. Le courrier peut alors être automatiquement dirigé dans une boîte aux lettres spéciale.
Les réceptions de courriers électroniques sont réalisées sur des flux suivant les protocoles TCP/IP, c'est-à- dire des flux séquences comprenant un système d'acquittement ("acknoledgement") . Le système d'acquittement est un des services de fiabilité offerts par TCP : un acquittement est généré et envoyé par le récepteur d'un message à son émetteur pour signaler à ce dernier qu'il a bien reçu une partie des données du message. La partie des données bien reçues est désignée dans l'acquittement, ce sont les données acquittées. Prenons le cas où le champ objet du mail est découpé sur deux paquets, le premier contenant les données applicatives "Pu" et le suivant contenant les données applicatives "blicité" . A la réception du premier paquet contenant "Pu", le logiciel L identifie au cours de son analyse (de type inspection de contenu) la présence du champ objet. L'analyse montre aussi que cet objet n'est pas complet. Le logiciel L décide donc d'initier une temporisation du flux de paquets de données FPD. Le logiciel L alloue alors la fenêtre de temporisation
FT au sein de la mémoire ME. Il fixe la taille de la fenêtre de temporisation FT à 50 caractères car c'est la taille moyenne d'un objet de courrier électronique. Le logiciel L place enfin les données des couches applicatives du paquet courant, c'est-à- dire "Pu", dans la fenêtre de temporisation FT. Le logiciel L initialise de plus un premier module Ml et un second module M2 avec les données des couches basses du paquet courant. Conformément au protocoles TCP/IP, ces données contiennent entre autres les adresses IP du récepteur B et de l'émetteur A mais
aussi un numéro de séquencement (Si) et un numéro d'acquittement (Al) du paquet courant. Le premier module Ml génère alors un acquittement pour les données du paquet temporisé "Pu" et l'envoie à l'émetteur A : il est capable de générer cet acquittement puisque, à son initialisation, il a reçu (SI) et (Al) . Il calcule donc pour cet acquittement, un numéro de séquencement valant (Al) et un numéro d'acquittement valant : (SI) + la longueur des données "Pu". En outre, le premier module Ml utilise comme adresse IP d'émetteur du paquet d'acquittement, l'adresse IP du récepteur B de sorte que pour l'émetteur A c'est le récepteur B qui semblera avoir envoyé l'acquittement : la temporisation du paquet "Pu" sera transparente pour l'émetteur A. La temporisation est alors initialisée . Lorsque le second paquet contenant la fin de l'objet
"blicité" arrive dans le dispositif D, c'est le premier module Ml qui le reçoit. Il génère alors un acquittement pour les données de ce second paquet et l'envoie à l'émetteur A : là encore le module Ml est capable de générer cet acquittement puisqu'il est consécutif à celui généré pendant la phase d'initialisation. Il calcule donc pour cet acquittement, un numéro de séquencement valant à nouveau (Al) et un numéro d'acquittement valant : (SI) + la longueur des données "Publicité" . Cette fois encore, le premier module Ml utilise comme adresse IP d'émetteur du paquet d'acquittement, l'adresse IP du récepteur B de sorte que pour l'émetteur A c'est le récepteur B qui semblera avoir envoyé l'acquittement. La temporisation du paquet "blicité" sera transparente pour l'émetteur A. Les données applicatives reçues (c'est-à-dire
"blicité") étant consécutives à celles présentes dans la fenêtre de temporisation FT (c'est-à-dire "Pu"), et, la taille de ces données étant inférieure à la taille disponible dans la fenêtre de temporisation FT, le premier module Ml place "blicité" dans la fenêtre, reconstituant ainsi l'objet "Publicité".
Il signale enfin au logiciel L que la fenêtre de temporisation FT contient de nouvelles données. Celui-ci peut alors reprendre son analyse sur le champ objet "Publicité" entier et identifier le courrier non sollicité. Il modifie alors l'objet "Publicité" en "[SPAM] Publicité". Le traitement de cet objet étant terminé, il signale au second module M2 que toutes les données de la fenêtre de temporisation FT peuvent être émises. Le second module M2 émet alors les données modifiées "[SPAM] Publicité" vers le récepteur B, les supprime de la fenêtre de temporisation FT et signale à L et au premier module
Ml que les données ont été supprimées de la fenêtre de temporisation FT. Le second module est capable de générer vers le récepteur B un flux cohérent puisque les numéros de séquencement et d'acquittement à utiliser sont ceux du paquet "Pu" qu'il a reçus à son initialisation : (SI) et (Al) . L'ajout de la balise "[SPAM]" dans les données engendre donc un décalage du séquencement global du flux FPD égal à la taille des données ajoutées : en effet, à l'entrée du dispositif D "Publicité" avait un séquencement (SI) . A la sortie du dispositif D, la chaîne "Publicité" a un séquencement égal à : (SI) + la taille de la balise "[SPAM] ". Par ailleurs, la suite de protocoles TCP/IP i-nclut un système de somme de contrôle (checksum) afin de garantir contre toute modification des données du paquet, c'est une sorte de signature des données du paquet insérée dans son en-tête (dans la couche OSI 4) . Le second module M2 calcule donc la somme de contrôle correspondant aux données modifiées et l'insère dans le flux FPD généré. En outre, le second module M2 utilise comme adresse IP d'émetteur du paquet d'acquittement, l'adresse IP de l'émetteur
A de sorte que pour le récepteur B c'est l'émetteur A qui semblera avoir envoyé le flux FPD : la temporisation sera transparente pour le récepteur B.
Lorsque L reçoit l'information que les données ont été émises, il signale aux modules Ml et M2 que la temporisation est terminée et désalloue la fenêtre de temporisation FT, libérant ainsi une partie de la mémoire ME.
Le reste du flux FPD venant de l'émetteur A sera cependant modifié par le second module M2 au niveau des données des couches basses. En effet, pour que le flux FPD reste cohérent, les numéros de séquencement et d'acquittement doivent continuer d'être décalés de la taille des données qui ont été ajoutées. Cet exemple montre bien avec quelle facilité la présente invention permet au système de réaliser le service. Cet exemple ne limite pas la présente invention à un placement de données des couches applicatives dans la fenêtre de temporisation FT. Les données placées dans la fenêtre de temporisation FT peuvent provenir de n'importe quelle couche OSI si cela est nécessaire. Cet exemple ne limite pas les modules Ml et M2 de la présente invention aux traitements décrits dans l'exemple. Les modules Ml et M2 peuvent prendre en charge n'importe quel traitement sur le flux FPD, notamment jusqu'au niveau des couches applicatives. Par exemple, le premier module Ml peut avoir besoin de générer des données applicatives et de les envoyer à l'émetteur A, pour forcer l'application émettrice à continuer de lui envoyer le flux FPD. Avantageusement, les modules Ml et M2 disposent chacun d'une mémoire tampon d'émission et d'une mémoire tampon de réception propres, ci-après appelées buffer d'émission et buffer de réception. Ceci permet au premier module Ml de recevoir et d'acquitter des données de l'émetteur A alors même que la fenêtre de temporisation FT n'a pas d'espace disponible. Cela rend donc le placement de données dans la fenêtre de temporisation FT asynchrone avec la réception des paquets. En
effet, le premier module Ml peut placer des données dès que de l'espace se libère dans la fenêtre, c'est-à-dire dès qu'il reçoit l'information du second module M2 que des données ont été libérées . Lorsque le buffer de réception propre au premier module Ml est plein, les paquets envoyés par l'émetteur A ne sont plus acquittés. L'émetteur A devra donc, selon les règles du protocole TCP/IP, ré-émettre ces paquets . Symétriquement, l'avantage pour le second module M2 est de rendre asynchrone la libération de données de la fenêtre de temporisation FT et l'émission de données vers le récepteur
B. Dans l'exemple décrit précédemment, prenons le cas où le champ objet du courrier "Publicité" est, cette fois, découpé sur trois paquets reçus de manière déséquencée, c'est-à-dire le premier paquet reçu contenant "Pu", le second contenant "cité" et le dernier paquet reçu contenant "bli". Les traitements sont identiques à ceux décrits précédemment pour le premier paquet reçu. Lorsque le second paquet contenant "cité" est reçu, le premier module Ml ne place pas les données "cité" dans la fenêtre de temporisation FT car elles ne sont pas séquencées avec les données "Pu" déjà présentes dans la fenêtre de temporisation FT. Lorsque le troisième paquet, contenant "bli" est recru, le premier module Ml place alors à la fois les données "bli" et les données "cité" dans la fenêtre de temporisation FT, reconstituant ainsi l'objet "Publicité". La suite des traitements est identique à celle décrite précédemment. Cet exemple montre bien avec quelle facilité la présente invention permet au système de réaliser le service même lorsque le flux de paquet de données FPD est déséquencé. Avantageusement, lorsque le premier module Ml place des données dans la fenêtre de temporisation FT, il ne tient pas
compte de la répartition en paquets que suivaient ces données lors de leur réception. Prenons un exemple où L a fixé la taille de la fenêtre de temporisation FT à 150 octets. Si le premier module Ml reçoit deux paquets de 100 octets de données applicatives, il place dans la fenêtre les données du premier paquet en entier et la moitié des données du second, remplissant ainsi la fenêtre de temporisation FT. Cela optimise donc la quantité de données placées dans la fenêtre, c'est-à-dire la quantité de données pouvant être analysée par le logiciel L. Avantageusement, les données des couches basses correspondant aux données applicatives temporisées sont conservées sous forme de liste chaînée par le système objet de là présente invention. Avantageusement, le logiciel L peut modifier cette liste chaînée. Cela permet ainsi au système de réaliser des services nécessitant une analyse et/ou des modifications des couches basses, notamment des services NAT—PT (cf. RFC 3022, Traditional IP Network Translater, P. Srisuresh,
K. Egevans, January 2001 and RFC 2766, cf. Network Adoress Translation - Protocol Translation (NAT-PT) , G. Tsirtsis, P. Srisuresh, February 2000) . L'exemple décrit précédemment montre aussi que la présente invention permet au système d'adapter la quantité de mémoire utilisée aux besoins du service à réaliser. En effet, le logiciel L est capable de commencer la temporisation au milieu du flux de paquets de données FPD, optimisant ainsi les coûts de traitement et la quantité de mémoire utilisée sur le début du flux. De plus, le logiciel L est capable d'augmenter et/ou de réduire la taille de la fenêtre de temporisation FT à tout moment, optimisant ainsi la quantité de mémoire utilisée. Enfin le logiciel L est capable d'arrêter la temporisation avant la fin du flux en libérant totalement la fenêtre de temporisation FT, optimisant ainsi la quantité de mémoire utilisée sur la fin du flux FPD.
La temporisation n'est donc réalisée qu'au moment où elle est nécessaire et utilise une quantité de mémoire adaptée. Avantageusement, dans le cas où le logiciel L arrête la temporisation au cours du flux FPD, le buffer de réception du second module M2 peut être libéré : le buffer d'émission du premier module Ml devient alors aussi buffer de réception pour le second module M2. Avantageusement, dans le cas où le logiciel L arrête la temporisation sans avoir jamais modifié le flux FPD, il peut signaler au second module M2 qu'il n'y a pas de changement à. appliquer sur les données des couches basses sur la suite du flux FPD, optimisant encore les coûts de traitement. Avantageusement, les modules Ml et M2 sont réalisés tout ou partie en "hardware". Avantageusement, le logiciel L a accès à des blocs
"hardware" pour réaliser tout ou partie de l'analyse et/ou de la modification du flux de paquets de données FPD. L'exemple décrit précédemment montre aussi que la présente invention permet au système de temporiser n'importe quel type de flux, indépendamment des données des couches applicatives, c'est-à-dire, indépendamment de l'application transitant sur le réseau R. Dans tous les exemples décrits précédemment, les modules Ml et M2 jouent des rôles symétriques pour le traitement du flux inverse au flux FPD : lorsque l'émetteur A devient récepteur et le récepteur B devient émetteur, une nouvelle fenêtre de temporisation FT est créée, le premier module Ml joue le rôle du second module M2 et inversement. Le logiciel L peut alors avantageusement lier les traitements sur les deux flux inverses l'un de l'autre. Le système objet de la présente invention permet ainsi à un dispositif de réaliser des services sur un flux de paquets de données en minimisant les ressources informatiques nécessaires, mémoire et/ou puissance de calcul, tout en améliorant les performances du dispositif. Il est donc
particulièrement adapté aux systèmes embarqués, soumis à des contraintes sur les ressources informatiques pour des raisons de coût et d'encombrement.