FR3131995A1 - Support de calculs sur nombres reels au niveau des commutateurs physiques - Google Patents

Support de calculs sur nombres reels au niveau des commutateurs physiques Download PDF

Info

Publication number
FR3131995A1
FR3131995A1 FR2200326A FR2200326A FR3131995A1 FR 3131995 A1 FR3131995 A1 FR 3131995A1 FR 2200326 A FR2200326 A FR 2200326A FR 2200326 A FR2200326 A FR 2200326A FR 3131995 A1 FR3131995 A1 FR 3131995A1
Authority
FR
France
Prior art keywords
bits
operations
subset
value
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR2200326A
Other languages
English (en)
Inventor
Kahina Lazri
Matthews JOSE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Orange SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange SA filed Critical Orange SA
Priority to FR2200326A priority Critical patent/FR3131995A1/fr
Priority to PCT/EP2022/085309 priority patent/WO2023134934A1/fr
Publication of FR3131995A1 publication Critical patent/FR3131995A1/fr
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/355Application aware switches, e.g. for HTTP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

L’invention concerne une méthode de traitement d’un paquet par un commutateur physique de réseau de communications électroniques, la méthode comprenant : La réception par le commutateur d’un paquet ; La détermination par le commutateur d’un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet ; et En fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, l’application par le commutateur d’une action sur le paquet. Figure de l’abrégé : Figure 1

Description

SUPPORT DE CALCULS SUR NOMBRES REELS AU NIVEAU DES COMMUTATEURS PHYSIQUES
La présente invention concerne le domaine des réseaux de communication électronique et en particulier les commutateurs physiques implémentés dans ces réseaux.
Elle trouve notamment des applications dans la configuration des commutateurs physiques pour le traitement des paquets.
Les commutateurs physiques ou switchs en anglais sont très limités dans leurs capacités de calcul, de mémoire et ont des contraintes très fortes en matière de latence. Ainsi, un commutateur traite chaque paquet qu’il reçoit avec un nombre très limité d’étape ou cycle d’horloge (c’est-à-dire l’unité temporelle minimum pendant laquelle le processeur peut traiter une action élémentaire ou encore instruction). Dans les commutateurs actuels le nombre d’étape ou de cycle ne dépasse pas les 12 cycles. Pendant un cycle d’horloge le processeur peut traiter plusieurs instructions en parallèle. Toutefois, le nombre d’instructions que le processeur peut traiter en parallèle dépend beaucoup de la taille du registre du processeur qui là aussi est très limitative sur les processeurs employés dans les commutateurs physiques.
Ces limitations des processeurs des commutateurs et la nécessité de latence très faible pour ne pas affecter la performance des services qui transitent sur le réseau, contraignent les commutateurs à exécuter uniquement des scripts impliquant des calculs très simples et donc à réduire les possibilités de programmation des commutateurs. Ainsi, les processeurs des commutateurs ne peuvent calculer que des fonctions très simples car :
  • les fonctions plus complexes requièrent plus de ressources, car elle implique souvent plus d’opérations mathématiques (par exemple, l’addition, la division, le sinus, etc.) requérant plus de cycles pour effectuer le calcul de celles-ci ; et/ou
  • les fonctions plus complexes nécessitent souvent l’utilisation de valeurs réelles au cours de leur calcul au risque sinon d’entraîner des erreurs.
Ainsi, pour pouvoir exécuter des scripts impliquant des calculs plus complexes, les commutateurs physiques peuvent être programmés pour transférer les paquets sur lesquels un traitement plus complexe est à appliquer à un serveur qui réalisera le calcul complexe et transmettra ensuite le paquet. Une telle implémentation permet de réaliser des calculs plus complexes, et notamment d’être beaucoup moins limité sur les fonctions qui peuvent être utilisées. Toutefois, une telle implémentation entraîne une latence forte et ne peut donc être employée pour tous les types de traitement. On l’emploiera donc principalement pour le traitement des paquets a postériori.
L’article « InREC: In-network REal Number Computation » de M. Jose et al, publié dans les actes de la conférence 2021 IFIP/IEEE International Symposium on Integrated Network Management (IM) propose d’utiliser des tables de correspondance pour effectuer des opérations sur des valeurs exprimées dans des représentations de valeur réelle comme les nombres à virgule flottante décrits dans le standard IEEE 754. Cela permet de mettre en œuvre des opérations de type logarithme ou exponentielle. Toutefois ces représentations en valeur réelle nécessitent plus de cycles d’horloge pour traiter des opérations même basiques comme l’addition, réduisant ainsi fortement le nombre d’opérations que peut comprendre la fonction complexe.
La présente invention vient améliorer la situation.
Un premier aspect de l’invention concerne une méthode de traitement de paquet par un commutateur physique de réseau de communications électroniques, la méthode comprenant :
La réception par le commutateur d’un paquet ;
La détermination par le commutateur d’un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
En fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, l’application par le commutateur d’une action sur le paquet.
Lorsqu’un script (par exemple un script écrit dans un langage de programmation P4 également appelé Programming Protocol-Independant Packet Processors en anglais) se basant sur une fonction est exécuté (ou plus précisément lorsque la version compilée du script est exécutée) au niveau d’un commutateur, le commutateur va appliquer une série d’opérations correspondante au script ou déduite du script. Dans un commutateur standard, ces opérations ont pour entrées et pour sorties des valeurs entières. Le fait d’implémenter ces opérations sur des valeurs réelles codées de manière spécifique (c’est-à-dire que l’ensemble de bits codant chacune de ces entrées/sorties se décompose en deux sous-ensembles de bits, l’un représentant une partie entière et l’autre représentant une partie décimale), permet au commutateur d’exécuter des ensembles d’opérations formant des fonctions plus complexes que celles implémentées sur un commutateur physique classique. En effet, la représentation en valeur réelle permet d’exécuter des opérations de type exponentiel, logarithmique, division ou encore sinus. De plus, le codage spécifique de ces valeurs réelles permet de réduire le nombre d’étapes (autrement appelées cycles) nécessaires pour chaque opération, permettant d’appliquer plus d’opérations donc des fonctions plus complexes ou éventuellement de réduire la latence. En effet, le nombre d’étapes allouées pour effectuer le calcul exécutant le script se basant sur la fonction est très réduit sur les commutateurs physiques : il est en principe limité à 12 étapes. Ainsi, si une opération ne requiert plus que 2 étapes avec la représentation spécifique de valeur réelle (dénommée simplement représentation de valeur réelle dans la suite des présentes) au lieu de 4 étapes (comme c’est le cas pour l’addition avec la représentation des nombres à virgule flottante de la norme IEEE 754) :
  • soit il reste 10 étapes disponibles pour exécuter les autres opérations au lieu de 8 étapes, permettant d’implémenter des fonctions plus complexes et plus généralement de permettre l’emploi d’un plus grand choix de fonction ;
  • soit le nombre d’étapes totales pour implémenter la fonction sera réduit, et puisque chaque étape prend le même temps, la latence sera réduite.
