FR 2924553 A1 20090605 FR 0708461 A 20071204 PROCEDE POUR AMELIORER L'INTEGRITE DE MOYENS DE COMMUNICATION L'invention s'applique au domaine des communications sur des réseaux où une haute intégrité des données doit être garantie. Plus spécifiquement, l'invention s'applique particulièrement aux commutateurs de réseaux de transmission de données critiques pour des applications de gestion du vol d'un aéronef. II est classique dans un tel contexte d'associer à chaque trame de données transmise un code de contrôle dit CRC (Cyclic Redundancy Cycle ou Contrôle de redondance cyclique), généralement de 32 bits, et de vérifier à l'autre bout du canal de transmission que ce code est préservé. Le problème posé par cette technique connue est que la probabilité de détection d'une erreur de transmission sur le canal, fonction de la longueur du CRC, est malgré tout de 1/232. Même en effectuant une confirmation de la transmission par une redondance du canal, la probabilité de non détection reste de 10-6 par heure dans le cas d'un Ethernet à 100Mbs ou d'un bus AFDX (Avionics Full DupleX switched Ethernet). Cette valeur est généralement supérieure à celle requise pour la transmission de données critiques pour le vol ; c'est à dire toute donnée dont la valeur erronée est susceptible d'engager un scénario classé comme catastrophique car pouvant conduire à la perte de l'aéronef et de ses passagers. Des données telles que : altitude, vitesse, variables intervenant dans les commande de vol, quantité, flux ou température de carburant, etc...sont par exemple des informations qui, sous certaines conditions dépendant du système avion qui les utilisent, peuvent induire des réponses inappropriées du système pouvant conduire à de tels scenarios. Les normes de certifications des aéronefs utilisés en transport commercial exigent de démontrer que la probabilité d'occurrence des scenarios catastrophiques est inférieure à 10-9 par heure de vol. Les réseaux de communication embarqués faisant communiquer plusieurs de ces systèmes, sont amenés à véhiculer des flux d'informations prenant part à une quantité significative de tels scénarios. Pour les avions modernes dans lesquels de tels réseaux de communication sont utilisés il est admis de considérer le réseau de communication comme un système à part entière et de lui allouer des performances intrinsèques en terme d'intégrité des données véhiculées. Généralement, on convient de fixer le taux maximal de données erronées non détectées à une valeur également de 10"9 par heure de vol pour rendre un tel système de communication apte à véhiculer des informations critiques. Généralement, pour des raisons de disponibilité il est connu de dupliquer le réseau de communication et de rechercher un comportement de chaque réseau consistant à invalider les trames ou les flux de donnée erronés détectés voire le réseau lui même, en se reposant sur le second réseau redondant. On peut donc songer à invalider le canal de communication responsable du dépassement d'un seuil d'erreurs (ce qui suppose de détecter et de comptabiliser les erreurs) mais on ne peut démontrer que des erreurs se reproduisant de manière systématique pour des données particulières seraient détectées. Dans la suite, on appellera erreurs systématiques ou déterministes les erreurs affectant de façon statique une donnée elle même statique de telle façon que la non détection par le CRC lorsqu'elle se produit, se reproduit indéfiniment aussi longtemps que la donnée reste inchangée. La réglementation impose également qu'un scénario catastrophique ne doit pas résulter d'un événement unique (une panne simple) quelle que soit la probabilité associée. On voit alors que bien que sa probabilité soit infime, une telle erreur systématique ne peut pas être tolérée dans la mesure où elle peut aisément résulter d'une panne simple. La présente invention résout ce problème en prévoyant un moyen d'assurer la détection de telles erreurs systématiques sur des données. A cet effet l'invention divulgue un commutateur de réseau de communication de trames de données sur des canaux de communication, ledit commutateur comprenant une base de données et des règles de gestion du trafic du commutateur, lesdites trames comprenant chacune un index et un code de contrôle de trame, caractérisé en ce qu'au moins une des règles de gestion du trafic permet l'invalidation d'un canal de communication par comparaison avec des seuils de compteurs d'erreurs de transmission détectées stockés dans la base de données. Avantageusement, lesdites erreurs de transmission détectées comprennent les erreurs déterministes sur les données. Avantageusement, lesdits seuils comprennent au moins un nombre absolu d'erreurs. Avantageusemeni:, ledit nombre absolu d'erreurs est fixé à une valeur de l'ordre de 1138 trames ethernet par seconde lorsque le débit théorique du canal est de l'ordre de 100 mégabits par seconde. Avantageusemeni:, lesdits seuils comprennent au moins un taux relatif 5 d'erreur. Avantageusement, ledit taux relatif d'erreur est fixé à une valeur de l'ordre de 1% des trames lorsque le débit théorique du canal est de l'ordre de 100 mégabits par seconde. Avantageusement, lesdits seuils comprennent au moins un nombre minimum 1 o de trames rejetées. Avantageusement, ledit nombre minimum de trames rejetées est fixé à une valeur de l'ordre de 2274 trames ethernet par seconde lorsque le débit théorique du canal est de l'ordre de 100 mégabits par seconde. L'invention divulgue également un procédé de détection et de traitement des 15 défaillances d'un commutateur de réseau de communication de trames de données sur des canaux de communication, ledit procédé comprenant une étape de génération d'un index de trame, une étape d'insertion d'un code de contrôle de trame et une étape d'invalidation d'un canal de transmission, caractérisé en ce que l'invalidation résulte de la comparaison avec des seuils 20 d'erreurs de transmission détectées. L'invention présente en outre l'avantage d'être particulièrement bien adaptée aux communications AFDX utilisées dans les aéronefs et décrites dans la norme ARINC (Aeronautical Radio Inc.) 664. Elle permet en particulier de démontrer le niveau d'intégrité des données critiques requise par les 25 organismes de certification. L'invention sera mieux comprise et ses différentes caractéristiques et avantages ressortiront de la description qui suit de plusieurs exemples de réalisation et de ses figures annexées dont : - La figure 1 représente l'architecture d'un commutateur de réseau de 30 communication d'un type permettant la mise en oeuvre de l'invention ; - La figure 2 représente la structure d'une trame de données permettant la mise en oeuvre de l'invention ; La figure 3 représente l'organigramme des traitements selon l'invention. 35 Plusieurs architectures sont possibles pour les communications sur les réseaux de données utilisées par les applications avioniques. En particulier, le nombre de cornmutateurs (ou switchs) peut varier de quelques unités à près d'une vingtaine. Il est encore plus important de pouvoir démontrer la préservation de l'intégrité des données sur une architecture à nombre de switchs réduits, c'est-à-dire où la probabilité qu'une défaillance entrainant une erreur sur une donnée critique et soit également à l'origine d'une seconde erreur fatale est nécessairement plus élevée. L'invention sera encore plus utile dans ce type d'architecture. Chaque commutateur 10 comprend notamment les fonctions illustrées sur la figure 1, à titre d'exemple uniquement, d'autres architectures étant tout à fait possibles pour réaliser l'invention. Un module Switch comprend un moteur de commutation ou � switch engine � et un calculateur de contrôle. Le moteur de commutation est une machine effectuant le routage des paquets (ou trames) entrants vers les ports de sortie. Ce routage est fait en fonction d'un champ de bits de la trame ethernet IEEE 802.3 qui est le champ adresse de destination MAC (Medium Access Control). Le calculateur de contrôle réalise notamment les fonctions suivantes sous la supervision d'un logiciel: configuration du moteur de commutation lors de la phase d'initialisation ; constitution de la base de données 20A (généralement désignée sous le terme de Management Information Base ou MIB) propre au commutateur et consultable par un gestionnaire de réseau (non représenté) au travers du protocole SNMP (Simple Network Management Protocol) ; réponses aux consultations du gestionnaire de réseau non représenté conformément au protocole SNMP. Ce processeur est également en charge des tâches de surveillance du switch (fonction monitoring, 20B). Pour toutes ces tâches, le processeur accède à la configuration du switch engine via un bus de contrôle dédié (par exemple un bus PCI) au travers duquel il peut : consulter les ressources internes du switch (registres ou compteurs dédiés au monitoring), configurer le switch lors de la phase d'initialisation ou réparer les éléments de configuration éventuellement détériorés en phase opérationnelle, valider ou invalider des ports/canaux en intervenant sur des registres de contrôle internes au switch engine ou à travers le moteur de commutation sur les composants d'interface physique ((D) grâce à une ligne de dialogue série (Management Data Input/Output ou MDIO) incluse dans l'interface avec ces composants. La fonction routage est ici évoquée pour décrire le contexte et ne fait en aucun cas partie de l'invention qui peut tout aussi bien s'appliquer à un terminal, dispositif dans lequel la fonction routage d'un commutateur est absente. En fonction de ces champs et de tables de configuration prédéfinies et chargées par le calculateur de contrôle lors d'une phase d'initialisation, le moteur de commutation sait sur quels ports de sortie router chaque trame entrante. Dans le cas particulier d'un switch AFDX, il effectue également et préalablement au routage, toutes sortes de contrôles de cohérence. C'est le cas en particulier de la fonction de régulation de trames (ou �frame policing �) visant à garantir et le cas échéant à limiter la bande passante associée à chacun des liens virtuels (Virtual links ou VL) correspondant à des flux de donnée calibrés entre systèmes en supprimant les trames qui se situeraient en violation du budget de bande passante alloué au flux considéré. Cette fonction � frame policing � est également paramétrée par des tables de configuration chargées par le calculateur de contrôle lors d'une phase d'initialisation. Pour les besoins de constitution de la MIB, il est usuel que les dispositifs d'interface numérique ou couches MAC associées à chacun des ports bidirectionnels du commutateur, disposent d'une batterie de compteurs dimensionnés de manière à accumuler sur une durée faible (typiquement la seconde) le nombre d'événements ou les variables quantitatives associées au débit d'information traité qui seront acquises avec une période du même ordre par le gestionnaire constituant la MIB. Une liste non exhaustive du type de grandeurs ainsi recueillies est donnée ci après à titre d'exemple : - nombre de trames ethernet transmises sans erreurs par un port donné - nombre de trames ethernet reçues sans erreur par un port donné - nombre d'octets transmis via les trames sans erreurs -nombre d'octets reçus via les trames sans erreurs - nombres d'erreurs ayant entrainé l'abandon de la transmission d'une trame - nombre d'erreurs de CRC ayant entrainé l'abandon d'une trame en réception nombre d'erreurs de longueur ayant entrainé l'abandon d'une trame en réception On remarque qu'en disposant de l'ensemble des inforrnations issues des MIB de l'ensemble des noeuds et terminaux du réseau c'est à dire notamment pour l'ensemble des ports de l'ensemble des switches d'un réseau, le gestionnaire de réseau peut ainsi constituer une MIB de niveau réseau et établir une cartographie des débits échangés dans chaque sens de chaque lien inter-switch ainsi que des situations pathologiques liées éventuellement à un nombre anormal d'erreurs reportées en provenance d'une région du réseau (lien entre deux switchs, tous liens d'un switch avec ses voisins, liens de plusieurs switchs ....) Les données recueillies par le gestionnaire de la MIB locale au switch peuvent avantageusement être utilisées à des fins de prise de sanction immédiate au niveau du switch lui même en vue de l'amélioration de l'intégrité des données transmises. Une telle sanction peut être notamment l'invalidation d'un port imposant par exemple la cessation totale des flux de données transitant: par ce port. Une des causes d'invalidation est la détection d'un flux anormalement élevé de données non intègres. Classiquement, une trame corrompue est détectée grâce à un code de contrôle inséré dans chaque trame. Conformément à la norme IEEE 802.3 applicable à la fois aux commutateurs Ethernet et aux commutateurs AFDX, ce code de contrôle est du type CRC (Cyclic Redundancy Cycle ou Contrôle de redondance cyclique). La figure 2 montre la structure d'une trame selon la norme comprenant un CRC 40. Chaque trame comprend un en-tête appelé préambule ou preamble dans la norme et constitué d'une succession minimale de 1 et de 0 alternés permettant à l'horloge locale de se synchroniser sur le signal modulé en provenance de l'émetteur distant. Ce préambule est suivi d'un � start of frame � ou signal de début de trame qui introduit la partie utile de la trame qui le suit immédiatement et sur laquelle porte le calcul du CRC. Viennent ensuite l'adresse MAC de destination, les données, un numéro de séquence SN 30 et le CRC 40. Le CRC utilisé pour contrôler les communications sur un réseau Ethernet ou sur un réseau AFDX est un CRC à 32 bits ou CRC- 32. Le principe de l'utilisation du CRC-32 est le suivant : le nombre binaire constitué par la trame est divisé par un polynome de degré 32 du type x32 + X26+X23+X22+X16+X12+x11 +x10+X8+X7+X5+X4+x2+X+ 1. Le reste de cette division constitue le CRC-32 et est accolé à la trame. On vérifie à l'autre bout du canal ou en sortie de switch que le CRC reçu est valide. Cette technique est particulièrement efficace puisque toute trame affectée d'un train de bits erronés de longueur inférieure à celle du CRC-32 est détectée avec certitude et que la probabilité qu'une trame affectée d'une erreur de taille supérieure à celle du CRC-32 ne soit pas détectée n'est que de 1/232 ou 2,3283*10-10 (si les bits erronés sont répartis sur la totalité de la trame et non confinés dans un train de 32 bits consécutifs au sens de la transmission ethernet 802.3 soit 8 demi-octets ou �nibbles� de 4 bits consécutifs). La taille du train de bits erronés est caractérisée par la différence entre les rangs du dernier et du premier nibble erroné de la trame dans 'l'ordre de prise en compte des nibbles dans le calcul du CRC. Cet ordre est également celui de leur transmission sur le medium physique. Dans le cas d'une liaison filaire AFDX fonctionnant à saturation, 148810 trames peuvent être reçues chaque seconde et si toutes sont erronées de manière aléatoire, le taux de trames erronées susceptibles de contourner la barrière du CRC est alors de 0,125 par heure (récurrence d'erreur de 8 heures) alors que l'utilisation du réseau dans un aéronef pour véhiculer des données critiques conduit à rechercher une probabilité inférieure à 10-9 par heure pour un événement susceptible d'avoir une conséquence catastrophique. Il est toutefois courant de pallier cette faiblesse en ayant recours à la convention qu'une donnée erronée unique ne peut pas entraîner de conséquence catastrophique. Ceci est aisément réalisable en procédant à une confirmation sur au moins deux cycles de calcul à partir de nouvelles données. Toutefois même si la confirmation a lieu dans un laps de temps de 100rns, la densité de l'événement � plus d'une trame erronée à CRC correct reçue dans le laps de temps correspondant � est de l'ordre 10-6 par heure ce qui est insuffisant pour être utilisé comme seul argument en vue de la certification d'un système critique. Pour garantir une intégrité des données traitées par le commutateur meilleure de trois ordres de grandeurs que celle procurée par le CRC, il est 35 proposé d'invalider un port à partir du moment où il génère un taux d'erreur supérieur à des seuils prédéterminés. Pour établir la démonstration que l'établissement d'un seuil permet de traiter tout type d'erreur, on classifie les défaillances du matériel susceptibles de produire une transmission de donnée erronée associée néanmoins à un CRC correct selon deux catégories. On examine d'abord, les défaillances dont l'expression, indépendante de la donnée transmise, se traduit par un aléa sur la transmission et par conséquent une augmentation sensible du taux d'erreur (bit error rate ou BER). Ce taux d'erreur dégrade significativement la proportion de trames correctes et par corollaire crée un taux de trames erronées significatif auquel est associé inévitablement un taux de trames erronées non détecté 232 fois plus faible. Il suffit alors de détecter l'apparition d'un taux de trames erronées supérieur à un seuil d'acceptabilité pour invalider le canal de réception et réduire très rapidement à néant le risque associé à une donnée erronée. Dans les systèmes critiques, il faut alors démontrer que cette détection permet d'invalider le port avant que des conséquences catastrophiques aient pu se propager. Supposons qu'il soit possible de détecter une telle dérive et d'invalider le port dans la seconde de son apparition ; on réduit ainsi le temps de risque à 1 seconde (au lieu du temps du vol) ce qui permet aisément d'apporter les 3 ordres de grandeur manquants à l'ébauche de démonstration précédente. Il faut ensuite traiter le cas des défaillances n'introduisant pas d'aléas dans la transmission et susceptibles de se reproduire systématiquement et donc à l'identique dès lors que leurs conditions d'apparition sont réunies. Ces défaillances sont assimilables à un canal de perturbation potentiellement indépendant de la donnée mais qui associé à une famille de trames particulières produit systématiquement un CRC correct en dépit de l'altération de la donnée. Pour juguler cette menace il est suggéré de rajouter un champ variable de longueur inférieure à la taille du CRC et assujetti à changer systématiquement à chaque trame transmise du flux de données considéré (ce champ variable peut par exemple être généré par un compteur). Cet artifice, en modifiant la donnée et par conséquent le CRC associé de manière systématique, évite les situations dans lesquelles une donnée inchangée serait toujours altérée de la même manière et de façon non détectée. II permet ainsi d'éviter de prendre en défaut les mécanismes de confirmation, et facilite la détection de la perturbation par la détection du flux de trames erronées décrit plus haut, même en cas de transmission récurrente de la même donnée utile. La mise en oeuvre du procédé décrit ci-dessus est particulièrement adaptée aux communications AFDX utilisées dans les aéronefs et décrites par la norme ARINC 664. Dans ce protocole de communication bâti en s'appuyant sur la norme ethernet (IEEE 802.3), les flux de données sont séparés en VL (Virtual Link), chaque VL disposant d'une adresse dédiée caractérisée par un champ � MAC destination � unique. De plus, un champ variable de 8 bits, le numéro de séquence ou Sequence Number (SN) 30 associé au VL est assujetti à évoluer pour chaque trame transmise du VL considéré. Ce champ a été initialement introduit en addition aux champs spécifiés par I'IEEE 802.3 pour permettre la gestion de la redondance réseau par le terminal ainsi que la détection des modes de défaillance tels que la modification de la séquencialité des trames à l'intérieur d'un flux donné (� frame re-ordering �) et le bégaiement (� babbling �) qui sont des modes de panne usuels et redoutés des commutateurs de données. Ce champ supplémentaire répond également parfaitement aux besoins de démonstration d'intégrité selon le procédé de l'invention. Dans la mesure où le SN, qui est un élément de la trame, est pris en compte pour le calcul du CRC, des erreurs déterministes sur les données, telles que par exemple un ou plusieurs bits collés, seront en réalité détectés par le CRC qui sera nécessairement non conforme bien que les données soient identiques, puisque les données ont des SN différents. Ainsi, les deux types d 'erreurs sont pris en compte par le dispositif et le procédé selon l'invention : d'une part, dans la mesure où le seuil d'erreur conduisant à l'invalidation d'un port est fixé à un niveau approprié, il est possible de démontrer que le taux de défaillance sera nécessairement inférieur à 10-9 pour des erreurs aléatoires. Dans la mesure où la statistique de défaillance du CRC-32 prend également en compte les erreurs déterministes qui ne peuvent leurrer un CRC-32 calculé sur une trame comprenant un numéro de séquence, les deux catégories d'erreurs sont prises en compte par l'invention. La figure 3 représente l'organigramme des traitements du procédé selon l'invention. On définit les variables et paramètres suivants : -Port_X_rejection_rate est le nombre de trames erronées détectées par seconde sur le port X ; Cette valeur est acquise périodiquement lors de la constitution de la MIB locale à partir des compteurs d'erreur de la couche MAC en réception du port considéré Port_X_acceptance_rate est le nombre de trames bonnes détectées par seconde sur le port X ; cette valeur est également une donnée extraite des compteurs de la couche MAC en réception du port Max_absolute_rejection_rate (en nombre de trames par seconde) est le seuil de taux de rejet conduisant à l'invalidation d'un port ; -Max_absolute_rejected_traffic est le taux de rejet (en pourcentage) conduisant à l'invalidation d'un port ; - Min_significant_rejected_traffic est le nombre de trames erronées minimal (pour éviter l'invalidation d'un port pour cause de concentration instantanée de courte durée de trames erronées de type distribution aléatoire des erreurs. Ce type d'événement correspond basiquement aux situations de foudroiement vis-à-vis desquelles le système doit être robuste). L'algorithme de détection des défaillances d'un port X est alors : Begin Port_X_rejected_traffic if Port_X_rejection_rate > Max_absolute_rejection_rate => failure detection else if (Port_X_rejection_rate / Port_X_acceptance_rate ) > Max_absolute_rejection_ratio if Port_X_rejected_traffic > Min_significant_rejected_traffic => failure detection else => no action else Port_X_rejected_traffic REVENDICATIONS 1 Commutateur (10) de réseau de communication de trames de données sur des canaux de communication, ledit commutateur comprenant une base de données (20A) et des règles de gestion (20B) du trafic du commutateur, lesdites trames comprenant chacune un index (30) et un code de contrôle de trame (40) , caractérisé en ce qu'au moins une des règles de gestion du trafic permet l'invalidation d'un canal de communication par comparaison avec des seuils de compteurs d'erreurs de transmission détectées stockés dans la base de données. 2. Commutateur selon la revendication 1, caractérisé en ce que les erreurs de transmission détectées comprennent les erreurs 15 déterministes sur les données. 3. Commutateur selon la revendication 1, caractérisé en ce que lesdits seuils comprennent au moins un nombre absolu d'erreurs. 4. Commutateur selon la revendication 3, caractérisé en ce que ledit nombre absolu d'erreurs est fixé à une valeur de l'ordre de 1138 20 trames ethernet par seconde lorsque le débit théorique du canal est de l'ordre de 100 mégabits par seconde. 5. Commutateur selon la revendication 1, caractérisé en ce que lesdits seuils comprennent au moins un taux relatif d'erreur. 6. Commutateur selon la revendication 5, caractérisé en ce que ledit taux 25 relatif d'erreur est fixé à une valeur de l'ordre de 1% des trames ethernet lorsque le débit théorique du canal est de l'ordre de 100 mégabits par seconde. 7. Commutateur selon la revendication 1, caractérisé en ce que lesdits seuils comprennent au moins un nombre minimum de trames rejetées. 30 8. Commutateur selon la revendication 7, caractérisé en ce que ledit nombre minimum de trames rejetées est fixé à une valeur de l'ordre de 2274 trames ethernet lorsque le débit théorique du canal est de l'ordre de 100 mégabits par seconde. 9. Procédé de détection et de traitement des défaillances d'un 35 commutateur de réseau de communication de trames de données sur des canaux de communication, ledit procédé comprenant une étapede génération d'un index de trame, une étape d'insertion d'un code de contrôle de trame et une étape d'invalidation d'un canal de transmission, caractérisé en ce que l'invalidation résulte de la comparaison avec des seuils d'erreurs de transmission détectées. 10. Procédé selon la revendication 9 caractérisé en ce que les erreurs de transmission détectées comprennent les erreurs déterministes sur les données.10