Brevet FR2968871A1 — publié le 20120615

L'invention concerne une technique de traitement de segments de données dans un réseau de communication. L'augmentation du trafic associé à des contenus a conduit les opérateurs de réseau de communication à déployer des équipements dédiés dans leurs réseaux. De tels équipements correspondent par exemple à des caches «Web », des équipements mandataires pour le protocole HTTP ou «Proxy-HTTP », des serveurs de contenus. Les services associés sont par exemple de la diffusion de contenus en temps réel ou à la demande, d'informatique dématérialisée ou «cloud computing ». Il est possible pour ces différents services de mettre en place des architectures dédiées et dimensionnées pour un service donné. Une alternative consiste à mettre en place une architecture orientée pour la gestion des contenus, également appelée « content centric » en anglais. Ce type d'architecture permet de simplifier les opérations d'administration du réseau et d'optimiser l'utilisation des ressources matérielles, que cela soit la capacité de traitement, la capacité des liens et la capacité d'enregistrement. Les équipements du réseau peuvent disposer d'une mémoire cache, visant à conserver des données demandées par une entité cliente, afin de les transmettre ultérieurement à d'autres entités clientes. L'article de P. Venketesh et al., intitulé «Enhancing QoS in Web caching using differentiated services » et publié en 2006 dans la revue « International Journal of Computer Science & Application », propose une méthode permettant d'améliorer la gestion de mémoires caches dans de tels réseaux. Cette méthode repose sur une répartition dynamique d'une mémoire cache en fonction de classes de service ou niveaux de priorité respectivement associés aux applications. Cette répartition dynamique entre les différentes applications est réévaluée en fonction de la demande, c'est-à-dire en fonction de probabilités pour chaque application d'obtenir à partir de la mémoire cache un segment de données dans un équipement. Une telle méthode permet d'améliorer les performances des applications de niveau de priorité élevé sans dégrader celles des applications de niveau de priorité faible. Toutefois, une telle méthode nécessite la mise en oeuvre de mesures de qualité des différentes applications ou des services, de réagir en fonction de ces mesures afin de reconfigurer la répartition dynamique de la mémoire cache entre les applications. Ceci est complexe à mettre en oeuvre dans un réseau de communication, notamment afin d'éviter des reconfigurations excessives de la mémoire cache. Un des buts de l'invention est de remédier à des insuffisances/inconvénients de l'état de la technique et/ou d'y apporter des améliorations. Selon un premier aspect, l'invention a pour objet un procédé de traitement de segments de données mis en oeuvre par un dispositif d'acheminement d'un réseau de communication, lesdits segments de données étant associés à des applications, une mémoire cache dudit dispositif étant apte à conserver des segments de données en vue d'une retransmission ultérieure, ledit procédé comprenant, sur réception d'un segment de données associé à une application : - une étape d'obtention d'un niveau de priorité de ladite application à partir du segment de données reçu ; - une étape de détermination d'au moins un segment appartenant à au moins un niveau de priorité inférieur et conservé dans ladite mémoire cache ; - une étape de suppression de la mémoire cache dudit au moins un segment déterminé ; - une étape d'enregistrement dudit segment de données reçu dans ladite mémoire cache. Le procédé de traitement de segments de données est mis en oeuvre dans un dispositif du réseau de communication, apte à acheminer des segments de données. Il peut s'agir par exemple d'un serveur mandataire HTTP, d'un routeur du réseau, de caches Web, d'un serveur appartenant à un réseau de distribution de contenu,.... Des applications transmettent des segments de données relatifs à un contenu. Il s'agit par exemple d'applications telles que des services de diffusion de contenus temps réel, à la demande ou bine encore «Live ». Il peut également s'agir d'applications de téléphonie, dans lesquels des segments sont conservés pour pallier d'éventuelles pertes de segments. Aucune limitation n'est attachée au type d'application. De tels segments de données peuvent être des objets ou bien des morceaux d'objet. Une application peut être déterminée à partir d'un segment de données soit par une information explicite soit par analyse du segment de données. Ainsi, grâce à l'invention, il n'est pas nécessaire de définir une partition de la mémoire cache entre différentes applications, que celle-ci soit statique ou dynamique. L'accès à la mémoire cache reste simple à mettre en oeuvre, contrairement à la méthode dynamique citée précédemment, qui nécessite des opérations de reconfiguration complexes. En outre, l'accès à la mémoire cache s'adapte en fonction des demandes effectives des différentes applications et ne nécessite pas de mesures de qualité de service des différentes applications. La mémoire cache est également utilisée de manière plus efficace. Tant que des applications de niveau de priorité élevé n'utilisent pas les ressources disponibles de la mémoire cache, celles-ci peuvent être utilisées par des applications de niveau de priorité inférieur. Dès qu'une application de niveau de priorité plus élevé a de nouveau besoin de ressources dans la mémoire cache, les segments de données des applications de niveau de priorité inférieures sont supprimés de la mémoire cache, afin de conserver ceux de niveau de priorité plus élevé. Lorsque les ressources mémoires sont en limite de capacité, le procédé permet de garantir que les segments de données relatifs aux applications de niveau de priorité le plus élevé sont conservés dans la mémoire cache au détriment de ceux des applications de niveau de priorité le plus faible. Selon une caractéristique particulière, une durée de validité étant associée à un segment de données conservé dans ladite mémoire cache, le procédé comprend en outre un processus de suppression des segments de données pour lesquels la durée de validité associée a expiré. Les performances du procédé sont améliorées par l'association de la durée de validité aux segments de données. On évite ainsi qu'une application de niveau de priorité élevé monopolise les ressources de la mémoire cache. Selon une autre caractéristique particulière, l'étape de détermination d'au moins un segment de données est mise en oeuvre du niveau de priorité le plus faible jusqu'à un niveau de priorité inférieur ou égal au niveau de priorité associé au segment de données reçu. Selon un deuxième aspect, l'invention concerne également un dispositif d'acheminement dans un réseau de communication. Ce dispositif est agencé pour traiter des segments de données, lesdits segments de données étant associés à des applications. Il comprend notamment : - une mémoire cache, agencée pour conserver des segments de données en vue d'une retransmission ultérieure ; - des moyens d'obtention d'un niveau de priorité, activés sur réception d'un segment de données associé à une application, agencés pour obtenir le niveau de priorité de ladite application à partir du segment de données reçu ; - des moyens de détermination et de suppression d'au moins un segment appartenant à au moins un niveau de priorité inférieur et conservé dans ladite mémoire cache ; - des moyens d'enregistrement dudit segment de données reçu dans ladite mémoire cache. Selon un troisième aspect, l'invention concerne en outre un réseau de communication, comprenant un dispositif d'acheminement tel que décrit précédemment. Selon un quatrième aspect, l'invention concerne un programme pour un dispositif d'acheminement, comprenant des instructions de code de programme destinées à commander l'exécution des étapes du procédé précédemment décrit, lorsque ledit programme est exécuté par ledit dispositif et un support d'enregistrement lisible par un dispositif d'acheminement sur lequel est enregistré un programme pour un dispositif d'acheminement. L'invention sera mieux comprise à l'aide de la description suivante d'un mode de réalisation particulier du procédé de l'invention, en référence aux dessins annexés sur lesquels : - la figure 1 représente un système de communication ; la figure 2 représente les étapes du procédé selon un mode particulier de réalisation de l'invention ; les figures 3a et 3b illustrent des exemples de mise en oeuvre du procédé selon un mode particulier de réalisation ; - la figure 4 représente un dispositif d'acheminement selon un mode particulier de l'invention. La figure 1 représente un système de communication 1 permettant à des entités clientes 10, 11 d'accéder à différentes applications comme la télévision, la vidéo à la demande, l'Internet. Chaque entité cliente 10, 11 est reliée à un réseau d'accès 3. Ce dernier permet aux entités clientes d'accéder aux applications mises en oeuvre par des serveurs, dont un d'entre eux, le serveur 30, est représenté sur la figure 1. Lorsqu'une entité cliente 10, 11 accède à une application donnée mise en oeuvre par le serveur 30, des segments de données relatifs à cette application donnée sont échangés du serveur 30 vers l'entité cliente 10, 11. Il peut s'agir d'une navigation sur un site Web comprenant des segments de données. Il peut également s'agir d'une application de diffusion de contenus, par exemple dans une architecture de type CDN, pour « Content Delivery Network ». Plus précisément, lorsque l'entité cliente 10 transmet une ou plusieurs requêtes à destination du serveur 30, des segments de données sont transmis en réponse par le serveur 30. Ces segments de données transitent par l'intermédiaire du réseau d'accès 3. Celui-ci comprend des dispositifs d'acheminement 20, dont certains comprennent des mémoires caches 21, aptes à conserver des segments de données en vue d'une retransmission ultérieure. Lorsqu'une autre entité cliente 11 transmet à son tour une ou plusieurs requêtes relatives aux mêmes segments de données à destination du serveur 30, le dispositif d'acheminement 20 vérifie si les segments de données associés à la ou les requêtes sont conservés dans la mémoire cache 21. Si tel est le cas, le dispositif d'acheminement 20 obtient ces segments à partir de la mémoire cache 21 et les transmet à l'entité cliente 11 en réponse à la ou les requêtes. Par la suite, on associe à une application un niveau de priorité. Il est ainsi possible de définir N niveaux de priorité. A titre d'exemple non limitatif dans la suite de la description, un niveau de priorité 1 correspond à une application de priorité haute, le niveau de priorité N correspondant à un niveau de priorité le plus bas. On peut ainsi donner par exemple un niveau de priorité élevé à une application de navigation Web et un niveau de priorité faible à une application de téléphonie. Les niveaux de priorité sont définis par configuration et mémorisés par exemple dans une mémoire non représentée du dispositif d'acheminement 20. Il est ici souligné que les niveaux de priorité peuvent être différents d'un dispositif d'acheminement à un autre. Ceci permet de fournir un traitement adapté en fonction de la localisation du dispositif d'acheminement dans la topologie du réseau. Les niveaux de priorité peuvent ainsi être fixés de façon différente entre un dispositif situé au niveau de l'accès des entités clientes et un autre dispositif situé au coeur du réseau. A un segment de données est associé une durée de validité, notée TTL pour «Time To Live ». Cette durée de validité peut par exemple dépendre de l'application. Des segments de données d'une application temps réel deviennent plus rapidement obsolètes que ceux d'une application de vidéo à la demande. Pour une application temps réel, la durée de validité peut ainsi être fixée à une valeur de l'ordre de quelques centaines de millisecondes. Pour une application de diffusion de contenus vidéo à la demande, la durée de validité peut être fixée à une valeur de l'ordre de quelques minutes voire des heures. Les durées de validité respectivement associées aux applications peuvent être mémorisées dans le dispositif d'acheminement 20. Les durées de validité peuvent également être fixées par un distributeur du segment de données et être comprises dans ce dernier. Nous allons maintenant décrire le procédé de traitement de segments de données dans un mode particulier de réalisation en relation avec la figure 2. Dans une première étape El, le dispositif d'acheminement est en attente de réception d'un segment de données. Lorsqu'un segment de données est reçu, le dispositif d'acheminement 20 détermine à quelle application est associé ce segment de données et obtient un niveau de priorité de cette application. Ce niveau de priorité est noté k par la suite. Le segment de données est noté Obj(k) par la suite et sa taille est notée L(k). Lors d'une étape E2, le dispositif d'acheminement 20 vérifie si la mémoire cache 21 est saturée. Si tel est le cas, il n'est pas possible de conserver directement le segment de données Obj(k) de taille L(k) dans la mémoire cache 21 et le procédé passe à une étape E20. Si la mémoire n'est pas saturée, le dispositif d'acheminement 20 mémorise dans une étape E24 le segment de données reçu Obj(k) et la durée de validité initiale TTL. Le procédé retourne ensuite à l'étape El en attente de réception d'un nouveau segment de données. A l'étape E20, lorsque la mémoire cache 21 est saturée, le dispositif d'acheminement 20 initialise un compteur i à la valeur N, cette valeur N correspondant pour rappel au nombre de niveaux de priorité. Lors d'une étape E21, le dispositif d'acheminement 20 vérifie s'il existe des segments de données relatifs au niveau de priorité i. S'il n'en existe pas, le dispositif d'acheminement 20 décrémente dans une étape E30 le compteur i. Dans une étape E31, le dispositif d'acheminement 20 compare le compteur i et le niveau de priorité k du segment de données Obj(k). Si le compteur i est strictement inférieur au niveau de priorité k, il n'a pas été possible de déterminer un segment de données d'un niveau de priorité inférieur au niveau de priorité k du segment de données Obj(k). Le dispositif d'acheminement 20 transmet alors le segment de données Obj(k) à l'entité cliente 10, 11 sans le conserver dans la mémoire cache 21. Si le compteur i est supérieur ou égal au niveau de priorité k, le procédé repasse à l'étape E21, décrite précédemment. S'il existe des segments de données de niveau de priorité i, ce niveau de priorité i étant inférieur ou égal au niveau de priorité k du segment de données, dans une étape E22, le dispositif d'acheminement 20 détermine un ou des segment(s) de données à supprimer pour libérer l'espace nécessaire dans la mémoire cache 21 afin de conserver le segment de données Obj(k) de taille L(k). Pour déterminer ces segments de données candidats à la suppression, le dispositif d'acheminement 20 peut utiliser différentes méthodes de sélection. Il s'agit par exemple de la méthode LRU, pour « Least Recently Used », permettant de sélectionner un segment de données qui a été demandé le moins récemment. Toujours à titre d'exemple, il s'agit de la méthode LFU, pour « Least Frequently Used », permettant de sélectionner un segment de données qui a été demandé le moins fréquemment. Aucune limitation n'est attachée au type de méthode de sélection utilisé. Lors d'une étape E23, le dispositif d'acheminement 20 détermine si l'espace nécessaire à l'enregistrement du segment de données Obj(k) de taille L(k)a été libéré. Si tel est le cas, le procédé passe à l'étape E24 d'enregistrement du segment de données Obj (k) décrite précédemment. S'il n'a pas été possible de libérer l'espace nécessaire, le procédé passe à l'étape E30 de décrémentation du compteur i, afin de libérer de l'espace mémoire dans des niveaux de priorité inférieurs si cela est possible. Lorsque l'espace nécessaire pour conserver le segment de données Obj(k) a été libéré, le procédé passe à l'étape E24 d'enregistrement du segment de données Obj(k) décrite précédemment. Selon ce mode de réalisation, l'étape E22 de détermination d'au moins un segment de données est ainsi mise en oeuvre du niveau de priorité le plus faible jusqu'à un niveau de priorité inférieur ou égal au niveau de priorité associé au segment de données reçu, tant que l'espace disponible de la mémoire cache n'est pas suffisant pour conserver le segment de données reçu. D'autres modes de réalisation sont également envisageables. Il est ainsi possible de rechercher de sélectionner des segments de données dans l'ensemble de ceux pour des niveaux de priorité inférieurs. Ainsi, le procédé tel que décrit permet de conserver un segment de données reçu de niveau de priorité k en libérant de l'espace mémoire par suppression d'un ou de segment(s) de données conservés dans la mémoire cache 21 et de niveau de priorité inférieur. Il n'est pas nécessaire de définir une répartition statique ou dynamique de la mémoire cache 21 entre différentes applications. L'invention permet ainsi de gérer des niveaux de priorité entre les applications de manière souple et adaptative en fonction des demandes, c'est-à-dire des charges relatives entre les différentes applications. La mémoire cache 21 est ainsi utilisée de manière plus efficace. L'espace disponible dans la mémoire cache 21 peut être utilisé par des applications de niveau de priorité inférieur tant que des applications de niveau de priorité plus important ne l'utilise pas. On évite ainsi les allocations statiques de la mémoire cache 21 entre les différentes applications. On évite également de mettre en oeuvre des procédés complexes de réallocation de la mémoire cache 21 entre les différentes applications. Lorsque les ressources mémoires sont en limite de capacité, le procédé permet de garantir que les segments de données relatifs aux applications de niveau de priorité le plus élevé sont conservés dans la mémoire cache au détriment de ceux des applications de niveau de priorité le plus faible. Par ailleurs, le procédé comprend en outre un processus, non représenté sur la figure 2, s'exécutant en continu, diminuant de manière régulière les durées de validité associées aux segments de données conservés dans la mémoire cache 21 et supprimant les segments de données pour lesquels la durée de validité a expiré. Ce processus permet de libérer des ressources dans la mémoire cache 21. En association avec les étapes décrites précédemment, ceci permet d'éviter que certaines applications de niveau de priorité élevé monopolise l'usage de la mémoire cache 21. La description a été faite pour un cas où les segments de données ont des tailles différentes. Il est aisément transposable à des cas plus simples où les segments de données sont de taille égale. La description a été faite dans le cadre d'un niveau de priorité le plus élevé correspondant à la valeur un en association avec une décrémentation du compteur i. Il est aisément transposable à d'autres cadres de définition des niveaux de priorité, par exemple avec incrémentation du compteur i. Des exemples illustratifs de la mise en oeuvre du procédé sont décrits en relation avec les figures 3a et 3b. La figure 3a illustre de manière simplifiée le contenu de la mémoire cache 21. La mémoire cache 21 comprend quatre segments de données de niveau de priorité 1, quatre segments de données de niveau de priorité 2, deux segments de données de niveau de priorité 3. On considère que le nombre de niveaux de priorité est de quatre. Dans un premier exemple, un segment de données de niveau de priorité 1, c'est-à-dire le niveau de priorité le plus élevé, est reçu. Le compteur i est initialisé à la valeur de quatre. Lors de l'étape E21, le dispositif d'acheminement 20 détermine que la mémoire cache 21 ne comprend pas de segments de données S de niveau de priorité 4. Le compteur i est décrémenté lors de l'étape E30 et est supérieur au niveau de priorité du segment de données reçu. L'étape E21 est de nouveau mise en oeuvre afin de déterminer s'il existe dans la mémoire cache 21 des segments de données de niveau de priorité 3. Tel est le cas. Le dispositif d'acheminement 20 détermine alors un segment de données de niveau de priorité 3 à supprimer de la mémoire cache 21 lors de l'étape E22. Le segment de données reçu est mémorisé dans la mémoire cache 21 lors de l'étape E24. La figure 3b illustre le contenu de la mémoire cache 21 après enregistrement du segment de données reçu. Dans un deuxième exemple, un segment de données de niveau de priorité 4, c'est-à-dire le niveau de priorité le plus faible, est reçu. Le compteur i est initialisé à la valeur de quatre. Lors de l'étape E21, le dispositif d'acheminement 20 détermine que la mémoire cache 21 ne comprend pas de segments de données S de niveau de priorité 4. Le compteur i est décrémenté lors de l'étape E30 et est strictement inférieur au niveau de priorité du segment de données reçu. Le segment de données reçu n'est pas mémorisé dans la mémoire cache 21 et est transmis à l'entité cliente destinataire. Le contenu de la mémoire cache 21 n'a pas été modifié. Nous allons maintenant décrire un dispositif d'acheminement dans un mode particulier de réalisation de l'invention en référence à la figure 4. Un tel dispositif 20 est agencé pour acheminer des segments de données, ces segments de données étant associés à des applications. Le dispositif 20 d'acheminement comprend: - une zone mémoire cache 21, agencée pour conserver des segments de données en vue d'une retransmission ultérieure ; - des moyens de communication 102 avec les autres dispositifs du réseau de communication, agencés pour émettre et recevoir des données ; - un module d'obtention 104 d'un niveau de priorité, activé sur réception d'un segment de données associé à une application, agencé pour obtenir le niveau de priorité de ladite application à partir du segment de données reçu ; - un module 106 de détermination et de suppression, agencé pour déterminer au moins un segment appartenant à au moins un niveau de priorité inférieur et conservé dans ladite mémoire cache et pour le supprimer de la mémoire cache 21 ; - un module d'enregistrement 108 du segment de données reçu dans la mémoire cache 21. Le module 106 est notamment agencé pour initialiser un compteur i à la valeur N et mettre en oeuvre une boucle, consistant à vérifier s'il existe des segments de données relatifs au niveau de priorité i, pour sélectionner des segments de données lorsqu'il en existe et pour décrémenter le compteur i lorsqu'il n'en existe pas, tant que le compteur i est strictement inférieur au niveau de priorité k. Le module 106 est agencé pour commander la suppression de la mémoire cache 21 des segments de données déterminés. Le module 108 d'enregistrement est notamment agencé pour commander l'enregistrement du segment de données reçu dans la mémoire cache 21, afin de conserver celui-ci. Les modules 104, 106, 108 sont agencés pour mettre en oeuvre le procédé précédemment décrit. Il s'agit de préférence de modules logiciels comprenant des instructions logicielles pour faire exécuter les étapes du procédé précédemment décrit, mises en oeuvre par le dispositif d'acheminement. L'invention concerne donc aussi : - un programme pour un dispositif d'acheminement, comprenant des instructions de code de programme destinées à commander l'exécution des étapes du procédé précédemment décrit, lorsque ledit programme est exécuté par ledit dispositif ; - un support d'enregistrement lisible par un dispositif d'acheminement sur lequel est enregistré le programme pour un dispositif d'acheminement. Les modules logiciels peuvent être stockés dans ou transmis par un support de données. Celui-ci peut être un support matériel de stockage, par exemple un CD-ROM, une disquette magnétique ou un disque dur, ou bien un support de transmission tel qu'un signal électrique, optique ou radio, ou un réseau de télécommunication. L'invention concerne également un réseau de communication comprenant au moins un 15 dispositif d'acheminement tel que décrit précédemment. REVENDICATIONS1. Procédé de traitement de segments de données mis en oeuvre par un dispositif (20) d'acheminement d'un réseau de communication (1), lesdits segments de données étant associés à des applications, une mémoire cache (21) dudit dispositif étant apte à conserver des segments de données en vue d'une retransmission ultérieure, ledit procédé comprenant, sur réception d'un segment de données associé à une application : - une étape d'obtention (El) d'un niveau de priorité de ladite application à partir du segment de données reçu ; - une étape de détermination (E22) d'au moins un segment appartenant à au moins un niveau de priorité inférieur et conservé dans ladite mémoire cache ; - une étape de suppression (E24) de la mémoire cache dudit au moins un segment déterminé ; - une étape d'enregistrement (E24) dudit segment de données reçu dans ladite mémoire cache. 2. Procédé selon la revendication 1, dans lequel, une durée de validité étant associée à un segment de données conservé dans ladite mémoire cache, le procédé comprend en outre un processus de suppression des segments de données pour lesquels la durée de validité associée a expiré. 3. Procédé selon la revendication 1, dans lequel l'étape de détermination d'au moins un segment de données est mise en oeuvre du niveau de priorité le plus faible jusqu'à un niveau de priorité inférieur ou égal au niveau de priorité associé au segment de données reçu. 4. Dispositif (20) d'acheminement dans un réseau de communication, agencé pour traiter des segments de données, lesdits segments de données étant associés à des applications, ledit dispositif comprenant : - une mémoire cache (21), agencée pour conserver des segments de données en vue d'une retransmission ultérieure ; - des moyens d'obtention (104) d'un niveau de priorité, activés sur réception d'un segment de données associé à une application, agencés pour obtenir le niveau de priorité de ladite application à partir du segment de données reçu ; - des moyens (106) de détermination et de suppression d'au moins un segment appartenant à au moins un niveau de priorité inférieur et conservé dans ladite mémoire cache ; - des moyens d'enregistrement (108) dudit segment de données reçu dans ladite mémoire cache. 5. Réseau de communication comprenant au moins un dispositif d'acheminement selon la revendication 4. 5. Programme pour un dispositif d'acheminement, comprenant des instructions de code de programme destinées à commander l'exécution des étapes du procédé selon l'une des revendications 1 à 3, lorsque ledit programme est exécuté par ledit dispositif. 7. Support d'enregistrement lisible par un dispositif d'acheminement sur lequel est enregistré le programme selon la revendication6.