EDFElectricitéde France
THOMSON-CSF
L I Stechnicatome
Caractérisation des COTS :
comment améliorer la connaissancedes modes de défaillance des COTS ?
Jean-Charles FabreLAAS et LLLLIIIISSSS
Le problème et son contexteLe problème et son contexteSélection des COTS ?
☞ adéquation aux besoins fonctionnels ••• et non-fonctionnels
méthodes et outils de caractérisation des COTS
qualité des composants (étalonnage-benchmarking)
Evaluation de leur comportement en présence de fautes
Le problème et son contexteLe problème et son contexteSélection des COTS ?
Démonstration de la robustessevis-à-vis des erreurs (analysedes modes de défaillance)
méthodes et outils de caractérisation des COTS
☞ adéquation aux besoins fonctionnels ••• et non-fonctionnels
Evaluation de leur comportement en présence de fautes
Le problème et son contexteLe problème et son contexte
Les techniques de base Quel COTS:
les cibles?
Le niveau d’appropriation
Les outils
Les types de résultats et ...
L’analyse.
méthodes et outils de caractérisation des COTS
Les ciblesLes cibles• Les exécutifs : pourquoi ?
— Logiciel complexe dont le développement est un métier en soi— Services de base permettant l’exécution des applications
(gestion de tâches, de mémoire, de communication,de synchronisation, d’E/S, de fichiers…)
— Les applications dépendent fortement de leur boncomportement y compris en présence de fautes
• Quels exécutifs ?— Les micronoyaux temps-réel : Chorus, LynxOS, VxWorks
— Les systèmes opératoires généraux : Unix, Windows…
— Les « intergiciels » (Middleware) : Corba, Dcom...
Le niveau d’appropriationLe niveau d’appropriation
Boîte noire
COTSOpen source, Freeware
Logiciel Maison & PDS
(Previously Developed Software
COTSpropriétaire
Interface fonctionnelleet documentation (installation, utilisation)
+ mise à disposition du code source du COTS
+ Documents de conception et de test
Boîte grise Boîte blanche
Les techniques de baseLes techniques de base• Analyse par injection de fautes
— Identification des modes de défaillance— Evaluation de la couverture de détection d’erreur— Identification des canaux de propagation d’erreur— Caractérisation de la robustesse de l’interface
• Amélioration du confinement par empaquetage
• Evaluation du micronoyau empaqueté
Les techniques de baseLes techniques de base• Les techniques d’injection
— Physique (techniques de forçage, ion-lourds, EMI)— Par Logiciel (SWIFI: SoftWare Implemented Fault Injection)Emulation des erreurs induites par des fautes soit d’origine physique
soit liées à la conception et la programmation des logiciels
• Le modèle de faute— Bit-flip aléatoire dans une zone mémoire— Substitution déterministe par choix d’instructions ou de valeurs
erronées / sémantique des appels à l’exécutif COTS
Les techniques de baseLes techniques de base• Analyse des modes de défaillance
— La cible de l’injection est l’exécutif : Dans quelle mesure lescontrôles internes détectent les erreurs internes dues à desfautes (physiques ou du logiciel) ?
— La cible est le logiciel d’application: Dans quelle mesure lescontrôles effectués au niveau de l’interface (API) détectent leserreurs et empêchent leur propagation ?
• Les modes de défaillance— L’erreur est détectée : error status, exceptions, protection &
traps, etc.— L’erreur n’est pas détectée : Crash exécutif, crash application,
comportement/sorties erronées de l ’application
L’outil BallistaL’outil Ballista• Objectif
— Test automatique de systèmes opératoires à interface POSIX— Ciblage sur les fonctions de l’API (paramètres) ➪ robustesse
Carnegie MellonUniversity, USA
Espace d’entrée Espace de sortie
Entréevalide
Entréeinvalide
Comportementattendu
OK
indéfini
erreur
Opération robuste
Défaillancereproductible
Défaillancenon reproductible
UNIX
posi
x
Ballista effectue l ’injection de faute en utilisant des combinaisons de paramètres valides et invalides
ExpérimentationsExpérimentationsApplication à 175-233 fonctions POSIX sur différents
systèmes opératoires du marché• Examples de paramètres invalides
— Entiers ou descripteurs de fichier : not in range,0,1,-1,+/-maxint— Pointer : null, -1, hors zone mémoire— Chaînes de caractères: dimension, format incorrect
• Resultats— C-R-A-S-H + taux de défaillance normalisé + comparaison— Identification de certaines situations d’erreur de fonctions
invoquées avec des paramètres incorrects— 37% et 58% des tests non défaillants
Comparaison des résultatsComparaison des résultats
0% 10% 20% 30% 40% 50%
SunOS 5.5
SunOS 4.13
QNX 4.24
QNX 4.22
OSF-1 4.0
OSF-1 3.2
NetBSD
Lynx
Linux
Irix 6.2
Irix 5.3
HPUX 10.20
HPUX 9.05
FreeBSD
AIX
Abort % Silent % Restart %
Catastrophic
Taux de défaillance normalisé (%)
AIX
FreeBSD
HP-UX B.10.20
Linux
LynxOS
QNX 4.24
SunOS 5.5
NetBSD
Irix 6.2
Irix 5.3
HP-UX B.9.05
OSF-1 3.2
OSF-1 4.0
QNX 4.22
SunOS 4.13
Abort
SilentRestart
Catastrophic
0 10 20 30 40 50
9
15 Exécutifs “OTS”[Koopman & DeVale 99]
15 Exécutifs “OTS”[Koopman & DeVale 99]
Terminaison anormale signalée
Aucuneobservation
Blocage/relanced’une tâche
Blocage comple(i.e., reboot)
L’outil MAFALDAL’outil MAFALDA• Cible: µ-noyaux COTS Exécutif pour systèmes
embarqués critiquesNouvelletendance
• µ-noyaux de dernièregénérationarchitecture à composantsconfigurabilitéinterfaces et middleware
• Exécutif et technologie µ- noyau services de base d’exécutif exécutif = micronoyau + services
...
SYN SCHED
Microkernel API
Middleware API
Microkernel
Applications
Systemservices
COMMEM
Standard API (Posix, Corba, Java VM)Interface propriétaire (spécifique à un domaine d’application)
LAAS-CNRS, Toulouse, France
Analyse par injection de fautesAnalyse par injection de fautes
• robustesse de l’interface• mécanismes de détection d’erreur
• corruption des paramètres• corruption du micronoyau
• comportement d’un module • propagation inter-module
Evaluation Types de fautes
Cibles de l’injection Observation
Erreur
Faute
Interface micronoyau
SYN COM MEM
SYN COM MEM
Faute
propagation
Composantsfonctionnels
Niveauapplication
...
...
Processusde charge
Caractérisation[Fabre et al. 99]
Caractérisation[Fabre et al. 99]
Architecture de MAFALDAArchitecture de MAFALDA
Rack de machines cibles- Intel Pentium
Machine pilote - Sun SPARCstation 20 (Solaris 2.5.1)
Architecture de MAFALDAArchitecture de MAFALDA
Machine pilote - Sun SPARCstation 20 (Solaris 2.5.1)
Application Level
MICROKERNELINJECTOR
CONTROLLER
ExperimentResults
Log File
CampaignFile
Descriptor
Workload File
#1#2#3
#4
remoteaccessW1
Descriptors
Microkernel Level
W2
PARAMETERINJECTOR
EXPERIMENT
Rack de machines cibles- Intel Pentium
Architecture de MAFALDAArchitecture de MAFALDA
Machine pilote - Sun SPARCstation 20 (Solaris 2.5.1)
Application Level
MICROKERNELINJECTOR
CONTROLLER
ExperimentResults
Log File
CampaignFile
Descriptor
Workload File
#1#2#3
#4
remoteaccessW1
Descriptors
Microkernel Level
W2
PARAMETERINJECTOR
EXPERIMENT
Architecture [Rodriguez et al. 99]
Architecture [Rodriguez et al. 99]
Rack de machines cibles- Intel Pentium
Comportement en présence de fautesComportement en présence de fautes
µkCjµkCi
Micronoyau
Application / middleware
CorruptionInterne
! Détection interne" Status d’erreur" Exceptions
! Blocage exécutif
! Défaillance application" Résultats erronés" Blocage application
Erreur
Propagation
Erreur
Propagation
Sévérité
CorruptionApplication
API
Types de résultats expérimentauxTypes de résultats expérimentaux
Synchronization exception latencies
0
50
100
150
200
250
300
350
400
0
0,6
1,2
1,8 2,4 3
3,6
4,2
4,8
5,4 6
6,6
7,2
7,8
8,4 9
9,6
or m
ore…
nanoseconds
,00%10,00%20,00%
30,00%40,00%50,00%60,00%70,00%
80,00%90,00%100,00%
x 1E+6
87.0%
9.0%0.0%2.2%
0%
20%
40%
60%
80%
100%
Microkernel Fault Injection
Parameter Fault Injection
No Wrapper
SYN Wrapper
Propagation d’erreurModes de défaillance (SYN)
Efficacité des wrappersLatence de détection (EXC.)
63.3 %
36.7 %
0%
100% 0%
SYN
COM
MEM
15.8%
84.2%EX
AF
ES 0%
EX
AF
ES
SYSHANG1,4%
EXCEPTION38,1%
APPHANG6,0%
KDEBUG19,9%
APPFAIL9,0%
ERROR STATUS3,0%
NO OBS.28,5%
3010 Exp.
Détection (41,1%)
Blocage(21,3%)
Défaillance (9%)
Exp. non significatives
(28,5%)
ExpérimentationExpérimentation• Micronoyau Chorus ClassiX
— Charges: processus indépendants/composant micronoyau— Configuration: synchro., mémoire, ordonnancement, comm.
(Version standalone)
— Wrappers: synchronisation, ordonnancement— Code source: disponible
• Micronoyau LynxOS— Charges: ré-implémentation en fonction de l’interface Posix— Configuation: synchro., mémoire, ordonnancement, comm.
(Niveaux de service enrichis Posix)
— Wrappers: non— Code source: non disponible
EnseignementsEnseignements• Leçon 1
— Les résultats obtenus donnent des indications sur le comportementen présence de fautes, sur les choix de conception desmicronoyaux COTS et sur la nécessité de l’empaquetage.
• Leçon 2— Les profils de charge indépendants permettent de relever des
faiblesses, fautes de conception ou erreur de programmation. Lesdonnées brutes sont d’un grand intérêt pour le déverminage.
• Leçon 3— Les résultats dépendent fortement de la configuration de
l’instance, du découpage en composants, du profil d’utilisation, de laplate-forme matérielle
EnseignementsEnseignements• Leçon 4
— La comparaison entre micronoyaux a des limites dès lors que leurinterface diffère. Les expériences permettent de renseigner lechoix en fonction de résultats ciblant différentes fonctionnalités.
• Leçon 5— L’utilisation de wrappers permet d’améliorer de manière sensible le
comportement en présence de fautes, en particulier pour unmicronoyau stand alone, i.e. en configuration minimale.
• Leçon 6— La décision d’empaquetage et la sélection du micronoyau doit se
faire en fonction des résultats obtenus, du type d’application, desperformances et des hypothèses à garantir pour la mise en œuvrede couches supérieures de tolérance aux fautes.
ConclusionConclusion• Caractérisation des modes de défaillance par injection
de fautes— Une nécessité pour la sélection de COTS, en particulier des
exécutifs (applicable à d’autres logiciels COTS)— L ’analyse par composant, en combinant les approches déterministe
et aléatoire, permet d’identifier le COTS adéquat (instance, plate-forme, profil application, comportement)
• Techniques de Wrapping— Complémentaires— Efficaces
• Intérêt commun aux fournisseurs et aux intégrateurs !