Par étape, il est entendu un cycle d’horloge pendant lequel le processeur ne peut traiter qu’une instruction à la suite ou plusieurs instructions si celles-ci sont toutes traitées en parallèle.
Par commutateur physique, il est entendu un commutateur réseau également appelé switch en anglais qui relie plusieurs segments physiques dans un réseau de communications électroniques (par exemple réseau de télécommunication ou encore réseau informatique) ou plusieurs segments physiques entre plusieurs réseaux de communications électroniques.
Par réception par le commutateur d’un paquet, il est entendu que le commutateur sur l’un de ses ports d’entrée reçoit le paquet.
Par paquet, il est entendu la structure permettant la transmission de données au niveau de la couche réseau. Un paquet comprend notamment un entête (ou header en anglais) et les données à transmettre.
Par valeur obtenue à partir du paquet, il est entendu une valeur obtenue par le commutateur sur la base du paquet et qui est donc dépendante du paquet, autrement dit la valeur dépend soit des caractéristiques du paquet (par exemple, la longueur du paquet), soit des données contenues dans le paquet aussi bien dans la partie entête que dans le corps du paquet (ainsi la valeur peut être le port source inscrit dans le header du paquet).
Par opération, il est entendu toute opération réalisée par le commutateur soit de manière native (par exemple, l’addition, la permutation, décalage de bits à gauche, décalage de bits à droite), c’est-à-dire que les tâches à réaliser pour exécuter l’opération sont déjà définies dans la mémoire du commutateur soit sur la base de table de correspondance, c’est-à-dire pour les opérations qui correspondent à une table de correspondance. Une opération, lorsque celle-ci est réalisée de manière native, peut requérir plusieurs cycles d’horloge (ou plusieurs étapes pour être traitée), c’est-à-dire qu’une telle opération se décompose en une succession d’instructions appliquées les unes à la suite des autres. Les opérations réalisées sur la base de table de correspondance peuvent chacune être traitées par le processeur en un seul cycle d’horloge.
Par application d’une pluralité d’opérations sur au moins une valeur, c’est-à-dire un ensemble d’une ou plusieurs valeurs, il est entendu que les opérations composées qui forment une fonction, sont appliquées dans un ordre prescrit par la composition (plusieurs ordres d’application des opérations peuvent correspondre avec la fonction, par exemple, l’addition de a+b puis la multiplication par c ou la multiplication de a et b par c puis l’addition de ac et bc). On applique ainsi une première opération (ou un ensemble de premières opérations si celles-ci peuvent être appliquées en parallèle) puis on applique une deuxième opération (ou un ensemble de deuxièmes opérations) sur le ou les résultats de la ou des premières opérations et ainsi de suite jusqu’à ce que toutes les opérations de la composition soient traitées. Cette pluralité d’opérations est traitée par le commutateur (par exemple au moyen du cœur du processeur, du registre du processeur et éventuellement d’éléments de mémoire vive présents dans le commutateur). L’opération ou la pluralité d’opérations réalisée par le commutateur correspond à un algorithme qui représente une fonction dont la ou les entrées sont des valeurs obtenues à partir du paquet.
Par table de correspondance, il est entendu un tableau de correspondances, ou encore une Lookup Table (LUT) en anglais, faisant la correspondance entre des valeurs d’entrées et des valeurs de sorties. Les tables de correspondance représentent des correspondances entre des entrées et des sorties de la table. Autrement dit, la table de correspondance est générée (ou encodée par exemple en bits) sur la base des correspondances entre ses entrées et ses sorties. Ces entrées et sorties sont codées par exemple en bits. Ces entrées et sorties peuvent notamment être des nombres entiers ou des nombres réels. Elles peuvent aussi comprendre tout type d’information codée communément dans les tables de correspondances implémentées dans les commutateurs réseau.
Par opération correspondant à une table de correspondance, il est entendu que le résultat de l’opération appliquée sur une ou plusieurs valeurs d’entrées correspond à la valeur (ou encore valeur de sortie indiquée) indiquée par la table de correspondance pour la ou lesdites valeurs d’entrée.
Par valeur (d’entrée ou de sortie) d’une table représentée dans une représentation de valeur réelle, il est ici entendu que la valeur d’entrée avant d’être codée sur un ensemble de bits dans la table est un réel et que le codage sur cet ensemble de bits permet de conserver de l’information sur cette valeur en plus de l’information relative à la partie entière de cette valeur. La représentation de valeur réelle spécifique mise en œuvre par l’invention est un découpage des bits permettant de coder la valeur dans la table, entre des bits représentant la partie entière et des bits représentant la partie décimale.
Par application d’une action sur le paquet, il est entendu toute action communément appliquée dans un commutateur physique ou virtuel, par exemple :
  • abandonner le paquet reçu, c’est-à-dire ne pas la transmettre ;
  • modifier le paquet avant de le transmettre, par exemple en modifiant le port de destination ;
  • transmettre le paquet sans modification.
