• Aucun résultat trouvé

Techniques de caractérisation de la Sûreté de Fonctionnement

Il existe deux grandes catégories de techniques pour l’évaluation de la sûreté de fonctionnement de systèmes informatiques : les techniques à base de modèles, et les techniques à base de mesures. La modélisation permet aux concepteurs d’obtenir des prévisions sur les attributs de sûreté de fonctionnement d’un système en se basant sur des mesures probabilistes du comportement de ses sous-systèmes. Ces résultats

sont utiles pendant les phases de conception du système, puisqu’elles permettent l’évaluation de mesures pertinentes de la sûreté de fonctionnement avant même que le système ne soit construit.

Cependant, les techniques de modélisation ne peuvent que prédire la sûreté de fonc- tionnement d’un système. Une fois qu’il a été développé et déployé, les techniques basées sur les mesures peuvent être employées afin d’obtenir des informations plus précises. Il existe deux familles de techniques orientées mesure permettant d’obtenir des informations sur la sûreté de fonctionnement d’un système : l’observation de systèmes opérationnels, et l’injection de faute.

1.4.1 Observation de systèmes opérationnels

Cette approche de caractérisation consiste à observer le comportement d’un grand nombre de systèmes au cours de leur vie opérationnelle. Elle est basée sur l’analyse des fichiers de journalisation maintenus automatiquement par les systèmes, ou sur des informations enregistrées par les administrateurs système. À partir de ces données, il est possible d’obtenir des informations sur la nature et la fréquence des défaillances subies en opération, et sur les types d’utilisation qui ont entraîné la défaillance du système. L’analyse des relevés de défaillance fournit des informations précieuses pour guider l’élaboration d’un modèle de fautes.

L’un des inconvénients de cette approche provient de la rareté des défaillances, qui oblige à recueillir des informations sur une population étendue de systèmes ayant des configurations identiques, pendant une longue période, avant de pouvoir faire des analyses statistiques. Cette approche est donc mal adaptée aux cycles de développe- ment courts, comme ceux des produits intergiciel.

À notre connaissance, il n’y a pas eu de travaux traitant de l’observation sur le terrain des défaillances de systèmes basés sur intergiciel. Cela rend difficile toute validation du degré de représentativité d’un modèle de fautes donné pour ces cibles. Le modèle de fautes que nous utilisons pour les fautes physiques (c.f. le chapitre2) est issu du travail considérable qui a été mené pour caractériser les fautes physiques affectant les processeurs et les mémoires, ainsi que de travaux plus récents sur les fautes dans les réseaux de télécommunication. En ce qui concerne les fautes du logiciel, notre modèle de fautes est inspiré de l’analyse structurelle de l’architecture de systèmes à base d’intergiciel de communication, que nous avons présenté au §1.3.

1.4.2 L’injection de fautes

L’injection de fautes est une technique de caractérisation de la sûreté de fonctionne- ment bien connue [Arlat et al. 1993], qui consiste à étudier les réactions d’un système face à des conditions anormales : par l’insertion délibérée de fautes dans le système cible, on cherche à accélérer la caractérisation de son comportement en présence de fautes. Cette approche est complémentaire aux approches analytiques, et permet

d’examiner des états du système qui ne seraient pas atteints par le test fonctionnel conventionnel. L’objectif des expériences d’injection de fautes est de simuler l’effet de fautes réelles qui pourraient affecter le système cible, c’est-à-dire d’étudier l’impact des erreurs qui sont dues à l’activation de la faute.

Dans le contexte général de la sûreté de fonctionnement, l’injection de fautes se positionne comme une technique au service de l’élimination des fautes et de la prévision des fautes. Concernant l’élimination des fautes, l’injection de fautes peut être vue comme un moyen de tester les mécanismes de tolérance aux fautes vis-à-vis d’entrées pour lesquelles ils ont été conçus : les fautes. Sur le plan de la prévision des fautes, l’injection de fautes constitue une forme d’évaluation expérimentale per- mettant d’estimer des paramètres tels que le taux de couverture des mécanismes de tolérance aux fautes ou la latence de détection d’erreur, et ainsi d’évaluer l’efficacité des mécanismes de tolérance aux fautes.

Les campagnes d’injection de fautes fournissent plusieurs types de résultat :

• elles permettent de comprendre les modes de défaillance du système, et d’observer son comportement en présence de faute ;

• elles fournissent des informations sur les mécanismes de tolérance aux fautes (éventuellement) présents dans le système ciblé, et en particulier permettent de mesurer leur facteur de couverture (la probabilité conditionnelle que, pour une faute donnée dans le système, le système pourra la tolérer).

Les premiers travaux sur l’injection de fautes visaient à simuler l’effet de fautes phy- siques résultant de la radiation électromagnétique [Karlsson et al. 1998]. Les tech- niques utilisées consistaient à irradier les circuits électroniques de ions lourds, ou à agir directement sur les broches des microprocesseurs en modifiant les tensions. Avec la montée en complexité et en vitesse des circuits intégrés modernes, ces techniques sont devenues difficiles à appliquer et à cibler de manière précise. La majorité des travaux récents se sont focalisés sur l’injection de fautes par logi- ciel [Kanawati et al. 1992]. Cette technique, dite d’émulation de fautes, consiste à effectuer la corruption de l’état du système par des mécanismes logiciels. Elle permet de cibler précisément l’adresse mémoire à corrompre et de synchroniser l’instant où la faute est injectée avec l’activité de la charge applicative. L’injection de fautes par logiciel permet donc de cibler différentes couches dans le système (le noyau du sys- tème d’exploitation, les services système, l’intergiciel, le code applicatif), et de simuler des fautes dans la mémoire principale, les registres du microprocesseur, ou le bus de communication. Elle offre une grande souplesse concernant le choix du modèle de fautes et le mode de déclenchement de l’injection.

Concernant la représentativité des fautes, des études ont démontré que l’utilisation d’inversions isolées de bit entraîne des erreurs semblables à celles résultant de techniques d’injection physiques (e.g. [Rimén et al. 1994, Fuchs 1998]) et permet de simuler les erreurs provoquées par les fautes logicielles avec une bonne fidé- lité [Madeira et al. 2000].