Brevet FR3093570A1 — publié le 20200911

Description Titre de l'invention : Procédé ET SYSTEME pour une redondance à chaud géographique [0001] La présente invention concerne les procédés et les systèmes pour une redondance à chaud. [0002] Pour fournir une certaine fonctionnalité, un système informatique comporte un cal- culateur de sécurité exécutant, de manière cyclique, une application adaptée. [0003] Un calculateur de sécurité est un calculateur intrinsèquement sûr. Il est par exemple fondé sur une architecture 2oo2 (« two out of two »), qui comporte deux unités de calcul, de préférence diversifiées l'une par rapport à l'autre. Ces deux unités sont disposées en parallèle l'une de l'autre de manière à recevoir, à chaque instant, les mêmes entrées. Les sorties des deux unités de calcul sont acheminées vers une unité d'évaluation (ou votcur), matérielle ou logicielle, qui délivre une sortie uniquement si les sorties des deux unités de calcul sont identiques entre elles. A défaut, une sortie sécuritaire restrictive est générée par l'unité d'évaluation. De cette manière, les sorties d'un calculateur de sécurité sont garanties avec un certain niveau de confiance. [0004] D'autres architectures sont connues de l'homme du métier, mais on constate que les architectures en mesure de satisfaire les exigences de sécurité et de disponibilité spécifiques au domaine ferroviaire reposent sur les architectures classiques 2oo2, 2oo3 ou monoprocesseur codé. On notera que l'avantage des architectures composites 2oo2 ou 2oo3 réside dans la possibilité de mettre en oeuvre des composants informatiques classiques (COTS pour « Composant Of The Shclf »). [0005] L'augmentation du taux global de disponibilité de la fonctionnalité offerte par le système informatique est obtenue par l'agrégation de moyens de calcul fonctionnant en parallèle, de sorte qu'un moyen puisse immédiatement prendre la relève d'un autre moyen défaillant. [0006] Une telle redondance, dite redondance à chaud, des moyens de calcul est par exemple présentée dans le document EP 1 764 694 BI, qui divulgue un système comportant un premier calculateur de sécurité maître et un second calculateur de sécurité esclave, dupliquant le premier calculateur de sécurité maître. Chaque calculateur exécute une réplique d'une même application. Les sorties générées à chaque cycle d'exécution de l'application par les deux calculateurs de sécurité sont comparées afin de vérifier la cohérence des deux calculateurs et le fonctionnement nominal du système. Cette vérification de la consistance dans l'exécution de chacune des répliques de l'application s'appuie sur la présence d'un dispositif matériel de commande, d'une liaison bidirectionnelle de synchronisation entres les calculateurs pour une synchronisation stricte des 2 calculateurs maître et esclave, et d'un dispositif matériel pour traiter les sorties des deux calculateurs. [0007] La parfaite synchronisation des deux calculateurs de sécurité est nécessaire pour être certain que la comparaison des données de sortie générées par chaque calculateur porte sur des données calculées au cours d'un même cycle d'exécution de l'application, à partir du même lot de données d'entrée. [0008] Ainsi, le système présenté dans le document EP 1 764 694 B1 comporte des moyens de synchronisation et de communication à travers la liaison bidirectionnelle de synchronisation entre les deux calculateurs de sécurité permettant à ces derniers de rester strictement synchronisés. [0009] Pour ne pas introduire de distorsion, cette liaison doit être performante et dédiée. Il s'agit typiquement d'une ligne câblée, d'un bus de données ou d'un réseau de communication privé. Ces contraintes imposent que la longueur de cette liaison de synchronisation soit courte, ce qui implique que les deux calculateurs de sécurité, maître et esclave, soient placés à proximité immédiate l'un de l'autre. [0010] A cause de la présence de cette liaison de synchronisation et occasionnellement du dispositif d'évaluation de cohérence/ d'arbitrage, les deux calculateurs de sécurité sont donc situés au même endroit géographique. [0011] Cependant, un tel système ne permet pas de palier aux défaillances de mode commun. Par exemple, un incendie dans le local où se trouve le premier calculateur de sécurité, s'il conduit à la mise hors service de ce premier calculateur, risque également de conduire à la mise hors service du second calculateur. Ce dernier ne peut alors jouer son rôle en redondant le calculateur maître défaillant et la fonctionnalité offerte par le système informatique n'est plus disponible. [0012] 11 y a donc un besoin pour une redondance à chaud géographique autorisant l'éloignement physique des calculateurs redondés pour éviter les modes communs de défaillance. De la sorte, en cas de défaillance du premier calculateur maître, le second calculateur esclave n'est a priori pas affecté et, constatant que le premier calculateur est défaillant, peut prendre la main et assurer la continuité de la disponibilité de la fonctionnalité du système. [0013] Cependant, en séparant les deux calculateurs de sécurité, on perd la possibilité de les synchroniser précisément et, par conséquent, de comparer leurs sorties pour déterminer si l'un ou l'autre des calculateurs de sécurité tonnait une défaillance. Il ne devient donc plus possible d'arbitrer entre celui des calculateurs qui doit fonctionner en maître et celui qui doit fonctionner en esclave. [0014] L'invention a pour but de répondre à ce problème, en proposant un procédé pour une redondance à chaud géographique. [0015] Pour cela l'invention a pour objet un procédé pour une redondance à chaud géo- 3 graphique entre un premier calculateur de sécurité et un second calculateur de sécurité connectés l'un à l'autre par un réseau de communication générique, le premier calculateur de sécurité exécutant cycliquement une première réplique d'une application et le second calculateur de sécurité, redondant le premier calculateur de sécurité, exécutant cycliquement une seconde réplique de ladite application, le procédé étant caractérisé par les étapes consistant en, en fonctionnement normal alors que le premier calculateur de sécurité fonctionne en tant que calculateur maître et que le second calculateur de sécurité fonctionne en tant que calculateur esclave : [0016] a) la transmission par le premier calculateur de sécurité vers le second calculateur de sécurité d'un message comportant des premières données d'entrée pour un en', cycle et tout ou partie d'un premier contexte d'exécution dc l'application pour le eine cycle ; [0017] h) l'exécution, au cours du nième cycle, de la première réplique de l'application sur le premier calculateur de sécurité et mise à jour du premier contexte d'exécution de l'application à la fin du nième cycle ; [0018] c) la transmission par le premier calculateur de sécurité vers le second calculateur de sécurité d'une première grandeur de sortie correspondant à tout ou partie du premier contexte d'exécution à la fin du eine cycle ; [0019] d) la réception par le second calculateur de sécurité du message et la récupération des premières données d'entrée du nième cycle et dc tout ou partie du premier contexte d'exécution du nième cycle contenu dans le message en tant que secondes données d'entrée et second contexte d'exécution pour le n''1" cycle sur le second calculateur de sécurité; [0020] e) l'exécution, au cours du nlème cycle, de la seconde réplique de l'application sur le second calculateur de sécurité dans le second contexte d'exécution pour le nième cycle, sur les secondes données d'entrée du noème cycle, et mise à jour du second contexte d'exécution à la fin du cycle ; [0021] f) la vérification de la cohérence entre les premier et second calculateurs de sécurité en comparant une seconde grandeur de sortie correspondant à tout ou partie du second contexte d'exécution à la fin du dème cycle sur le second calculateur de sécurité avec la première grandeur de sortie à la fin du nième cycle reçue du premier calculateur de sécurité. [0022] Suivant des modes particuliers de réalisation, le procédé comporte une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles : [0023] - en cas de différence entre les première et seconde grandeurs de sortie, une étape d'éducation pour rétablir une cohérence entre le second calculateur de sécurité et le premier calculateur de sécurité, ladite étape d'éducation consistant à réaliser une image du premier contexte d'exécution à la fin du nième cycle sur le premier calculateur de sécurité, à transmettre l'image vers le second calculateur de sécurité, à initialiser le second contexte d'exécution sur le second calculateur de sécurité avec l'image reçue, et à exécuter la seconde réplique de l'application sur le second calculateur de sécurité au cours du cycle suivant le eine cycle ; [0024] - au cours de l'étape d'éducation, le second calculateur de sécurité est maintenu dans une étape de quarantaine durant un nombre de cycle prédéterminé afin de vérifier la cohérence entre les premier et second calculateurs de sécurité en mettant en oeuvre les étapes a) à f) pour chacun des cycles de l'étape de quarantaine, et, en cas de vérification positive, de rétablir la redondance entre les premier et second calculateurs de sécurité ; [0025] - les première et seconde grandeurs de sortie à la fin du nième cycle correspondent à une signature du contexte d'exécution correspondant à la fin du eine cycle, un algorithme de signature étant choisi en fonction d'un niveau de sécurité de fonctionnement requis ; [0026] - le second calculateur de sécurité réalise une étape de basculement d'esclave à maître lorsqu'il ne reçoit plus de message de la part du premier calculateur de sécurité pendant une durée prédéterminée ; [0027] - lorsque le premier calculateur de sécurité détecte une défaillance, il adopte un état de repli sécuritaire et transmet une confirmation de l'état de repli adopté au second calculateur de sécurité, le second calculateur de sécurité initiant une étape de basculement d'esclave à maître après avoir reçu ladite confirmation ; [0028] - le procédé comporte une étape de maintien de la communication mettant en oeuvre un calculateur de sécurité supplémentaire jouant un rôle de calculateur témoin, connecté d'une part au premier calculateur de sécurité et d'autre part au second calculateur de sécurité, le second calculateur de sécurité initiant une étape de basculement d'esclave à maître suite à l'interruption de la communication avec le premier calculateur de sécurité, après avoir interrogé le calculateur supplémentaire et avoir reçu de ce dernier une confirmation que le premier calculateur de sécurité ne répond pas ; [0029] - en cas de différence entre les première et seconde grandeurs de sortie détectée pour la première fois depuis une durée supérieure à un seuil prédéterminé, le seuil prédéterminé étant de préférence supérieur à la durée de deux cycles d'exécution, est prévue une étape de réexécution d'un cycle d'exécution ; et [0030] - la transmission par le premier calculateur de sécurité vers le second calculateur de sécurité d'un message comportant des premières données d'entrée pour un ni'n'e cycle et tout ou partie d'un premier contexte d'exécution de l'application pour le nibme cycle et/ou la transmission par le premier calculateur de sécurité vers le second calculateur de sécurité d'une première grandeur de sortie correspondant à tout ou partie du premier contexte d'exécution à la fin du nièmc cycle, comporte l'émission par le premier cal- culatcur de sécurité de codes de correction, lesdits codes de correction permettant au second calculateur de sécurité de reconstituer des trames égarées ou supprimées par le réseau de communication. [0031] L'invention a également pour objet un système pour une redondance à chaud géo- graphique comportant un premier calculateur de sécurité et un second calculateur de sécurité connectés l'un à l'autre par un réseau de communication générique, le premier calculateur de sécurité exécutant cycliquement une première réplique d'une application et le second calculateur de sécurité, redondant le premier calculateur de sécurité, exécutant cycliquement une seconde réplique de ladite application, le système étant configuré pour mettre en oeuvre un procédé conforme au procédé précédent. [0032] Suivant des modes particuliers de réalisation, le système comporte une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles : [0033] - le réseau de communication est un réseau étendu mettant en oeuvre un protocole ETHERNET ; [0034] - le second calculateur de sécurité est disposé à distance du premier calculateur de sécurité de manière à éviter les modes communs de défaillance ; [0035] - un calculateur de sécurité supplémentaire jouant un rôle de calculateur témoin connecté d'une part au premier calculateur de sécurité et d'autre part au second calculateur de sécurité ; et [0036] - les premier et second calculateurs de sécurité exécutent un algorithme de sécurité permettant de générer, à partir d'un contexte d'exécution de l'application à la fin d'un dème cycle, une signature en tant que grandeur de sortie pour la vérification de la cohérence entre les premier et second calculateurs de sécurité. [0037] L'invention et ses avantages seront mieux compris à la lecture de la description détaillée qui va suivre d'un mode de réalisation particulier, donnée uniquement à titre d'exemple non limitatif, cette description étant faite en se référant aux dessins annexés sur lesquels : [0038] [fig.1] la figure 1 est une représentation schématique d'un mode de réalisation d'un système informatique présentant une redondance à chaud géographique ; [0039] [fig.2] la figure 2 est une représentation sous forme de blocs de la partie exécutée par un calculateur maître, d'un mode de réalisation du procédé pour une redondance à chaud géographique dans le système de la figure 1 ; [0040] [fig.3] la figure 3 est une représentation sous forme de blocs de la partie exécutée par un calculateur esclave, d'un mode de réalisation du procédé pour une redondance à chaud 6 géographique dans le système de la figure 1 ; [0041] [fig.4] la figure 4 est une représentation sous forme de blocs d'une phase d'éducation d'un calculateur avant de rétablir la redondance; et, [0042] [fig.5] la figure 5 est une représentation sous forme de blocs de conditions supplémentaires à vérifier avant un basculement esclave-maitre d'un calculateur. [0043] Sur la figure 1, le système 10 est construit autour d'un réseau 8 de communication générique étendu. Il s'agit par exemple d'un réseau du type WAN (« Wide Arca Network » en anglais) supportant un protocole de commutation de paquets, par exemple fondé sur le protocole de communication ETHERNET. [0044] De préférence, le réseau 8 est dupliqué pour augmenter la robustesse du système 10, chaque équipement informatique possédant alors deux ports d'entrée/sortie, chaque port étant connecté à l'un des réseaux. Pour des raisons de clarté, dans ce qui suit, le système sera considéré comme ayant un seul réseau de communication. [0045] Le système 10 comporte un premier calculateur de sécurité 11 connecté au réseau 8. Le calculateur 11 est conforme au calculateur de sécurité présenté en introduction de la présente demande de brevet. Le premier calculateur 11 exécute une première réplique 13 d'une application qui, lorsqu'elle est exécutée, offre une fonctionnalité, par exemple une fonctionnalité de gestion d'une pluralité d'équipements de signalisation disposés le long d'une voie ferrée. [0046] De manière générale, l'exécution d'une application s'effectue au cours de cycles successifs, chaque cycle comportant une étape d'exécution de l'application, qui consiste à exécuter un ou plusieurs processus élémentaires de cette application. [0047] Par exemple, au cours d'une étape d'exécution, le processeur du calculateur exécute au moins un premier processus pendant un certain temps alloué. Le processeur passe ensuite à l'exécution d'une autre application. Puis, pour l'étape d'exécution au cours du cycle suivant, le processeur recommence l'exécution de ce premier processus. [0048] L'exécution d'une application par un calculateur est assimilable à une machine à états. Des variables permettent de conserver l'état courant de cette machine. L'ensemble de ces variables constitue le contexte d'exécution de l'application considérée, c'est-à-dire l'endroit où se trouve, à l'instant courant, l'exécution de l'application. Le contexte est mémorisé. [0049] Ainsi, le premier contexte 15 de la première réplique 13 de l'application est par exemple mémorisé dans un espace déterminé de la mémoire du premier calculateur 11. [0050] Au début d'un cycle, avant d'exécuter l'application, le processeur charge dans la mémoire qui lui est associée le contexte de l'application à exécuter pour pouvoir reprendre l'exécution de cette application à partir de la situation dans laquelle elle se 7 trouvait au cycle précédent. [0051] Le contexte comporte différents types de variahles, notamment des variables es- sentielles (telles que par exemple les attributs du cycle, temps de sécurité, etc.) et d'autres variables, telles que les variahles d'état de l'application (qui dépendent donc de chaque application). [0052] Si deux calculateurs exécutant des répliques d'une même application possèdent le même contexte d'exécution à la fin du cycle N, cela signifie qu'ils sont dans le même état. On parle de cohérence d'exécution. [0053] Des premières données d'entrée 17 collectées par le premier calculateur 11 et devant être utilisées lors de l'exécution de la première réplique 13 de l'application sont stockées dans un espace mémoire dédié. [0054] Des premières données de sortie 19 obtenues lors de l'exécution de la première réplique 13 de l'application sont stockées dans un espace mémoire dédié. [0055] Un cycle dure par exemple 200 ms. Si chaque cycle conduit à la génération d'une donnée de sortie du type commande d'un équipement à la voie, le système 10 permet de générer environ cinq commandes par seconde. [0056] Il est à noter que, compte tenu des temps caractéristiques des systèmes ferroviaire (par exemple du temps de réaction de l'actionnement d'un aiguillage), une commande peut être générée avec un retard d'un ou deux cycles sans que cela dégrade le niveau de sureté de l'installation ferroviaire. [0057] Le système 10 comporte au moins un calculateur de sécurité redondant le premier calculateur 11. Ainsi le système 10 comporte un second calculateur de sécurité 12 connecté au réseau 8. Le second calculateur 12 est matériellement identique au premier calculateur 11. Il exécute une réplique de l'application exécutée sur le premier calculateur 11. Cette réplique est une seconde réplique 14. [0058] Un second contexte 16 de la seconde réplique 14 de l'application est mémorisé dans un espace déterminé de la mémoire du second calculateur 12. [0059] Des secondes données d'entrée 18 collectées par le second calculateur 12 et devant être utilisées lors de l'exécution de la seconde réplique 14 de l'application sont stockées dans un espace mémoire dédié. [0060] Des secondes données de sortie 20 obtenues lors de l'exécution de la seconde réplique 14 de l'application sont également stockées dans un espace mémoire dédié. [0061] Le système 10 comporte également une pluralité de périphériques connectés au réseau 8. [0062] Les périphériques comportent des périphériques 31 d'acquisition de données, propres à transmettre les données acquises vers les calculateurs de sécurité 11 et 12, par exemple par la mise en oeuvre d'un protocole de diffusion multicast sur le réseau 8. [0063] Les périphériques comportent également des périphériques 32 d'actionnement 8 propres à recevoir des commandes émises par les calculateurs de sécurité 11 et 12. [0064] Eventuellement, le système 10 est interface avec d'autres calculateurs et systèmes, dits externes, 30, à travers le réseau 8. [0065] A chaque instant, un seul calculateur de sécurité du système 10 fonctionne en tant que calculateur maître ayant le contrôle absolu du système : il est le seul calculateur de sécurité à produire des données de sortie et à les transmettre en tant que commandes vers les périphériques 32 d'actionnement ou les systèmes externes 30. Le ou chaque autre calculateur de sécurité fonctionne en esclave et les données de sortie qu'il calcule ne sont pas utilisées par les périphériques connectés au réseau. [0066] Dans le mode de fonctionnement nominal du système 10, le premier calculateur 11 fonctionne en calculateur maître du système et le second calculateur 12 fonctionne en calculateur esclave. [0067] Grâce au réseau 8, les calculateurs et les périphériques du système 10 peuvent être installés en des endroits variés. [0068] En particulier, les premier et second calculateurs de sécurité 11 et 12 sont hébergés en des endroits distants pour éviter au maximum les défaillances de mode commun. Les premier et second calculateurs 11 et 12 peuvent ainsi par exemple être prévus à chacune des stations de terminus de la ligne de métro dont ils gèrent la signalisation. [0069] Le premier calculateur 11 maître communique avec le second calculateur 12 esclave à travers le réseau 8. Typiquement, dans le système 10, la communication entre les premier et second calculateurs 11 et 12 (lien 9 sur la figure 1) s'effectue à travers un premier réseau local, auquel est connecté le premier calculateur 11 ; une première passerelle ; un réseau public ou privé du type WAN; une seconde passerelle ; et un second réseau local auquel est connecté le second calculateur 12. [0070] L'utilisation d'un réseau, tel que le réseau 8, ne permet pas de garantir qu'un paquet d'entrée multicast produit par l'un des périphériques 31 d'acquisition et adressé aux calculateurs 11 et 12 soit effectivement reçu par les deux calculateurs. De même, le réseau 8, ne permet pas de garantir que deux paquets émis l'un après l'autre par le premier calculateur 11 soient reçus dans le même ordre par le second calculateur 12, ni que la durée séparant ces deux paquets lors de leur émission soit conservée au cours de leur transmission. Il peut même se faire qu'un paquet soit perdu au cours de sa transmission sur le réseau. Il n'est donc pas possible de synchroniser strictement les premier et second calculateurs 11 et 12 à travers le réseau 8, ni d'assurer qu'ils reçoivent exactement les mêmes données d'entrée. [0071] Selon l'invention, le calculateur esclave est donc autorisé à compléter, à son rythme, l'exécution de l'application, sans être obligé à une adhésion temporelle étroite à l'exécution du calculateur maître. [0072] Puisqu'il n'est plus possible de synchroniser étroitement les calculateurs maître et 9 esclave, un procédé 100 pour unc redondance à chaud géographique est mis en oeuvre par le système 10 pour maintenir unc cohérence entre les calculateurs maître et esclave. [0073] Le procédé 100 permet au calculateur maître d'entretenir la cohérence du/des cal- culateur(s) csclave(s) comme cela va maintenant être présenté en référence aux figures 2 et 3. [0074] La figure 2 correspond à la partie du procédé 100 réalisée sur le premier calculateur de sécurité 11 agissant en tant que maître. [0075] A la fin du cycle N-1, à l'étape 110 le premier calculateur 11 reçoit, des différents périphériques 31, les données d'entrée 17 qui seront à traiter au cycle N. Chaque données d'entrée acquise par le premier calculateur 11 est datée et signée afin de garantir l'intégrité et l'unicité de cette donnée d'entrée. Chaque donnée d'entrée est mémorisée dans l'espace correspondant de la mémoire du premier calculateur 11 en tant que première donnée d'entrée. [0076] Au début du cycle N suivant, à l'étape 120, le premier calculateur 11, en lisant les espaces correspondants de sa mémoire, élabore un message initial comportant l'ensemble des premières données d'entrée 17 pour le cycle N, et unc partie du premier contexte d'exécution 15 pour le cycle N. [0077] Par exemple, un message initial indique le numéro du cycle, les valeurs des premières données d'entrée pour cc cycle, et les valeurs des variables essentielles du premier contexte d'exécution de l'application pour ce cycle. [0078] Le message initial pour le cycle N, MN, est transmis au second calculateur 12 via le réseau 8. [0079] Avantageusement, la transmission par le premier calculateur 11 de ses données d'entrée et de la portion de son contexte s'accompagne de codes de correction permettant au second calculateur 12 de reconstituer les éventuelles trames manquantes dans le message MN. [0080] Puis, au cours de l'étape 130, le premier calculateur 11 exécute la première réplique 13 de l'application dans le premier contexte 15 pour le cycle N, sur les premières données d'entrée 17 pour le cycle N. Cela conduit à l'obtention de premières données de sortie 19 pour le cycle N. [0081] A l'issue de l'étape 130, les valeurs des variables du premier contexte 15 sont mise à jour. Le premier contexte 15 mis à jour à la fin du cycle N sera le contexte à utiliser pour débuter l'étape d'exécution de la première réplique 13 de l'application au cycle suivant N+1. [0082] Les premières données de sortie 19 pour le cycle N sont transmises aux périphériques 32 en tant que commandes CN. [0083] Puis, à l'étape 140, le premier calculateur 11 calcule une première signature 20 du premier contexte 15 mis à jour à la fin du cycle N. Cette première signature pour le cycle N, Sr, est établie sur l'ensemble des variables critiques du premier contexte 15 de l'application d'intérêt. [0084] Le premier calculateur 11 transmet la première signature SN pour le cycle N vers le second calculateur 12 via le réseau 8. [0085] Puis, sur le premier calculateur 11, pour les cycles suivantes, les étapes 110 à 140 sont itérécs. [0086] La figure 3 correspond à la partie du procédé 100 réalisée sur le second calculateur de sécurité 12 agissant en tant qu'esclave. [0087] Au cycle N-1, à l'étape 210, le second calculateur 12 reçoit des différents péri- phériques 31 les données d'entrée qui sont mémorisées en tant que secondes données d'entrée 18 pour le cycle N. Chaque donnée d'entrée acquise par le second calculateur 12 est datée et signée afin de garantir l'intégrité et l'unicité de cette donnée d'entrée. [0088] Au cycle N, à l'étape 220, le second calculateur 12 traite le message MN pour le cycle N qu'il a reçu du premier calculateur 11. [0089] A l'étape 222, le second calculateur 12 affecte aux variables du second contexte 16 pour le cycle N, les valeurs de ces mêmes variables indiquées dans le massage MN. [0090] A l'étape 224, le second calculateur 12 procède à une réconciliation complète des secondes données d'entrée 18 pour le cycle N. Pour ce faire, le second calculateur 12 considère que les premières données d'entrée du message MN constituent l'ensemble des secondes données d'entrée 18 qu'il aura à traiter au cycle N. Tl s'agit donc d'un clonage par le calculateur esclave 12 des premières données d'entrée renseignées par le calculateur maître 11 dans le message MN. Les données d'entrée collectées à l'étape 210 sont donc harmonisées avec les premières données d'entrée renseignées par le premier calculateur 11. [0091] Puis, lors de l'étape d'exécution 230, le second calculateur 12 exécute la seconde réplique 14 de l'application dans le second contexte 16 pour le cycle N sur les secondes données d'entrée 18 pour le cycle N, de manière à calculer des secondes données de sortie 20 pour le cycle N. [0092] A la fin de l'étape d'exécution 230, les valeurs des variables du second contexte 16 sont mise à jour. [0093] A l'étape 240, le second calculateur 12 calcule une seconde signature S'N du second contexte 18 mis à jour à la fin du cycle N. Le second calculateur 12 met ici en oeuvre le même algorithme de signature que celui utilisé par le premier calculateur 11. [0094] A l'étape 250, le second calculateur 12 certifie l'alignement de son contexte avec celui du premier calculateur 11 en comparant, pour le même cycle N, la seconde signature S'N, qu'il a calculée, et la signature SN, qu'il a reçue du premier calculateur 11. [0095] En cas d'identité entre les deux signatures comparées, le second calculateur 12 atteste 11 de son alignement correct vis-à-vis du calculateur 11. Les étapes 210 à 250 sont itérées pour le cycle suivant. Le système 10 reste donc dans le mode de fonctionnement nominal, le premier calculateur 11 fonctionnant en maître et le second calculateur 12 fonctionnant en esclave. [0096] Ainsi, comme cela vient d'être présenté, le calculateur esclave atteste, de façon autonome et en sécurité, la cohérence sur le calculateur maître. [0097] L'utilisation d'une signature à la place des valeurs des variables du contexte garantie l'indépendance fonctionnelle entre les calculateurs, la fonction de hachage de l'algorithme de signature étant choisie en fonction de l'envergure des variables critiques à signer, afin que la probabilité de collision soit négligeable par rapport au niveau d'intégrité requis par le système (niveau SIL). [0098] En revanche, si les deux signatures comparées sont différentes, le second calculateur 12 conclut qu'il a perdu son alignement avec le premier calculateur 11 et passe à une étape 400 d'éducation. [0099] De préférence, le procédé passe à l'étape 400, après au moins une récxécution d'un cycle d'exécution de l'application et la confirmation de la constatation d'une perte d'alignement entre les premier et second calculateurs de sécurité. [0100] La figure 4 représente l'étape d'éducation 400 pour établir ou rétablir la cohérence d'un calculateur de sécurité. [0101] Cette étape est mise en oeuvre suite à une perte de cohérence d'un calculateur esclave vis-à-vis d'un calculateur maître détectée à l'étape 250. Elle peut également être mise en oeuvre suite à une période d'isolement d'un calculateur esclave qui s'achève par exemple par le rétablissement de la communication avec un calculateur maître ou un calculateur témoin, ou encore lorsque le calculateur resté isolé à cause d'une défaillance est remis en service, ce dernier étant forcément désaligné par rapport au calculateur maître. [0102] L'étape 400 implique une réplication intégrale du contexte du calculateur maître. Par exemple l'ensemble du contenu du premier contexte 15 à la fin du cycle N est transféré du premier calculateur 11 vers le second calculateur 12 afin de réinitialiser compiétement le second contexte 12 et relancer l'exécution de la second application à partir du cycle N+1 à partir de cette réplique. [0103] Dans une première étape 410, il est vérifié que le second calculateur 12 n'est pas affecté par une défaillance matérielle. Des diagnostics adaptés sont réalisés pour ce faire. [0104] Dans l'affirmative, à l'étape 420, est réalisée une image IN de la section de la mémoire du premier calculateur 11 qui contient le premier contexte 15 à la fin du cycle N d'exécution de l'application d'intérêt. [0105] Puis, à l'étape 430, cette image IN pour le cycle N est transmise, via le réseau 8, vers 12 le calculateur 12. [0106] A l'étape 440, la section de la mémoire du second calculateur 12 qui contient le second contexte 16 du calculateur 12 est initialisée à partir de l'image I, reçue. [0107] A l'étape 450, à partir du cycle N+1, l'exécution de la seconde réplique 14 de l'application est lancée dans le second contexte 16. [0108] Une étape 460 de quarantaine permet d'observer l'évolution de la cohérence du cal- culateur esclave par rapport au calculateur maître sur une pluralité de cycles. Comme dans le procédé 100, le calculateur maître 11 transmet, en début de cycle N+k, les premières données d'entrée à prendre en compte ainsi que la partie pertinente du premier contexte 15 pour le cycle N+k, et, en fin de cycle N+k, une première signature sur le premier contexte en fin le cycle N+k. A la fin du cycle N+k, le calculateur esclave 12 compare une seconde signature qu'il a calculée sur le second contexte 16 en fin de cycle N+k avec la première signature reçue du calculateur maître 11 pour vérifier la cohérence entre calculateur maître et calculateur esclave. [0109] Enfin, si l'étape de quarantaine apporte la preuve de la cohérence du calculateur esclave par rapport au calculateur maître sur plusieurs cycles, la redondance est rétablie à l'étape 470. [0110] En variante, lorsque la taille de l'image I, produite à l'étape 420 est conséquente, le temps nécessaire à sa transmission au cours de l'étape 430 depuis le calculateur maître vers le calculateur esclave peut dépasser le temps d'un cycle d'exécution, en fonction notamment de la latence et de la bande passante du réseau. Cependant, puisqu'un décalage temporel entre le calculateur maître et le calculateur esclave est admis, même si la transmission s'étale sur plusieurs cycles, une fois la transmission achevée et la mémoire du calculateur esclave réinitialisée, ce dernier reprend l'exécution de la réplique de l'application à partir du cycle N+1 et rattrape son retard lors de l'étape de quarantaine. [0111] La capacité à pouvoir rattraper le retard d'exécution avec le calculateur maitre nécessite une certaine marge en termes de capacité de calcul de la part du calculateur esclave. Néanmoins, ce besoin de capacité de calcul supplémentaire peut être minimisé en tenant compte du fait que le calculateur esclave n'a pas à produire et à transmettre de commandes vers les périphériques. [0112] L'étape d'éducation 400 permet donc de resynchroniser le calculateur esclave avec le calculateur maître et ainsi rétablir la redondance. [0113] Le calculateur esclave une fois resynchronisé reste en réserve, sans obligation pour lui de reprendre le rôle de maître tant que le calculateur maître courant reste opérationnel. [0114] Le procédé selon l'invention prévoit la possibilité pour le calculateur esclave de basculer en tant que maître. C'est ce qui va maintenant être présenté à la figure 5. 13 [0115] Le procédé 100 prévoit une étape 260 selon laquelle le second calculateur 12, à chaque réception d'un message du premier calculateur 11 (message initial MN ou signature SN) réinitialise un compteur temporel. [0116] Si le second calculateur 12 constate qu'à un moment où à un autre la valeur de cc compteur temporel est supérieure à une durée prédéterminée, indiquant ainsi qu'aucun message n'a été reçu du premier calculateur 11, le second calculateur 12 conclut que le premier calculateur 11 est défaillant et passe à l'étape 300 de basculement d'esclave à maître [0117] Dans le système 10, c'est donc le calculateur esclave qui décide de prendre la main lorsqu'il ne reçoit plus de message de la part du calculateur maître pendant une durée prédéterminée. [0118] Cependant, certaines contraintes doivent être vérifiées avant que le calculateur esclave n'initie effectivement l'étape 300 de basculement d'esclave à maître pour gagner en robustesse. [0119] Les étapes du procédé 100 peuvent être avantageusement mises en oeuvre avant d'autoriser le basculement de maître à esclave. [0120] En effet, de manière générale, la tolérance aux pannes au niveau système demande le respect des règles suivantes : [0121] 1. Éviter que des commandes erronées soient remises aux périphériques contrôlés. [0122] 2. Préserver la consistance du contexte entre le calculateur maître et le calculateur esclave pour éviter qu'une carence de coordination entre ces calculateurs conduise, au moment du basculement esclave-maitre, à une situation de discontinuité du flux de commandes dangereuse au niveau système. El est à noter que cette discontinuité peut être temporelle (trou), mais aussi du contenu (une donnée de sortie qui change de valeur de façon accidentelle). [0123] En effet, pour que le basculement du contrôle entre calculateurs n'ait pas d'impact sur les périphériques contrôlés, une continuité du flux de commandes doit être garantie. [0124] Si le basculement du contrôle entre calculateurs occasionne une interruption temporaire de ce flux de commandes, cette interruption doit rester inférieure à un intervalle de sécurité pour qu'il n'y ait pas de conséquences au niveau système. De même, l'évolution des valeurs des données de sortie lors du basculement doit rester fonctionnelle. [0125] La définition d'un intervalle de sécurité est propre à chaque système, à chaque fonc- tionnalité. Sa valeur est également dépendante des caractéristiques du réseau (taux de perte de messages, latence). En général, l'intervalle de sécurité est choisi à une valeur minimale correspondant à la durée d'un cycle d'exécution majorée de la latence introduite par le réseau. [0126] La première règle est satisfaite par chaque calculateur de sécurité 11 et 12, puisqu'un 14 tel calculateur génère uniquement des commandes en sécurité et qu'il assume automatiquement une condition restrictive de repli en cas de défaillance. [0127] Pour respecter la seconde règle, deux conditions sont nécessaires : [0128] i. Assurer, en sécurité, la cohérence entre les calculateurs de sécurité redondés. [0129] ii. Assurer qu'un et un seul des calculateurs de sécurité soit le calculateur maître du système à chaque instant. [0130] La première contrainte est respectée par le procédé 100, en particulier l'étape 250 de vérification de l'alignement des contextes, mais également de prise en compte des mêmes données d'entrée et des mêmes variables critiques du contexte pour l'exécution de l'application. [0131] La seconde condition est liée à la détection de la défaillance du calculateur maître, à sa mise en sécurité et au basculement du calculateur esclave de la condition d'esclave à celle de maître, pour remplacer le calculateur maître défaillant. [0132] L'exclusion du calculateur maître est une conséquence obligée de sa défaillance. En effet, en tant que calculateur de sécurité, il adopte une condition restrictive de repli en cas de défaillance. [0133] De préférence, la seconde règle doit également pouvoir être respectée en cas d'un partitionnement du réseau de communication 8 qui entraînerait l'impossibilité de maintenir la communication entre les calculateurs maître et esclave 11 et 12 et par conséquent l'alignement de leurs contextes. Si, par exemple, suite à une panne grave du réseau, le calculateur maître se trouvait complètement isolé du calculateur esclave, ce dernier basculerait d'esclave à maître. Cette situation est contraire à la sécurité puisque chaque partition du réseau possèderait un calculateur maître différent, et que ces deux maîtres ne seraient pas capables de garder une cohérence mutuelle faute de communication entre eux. [0134] Pour éviter ce risque, deux stratégies, non mutuellement exclusives, sont possibles, comme cela est illustré sur la figure 5. [0135] La première stratégie consiste à organiser une concertation entre le premier cal- culateur 11 défaillant et le second calculateur esclave 12 souhaitant basculer d'esclave à maître. Selon cette première stratégie, le premier calculateur 11 défaillant délègue son rôle. [0136] Pour cela, après avoir détecté sa propre défaillance à l'étape 170, le premier cal- culateur 11 se place, à l'étape 172, dans une condition restrictive de repli et envoi, à l'étape 174, un message de confirmation Conf de cette mise en sécurité vers le second calculateur 12. [0137] Ce n'est que lorsque le second calculateur 12 reçoit ce message de confirmation, par exemple dans une étape 270 après l'étape 260, qu'il peut réaliser l'étape 300 de basculement d'esclave à maître [0138] Le réseau 8 doit cependant être disponible pour transmettre cette confirmation. Dans le cas contraire, le basculement du calculateur esclave n'aura pas lieu. [0139] Une seconde stratégie consiste à prévoir un calculateur de sécurité supplémentaire 40 dans le système 10, disposé dans un site séparé des calculateurs maître et esclave et avec des moyens de communication indépendants du réseau 8. Cc calculateur 40 joue le rôle de calculateur témoin réalisant un acquittement extérieur et/ou un arbitrage afin d'assigner la fonction de maître, tout en déjouant une potentielle situation de double maître, notamment dans le cas de partitionnement du réseau 8. [0140] Selon cette seconde stratégie, en cas de perte de communication entre les calculateurs maître et esclave résultant d'un partitionnement du réseau ou d'une défaillance complète du calculateur maître, le calculateur témoin sert à attester, de façon indépendante, la connectivité entre les calculateurs maître et esclave, ainsi que leur condition. En cas de partitionnement du réseau, un calculateur qui perd sa connectivité avec le calculateur témoin adopte une condition restrictive de repli. [0141] Ainsi par exemple, après l'étape 260, à l'étape 280, le second calculateur 12 envoi une requête de consultation du calculateur témoin 40. [0142] Si aucune réponse n'est reçue dans un délai prédéfini (étape 282) indiquant que le calculateur témoin 40 n'est pas joignable, le second calculateur 12 infère une situation d'isolement et adopte une condition de repli en sécurité (étape 284). [0143] En revanche, si le second calculateur 12 conserve sa connectivité avec le calculateur témoin 40 et si le calculateur témoin 40 répond en indiquant l'absence d'autre calculateur maître dans la partition, ce ne sera que lors de la réception de cette réponse que le second calculateur 12 pourra réaliser l'étape 300. [0144] Dans cette seconde stratégie, puisque la capacité à basculer d'esclave à maitre dépend de la disponibilité du calculateur témoin 40, cette fonction de témoin peut avantageusement être elle-même redondée. Dans ce cas, les calculateurs maitre et esclave peuvent voter les conditions attestées par chacun des calculateurs témoins accessibles. [0145] Si le basculement d'esclave à maître (étape 300) intervient au cycle N+1, le second calculateur 12 réalise l'exécution de la seconde réplique 14 de l'application clans le second contexte 16 déterminé à l'issue du cycle N avec les secondes données d'entrée 18 collectées par le second calculateur 12 lors de l'étape 210 du cycle N. Puis les secondes données de sortie 20 calculées au cycle N+1 sont transmises par le second calculateur 12, qui agit maintenant comme maître, vers les périphériques 32. [0146] Au niveau d'un périphérique 32, un transitoire de l'intervalle temporel entre deux commandes successives apparaît lors du basculement. En effet, la première commande provient du premier calculateur 11 avant qu'il ne soit défaillant et la seconde commande, qui suit la première commande, provient du second calculateur 12 devenu 16 maitre. Lors du basculement, l'intervalle entre ces première et seconde commandes peut être de quelques cycles, mais ceci n'a pas de conséquence sur le système comme indiqué précédemment. [0147] Il est à noter que dans le cas où un calculateur maître est redondé par plusieurs cal- culateurs esclaves, une coordination entre calculateurs esclaves doit être établie pour qu'un et seulement un parmi ceux-ci remplace le calculateur maître défaillant. Pour ce faire, il suffit d'établir à l'avance une hiérarchie entre calculateurs permettant de déterminer quel calculateur esclave doit basculer d'esclave à maître pour remplacer un calculateur maître défaillant. Par exemple, cette hiérarchie prend la forme d'une liste ordonnée des identifiants des calculateurs assurant la redondance d'une même fonctionnalité. Alors, le calculateur remplaçant le calculateur maître courant en cas de défaillance de ce dernier est le calculateur dont l'identifiant suit celui du calculateur maître courant dans la liste. [0148] Par le procédé précédemment présenté, une cohérence entre les calculateurs maître et esclave est assurée, en remplacement de la synchronisation stricte de l'art antérieur. [0149] Même si les cycles d'exécutions des répliques des applications sont décalés tempo- rellement entre eux, le procédés permet de s'assurer que les sorties produites pour un même cycle d'exécution sont identiques. [0150] Avantageusement, pour rendre le procédé résilient, notamment à la perte de paquets correspondant à une partie d'un message ou à une réception défectueuse de messages provenant des périphériques 31, le calculateur maître peut émettre un même message plusieurs fois, ou produire des trames de con-ection permettant au calculateur esclave de détecter et de compenser les erreurs ou pertes, par exemple, en requérant auprès du maître la retransmission de tout ou partie du message. [0151] Il est à noter que, contrairement par exemple au système présenté dans le document EP 1 767 694 BI qui comporte un dispositif de commande permettant à chaque instant d'arbitrer entre les deux calculateurs celui qui doit fonctionner en maître et celui qui soit fonctionner en esclave, le présent système ne comporte pas obligatoirement un tel dispositif supplémentaire, même si dans une variante de réalisation il est envisagé d'utiliser un calculateur témoin. Dans le système présenté ici, c'est le calculateur esclave qui décide de prendre la main, notamment lorsqu'il ne reçoit plus de messages de la part du calculateur maître. Le système est donc immunisé contre les défaillances d'un tel dispositif supplémentaire de commande. [0152] L'homme du métier constatera que le système venant d'être présenté permet une re- dondance géographique à chaud de nature à garantir un niveau élevé de disponibilité de la fonctionnalité offerte par le système, sans pour autant nécessiter la synchronisation stricte des calculateurs de sécurité redondés. [0153] Les mécanismes de coordination souple mis en oeuvre entre les calculateurs de 17 sécurité redondés autorisent la suppression de la liaison dédiée entre ces moyens informatiques. [0154] Les calculateurs de sécurité redondés peuvent être physiquement à de grandes distances l'un de l'autre, permettant d'éviter les modes communs de défaillance. Par une telle redondance géographique, une plus grande disponibilité de la fonctionnalité fournie par le système est obtenue. [0155] La redondance à chaud étant assurée au niveau système, toute application portée sur les calculateurs peut en bénéficier de façon transparente, sans besoin d'études spécifiques ni de certifications au niveau applicatif d'une stratégie particulière. [0156] Compte-tenu de la latence introduite par un réseau de communication générique, le système présenté est particulièrement bien adapté au monde ferroviaire, en particulier aux fonctionnalités de contrôle du trafic des trains, notamment les fonctionnalités de signalisation. [0157] L'efficacité de la redondance dépend des performances du réseau qui lie les cal- culateurs redondés. Si les caractéristiques du réseau se dégradent, l'exécution chez le(s) esclave(s) prendra du retard et, si le problème persiste, la cohérence maitreesclave pourrait être perdue. Ainsi, on préfèrera l'utilisation d'un réseau dédié à la communication entre calculateurs de sécurité ou tout au moins d'un réseau permettant la réservation d'une bande passante adaptée afin d'assurer une qualité de service minimale aux communications entre maître et esclave. 18 [Revendication 1]