L’action est fonction du résultat de l’application d’une succession d’opérations, c’est-à-dire que l’action est dépendante du résultat, il est ainsi entendu que l’application de l’action est soit subordonnée au résultat de l’application de la succession d’opérations (par exemple l’action n’est appliquée que pour un certain résultat) ou encore que l’action elle-même varie en fonction du résultat de la succession d’opérations (par exemple, l’action consistant à modifier le port de destination du paquet en prenant comme nouveau port de destination la valeur résultant de l’application de la succession d’opérations).
Selon un mode de réalisation, la détermination de l’action à appliquer sur le paquet et/ou l’au moins une valeur d’entrée obtenue à partir du paquet et/ou l’opération ou la pluralité d’opérations sont fonction d’au moins une valeur de déclenchement obtenue par le commutateur à partir du paquet.
Par exemple, la valeur de déclenchement est entrée dans une table de correspondance (appelée match-action table en anglais) qui a pour sortie une fonction (représentant l’opération ou la pluralité d’opérations), des valeurs d’entrée sur lesquels appliquer cette fonction et une action.
Selon un mode de réalisation chaque table de correspondance LUTicorrespondant à une des opérations parmi la pluralité d’opérations représente des correspondances entre des valeurs d’entrée de la table LUTiet des valeur de sortie de la table LUTi, les valeurs d’entrée de la table LUTisont représentées dans une première représentation de valeur réelle RVR1,icodée sur un premier ensemble de bits EB1,1,icomprenant un premier sous-ensemble de bits SEB1,1,ireprésentant une partie entière et un deuxième sous-ensemble de bits SEB1,2,ireprésentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une deuxième représentation de valeur réelle RVR2,icodée sur un deuxième ensemble de bits EB2,icomprenant un premier sous-ensemble de bits SEB2,1,ireprésentant une partie entière et un deuxième sous-ensemble de bits SEB2,2,ireprésentant une partie décimale.
Ainsi, toutes les tables de correspondance ont au moins leurs entrées ou leurs sorties qui sont représentées sous forme de réel, voire les deux. Cela permet de réaliser plusieurs opérations avec des réels en entrée ou en sortie ou les deux.
Eventuellement, les opérations qui ont comme entrée l’au moins une valeur d’entrée (c’est-à-dire le ou les valeurs d’entrée de la fonction appliquée par le commutateur) correspondent à des tables de correspondance LUTidont les valeurs de sortie sont représentées dans des secondes représentations de valeur réelle RVR2,i. Dans ce cas, les valeurs d’entrée sont des entiers, et les valeurs de sortie sont égales ou proches respectivement des valeurs d’entrée. Ces opérations sont appelées par la suite opération de transformation en valeur réelle. Ainsi, il est possible de transformer les valeurs d’entrée de la fonction afin que toutes les opérations soient réalisées sur des valeurs exprimées dans des représentations en valeur réelle.
Par proche on entend que la distance entre respectivement les valeurs de sortie codée sur le deuxième ensemble de bits EB2,iet les valeurs d’entrée codée sur le premier ensemble de bits EB1,iest inférieur à un seuil, par exemple, strictement inférieur à 0,5. La distance employée peut par exemple être la distance cartésienne.
Une valeur représentée dans une représentation de valeur réelle codée sur un ensemble de bits est codée dans cette représentation de valeur réelle.
Selon un mode de réalisation, au moins une valeur de sortie d’une table de correspondance, correspondant à l’une des opérations parmi l’opération ou la pluralité d’opérations, est adaptée en ajoutant ou en retranchant une valeur afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i.
Ainsi, il est possible d’adapter les tables pour réduire les erreurs ou écarts entre le résultat souhaité et le résultat de l’application de l’opération ou de la pluralité d’opérations calculée par le commutateur. La valeur de sortie et la valeur de sortie adaptée peuvent être proches. Cette optimisation peut être réalisée de la même manière que l’optimisation réalisée dans les réseaux de neurones, à savoir en minimisant une distance entre le résultat souhaité et le résultat obtenu.
Ainsi, les opérations de transformation en valeur réelle peuvent transformer un entier en une valeur représentée dans une représentation de valeur réelle dont la partie entière diffère de l’entier de la valeur .
Ceci est particulièrement avantageux, car il est souvent possible d’adapter la valeur de sortie d’une des tables de correspondance, notamment à la hausse pour les nombres positifs et à la baisse pour les nombres négatifs, afin que les troncatures éventuelles du fait de la limite du nombre de bits des parties décimales des représentations de valeur réelle dans lesquelles sont représentées les valeurs de sortie des différentes opérations (et surtout la valeur de sortie de la dernière opération exécutée c’est-à-dire le résultat de l’application de l’opération ou de la pluralité d’opérations) qui succède à l’opération représentée par la table de correspondance adaptée, correspondent à des arrondis de ces parties décimales. Le résultat est donc plus précis et cela permet de réduire ou de supprimer le besoin de procédure d’arrondi lorsque de telles procédures sont indispensables pour éviter que le résultat ne soit complètement erroné ; or ces procédures consomment beaucoup d’étapes dans le processus de calcul du commutateur.
Par résultat de la fonction appliquée sur une valeur et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i, il est entendu que la fonction que représente l’opération ou la pluralité d’opérations est calculée avec des représentations de valeur réelle ayant des parties décimales plus importantes et/ou en pratiquant des procédures d’arrondis lors du calcul. Le calcul de la fonction peut notamment être effectué au moyen de processeurs adaptés au calcul numérique. Il est ainsi possible de déterminer le résultat souhaité auquel on compare le résultat obtenu lorsque le commutateur (ou un système équivalent) exécute l’opération ou la pluralité d’opérations.
Selon un mode de réalisation, la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du premier ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i; et/ou
la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du deuxième ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i.
Ainsi, il est possible d’adapter, pour chaque représentation de valeur réelle, la répartition des bits entre l’ensemble représentant les parties entières et l’ensemble représentant les parties décimales pour réduire les erreurs ou écarts entre le résultat souhaité et le résultat de l’application de l’opération ou de la pluralité d’opérations calculé par le commutateur. En effet, lors de l’exécution de certaines opérations (par exemple, une opération représentant l’exponentielle sur le domaine [-10 ; 0]) une partie décimale trop petite des valeurs de sorties ne discriminera pas suffisamment ces valeurs, à l’inverse lors de l’exécution de certaines opérations (par exemple, une opération représentant l’exponentielle sur le domaine [0 ; 10]) une partie entière trop petite des valeurs de sorties ne permettra d’exprimer toutes ces valeurs. Ainsi, au cours de la chaîne d’opérations il est avantageux d’adapter la répartition entre bits représentant les parties entières et bits représentant les parties décimales de chaque table de manière indépendante (c’est-à-dire que les représentations de valeur réelle soient adaptées distinctement si nécessaire). Cette optimisation peut être réalisée en minimisant une distance entre le résultat souhaité et le résultat obtenu lorsque chaque répartition est modifiée.
Par modification de la répartition de bits entre la partie décimale et la partie entière, il est entendu que le nombre de bits affecté à la partie entière est réduite au bénéfice du nombre de bits affecté à la partie décimale ou que le nombre de bits affecté à la partie entière est augmenté au bénéfice du nombre de bits affecté à la partie décimale, le nombre de bits représentant la valeur étant constant lors de cette modification.
Selon un mode de réalisation, les opérations ne correspondant pas à une table de correspondance sont des opérations parmi l’addition, la multiplication, la permutation, le décalage de bits.
L’addition, la multiplication et la permutation sont des opérations qui sont particulièrement adaptées pour être appliquées sur des valeurs exprimées dans une représentation de valeur réelle dont la partie entière est codée sur un ensemble de bits et la partie décimale est codée dans un autre ensemble de bits. En effet lorsque la répartition des bits entre partie entière et partie décimale est la même pour toutes les valeurs en entrée d’une même opération de ce type l’exécution de l’opération peut être réalisée indépendamment de la répartition des bits entre partie entière et partie décimale. Autrement dit, la répartition des bits entre partie entière et partie décimale n’affecte pas le calcul de l’opération. D’autres représentations de valeur réelle, par exemple la représentation des nombres à virgule flottante de la norme IEEE 754, ne permettent pas l’utilisation des opérations indiquées précédemment sans appliquer des transformations supplémentaires aux valeurs pour permettre l’application de l’opération, ce qui augmente le nombre d’étapes nécessaires pour la réalisation de l’opération. Ainsi, selon la méthode proposée dans l’article référencé précédemment, pour additionner deux nombres représentés dans la représentation des nombres à virgule flottante de la norme IEEE 754 le processeur du commutateur requerrait quatre étapes alors que pour additionner deux nombres représentés dans la représentation de valeur réelle telle que décrite dans les présentes ne requiert qu’une étape (ou deux si les deux nombres ont une représentation différente).
Selon un mode de réalisation, le deuxième ensemble de bits sur lequel est codée la seconde représentation de valeur réelle comprend un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits, et dans laquelle le résultat de l’application d’une opération ou d’une pluralité d’opérations se base sur l’information. Par exemple, le résultat d’une opération suivante parmi la pluralité d’opérations se base sur l’information, ladite opération suivante étant exécutée après l’au moins une opération correspondant à une table de correspondance.
Ainsi il est possible d’ajouter de l’information supplémentaire dans l’ensemble de bits codant les valeurs d’entrée ou de sortie d’une opération dans une représentation en valeur réelle. Cette information permet de réduire le nombre d’instructions à implémenter par une opération qui a pour entrée ces valeurs. Ainsi, par exemple si cette opération requiert l’exécution de plusieurs instructions, le résultat de l’une de ces instructions dépendant des données codées sur les premier et deuxième sous-ensembles peut être pré-calculé et indiqué dans le troisième sous-ensemble. Il n’est alors pas nécessaire d’exécuter cette instruction pour obtenir le résultat de l’opération, réduisant ainsi les étapes de traitement de l’opération. Le premier ensemble de bits sur lequel est codée la première représentation de valeur réelle peut également comprendre un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits. L’information codée dans le troisième sous-ensemble de bits est avantageusement une valeur numérique, par exemple une valeur réelle. Par information dépendant d’un sous-ensemble de bits il est entendu que l’information est obtenue par application d’une opération ou d’une instruction sur la valeur encodée par le sous-ensemble de bits lors de la détermination de la table de correspondance.
Selon un autre aspect, il est proposé un programme informatique comportant des instructions pour la mise en œuvre de tout ou partie d’un procédé tel que défini dans les présentes lorsque ces instructions sont exécutées par un processeur. Selon un autre aspect de l’invention, il est proposé un support d’enregistrement non transitoire, lisible par un ordinateur, sur lequel est enregistré un tel programme.
Un autre aspect de l’invention concerne un commutateur physique de réseau de communications électroniques, le commutateur comprend :
- un port d’entrée relié à un réseau de communications électroniques;
- un processeur ; et
- une mémoire stockant des instructions, de sorte que lorsque ces instructions sont exécutées par le processeur, elles configurent le commutateur pour:
réceptionner via le port d’entrée un paquet ;
déterminer un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
en fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, appliquer une action sur le paquet.
D’autres caractéristiques et avantages de l’invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels :
Fig. 1
illustre des commutateurs selon l’invention.
Fig. 2
illustre un ordinogramme représentant le procédé dans un mode de réalisation particulier.
Fig. 3
illustre un graphe représentant une décomposition d’une fonction f en opérations élémentaires.
Dans l’exemple de la est décrit un réseau de communication électronique 1 comprenant des commutateurs 2, 3, 4, chacun des commutateurs reliant plusieurs segments physiques 5 (par exemple des câbles ou des fibres optiques) du réseau ensemble. Sur ces segments physiques des signaux représentant des paquets 8, 9 sont communiqués de commutateur en commutateur.
Certains de ces commutateurs 3, 4 relient uniquement des segments 5 internes au réseau, d’autres de ces commutateurs 2 relient des segments 5 internes au réseau avec des segments provenant d’autres réseaux de communication électronique 7.
On se place par la suite dans le domaine des réseaux de communication définis par logiciel de type SDN (pour « Software-Defined Networks »), dans lequel un commutateur applique un traitement à un flux de paquets à l’aide d’une table RMT (pour « Reconfigurable Match-Action Tables »).
Nous allons décrire plus précisément le fonctionnement d’un commutateur 3. Cette description peut être transposée aisément aux autres commutateurs. Le commutateur 3 comprend une unité de communication (COM) 3.1 comprenant des ports d’entrée et des ports de sortie. Le commutateur 3 comprend également un processeur (PROC) 3.2, une mémoire (MEMO) 3.3 et une unité de communication du plan contrôle (CONT_COM) 3.4 pour paramétrer le commutateur 3.
La mémoire 3.3 comprend une mémoire non volatile sur laquelle est stocké le programme informatique et une mémoire volatile sur laquelle est stocké le script compilé à exécuter par le processeur, des tables de correspondance, des instructions relatives aux opérations natives.
L’unité de communication du plan contrôle 3.4 permet de recevoir les scripts compilés ainsi que les tables de correspondance envoyées à travers un plan de contrôle par un ordinateur 10.
Le processeur 3.2 est notamment configuré pour contrôler l’unité de communication 3.1 pour recevoir des paquets 8 et pour émettre des paquets 9 dans un plan de transfert de données. Le processeur 3.2 est également configuré pour traiter le paquet 8 : ce traitement est défini par un script et met en œuvre une succession d’opérations exécutée sur la base de tables de correspondance ou de suites d’instructions stockées sur la mémoire volatile. Le traitement par le commutateur 3 du paquet 8 s’achève lorsque le paquet est émis (comme dans le cas du paquet 9) vers une autre entité du réseau, par exemple un autre commutateur, ou lorsque le paquet est abandonné.
Les processeurs 3.2 implémentés dans les commutateurs physiques 2, 3, 4 sont des processeurs spécifiques aux commutateurs permettant un traitement avec très peu de latence, il s’agit par exemple des processeurs de type RISC.
L’ordinateur 10 permet de superviser l’activité des différents commutateurs 2, 3, 4 du réseau 1 et de les paramétrer, à savoir leur transmettre les scripts compilés à exécuter et les tables de correspondances permettant d’exécuter ces scripts. La communication entre l’ordinateur de contrôle 10 et les commutateurs 2, 3, 4 se fait au niveau du plan de contrôle via les mêmes paquets 8, 9 ou via des paquets spécifiques au plan de contrôle 11. L’ordinateur 10 peut permettre au gestionnaire de réseau d’écrire les scripts, de les compiler et de générer les tables de correspondance. Toutefois ces différentes tâches peuvent être réparties sur différentes entités.
La représente un organigramme d’un procédé selon un mode de réalisation particulier.
A l'étape S1, l'utilisateur entre dans l’ordinateur 10 un script relatif à un traitement à appliquer au niveau du commutateur. Ce script indique les paquets concernés par le traitement, une règle à exécuter et une action à entreprendre par le commutateur en fonction de la règle. La règle comporte une fonction et un domaine de définition de cette fonction. Cette règle comprend aussi une définition des entrées utilisées pour calculer le résultat de cette fonction. Ainsi, la règle détermine une fonction f et des entrées de cette fonction. L'action est définie comme dépendante du résultat de l’application de la règle.
Par exemple, la fonction peut être f(x,y), avec x et y représentant respectivement une première et une seconde caractéristique ou valeur d'un paquet. Par exemple, x peut représenter la taille du paquet et y peut représenter le numéro de port source du paquet. Si les paquets considérés sont des paquets TCP (pour « Transmission Control Protocol »), la taille des paquets peut être comprise entre 0 et 32 bits. Ainsi, la plage de x peut être définie comme l'intervalle [0 ; 32]. Par exemple, y peut représenter le port source du paquet reçu. Le port physique source étant le port physique d’entrée du commutateur par lequel le paquet est entré sur le réseau.
Les paquets concernés, c’est-à-dire celles pour lesquelles la règle sera appliquée, peuvent par exemple, être les paquets dont le port source est l’un parmi les ports physiques numéros [1, 2, 3, 6, 5] du réseau, et le port de destination est le port physique numéro 4. Le port physique de destination étant le port physique de sortie du commutateur par lequel le paquet sortira du réseau. Le port physique source est le port physique d’entrée du commutateur par lequel le paquet entrera dans le réseau.
Sur la base du script indiquant les paquets concernés par le traitement, une table de correspondance est générée. Celle-ci associe des valeurs d’entrée représentant une caractéristique du paquet ou correspondant à des valeurs du paquet avec la ou les premières opérations à exécuter pour appliquer la règle.
Dans le cas de l'exemple, l'action est définie en fonction des résultats de règle, c’est-à-dire le résultat du calcul de f(x,y). Par exemple, un seuil δ est défini et l'action peut être définie par exemple comme l'abandon du paquet lorsque le résultat est égal ou inférieur à ce seuil.
Dans le cas de cet exemple, f peut être défini par l’équation :
La fonction f définie ci-dessus est un exemple. La présente description n’est pas limitée à ce type de fonction. Par exemple, f peut avoir une seule entrée x (par exemple log(x)) ou un ensemble d’entrée (x, y, z…).
A l'étape S2, l’ordinateur 10 détermine pour chaque entrée, x, y, de la fonction f une table de correspondance mettant en correspondance les valeurs possibles prises par les entrées x (respectivement y) de la fonction f qui sont des entiers avec des valeurs (respectivement ) exprimées dans une représentation en valeur réelle RVRx(respectivement RVRy). La représentation en valeur réelle est une représentation réelle des nombres sur un certain nombre de bits, dans laquelle une partie des bits, par exemple, les premiers bits de cette représentation représentent la partie entière du nombre réel et une seconde partie, par exemple, les bits suivants de cette représentation représentent la partie décimale du nombre réel.
Chacune des entrées x, y peut être représentée dans une représentation en valeur réelle RVRx, RVRyqui lui est propre. Ainsi, dans le cas de l'exemple, deux tables de correspondance sont déterminées LUTxet LUTy. Les nxpremiers bits de la représentation en valeur réelle utilisée dans LUTxpeuvent correspondre à la partie entière de la représentation et les bits suivants à la partie décimale de la représentation en valeur réelle RVRxutilisée dans LUTx. De même, les nypremiers bits de la représentation en valeur réelle utilisée dans LUTypeuvent correspondre à la partie entière de la représentation et les bits suivants à la partie décimale de la représentation en valeur réelle RVRyutilisée dans LUTy.
En fonction de la fonction f implémentée, nxet nypeuvent être distincts. Dans l’exemple de la figure 2, nxet nysont identiques lorsque la fonction somme x + y n’est pas implémentée sous forme d’une table de correspondance, mais directement sous la forme d’une opération native du commutateur. Dans cet exemple, nxet nypeuvent aussi être distincts lorsque la fonction somme x + y est implémentée sous forme d’une table de correspondance. Dans ce cas la table de correspondance correspondant à x+y ou à un ensemble d’opérations comprenant x+y (par exemple, ) prend en compte les représentations RVRxet RVRyutilisées et donc peut s’adapter à des différences dans les représentations.
Toutes les distributions des bits entre la partie entière et la partie décimale peuvent être implémentées. Toutefois, il est possible de choisir des distributions optimisées en fonction de la fonction implémentée et des entrées possibles. Cela permet d’optimiser la précision des valeurs calculées et de réduire les erreurs dans le calcul du résultat de la fonction f. Cette optimisation est réalisée dans une étape ultérieure.
De plus, une valeur (la représentation réelle d’une valeur entière xiobtenue au moyen de la table de correspondance LUTx) et une valeur (la représentation réelle d’une valeur entière yjobtenue au moyen de la table de correspondance LUTy) peuvent également différer alors que les valeurs de xiet de yisont identiques. En principe, la différence entre les deux valeurs et sera faible, mais peut être plus conséquente lorsque la fonction somme x + y est implémentée sous forme d’une table de correspondance, c’est-à-dire que la première opération pratiquée sur x et y l’est au moyen d’une table de correspondance et non d’une opération native. Dans ce cas la table de correspondance correspondant à l’opération x + y prend en compte les différences induites par les tables de correspondance LUTxet LUTydans la transformation d’entiers identiques.
Des distinctions entre les mises en correspondance LUTx, LUTyde mêmes valeurs entières avec leurs représentations en valeur réelle peuvent être réalisées pour obtenir des résultats plus précis une fois la fonction f appliquée sur ces valeurs représentées en valeur réelle. Cela permet d’optimiser la précision des valeurs calculées et de réduire les erreurs dans le calcul du résultat de la fonction f. Cette optimisation est réalisée dans une étape ultérieure.
Plus généralement, pour une même représentation en valeur réelle, par exemple RVRx, chaque représentation en valeur réelle , peut être adaptée distinctement. Cela permet d’adapter les valeurs d’entrées sur lesquelles va être appliquée la fonction et ainsi permettre d’obtenir des résultats de la fonction f plus précis ou avec moins d’erreurs, notamment lorsque le résultat de la fonction f (ou d’une sous fonction de f) exprimé dans la représentation en valeur réelle ne correspond pas à l’arrondi au même nombre de chiffres décimaux du résultat qui aurait été obtenu avec une représentation en valeur réelle avec plus de bits et notamment plus de bits alloués à la partie décimale.
L’optimisation des tables de correspondance LUTx, LUTy(c’est-à-dire l’optimisation des valeurs dans la représentation en valeur réelle attribuée à chaque entier) et des représentations en valeur réelle RVRx, RVRy(c’est-à-dire l’optimisation de la distribution des bits entre la partie entière et la partie décimale) utilisées sera décrite à l’étape d’optimisation.
Dans l’exemple, de la figure 2, LUTxmet en correspondance les valeurs possibles que peut prendre x (à savoir les valeurs 0 à 32) à autant de valeurs exprimées dans la représentation en valeur réelle RVRxsur n bits. Par exemple, si la représentation en valeur réelle est codée sur 32 bits, nxpeut être de 16 et peut être de 16. Ainsi, les 16 premiers bits de la représentation en valeur réelle représentent la partie entière du nombre réel et les 16 suivant la partie décimale. La distance entre la partie entière de la représentation en valeur réelle et de l’entierx i est faible, c’est-à-dire que la distance entre la valeur et la valeurx i est inférieure à un seuil, par exemple, strictement inférieur à 0,5.
Dans l’exemple de la figure 2, LUTymet en correspondance les valeurs possibles des ports sources (à savoir les valeurs 0 à 18) à autant de valeurs exprimées dans la représentation en valeur réelle RVRysur n bits. Ici nous prendrons, par souci de simplification de l’exposé, nyégale à nx, c’est-à-dire, que nyet sont égaux à 16. La distance entre la partie entière de la représentation en valeur réelle et de l’entiery i est faible, c’est-à-dire que la distance entre la valeur et la valeury i est inférieure à un seuil, par exemple, strictement inférieur à 0,5.
Par détermination des tables de correspondance LUTxand LUTyil est entendu la génération de ces tables.
Les valeurs et correspondent à une écriture binaire, avec une partie représentant la partie entière et une partie représentant la partie décimale. Toutefois, il n’est pas nécessaire d’avoir dans la représentation en valeur réelle d’information indiquant la position de la virgule. En effet, les opérations natives ne sont pas affectées par l’emplacement des virgules. Ainsi, le résultat d’une opération, par exemple, x + y sera la même quel que soit l’emplacement de la virgule dans les représentations en valeur réelle RVRx, RVRy, sauf lorsque x et y ont des parties entières et décimales codées sur un nombre de bits différents.
A l’étape S3, la fonction f est décomposée en opérations élémentaires par l’ordinateur 10. Comme représenté à la , une représentation sous forme de graphe de type Graphe acyclique dirigé peut être employée pour représenter la fonction. Chaque nœud du graphe représentant une opération élémentaire (par exemple, une addition, une multiplication, un sinus, un logarithme,…) et chaque arête du graphe représente la relation entre les deux opérations élémentaires des deux nœuds reliés par l’arête (par exemple, la composition de ces deux opérations élémentaires).
Dans l’exemple de la fonction f(x,y) définie par l’équation précédente, f peut être décomposée en opération que sont l’addition 31, la multiplication par une constante 32, l’exponentielle 33, l’addition avec une constante 34, et l’inversion 35.
L’addition 31, la multiplication par une constante 32 et l’addition avec une constante 34 peuvent être des opérations implémentées de manière native. L’exponentielle 33 et l’inversion 35 sont implémentées au moyen de tables de correspondance.
Les nœuds 30.1 et 30.2 correspondent aux tables de correspondance transformant respectivement les entiers x en et y en . Les nœuds 32.1, 34.1 et 35.1 sont des nœuds correspondant à des constantes.
A l’étape S4, les tables de correspondance correspondant aux opérations exponentielle et inverse sont générées par l’ordinateur 10.
Ainsi, la table de correspondance correspondant à l’opération exponentielle associe à chacune des valeurs possibles de (résultant de la somme de avec multipliée par log(2) obtenues par l’application des opérations implémentées de manière native sur le commutateur) une valeur représentée dans une représentation en valeur réelle RVRuproche de la valeur du calcul de la fonction exponentielle sur . Par proche on entend que la distance entre le résultat de la fonction exponentielle sur et la valeur est inférieure à un seuil, par exemple 0,5.
De plus, la table de correspondance correspondant à l’opération inverse associe à chacune des valeurs possibles de (résultant de la somme de avec 1 obtenue par l’application d’une opération implémentée de manière native sur le commutateur) une valeur représentée dans une représentation en valeur réelle RVRwproche de la valeur du calcul de la fonction inverse sur . Par proche on entend que la distance entre le résultat de la fonction inverse sur et la valeur est inférieure à un seuil, par exemple 0,5.
Ces tables peuvent être optimisées par toute technique d’optimisation connue. Par exemple, pour chaque couple de valeurs en entrée (xi,yj) il est possible d’associer un ensemble de valeurs permettant d’adapter les valeurs de sortie des tables de correspondances concernées par le couple de valeurs d’entrée (xi,yj). Ainsi, la valeur de sortie de la table de correspondance correspondant au nœud 30.1 pour la valeur d’entrée xipeut être remplacée par la valeur , la valeur de sortie de la table de correspondance correspondant au nœud 30.2 pour la valeur d’entrée yjpeut être remplacée par la valeur , la valeur de sortie de la table de correspondance correspondant au nœud 33 pour le couple de valeurs d’entrées (xi,yj) peut être remplacée par la valeur , la valeur de sortie de la table de correspondance correspondant au nœud 35 pour le couple de valeurs d’entrées (xi,yj) peut être remplacée par la valeur . Ainsi, pour chaque n-uplet de valeur d’entrée, ici le couple de valeurs en entrée (xi,yj), il est possible d’associer un ensemble , ici , , et , servant de paramètre pour effectuer l’optimisation des tables de correspondance employées. Chaque valeur est petite, c’est-à-dire proche de 0. L’optimisation consiste à déterminer l’ensemble qui minimise la distance entre les valeurs et les valeurs obtenues résultant du calcul de la fonction f sur les couples d’entrée (x,y) lorsque ce calcul est réalisé avec une précision supérieure aux précisions des représentations de valeur réelle RVRx, RVRy, RVRu, RVRwutilisées pour les calculs des opérations telles que décrites à la figure 3 et avec un processeur adapté au calcul numérique. Une fois l’ensemble déterminé, les tables de correspondance optimisées sont obtenues en remplaçant respectivement les valeurs par les valeurs pour toutes les couples (i,j) ∈ [0 ; 32]x[0 ; 18].
De plus, il est possible également d’optimiser la répartition des bits entre partie entière et partie décimale de chaque représentation en valeur réelle RVRx, RVRy, RVRu, RVRwdes valeurs de sorties des tables de correspondance. Par exemple, pour chaque table de correspondance plusieurs répartitions de bits sont déterminées. Par exemple, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1 x, RVR2 x, RVR3 x. De même, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1 y, RVR2 y, RVR3 y, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1 u, RVR2 u, RVR3 u. Enfin, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1 w, RVR2 w, RVR3 w. La combinaison de représentations en valeur réelle RVRt x, RVRt’ y, RVRt’’ u, RVRt’’ wavec le quadruplé (t, t’, t’’, t’’’) ∈ {1,2,3}4qui minimise la distance entre les valeurs et les valeurs obtenues résultant du calcul de la fonction f sur les couples d’entrée (x,y) lorsque ce calcul est réalisé avec une précision supérieure aux précisions de toutes les représentations de valeur réelle utilisées pour les calculs des opérations est la combinaison de représentations mise en œuvre respectivement dans les tables de correspondance représentant les nœuds 30.1, 30.2, 33, 35.
L’optimisation permettant d’adapter les valeurs de sortie des tables de correspondance et l’optimisation permettant de déterminer les répartitions de bits les plus adéquates peuvent être implémentées successivement, voire de manière récursive.
Les tables de correspondance peuvent également être adaptées pour intégrer pour chaque valeur d’entrée ou de sortie une information relative à cette valeur, dite information supplémentaire. Ainsi, par exemple les représentations en valeur réelle RVRx, RVRy, RVRu, RVRwpeuvent prévoir des bits supplémentaires pour coder cette information supplémentaire. Par exemple, ces représentations peuvent être codées sur 40 bits dont 8 sont réservées à l’information supplémentaire. Cette information supplémentaire dépend des opérations à appliquer sur la valeur relative à cette information. Par exemple, étant donné que les valeurs de sortie de l’opération 33 sont très importantes en comparaison de 1 lorsque est grand on peut approximer par . Il est alors possible d’indiquer dans les représentations RVRucodant pour les valeurs correspondant aux valeurs supérieures à un seuil, par exemple 5, la valeur de en tant qu’information supplémentaire. Ainsi, la valeur de ajoutée dans la représentation RVRupourra remplacer directement le résultat du traitement de l’opération 35, c’est-à-dire que pour les valeurs de grande, le calcul n’aura pas besoin d’être effectué.
Les valeurs résultant de l’opération 32 peuvent également être représentées dans une représentation RVRzdont une partie code une information supplémentaire. Ces valeurs sont les entrées de l’opération 33.
Lorsque l’une des opérations à appliquer est le logarithme, l’information supplémentaire ajoutée à la valeursde sortie de la table de correspondance Tpré opreprésentant l’opération (par exemple, l’opération qui transforme une valeur codée dans une représentation de valeur entière en valeur codée dans une représentation de valeur réelle) précédent le logarithme peut indiquer une approximation du logarithme pour cette valeur s. Ainsi, il est possible d’indiquer en tant qu’information supplémentaire codée sur les 8 bits la valeur entière n telle que . Puisque , l’opération représentant le logarithme peut ainsi être réduite au calcul de , étant compris entre 1 et 2, peut s’approximer par ce qui réduit la complexité du calcul.
A l’étape S5, le script est compilé par l’ordinateur 10.
A l’étape S6, le script compilé et les tables de correspondance générées aux étapes S1 (table de correspondance relative aux paquets concernés), S2 (tables de correspondance relatives à la transformation des entrées en représentation en valeur réelle) et S4 (tables de correspondance relatives aux opérations qui ne sont pas implémentées de manière native sur le commutateur) sont transmis aux commutateurs physiques, et en particulier au commutateur physique 3 pour être stockés sur sa mémoire 3.3 et être exécutés par son processeur 3.2.
Le paramétrage du commutateur physique 3 réalisé par les étapes S1 à S6 est alors terminé. Les étapes S1 à S6 peuvent toutes être réalisées par l’ordinateur 10.
A l’étape S7, le commutateur 3 reçoit un paquet 8 sur l’un de ses ports d’entrée.
A l’étape S8, le commutateur 3 exécute le script compilé reçu à l’étape S6.
L’exécution du script compilé entraîne l’application de la première table de correspondance LUTinitdéterminée à l’étape S1 (table de correspondance relative aux paquets concernés) pour déterminer si le paquet 8 est concerné par le traitement. Ainsi, une valeur correspondant à une caractéristique du paquet ou directement à une ou plusieurs valeurs du paquet sont entrées dans LUTinit. En sortie, la table de correspondance LUTinitindique alors l’action à appliquer et la règle (c’est-à-dire la succession d’opérations) à exécuter. Par exemple, le couple de valeurs correspondant respectivement au port source et au port de destination du paquet 8 est entré dans la table de correspondance LUTinit, si le couple de valeurs appartient à l’ensemble {1, 2, 3, 6, 5}x{4} alors la règle à exécuter et l’action à appliquer sont indiquées en sortie de la table de correspondance LUTinit.
L’exécution du script compilé entraîne l’application des opérations telles que décrites à la figure 2 sur les valeurs x et y extraites du paquet 8. Par exemple, le paquet 8 ayant une taille de 32 bits et le port source du paquet 8 étant 6, les entiers x, y du paquet 8 sont respectivement égaux à 32 et 6. Les tables LUTxet LUTy(c’est-à-dire, les tables de correspondance relatives à la transformation des entrées de f en représentation en valeur réelle déterminées à l’étape S2) de transformation de x et de y sont appliquées respectivement sur les valeurs 32 et 6. Par exemple, à la valeur 32, LUTxfait correspondre la valeur 31,98561 et à la valeur 6, LUTyfait correspondre la valeur 6,00153. Ces deux valeurs et sont respectivement exprimées sous la forme des représentations en valeur réelle RVRt xet RVRt’ ydont les répartitions entre parties entières et parties décimales sont les mêmes.
Ensuite l’exécution du script compilé indique l’opération native 31 à appliquer, c’est-à-dire l’addition de et dont les instructions sont stockées de manière native sur le commutateur 3. Les instructions permettant de réaliser l’addition, sont les mêmes que pour une addition entre deux entiers, c’est-à-dire, d’additionner les bits de même poids ensemble. Toutefois, lorsque les représentations en valeur réelle dans lesquelles sont codées les valeurs à additionner ont des répartitions en bits différentes alors le script peut prévoir une opération intermédiaire, par exemple, pour supprimer le ou les derniers bits de la partie décimale et ajouter autant de bits nul devant les autres bits de la partie entière. Le commutateur 3 obtient à la sortie de l’opération 31 la valeur 37,98714.
L’exécution du script indique ensuite l’opération native 32 à appliquer, c’est-à-dire la multiplication du résultat obtenu par log(2) dont les instructions sont stockées de manière native sur le commutateur 3. Le commutateur 3 obtient à la sortie de l’opération 32 la valeur 11,435268.
L’exécution du script indique ensuite l’opération 33 à appliquer, c’est-à-dire l’application de la fonction exponentielle sur . Le script renvoie à la table LUTucorrespondant à l’opération 33 (générée et optimisée à l’étape S4 et stockée sur le commutateur 3) pour appliquer cette fonction exponentielle. La table LUTuest appliquée sur la valeur 11,435268. La sortie de la table LUTuest exprimée sous la forme de la représentation en valeur réelle RVRt’’ uayant une partie entière représentée sur un nombre de bits beaucoup plus important que la partie décimale pour s’adapter à la fonction exponentielle. Par exemple, la partie décimale de est codée sur 0 bit alors que la partie entière de est codée sur l’ensemble des bits disponibles, à savoir 32 bits. Ainsi, la table LUTufait correspondre à la valeur 11,435268, la valeur 92 528 codée dans la représentation RVRt’’ u.
Ensuite, l’exécution du script compilé indique l’opération native 34 à appliquer, c’est-à-dire l’addition de et 1 dont les instructions sont stockées de manière native sur le commutateur 3. Le commutateur 3 obtient à la sortie de l’opération 34 la valeur 92 529.
L’exécution du script indique ensuite l’opération 35 à appliquer, c’est-à-dire l’application de la l’opération inverse sur . Le script renvoie à la table LUTwcorrespondant à cette opération 35 (générée et optimisée à l’étape S4 et stockée sur le commutateur 3) pour appliquer cette opération. La table LUTwest appliquée sur la valeur 92 527. La sortie de la table LUTwest exprimée sous la forme de la représentation en valeur réelle RVRt’’’ wayant une partie décimale représentée sur un nombre de bits beaucoup plus important que la partie entière pour s’adapter à la fonction inverse dont les valeurs de sortie sont toutes comprises entre 0 et 1. Par exemple, la partie entière de est codée sur 1 bit alors que la partie décimale de est codée sur l’ensemble des bits restant, à savoir 31 bits. Ainsi, la table LUTwfait correspondre à la valeur 92 529, la valeur 0.000010807 codée dans la représentation RVRt’’’ w.
A l’étape S9, l’exécution du script compilé indique ensuite une comparaison de la valeur obtenue par application des différentes opérations avec le seuil δ (par exemple un seuil de 0,0005) défini à l’étape S1. La comparaison peut être une opération native avec des instructions stockées sur le commutateur 3 ou une table de correspondance finale LUTfinqui à la valeur associe 1 si est supérieur au seuil et 0 sinon. Ensuite le commutateur applique l’action indiquée par le script en fonction du résultat de la comparaison. Dans l’exemple du paquet 8, la valeur de est inférieure au seuil δ et donc le paquet 8 est abandonné, si la valeur de avait été supérieure au seuil δ le paquet 8 aurait été transmis au segment menant au port de destination indiqué dans le paquet 8, comme cela a été le cas pour le paquet 9.

