Brevet FR3072233A1 — publié le 20190412

PROCEDE DE GENERATION DE REQUETES POUR LA SEGMENTATION DE LA SURVEILLANCE D'UN RESEAU D'INTERCONNEXION ET MATERIEL ASSOCIE [0001] L'invention concerne le domaine de la surveillance de réseau et plus particulièrement de la génération de requêtes informatiques pouvant être utilisées notamment dans la surveillance des équipements d'un réseau d'interconnexion. L'invention propose un procédé de génération de requêtes, le dispositif permettant la génération de telles requêtes, un système de surveillance intégrant ce dispositif ainsi qu'un procédé de surveillance mettant en oeuvre ce système. [Art antérieur [0002] Le calcul haute performance, aussi appelé HPC (High Performance Computing en terminologie anglo-saxonne) se développe pour la recherche universitaire comme pour l'industrie, notamment dans des domaines techniques tels que l'aéronautique, l'énergie, la climatologie et les sciences de la vie. Ces calculs sont généralement mis en oeuvre sur des réseaux d'interconnexion appelés clusters. L'objectif de ces clusters est de dépasser les limites du matériel existant en mutualisant des ressources pour permettre l'exécution parallélisée d'instructions et l'agrégation de capacité mémoire et de disque. [0003] Un cluster, aussi appelé réseau d'interconnexion, est un ensemble de moyens de calcul (aussi appelés noeuds) interconnectés pouvant réaliser des opérations communes. Les clusters sont constitués d'un grand nombre de noeuds (typiquement plusieurs milliers), ces derniers étant interconnectés, par exemple de façon hiérarchique, par des commutateurs (typiquement plusieurs centaines), appelés switch en terminologie anglo-saxonne. Les réseaux ainsi constitués peuvent comprendre plusieurs dizaines milliers de ports. Chaque noeud est par exemple un serveur, un ordinateur ou plus généralement une machine. [0004] La taille des clusters augmente de jour en jour. Afin de permettre le contrôle et la maintenance en condition opérationnelle des clusters de calcul, les logiciels de gestion réseau doivent donc non seulement pouvoir traiter de gros volumes de données, mais aussi pouvoir remonter les anomalies rapidement. Ainsi, la surveillance et le contrôle d'un cluster, en particulier des commutateurs, sont typiquement réalisés de façon centralisée par un noeud dédié, appelé noeud d'administration. Un gestionnaire réseau (aussi appelé « Subnet [0556-BUL L15] 2 Manager ») peut surveiller via ce noeud d'administration le réseau. Le gestionnaire réseau peut en outre utiliser des agents de gestion de sous-réseau (SMA - Subnet management agent en terminologie anglo-saxonne) associé à chaque commutateur. Les SMA communiquent des changements, tels que les nouvelles connexions, les déconnexions et la 5 modification de l'état du port au gestionnaire réseau (cf. « InfinibandTM Architecture Volume 1 Release 1.3 »). En outre, une défaillance matérielle dans un des commutateurs ou des noeuds ayant une influence directe sur les performances d'un cluster, il est également nécessaire de surveiller l'état de fonctionnement du matériel dans un cluster pour, le cas échéant, alerter un administrateur d'un problème potentiel de matériel. 10 [0005] Néanmoins, une telle surveillance de cluster, et notamment des défaillances matérielles, nécessite la manipulation de gros volumes de données générés par des milliers de noeud et de commutateurs. Une possibilité pour réduire la consommation des ressources tout en proposant une surveillance plus performante est de diviser le réseau en plusieurs ensembles disjoints, chacun de ceux-ci étant surveillé par une entité logicielle dédiée. Ainsi, il 15 existe des procédés pour la segmentation (ou découvertes partielles), d'un réseau d'interconnexion. Ainsi, de façon à subdiviser les réseaux, les gestionnaires réseau peuvent utiliser des tables de routage calculées au moment de l'initialisation du réseau. Ces tables peuvent comporter des identifiants de type LID (Local Identifier en terminologie anglo-saxonne) mais dans ce cas tous les ports d'un même commutateur partagent le même LID ou 20 des identifiants de type GID (Global Identifier en terminologie anglo-saxonne) composé d'un préfix et d'un identifiant de port GUID (Global unique identifiers en terminologie anglo-saxonne). Afin d'assurer des performances optimales, les tables de routages doivent être recalculées chaque fois que la topologie change ou que des défaillances importantes surviennent. Une autre solution est de mettre en place des clés de gestion unique de type 25 PKey (Partition Key). Néanmoins, les différents ports de deux partitions ne sont pas en capacité de travailler ensemble sur une même problématique. Ainsi, les solutions existantes entrainent une réduction de l'envergure du réseau d'interconnexion ou nécessitent l'utilisation de tables de routage. [0006] Dans les clusters (et notamment les systèmes Infiniband ou Omnipath, Infiniband et 30 OmniPath sont aussi des marques), les indications définissant un chemin entre un équipement donné et un équipement de référence portent le nom de chemin de routes directes (Direct Route path en terminologie anglo-saxonne). L'équipement de référence est typiquement un noeud d'administration. Selon la topologie de l'infrastructure informatique, il peut y avoir plusieurs chemins de routes directes entre un équipement donné et un équipement de référence. En d'autres termes, un chemin de routes directes décrit les liens [0556-BUL L15] 3 successifs qu'un paquet de donnée émis par l'équipement de référence doit utiliser pour atteindre un équipement donné. Il s'exprime en une suite de références de port de sortie de commutateurs que le paquet doit utiliser pour atteindre sa destination. Les chemins de routes directes entre un équipement de référence et d'autres équipements sont généralement établis 5 lors de la découverte de l'infrastructure élémentaire par le gestionnaire réseau. Une telle découverte utilise généralement des algorithmes classiques d'exploration d'arbres. Néanmoins, l'utilisation d'un ensemble de chemin de routes directes pour cibler un ensemble de ports serait un travail fastidieux consommant un temps important car la définition d'un ensemble de ports pourrait nécessiter des milliers de lignes de commande de type routes 10 directes. [0007] Ainsi, il existe un besoin pour de nouveaux procédés capables de rapidement créer des sous-ensembles de réseau d'interconnexion non disjoints et pouvant être surveillés par des unités distinctes sans redondance de façon à permettre la surveillance rapide de gros volumes de données. 15 1Problème techniquel [0008] L'invention a donc pour but de remédier aux inconvénients de l'art antérieur. En particulier, l'invention a pour but de proposer un procédé capable de rapidement subdiviser un réseau d'interconnexion en plusieurs ensembles de ports, correspondant à des portions du 20 réseau d'interconnexion, de façon à pouvoir confier la surveillance à plusieurs unités indépendantes, chacune se chargeant d'une portion du réseau. [0009] L'invention a en outre pour but de proposer un système de surveillance, plus particulièrement de surveillance de défaillances matérielles, d'un réseau d'interconnexion capable de suivre indépendamment plusieurs ensembles de ports du réseau d'interconnexion. 25 [0556-BUL L15] 4 JBrève description de I'inventionl [0010] A cet effet, l'invention porte sur un procédé de génération d'une requête, à partir d'une instruction en langage formel définissant un ensemble de ports d'un réseau 5 d'interconnexion, ladite requête comportant une commande d'adressage pour chacun des ports définis dans l'instruction, ledit procédé comportant les étapes suivantes : - réception, par un module de communication, d'une instruction en langage formel définissant un ensemble de ports, - traitement, par un module de traitement, de l'instruction en langage formel de façon à 10 générer un ensemble de nombres codés sur au moins un octet, chaque nombre comportant des bits de position, chacun des bits de position permettant d'identifier un port et au moins un bit d'autorisation, l'au moins un bit d'autorisation permettant de définir des droits d'accès sur les ports, et - codage, par un module de codage, de l'ensemble de nombres codés sur au moins un 15 octet de façon à générer la requête, ladite requête comportant la commande d'adressage pour chaque port de l'ensemble de ports du réseau d'interconnexion. [0011] Ainsi, la présente invention permet de générer une requête pouvant être utilisée pour segmenter un réseau d'interconnexion (de type InfiniBand ou OmniPath) en plusieurs ensembles de plus petite taille. Ce procédé permet de générer à partir d'une simple instruction 20 formelle un ensemble de plusieurs milliers de commandes d'adressage de façon à ne cibler que l'ensemble de ports souhaités. Une telle requête peut par exemple être utilisée pour mettre en place une surveillance ciblée d'une portion d'un réseau d'interconnexion via des dispositifs de surveillance distribués. En effet, de façon préférée, l'ensemble des ports définis par l'instruction en langage formel correspond à un périmètre restreint du réseau 25 d'interconnexion. [0012] Le procédé met en oeuvre un ensemble de nombres codés sur au moins un octet. Ainsi, il n'est pas nécessaire de mettre en place ou de gérer des tables de routage plus lourdes en termes de mémoire qu'une série de nombre. Les informations permettant d'établir les liens entre des ports de commutateurs et des noeuds sont généralement stockées dans 30 des tables de routage et/ou dans une base de données de configuration de l'infrastructure informatique. Ici, l'utilisation de chemin de routes directes permet de s'affranchir de l'utilisation de telles tables de routage. Ce procédé permet donc de définir de manière simple et compacte un ensemble de routes par lesquelles l'exploration du réseau est autorisée. Ce faisant, on peut donc définir facilement des ensembles qui pourront être surveillés par des [0556-BUL L15] 5 entités logicielles dédiées. Une découverte réseau mettant en oeuvre les règles définies par ce procédé peut ensuite être effectuée. [0013] Selon d'autres caractéristiques optionnelles du procédé : 5 - le réseau d'interconnexion comporte une pluralité de niveaux et l'ensemble de nombres codés sur au moins un octet comporte au moins un nombre codé sur au moins un octet pour chaque niveau du réseau d'interconnexion. De façon préférée, il comporte entre un et quatre nombres codés sur au moins un octet pour chaque niveau du réseau d'interconnexion. De façon plus préférée, il comporte un seul nombre codé sur au moins un octet pour chaque 10 niveau du réseau d'interconnexion. Ainsi, tous les ports d'un niveau sont gérés avec une quantité restreinte de nombres codés occupant ainsi un espace mémoire très réduit notamment en comparaison aux clés de partition ou aux tables de routage. - l'ensemble de nombres comporte entre deux et seize nombres codés sur au moins un octet. En outre, les nombres codés sur au moins un octet, sont de préférence des nombres codés 15 sur quatre à huit octets, de façon encore plus préférée sur huit octets. Ainsi, il n'est pas nécessaire dans le cadre du procédé selon l'invention d'attribuer une clé à tous les ports constituant le réseau d'interconnexion ni de mettre en oeuvre des tables de routage complexes. Il suffit seulement de quelques nombres ne représentant chacun que quelques octets pour définir un ensemble de ports d'un réseau d'interconnexion comportant plusieurs 20 milliers de ports. - l'instruction en langage formel comporte une pluralité de nombres et de symboles et l'étape de traitement, comporte les sous étapes suivantes : analyse syntaxique de l'instruction en langage formel, comparaison de chaque symbole de l'instruction en langage formel de façon séquentielle à une liste mémorisée pour segmenter l'instruction en une pluralité de portions, 25 chaque portion correspondant à un niveau du réseau d'interconnexion, transformation de chaque portion en un nombre codé sur au moins un octet, enregistrement de chacun des nombres codés sur au moins un octet, et agrégation des nombres codés sur au moins un octet de façon à former un ensemble de nombres codés sur au moins un octet. Une telle étape de transformation est simple à mettre en oeuvre. 30 - lors de l'étape de codage la position d'un des bits de position dans le nombre codé sur au moins un octet est indicatrice d'un numéro de port tandis que la valeur de ce bit de position est indicatrice de la prise en compte ou non dudit port lors de l'établissement de la requête. Ainsi, tous les ports d'un commutateur peuvent être pris en compte avec un seul et même [0556-BUL L15] 6 nombre. En outre, un même nombre peut avantageusement être appliqué à tous les commutateurs d'un même niveau. - lors de l'étape de codage les valeurs des bits de position permettent de définir un ou des ports concernés qui seront pris en compte lors de l'établissement de la requête et la valeur de 5 l'au moins un bit d'autorisation permet de définir si le ou les ports concernés feront l'objet d'une destination par une commande d'adressage ou bien s'ils seront seulement traversés. De façon préférée, le nombre codé sur au moins un octet comporte un bit d'autorisation. [0014] L'invention porte en outre sur dispositif générateur de requête configuré pour 10 générer, à partir d'une instruction en langage formel définissant un ensemble de ports d'un réseau d'interconnexion, une requête comportant une commande d'adressage pour chacun des ports définis dans l'instruction en langage formel, ledit dispositif comportant : - un module de communication apte à recevoir une instruction en langage formel définissant un ensemble de ports, 15 - un module de traitement apte à traiter l'instruction en langage formel de façon à générer un ensemble de nombres codés sur au moins un octet, chaque nombre comportant des bits de position, chacun des bits de position permettant d'identifier un port et au moins un bit d'autorisation, l'au moins un bit d'autorisation permettant de définir des droits d'accès sur les ports ; 20 - un module de codage apte à coder l'ensemble de nombres codés sur au moins un octet de façon à générer une requête, ladite requête comportant la commande d'adressage pour chaque port de l'ensemble de ports du réseau d'interconnexion. [0015] Avantageusement, le dispositif générateur de requête selon l'invention est apte à recevoir l'instruction depuis un dispositif client et à envoyer la requête à un système de 25 surveillance d'un réseau d'interconnexion. [0016] L'invention porte en outre sur un système de surveillance d'un réseau d'interconnexion comportant un dispositif selon l'invention. Un tel système pourrait permettre de surveiller le réseau en un temps plus réduit et en nécessitant des ressources plus réduites 30 que pour une surveillance globale de tous le réseau par une seule unité. De plus, les avantages conférés par ce système augmentent avec la taille du réseau. [0556-BUL L15] 7 [0017] L'invention porte en outre sur un procédé de surveillance d'un réseau d'interconnexion mettant en oeuvre un système de surveillance selon l'invention, ledit procédé surveillance comportant les étapes suivantes : - Réception d'une instruction en langage formel définissant un ensemble de ports 5 correspondant à un périmètre restreint du réseau d'interconnexion, - Génération, à partir de l'instruction en langage formel, d'une requête comportant une commande d'adressage pour chacun des ports définis dans l'instruction en langage formel, - Transmission de la requête à un module de surveillance de périmètre restreint apte à 10 recevoir des statuts matériels de l'ensemble de ports du périmètre restreint de la surveillance, - Requête de valeurs de statuts matériels par le module de surveillance auprès des ports correspondant au périmètre restreint du réseau d'interconnexion, - Réceptions des valeurs de statuts matériels par le module de surveillance, et 15 - Enregistrement des valeurs de statuts matériels par le module de surveillance. [0018] Avantageusement, le procédé de surveillance comprend en outre les étapes suivantes : - réception de valeurs de statuts matériels provenant d'une pluralité de modules de 20 surveillance de périmètre restreint, et - enregistrement des valeurs de statuts matériels, et - agrégation des valeurs de statuts matériels provenant d'une pluralité de modules de surveillance. [0019] La présente invention concerne un dispositif et un procédé permettant de segmenter 25 un réseau d'interconnexion en plusieurs sous-ensembles de plus petite taille afin de pouvoir mettre en place des dispositifs de surveillance distribués. [0020] Au moins un des statuts matériels est sélectionné parmi : l'état de l'alimentation électrique, les valeurs de tension au niveau de la carte, les températures internes, l'état du ventilateur, les données environnementales et opérationnelles de l'affichage et les versions du 30 logiciel (firmware en terminologie anglo-saxonne) du commutateur. [0021] Selon un autre aspect, l'invention porte également sur un support lisible par un ordinateur ayant un code programme stocké sur celui-ci qui, quand il est exécuté par une [0556-BUL L15] 8 machine, amène la machine à effectuer le procédé de génération de requête et/ou le procédé de surveillance selon l'invention. [0022] D'autres avantages et caractéristiques de l'invention apparaitront à la lecture de la 5 description suivante donnée à titre d'exemple illustratif et non limitatif, en référence aux Figures annexées qui représentent : - Figure 1, un exemple de topologie de cluster associé à un système de surveillance selon l'invention ; - Figure 2, une représentation schématique d'un procédé de génération de requête 10 selon l'invention ; - Figures 3A et 3B, schématiquement une suite de transformations selon le procédé de génération selon l'invention permettant la transformation d'une instruction en langage formel désignant un ensemble de ports, en une requête comportant la commande d'adressage pour chaque port de l'ensemble de ports. 15 - Figure 4, une représentation schématique de certaines étapes mises en oeuvre conformément à l'invention lors du traitement de l'instruction en langage formel. - Figure 5, une représentation schématique de certaines étapes mises en oeuvre conformément à l'invention lors du procédé de surveillance. 20 JDescription de I'inventionl [0023] Dans la suite de la description, par « texte de langage formel » ou « langage formel », on entend au sens de l'invention une donnée textuelle structurée par un modèle de données prédéfini ou organisée de manière prédéfinie. Le texte en langage formel n'est pas 25 un code informatique mais respecte une certaine forme permettant son interprétation par le générateur de requête. La forme devant être respectée peut être librement choisie lors de la configuration du générateur de requête selon l'invention [0024] On entend par « fichier de configuration » au sens de l'invention, un fichier comprenant les informations nécessaires à la mise en oeuvre du procédé selon l'invention. 30 Les fichiers sont accessibles aux différents modules des dispositifs et systèmes selon l'invention. [0556-BUL L15] 9 [0025] L'expression « accès à un fichier de configuration » au sens de l'invention correspond aux actions nécessaires pour accéder à un fichier sur un support de stockage local, ou en le téléchargeant ou par diffusion directe (streaming), depuis un stockage distant, via un protocole web ou un accès à une base de données. Il s'agit en général d'un chemin 5 d'accès au fichier précédé éventuellement d'un protocole d'accès (comme http://, file://). [0026] Les termes ou expressions « application », « logiciel », « code de programme », et « code exécutable » signifient toute expression, code ou notation, d'un ensemble d'instructions destinées à provoquer un traitement de données système pour effectuer une fonction particulière directement ou indirectement (e.g. après une opération de conversion 10 vers un autre code). Les exemples de code de programme peuvent inclure, sans s'y limiter, un sous-programme, une fonction, une application exécutable, un code source, un code objet, une bibliothèque et/ou tout autre séquence d'instructions conçues pour l'exécution sur un système informatique. [0027] L'expression « interface homme-machine » au sens de l'invention correspond à tout 15 élément permettant à un être humain de communiquer avec un ordinateur en particulier et sans être exhaustif, un clavier et des moyens permettant en réponse aux ordres entrés au clavier d'effectuer des affichages et éventuellement de sélectionner à l'aide de la souris ou d'un pavé tactile des éléments affichés sur l'écran. [0028] Par « seuil prédéterminé maximum », on entend au sens de l'invention une valeur 20 maximale de statuts matériels associé à chaque port, commutateur ou noeud permettant un bon fonctionnement du matériel. Par exemple, cela correspond aux limites maximales acceptables de température. Ces limites peuvent être réelles ou hypothétiques et correspondent généralement un niveau au-delà duquel des dysfonctionnements peuvent survenir et ayant pour conséquence un arrêt de fonctionnement du matériel, une baisse de la 25 durée de vie des équipements ou bien à tout le moins des baisses de qualités de service. [0029] Le terme « dysfonctionnement » au sens de l'invention correspond à la survenue d'un incident matériel ou d'une congestion sur le réseau d'interconnexion. [0030] Dans la suite de la description, les mêmes références sont utilisées pour désigner les 30 mêmes éléments. [0031] Généralement, dans le cadre de la mise en place d'un réseau d'interconnexion, au moment de l'initialisation, un gestionnaire réseau 800 pour la gestion du réseau [0556-BUL L15] 10 d'interconnexion commence une phase de découverte où il réalise, via un noeud d'administration 31, un balayage du réseau d'interconnexion afin de découvrir tous les commutateurs et les noeuds. Ensuite, le module de gestion de réseau procède à l'affectation d'identifiant par exemple de type LID ou GID, à la configuration des commutateurs, aux 5 calculs d'un tableau de routage et à la configuration des ports. À ce stade, un réseau d'interconnexion 1 est prêt et prêt à l'emploi. Une fois que le réseau est configuré, le gestionnaire réseau peut surveiller tout changement sur le réseau (e.g. un périphérique est ajouté ou un lien est supprimé). Les noeuds sont reliés les uns aux autres par des commutateurs (appelés switch en terminologie anglo-saxonne), par exemple de façon 10 hiérarchique. [0032] Dans l'exemple illustré sur la figure 1, le réseau d'interconnexion 1 comprend ici un ensemble de noeuds référencés 30 dont un noeud d'administration 31, ainsi que les commutateurs 21, 22, 23. Chaque commutateur a ici six ports bidirectionnels numérotés 1 à 6. les noeuds 30 sont connectés à des commutateurs 21 de premier niveau qui sont eux-mêmes 15 reliés à des commutateurs 22 de deuxième niveau qui sont à leur tour reliés à des commutateurs 23 de troisième niveau. Les commutateurs 20, c'est-à-dire 21, 22 et 23, routent des messages de leurs sources vers leurs destinations notamment selon des tables de routages programmées lors de l'initialisation du réseau d'interconnexion. A ces fins et comme représenté dans la figure 1, un port 10 est généralement associé, dans chaque commutateur 20 20, à une ou plusieurs destinations. [0033] Les commutateurs 21 sont chacun connectés à trois noeuds différents. Les commutateurs 21 sont en outre connectés aux commutateurs 22. Chaque noeud est donc ici connecté à chacun des autres noeuds via au plus cinq commutateurs. A titre d'illustration, le noeud 30a est connecté au noeud 30b via les commutateurs 21a, 22a, 23a, 22b et 21b. Plus 25 précisément, le port de sortie 1 du noeud 30a est connecté au port 2 du commutateur 21a dont le port 4 est connecté au port 1 du commutateur 22a dont le port 6 est connecté au port 4 du commutateur 23a dont le port 1 est connecté au port 4 du commutateur 22b dont le port 3 est connecté au port 4 du commutateur 21b dont le port 1 est connecté au port d'entrée du noeud 30b. Un exemple de commande d'adressage selon les routes directes serait dans ce 30 cas une commande de type : -D 01 4 6 1 31 [0034] Selon un mode de réalisation un client 600 peut accéder au générateur de requête 300. Par exemple, le générateur de commande d'adressage 300 peut être mis en oeuvre en [0556-BUL L15] 11 tant que "front-end" auquel on peut accéder par clients pour générer des requêtes à partir d'entrées de texte en langage formel. Dans l'exemple représenté sur la Fig. 1, un client 600 accède au générateur de commande d'adressage 300. Par exemple, le client peut exécuter une application cliente qui est configurée pour communiquer avec le générateur de requêtes 5 300. L'application cliente peut être un navigateur ou une autre application de communication basée sur le client. En réponse à l'accès par le client 600, le générateur de requêtes 300 peut générer une interface utilisateur qui peut être envoyée au client 600. [0035] En outre, le réseau d'interconnexion 1 représenté en figure 1 est associé à deux modules de surveillance 700 chacun étant en charge d'une portion du réseau 10 d'interconnexion. Lesdites portions 11 a, 11 b du réseau d'interconnexion étant constituée d'un ensemble 11 de ports. [0036] La figure 2 est un organigramme illustrant un exemple de procédé de génération de requêtes selon l'invention. Ce procédé permet la génération d'une requête 231 comportant 15 une commande d'adressage 232 pour chacun des ports 10 définis par une instruction 211 en langage formel. La requête peut être plus particulièrement une requête en langage informatique et de façon préférée c'est une requête comportant une pluralité de commandes de routes directes 232. [0037] Comme présenté en figure 2, le procédé comporte une étape de réception 110 20 d'une instruction 211 en langage formel définissant un ensemble 11 de ports. [0038] L'instruction 211 en langage formel définit un ensemble 11 de ports d'un réseau d'interconnexion. Cet ensemble 11 de ports d'un réseau d'interconnexion peut comprendre plusieurs milliers de ports. De façon préférée, l'ensemble de ports défini par l'instruction en langage formel correspond à un périmètre restreint, ou portion, du réseau d'interconnexion. 25 Ces ensembles de ports sont représentés sur la figure 1 par les ensembles 11 a et 11 b où chaque ensemble comporte une pluralité de noeuds de calcul associés à une pluralité de commutateurs 20 comportant de nombreux ports. Ainsi, les noeuds de calcul 30 appartenant à deux ensembles différents sont aptes à communiquer entre eux contrairement à des ports comportant des clés de partitions différentes ou étant gérés par des gestionnaires de réseau 30 différents. [0039] Comme mentionné précédemment, cette instruction peut être reçue par un module de communication 310. Le procédé 100 peut commencer dans un état où un utilisateur, [0556-BUL L15] 12 utilisant un périphérique client, a accédé au dispositif de génération de requête 300 selon l'invention. Le dispositif 300 peut proposer une interface utilisateur sur le périphérique client 600. En conséquence, l'utilisateur est en mesure d'entrer l'instruction en langage formel dans une interface utilisateur. Le périphérique client envoie l'instruction en langage formel 211 au 5 dispositif 300 pour le traitement et la génération de requêtes. [0040] L'instruction 211 en langage formel peut comporter des nombres et des symboles. L'objectif étant que cette instruction soit rapide à générer par un utilisateur et qu'elle comporte toutes les informations pour permettre au dispositif de génération de requête 300 de générer les potentielles milliers de commandes d'adressage en routes directes permettant d'atteindre 10 l'ensemble des ports souhaités. [0041] A titre d'exemple, le langage formel peut utiliser les conventions suivantes : - Opérateur `[` : Début de liste de ports à surveiller, - Opérateur 1` : Fin de liste de ports à surveiller, - Opérateur `(` : Début de liste de ports à traverser sans surveiller, 15 - Opérateur `)` : Fin de liste de ports à traverser sans surveiller, - Opérateur `-` : Spécifie un intervalle, et - Opérateur `,' : Concaténation. [0042] Les conventions d'interprétation des symboles présentées ci-dessus le sont à titre 20 d'exemple seulement et tout en restant dans le cadre de l'invention certains symboles pourraient être modifiés et des symboles ayant de nouvelle fonctions pourraient également être ajoutés. Les symboles peuvent également correspondre à des opérateurs logiques. [0043] La figure 3A présente par exemple une instruction en langage formel telle que : 25 [1][20][1-38] [0044] Une telle instruction en langage formel a été écrite par l'utilisateur pour décrire le comportement suivant : - [1] : Les paquets sortent du port #1 en le surveillant (collecte de données pour ce port). Ils arrivent maintenant dans un commutateur 21. 30 - [20] : Les paquets sont autorisés à traverser seulement le port 20 et à collecter des données sur celui-ci. Aucun paquet n'est autorisé à sortir par des ports autres que le [0556-BUL L15] 13 port 20. Les paquets autorisés à traverser atteignent un ensemble de commutateurs 22. - [1-38] : Les paquets sont autorisés à traverser l'ensemble de commutateurs 22 à travers les ports 1 à 38 et à collecter des données sur ces derniers. Avec [1-38] on a 5 donc 38 ports théoriques possibles notamment il est possible d'avoir sur le commutateur un nombre inférieur de ports ayant une existence physique [0045] Pour des raisons de clarté et de concision, le port virtuel #0 des implémentations de chemin de routes directes des protocoles InfiniBand et OmniPath peut ne pas apparaitre pas 10 dans l'instruction en langage formel. [0046] La figure 3B présente un autre exemple d'instruction en langage forme telle que : (1)(1-18)[1-9,13] [0047] Une telle instruction en langage formel a été écrite par l'utilisateur pour décrire le comportement suivant : 15 - (1) : Les paquets sortent du port #1 sans le surveiller (aucune donnée n'est collectée pour ce port). Ils arrivent maintenant dans un commutateur 21. - (1-18) : Les paquets sont autorisés à traverser les ports 1 à 18 du commutateur S, aucune donnée n'étant collectée sur ces derniers. Aucun paquet n'est autorisé à sortir par des ports non listés dans cet intervalle. Les paquets autorisés à traverser 20 atteignent un ensemble de commutateurs 22. - [1-9,13] : Les paquets sont autorisés à traverser l'ensemble de commutateurs 22 à travers les ports 1 à 9 et 13 et à collecter des données sur ces derniers. [0048] Le procédé 100 selon l'invention comporte également une étape de traitement 120 25 de l'instruction 211 en langage formel de façon à générer un ensemble 221 de nombres 222 codés sur au moins un octet. Cette étape peut être mise en oeuvre par un module de traitement 320. [0049] Comme cela est présenté en figure 3A, chacun des nombres 222 comporte des bits de position 223 permettent d'identifier les ports. Notamment sur la figure 3A, le bit de position 30 223 pointé est le port #20 du deuxième nombre codé sur au moins un octet. La position d'un des bits de position dans le nombre 222 codé sur au moins un octet est indicatrice d'un numéro de port. Ainsi, une partie des bits correspond avantageusement aux numéros de ports [0556-BUL L15] 14 de commutateurs. Par exemple, comme mentionné, le bit de position 223 pointé est le port #20. [0050] En référence, aux figures 3A et 3B, le bit le plus à gauche sur le schéma est le bit #63 correspondant à un éventuel port #63 et le bit le plus à droite est le bit #0 correspondant 5 à un bit d'autorisation. Ainsi, chaque nombre 222 comporte également au moins un bit d'autorisation 224 permettant de définir des droits d'accès sur les ports. Par exemple, sur la figure 3A le bit d'autorisation 224 pointé est le bit d'autorisation du premier nombre codé sur huit octets.. Dans cet exemple, il y a un bit d'autorisation permettant de spécifier si le port sélectionné par l'intermédiaire des bits de position doit être traversé et surveillé (valeur bit 1) 10 ou seulement traversé (valeur bit 0). [0051] Les nombres 222 codés sur au moins un octet peuvent être avantageusement codés sur au moins quatre octets, de préférence ils sont codés sur huit octet. Ainsi, le nombre 222 codé peut également comprendre des bits non utilisés 225. En effet, sur la figure 3A, le nombre 222 est codé sur huit octets soit 64 bits. Etant donné qu'un commutateur 20 de 15 réseau d'interconnexion peut comprendre moins de 63 ports alors il est probable que le nombre 222 ne soit pas entièrement utilisé. [0052] La figure 4 représente un organigramme d'une étape de traitement selon l'invention. Dans ce cas, l'étape de traitement comporte une première étape d'analyse syntaxique 121 de l'instruction 211 en langage formel. Cela permet d'identifier les symboles pouvant être présent 20 dans l'instruction et identifier également les plages de ports concernées. [0053] Chaque symbole de l'instruction 211 en langage formel est notamment comparé 122 de façon séquentielle à une liste de symboles mémorisée pour segmenter l'instruction 211 en une pluralité de portions 212. Chaque portion 212 correspond avantageusement à un niveau du réseau d'interconnexion 1. La liste de symbole peut être mémorisée dans un fichier de 25 configuration. En référence à la figure 3B, les portions identifiées seraient (1) et (1-18) et [1- 9,13]. [0054] Une fois les portions identifiées, il y a transformation 123 de chaque portion 212 en un nombre 222 codé sur au moins un octet. Par exemple, la figure 3B montre trois nombres codés sur huit octets. Une fois générés, un nombre 222 codé sur au moins un octet est 30 enregistré 124 sur une mémoire. [0055] Dans le cadre du procédé, il peut y avoir alors une étape 126 de vérification que toutes les portions 212 ont été transformées en nombre codé sur au moins un octet. Si ce [0556-BUL L15] 15 n'est pas le cas, le procédé est répété depuis l'étape 123 et la portion non transformée subit l'étape de transformation 123. [0056] Enfin, il y a agrégation 125 des nombres 222 codés sur au moins un octet de façon à former un ensemble 221 de nombres codés sur au moins un octet. 5 [0057] Lors d'une étape de traitement d'une nouvelle instruction, de façon à encore accélérer la génération d'une requête, le procédé selon l'invention peut comporter en outre une étape de comparaison de chaque portion à des portions enregistrées sur une mémoire. Si une portion identique est identifiée dans la mémoire, alors l'étape de transformation 123 peut être remplacée par une utilisation du nombre 222 codé sur au moins un octet correspondant à 10 ladite portion enregistrée. [0058] Le procédé 100 selon l'invention comporte également une étape de codage 130 de l'ensemble 211 de nombres de façon à générer une requête 231 comportant au moins une commande d'adressage. Cette étape de codage peut être réalisée par un module de 15 codage 330 associé au dispositif de génération de requête selon l'invention. [0059] La requête 231 est de préférence une requête en langage informatique. Elle permet la génération d'une liste de chemin d'accès en route directe, ou commande d'adressage, à partir desdits nombres codés en sur au moins un octet. [0060] La liste de chemin d'accès est générée de préférence dans un langage informatique 20 permettant à un « système manager » d'accéder directement aux ports définis dans la l'instruction en langage formel (non informatique) réalisé par un utilisateur. De façon avantageuse, la requête comporte une commande d'adressage par port à surveiller et ladite commande d'adressage est une commande de type chemins de routes directes. [0061] Les figures 3A et 3B présentent des exemples de telles requêtes 231. Par 25 convention, il est admis qu'un chemin de routes directes commence toujours par l'identifiant 0. En outre, pour des raisons de clarté, il est supposé ici que chaque noeud ne comprend qu'un port d'entrée et de sortie ayant la référence 1. [0062] Les informations permettant d'établir les liens entre des ports de commutateurs et entre des ports de commutateurs et de noeuds sont généralement stockées dans des tables 30 de routage et/ou dans une base de données de configuration de l'infrastructure informatique. Ici, l'utilisation de chemin de routes directes permet de s'affranchir de l'utilisation de telles tables de routage. [0556-BUL L15] 16 [0063] Les différentes étapes du procédé selon l'invention peuvent être enregistrées sur un ou plusieurs fichiers de configuration auxquels un dispositif de génération de requête selon l'invention pourrait avoir accès. Le fichier ou les fichiers de configuration peuvent être codés en un grand nombre de langage de programmation. Par exemple, ils sont codés langage C. 5 [0064] Selon un autre aspect, l'invention porte sur un dispositif 300 générateur de requête, configuré pour générer une requête, à partir d'une instruction en langage formel définissant un ensemble de ports d'un réseau d'interconnexion. Le réseau d'interconnexion comporte généralement une pluralité de noeuds de calcul où chaque noeud comporte une 10 pluralité de ports permettant de les relier entre eux et à des commutateurs. La requête générée présente la particularité de comporter une commande d'adressage 232 pour chacun des ports définis dans l'instruction en langage formel. Le générateur de requête 300 est plus particulièrement un générateur de commande d'adressage. [0065] Comme cela est présenté en figure 1, le dispositif 300 générateur de requête 15 comporte un module de communication 310 apte à recevoir une instruction en langage formel définissant un ensemble de ports. Le module de communication 310 est configuré pour recevoir et transmettre des informations à des systèmes distants tels que des tablettes, des téléphones, des ordinateurs ou des serveurs et est ainsi apte à permettre la communication entre le dispositif 300 et un terminal distant, dont un client 600. Le module de communication 20 310 permet de transmettre les données sur au moins un réseau de communication et peut comprendre une communication filaire ou sans fil. L'interaction peut impliquer un logiciel applicatif utilisé par l'opérateur pour interagir avec le système selon l'invention. Le logiciel applicatif peut comporter une interface graphique permettant de faciliter une interaction avec un opérateur. Un opérateur peut alors agir sur le terminal distant de façon à générer une 25 instruction apte à être mise en oeuvre par le dispositif 300. De même, le dispositif 300 est apte à recevoir l'instruction 211 depuis un dispositif client et à envoyer la requête 231 à un système de surveillance 400 d'un réseau d'interconnexion. [0066] Le dispositif 300 générateur de requête comporte également un module de traitement 320 apte à traiter l'instruction 211 en langage formel de façon à générer un ensemble 221 de 30 nombres 222 codés sur au moins un octet ainsi qu'un module de codage 330 apte à coder l'ensemble de nombres codés sur au moins un octet de façon à générer une requête comportant une commande d'adressage pour chacun des ports de l'ensemble de ports. [0067] Ces modules 310, 320, 330 sont distincts sur la figure 1 mais l'invention peut prévoir divers types d'agencement comme par exemple un seul module cumulant l'ensemble des [0556-BUL L15] 17 fonctions décrites ici. De même, ces moyens peuvent être divisés en plusieurs cartes électroniques ou bien rassemblés sur une seule carte électronique. [0068] Lorsque l'on prête une action à un dispositif ou un module celle-ci est en fait effectuée par un microprocesseur du dispositif ou module commandé par des codes 5 instructions enregistrés dans une mémoire. Si l'on prête une action à une application, celle-ci est en fait effectuée par un microprocesseur du dispositif dans une mémoire duquel les codes instructions correspondant à l'application sont enregistrés. Lorsqu'un dispositif ou module émet ou reçoit un message, ce message est émis ou reçu par une interface de communication. Les mémoires évoquées dans cette invention peuvent correspondre à une 10 mémoire vive et/ou une mémoire de masse. La mémoire de masse peut- être un support tel qu'une carte mémoire, ou un disque dur hébergé par un serveur distant. [0069] Selon un autre aspect, l'invention porte sur un système 400 de surveillance d'un réseau d'interconnexion comportant un dispositif générateur de requête selon l'invention 15 ainsi que sur un procédé mettant en oeuvre ce système. De façon préférée, le procédé de surveillance selon l'invention est dédié à la surveillance de défaillances matérielles. Il permet donc de suivre les informations matérielles pouvant être transmises par les ports des commutateurs du réseau d'interconnexion. [0070] Un procédé de surveillance selon l'invention est présenté à la figure 5. Il comprend 20 les étapes suivantes : - réception 510 d'une instruction 211 en langage formel définissant un ensemble 11 de ports correspondant à un périmètre restreint du réseau d'interconnexion, - génération 520, à partir de l'instruction 211 en langage formel, d'une requête 231 comportant une commande d'adressage pour chacun des ports 10 définis dans 25 l'instruction 211 en langage formel, - transmission 530 de la requête 231 à un module de surveillance 700 de périmètre restreint apte à recevoir des statuts matériels de l'ensemble 11 de ports du périmètre restreint de la surveillance, - requête 540 de statuts matériels par le module de surveillance 700 de périmètre 30 restreint auprès des ports correspondant au périmètre restreint du réseau d'interconnexion, - réceptions 550 des valeurs de statuts matériels par le module de surveillance 700, et - enregistrement 560 des valeurs de statuts matériels par le module de surveillance 700. [0556-BUL L15] 18 [0071] De façon préférée, l'enregistrement 560 des valeurs de statuts matériels correspond à l'enregistrement des valeurs de statuts matériels ayant dépassées un seuil prédéterminé maximum. Ainsi, il n'y a pas encombrement de la mémoire avec des informations moins pertinentes. 5 [0072] Le procédé peut également comprendre une étape de transmission des valeurs de statuts matériels enregistrées par le module de surveillance. [0073] Dans le mode de réalisation décrit à la figure 5, la méthode de surveillance est mise en oeuvre en parallèle par trois modules de surveillance 700 de périmètre restreint. Cela permet d'alléger la charge soutenue par chacun des modules de surveillance 700 et donc 10 d'améliorer la performance du procédé. [0074] Lorsque plusieurs modules de surveillance de périmètre restreint sont mis en oeuvre, le procédé de surveillance d'un réseau d'interconnexion selon l'invention peut comprendre en outre la réception de valeurs de statuts matériels provenant d'une pluralité de modules de surveillance de périmètre restreint. Comme mentionné précédemment, avantageusement, 15 seules les valeurs de statuts matériels ayant dépassé un seuil prédéterminé maximum sont réceptionnées 570 et enregistrées 580. [0075] Les valeurs de statuts matériels, de préférence celles ayant dépassé un seuil prédéterminé maximum, sont agrégées 590 de façon à obtenir une vision globale du réseau d'interconnexion. Les valeurs de statuts matériels peuvent être avantageusement 20 sélectionnées parmi : l'état de l'alimentation électrique, les valeurs de tension au niveau de la carte, les températures internes (puces, contrôleur, ventilateur, carte...), l'état du ventilateur, les données environnementales et opérationnelles de l'affichage, les versions du logiciel du commutateur, les erreurs de câblage, des niveaux de congestion, les erreurs d'identifiants (LID...), les erreurs de connexion, les erreurs d'alimentation, les alertes de débit. 25 [0076] Ainsi, les procédés et matériel selon l'invention permettent de segmenter rapidement un ensemble de ports d'un réseau d'interconnexion de façon à par exemple à mettre en place une surveillance par périmètres dudit réseau d'interconnexion. En outre, le procédé de surveillance ainsi mis au point présente des performances améliorées par rapport aux systèmes classiques de tables de routage ou d'utilisation de clés de partition. 30 [0077] Tous ces avantages contribuent donc à réduire les temps de traitement de la surveillance, notamment matérielle, d'un réseau d'interconnexion et également à réduire les volumes de données gérés. [0556-BUL L15] REVENDICATIONS1. Procédé de génération d'une requête, à partir d'une instruction (211) en langage formel définissant un ensemble (11) de ports (10) d'un réseau d'interconnexion (1), ladite requête comportant une commande d'adressage (232) pour chacun des ports (10) définis dans l'instruction (211), ledit procédé comportant les étapes suivantes : réception (110), par un module de communication (310), d'une instruction (211) en langage formel définissant un ensemble (11) de ports, traitement (120), par un module de traitement (320), de l'instruction (211) en langage formel de façon à générer un ensemble (221) de nombres (222) codés sur au moins un octet, chaque nombre (222) comportant des bits de position (223), chacun des bits de position (223) permettant d'identifier un port et au moins un bit d'autorisation (224), l'au moins un bit d'autorisation (224) permettant de définir des droits d'accès sur les ports, et codage (130), par un module de codage (330), de l'ensemble (221) de nombres codés sur au moins un octet de façon à générer la requête (231), ladite requête (231) comportant la commande d'adressage (232) pour chaque port (10) de l'ensemble (11) de ports du réseau d'interconnexion (1). 2. Procédé de génération selon la revendication 1, caractérisé en ce que le réseau d'interconnexion (1) comporte une pluralité de niveaux et en ce que l'ensemble (221) de nombres codés sur au moins un octet comporte au moins un nombre codé sur au moins un octet (222) pour chaque niveau du réseau d'interconnexion. 3. Procédé de génération selon l'une des revendications 1 ou 2, caractérisé en ce que les nombres (222) codés sur au moins un octet, sont des nombres (222) codés sur huit octets. 4. Procédé de génération selon l'une quelconque des revendications 1 à 3, caractérisé en ce que l'ensemble (221) de nombres comporte entre deux et seize nombres (222) codés sur au moins un octet. 5. Procédé de génération selon l'une quelconque des revendications 1 à 4, caractérisé en ce que l'instruction (211) en langage formel comporte une pluralité de nombres et [0556-BUL L15] 20 de symboles et en ce que l'étape de traitement (120), comporte les sous étapes suivantes : analyse syntaxique (121) de l'instruction (211) en langage formel, comparaison (122) de chaque symbole de l'instruction en langage formel de 5 façon séquentielle à une liste mémorisée pour segmenter l'instruction (211) en une pluralité de portions (212), chaque portion (212) correspondant à un niveau du réseau d'interconnexion (1), transformation (123) de chaque portion (212) en un nombre (222) codé sur au moins un octet, 10 enregistrement (124) de chacun des nombres (222) codés sur au moins un octet, et agrégation (125) des nombres (222) codés sur au moins un octet de façon à former un ensemble (221) de nombres codés sur au moins un octet. 15 6. Procédé de génération selon l'une quelconque des revendications 1 à 5, caractérisé en ce que, lors de l'étape de codage (130), la position d'un des bits de position (223) dans le nombre (222) codé sur au moins un octet est indicatrice d'un numéro de port (10) tandis que la valeur de ce bit de position (223) est indicatrice de la prise en compte ou non dudit port (10) lors de l'établissement de la requête (231). 20 7. Procédé de génération selon l'une quelconque des revendications 1 à 6, caractérisé en ce que, lors de l'étape de codage (130), les valeurs des bits de position (223) permettent de définir un ou des ports concernés qui seront pris en compte lors de l'établissement de la requête (231) et en ce que la valeur de l'au moins un bit 25 d'autorisation (224) permet de définir si le ou les ports concernés feront l'objet d'une destination par une commande d'adressage (232) ou bien s'ils seront seulement traversés. 8. Dispositif générateur de requête (300) configuré pour générer, à partir d'une instruction 30 (211) en langage formel définissant un ensemble (11) de ports d'un réseau d'interconnexion (1), une requête (231) comportant une commande d'adressage pour chacun des ports définis dans l'instruction (211) en langage formel, ledit dispositif (300) comportant : [0556-BUL L15] 21 - un module de communication (310) apte à recevoir une instruction en langage formel définissant un ensemble (11) de ports, - un module de traitement (320) apte à traiter l'instruction (211) en langage formel de façon à générer un ensemble (221) de nombres (222) codés sur au moins un octet, 5 chaque nombre (222) comportant des bits de position (223), chacun des bits de position (223) permettant d'identifier un port et au moins un bit d'autorisation (224), l'au moins un bit d'autorisation (224) permettant de définir des droits d'accès sur les ports, et - un module de codage (330) apte à coder l'ensemble (221) de nombres codés sur 10 au moins un octet de façon à générer une requête (231), ladite requête (231) comportant la commande d'adressage (232) pour chaque port (10) de l'ensemble (11) de ports du réseau d'interconnexion (1). 9. Dispositif selon la revendication 8, caractérisé en ce qu'il est apte à recevoir 15 l'instruction (211) depuis un dispositif client (600) et à envoyer la requête à un système (400) de surveillance d'un réseau d'interconnexion. 10. Système (400) de surveillance d'un réseau d'interconnexion (1) comportant un dispositif (300) générateur de requêtes selon l'une des revendications 8 ou 9. 20 11. Procédé de surveillance (500) d'un réseau d'interconnexion (1) mettant en oeuvre un système de surveillance (400) selon la revendication 10, ledit procédé surveillance (500) comportant les étapes suivantes : Réception (510) d'une instruction (211) en langage formel définissant un 25 ensemble (11) de ports correspondant à un périmètre restreint du réseau d'interconnexion, Génération (520), à partir de l'instruction (211) en langage formel, d'une requête (231) comportant une commande d'adressage pour chacun des ports (10) définis dans l'instruction (211) en langage formel, 30 Transmission (530) de la requête (231) à un module de surveillance (700) de périmètre restreint apte à recevoir des statuts matériels de l'ensemble (11) de ports du périmètre restreint de la surveillance, Requête (540) de valeurs de statuts matériels par le module de surveillance (700) auprès des ports correspondant au périmètre restreint du réseau d'interconnexion, [0556-BUL L15] 22 Réceptions (550) des valeurs de statuts matériels par le module de surveillance (700), et Enregistrement (560) des valeurs de statuts matériels par le module de surveillance (700). 5 12. Procédé de surveillance d'un réseau d'interconnexion selon la revendication 11 caractérisé en ce qu'il comprend en outre les étapes suivantes: réception (570) de valeurs de statuts matériels provenant d'une pluralité de modules de surveillance de périmètre restreint, 10 enregistrement (580) des valeurs de statuts matériels, et agrégation (590) des valeurs de statuts matériels provenant d'une pluralité de modules de surveillance. 13. Procédé de surveillance d'un réseau d'interconnexion selon l'une des revendications 15 11 ou 12, caractérisé en ce qu'au moins un des statuts matériels est sélectionné parmi : l'état de l'alimentation électrique, les valeurs de tension au niveau de la carte, les températures internes, l'état du ventilateur, les données environnementales et opérationnelles de l'affichage et les versions du logiciel du commutateur. 20 [0556-BUL L15]