Brevet FR3133960A1 — publié le 20230929

L’invention concerne un procédé de traitement de requêtes d’accès (GET_A) à des données, mis en œuvre par une entité (SERV) comprenant une carte réseau (NIC) et un noyau de système d’exploitation (KER), ledit procédé comprenant des étapes de : interception (N20) par la carte réseau (NIC) d’une requête de lecture (GET_A) comprenant un identifiant (ID_A) d’une donnée (D_A) ; transmission (N50) par la carte réseau (NIC) de la requête (GET_A) au noyau (KER) en fonction de la présence d’une donnée (D_A1) correspondant audit identifiant (ID_A) dans une première mémoire cache (C1) de la carte réseau (NIC) ; et émission (N130) par la carte réseau (NIC) d’une réponse (REP_GET_A) à la requête (GET_A) en fonction de la présence d’une donnée (D_A1, D_A2) correspondant audit identifiant (ID_A) dans la première mémoire cache (C1) ou dans une deuxième mémoire cache (C2) du noyau (KER). Figure pour l’abrégé : Fig. 2B Procédé de traitement de requêtes d’accès à des données, entité, programme d’ordinateur, et support d’informations associés La présente invention se rapporte aux domaines des réseaux informatiques et du stockage d’informations. Plus particulièrement, la présente invention concerne un procédé de traitement de requêtes d’accès à des données, et également une entité, un programme d’ordinateur, et un support d’informations associés. La présente invention trouve une application particulièrement avantageuse, bien que nullement limitative, pour la mise en œuvre d’applications réseaux ou de stockage de données en réseau, par exemple des applications de cache réseau. De manière générale, les dispositifs de stockage de données dans les réseaux informatiques sont des composants essentiels pour la mise en œuvre d’applications réseaux, et de services Internet. De tels dispositifs sont d’autant plus critiques pour le déploiement à grande échelle d’applications réseaux, ceux-ci devant traiter un nombre élevé de requêtes et fournir un accès aux données avec une faible latence, et ce en particulier pour les données fréquemment requêtées. La mise en œuvre d’applications réseaux à grande échelle suppose toutefois de résoudre une problématique de charge sur les dispositifs de stockage de données. En effet, les dispositifs classiques, comprenant des moyens informatiques matériels et logiciels génériques, ne sont pas en mesure de traiter la totalité de la charge et des requêtes provenant du réseau avec des performances satisfaisantes. Cette situation peut conduire à une congestion du réseau au niveau des dispositifs de stockage de données et à une dégradation de la qualité de service des applications réseaux, telle qu’une latence d’accès aux données plus importante, un temps de traitement des requêtes plus long, voire le non-traitement de certaines requêtes ou la perte de données, etc. En vue de réduire la charge au niveau d’un équipement réseau, il est connu d’utiliser des dispositifs de répartition de charge. Les dispositifs de répartition de charge distribuent l’ensemble des tâches sur un ensemble de ressources. En l’espèce, de tels dispositifs peuvent être utilisés pour distribuer la charge réseau et les requêtes entre plusieurs équipements d’une application réseau, ce qui permet de pallier les risques de congestion. Néanmoins, l’utilisation de dispositifs de répartition de charge présente l’inconvénient de nécessiter un surdimensionnement du nombre d’équipements réseaux, ce qui conduit à une sous-utilisation de ces derniers. Afin de déployer des applications réseaux de débit d’informations élevé et de faible latence, il est également connu d’avoir recours à des équipements réseaux dédiés, optimisés pour le stockage de données et comprenant des piles réseaux spécialisées. Par exemple, de tels équipements réseaux dédiés peuvent incorporer des mécanismes de contournement du noyau de système d’exploitation (ou « kernel-bypass » en anglais). Ces piles réseaux spécialisées, et les mécanismes de contournement de noyau, permettent d’améliorer les performances réseaux en évitant les coûts en performance, tels que les temps de traitement et les latences, liés à la généricité des systèmes d’exploitation standards. Toutefois, ce type de solution requiert un accès exclusif à une carte réseau, ce qui rend alors impossible le partage de la carte réseau et des ressources matérielles avec d’autres applications nécessitant un accès réseau. De plus, la mise en œuvre d’un mécanisme de contournement de noyau n’est pas transparente pour une application réseau. En effet, pour mettre en œuvre un mécanisme de contournement de noyau, il est nécessaire de modifier de manière significative l’application réseau, notamment en y incorporant des fonctions réseaux spécifiques et en exécutant des programmes issus de librairies dédiées. Il est également connu d’utiliser une mémoire cache pour réduire le temps d’accès à des données. Dans le cas d’un dispositif de stockage de données en réseau, une mémoire cache peut être intégrée entre l’interface réseau et l’application de stockage de données. Le dispositif de stockage est par conséquent en mesure de traiter certaines requêtes en utilisant les données enregistrées dans la mémoire cache. Le traitement d’une requête grâce à la mémoire cache permet de réduire le temps de traitement de celle-ci par le dispositif de stockage. Néanmoins, lorsque de tels dispositifs de stockage sont utilisés, la latence d’accès aux données n’est pas entièrement satisfaisante. En vue de la mise en œuvre d’applications réseaux à grande échelle, il est nécessaire de réduire davantage la latence d’accès aux données et d’augmenter le débit des requêtes traitées. La présente invention a pour objectif de remédier à tout ou partie des inconvénients de l’art antérieur, notamment ceux exposés précédemment. À cet effet, selon un aspect de l’invention, il est proposé un procédé de traitement de requêtes d’accès à des données, le procédé étant mis en œuvre par une entité connectée à un réseau, ladite entité comprenant une carte réseau et un noyau de système d’exploitation. Le procédé comprend des étapes de : interception par la carte réseau d’un paquet réseau à destination d’une application configurée pour traiter et répondre auxdites requêtes d’accès, ledit paquet réseau portant une requête de lecture comprenant un identifiant d’une donnée ; transmission par la carte réseau de la requête de lecture au noyau en fonction de la présence d’une donnée correspondant audit identifiant dans une première mémoire cache de la carte réseau ; et émission par la carte réseau d’une réponse à la requête de lecture, ladite réponse étant déterminée en fonction de la présence d’une donnée correspondant audit identifiant dans la première mémoire cache ou dans une deuxième mémoire cache du noyau. Par « requêtes d’accès à des données », il est fait référence ici à des requêtes d’accès en écriture ou en lecture de données informatiques. Typiquement, les requêtes peuvent être émises par des dispositifs clients et transmises par l’intermédiaire d’un réseau de communication. Par « mémoire cache », il est fait référence ici à une mémoire qui enregistre des copies de données d’une application en vue de diminuer le temps d’accès à ces données. Par « noyau », il est fait référence ici à un noyau de système d’exploitation (ou « kernel » en anglais) et ainsi à un programme d’ordinateur permettant de gérer les ressources d’un ordinateur et permettant aux différents composants, matériels et logiciels, de communiquer entre eux. Dans le contexte de la présente invention, les étapes mises en œuvre par le noyau sont réalisées dans l’espace noyau. Par exemple, les étapes mises en œuvre par le noyau sont réalisées par les pilotes informatiques (ou « in-kernel drivers » en anglais) de la carte réseau, les pilotes informatiques étant installés dans le noyau. Par « application », il est fait référence ici à un programme d’ordinateur mis en œuvre dans l’espace utilisateur, reposant ainsi sur les mécanismes d’abstraction fournis par le noyau. Dans le contexte de la présente invention, et de manière différente des étapes mises en œuvre par le noyau, des étapes mises en œuvre par l’application sont réalisées dans l’espace utilisateur. À titre d’exemple, l’application peut être une application de stockage de données en réseau. Selon le procédé proposé, l’étape de transmission d’une requête de lecture au noyau est réalisée en fonction de la présence d’une donnée correspondant à l’identifiant dans la première mémoire cache. À titre d’exemple, si la carte réseau comprend la donnée demandée, la carte réseau traite la requête et ne la transmet donc pas au noyau. Selon un autre exemple, si la première mémoire cache ne comprend pas la donnée demandée, la carte réseau transmet la requête au noyau. De plus, selon le procédé proposé, la réponse à une requête de lecture est déterminée en fonction de la présence d’une donnée correspondant à l’identifiant dans les mémoires caches. Par exemple, si une des mémoires caches comprend la donnée demandée, la réponse émise comprend la donnée lue dans cette mémoire cache. Selon un autre exemple, si l’identifiant ne correspond à aucune donnée de l’application, la réponse émise peut être un message d’erreur. L’invention proposée consiste en une architecture hiérarchique de mémoires caches sur plusieurs niveaux d’un système informatique. Cette architecture multi-caches, comprenant un premier niveau de cache mis en œuvre par la carte réseau et un deuxième niveau de cache mis en œuvre par le noyau, vise notamment à accélérer la latence liée aux accès réseaux de lecture de données d’une application. Ainsi, les requêtes sont traitées au plus bas niveau possible, soit par la carte réseau, soit par le noyau. Si une requête de lecture de donnée ne peut être traitée par le premier niveau de cache mis en œuvre par la carte réseau, la requête est transmise au deuxième niveau de cache mis en œuvre par le noyau. Les premier et deuxième niveaux de cache permettent d’accélérer le traitement des requêtes d’accès à des données. La carte réseau est configurée pour traiter et répondre à une requête reçue dans un paquet réseau et comprend le premier niveau de cache. Le traitement d’une requête par la carte réseau permet d’éviter son transfert au noyau et ainsi de réduire la latence de traitement. Le traitement d’une requête par la carte réseau permet en outre d’économiser des ressources de traitement puisque le traitement du paquet réseau par le noyau n’est pas nécessaire. Le noyau est configuré pour traiter et répondre à une requête et comprend le deuxième niveau de cache. Par exemple, le noyau est configuré pour traiter les requêtes en interceptant les paquets réseaux au niveau des pilotes informatiques de la carte réseau. Par exemple, les pilotes informatiques comprennent un point d’attache (connu sous le nom de « hook » en anglais) permettant de programmer un traitement particulier sur les paquets réseaux reçus, ce qui permet de modifier le traitement par défaut des paquets réseaux réalisé par le noyau. Le traitement d’une requête par le noyau permet d’éviter son transfert à l’application et par conséquent de réduire la latence de traitement et d’économiser des ressources de traitement puisque la requête n’est pas traitée par l’application En traitant les requêtes de lecture au niveau de la carte réseau ou au niveau du noyau, le procédé proposé permet entre autres de réduire la latence d’accès aux données, d’augmenter le nombre et le débit des requêtes traitées et de minimiser l’utilisation des ressources de traitement. Le procédé proposé permet ainsi de pallier les risques de congestion. En outre, le procédé proposé permet une utilisation efficace des ressources matérielles et logicielles de l’entité et le partage de celles-ci avec d’autres applications. En outre, la mise en œuvre du premier niveau de cache au niveau de la carte réseau et du deuxième niveau de cache au niveau de l’espace noyau est transparente pour l’application qui s’exécute dans l’espace utilisateur. Ainsi, mettre en œuvre et exploiter les premier et deuxième niveaux de cache ne nécessitent aucunement de modifier l’application. Selon un mode de réalisation particulier, la transmission de la requête par la carte réseau au noyau est réalisée si la première mémoire cache ne comprend pas une donnée correspondant à l’identifiant compris dans la requête de lecture. De plus, si la première mémoire cache comprend une donnée correspondant à l’identifiant, alors la réponse à la requête comprend ladite donnée lue dans la première mémoire cache ; ou, si la deuxième mémoire cache comprend une donnée correspondant à l’identifiant compris dans la requête de lecture, ladite réponse comprend ladite donnée lue dans la deuxième mémoire cache. Ce mode de réalisation permet d’assurer la fiabilité des réponses aux requêtes de lecture émises par l’entité. En effet, selon ce mode de réalisation, une requête de lecture n’est traitée par la carte réseau que si la première mémoire cache comprend une donnée correspondant à l’identifiant compris dans la requête. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend, si aucune desdites mémoires caches ne comprend une donnée correspondant audit identifiant, une étape de transmission de la requête de lecture à l’application, la réponse émise par la carte réseau comprenant une donnée correspondant audit identifiant, cette donnée étant émise par l’application en réponse à la requête de lecture. Ce mode de réalisation permet de garantir un traitement certain des requêtes de lecture. Si un niveau de cache ne comprend pas la donnée demandée, celui-ci transmettra nécessairement la requête au niveau supérieur ; et si aucun des premier et deuxième niveaux de cache ne sont en mesure de traiter la requête de lecture, alors celle-ci est traitée par l’application. Les étapes mises en œuvre par l’application sont réalisées au niveau de l’espace utilisateur, tandis que les étapes mises en œuvre par le noyau sont réalisées au niveau de l’espace noyau. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend un mécanisme d’exception permettant à un niveau de cache de transmettre une requête au niveau supérieur, si ce niveau de cache n’est pas en mesure de traiter la requête. De manière préférentielle, une requête de lecture n’est transmise par un niveau de cache à un niveau supérieur que si la mémoire de ce niveau de cache ne comprend pas la donnée demandée. Selon un mode de réalisation, l’application est configurée pour gérer des accès concurrents. Par exemple, l’application est en mesure de traiter plusieurs requêtes d’écriture émises par des dispositifs clients différents et portant sur une même donnée, et une requête de lecture portant sur cette donnée. Ainsi, suite à une ou plusieurs requêtes d’écriture, une donnée enregistrée dans une des mémoires caches peut ne plus être identique à la donnée de l’application correspondant au même identifiant. Il est alors nécessaire de tenir compte de la validité des données enregistrées dans les mémoires caches pour traiter des requêtes et répondre à celles-ci. Pour ce faire, selon un mode de réalisation particulier, la requête de lecture est transmise par la carte réseau au noyau si la première mémoire cache ne comprend pas une donnée valide correspondant audit identifiant ; et la requête de lecture est transmise par le noyau à l’application si aucune desdites mémoires caches ne comprend une donnée valide correspondant audit identifiant. En outre, selon ce mode de réalisation, ladite réponse émise par la carte réseau comprend une donnée valide correspondant audit identifiant. Par « donnée valide », il est fait référence ici, pour un certain identifiant, à une donnée qui peut être utilisée pour répondre à une requête de lecture comprenant cet identifiant. Pour un certain identifiant, une donnée valide est nécessairement identique à la donnée de l’application associée au même identifiant. Et par « donnée invalide », il est fait référence ici, pour un certain identifiant, à une donnée qui ne peut pas être utilisée pour répondre à une requête de lecture comprenant cet identifiant. Pour un certain identifiant, une donnée invalide n’est pas nécessairement identique à la donnée de l’application associée au même identifiant. Ce mode de réalisation permet de prendre en compte la validité des données enregistrées dans les mémoires caches pour traiter des requêtes et répondre à celles-ci. Ainsi, ce mode de réalisation permet de mettre en œuvre un traitement des requêtes par les différents niveaux de cache en fonction de la cohérence des données enregistrées dans les mémoires caches avec les données de l’application. Par ailleurs, ce mode de réalisation, en prenant en compte la validité des données, peut en outre être avantageux pour mettre en œuvre un mécanisme d’expiration de données. Dans le contexte de l’invention, la réponse à une requête de lecture comprend ladite donnée valide correspondant à l’identifiant compris dans la requête. En effet, si l’application comprend une donnée correspondant à l’identifiant compris dans la requête de lecture reçue, la réponse à une requête de lecture comprend la donnée demandée. Ce mode de réalisation permet d’assurer la fiabilité des réponses aux requêtes de lecture émises par l’entité. Si l’application comprend une donnée correspondant à l’identifiant de la requête de lecture, alors la donnée correspondant à l’identifiant est transmise par l’entité dans la réponse à la requête. Ainsi, pour les dispositifs clients émetteurs de requêtes, l’accès aux données de l’application présente, en plus d’une latence réduite, une fiabilité de traitement des requêtes par l’entité. Selon un mode de réalisation particulier, les requêtes d’accès à des données et/ou les réponses aux requêtes sont transmises par l’intermédiaire d’un réseau informatique mettant en œuvre un protocole réseau IP (acronyme de l’expression anglo-saxonne « Internet Protocol »). L’utilisation du protocole IP permet d’acheminer des paquets de données entre un dispositif client et l’entité de traitement de requêtes. En outre, le protocole IP permet d’acheminer de manière efficace les paquets dans un réseau informatique mettant en œuvre un mécanisme de transmission « au mieux » (ou plus couramment désigné par l’expression anglo-saxonne « best-effort delivery »). Selon un mode de réalisation particulier, les requêtes de lecture et/ou les réponses aux requêtes de lecture sont transmises par l’intermédiaire d’un réseau informatique mettant en œuvre un protocole de transport UDP (acronyme de l’expression anglo-saxonne « User Datagram Protocol »). L’utilisation du protocole UDP permet de transmettre les requêtes de lecture et/ou leurs réponses de manière simple et rapide entre un dispositif client et l’entité de traitement de requêtes. La transmission de données avec le protocole UDP ne requiert aucune communication préalable pour établir la connexion entre un dispositif client et l’entité de traitement de requêtes et ne met pas en œuvre de retransmissions, ce qui permet réduire la latence d’accès aux données. Selon un mode de réalisation particulier, les paquets réseaux interceptées par la carte réseau sont les paquets réseaux dont le port de destination correspond au port de l’application. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend en outre une étape de : enregistrement dans au moins une des mémoires caches de la donnée reçue de l’application en réponse à la requête de lecture, l’enregistrement étant réalisé en fonction dudit identifiant. Ce mode de réalisation permet d’enregistrer dans les mémoires caches des données. Le noyau utilise un mécanisme d’interception des données émises en réponse à des requêtes de lecture pour potentiellement les enregistrer dans les mémoires caches en fonction de leurs identifiants. En d’autres termes, le noyau enregistre ou non une donnée interceptée en fonction de son identifiant. Par exemple, le noyau peut enregistrer une donnée dans une mémoire cache, si cette donnée est fréquemment demandée. Ce mode de réalisation permet en particulier d’assurer la cohérence entre les données des mémoires caches et les données de l’application. De plus, le mécanisme d’interception permet d’enregistrer des données sans nécessiter de traitements et d’échanges de données supplémentaires entre les différents niveaux de cache et l’application. L’enregistrement d’une donnée dans la première mémoire de cache est effectué par le noyau, ce qui permet de libérer des ressources de traitement au niveau de la carte réseau. Selon un mode de réalisation particulier, l’enregistrement dans une des mémoires caches, de la donnée comprise dans la réponse à une requête de lecture, est réalisé si la mémoire cache comprend une donnée invalide ou aucune donnée correspondant à l’identifiant compris dans la requête de lecture. Un avantage de ce mode de réalisation est de permettre l’enregistrement d’une donnée dans la mémoire cache ou la mise à jour de la donnée enregistrée dans une mémoire cache. Ainsi, si une des mémoires caches comprend une donnée correspondant à l’identifiant de la requête de lecture et que cette donnée est invalide, alors la donnée émise en réponse à la requête est utilisée pour mettre à jour la donnée dans la mémoire cache. En particulier, la mise à jour de la donnée correspondant à l’identifiant compris dans la requête de lecture est réalisée en interceptant la donnée émise en réponse à la requête de lecture. Ce mécanisme d’interception permet de mettre à jour une donnée dans une mémoire cache sans nécessiter de traitements et d’échanges de données supplémentaires entre les différents niveaux de cache et l’application. Les mémoires caches des premier et deuxième niveaux de cache sont de tailles limitées. Il est donc essentiel d’enregistrer dans les mémoires caches les données de l’application fréquemment demandées, ce qui permet d’augmenter le nombre de requêtes traitées par la carte réseau ou le noyau et ainsi de réduire efficacement la latence d’accès aux données. Pour stocker une donnée dans une mémoire cache, l’entrée mémoire à utiliser est déterminée sur la base de l’identifiant de la donnée à stocker. Toutefois, des identifiants différents peuvent être associés à une seule et même entrée mémoire. Alors, plusieurs données sont en concurrence pour être enregistrées dans cette même entrée mémoire. En considérant une entrée mémoire pour laquelle plusieurs données sont en concurrence, enregistrer dans l’entrée mémoire la donnée la plus fréquemment demandée permet de réduire la latence d’accès aux données. Selon un mode de réalisation particulier, l’enregistrement dans une des mémoires caches, de la donnée émise par l’application en réponse à une requête de lecture, est réalisé en fonction d’une comparaison entre l’identifiant compris dans la requête de lecture et un identifiant d’une donnée enregistrée dans la mémoire cache. En particulier, l’identifiant compris dans la requête de lecture et l’identifiant de la donnée enregistrée sont associés à une seule et même entrée de la mémoire cache. La donnée comprise dans la réponse et la donnée enregistrée sont ainsi des données en concurrence pour une même entrée mémoire. Selon un mode de réalisation particulier, pouvant être combiné ou non avec le mode de réalisation précédent, l’enregistrement dans une des mémoires caches, de la donnée comprise dans la réponse à une requête de lecture, est réalisé en fonction d’une comparaison entre un seuil et un compteur associé à une donnée enregistrée dans la mémoire cache. En particulier, la donnée comprise dans la réponse et la donnée enregistrée sont des données concurrentes pour une même entrée mémoire. Un avantage de ces modes de réalisation est de maintenir dans la première mémoire cache et la deuxième mémoire cache les données fréquemment demandées tout en évitant que celles-ci ne soient remplacées par des données moins fréquemment accédées. En outre, ce mode de réalisation permet de minimiser la complexité des traitements pour sélectionner les données à enregistrer dans les différents niveaux de cache et de ne pas augmenter la latence d’accès aux données de l’application. Selon un mode de réalisation particulier, les données enregistrées dans une mémoire cache sont les données demandées par le plus grand nombre de requêtes de lecture sur une période déterminée. Le fait d’enregistrer dans les mémoires caches les données les plus fréquemment requêtées permet de traiter un nombre plus important de requêtes par le premier et le deuxième niveau de cache et ainsi de réduire davantage la latence d’accès aux données. Selon un mode de réalisation particulier, au moins une des mémoires caches comprend une table de hachage, et le procédé de traitement de requêtes comprend une étape de : détermination d’un haché sur la base de l’identifiant compris dans la requête de lecture pour indexer la donnée correspondant à l’identifiant dans la table de hachage. Le fait d’utiliser une table de hachage pour enregistrer les données dans une mémoire cache permet une association directe entre un identifiant et une donnée. Une telle table de hachage permet ainsi de retrouver une donnée rapidement, en la cherchant à un emplacement de la table correspondant au résultat d'une fonction de hachage. En particulier, une telle structure de données offre une complexité en temps constant pour les opérations de recherche, d’insertion ou d’invalidation d’une donnée. Ainsi, ce mode de réalisation permet de réduire la latence due aux traitements des requêtes et permet à l’entité de traiter une charge importante avec un débit de requêtes élevé. Selon un mode de réalisation particulier, le haché pour indexer une donnée dans la table de hachage est déterminé sur la base de l’identifiant de la donnée et d’une fonction de hachage Fowler-Noll-Vo-1A, plus couramment désignée par l’acronyme FNV-1A. Un avantage de ce mode de réalisation particulier est que la fonction de hachage FNV-1A permet notamment de déterminer le haché d’un identifiant tout en lisant l’identifiant dans la requête, permettant ainsi de réduire la latence due au traitement des requêtes et plus généralement de gagner en performance par rapport à un calcul de haché réalisé a posteriori. Selon un mode de réalisation particulier, la mémoire cache de la carte réseau et la mémoire cache du noyau sont de tailles différentes. Plus particulièrement, la taille de la mémoire cache de la carte réseau est inférieure à la taille de la mémoire cache du noyau. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend des étapes de : réception par la carte réseau d’une requête d’écriture comprenant un identifiant d’une donnée à écrire, et éventuellement la donnée à écrire ; transmission par la carte réseau de la requête d’écriture au noyau ; et transmission par le noyau de la requête d’écriture à l’application, l’application étant configurée pour traiter et répondre aux requêtes d’accès. Un avantage de ces modes de réalisation particuliers est de garantir le traitement des requêtes d’écriture par l’application, permettant ainsi de garantir que les données de l’application restent à jour. L’application est configurée pour traiter des accès en écriture et en lecture concurrents. À titre d’exemple, l’application est configurée pour traiter deux requêtes d’écriture portant sur une même donnée et émises par des dispositifs clients différents, puis une requête de lecture portant sur cette donnée. Ainsi, ce mode de réalisation permet de contribuer à la gestion des accès concurrents. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend en outre une étape de : transmission d’une réponse à la requête d’écriture, la réponse comprenant un accusé de réception. Ce mode de réalisation particulier permet d’accuser réception de la requête d’écriture au dispositif client émetteur de la requête, et ainsi de signaler au dispositif client le traitement de la requête d’écriture. Selon un mode de réalisation particulier, les requêtes d’écriture et/ou les réponses aux requêtes d’écriture sont transmises par l’intermédiaire d’un réseau informatique mettant en œuvre un protocole de transport TCP (acronyme de l’expression anglo-saxonne « Transmission Control Protocol »). Ce mode de réalisation particulier permet de mettre en œuvre des échanges de données fiables entre un dispositif client et une entité de traitement de requêtes dans le réseau informatique, et ainsi de garantir la livraison des requêtes d’écriture et/ou des réponses aux requêtes d’écritures. Suite à la réception d’une requête d’écriture comprenant l’identifiant d’une donnée à écrire, l’application traite la requête d’écriture. Le traitement de la requête d’écriture par l’application peut entrainer ou non une modification de la donnée de l’application associée à cet identifiant. Si une mémoire cache comprend une donnée associée à cet identifiant, alors la donnée enregistrée peut : soit correspondre à une version antérieure et obsolète de la donnée de l’application ; soit être identique à la donnée de l’application. Ainsi, la donnée enregistrée dans la mémoire cache n’est pas nécessairement identique à la donnée de l’application. Il est alors nécessaire d’invalider la donnée enregistrée dans la mémoire cache pour que celle-ci ne soit pas utilisée pour répondre à une requête de lecture. Pour ce faire, selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend une étape de : si une des mémoires caches comprend une donnée correspondant à l’identifiant compris dans une requête d’écriture, invalidation dans la mémoire cache de la donnée correspondant à l’identifiant compris dans la requête d’écriture. Ce mode de réalisation particulier permet de contribuer à garantir la cohérence des données de la première et de la deuxième mémoires caches avec les données de l’application. En outre, le fait d’invalider suite à une requête d’écriture les données correspondantes dans les différents niveaux de cache permet de s’assurer de ne pas transmettre une donnée obsolète en réponse à une requête de lecture. Ainsi, les requêtes d’écriture, avant d’être délivrées à l’application, sont utilisées par la carte réseau et le noyau pour invalider les entrées des différents niveaux de cache. L’invalidation dans une mémoire cache d’une donnée peut être réalisée en mettant à une valeur nulle un indicateur de validité associé à la donnée. À l’inverse, une donnée valide peut être associée à un indicateur de validité de valeur non-nulle. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend une étape de : enregistrement d’un premier programme d’ordinateur dans la carte réseau, le premier programme d’ordinateur comportant des instructions pour la mise en œuvre des étapes réalisées par la carte réseau d’un procédé de traitement de requêtes tel que décrit-ci dessus, lorsque le premier programme d’ordinateur est exécuté par un premier processeur. Selon un mode de réalisation particulier, le procédé de traitement de requêtes comprend une étape de : enregistrement d’un deuxième programme d’ordinateur dans le noyau, le deuxième programme d’ordinateur comportant des instructions pour la mise en œuvre des étapes réalisées par le noyau d’un procédé de traitement de requêtes tel que décrit-ci dessus, lorsque le deuxième programme d’ordinateur est exécuté par un deuxième processeur. Selon un aspect de l’invention, il est proposé une entité de traitement de requêtes d’accès à des données, l’entité étant connectée à un réseau, l’entité comprenant une carte réseau et un noyau de système d’exploitation, la carte réseau comprenant une première mémoire cache, le noyau comprenant une deuxième mémoire cache, ladite entité comprenant : un module de réception réseau compris dans la carte réseau pour intercepter un paquet réseau à destination d’une application configurée pour traiter et répondre auxdites requêtes d’accès, ledit paquet réseau portant une requête de lecture comprenant un identifiant d’une donnée ; un premier module de détermination compris dans la carte réseau pour déterminer la présence dans la première mémoire cache d’une donnée correspondant audit identifiant ; un premier module de transmission compris dans la carte réseau pour transmettre la requête de lecture au noyau ; un deuxième module de détermination compris dans le noyau pour déterminer la présence dans la deuxième mémoire cache d’une donnée correspondant audit identifiant ; et un module d’émission réseau compris dans la carte réseau pour émettre une réponse à la requête de lecture. Selon un mode de réalisation, ladite entité comprend : un premier module de lecture compris dans la carte réseau pour lire la donnée dans la première mémoire cache ; et un deuxième module de lecture compris dans le noyau pour lire la donnée dans la deuxième mémoire cache. Selon un mode de réalisation, le premier module de détermination compris dans la carte réseau est configuré pour déterminer la présence et la validité d’une donnée correspondant à un identifiant dans la première mémoire cache. En outre, le deuxième module de détermination compris dans le noyau est configuré pour déterminer la présence et la validité d’une donnée correspondant à un identifiant dans la deuxième mémoire cache. Selon un mode de réalisation particulier, l’entité comprend en outre une application, l’application comprenant une mémoire d’application pour enregistrer les données de l’application, l’entité comprenant en outre : un deuxième module de transmission compris dans le noyau pour transmettre la requête à l’application ; un module de traitement et de réponse compris dans l’application pour traiter et répondre aux requêtes d’accès à des données ; un deuxième module de réception compris dans le noyau pour intercepter la donnée valide émise par l’application en réponse à la requête ; et un premier module de réception compris dans la carte réseau pour recevoir en provenance de l’application une réponse à la requête de lecture. Selon un mode de réalisation particulier, l’entité de traitement de requêtes est un serveur DNS (acronyme de l’expression anglo-saxonne « Domain Name System »), les données de l’application étant par exemple des adresses IP et les identifiants étant des URLs (acronyme de l’expression anglo-saxonne « Uniform Resource Locator »). Selon un mode de réalisation particulier, ladite entité est un serveur de clés, comprenant par exemple des paires clé-valeur. Selon un autre aspect de l’invention, il est proposé un dispositif client connecté à un réseau, le dispositif client comprenant : un module d’émission pour transmettre des requêtes d’accès à des données ; et un module de réception pour recevoir des réponses auxdites requêtes. Selon un aspect de l’invention, il est proposé un programme d’ordinateur comprenant instructions pour la mise en œuvre des étapes du procédé de traitement de requêtes tel que décrit ci-dessus lorsque les instructions sont exécutées par un ou plusieurs processeurs. Le programme d’ordinateur peut être formé d’une ou plusieurs sous-parties stockées dans une même mémoire ou dans des mémoires distinctes. Le programme peut utiliser n’importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable. Selon un mode de réalisation particulier, le programme d’ordinateur comprend des instructions de code eBPF (acronyme de l’expression anglo-saxonne « extended Berkeley Packet Filter »). Ce mode de réalisation particulier permet d’utiliser la technologie eBPF pour développer les différents niveaux de cache. La technologie eBPF permet notamment d’exécuter des instructions de codes dans l’espace noyau lors de l’exécution de pilotes informatiques, par exemple en exploitant un point d’attache des pilotes informatiques tel que décrit ci-dessus. Selon un aspect de l’invention, il est proposé un support d’informations lisible par ordinateur comprenant un programme d’ordinateur tel que décrit ci-dessus. Le support d’informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une mémoire non-volatile ou ROM, par exemple un CD-ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette ou un disque dur. D'autre part, le support de stockage peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par un réseau de télécommunication ou par un réseau informatique ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau informatique. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. D’autres caractéristiques et avantages de la présente invention ressortiront de la description fournie ci-après de modes de réalisation particuliers. Les modes de réalisation sont donnés à titre d’exemple illustratif et sont dépourvus de tout caractère limitatif. La description fournie ci-après est illustrée par les dessins ci- joints : la représente schématiquement des exemples de requêtes d’accès à des données entre des dispositifs clients et une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement des exemples de requêtes d’accès à des données entre un dispositif client et une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement des exemples de structures de données comprises dans une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple d’architecture fonctionnelle d’une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple d’architecture logicielle et matérielle d’une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple d’architecture fonctionnel d’une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple d’architecture logicielle et matérielle d’une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple de structures de données comprises dans une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple de structures de données comprises dans une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement un exemple de structures de données comprises dans une entité de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente, sous forme d’ordinogramme, des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; la représente schématiquement des étapes d’un procédé de traitement de requêtes d’accès à des données selon un mode de réalisation particulier ; Procédé de traitement de requêtes d’accès (GET_A) à des données, ledit procédé étant mis en œuvre par une entité (SERV) connectée à un réseau (NET), ladite entité (SERV) comprenant une carte réseau (NIC) et un noyau de système d’exploitation (KER), ledit procédé comprenant des étapes de : interception (N20) par la carte réseau (NIC) d’un paquet réseau à destination d’une application (APP) configurée pour traiter et répondre auxdites requêtes d’accès (GET_A), ledit paquet réseau portant une requête de lecture (GET_A) comprenant un identifiant (ID_A) d’une donnée (D_A) ; transmission (N50) par la carte réseau (NIC) de la requête de lecture (GET_A) au noyau (KER) en fonction de la présence d’une donnée (D_A1) correspondant audit identifiant (ID_A) dans une première mémoire cache (C1) de la carte réseau (NIC) ; et émission (N130) par la carte réseau (NIC) d’une réponse (REP_GET_A) à la requête de lecture (GET_A), ladite réponse étant déterminée en fonction de la présence d’une donnée (D_A1, D_A2) correspondant audit identifiant (ID_A) dans la première mémoire cache (C1) ou dans une deuxième mémoire cache (C2) du noyau (KER). Procédé selon la revendication 1 caractérisé en ce que : la transmission (N50) de la requête (GET_A) par la carte réseau (NIC) au noyau (KER) est réalisée si la première mémoire cache (C1) ne comprend pas une donnée (D_A1) correspondant audit identifiant (ID_A) ; et ladite réponse (REP_GET_A) comprend : si la première mémoire cache (C1) comprend une donnée (D_A1) correspondant audit identifiant (ID_A), ladite donnée (D_A1) lue dans la première mémoire cache (C1) ; ou si la deuxième mémoire cache (C2) comprend une donnée (D_A2) correspondant audit identifiant (ID_A), ladite donnée (D_A2) lue dans la deuxième mémoire cache (C2). Procédé selon l’une des revendications 1 ou 2 comprenant, si aucune desdites mémoires caches (C1, C2) ne comprend une donnée (D_A1, D_A2) correspondant audit identifiant (ID_A), une étape de : transmission (K80) de la requête de lecture (GET_A) à l’application (APP), ladite réponse (REP_GET_A) émise par la carte réseau (NIC) comprenant une donnée (D_A3) correspondant audit identifiant (ID_A), cette donnée (D_A3) étant émise par l’application (APP) en réponse à la requête de lecture (GET_A). Procédé selon l’une des revendications 1 à 3 caractérisé en ce que : la requête de lecture (GET_A) est transmise (N50) par la carte réseau (NIC) au noyau (KER) si la première mémoire cache (C1) ne comprend pas une donnée valide (D_A1) correspondant audit identifiant (ID_A) ; la requête de lecture (GET_A) est transmise (K80) par le noyau (KER) à l’application (APP) si aucune desdites mémoires caches (C1, C2) ne comprend une donnée valide (D_A2) correspondant audit identifiant (ID_A) ; et ladite réponse (REP_GET_A) émise par la carte réseau (NIC) comprend une donnée valide (D_A1, D_A2, D_A3) correspondant audit identifiant (ID_A). Procédé selon la revendication 3 ou 4 caractérisé en ce qu’il comprend une étape de : enregistrement (K100, K110) dans au moins une dite mémoire cache (C1, C2) de ladite donnée (D_A3) reçue de l’application (APP) en réponse à la requête de lecture (GET_A), en fonction dudit identifiant (ID_A). Procédé selon la revendication 5 caractérisé en que ladite étape d’enregistrement (K105, N125) est réalisée dans une dite mémoire cache (C1, C2) en fonction d’au moins une des opérations suivantes : une comparaison (K103, N123) entre ledit identifiant (ID_A) compris dans la requête de lecture (GET_A) et un identifiant (ID_C) d’une donnée enregistrée (D_C1, D_C2) dans ladite mémoire cache (C1, C2) ; une comparaison (K104, N124) entre un seuil (THR_1, THR_2) et un compteur (CNT_C1, CNT_C2) associé à une donnée enregistrée (D_C1, D_C2) dans ladite mémoire cache (C1, C2). Procédé selon l’une quelconque des revendications 1 à 6 caractérisé en ce qu’au moins une dite mémoire cache (C1, C2) comprend une table de hachage (TAB1, TAB2), et en ce que ledit procédé comprend une étape de : détermination d’un haché (H_A1, H_A2) sur la base dudit identifiant (ID_A) compris dans la requête de lecture (GET_A) pour indexer une donnée (D_A1, D_A2) correspondant à l’identifiant (ID_A) dans ladite table (TAB1, TAB2). Procédé selon l’une quelconque des revendications 1 à 7 caractérisé en ce qu’il comprend une étape de : si une dite mémoire cache (C1, C2) comprend (N220, K250) une donnée (D_B1, D_B2) correspondant à un identifiant (ID_B) compris dans une requête d’écriture (SET_B), invalidation (N230, K260) dans ladite mémoire cache (C1, C2) de la donnée (D_B1’, D_B2’) correspondant à l’identifiant (ID_B) compris dans la requête d’écriture (SET_B). Entité de traitement de requêtes d’accès (GET_A) à des données, ladite entité (SERV) étant connectée à un réseau (NET), ladite entité (SERV) comprenant une carte réseau (NIC) et un noyau de système d’exploitation (KER), la carte réseau (NIC) comprenant une première mémoire cache (C1), le noyau (KER) comprenant une deuxième mémoire cache (C2), ladite entité comprenant : un module de réception réseau (MOD_RX1) compris dans la carte réseau (NIC) pour intercepter un paquet réseau à destination d’une application (APP) configurée pour traiter et répondre auxdites requêtes d’accès (GET_A), ledit paquet réseau portant une requête de lecture (GET_A) comprenant un identifiant (ID_A) d’une donnée (D_A) ; un premier module de détermination (MOD_DET1) compris dans la carte réseau (NIC) pour déterminer la présence dans la première mémoire cache (C1) d’une donnée (D_A1) correspondant audit identifiant (ID_A) ; un premier module de transmission (MOD_FWD1) compris dans la carte réseau (NIC) pour transmettre la requête de lecture (GET_A) au noyau (KER) ; un deuxième module de détermination (MOD_DET2) compris dans le noyau (KER) pour déterminer la présence dans la deuxième mémoire cache (C2) d’une donnée (D_A2) correspondant audit identifiant (ID_A) ; et un module d’émission réseau (MOD_TX1) compris dans la carte réseau (NIC) pour émettre une réponse (REP_GET_A) à la requête de lecture (GET_A). Entité selon la revendication 9 caractérisé en ce que ladite entité (SERV) est un serveur DNS, lesdites données étant par exemple des adresses IP identifiées par des URLs, ou en ce que ladite entité (SERV) est un serveur de clés, comprenant par exemple des paires clé-valeur. Programme d’ordinateur comprenant des instructions pour la mise en œuvre des étapes du procédé selon l’une quelconque des revendications 1 à 8 lorsque les instructions sont exécutées par un ou plusieurs processeurs (PROC1, PROC2). Support d’informations lisible par ordinateur comprenant un programme d’ordinateur selon la revendication 11.