Claims (12)

  1. Méthode de traitement d’un paquet par un commutateur physique de réseau de communications électroniques, la méthode comprenant :
    La réception par le commutateur d’un paquet ;
    La détermination par le commutateur d’un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
    En fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, l’application par le commutateur d’une action sur le paquet.
  2. Méthode selon la revendication 1, dans laquelle la détermination de l’action à appliquer sur le paquet et/ou l’au moins une valeur d’entrée obtenue à partir du paquet et/ou l’opération ou la pluralité d’opérations sont fonction d’au moins une valeur de déclenchement obtenue par le commutateur à partir du paquet.
  3. Méthode selon l’une des revendications précédentes dans laquelle la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du premier ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i; et/ou
    la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du deuxième ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i.
  4. Méthode selon l’une des revendications précédentes dans laquelle chaque table de correspondance LUTicorrespondant à une des opérations parmi la pluralité d’opérations représente des correspondances entre des valeurs d’entrée de la table LUTiet des valeurs de sortie de la table LUTi, les valeurs d’entrée de la table LUTisont représentées dans une première représentation de valeur réelle RVR1,icodée sur un premier ensemble de bits EB1,1,icomprenant un premier sous-ensemble de bits SEB1,1,ireprésentant une partie entière et un deuxième sous-ensemble de bits SEB1,2,ireprésentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle RVR2,icodée sur un deuxième ensemble de bits EB2,icomprenant un premier sous-ensemble de bits SEB2,1,ireprésentant une partie entière et un deuxième sous-ensemble de bits SEB2,2,ireprésentant une partie décimale.
  5. Méthode selon la revendication 4 dans laquelle le ou les opérations parmi la pluralité d’opérations qui ont comme entrées l’au moins une valeur d’entrée correspondent à des tables de correspondance LUTidont les valeurs de sortie sont représentées dans des secondes représentations de valeur réelle RVR2,i.
  6. Méthode selon l’une des revendications précédentes dans laquelle au moins une valeur de sortie d’une table de correspondance correspondant à l’une des opérations parmi l’opération ou la pluralité d’opérations est adaptée en ajoutant ou en retranchant une valeur afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i.
  7. Méthode selon l’une des revendications précédentes dans laquelle les opérations ne correspondant pas à une table de correspondance sont des opérations parmi l’addition, la multiplication, la permutation, décalage de bits à gauche, décalage de bits à droite.
  8. Méthode selon l’une des revendications précédentes dans laquelle le deuxième ensemble de bits sur lequel est codée la seconde représentation de valeur réelle comprend un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits, et dans laquelle le résultat de l’application d’une opération ou d’une pluralité d’opérations se base sur l’information.
  9. Méthode selon la revendication 8 dans laquelle le résultat d’une opération suivante parmi la pluralité d’opérations se base sur l’information, ladite opération suivante étant exécutée après l’au moins une opération correspondant à une table de correspondance.
  10. 10. Méthode selon l’une des revendications précédentes dans laquelle le premier ensemble de bits sur lequel est codée la première représentation de valeur réelle comprend un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits.
  11. 11. Programme informatique comportant des instructions pour la mise en œuvre du procédé selon l’une des revendications précédentes, lorsque ces instructions sont exécutées par un processeur.
  12. 12. Commutateur physique de réseau de communications électroniques, le commutateur comprend :
    - un port d’entrée relié à un réseau de communications électroniques;
    - un processeur ; et
    - une mémoire stockant des instructions, de sorte que lorsque ces instructions sont exécutées par le processeur, elles configurent le commutateur pour:
    réceptionner via le port d’entrée un paquet ;
    déterminer un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
    en fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, appliquer d’une action sur le paquet.
