Académique Documents
Professionnel Documents
Culture Documents
3. Approches pratiques
3.1 Architectures en grappe
3.1.1 Principales caractéristiques
3.1.2 Architecture Sun Cluster
3.2 Tolérance aux fautes dans CORBA
3.3 RSERPOOL
3.3.1 Profil minimal
3.3.2 Profil complet
4. Une étude de cas : un routeur Internet
4.1 Tolérance aux fautes dans un routeur
4.2 Tolérance aux fautes des applications de routage
4.2.1 OSPF , RIP
4.2.2 BGP
4.2.3 Bilan
5. Conclusion
INTRODUCTION
• Cet article a pour but de présenter la sûreté de fonctionnement des
applications en réseau sous un angle pratique. Nous commençons par
décrire rapidement les concepts de la sûreté de fonctionnement des
systèmes informatiques puis nous nous attachons à l’un des moyens pour
l’obtenir, la tolérance aux fautes, qui reste indispensable pour que le
système continue à fonctionner malgré la présence de fautes n’ayant pu
être ni éliminées ni prévenues. Nous donnons alors un panorama des
techniques pouvant être employées en mettant l’accent sur les
particularités des systèmes répartis montrant la complexité du
développement d’applications en réseau tolérantes aux fautes.
PU Pool User
•
Le MTTF (Mean Time To Failure ) est la moyenne des durées de fonctionnement
de l’instant 0 à la première défaillance. Cela correspond en français à la moyenne
des temps de bon fonctionnement, mais ne doit pas être confondu avec le MTBF
(Mean Time Between Failure ) qui est la moyenne des temps séparant deux
défaillances consécutives. Pour une entité réparable, connaissant une alternance
de périodes de fonctionnement ininterrompu et de périodes de maintenance, le
MTBF est la moyenne des durées incluant la période de remise en état.
• On appelle MUT (Mean Up Time ) la moyenne des temps de bon fonctionnement.
En général, un système satisfaisant connaît des périodes de panne beaucoup plus
courtes que les périodes de bon fonctionnement ininterrompu ; de ce fait, le
MTBF est à peine plus élevé que le MUT.
• Le MTTR (Mean Time To Repair ) correspond au temps nécessaire à la réparation
de l’entité et à la reprise du service, temps pendant lequel il est donc inopérant.
• La figure 6 illustre les temps moyens que nous venons de définir et leurs
relations.
• IF r > 6 THENsignal = rougeELSEsignal = vertFI
• Une défaillance est donc la conséquence d’une ou plusieurs erreurs, elles-
mêmes conséquences de l’utilisation de composants fautifs (composants
affectés de fautes).
• ... Faute ® Erreur ® Défaillance ® Faute ® Erreur ® ...
• Les flèches de cette chaîne expriment la relation de causalité entre faute,
erreur et défaillance. Elles ne doivent pas être interprétées au sens strict.
Une faute ne conduit pas inéluctablement à une erreur et une erreur ne
conduit pas nécessairement à une défaillance.
• Exemple :
• Dans l’exemple précédent, si les opérandes sont 0101 et 0010, le résultat
obtenu (0111 ) est correct. La faute ne conduit pas, dans ce cas, à une
erreur. Si les opérandes sont 1011 et 0011, le résultat erroné obtenu
(1000 ) est strictement supérieur à 6. L’erreur commise ne conduit pas à
une défaillance.
• 2.3.1 Communications point-à-point
• Une communication point-à-point fiable est en général obtenue en utilisant
un protocole de transport fiable tel que TCP (Transmission Control
Protocol ). TCP masque les pertes de messages en utilisant des accusés de
réception et des retransmissions. Ces fautes par omission sont alors
complètement cachées aux applications TCP.
• Cependant, une perte de connexion ne peut être facilement masquée. Cela
peut se produire lorsqu’une connexion TCP est interrompue brutalement
et qu’aucun message ne peut plus être transmis. En général, il en résulte
une exception qui est transmise à l’application. L’un des moyens pour
masquer ce genre de fautes est d’avoir une couche intermédiaire, telle que
l’on trouve dans les systèmes répartis dans ce que l’on appelle le
middleware, chargée de construire une nouvelle connexion
automatiquement. Dans ce cadre, il est important de comprendre la
sémantique des couches de communication sous-jacentes telles que les
RPC (Remote Procedure Call - Appels de Procédure à distance) sur
lesquelles reposent de très nombreux middleware.
• Le but des RPC est de masquer les communications à distance en rendant
un RPC similaire à un appel local. Cela est réalisé en générant une
procédure locale ou souche cliente qui se charge d’emballer les arguments
dans une requête et d’attendre une réponse. Cette requête est alors
transmise par le réseau à une souche serveur capable de déballer les
arguments, d’appeler la procédure demandée et de renvoyer le résultat.
Cependant, en cas d’erreurs, les différences entre appel local et appel
distant ne sont pas toujours faciles à masquer.
• On peut distinguer cinq classes différentes de défaillances pouvant se produire
avec les RPC.
• 1.Le client n’arrive pas à localiser le serveur. Celui-ci peut être arrêté pour une
raison quelconque, ou encore il peut y avoir une incompatibilité entre le client
et le serveur due par exemple à une mise à jour du serveur entre le moment où
le client a été installé et celui où il invoque effectivement le service prévu. Une
solution possible revient à prévoir un traitement d’exception approprié, en
réduisant malheureusement le niveau de transparence fourni par les RPC, un
appel local et un appel distant n’étant plus complètement équivalents.
• 2.La requête du client vers le serveur est perdue. Ce cas peut être géré au
niveau du système d’exploitation ou de la souche cliente en armant un
temporisateur lors de l’émission de la requête. Si ce temporisateur expire avant
la réception d’une réponse, la requête est simplement réémise. Si la requête
n’était finalement pas perdue, le serveur doit pouvoir détecter qu’il y a eu
réémission d’une même requête.
• 3.Le serveur tombe en panne après la réception d’une requête. Le problème
est différent selon que le serveur tombe en panne avant ou après avoir traité la
requête et préparé une réponse.
• On distingue alors plusieurs solutions. Avec la technique garantissant la
sémantique d’invocation « au moins une fois », la souche cliente continue
à réémettre la requête tant qu’elle ne reçoit pas de réponse. Avec la
technique « au plus une fois », la requête est abandonnée et un rapport
d’erreur est transmis à l’application cliente. Cela implique que la requête
peut ne pas être exécutée. La sémantique idéale « exactement une fois »
est en général très difficile à garantir.
• 4.La réponse du serveur vers le client est perdue. Comme dans le cas de
la perte d’une requête, la solution se base le plus souvent sur un
temporisateur avec réémission de la requête. Cependant, le client ne peut
pas savoir facilement pourquoi il ne reçoit pas de réponse : le message de
requête ou de réponse peut être perdu, ou simplement le serveur peut
être lent. Un moyen de se prémunir contre d’éventuelles incohérences, en
cas d’exécutions multiples d’une même requête, est de ne manipuler que
des opérations idempotentes. Une autre solution consiste à marquer
chaque requête d’un numéro de séquence afin de différencier une
nouvelle requête et une réémission.
Nota :
• une opération est idempotente lorsque l’exécution répétée de cette
opération produit toujours le même résultat.
• 5.Le client tombe en panne après l’envoi d’une requête. La requête devient
alors orpheline et peut causer de nombreux problèmes comme la
consommation inutile de temps machine ou le verrouillage de ressources.
Plusieurs solutions sont envisageables :
• l’extermination : cela nécessite la journalisation préalable des requêtes
clientes avant leur envoi pour pouvoir identifier les requêtes orphelines ;
• la réincarnation : le temps est découpé en époques. Lorsqu’un client
redémarre, il initialise une nouvelle époque et diffuse un message à toutes
les machines. Tous les traitements en cours pour ce client sont alors avortés ;
• la réincarnation douce : seules les requêtes dont le demandeur ne peut être
retrouvé sont annulées ;
• l’expiration : une requête doit être traitée en un temps T, sinon un nouveau
délai doit être demandé. La difficulté est ici dans le choix d’une valeur
raisonnable du délai T.
• 2.3.2 Communications multipoints
• Pour des communications multipoints, des mécanismes de plus haut niveau
que le niveau transport doivent être fournis, en tirant partie des propriétés
de fiabilité du protocole TCP. Lorsque le nombre n de participants est faible,
la solution la plus simple est de mettre en place n canaux de communication
point-à-point. Mais lorsque n devient grand, cela n’est plus viable en terme
de bande passante du réseau. De nombreuses propositions ont été faites
dans la littérature, dont les plus représentatives utilisent des messages de
retour (feedback ) avec contrôle, hiérarchique ou non. Pour une
comparaison des différentes solutions, le lecteur pourra se référer à .
• Le protocole SRM (Scalable Reliable Multicasting ) permet la diffusion de
messages au sein d’un groupe avec un contrôle non hiérarchique. Lorsqu’un
message a été perdu (la détection d’une perte du message étant laissée à
l’application), le récepteur R envoie un déni de réception à l’ensemble du
groupe, après avoir attendu un temps aléatoire (temps devant être différent
sur les différents membres du groupe). Si, pendant ce délai, R reçoit un déni
d’un autre membre du groupe sur le même message, il supprime en fait son
message de retour et ne l’envoie pas.
• En effet, l’émetteur ayant déjà reçu un déni retransmettra le message
perdu prochainement. Le passage à l’échelle peut être amélioré en
autorisant un membre du groupe ayant reçu correctement le message m
de le rediffuser avant que l’émetteur original ne le fasse.
• Cependant, pour un passage à très grande échelle, un contrôle
hiérarchique est indispensable. Il s’agit de décomposer l’ensemble des
sites communicants en sous-groupes et d’organiser ces sous- groupes en
une structure d’arbre. Un protocole de diffusion suffisant pour un petit
nombre de destinataires peut alors être utilisé au sein de chaque sous-
groupe. Un coordinateur doit être désigné dans chaque sous-groupe pour
centraliser les demandes de retransmission de ses membres.
• 2.4.1 Consensus
• Dans le cas d’une redondance massive (n > 2), il est souvent nécessaire
d’effectuer un vote réparti sur une valeur calculée n fois afin de rechercher
un consensus. La valeur peut ensuite être utilisée comme un signal pour
déclencher un traitement (cas d’une valeur binaire), ou bien elle peut
correspondre à une donnée quelconque. Dans le cas d’un système idéal,
stable et sans erreur, un consensus est en général facilement obtenu par un
simple échange de messages. Le fait que les processus participant au vote
puissent subir des défaillances, aussi bien au niveau des canaux de
communication que des processeurs, rend le problème beaucoup plus
difficile.
• Cependant, le paradigme du consensus revêt une importance particulière
car il peut être utilisé comme brique de base pour résoudre de nombreux
problèmes d’accord tels que l’ordre total (nécessaire pour la diffusion
atomique notamment), l’engagement atomique, l’appartenance à un
groupe et l’élection . Cela explique que ce problème fondamental des
systèmes répartis a suscité et suscite encore de très nombreux travaux de
recherche.
• 2.4.2 Diffusion fiable
• La diffusion est largement utilisée dans la réplication de processus. Elle doit
donc être fiable même en présence de fautes au niveau des processeurs ou
des liens de communication. Un protocole de diffusion est fiable s’il a les
trois propriétés suivantes :
• validité : si un processus correct diffuse un message m alors tous les
processus corrects reçoivent ce message ;
• entente : tous les processus sont d’accord sur ce qui est reçu ;
• intégrité : pour tout message m, chaque processus correct ne reçoit m
qu’une seule et unique fois (sachant que m a été préalablement émis par
un processus donné).
• La notion d’ordre est également très importante dans la gestion de
groupes de processus. On peut distinguer quatre niveaux concernant
l’ordre de délivrance des messages à l’intérieur d’un groupe.
• aucune garantie : les processus corrects reçoivent les messages mais dans
n’importe quel ordre ;
• ordre FIFO (First In, First Out ) : tous les messages diffusés par un
processus donné sont délivrés dans l’ordre où ils sont émis ;
• ordre causal : si la diffusion d’un message m précède causalement la
diffusion de m ′, alors aucun processus correct ne remet m ′ avant d’avoir
remis m ;
• ordre total : toutes les destinations reçoivent les messages dans le même
ordre.
• Une diffusion fiable avec ordre total est dite atomique.
• Pour un type de diffusion donné, les différents protocoles se distinguent
selon les hypothèses faites relativement :
• aux membres du groupe : mode de défaillance supposé, nombre maximal
de défaillances tolérées... ;
• au système de communication sous-jacent : mode de défaillance supposé,
qualité de service (délais maximaux garantis par exemple)... ;
• aux horloges utilisées : une horloge globale, ou des horloges locales.
• 2.4.3 Protocole d’élection
• Lorsqu’une solution à un problème est basée sur l’existence d’un site
coordinateur unique, la défaillance de ce coordinateur doit être tolérée.
Un protocole d’élection permet de désigner un et un seul coordinateur
remplaçant. Il existe de nombreux algorithmes d’élection. Ils font tous
l’hypothèse que les processus participants sont numérotés de manière
unique et que chaque processus connaît le numéro des autres processus.
Le processus de numéro maximal est ensuite élu.
• Les différents algorithmes varient en termes de complexité, d’hypothèses sur le
réseau (topologie, synchrones ou asynchrones...), de mécanismes de choix d’un
processus (par comparaison des numéros ou par manipulation de ceux-ci au
travers d’opérations arithmétiques) et de nécessité de connaître le nombre total
n de processus participants.
• Dans le cas d’un réseau synchrone bidirectionnel en anneau, le premier
algorithme nécessitant dans le cas le pire O(n log n ) messages a été proposé par
Hirschberg et Sinclair . Cet algorithme peut facilement être adapté pour un réseau
asynchrone. Des solutions pour des réseaux asynchrones unidirectionnels ont par
ailleurs été proposées par et.
• 3.1 Architectures en grappe
3.1.1 Principales caractéristiques
3.1.2 Architecture Sun Cluster
3.2 Tolérance aux fautes dans CORBA
3.3 RSERPOOL
3.3.1 Profil minimal
3.3.2 Profil complet
• La tolérance aux fautes étant souvent conçue de manière ad hoc, l’émergence
de solutions commerciales de bonne qualité est un fait récent mais marquant
qui contribuera à l’amélioration de la fiabilité des applications. Nous
mentionnons tout d’abord les architectures en grappe pour lesquelles les
constructeurs informatiques fournissent aujourd’hui des solutions clés en
main pour la haute-disponibilité des applications et donnons comme exemple
le produit Sun Cluster. Puis nous présentons les travaux de deux consortiums
de normalisation, l’OMG (Object Management Group ) pour les applications à
base d’objets distribués et l’IETF (Internet Engineering Task Force ) pour les
applications Internet.
• 3.1 Architectures en grappe
• 3.1.1 Principales caractéristiques
• Les architectures basées sur une grappe (ou « cluster ») de machines
standards interconnectées entre elles sont de plus en plus répandues. Une
architecture en grappe est généralement vue comme ayant les
caractéristiques suivantes .
• •Composants standards : le moteur principal de la réalisation
d’architectures en cluster est de bénéficier de matériel standard et peu
coûteux produit à grande échelle ; ainsi une grappe est le plus souvent
construite à partir de composants standards, sans nécessairement utiliser
d’écran. Une grappe contient en général deux types de composants, les
nœuds de calcul et les disques de stockage.
• •Système d’exploitation en local : chaque nœud de la grappe utilise son
propre système d’exploitation, qui peut être vu comme un composant
logiciel standard. Cela différencie de telles architectures à la fois des
machines multiprocesseurs, où un système d’exploitation unique est
capable de gérer plusieurs nœuds à la fois et du matériel dédié offrant
une mémoire partagée, et également des architectures parallèles dans
lesquelles une version allégée du système d’exploitation est utilisée sur
chaque nœud.
• •Réseau d’interconnexion rapide : le bus interne reliant les composants
est le plus souvent orienté message et basé sur une technologie haute
vitesse telle que ATM (Asynchronous Transfer Mode) ou CSMA (Carrier
Sense Multiple Access).
• •Système de gestion : celui-ci joue un rôle majeur pour offrir
l’abstraction d’une entité parfaitement intégrée et pouvant être vue
comme une cible de déploiement unique.
• •Interface de programmation : un ensemble d’opérations est défini afin
que les programmeurs et les administrateurs puissent exploiter toute la
puissance de la grappe de machines. Cela inclut des opérations pour
connaître le nombre de machines de la grappe, surveiller leur état, lancer
et surveiller l’exécution des applications, etc.
• Certaines architectures en grappe offrent des propriétés spécifiques qui
les rendent particulièrement bien adaptées aux applications critiques
ayant des besoins importants de sûreté de fonctionnement, mais les
objectifs de construction de ces architectures sont très variés.
• •Haute-disponibilité : certaines architectures offrent des garanties de
disponibilité de 99,999 % du temps telles que ce qui est exigé par les
applications critiques.
• Cela implique l’utilisation de matériel, infrastructure de communication,
système d’exploitation appropriés.
• •Mécanisme de basculement (failover ) : lorsqu’un nœud de la grappe
subit une défaillance ou est indisponible, ce mécanisme permet de
basculer les traitements en cours sur ce nœud vers un autre nœud
disponible.
• •Pas de point de défaillance unique : pour une application fiable, cela
est la condition minimale que doit remplir le système ; la défaillance d’un
composant ne doit pas paralyser l’ensemble du système. Cette propriété
doit prendre en compte aussi bien les composants matériels que logiciels.
• •Synchronisation d’horloges : certaines architectures sont capables de
synchroniser les horloges de manière très précise.
• •Communications fiables : grâce à du matériel de communication
spécifique, de nombreuses architectures garantissent la fiabilité des
communications.
les composants fabriques (F) qui créent les objets au sein des sites
serveurs sur instruction du service de réplication ;
4.2.1 OSPF , RIP
4.2.2 BGP
4.2.3 Bilan
• Beaucoup d’applications critiques ont des besoins de tolérance aux fautes,
parfois en compétition avec leur mission (souvent pour des raisons de
performance). C’est le cas en particulier des applications de
télécommunications qui doivent répondre à des contraintes de disponibilité
draconiennes (99,999 %) qui font maintenant partie des exigences de base
des opérateurs, quand ce ne sont pas tout simplement les contraintes
réglementaires comme pour le téléphone. Pour cette raison, la tolérance
aux fautes a toujours été au cœur de la réalisation des équipements et
occupe une place considérable ; on estime que la moitié du logiciel d’un
commutateur est consacré au traitement des erreurs et des fautes.
• Le domaine des réseaux IP (Internet Protocol ) n’a pas suivi ce chemin
pendant longtemps car son modèle même suppose que les routeurs sont
faillibles et prévoit les moyens de les contourner. À mesure que les réseaux
IP se sont développés et qu’ils sont devenus commerciaux, les
investissements supplémentaires requis par cette approche (ou les
défaillances causées par l’absence de redondance) et la complexité induite
sont devenus difficiles à justifier. Aujourd’hui, la première exigence des
opérateurs de réseaux IP est la fiabilité et la disponibilité.
• À la fin des années 1990, la plupart des grands fabricants de routeurs ont
intensifié les efforts sur la tolérance aux fautes de leurs équipements.
Jusque-là, la tolérance aux fautes se résumait au redémarrage plus ou
moins rapide des logiciels de contrôle (on fait ici abstraction de la
tolérance aux fautes matérielles pour laquelle de nombreuses solutions
existent sur le marché). Il faut dire que, jusque dans les années 1996-
1997, les routeurs restaient principalement des ordinateurs dotés de
plusieurs interfaces réseau. Difficile de pallier les défaillances de
composants critiques comme la mémoire ou le processeur. Après cette
date ont commencé à apparaître des processeurs spécialisés dans le
traitement des paquets et des commutateurs internes décentralisés et
tolérants aux fautes. Dans le même temps, les fonctions de contrôle ont
été déportées sur une carte processeur autonome. Ces architectures
composées de blocs indépendants se prêtent beaucoup mieux à la
fiabilisation, notamment lorsque l’on double les cartes de contrôle.
• Revenons un instant sur ce que l’on désigne par fonctions de contrôle.
• Dans un réseau IP, ce sont principalement (et pour le moment) celles liées à
l’établissement des tables de routage. Plusieurs composants logiciels sont
consacrés à cette tâche : l’un est spécialisé dans le routage au sein d’un
domaine restreint (désigné IGP, Interior Gatewey Protocol ) et fait appel aux
protocoles OSPF (Open Shortest Path First ), RIP (Routing Information
Protocol ) ou IS-IS (Intermediate System to Intermediate System ), l’autre
dans le routage entre domaines (désigné EGP, Exterior Gateway Protocol )
dont le seul représentant largement utilisé est le protocole BGP (Border
Gateway Protocol ). Ces composants sont divisés en deux : une partie se
charge du calcul du chemin le plus court dans le graphe des routeurs, l’autre
d’établir la topologie de ce graphe par la communication entre pairs sur les
routeurs voisins. Ces logiciels ne sont donc pas des processus de calcul pur
et la communication avec l’extérieur y joue un rôle majeur, ce qui constitue
une difficulté particulière pour leur fiabilisation.
• Une contrainte supplémentaire provient du fait que les réseaux sont
hétérogènes : un routeur doit pouvoir cohabiter avec un routeur fabriqué
par un autre équipementier ou avec des équipements plus anciens. La
tolérance aux fautes ne peut donc reposer sur des conventions mutuelles
dans les protocoles de communication, elle doit être transparente.
• On voit bien qu’ici, l’apport des modèles de tolérance aux fautes abordés
dans le paragraphe 3 est insuffisant : la sécurisation des communications
(au sens réseau IP) est indispensable. De plus, des contraintes
opérationnelles ou de développement interdisent parfois l’usage de ces
approches (au moins pour le moment) et font que des développements
ad hoc sont le plus souvent utilisés. Deux contraintes rendent ici cela
inévitable : le besoin d’interopérer avec les voisins (ce qui interdit de
changer de protocole de communication) et le fait que les applications de
routage sont développées à partir de bases existantes du fait de leur
complexité (ce qui rend difficile les modifications importantes, en
particulier quand on doit permettre des modifications ultérieures).
Figure 14 - Architecture matérielle d’un routeur
• 4.1 Tolérance aux fautes dans un routeur
• Pour pallier les défaillances matérielles, les gros routeurs dupliquent tous les
composants essentiels et en particulier les calculateurs de contrôle sur
lesquels tournent les applications de routage (figure 14). Nous ne discuterons
pas de la tolérance aux fautes des autres composants qui relève de stratégies
différentes. Ces calculateurs fonctionnent en général sur le mode de la
réplication semi- passive, le plus répandu dans le monde des Télécoms. La
réplication purement passive imposerait des temps de commutation trop
longs et n’est donc pas considérée. En réplication semi-passive, le système
comme les applications sont démarrés mais dans un état d’attente.
• Le support système de ces processeurs prend en général en charge la
détection de faute et la commutation d’un calculateur vers l’autre.
• La détection de faute doit être aussi rapide et précise que possible pour
limiter le temps d’indisponibilité et éviter les fausses détections. Pour cette
raison, elle est souvent faite à l’aide de moyens matériels dédiés : une ligne
de communication particulière sur laquelle transite régulièrement une
information qui témoigne de la bonne santé des processeurs.
• Cela n’est pas toujours suffisant et il peut être nécessaire d’ajouter des
mécanismes de détection de faute au niveau applicatif, qui surveillent le bon
état d’une application et provoquent une commutation au besoin.
• La commutation d’un processeur à l’autre permet de simplifier leur interaction :
le processeur montant doit reprendre toutes les fonctions du processeur
descendant qui doit les abandonner (même s’il n’est pas entièrement hors d’état
de fonctionner) et laisser la place libre pour éviter les interactions malheureuses.
Reprendre les fonctions impose que chacun des éléments logiciels existants ait
au préalable transféré une partie de son état d’un processeur à l’autre. Dans le
cas de la pile IP, il s’agit des paramètres de configuration et en particulier de son
adresse, IP en soi étant à peu près sans état.
• Par ailleurs, il arrive que l’on provoque des commutations en l’absence de faute,
par exemple pour des raisons de maintenance comme pour changer la version
des logiciels.
• 4.2.2 BGP
• En revanche, BGP communique avec ses pairs par TCP , un protocole
orienté connexion qui en détecte les ruptures. Ruptures dont BGP tire des
conclusions sur la santé de ses pairs, et qui ont donc des conséquences
considérables sur les tables de routage, en particulier une fois transmises
à travers l’Internet tout entier . En outre, TCP est un protocole en flux, qui
ne connaît pas de délimitation de message explicite au niveau applicatif,
ce qu’observe l’application n’est donc pas directement corrélé aux
messages reçus dans la pile de protocole (ce qui fait que l’application ne
retrouve pas les limites de messages qu’elle attend). Ces deux problèmes
sont relativement disjoints et peuvent être traités séparément : une partie
protocolaire et une partie applicative.
• La stratégie de fiabilisation est similaire aux précédentes mais il faut y ajouter
la fiabilisation des connexions TCP avec les voisins, un développement
récent qui a été effectué spécifiquement pour ce type d’applications.
• L’objectif de la face protocolaire est de pouvoir transférer une connexion TCP
d’un processeur à l’autre sans que l’autre extrémité s’en aperçoive. Pour
cela, on utilise les propriétés du protocole IP et on détermine les
informations que l’on doit transmettre d’une pile à l’autre et quand elles
doivent être transmises. TCP détecte la perte d’une connexion quand il reçoit
une réponse lui indiquant qu’un de ses messages de contrôle (demande de
réémission ou acquiescement) n’est pas compris par le destinataire, les
paramètres d’identification de connexion étant invalides (l’expiration du délai
de garde TCP ne nous concerne pas car il est trop long pour être observé dans
ce cadre). Pour éviter cela, il suffit que la pile montante possède les
informations de la pile descendante concernant les connexions. La pose des
points de reprise (où l’on synchronise les deux piles) n’est pas faite en
fonction de l’application mais en fonction des messages transitant sur le
réseau. Les propriétés de IP permettent qu’un message émis ne soit jamais
reçu ou qu’il soit reçu plusieurs fois : cela ne perturbe pas le fonctionnement
de TCP et permet de limiter le nombre de points de reprise posés.
• Pour une connexion donnée, la synchronisation doit être faite : lorsque la
connexion est créée ou fermée, lorsque l’on émet un fragment ou un
acquiescement (un message reçu doit avoir été émis). L’état à transférer
au moment de ce point de reprise consiste dans les blocs de contrôle TCP
associés à la connexion, ajouté des blocs de contrôle Internet à la création
(figure 15).
Figure 15 - Fiabilisation de la face protocolaire de BGP
• La face applicative a pour rôle de s’assurer que l’application montante lira au
même point que dans le flux TCP, ce qui est cohérent avec le point de reprise.
Le point de reprise de cette face est donc synchronisé avec celui de
l’application (un point de reprise de l’application doit entraîner un point de
reprise de la face applicative). L’état à transférer au moment de ce point de
reprise se limite à la position dans le flux.
• 4.2.3 Bilan
• La plupart des grands routeurs Internet supportent aujourd’hui ce type de
fonctionnalité qui est devenu indispensable pour obtenir l’assentiment des
opérateurs de télécommunications dont la fiabilité est maintenant la
première préoccupation.
• Les réalisations de ces mécanismes demeurent cependant peu documentées
hors de leurs caractéristiques diffusées pour des raisons de marketing. Les
performances de ces solutions s’avèrent suffisantes pour qu’aucune
dégradation n’ait été notée après leur introduction. La compétition entre
équipementiers sur la performance en terme de nombre de routes acceptées
reste un facteur de choix pour certains opérateurs.
• 5. Conclusion
• Dans cet article, nous avons choisi d’aborder la sûreté de fonctionnement
des applications en réseau sous un angle pratique. Après une présentation
des concepts de la sûreté de fonctionnement des systèmes informatiques
et de l’un des moyens les plus répandus pour la mettre en œuvre, à savoir
la tolérance aux fautes, nous avons donné un panorama des techniques
pouvant être employées en mettant l’accent sur les particularités des
systèmes répartis montrant la complexité du développement
d’applications en réseau tolérantes aux fautes.
• Après une rapide présentation des solutions propriétaires fournies
aujourd’hui par les constructeurs informatiques, nous avons ensuite
souligné que des efforts de normalisation ont été faits par l’OMG pour la
tolérance aux fautes des applications à base d’objets distribués. Les
spécifications et les concepts proposés dans la norme FT CORBA sont
publics et peuvent donc être suivis par les éditeurs de logiciels support
désireux de développer des systèmes sûrs y compris en dehors du monde
CORBA.
• De même, dans le domaine des applications Internet, le groupe de travail
de l’IETF RSERPOOL est très actif et a produit une importante série de
projets de standards qui forment un ensemble cohérent et qui devraient
aboutir à la normalisation et à des produits commerciaux dans les
prochaines années.
• Nous avons terminé par la présentation de la problématique et de
certaines solutions pour la sûreté de fonctionnement d’un routeur
Internet. Cela montre bien l’importance croissante de cette discipline et
son impact stratégique du point de vue des équipementiers de
télécommunications.