FR2200326A 2022-01-14 2022-01-14 Support de calculs sur nombres reels au niveau des commutateurs physiques Pending FR3131995A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR2200326A FR3131995A1 (fr) 2022-01-14 2022-01-14 Support de calculs sur nombres reels au niveau des commutateurs physiques
PCT/EP2022/085309 WO2023134934A1 (fr) 2022-01-14 2022-12-12 Support de calculs sur nombres reels au niveau des commutateurs physiques

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2200326A FR3131995A1 (fr) 2022-01-14 2022-01-14 Support de calculs sur nombres reels au niveau des commutateurs physiques
FR2200326 2022-01-14

Publications (1)

Publication Number Publication Date
FR3131995A1 true FR3131995A1 (fr) 2023-07-21

Family

ID=81927710

Family Applications (1)

Application Number Title Priority Date Filing Date
FR2200326A Pending FR3131995A1 (fr) 2022-01-14 2022-01-14 Support de calculs sur nombres reels au niveau des commutateurs physiques

Country Status (2)

Country Link
FR (1) FR3131995A1 (fr)
WO (1) WO2023134934A1 (fr)

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JOÃO M P CARDOSO ET AL: "Compiling for reconfigurable computing", ACM COMPUTING SURVEYS, ACM, NEW YORK, NY, US, US, vol. 42, no. 4, 23 June 2010 (2010-06-23), pages 1 - 65, XP058090587, ISSN: 0360-0300, DOI: 10.1145/1749603.1749604 *
JOSE MATTHEWS ET AL: "InREC: In-network REal Number Computation", 2021 IFIP/IEEE INTERNATIONAL SYMPOSIUM ON INTEGRATED NETWORK MANAGEMENT (IM), IFIP, 17 May 2021 (2021-05-17), pages 358 - 366, XP033935394 *
KUNZE IKE ET AL: "Investigating the Applicability of In-Network Computing to Industrial Scenarios", 2021 4TH IEEE INTERNATIONAL CONFERENCE ON INDUSTRIAL CYBER-PHYSICAL SYSTEMS (ICPS), IEEE, 10 May 2021 (2021-05-10), pages 334 - 340, XP033937388, DOI: 10.1109/ICPS49255.2021.9468247 *
M. JOSE ET AL.: "InREC: In-network REal Number Computation", LES ACTES DE LA CONFÉRENCE 2021 IFIP/IEEE INTERNATIONAL SYMPOSIUM ON INTEGRATED NETWORK MANAGEMENT (IM
SARVAN CAGLA ET AL: "Implementation of ANN Training Module on Field Programmable Gate Arrays", 2019 INNOVATIONS IN INTELLIGENT SYSTEMS AND APPLICATIONS CONFERENCE (ASYU), IEEE, 31 October 2019 (2019-10-31), pages 1 - 6, XP033682537, DOI: 10.1109/ASYU48272.2019.8946350 *

Also Published As

Publication number Publication date
WO2023134934A1 (fr) 2023-07-20

Similar Documents

Publication Publication Date Title
WO2017137689A1 (fr) Procédé et dispositif d'anonymisation de données stockées dans une base de données
EP0546624A1 (fr) Système de traitement de données opérant avec une fonction non linéaire par morceaux
EP0608174A1 (fr) Systeme de codage-décodage prédictif d'un signal numérique de parole par transformée adaptative à codes imbriqués
EP0542585B1 (fr) Procédé de quantification d'un filtre prédicteur pour vocodeur à très faible débit
EP0511095B1 (fr) Procédé et dispositif de codage-décodage d'un signal numérique
EP0372613A1 (fr) Procédé de rétropropagation d'erreurs et structure de réseau de neurones
EP3123721B1 (fr) Systeme et procede de traitement de donnees
WO2023109294A1 (fr) Procédé et appareil d'apprentissage conjoint d'un modèle de traitement automatique des langues sur la base d'une protection de la confidentialité
EP2391052A1 (fr) Procédé d'évaluation d'une fonction et dispositif associé
EP0020220A1 (fr) Dispositif de décodage binaire et système de transmission comportant un tel dispositif
FR2730881A1 (fr) Systeme pour estimer des signaux recus sous forme de signaux melanges
WO2023134934A1 (fr) Support de calculs sur nombres reels au niveau des commutateurs physiques
WO2012004321A1 (fr) Procédé de détermination d'au moins un paramètre d'un code correcteur d'erreurs mis en œuvre en émission, dispositif et programme d'ordinateur correspondants
FR3062499A1 (fr) Procede de reduction de la taille d'une base de donnees repartie de type chaine de blocs, dispositif et programme correspondant
EP0401927A1 (fr) Méthode d'apprentissage, réseau de neurones et ordinateur pour simuler ledit réseau de neurones
FR3094104A1 (fr) Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie
FR2700032A1 (fr) Procédé de détection des erreurs d'exécution d'un logiciel.
CN114785701A (zh) 光传送网流量预测方法、装置、电子设备及存储介质
EP3857810B1 (fr) Procédé cryptographique de comparaison sécurisée de deux données secrètes x et y
FR2811169A1 (fr) Procede et dispositif de decodage et systemes les mettant en oeuvre
EP1355449B1 (fr) Procédé et système de détermination des paramètres de fonctionnement d'un réseau de transmission d'informations pour créer, dans ce réseau, un réseau virtuel
FR2655444A1 (fr) Reseau neuronal a circuits neuronaux electroniques a apprentissage de coefficients, et procede d'apprentissage.
WO2022123172A1 (fr) Procédés de détermination d'une structure anonyme de données, procédés de comptage de données, dispositif et système pour la mise en œuvre de tels procédés
EP4002223A1 (fr) Procédé de mise à jour d'un réseau de neurones artificiel
CN116205668A (zh) 一种用户留存率预测方法及装置

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20230721