Académique Documents
Professionnel Documents
Culture Documents
THESE
Pour l’obtention du
Doctorat National
Présentée par
Mohammed OUZZIF
FORMALISATION ET IMPLEMENTATION DE
PROTOCOLES DE GESTION ET DE CONTROLE
DANS UN SYSTEME DE VIDEOCONFERENCE
SUR INTERNET
Président B. Regragui
Rapporteurs D. Chiadmi
N. Naja
R. Mrabet
2
3
4
Table de matières
INTRODUCTION GENERALE 12
1.1 Introduction 16
1.2 Travail coopératif 17
1.2.1 Définitions 17
1.2.2 Caractérisation du travail coopératif 19
1.3 Classification des systèmes TCAO 24
1.3.1 Classification espace-temps 24
1.3.2 Classification par travail coopératif 25
1.3.3 Classification par domaines d’applications 27
1.4 Conclusion
2.1 Introduction 30
2.2 Recommandation H.323 31
2.2.1 Architecture H.323 31
2.2.2 Protocoles d’un système H.323 35
2.2.3 Recommandation T.120 36
2.3 Architecture IETF 40
2.3.1 Multicast Internet 41
2.3.2 Agents médias 42
2.3.3 Gestion de conférence 44
2.4 Conclusion 53
3.1 Introduction 54
3.2 Produits de téléconférence 55
3.2.1 Produits ITU 55
5
3.2.2 Produits Internet 56
3.3 Concepts de gestion et de contrôle de conférence 59
3.3.1 Gestion de conférence 60
3.3.2 Contrôle de "floor" 61
3.4 Recommandation SCCP 65
3.4.1 Initiation de la conférence 66
3.4.2 Terminologie de SCCP 66
3.4.3 Services de SCCP 67
3.4 Conclusion 68
1.1 Introduction 70
1.2 Architecture et pile protocolaire 71
1.2.1 Architecture 71
1.2.2 Pile de protocoles 73
1.3 Description formelle du comportement d’un MMTS 76
1.3.1 Techniques et langages de description formelle 76
1.3.2 Spécification formelle de MMTS à politique présidée 78
1.3.3 Spécification formelle de MMTS à politique explicite 89
1.4 Conclusion 94
2.1 Introduction 95
2.2 Description des propriétés 96
2.2.1 Description informelle 96
2.2.2 Description formelle en LTL 96
2.3 Vérification des propriétés 101
2.3.1 Description Promela 101
2.3.2 Vérification à l’aide de SPIN 107
2.4 Conclusion 109
6
3.3.2 Adaptation de l’algorithme Naimi-Tréhel pour l’insertion dynamique 115
3.4 Suppression dynamique de sites dans des algorithmes à jeton 125
3.4.1 Suppression dans l’algorithme Le Lann 125
3.4.2 Suppression dans l’algorithme Naimi-Tréhel 127
3.5 Conclusion 134
BIBLIOGRAPHIE 162
7
Liste des figures
Figure I.1.1. Modèle du trèfle 23
Figure I.1.2. Classification espace-temps du travail coopératif 25
Figure I.1.3. Taxonomie du travail coopératif. 26
Figure I.2.1. Environnement H.323 32
Figure I.2.2 . Terminal H.323 33
Figure I.2.3. Pile de protocoles pour une conférence H.323 35
Figure I.2.4. Séquence de messages d’initialisation d’une conférence H.323 36
Figure I.2.5. Architecture multipoint T.120 37
Figure I.2.6. Modèle du système T.120 38
Figure I.2.7. Architecture IETF pour la téléconférence sur Internet 40
Figure I.2.8. Description SDP d’une session 47
Figure I.2.9. Format du paquet SAP 47
Figure I.2.10. Invitation SIP via un "proxy server" 50
Figure I.2.11. Invitation SIP via un "redirect server" 50
Figure II.1.1. Architecture d’une téléconférence sur Internet 72
Figure II.1.2. Architecture de gestion et de contrôle de conférence 74
Figure II.1.3. Interaction de l’entité GCCF 76
Figure II.1.4. Paquet GCCF 79
Figure II.1.5. Comportement du processus "Coordination_GCCF" présidé 84
Figure II.1.6. Comportement du processus "Gestion conférence" présidé 85
Figure II.1.7. Comportement du processus "Contrôle Floor" présidé 86
Figure II.1.8. Comportement du processus "Gestion Media" 87
Figure II.1.9. Scénario d'une conférence présidée. 88
Figure II.1.10. Comportement du processus "Coordination_GCCF" explicite 90
Figure II.1.11. Comportement du processus "Gestion Conférence" explicite 91
Figure II.1.12. Comportement du processus "Contrôle Floor" explicite 92
Figure II.1.13. Scénario d'une conférence explicite 93
Figure II.2.1. Comportement du processus "Contrôle Floor" relatif au simple participant 103
Figure II.2.2. Comportement du processus "Contrôle Conférence" relatif au modérateur 105
Figure II.2.3. Comportement du processus "Contrôle Floor" dans une politique explicite 106
Figure II.2.4. Vérification de la propriété d’exclusion mutuelle du floor dans un MMTS présidé 108
Figure II.2.5. Vérification de la propriété d’exclusion mutuelle du floor dans un MMTS explicite 109
8
Figure II.3.1. Algorithme Le Lann 113
Figure II.3.2. Insertion de nouveaux participants dans l’anneau Le Lann 114
Figure II.3.3. Insertion de nouveaux participants dans l’algorithme Le Lann 114
Figure II.3.4. Traitement des messages relatifs à l’insertion dans l’algorithme Le Lann 115
Figure II.3.5. Situation initiale 117
Figure II.3.6. Demande de la section critique par le site 2 117
Figure II.3.7. Demande de la section critique par le site 3 118
Figure II.3.8. Demande de la section critique par le site 4 118
Figure II.3.9. Libération de la section critique par le site 2 119
Figure II.3.10. Algorithme Naimi-Tréhel 119
Figure II.3.11. Insertion de nouveaux sites dans l’arborescence Naimi-Tréhel 120
Figure II.3.12. Insertion de nouveaux sites dans l’algorithme Naimi-Tréhel 122
Figure II.3.13. Traitement des messages relatifs à l’insertion dans l’algorithme Naimi-Tréhel 123
Figure II.3.14. Suppression de sites de l’anneau Le Lann 125
Figure II.3.15. Suppression de sites de l’algorithme Le Lann 126
Figure II.3.16. Traitement des messages relatifs à la suppression dans l’algorithme Le Lann 126
Figure II.3.17. Isolement d’un sous-groupe 127
Figure II.3.18. Blocage de l’ensemble des sites 128
Figure II.3.19. Situation normale de départ de deux sites 129
Figure II.3.20. Isolement d’un sous-groupe suite à deux départs simultanés 129
Figure II.3.21. Départ de la racine 130
Figure II.3.22. Suppression de sites dans l’algorithme Naimi-Tréhel 132
Figure II.3.23. Traitement des messages relatifs à la suppression dans l’algorithme Naimi-Tréhel 133
Figure II.4.1. Cas d’utilisation relatifs au modérateur 137
Figure II.4.2. Cas d’utilisation relatifs à un simple participant 138
Figure II.4.3. Diagramme de classes 139
Figure II.4.4. Diagramme de séquence d’attribution du floor 140
Figure II.4.5. Diagramme de séquence de retrait de floor 141
Figure II.4.6. Diagramme de séquence de demande de floor 142
Figure II.4.7. Diagramme de séquence de libération de floor 143
Figure II.4.8. Interface de saisie des informations d’un utilisateur 144
Figure II.4.9. Interface "Conference Directory" 145
Figure II.4.10. Interface "Création d’une conférence" 146
Figure II.4.11. Interface "Joindre une conférence" 146
Figure II.4.12. Interface "Chairman" 147
Figure II.4.13. Interface "Simple Participant" 148
Figure II.4.14. Architecture de l’environnement Platine 150
9
Figure II.4.15 Architecture du MMTS réalisé 151
Figure II.4.16. Interface du système à politique explicite 153
Figure II.4.17. Editeur de l’exercice 155
Figure II.4.18. Tableau blanc 156
Figure II.4.19. Architecture de l’application de préparation coopérative des exercices 157
10
Liste des tableaux
Tableau I.2.1. Description des informations d’une session 45
Tableau I.2.2. Description de l’aspect temps d’une session 46
Tableau I.2.3. Description des médias 46
Tableau I.3.1. Comparaison entre les produits de téléconférence 59
Tableau I.3.2. Correspondance politique/mécanisme 65
Tableau II.1.1. Primitives et champs 82
11
Introduction générale
Durant cette dernière décennie, nous avons assisté à une révolution extraordinaire dans les
domaines des télécommunications et de l’informatique. L’évolution conjointe de ces deux
technologies a permis l’émergence et le développement des réseaux informatiques. Grâce à
ces réseaux, il est actuellement possible d’acquérir et d’échanger aisément des informations
de différents types (texte, audio, vidéo) entre des sites distants. L’interconnexion des réseaux
hétérogènes de différentes catégories (locaux, métropolitains et étendues) a permis l’extension
rapide du "réseau des réseaux" communément appelé Internet. Ce réseau supporte
actuellement des applications de travail coopératif telles que les applications de télétravail,
télémédecine, téléenseignement, etc.
Les réseaux informatiques ont fait des progrès énormes aussi bien en terme de bande
passante qu’en fiabilité, qualité de service, gestion et sécurité. Ils constituent un support de
communication efficace pour les systèmes informatiques répartis qui sont en pleine
expansion. Une catégorie de ces systèmes regroupe les systèmes multimédias distribués, et
plus particulièrement les systèmes de téléconférence. En effet, de tels systèmes nécessitent
l’échange de différents types de données et requièrent des contraintes temporelles pour leur
transmission. Ils sont devenus réalisables, dans un premier temps, grâce à l’émergence des
réseaux à haut débit. Actuellement, ils sont aussi supportés par le réseau Internet grâce aux
efforts de l’IETF (Internet Engenering Task Force) en terme de protocoles de transport de
données multimédias et de réservation de ressources.
12
de la téléconférence (l’audio, la vidéo, les applications partagées, etc) et d’assurer la
coordination des interactions entre les utilisateurs.
13
d’accès dynamique tout en supportant l’avènement et le départ de participants au sein d’une
téléconférence multimédia.
Cette thèse s’organise ainsi en deux parties : la partie "Etat de l’art" et la partie
"Architecture Spécification et implémentation". La première partie est organisée en trois
chapitres. Le premier chapitre présente les concepts relatifs aux systèmes coopératifs. Le
deuxième chapitre traite des standards et normes des systèmes de téléconférence multimédia.
Le troisième chapitre présente des systèmes de gestion de conférence et les concepts relatifs à
la gestion et contrôle de téléconférence.
La deuxième partie est organisée en quatre chapitres. Le premier chapitre est consacré à
l’architecture de gestion de conférence et de contrôle de "floor" ainsi qu’à la spécification
formelle du comportement des protocoles de gestion et de contrôle. Le deuxième chapitre
présente la définition des propriétés temporelles relatives à la sûreté et la vivacité du système
spécifié. Le troisième chapitre présente les mécanismes de réalisation. Le dernier chapitre
décrit les implémentations des systèmes de téléconférence que nous avons réalisées.
14
Première Partie
Etat de l’art
15
Chapitre 1
Systèmes coopératifs
1.1 Introduction
Les systèmes de travail coopératif assisté par ordinateur (TCAO) constituent une classe
d’applications distribuées et interactives. Ces systèmes supportent les fonctions
habituellement fournies par les applications interactives (comme par exemple, des fonctions
permettant la visualisation des résultats d’une commande) ainsi que des fonctions spécifiques
destinées à supporter un travail coopératif dans lequel plusieurs intervenants agissent en
même temps ou à différents instants sur un espace de travail commun. Les systèmes de
téléconférence multimédia font partie de ces applications et permettent une coopération
synchrone moyennant différents outils (visioconférence, tableau blanc, application partagée,
etc.).
Dans ce chapitre, nous présentons les principaux concepts du travail coopératif assisté par
ordinateur. Nous donnons ensuite une classification des systèmes supportant le TCAO.
16
1.2 Travail coopératif
1.2.1 Définitions
"un groupware est un système informatique qui supporte des groupes de personnes
engagées dans une tâche commune fournissant une interface à un environnement
partagé" [Elli 91].
Le CSCW est un champ multidisciplinaire [Kars 94] dans lequel interviennent des
recherches provenant de différentes sciences humaines : psychologie, sociologie et
ethnologie. La psychologie étudie les répercussions liées à l’utilisation d’un logiciel
coopératif. La sociologie s’intéresse dans ce domaine à l’étude des comportements sociaux et
des lois qui régissent les interactions des membres d’un groupe. L’ethnologie traite ces
interactions suivant les différentes cultures. Ainsi, la démarche générale de l’ingénierie
relative au CSCW consiste à définir des outils à la fois pour comprendre et analyser
l’interaction à l’aide de théories, méthodes et modèles issus des sciences humaines pour
ensuite envisager des solutions logicielles adaptées [Bann 93]. Toutefois, l’essor que connaît
actuellement le domaine CSCW est essentiellement lié à l’émergence des réseaux de
communication et à la large diffusion des moyens informatiques dans les environnements
professionnels, éducatifs et domestiques [Bour 00].
L’utilisation des collecticiels au sein des entreprises est essentiellement motivée par un
meilleur contrôle des coûts de production, une augmentation de la productivité, une
diminution du nombre de réunions en présentiel, une amélioration de la coopération entre des
équipes géographiquement réparties, etc.
17
1.2.2 Caractérisation du travail coopératif
Nous donnons dans cette section la définition des principaux concepts du travail
coopératif. Nous présentons ensuite les caractéristiques et les particularités des systèmes de
travail coopératif.
1.2.2.1 Terminologie
Groupe et individu
Chaque participant est un individu (ou acteur) qui appartient à un groupe de participants
utilisant un système de travail coopératif. Un groupe est un ensemble d’individus travaillant
sur un même domaine. D’autres termes synonymes au groupe sont utilisés dans la littérature à
savoir : collectif ou équipe [Bell 96].
Contexte partagé
Rôle et vue
Dans un groupe de travail, un individu peut avoir un rôle bien précis [Davi 98]. Ce rôle
définit les droits et les devoirs du participant vis à vis de ces partenaires et des données
partagées. Il peut évoluer au cours du temps et être constitué de plusieurs rôles élémentaires.
Le terme "vue" est utilisé pour définir une perception d’un ensemble d’informations du
contexte partagé [Mari 94]. Elle peut être attachée à un rôle dans le sens où ce dernier permet
de définir les actions que peut mener un individu sur les entités manipulées collectivement.
18
1.2.2.2 Paramètres d’un système de travail coopératif
Mode d’interaction
Un système de travail coopératif peut adopter l’un des deux modes d’interaction suivants :
asynchrone ou synchrone. Une coopération asynchrone correspond aux applications
coopératives dont le support de communication est asynchrone et ne nécessite pas la co-
présence des différents participants. Ce mode est fréquemment utilisé dans l’édition
coopérative des documents [Deco 96]. En outre, la coopération synchrone correspond aux
applications coopératives où la présence des membres du groupe est obligatoire en même
temps. L’échange des informations est assuré en temps réel. Ainsi, les acteurs de ce type de
coopération sont avertis en temps réel sur les actions menées sur les ressources partagées
[Ohmo 92]. Les systèmes de téléconférence sont des exemples représentatifs de ce mode
d’interaction [Crow 95, Laur 00]. Il est également possible que des applications coopératives
utilisent les deux modes d’interaction [Mino 93].
Dans la suite, nous nous intéressons plus particulièrement aux paramètres des systèmes
coopératifs synchrones.
Le terme WYSIWIS (What You See Is What I See) a été introduit par Stefik dans [Stef
87]. Il signifie en français : "Ce que tu vois est ce que je vois". Le concept WYSIWIS garantit
une vue cohérente du contexte partagé à tout moment de la coopération. Toute modification
apportée à ce contexte est perçue par l’ensemble de tous les participants du groupe. Le
WYSIWIS implique nécessairement un mode d’interaction synchrone alors que ce type
d’interaction ne suffit pas pour définir le mode WYSIWIS.
Il existe deux types du WYSIWIS : le type strict et le type relaxé. Le WYSIWIS strict est
l’application extrême du mode de fonctionnement WYSIWIS. Il consiste à avoir une vue
identique des informations partagées sur tous les terminaux des participants. Seulement,
l’expérience a montré que les utilisateurs souhaitent des fois avoir une certaine indépendance
sur certains détails tels que par exemple, le fait de définir la taille ou le positionnement des
fenêtres sur l’écran. Le WYSIWIS relaxé, quand à lui, permet à chaque participant de
personnaliser l’interface du système de travail coopératif de manière à ce que différentes vues
du contexte partagé soient perçues par les participants [Baec 94, Gutw 95, Green 95, Sein 97].
19
Granularité
Il existe deux types de granularité [Gutw 00], à savoir : la granularité fine et la granularité
faible. La granularité fine est associée à un mode d’interaction synchrone définissant un
travail fortement couplé et la granularité faible définit un travail faiblement couplé. Par
exemple, un éditeur de texte permettant l’accès simultané à un même mot permet une
granularité plus fine qu’un éditeur permettant l’accès à un document à la fois.
Lorsque des personnes travaillent en co-présence, c’est à dire en même temps et dans le
même lieu, elles échangent un certain nombre d’informations implicites et explicites. Ces
informations créent chez chaque participant une "conscience de groupe" lui permettant de
situer ses actions au sein du groupe et de mesurer son activité dynamique. Cette notion de
conscience de groupe a été définie par Dourish [Dour 98, Bout 01] comme étant "la
compréhension des activités des autres, qui permet de donner un contexte à sa propre
activité". Dans un groupe virtuel, la disparition de la co-présence entraîne la disparition de
certaines informations et particulièrement les informations implicites. Ceci entraîne par
conséquent la disparition de la conscience de groupe.
Gestion de groupes
Un groupe est une entité logique qui permet de structurer un ensemble de membres
partageant une propriété particulière au sein d’un système. Ces membres peuvent être des
personnes ou des processus. L’intérêt majeur du concept de groupe est qu’il permet
d’abstraire les communications. En effet, un message peut être adressé à tous les membres du
groupe sans qu’il soit nécessaire de les nommer explicitement ni de connaître la taille du
groupe. Cette transparence facilite la conception d’algorithmes répartis relatifs au collecticiel.
Un groupe peut adopter différentes topologies logiques. Il peut être un groupe non
structuré, un groupe de diffusion ou un groupe hiérarchique. Un groupe non structuré est
20
composé de processus qui sont tous émetteurs et récepteurs. Un groupe de diffusion comprend
une partie de membres qui ne peuvent que recevoir sans avoir la possibilité d’émettre. Un
groupe hiérarchique adopte une structure arborescente [Lian 90].
Un groupe se caractérise également par les primitives de diffusion qui lui sont associées.
Ces primitives se distinguent par la propriété qu’elles respectent en matière de qualité de
service et d’ordonnancement des messages.
La gestion d’un groupe doit fournir des protocoles de connexion de nouveaux membres et
de déconnexion d’anciens membres de façon dynamique. Ces protocoles doivent fournir à un
nouvel arrivé une vue cohérente de l’espace partagé et doivent gérer le départ d’un participant
qu’il soit volontaire ou résultant d’une panne quelconque du réseau ou des sites.
Le contrôle d’accès constitue un autre moyen pour éviter les conflits entre les participants
et les incohérences de l’espace partagé. Il se base sur la gestion des droits d’utilisation des
outils d’un collecticiel et le droit d’exécution de certaines de ses fonctionnalités. Les droits
d’accès sont définis en fonction des rôles assignés aux différents participants et sont
dynamiquement attribués au cours du travail coopératif.
21
Protocoles coopératifs
Les protocoles coopératifs définissent les règles ou politiques gouvernant les interactions
entre les différents utilisateurs. On distingue deux types de protocoles : les protocoles sociaux
et les protocoles technologiques. Un protocole social se réfère aux séquences possibles
d’échanges de signaux et d’informations qui déterminent et identifient les discussions. Les
règles d’échange sont définies par le groupe de travail et sont proches à ses besoins.
Toutefois, elles sont soumises à la bonne volonté des participants. Ils peuvent ainsi être
injustes voire inefficaces. Au contraire, les protocoles coopératifs technologiques quand à eux
sont implémentés par des logiciels et permettent de structurer le groupe et les interactions de
ses membres. Ils peuvent être restrictifs en limitant les possibilités d’utilisation.
Architectures coopératives
L’architecture d’un collecticiel peut adopter l’une des trois approches suivantes [Kars 94,
Cour 01]: l’approche centralisée, l’approche distribuée et l’approche hybride. Dans la
première approche, un seul processus gère la cohérence des données et les actions entreprises
par les différents utilisateurs. Cette approche a l’avantage de la simplicité d’implémentation et
en particulier lorsqu’il s’agit de l’implantation de la synchronisation et du contrôle de la
concurrence. Cependant, elle présente deux inconvénients majeurs : un temps de réponse lent
et la non-tolérance aux fautes [Greg 99].
L’approche hybride se base sur un processus central qui gère la cohérence des données et
un processus par utilisateur qui gère ses actions. Elle résoud partiellement l’inconvénient de la
lenteur du temps de réponse mais ne résoud pas le problème de la tolérance aux fautes.
Pour structurer l’analyse et la conception d’un collecticiel, il est judicieux d’avoir une
catégorisation de ses fonctionnalités. Dans ce sens, [Salb 95] propose le modèle du trèfle
(figure I.1.1) qui s’inspire du modèle donné par [Elli 94] et fournit un cadre conceptuel
22
déterminant trois espaces fonctionnels que doit couvrir un système de travail coopératif :
l’espace de production, l’espace de communication et l’espace de coordination. Ce cadre
constitue un moyen de classification de nombreux outils permettant d’atteindre les objectifs
d’un tel travail.
Production Communication
Coordination
Espace de production
Dans certaines situations, il est possible de coopérer grâce à la seule présence face à
face (éventuellement virtuelle). Cependant, une coopération plus fructueuse nécessite le
partage d’information au sein d’un espace de production. Cet espace concerne des
fonctionnalités de production d’objets partagés tels que des documents et la gestion des
accès à ces données.
Espace de communication
Espace de coordination
Pour se coordonner, les participants d’un travail coopératif ont besoin de suivre les
activités des autres participants ainsi que l’utilisation et l’évolution des ressources
23
partagées. C’est le rôle de l’espace de coordination de supporter ces aspects. Il correspond
aux fonctionnalités dédiées à l’assignation des tâches et des rôles aux différents acteurs
d’une activité coopérative en vue de coordonner leurs interventions. Cette coordination
peut s’exprimer en terme de planification de tâches.
Il existe trois types de classification des systèmes de travail coopératif assisté par
ordinateur dans la littérature : classification espace-temps, classification par travail coopératif
et classification par domaine d’application.
24
interaction face à face interaction asynchrone
même lieu
exemple : jeu sur console exemple : Workflow
Cette taxonomie est largement répandue dans la littérature. Toutefois, elle présente
quelques insuffisances pour représenter l’ensemble des collecticiels. Par exemple, les
collecticiels présentant un mode d’interaction variable synchrone/asynchrone tels que
l’éditeur présenté dans [Mino 93], peuvent figurer dans la classe des collecticiels synchrones
et asynchrones. Cette classification présente ainsi les limitations suivantes :
- elle ne permet pas de placer distinctement tous les collecticiels dans une classe parmi
les quatre classes identifiées ;
La classification par travail coopératif repose sur le modèle du travail coopératif présenté
par [Dix 93]. Ce modèle (figure I.1.3) identifie deux entités impliquées dans le travail
coopératif : les participants (P) et les artefacts du travail (A). Les artefacts représentent les
entités manipulées permettant aux participants d’interagir entre eux et avec le système. Les
outils mis à disposition de l’utilisateur dans une application de tableau partagé sont des
exemples de tels artefacts (exemple : tableau blanc et outil d’applications partagées de
l’environnement Platine [Baud 02]).
25
Compréhension P : Participant
mutuelle A : Artefact
P P
Comunication
directe
Manipulation et
rétroactions
A Artefact du travail
Les relations entre les entités de ce modèle de travail coopératif sont de trois types :
- Les systèmes de réunion et d’aide à la décision qui ont pour but de favoriser et
d’aider à la compréhension mutuelle pour faciliter le déroulement de réunion ou la
prise de décision.
- Les systèmes d’espaces partagés qui recouvrent les collecticiels mettant en œuvre
des espaces partagés dans lesquels les participants peuvent manipuler des artefacts.
26
collecticiels : les applications d’édition partagée, les applications pour la coordination, les
applications de jeu en réseau et les applications dédiées à la Communication Homme-Homme
Médiatisée (CHHM ou CMC pour Computed-Mediated Communication).
Les applications pour la coordination regroupent les systèmes de workflow, les systèmes
d’aide à la décision et les calendriers partagés.
- Les systèmes workflow [Bowe 95, Elli 99, Whit 00] sont des systèmes dédiés à la
gestion de processus (industriels, commerciaux, administratifs etc.) et à la coordination des
différents intervenants au cours d’un processus. De tels systèmes ont pour objectif
l’élaboration de documents et ont la charge de veiller à leur bonne circulation entre les
différents intervenants aux moments clés du processus.
- Les systèmes d’aide à la décision permettent d’assister un groupe d’utilisateurs pour des
discussions qui facilitent l’obtention d’un consensus en vue d’une prise de décision [Usab 02].
CoNex (Coordinator and Negociation Support for eXpert in design applications) [Hahn 91]
est un exemple d’un tel système.
- Les agendas partagés [Pale 02] offrent des services de planification des tâches, de
gestion de projets et de coordination de membres d’une équipe de travail. A la différence des
systèmes de workflow, la planification n’est pas basée sur l’acheminement des documents. De
tels systèmes permettent la détection des incompatibilités dans la planification d’une tâche ou
la détermination de plages horaires communes aux membres du groupe.
27
compétition entre joueurs. Quake [IdSo 02] et Starcraft [Bliz 02] sont des exemples de tels
systèmes.
- Les messageries électroniques sont actuellement les collecticiels les plus répandus et
les plus utilisés. Ils se sont enrichis de fonctionnalités "intelligentes" pour trier les
courriers, détruire ceux qui sont indésirables et envoyer des réponses
automatiquement [Qual 02].
- Les forums de discussion peuvent être de deux classes principales selon leur mode
d’utilisation (synchrone ou asynchrone). La première classe regroupe les forums en
ligne du type IRC (Internet Relay Chat). La deuxième classe rassemble les listes de
diffusion (mailing list) et les news groups. Contrairement au courrier électronique,
ce type de collecticiel est destiné à communiquer avec un grand nombre de
personnes.
- Les mediaspaces [Cout 99, Dour 96, Finn 97, Mack 99] sont des collecticiels mettant
en œuvre une liaison vidéo permanente au sein d’une équipe dans le but de favoriser
la communication informelle et d’entretenir une conscience de groupe forte entre
membres distants. Ce type de collecticiel soulève le problème de protection de la vie
privée de par la présence des caméras fonctionnant en permanence.
28
s’agit en général de fenêtres partagées servant de tableaux de présentation, d’éditeurs ou
d’applications de dessin.
Les systèmes de téléconférence supportent une coopération synchrone entre les membres
qui participent à la conférence. Cette coopération synchrone est assurée via l’échange en
temps réel de différents types de données. Ils permettent aussi une collaboration en mode
WYSIWIS en offrant aux participants des outils pour le partage des données tels que les
tableaux blancs et les outils d’applications partagées. Toutefois, la conscience de groupe doit
être gérée à l’aide d’autres mécanismes vu que la co-présence dans de tels systèmes est
virtuelle.
1.4 Conclusion
29
Chapitre 2
2.1 Introduction
Nous avons présenté dans le chapitre précédent les propriétés et les caractéristiques des
systèmes coopératifs. Ces systèmes requièrent un support technologique permettant l’échange
des différents types de données (texte, audio et vidéo) et fournissant des outils relatifs au
travail coopératif (tableau blanc, application partagée etc.). De tels services sont assurés par
les systèmes de téléconférence. En vue de remédier aux problèmes relatifs à l’hétérogénéité
des plates-formes assurant le transport des données multimédias, il a été nécessaire de
standardiser les équipements et les protocoles relatifs à ces aspects. Dans ce sens, l’IUT
(Internationnal Telecommunication Union) et l’IETF (Internet Engineeering Task Force) ont
effectué plusieurs travaux permettant une telle standardisation.
Dans ce chapitre, nous présentons tout d’abord la recommandation H.323 qui fournit une
standardisation de l’architecture, des équipements et des protocoles de transmission audio et
vidéo. Nous présentons ensuite, les travaux de l’IETF concernant les systèmes de
téléconférence.
30
2.2 Recommandation H.323
- Terminal
Le terminal H.323 (figure I.2.2) est le point d’extrémité de l’environnement H.323 qui
fournit une communication temps réel. Un terminal supporte les fonctionnalités de base d’un
système H.323. Ces fonctionnalités sont fournis par des composants permettant
l’acheminement des médias audio (par exemple G.711 [ITU 88a]), vidéo (par exemple H.261
[ITU 93b]), des messages de contrôle H.245 [ITU 95c] et H.225 [ITU 95d] et des données
applicatifs T.120.
31
H.323 MCU
Passerelle Terminal
RNIS RTGC H.324
Terminal H.323
Terminal
Terminal H.323 H.324
Terminal H.323
Portier H.323
Internet
Firewall
Zone H.323 Terminal
H.324
Le codec vidéo a pour rôle de coder le signal vidéo provenant de la source vidéo (caméra)
pour transmission et de décoder le code vidéo reçu qui est restitué sur un écran vidéo. Le
codec audio code le signal reçu du microphone pour transmission, et décode le code reçu qui
est restituée à la sortie du haut-parleur.
La couche H.225 assure le formatage des trains de signaux vidéo, audio, de données et de
commande à transmettre à l’interface réseau. Elle extrait les trains des signaux des messages
reçus des messages entrant provenant de l’interface réseau.
32
Codec video
H.261, H.263
- Passerelle
La passerelle a pour rôle d’assurer la conversion entre les formats de transmission (par
exemple, du format H.225 au format H.221 ou vice versa) ainsi qu’entre les procédures de
communication (par exemple, de la procédure H.245 à la procédure H.242 ou vice versa). La
passerelle assure aussi l’établissement et la libération des connexions tant du côté réseau local
que du côté réseau à commutation de circuits (SCN).
La passerelle peut assurer aussi la conversion entre les formats vidéo, audio et données.
En général, la passerelle a pour rôle d’informer un point d’extrémité du réseau (SCN) des
caractéristiques d’un point d’extrémité du réseau local et vice versa, de façon transparente.
Un point d’extrémité H.323 peut communiquer avec un autre point d’extrémité H.323
directement sur le même réseau local, sans l’intermédiaire d’une passerelle. Celle-ci peut être
omise s’il n’est pas nécessaire d’établir des communications avec les terminaux du réseau à
commutation de circuit.
- Portier
Le portier, optionnel dans un système H.323, assure des services de commande d’appel
aux points d’extrémité H.323. Plusieurs portiers peuvent coexister et communiquer entre eux
dans un mode non précisé. Le portier est en principe séparé des points d’extrémité. Il peut
toutefois être couplé à un terminal, une passerelle, un contrôleur multipoint ou un autre
dispositif du réseau local non H.323.
33
Lorsqu’un portier est intégré dans un système H.323, il doit assurer les fonctionnalités
suivantes :
- Contrôle des admissions – Le portier doit autoriser l’accès au réseau local au moyen des
messages ARQ/ACF/ARJ (demande/confirmation/refus d’admission) H.225.
L’autorisation d’accès peut être fondée sur l’autorisation d’appel, la largeur de bande ou
d’autres critères.
- Gestion de zone – Le portier doit assurer les fonctions mentionnées ci dessus pour les
terminaux et les passerelles qui se font enregistrés auprès de lui dans une zone H.323.
- MCU
34
Un processeur multipoint assurant le traitement vidéo doit assurer la commutation vidéo
ou le mélange vidéo. La commutation vidéo est le processus de sélection de l’image que le
processeur multipoint transmet aux terminaux d’une source à une autre. Le mélange vidéo
consiste à formater plusieurs sources vidéo que le processeur envoie aux terminaux. Un
processeur audio qui assure le traitement audio doit préparer N sorties audio à partir de M
entrées audio par commutation ou mélange ou par une combinaison de ces deux procédés.
La connexion initiale est établie entre un appelant (caller) et un port de l’appelé (callee).
H.323 spécifie la signalisation des appels et le contrôle de capacités dans deux protocoles
séparés : le protocole H.225 et le protocole H.245. H.225 couvre l’initialisation de l’appel et
la signalisation de l’appel initial entre deux participants. Le document H.225 comporte de
sous protocoles : le protocole RAS (Registration/Admission/Statut) et le protocole de contrôle
d’appel dérivé du protocole Q.931. La norme H.245 constitue le protocole de contrôle de
média que le système H.323 utilise après l’établissement de l’appel. H.245 permet aussi la
négociation et l’établissement des canaux au dessus de RTP/RTCP.
Q.931
H.245 T.120 Audio Vidéo
(H.225) RAS
(H.225)
TCP UDP
Network Layer
35
La figure I.2.4 montre la séquence des actions lors de l’initialisation d’une conférence
H.323. L’appelant envoie un message d’initialisation (Setup Message) contenant son nom et
son adresse IP. L’appelé envoie un message d’alerte (Alerting Message) après avoir notifié le
participant du message reçu. Si l’appelée refuse l’appel, il envoie le message de refus
(Release Complete). Sinon, il envoie le message de connexion (Connect) contenant l’adresse
et le port sur lequel il est en écoute pour une connexion H.245.
Site A Site B
Alerting
Accept
RTP
RTP/RTCP
End
36
2.2.3.1 Architecture de communication multipoint
MCU
37
protocoles forme la pile représentée par la figure I.2.6. Cette pile est organisée en couches
superposées. Chaque couche de cette pile fournit des services à la couche immédiatement
supérieure et communique avec ses homologues en envoyant des unités de données
protocolaires en utilisant les services fournis par la couche immédiatement inférieure.
Application(s) d'utilisateur
(utilisant les protocoles d'application tant normalisés que non normalisés)
Trensfert de fichiers
La couche "applications d’utilisateur" ne fait pas objet d’une normalisation dans la série
des recommandations T.120. Les applications qui utilisent les services offerts par la série
T.120 seront généralement adaptées au multipoint et conçues pour utiliser les services T.120
fournis par la couche GCC et la couche MCS. Elles peuvent utiliser toute combinaison de
protocoles normalisés ou non normalisés pour communiquer avec des applications
d’utilisateur homologues.
38
d’application conçus pour satisfaire les besoins de la conférence multipoint. Ces protocoles
définissent des seuils d’exigences, en vue de garantir l’inter-fonctionnement des différentes
réalisations. T.127 [ ITU 96c] fournit un transfert de fichiers en mode multipoint. T.126 [ITU
97] fournit la visualisation des images fixes et leur annotation, le panneau de téléaffichage
partagé et la télécopie. La recommandation T.121 [ITU 96d] présente des modèles et des
directives susceptibles d’aider à définir de nouveaux protocoles d’application.
Le contrôleur nodal (node controller) est l’élément qui procure le rôle de gestion T.120 à
un terminal ou à un MCU. Il émet des primitives vers le fournisseur GCC, qui fait débuter et
commande la session de communication. Le contrôleur nodal lui même est hors du domaine
d’application des recommandations de la série T.120. Seule ses interfaces de communication
avec le GCC sont définies.
39
autre, d’un utilisateur à un groupe et d’un groupe à un utilisateur. Dans un domaine MCS, les
nœuds sont organisés hiérarchiquement en une arborescence. La remise des données suit le
trajet le plus efficace et un mécanisme est fourni pour garantir que les données expédiées sont
reçues dans le même ordre à tous les nœuds.
Application(s) utilsateur
UDP TCP
UDP
IP / IP Multicast
Les travaux de [Zhan 93] concernant la réflexion sur des mécanismes de réservation de
ressources ont permis d’assurer une certaine qualité de service raisonnable pour la
transmission des médias sur Internet. Ces travaux ont fait du Mbone une infrastructure
capable de supporter la transmission des différents médias en temps réel. Dans l’objectif de
structurer les protocoles développés pour le support des systèmes de téléconférence sur
Internet, l’IETF a élaboré une architecture sous forme d’une pile de protocoles [Hand 97]
40
(figure I.2.7). Dans cette architecture nous distinguons trois catégories de protocoles. La
première catégorie concerne les protocoles de transport (UDP, TCP) et de routage unicast (IP)
et multicast (IP Multicast). La deuxième catégorie regroupe les protocoles relatifs au transfert
des données multimédia. La troisième catégorie comporte les protocoles relatifs à l’initiation,
au contrôle et la gestion de conférence.
La transmission multicast est définie comme étant la transmission d’une source vers un
nombre variable de récepteurs [Deer 91]. Le besoin de ce type de transmission s’est exprimé
essentiellement avec l’apparition des applications nécessitant une communication de groupe.
Comparée à N transmissions point à point, la transmission multicast comporte deux avantages
principaux.
Le premier avantage est qu’elle permet de rendre plus simple la gestion d’un nombre
variable de récepteurs. En effet, dans le cas de N transmissions point à point, chaque arrivée et
chaque départ d’un membre du groupe s’accompagnent de messages de signalisation
explicites vers tous les émetteurs du groupe. Dans la transmission multicast, l’arrivée ou le
départ d’un membre se fait par l’envoi d’un seul message du protocole gérant le multicast sur
réseau local (IGMP : Internet Group Multicast Protocol ou LMD : Listener Multicast
Discovery). Ce message concerne une adresse multicast qui représente l’adresse du groupe.
A priori, quand une source émet vers un groupe, elle ne sait pas quels sont les
destinataires qui veulent recevoir ses paquets. Pour ce faire, la transmission multicast sur
Internet est assurée par deux types de protocoles. Le premier protocole concerne le réseau
local et a pour objectif de détecter la présence ou l’absence de(s) membre (s) dans le groupe.
Ce protocole porte le nom d’IGMP [Fenn 97] dans la version 4 d’IP et le nom MLD [ Deer
99] dans la version 6 d’IP.
41
multicast ont été développés et sont classifiés selon le type de la technique utilisée. Nous
distinguons plusieurs techniques pour le multicast : la technique d’inondation (Flowding), la
technique des arbres de recouvrements (Spanning Tree), la technique des plus courts chemins
inversés (RPF : Reverse Path Forwarding), la technique de l’arbre des plus courts chemins
inversés (RPM : Reverse Path Multicasting) et les techniques associées aux arbres partagées
(CBT : Core Based Tree et PIM-SM) [Ech- 01].
Les agents médias comportent les applications audio/vidéo, les applications partagées et
les protocoles de transport temps réel et de multicast fiable.
Les applications temps réels audio et vidéo sont des applications qui font usage de
différentes données multimédia. Ces applications captent ces données et les transmettent à
travers le réseau en utilisant les services de RTP/RTCP. Elles constituent ainsi une interface
entre les dispositifs de capture des médias d’une part, et le réseau d’autre part. Elles doivent
être capables de buffériser les données temps-réel suffisamment de temps au niveau du
récepteur pour enlever les déphasages de temps produit par l’acheminement du réseau et de
reconstituer les relations entre les médias de manière à reproduire le plus fiable possible, la
capture des données au niveau de l’émetteur.
Ces applications doivent être aussi capables de synchroniser les différents types de médias
(audio, vidéo, texte). En effet, les flux audio et vidéo subissent des différents déphasages et
possèdent différentes qualités de services. Les données audio et vidéo capturées au niveau de
l’émetteur au même moment peuvent atteindre le récepteur à différents instants. Au niveau du
récepteur, chaque flux a besoin d’un buffer (playout buffer) pour enlever les déphasages. La
synchronisation inter-flux peut être effectuée en adaptant les buffers de manière à ce que,
après enlèvement des déphasages, les médias capturés au même moment soient reproduits au
même instant. Ceci nécessite que la base de temps des différents flux provenant du même
émetteur puisse être reproduite au niveau du récepteur (par exemple, en leur ajoutant
l’information temps relatif à leur capture et à une horloge commune).
42
2.3.2.2 Applications partagées
2.3.2.3 RTP/RTCP
Le protocole RTP (Real Time Protocol) a été développé au sein du groupe de travail AVT
(Audio Video Transport) de l’IETF [Schu 96], dans l’objectif de répondre aux besoins des
applications multimédias en terme de temps. Le protocole RTP fournit un format
d’encapsulation de paquets, pour les applications de type temps réel, qui permet de gérer le
temps, le démultiplexage ainsi que l’identification du contenu des paquets. Il est
principalement utilisé dans les applications d’audio et de visioconférence sur Internet. Le
protocole RTP est conçu pour fonctionner au dessus des protocoles UDP et TCP. Il utilise les
services offerts par la couche transport, comme le transport des données de "bout en bout", le
démultiplexage de plusieurs connexions de transport sur une même connexion réseau et la
transmission multipoint des données.
Le protocole RTP peut aussi être utilisé directement comme protocole de transport au
dessus d’IP ou IP-Multicast pour accroître les performances et réduire le sur-coût généré par
les octets des en-têtes. Cette dernière solution est intéressante pour certaines applications
temps-réel qui n’utilisent pas les services offerts par UDP, tels que le contrôle d’erreurs et le
démultiplexage. Etant donnée qu’il n’existe aucune restriction sur la fiabilité du réseau sous-
jacent, l’application dans ce cas, doit elle-même gérer les problèmes de pertes de paquets, de
réceptions de paquets hors séquence ainsi que les problèmes relatifs aux délais de
transmission. Le protocole RTP peut être utilisé conjointement avec le protocole RTCP (Real
Time Control Protocol) qui fournit un ensemble minimal de fonctionnalités pour la
conférence, comme l’identification de l’émetteur et le support des passerelles entre les
différents codages. RTP peut aussi être utilisé avec moins de fonctionnalités sans aucun
protocole de contrôle.
43
2.3.2.4 Multicast fiable
Le multicast fiable est une version du multicast qui permet de s’assurer que les paquets
ont bien atteint les membres de groupe [Paul 97,Whet 97]. Il repose sur la retransmission des
paquets perdus. La détection de ces paquets se base sur le champ numéro de séquence. A fin
d’éviter la surcharge de la source par les demandes de retransmission, les approches de
multicast fiable se basent sur la transmission des demandes à tout le groupe. N’importe quel
membre du groupe ayant une copie du paquet perdu pourra répondre en le retransmettant.
Toutefois, le nombre de réponse doit être limité. Une des techniques, qui permet de limiter ce
nombre, consiste à écouter le réseau et attendre un temps aléatoire avant de répondre. La
réponse est annulée si un autre membre du groupe a répondu [Schu 98].
a. Protocole SDP
44
Le protocole SDP définit clairement les termes "conférence multimédia" et "session
multimédia". Dans ce cadre, une conférence multimédia est définie comme un ensemble de
deux ou plusieurs utilisateurs communiquant entre eux via un logiciel. Quand à une session
multimédia, elle est définie comme un ensemble d’émetteurs, de récepteurs et de flots de
données échangées entre eux.
- le nom de la session ;
- la durée de la session ;
<type> Signification
V Version du protocole SDP
O Identificateur du propriétaire/Créateur de la session
S Nom de la session
I* Information sur la session
U* URI (Universal Ressources Identifier)
E* Adresse e-mail des personnes responsables de la session
P* Numéro de téléphone
C* Information concernant la connexion
B* Information concernant la largeur de bande
Z* Ajustements du temps selon la zone
K* Clé de cryptage
A* Attributs de la session (une ou plusieurs lignes de ce type)
La description d’une session en SDP est entièrement textuelle et utilise les caractères de
type UTF-8 [Yerg 96]. Cette description consiste en des lignes décrites selon la syntaxe :
<type>=<value>. Le type est représenté par un seul caractère dont la valeur spécifie sa
sémantique. La valeur " value" est structurée sous forme d’un texte dont le format dépend du
caractère attribué à "type". Le tableau I.2.1 (respectivement I.2.2 et I.2.3) donne les différents
caractères pouvant être pris par "type" ainsi que la signification correspondante et ce, pour la
description d’une session (respectivement temps et média). Les caractères marqués d’une
étoile sont optionnels.
45
<type> Signification
T Durée de la session
R* 0 ou plusieurs instants dans lesquels la session se répète
Dans une description SDP d’une session, nous distinguons deux types de descriptions :
une description de niveau session et une description de niveau média. La description de
niveau session débute par une ligne de type "v" (version du protocole SDP) et se termine à la
première ligne de type "m" (média) rencontrée. La description de niveau média, quand à elle,
commence par la première ligne de type "m". La figure I.2.8 décrit un exemple d’une
description de session.
<type> Signification
M Nom du média et l’adresse port
I* Titre du média
C* Information concernant la connexion (optionnelle si elle est déjà spécifiée
dans la description de niveau session)
B* Information concernant la largeur de bande
K* Clé de cryptage
A* Attributs du média (0 ou plusieurs lignes de ce type)
Dans cette description, chaque ligne respecte une syntaxe bien précise et relative au
caractère associé au type. Ainsi, la première ligne de la figure I.1.11 précise la version du
protocole SDP utilisée : (0). La deuxième ligne précise le propriétaire de la session :
mhandley, l’identificateur de la session ; 2890844526, la version de la session 2890841807, le
type de réseau : IN pour Internet, le type d’adressage IP4 et l’adresse IP : 126.16.64.4 qui
représente l’adresse (unique) de l’hôte ou a été créé la session. La troisième ligne décrit le
titre de la session : séminaire SDP.
46
v=0
o= mhandley 2890844526 2890841807 IN IP4 126.16.64.4
s=SDP Seminaire
i=Seminaire sur le protocole de description
u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu
c=IN IP4 224.2.17.12
t=2873397496 2873404696
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 31
La quatrième ligne donne plus d’informations sur la session. La cinquième ligne précise
l’URL qui servira comme adresse WWW pour plus d’informations sur la session. La sixième
ligne précise l’adresse électronique des personnes responsables de la session. La septième
ligne spécifie la connexion à utiliser pour participer à la session : IN, le type d’adressage : IP4
et l’adresse de la connexion (adresse de classe D pour le cas d’une session multicast). La
huitième ligne précise les instants de début et de fin de la session. Les deux dernières lignes
spécifient les médias utilisés par la session.
b. Protocole SAP
Le protocole SAP (Session Announcement Protocol) [Hand 97] permet de définir les
règles d’annoncement d’une session sur Internet en diffusant périodiquement un paquet SAP
(figure I.2.9) à des adresses et des ports bien définis. Ce paquet consiste en un entête SAP et
une partie utile qui représente la description de la session annoncée à l’aide du protocole SDP.
D’autres alternatives sont aussi possibles pour l’annoncement d’une session à savoir : le
WWW, le courrier électronique, etc.
Entête SAP
Description SDP
Le protocole SIP (Session Initiation Protocol) [Hand 98] est un protocole de niveau
application pour la signalisation de sessions. Il permet de créer, modifier et terminer des
47
sessions constituées de deux ou plusieurs participants. Ces sessions peuvent être des
conférences multimédias sur Internet, des appels téléphoniques sur Internet, des applications
d’apprentissage à distance ou autres applications similaires.
Le protocole SIP peut être aussi utilisé pour initier une session et d’y inviter des personnes
avisées préalablement de l’existence de cette session. Ce protocole supporte de manière
transparente la localisation des personnes invitées, la mobilité des personnes ainsi que la
retransmission des services. Ceci permet aux utilisateurs finaux d’émettre et/ou recevoir des
appels et d’accéder aux services de télécommunication sur différents terminaux. Il permet
aussi au réseau d’identifier un utilisateur qui a changé d’emplacement. Le concept de mobilité
est basé principalement sur l’utilisation d’un identificateur unique pour chaque utilisateur.
Dans la suite, nous allons utiliser les termes "appelant" ou "caller", respectivement
("appelé" ou "callee") pour designer la personne qui invite (respectivement la personne
invitée).
Les appelants et les appelés dans une session multimédia sont identifiés dans le protocole
SIP par des adresses SIP. Ce protocole offre aux utilisateurs, un service d’enregistrement
d’adresses de leurs emplacements auprès des "serveurs SIP". Quand un appelant décide
d’effectuer un appel, il commence par localiser le serveur approprié et envoie une requête SIP
qui, dans ce cas, est une requête d’invitation. Une requête SIP peut atteindre directement
l’appelé comme elle peut être retransmise sous forme de nouvelles requêtes SIP à travers des
"proxys". Ces différents aspects et services du protocole SIP sont détaillés dans ce qui suit.
- Adressage SIP
Les objets adressés par SIP sont des utilisateurs et des hôtes, identifiés par des URLs SIP.
Les URLs SIP prennent une forme similaire aux URLs relatifs au service telnet, i.e.
utilisateur@hote. La partie utilisateur comporte le nom de l’utilisateur ou son numéro de
téléphone. La partie hôte peut être aussi bien un nom de domaine ou une adresse de réseau
numérique. Une adresse SIP peut désigner soit un seul individu, soit la première personne
disponible d’un groupe d’individus, soit tout un groupe d’individus.
Quand un client décide d’envoyer une requête à un serveur SIP, il peut soit l’envoyer vers
un "serveur proxy" (proxy server), configuré localement et indépendamment de l’URI
(Universal Ressources Identifier), spécifiée dans la requête ; soit directement à l’adresse IP et
au port correspondant à l’URI de la requête. Dans le deuxième cas, le client doit déterminer le
48
protocole, le port et l’adresse IP du serveur. Pour obtenir ces informations, le client doit suivre
les étapes suivantes. En se référant au protocole spécifié par l’URI (TCP ou UDP), il doit
essayer de contacter le serveur au numéro de port qui figure dans l’URI de la requête. Si
aucun protocole n’est spécifié, le client doit essayer le protocole UDP et, au cas ou il n’arrive
pas à atteindre le serveur, il doit reformuler la requête en utilisant le protocole TCP.
- Invitation SIP
L’invitation est le principal service du protocole SIP. Une invitation SIP consiste en deux
requêtes principales : la requête INVITE suivie d’une requête ACK. La requête INVITE
formule une demande destinée à l’appelé pour joindre une conférence particulière ou entrer en
conversation avec l’appelant. Suite à l’acceptation de l’appelé, l’appelant confirme sa
participation par l’envoi de la requête ACK. Si l’appelant ne désire pas que l’appelé participe
à la conférence ou la conversation, il envoie la requête BYE au lieu de la requête ACK.
La requête INVITE contient une description de la session, décrite par exemple par le
protocole SDP. Cette description fournit à la partie appelée suffisamment d’informations pour
joindre la session. Pour une session multicast, la description de la session énumère les types et
formats des médias qui peuvent être distribués dans cette session. Pour une session point à
point, la description de la session énumère les types et formats des médias que l’appelant va
utiliser. Dans les deux cas, si l’appelé décide d’accepter l’appel, il répond en émettant à
l’appelant une liste similaire comprenant les médias qu’il va utiliser. Dans le cas d’une
session multicast, l’appelé renvoie la description de l’appelant.
Une invitation SIP peut s’effectuer de deux manières : soit via un "proxy server" (figure
I.2.10), soit via un "redirect server" (figure I.2.11). Dans la figure I.2.10, le "proxy server"
accepte la requête INVITE (étape 1) de la part d’un appelant, il contacte par suite le service de
localisation (étape 2) et obtient plus de précisions sur la localisation de la personne appelée
(étape 3). Le "proxy server" envoie ensuite la requête INVITE à l’adresse ou à l’ensemble des
adresses qui ont été fournis par le service de localisation (étape 4).
49
cs.tu.berlin.de
cs.tu.berlin.de
cs.tu.berlin.de
hgs@play
cs.tu.berlin.de
henning (3)
(2)
cz@cs.tu.berlin.de
INVITE INVITE hgs@play
henning@cs.colombia.edu (4)
(1)
cs.tu.berlin.de
Location Server
cs.tu.berlin.de
cs.tu.berlin.de
play.cs.columbia.edu
cs.tu.berlin.de
henning (3)
(2)
cz@cs.tu.berlin.de
INVITE
henning@cs.colombia.edu
(1)
300 Moved
lion play.cs.columbia.edu (4)
ACK
henning@cs.columbia.edu
(5)
INVITE play@cs.columbia.edu
(6)
play
200 OK (7)
ACK play@cs.columbia.edu
(8)
50
Dans la figure I.2.11, le serveur "redirect server" accepte la requête INVITE (étape 1),
contacte le service de localisation (étapes 2 et 3) comme dans le premier cas. Toutefois, au
lieu que le "redirect server" retransmet cette requête vers l’appelé dont l’adresse a été fournie
par le service de localisation, il l’envoie à l’appelant (étape 4). Celui-ci avise le "redirect
server" par une requête ACK (étape 5) et envoie une nouvelle requête INVITE à l’appelé
(étape 6). Dans cet exemple, l’appel est réussi (étape 7 et 8). Les messages "200 OK" et "300
moved" font partie des réponses aux requêtes SIP. Ces réponses sont bien définies dans la
norme relative à ce protocole.
Une personne peut se déplacer entre différents hôtes. Le protocole SIP offre aux
utilisateurs un service d’enregistrement de leurs différents emplacements. Ainsi, suite à une
invitation, un serveur de localisation peut retourner plusieurs adresses d’un utilisateur étant
donné que ce dernier peut être connecté à plusieurs hôtes.
Les actions entreprises suite à la réception d’une liste d’adresses diffèrent selon le type du
serveur. Un "redirect server" retourne cette même liste au client. Quand au "proxy server", il
essaye séquentiellement ou parallèlement les adresses figurant dans la liste jusqu'à ce que
l’appel réussisse ou que l’appelé décline cet appel.
- Service d’enregistrement
Le protocole SIP offre le service d’enregistrement via la requête REGISTER qui permet à
une personne d’enregistrer les adresses auxquelles il peut être contacté. Cet enregistrement
peut se faire soit au niveau d’un "redirect server" ou d’un"proxy server"
51
permanence les ressources disponibles du réseau, afin de prendre les décisions de routage
appropriées. Le protocole RSVP est un protocole "orienté-récepteur" dans le sens où, la
réservation des ressources est prise en charge par les récepteurs. Ceci lui permet de s’adapter
à un nombre variable et important de récepteurs. Ainsi lorsqu’un récepteur veut recevoir un
ou plusieurs flots, il doit s’abonner à un groupe multipoint correspondant. Les messages de
réservation de ressources sont envoyés en parallèle avec le flot de données de l’utilisateur.
Ces messages contiennent une description du profil des datagrammes pour lesquels la
réservation est faite. D’autre part, le protocole RSVP n’associe pas la réservation au routage.
En effet, le chemin emprunté par les paquets est découvert automatiquement et les paquets de
réservation sont émis sur cette voie.
Le protocole RSVP utilise des états transitoires pour mettre à jour la liste des réservations
en cours. En d’autres termes, cela signifie que les sources doivent périodiquement
retransmettre les messages de désignation de chemin aux différents routeurs. Ceci a pour
objectif, d’une part de rappeler à ces derniers l’existence des flots, et d’autre part pour se faire
connaître auprès des nouveaux récepteurs. De plus, ces retransmissions renforcent la
robustesse du protocole contre les pannes temporaires des routeurs, de la source ou des
récepteurs.
Une conférence multimédia peut adopter différentes formes et peut avoir différentes
tailles. Toutefois, elle est généralement de deux catégories : la première catégorie concerne les
conférences fortement couplées et la deuxième catégorie est relative à la conférence
faiblement couplée.
Les conférences faiblement couplées sont des conférences ou le flux est unilatéral. En
effet, ce type de conférence est généralement constitué d’un conférencier et de participants
qui reçoivent les données multimédia provenant du conférencier. Une session d’une
conférence faiblement couplée consiste en un échange de paquets multimédias au dessus de
RTP/RTCP et IP multicast. Ce type de conférence ne nécessite ni contrôle de membres ni
mécanismes de contrôle de la conférence au cours de son déroulement.
Les conférences fortement couplées sont des conférences où l’interaction entre les
participants est forte. Cette interaction peut adopter différentes politiques formelles respectant
des protocoles sociaux sous-jacents et des scénarios particuliers. Elles doivent intégrer des
techniques de contrôle explicite qui permettent de gérer et les membres de la conférence et les
52
ressources partagées de la conférence. Ces techniques consistent en des politiques constituant
des règles de contrôle et des mécanismes qui implémentent ces politiques et par suite le bloc
contrôle distribué de l’architecture de téléconférence sur Internet. Toutefois, peu d’intérêt a
été porté à ce bloc dans les systèmes existants.
2.4 Conclusion
Nous avons présenté dans ce chapitre les travaux de l’ITU et l’IETF concernant les
systèmes de téléconférence. Ces travaux fournissent des standards concernant les équipements
et les protocoles supportant le transport des données multimédias et les outils de travail
coopératif synchrone. Ils définissent aussi les besoins en terme de gestions et contrôle de
conférence.
53
Chapitre 3
3.1 Introduction
Nous avons présenté dans le chapitre précédent les travaux de l’ITU et l’IETF concernant
les supports technologiques du travail coopératif synchrone. Les recommandations de ces
travaux ont servi de base pour le développement et l’implémentation de plusieurs systèmes de
téléconférence. Ces systèmes s’intéressent plus à l’aspect transport de données multimédia.
Cependant, peu d’intérêt est porté à l’aspect gestion et contrôle de conférence et à leur
implémentation.
54
3.2 Produits de téléconférence
Nous présentons dans cette section des produits de conférence multimédia. Nous
distinguons deux catégories de tels produits. Cette catégorisation est basée sur le fait que le
produit respecte les standards ITU ou IETF.
Intel Video phone est une application créée par intel. Elle est implémentée seulement pour
la plate-forme windows. Elle est basée sur le standard H.323. La compression audio et vidéo
se font par des algorithmes réalisés par Intel et ne respecte par les standards ITU. Les données
audio et vidéo sont distribuées selon le mode unicast. En effet, cette application offre
seulement des connexions point à point utilisant une approche similaire a celle du téléphone
standard. Pour appeler une personne, il suffit de donner son adresse IP. Un appel peut être
accepté ou ignoré. Une connexion peut être interrompue à n’importe quel moment. Intel
Video Phone dispose d’une interface simple. Toutefois, il ne permet pas d’établir des
conférences de groupe ce qui limite son usage.
3.2.1.3 NetMeeting
55
partager des applications, d’échanger des informations entre les applications partagées à
travers un "clipboard", transférer des fichiers, collaborer sur un tableau blanc partagé et
communiquer avec un outil de chat textuel. Il supporte aussi le standard T.120 qui lui permet
d’interopérer avec les produits basés sur T.120. NetMeeting offre des services de gestion du
répertoire du groupe (directory services) via des serveurs ILS (Internet Locator Server). Ces
serveurs utilisent le protocole LDAP (Lightweight Directory Access Protocol) pour offrir de
tels services. Les utilisateurs peuvent visualiser le répertoire ILS avec NetMeeting ou à
travers une page WEB pour lister les membres qui exécutent NetMeeting. Ils peuvent ensuite
choisir de se connecter avec un membre (ou plusieurs) de la liste visualisée, en tapant les
informations relatives à leurs emplacements ou de sélectionner un autre participant. Un
utilisateur particulier peut accéder à un serveur ILS, se connecter, créer un répertoire des
utilisateurs disponibles.
3.2.1.4 CU-SeeMe
CU-SeeMe [Dorc 95] a été conçu spécialement pour des plates-formes peu puissantes de
type Macintosh et PC. Il représente l’un des produits les plus commercialisés. C’est un
système multi-utilisateurs, qui offre des services facilitant l’établissement d’une conférence.
Cu-SeeMe est basé principalement sur le standard H.323 et supporte la compression vidéo
H.263. Il offre une application tableau blanc supportant le standard T.120 et un chat textuel. Il
fournit aussi des fonctionnalités permettant le contrôle de la transmission et de la largeur de
bande.
3.2.2.1 VIC/VAT
Les outils VIC (Videoconferencing Tool) et VAT (Visual Audio Tool) ont été développés
au laboratoire LBL (Lawrence Berkeley Laboratories) [Mbon 02]. Ce sont deux applications
qui peuvent s’exécuter indépendamment l’une de l’autre. Toutefois, elles peuvent s’exécuter
56
en même temps. Pour cela, un troisième outil a été développé pour la coordination entre ces
deux applications. Cet outil porte la dénomination SD (Session Directory). Il fournit les
informations sur les conférences supportées par VIC et VAT.
3.2.2.2 IVS/RODEO
IVS (INRIA Visioconference System) [Turl 95, IVS 03] est un système de visioconférence
qui a été développé dans le cadre du projet européen MICE. Il est actuellement utilisé par un
très grand nombre de sites universitaires de recherche et par des industriels [Sass 94]. IVS est
le premier système de visioconférence dans lequel la compression est réalisée au niveau
logiciel. Ceci a permis de réduire considérablement le coût de cette opération par rapport à
celle réalisée par des codecs physiques. IVS adopte le standard H.261 pour la compression
vidéo. Cet outil dispose aussi de techniques lui permettant de décomposer le flot H.261
produit par le codec, en des paquets afin de pouvoir les transmettre via le protocole UDP. Ce
découpage se base sur le principe de la mise en trame par l’application (ALF : Application
Level Framing). Ce principe a pour objectif de minimiser les accès mémoires et le nombre de
paquets sur le réseau. Pour avoir un format d’encapsulation commun avec les applications
multimédia développées sur Internet, IVS s’est basé sur le protocole standard RTP. Cet outil
adopte aussi des techniques de contrôle de débit au niveau des codecs permettant un
ajustement de ce dernier en fonction des capacités du réseau. Il intègre aussi un algorithme de
contrôle de congestion. Rendez-vous, le successeur d’IVS, intègre des mécanismes de
synchronisation basée sur RTP et un ordonnancement spécifique des traitements sur les flux
audio et vidéo de l’application.
3.2.2.3 CONFCNTLR
ConfCntlr [Perr 97] est un outil Mbone qui s’exécute avec d’autres outils de
visioconférence tel que VIC et VAT pour améliorer l’utilisation de la vidéo et de l’audio. Les
outils Mbone VIC et VAT disposent d’interfaces séparées et ne peuvent pas être contrôlés à
distance. Ces outils ne permettent pas à un utilisateur sur un site de lancer la conférence sur
57
un autre site ou changer des paramètres sur un site distant une fois l’outil lancé. ConfCtrl est
conçu pour remédier à ce type de problèmes en permettant un contrôle local et distant des
outils audio et vidéo et fournit une seule interface pour les deux outils VIC et VAT. A l’aide
de ConfCtrl, les utilisateurs sur un site donné peuvent lancer des sessions audio et vidéo sur
d’autres sites et peuvent spécifier les valeurs des paramètres. Ils peuvent aussi changer les
paramètres audio et vidéo sans relancer ses outils.
3.2.2.4 CONFMAN
Confman [From 98, Conf 04] permet une initiation et une manipulation aisées des
conférences multimédias sur Internet. Le noyau du système Confman est composé de sous-
systèmes supportant chacun différents services. Le contrôle de conférence est un de ces
services. Ce service permet l’initiation de la conférence et la gestion d’un répertoire
d’adresses qui contient les adresses des membres de la conférence. D’autres services sont
fournis par ces outils parmi lesquels, il y a : l’annoncement en se basant sur les concepts de
"session directory" et des services téléphoniques tel que l’attente d’appel et le transfert
d’appel. La communication dans cet outil est supportée par le protocole CCCP (Confman
Conference Control Protocol). Ce protocole manipule des données échangées entre les sites
concernant les jointures, les départs de participant et la terminaison de la conférence. L’outil
Confman présente une interface à l’utilisateur pour interagir avec son noyau.
A partir de cette étude comparative, nous constatons que peu d’intérêt est porté à la
gestion de conférence et au contrôle de floor. Nous présentons dans la section suivante les
principaux aspects relatifs à ces deux aspects au sein d’une conférence multimédia.
58
Produits Intel Video IBM Bamba Cu-Seeme VIC VAT IVS/Rodeo CONFCNTLR CONFMAN
Phone Phone
Caractéristiques
Format vidéo Non H.263 H.261 H.261 Vidéo non H.261 Vidéo non traitée Vidéo non
standardisé supportée supportée
Synchronisation Basée sur Basée sur Basée sur Non Non Basée sur Non supportée Non
des médias les les les supportée supportée les supportée
estampilles estampilles estampilles estampilles
de RTP de RTP de RTP de RTP
Travail de groupe Non Non Supporté Supporté Supporté Supporté Supporté Supporté
supporté supporté
Gestion de Non Non Supporté Non Non Non Non supportée Supportée
conférence supportée supportée supportée supportée supportée
Contrôle de floor Non Non Non Non Non Non Non supporté Non supporté
supporté supporté supporté supporté supporté supporté
Application Non Non Supportée Non Non Non Non supportée Non
partagée supportée supportée supportée supportée supportée supportée
59
Durant le cours, c’est le professeur qui émet ses médias et est vu et entendu par tous les
étudiants. Il manipule un ensemble de ressources dans le but d’assurer son cours (télépointeur,
slides, tableau blanc, etc.). En vue de comprendre certains points du cours, un étudiant peut
demander la parole. L’enseignant lui donne le droit de la parole. Ceci permet à cet étudiant
d’être vu et entendu par les autres membres de la classe et d’avoir accès à certaines
ressources.
Toutefois, ces deux modèles sont centralisés dans le sens où toutes les informations du
groupe sont localisées au niveau d’un seul serveur et toutes les opérations de gestion de la
conférence se passent via ce serveur. D’autres modèles sont distribués et ne comportent pas de
serveur détenant toute l’information de la conférence. Cette information est distribuée sur tous
les sites des participants.
La liste des droits des utilisateurs fournit des informations sur les privilèges des
participants de la conférence. Ces listes peuvent aussi comporter des informations concernant
60
les personnes ayant le privilège d’acceptation ou de refus de nouveaux participants ainsi que
le privilège d’intercepter et de répondre aux requêtes concernant les ressources partagées. Ces
deux privilèges font généralement partie des fonctions d’un modérateur de conférence [Hilt
01].
Toutefois, les MMTS peuvent adopter une certaine souplesse de façon à ce que ces
privilèges soient distribués sur un ensemble de participants. La gestion de conférence peut
aussi comporter des informations concernant les participants autorisés à joindre la conférence,
les participants qui peuvent se connecter en mode écoute seulement et les participants non
autorisés. La gestion de la conférence doit supporter aussi l’initialisation des fonctions
concernant le control de la conférence [Rodr 01].
Le floor est défini comme étant une permission temporaire accordée dynamiquement aux
utilisateurs d’un groupe d’un MMTS dans le but d’assurer un usage mutuellement exclusif des
ressources partagées au sein de la conférence. C’est une entité logique qui représente une
ressource partagée dans une conférence multimédia. Cette ressource peut être le droit de
parole, l’accès a une bande étroite de vidéo, un pointeur, un focus dans une application
partagée.
[ Domm 97] définit le contrôle de floor comme étant une technologie qui apporte des
solutions aux conflits dans des espaces de travail partagés ainsi qu’à la coordination des
activités de cette espace. Il permet aux utilisateurs d’utiliser les ressources partagées d’une
conférence sans conflit. Toutefois, il ne faut pas confondre le contrôle de floor avec le
contrôle de la concurrence qui est généralement relative au contrôle d’accès a des bases de
données de type read-write et write-write. Ces interactions sont généralement résolues à l’aide
des transactions garantissant les propriétés d’atomicité, de consistance, d’isolation et de
durabilité.
61
verbales (regards fixes, élévation de ton, etc.) qui permettent aux participants de mener la
conversation ainsi que d’autres activités à tour de rôle (turn-taking) [Sein 97, Tros 00].
Dans une session virtuelle d’un MMTS, la communication explicite basée sur les
conventions culturelles, sociales et pragmatiques ne peuvent pas être perçues de la même
manière que dans une réunion réelle. Ceci est dû à l’absence de la conscience mutuelle
(awarness) des activités de groupes, des évènements et de l’espace de travail distant. De plus,
le manque de la présence personnelle peut imposer certaines limitations au niveau de la
qualité de la conférence.
La télé-présence peut être améliorée par des techniques de middleware qui facilite le
travail coopératif. Ces techniques consistent en des politiques qui réglementent l’échange du
floor et des mécanismes qui implémente ces politiques. La métaphore du floor ainsi que les
problèmes concernant le contrôle du "floor" n’ont pas été adressés d’une manière assez
compréhensive [Wu 02].
3.3.2.1 Politiques
Les approches de contrôle de floor reposent sur les politiques utilisées pour assurer ce
contrôle. [Domm 99] définit une politique comme étant l’ensemble des règles et méthodes qui
permettent de déterminer la séquence de décision d’affectation du floor aux participants d’une
conférence. La conception d’une politique d’un MMTS doit prendre en compte deux facteurs
essentiels. Le premier facteur concerne la capacité de MMTS à utiliser les informations de la
conférence disponible en vue de prendre les décisions adéquates. Le deuxième facteur
concerne les types des informations disponibles au MMTS pour la prise de ces décisions. La
prise de décisions dans les politiques de contrôle de floor consiste en la manière avec laquelle
le floor est échangé ainsi que la sélection du prochain détenteur de floor. Peu de travaux
concernant les politiques de sélection ont été proposés et implémentés.
Parmi les politiques de sélection les plus évidentes, nous distinguons la politique premier
arrivé – premier servi. Cette politique requiert des mécanismes permettant de comparer et de
mémoriser les requêtes selon leur ordre d’arrivée, assurant ainsi la propriété d’équité.
Toutefois, une politique doit prendre en compte aussi le paramètre temps en vue d’éviter la
famine. [Domm 04] identifie les politiques suivantes : la politique à base d’agenda, la
politique à base de temporisateur, la politique à base d’ordre prédéfini, la politique à base
d’élection, la politique Ad hoc et la politique à base de tirage au sort.
62
Dans la politique à base d’agenda, le floor est affecté selon un plan donné ou un ordre de
tâches défini avant le lancement d’une session de la conférence. Dans la politique orientée
temps les requêtes de floor et son usage se font selon des temporisateurs définis par des
conditions ou des évènements du système. Chaque détenteur du floor dispose de ses propres
contraintes temporelles. Dans la politique ordre prédéfini, le floor est accordé et demandé
selon une séquence basée sur un chemin dans une topologie de sites collaboratifs. La politique
premier arrivée premier servi fait partie de ce type de politique [Schu 04].
[Fluc 95] propose une classification plus simple des approches de politiques de contrôle
de floor. Celle ci consiste en quatre catégories principales :
- Politique sans contrôle : Chaque membre du groupe peut accéder aux ressources
communes sans contrôle. La découverte et la résolution de conflits dépendent du bon sens,
la bonne foi et du comportement social des membres du groupe. Cette approche est
convenable pour les petits groupes.
63
3.3.2.2 Mécanismes de réalisation
Les politiques définissent les règles d’échange de floor entre les participants d’un MMTS.
Ces politiques sont implémentées par des mécanismes qui consistent en des techniques
algorithmiques permettant de réguler le contrôle de bas niveau et de synchroniser les
évènements entre les sites. Ces mécanismes sont basés sur les techniques d’exclusion
mutuelle et d’accès multiple. [Shen 94] identifie les mécanismes suivants : La négociation, le
passage du jeton, l’étiquetage temporel, le verrouillage, le blocage, la réservation et la
détection de dépendance.
Nous donnons dans le tableau I.3.2 la correspondance entre les différentes classes de
politique et les mécanismes. Ce tableau donne pour chaque politique les mécanismes qui
peuvent l’implémenter.
64
Mécanismes Négocia- Passage Demande Etiquetage Verroui blocage Reserva- Détection
tion jeton Jeton temporel -llage tion Dépendance
Politiques
Sans contrôle *
Explicite * * * *
Implicite * *
Présidée *
Nous présentons dans ce qui suit les travaux effectués par l’IETF dans le domaine de la
gestion et contrôle de conférence. Ces travaux sont décrits dans la spécification SCCP (Simple
Conference Control Protocol).
Le document SCCP [Born 01] définit les services requis par un protocole de gestion et de
contrôle de conférence. Il fait partie du bloc de "gestion de la conférence" de l’architecture
IETF concernant la conférence multimédia sur Internet présentée au chapitre 2. Cette
architecture comprend des éléments de contrôle uniquement pour des conférences faiblement
couplées. Ce type de conférence est généralement constitué d’un conférencier qui diffuse sa
présentation et un ensemble de participants qui la reçoivent. Ainsi, un participant n’interagit
ni avec le conférencier ni avec un autre participant.
Or une conférence peut adopter une politique respectant un "protocole social" sous-jacent
ayant un scénario spécifique où l’interaction entre les différents participants est forte. Les
conférences de ce type sont désignées par le terme "conférences fortement couplées". Le
protocole SCCP définit les besoins ainsi que les services requis par ce type de conférence. La
définition de ces services repose sur les recommandations de l’ITU-T de la série H.323 qui les
regroupe en trois catégories :
65
- les services de gestion de sessions média/applications qui constituent la conférence.
Ce type de services permet la négociation et le changement des paramètres de manière
coordonnée entre tous les participants.
Selon le document SCCP, une conférence est constituée d’un ensemble de participants.
Un "participant" est défini comme étant une personne prenant partie à la conférence. Un
participant SCCP utilise un système désigné par "Membre". Ce système englobe l’ensemble
du matériel et logiciel lui permettant de participer à la conférence. Un membre SCCP est
spécifique à un seul participant. Le site ou l’ensemble des sites interconnectés localement,
qu’utilise un participant représente le "système final" et joue le rôle d’interface entre le
participant et la conférence. Le système final SCCP exécute tous les logiciels requis par la
téléconférence et, l’ensemble constitue le membre SCCP.
Le contrôle et la gestion de la conférence sont assurés par l’ "entité SCCP". Une telle
entité est une instanciation d’une implémentation SCCP s’exécutant sur un système final
SCCP et concerne un seul membre. Une entité SCCP représente un participant spécifique
utilisant le protocole SCCP dans la conférence. Un participant SCCP interagit avec l’entité
SCCP via un composant nommé "Contrôleur de conférence". Ce composant lui permet de
choisir une politique bien déterminée. Il interagit d’une part avec l’entité SCCP en vue
d’implémenter la politique souhaitée et d’autre part avec le participant pour réaliser ses
requêtes. Chaque participant SCCP est identifié par son "UCI" (Universal Communication
Identifier). Cet identificateur est utilisé pour inviter un participant via SIP.
66
SCCP définit la notion de "présence" comme étant l’information qui représente le fait
qu’une personne est en train d’utiliser un système final dans l’objectif de représenter cette
personne dans une ou plusieurs conférence. La présence correspond ainsi au fait que la
personne est connectée au système final et qu’elle est disponible pour la conférence.
Les informations d’une conférence ainsi que celles relatives à ses participants sont
disponibles dans chaque membre SCCP et sont désignées par le "Contexte de conférence". Un
"profil" de conférence, représentant une description initiale de la conférence, spécifie les
affectations des rôles aux différents membres, les intervalles de temps des interventions
relatives aux différents participants ainsi que les attributs de la conférence (ouverte/fermée,
conduite/anarchique, etc.). Les informations relatives aux différents floors de la conférence
sont accessibles par toute entité SCCP via des requêtes appropriées sur le "Contexte de floor".
Dans cette section, nous présentons les services décrits par le document SCCP. Ces
services sont groupés en trois catégories : services de gestion de la conférence, services de
"contrôle de floor" et services de gestion des sessions média/application.
L’entité SCCP est responsable de la gestion des informations contenues dans le contexte
de conférence. Ces informations concernent les membres SCCP de tous les participants de la
conférence. Le document SCCP décrit un ensemble d’opérations pour la manipulation des ces
informations. Un participant dans une conférence multimédia peut effectuer une opération
d’invitation (invite) à un autre participant pour participer à une conférence tout en respectant
la politique adoptée. Il peut aussi joindre (join) dynamiquement une conférence, la quitter
(leave) sans créer des discordances ou la terminer (terminate).
67
une politique donnée. Le document SCCP énumère juste les services devant être fournis pour
le contrôle du floor. Il ne spécifie pas comment réaliser une politique à laide l’entité SCCP.
Nous tenons à noter que le document SCCP spécifie uniquement les services de manière
informelle. Il ne fournit pas une spécification du comportement dynamique ainsi que les
mécanismes nécessaires pour l’implémentation.
3.4 Conclusion
Nous avons présenté dans ce chapitre des produits de téléconférence. Nous avons ensuite
procédé à une comparaison entre ces produits en se basant sur un ensemble de paramètres.
Parmi ces paramètres, nous avons mis le point sur la gestion et le contrôle de conférence.
Nous avons présenté les concepts relatifs à ces deux concepts.
La formalisation est une étape d’un grand intérêt pour le développement des systèmes et
applications complexes. Elle permet d’aboutir à des spécifications claires, consistantes et
68
vérifiables. Ceci permet de faciliter la réalisation des systèmes spécifiés et d’assurer leur bon
fonctionnement.
69
Deuxième Partie
Architecture,
spécification et
implémentation
70
Chapitre 1
Formalisation de la gestion et du
contrôle au sein d'une conférence
multimédia
Le travail de ce chapitre a été réalisé au laboratoire LORIA de Nancy au cours d’un stage de
recherche dans le cadre du projet STIC. Ce travail a fait l’objet de la publication suivante :
M. Ouzzif, M. Erradi and A. Schaff, "An SDL Specification of Coordination Protocol within a
Teleconferencing System", ISIVC2000, Rabat, 2000.
1.1 Introduction
Nous avons présenté à travers l’étude bibliographique de la première partie, les concepts
de TCAO en général et des systèmes de téléconférence en particulier. Nous avons montré via
cette étude le besoin ainsi que le rôle de la gestion et du contrôle de conférence multimédia.
Nous avons présenté aussi la recommandation SCCP qui décrit les services que doit fournir
un protocole de gestion de conférence et de contrôle de floor. Toutefois, cette
recommandation fournit juste une description informelle de ces services et ne spécifie pas le
comportement dynamique du protocole de gestion et de contrôle de conférence. Ce
comportement doit être défini et formalisé en vue de pouvoir vérifier la consistance du
protocole et de tester ses implémentations.
71
et explicite) le comportement du système de téléconférence sous-jacent et son protocole en
utilisant le modèle des automates à états finis.
72
l’application. Dans une architecture centralisée, tous les sites interagissent avec le
serveur générant ainsi un nombre élevé de messages.
Protocoles de gestion
Protocoles de gestion
Serveur SIP Serveur SIP
Membre Membre
(UCI) (UCI)
Groupe de
travail
virtuel
Internet
Protocoles de gestion
Système
final Protocoles de gestion
Membre
(UCI) Système
73
L’architecture de la conférence multimédia que nous proposons est composée de plusieurs
participants identifiés par des UCIs (Universal Communication Identifier) (figure II.1.1).
Chaque participant est connecté à un réseau local et peut assurer sa présence à la conférence à
travers un ou plusieurs hôtes. L’ensemble des hôtes utilisés par un participant constitue son
système final. Ce système est exploité à l’aide d’un ensemble de logiciels et protocoles
spécifiques à la gestion et au contrôle de conférence. Ces outils, associés au système final
constituent le membre de conférence relatif à un participant donné.
Chaque membre dispose au niveau de son réseau local d’un serveur SIP permettant aux
autres participants (sur d’autres réseaux) de le localiser et de l’inviter à participer à une
opération donnée de la conférence en utilisant le protocole SIP.
L’architecture protocolaire que nous proposons est basée sur la pile de l’IETF. Elle se
présente sous forme d’une pile de protocoles répliquée sur tous les systèmes finaux d’une
conférence (figure II.1.2) [Ouzz 00a]. Elle est composée des blocs suivants : Le bloc
"Interface de Conférence" (Conference Controller selon SCCP), le bloc "Gestion et
Contrôle", le bloc "Agents Média" et le bloc "Transport". Le bloc "Interface de Conférence"
constitue une interface entre l’utilisateur et le bloc "Gestion et Contrôle". Il présente les
différentes politiques de gestion et de contrôle pouvant être supportées par le système de
téléconférence. Il permet à l’initiateur de la conférence de choisir une politique déterminée et
à un utilisateur de joindre cette conférence en respectant les règles de cette politique.
74
Interface de
Conférence
Politique
Entité GCCF
Applications
C_C Coordination_GCCF Audio/Vidéo
F_C partagées
Gestion Média
TCP/UDP
IP / IP Multicast
Couche basse
Bloc Transport
L’entité GCCF que nous avons conçu, est composée de quatre processus : le processus
"Gestion Conférence", le processus "Contrôle Floor", le processus "Gestion Média" et le
processus "Coordination_GCCF". Elle comporte aussi deux contextes sous forme de base de
données : le contexte de floor qui maintient localement les informations concernant les
75
différents floors de la conférence et le contexte de conférence qui détient les informations
concernant le groupe de conférence.
Le processus "Contrôle Floor" fournit les services de coordination des interactions entre
les participants de la conférence et les services de gestion et de contrôle d’accès à ses
ressources partagées. Il interagit avec le contexte de floor pour le mettre à jour à chaque fois
qu’il reçoit un message de contrôle de floor (attribution, retrait, etc) ou pour obtenir des
informations sur les floors de la conférence. Ce processus contrôle aussi les ressources
multimédias (audio/vidéo, applications partagées) à travers le processus "Gestion Média".
Celui ci interagit avec les modules du bloc "Agents Médias" pour leur ordonner d’agir sur les
ressources de la conférence. Le processus "Coordination_GCCF" joue le rôle de
coordonnateur entre les processus "Gestion Conférence" et "Contrôle Floor" et d’interface de
l’entité GCCF vis à vis du bloc "Interface de Conférence".
Le bloc Agents média est constitué des applications audio vidéo, des applications
partagées, des sessions RTP, et du protocole de multicast fiable. Chaque application
multimédia (audio ou vidéo) dispose d’une session RTP/RTCP lui permettant d’acheminer les
paquets audio ou vidéo en temps réel. Les applications partagées interagissent avec les
connexions multicast fiables pour assurer une fiabilité du transport des données.
La figure II.1.3 montre les deux types d’interactions relatives à la gestion et au contrôle de
conférence. On distingue les interactions entre les processus "Gestion Conférence" et
"Contrôle Floor" des différents membres de la conférence (flèches en gras) et les interactions
internes à une entité GCCF (entre les processus "Coordination_GCCF", "Gestion
Conférence", "Contrôle Floor" et "Coordination_GCCF"). Les premières interactions sont
assurées par les services de transport de données (unicast ou multicast).
76
Interface Conférence
Politique
Gestion Gestion
Conférence Conférence
Bloc Transport
Les travaux de recherche relatifs à la gestion d’un MMTS se sont intéressés plus à l’aspect
architectural [Kaus 99], aux pré-requis en terme de services de gestion et contrôle de
conférence [Ibri 02, Wu 02, Domm 03, Domm 04, Owez 97, Hilt 01, Kaus 98a, Schu 04] et à
l’interopérabilité [Kaus 98b] entre MMTSs. Peu de travaux sont consacrés à la description
formelle du comportement d’un MMTS selon une politique adoptée. Le processus de
formalisation permet d’accomplir des spécifications claires, consistantes et sans ambiguïtés. Il
permet aussi de rendre possible la vérification des propriétés d’un système ainsi que son test
de conformité. Dans cette section, nous commençons par donner un bref aperçu sur les
techniques de description formelles. Nous présentons ensuite la description formelle du
comportement d’un MTTS selon deux politiques différentes (présidée et explicite).
La description formelle des systèmes distribués et leurs protocoles constitue une étape
primordiale dans le cycle de vie de leur développement. Elle permet de décrire et de maîtriser
le comportement de chaque entité ainsi que le comportement global du système en vue
d’éviter des erreurs lors de sa mise en place. Chaque technique de description formelle est
basée sur un ensemble de modèles mathématiques appelé formalisme.
77
Un formalisme peut être de deux types [Ango 93] : opérationnel ou descriptif. Le premier
type (qualifié également de formalisme orienté modèle) permet de décrire un système en
terme de fonctionnement (description du comment). Il est basé généralement sur la notion de
machine d’état abstraite dans laquelle, les états et les transitions possibles sont définis au
préalable. Parmi ces formalismes, nous distinguons les machines à états, les réseaux de Petri
et l’algèbre de processus. Quand aux formalismes descriptifs (ou orientés propriétés), ils
permettent de décrire les propriétés du système. Ce type de formalismes utilise généralement
la logique temporelle comme moyen de description de ces propriétés.
La spécification formelle d’un système selon un formalisme donné est élaborée par un
langage de spécification formel qui adopte ce formalisme. Nous distinguons principalement
trois langages de spécifications normalisés à savoir ESTELLE, LOTOS et SDL. Le langage
ESTELLE (Extended State Transition Language) est normalisé par l’ISO en 1989 pour la
description des services et protocoles OSI en particulier et des systèmes distribués en général
[ISO 89]. Il est basé sur les concepts de module et sous modules pour la structuration du
système et sur le concept de canaux pour l’échange des messages entre les modules.
Il existe aussi des langages de spécification orientés-objets. Nous citons comme exemple
le langage Mondel. Ce langage a été développé dans le cadre du projet CRIM/BNR
(Computer Research Institute of Montréal) [Boch 90]. Une spécification Mondel suit une
méthodologie composée des étapes suivantes : identification du problème général (phase
78
informelle), identification des composants (objets), identifications des services (opérations
des objets) et définition des comportements.
Un certain nombre d’outils ont été développés pour le support des langages de
spécification formelle. A titre d’exemples, nous citons : Veda [Jard 94] qui supporte les
concepts ESTELLE, Geode [Cava 88] de Verilog pour le langage SDL et SPIN/Promela qui
n’est pas spécifique à un langage normalisé et supporte le formalisme de machines à états
finis. Ces outils offrent des fonctionnalités de vérification et de génération de cas de tests.
Nous décrivons dans cette section un MMTS selon la politique présidée. Nous
commençons par une spécification informelle élucidant les règles de cette politique, nous
présentons ensuite sa spécification formelle.
Lorsqu’un participant désire utiliser une ressource partagée, il envoie une requête de
demande de floor qui est enregistrée au niveau du modérateur. Quand ce dernier décide
d’accorder le floor à un participant, il commence par l’inviter en utilisant le service
d’invitation du protocole SIP. Si le participant concerné répond à l’invitation, le modérateur
lui passe le floor en lui accordant un délai de prise de parole bien précis. Deux cas peuvent se
présenter après : soit que le participant restitue le floor dans le délai qui lui est imparti, soit
79
qu’il dépasse ce délai. Dans le deuxième cas, le modérateur lui retire le floor. Le modérateur
peut aussi inviter un participant à prendre la parole sans que ce dernier la demande.
Le modérateur ainsi que les participants mettent à jour les contextes de conférence et de
floors à chaque fois qu’ils reçoivent des messages concernant la gestion de conférence ou des
messages concernant le contrôle de floor. Ceci permet d’assurer une consistance de
l’information au niveau de tous les sites. Pour ce faire, le mode de transmission utilisé est le
mode multicast. Ceci permet d’assurer la réception des messages de gestion et de contrôle de
floor par tous les participants de la conférence.
a. PDU
IP_Multicast Port
Name IP_Address
Il existe deux types de messages utilisés par l’entité GCCF : les messages de gestion de
conférence, échangés entre les processus relatifs à la gestion de conférence et les messages de
80
contrôle de floor échangés entre les processus de contrôle de floor. Chacun des processus
"Gestion Conférence" et "Contrôle Floor", utilise les champs appropriés à ses primitives. Ces
champs sont les suivants :
- Type_Media : ce champ est composé de trois champs sous forme de flags. Ils désignent
les types de médias supportés par la conférence ;
b. Services GCCF
Rappelons que l’entité GCCF d’un MMTS fournit les services de gestion de conférence et
de contrôle de floor de manière distribuée. Ceci est assuré par l’échange en mode multicast
d’un ensemble de primitives de services. Ces services sont de deux types : les services de
gestion de conférence et les services de contrôle de floor.
81
- Quitter la conférence (GCCF_Leave) : permet à un participant de quitter dynamiquement
la conférence. Les contextes de conférence et de floor au niveau de tous les membres du
groupe sont mis à jour lors de la réception d’un message GCCF_Leave ;
- Inviter un participant (GCCF _Invite) : permet à un participant d’inviter un autre
participant du groupe à participer à la conférence. Elle fait appel aux services d’invitation
et de localisation du protocole SIP ;
- Répondre à une invitation (GCCF _Accept) : cette primitive exprime qu’un participant
accepte l’invitation effectuée à l’aide de GCCF_Invite ;
- Arrêter une conférence (GCCF_Pause) : permet d’arrêter la conférence pendant une
durée de temps bien déterminée ;
- Reprendre la conférence (GCCF_Resume) : permet de reprendre une conférence arrêtée
à l’aide de la primitive GCCF_Pause ;
- Exclure un participant (GCCF_Remove) : permet, dans le cas d’une conférence présidée,
au modérateur d’éliminer un participant de la conférence ;
- Demander le contexte de conférence (GCCF_Request_Conference_Context) : cette
primitive permet à un participant d’émettre une requête de demande de contexte de
conférence ;
- Répondre à une demande de contexte de conférence (GCCF_Give_Confernce_Context) :
permet de retourner le contexte de conférence ;
- Terminer une conférence (GCCF_Terminate) : permet de terminer une conférence.
- Services de contrôle de floor
L’entité GCCF fournit des facilités de contrôle en vue de supporter la synchronisation des
interactions des participants. Elle permet aussi de supporter la conduite de conférence en
utilisant les fonctionnalités de contrôle de floor en vue de "mapper" les "protocoles sociaux"
(i.e. les règles pour accéder aux objets application tels que les streams audiovisuel). Les
services de contrôle de floor sont :
- Créer un floor (GCCF_Create_Floor) : cette primitive de service permet de créer un
nouveau floor dans la conférence. Elle est utilisée par le modérateur ou l’initiateur de la
conférence ;
- Attribuer un floor (GCCF_Give_Floor) : cette primitive permet d’accorder le floor à un
participant ;
82
- Retirer un floor : GCCF_Grab_Floor: cette primitive permet au modérateur ou au
système de retirer le floor à un participant ;
- Libérer un floor (GCCF_Release_Floor) : cette primitive permet à un participant de
rendre le floor au modérateur et de le donner au prochain utilisateur ;
- Demander le floor (GCCF_Ask_Floor) : cette primitive permet de demander le floor au
détenteur de floor ou au modérateur ;
- Notifier la réception d’une demande de floor (GCCF_Ask_Floor_Pending) : cette
primitive permet de notifier un participant que sa demande a bien été reçue ;
- demander le contexte de floor (GCCF_Request_Floor_Context) : cette primitive permet
à un participant de demander des informations concernant les floors de la conférence ;
- Retourner le contexte de floor (GCCF_Give_Floor_Context) : cette primitive permet de
répondre à une demande de contexte de floor.
Le tableau II.1.2 montre les champs du PDU GCCF qui peuvent être utilisés par chaque
primitive GCCF.
83
c. Comportement
Les actions peuvent correspondre à des émissions ou des réceptions de messages. Dans ce
cas l’automate est représenté par un sextuplent : (E, e0, I, O, A, t) où I représente l’ensemble
fini d’évènements en entrée, O l’ensemble fini d’évènements en sortie, A la fonction de
génération de l’événement en sortie et t la fonction de transition de E*I dans E. Pour
modéliser un système distribué à l’aide de ce concept, il suffit de modéliser chacun de ses
processus à l’aide d’automates et d’identifier leurs points d’interactions. Ces interactions
peuvent être effectuées à travers des canaux de communication utilisant les files d’attentes.
On parle dans ce cas d’automates d’états finis communiquant.
Rappelons que l’entité GCCF de la pile de protocoles que nous avons élaborée pour un
MMTS comporte quatre processus. Nous donnons pour chacun de ces processus, la
description de son comportement sous forme d’un automate d’états finis et nous décrivons les
interactions possibles au sein de l’entité GCCF.
84
Initial_Coordination
? GCCF_Join
/ ? GCCF_Create_Conf / - ? GCCF_ Create_Floor
! Join to P2 ! Create_Conf to P2 ! Create_Floor to P3
- ? GCCF_Ask_Floor ! Join to P3 ! Create_Conf to P3 - ?Ask_Floor from P3
! Ask_Floor to P3 ! GCCF_Ask_Floor
- ? Ask_Floor_Pending from P3 / - ? GCCF_Ask_Floor_Context
! GCCF_Ask_Floor_Pending ! Ask_Floor_Context to P3
- ? Invite From P2 / - ? Give_Floor_Context from P3
! GCCF_Invite GCCF_Give_Floor_Context
- ? GCCF_Accept / - ? GCCF_Invite /
! Accept to P3 ! Invite to P2
- ? GCCF_Not_Accept / - ? Accept from P3 /
Participant_Coordination Moderateur_Coordination
! Not_Accept to P2 ! GCCF_Accept
- ? Give_Floor from P3 / - ? Not_Accept from P3 /
! GCCF_Give_Floor ! GCCF_Not_Accept
? GCCF_Leave
- ? GCCF_Release_Floor / - ? GCCF_Give_Floor /
/
! Release_Floor to P3 ! Give_Floor to P3
! Leave to P2
- ? Grab_Floor from P3 / - ? Release_Floor from P3 /
! Leave to P3
! GCCF_Grab_Floor ! GCCF_Release_Floor
? GCCF_Terminate /
! Terminate to P2
! Terminate to P3
Final_Coordination
85
Initial_Conf
? Create_Conf from P1 /
? Join from P1 /
! Update_CC .
! GCCF_Update_CC (join)
to ALL
? GCCF_Invite / ? Invite /
! Invite to P1 ! SIP_Invite
Activate_Timer Activate_Timer
- ? Leave from P1 /
? Terminate from P1 /
! GCCF_Update_CC (Leave)
! GCCF_Terminate to
- ? GCCF_Terminate / !.
ALL
Final_Conf
86
localisation et d’invitation du protocole SIP (?Invite/ !SIP_Invite) et se met en attente. Une
fois le participant localisé (?OK_SIP), le processus "Gestion Conférence" relatif au
modérateur envoie un message GCCF d’invitation (!GCCF_Invite) à celui du participant.
Celui-ci notifie le participant (?GCCF_Invite/!Invite to P1) qui peut accepter ou non
l’invitation (?Accept from P1 ou ?Not_Accept from P1). Selon cette réponse, il envoie un
message GCCF (!GCCF_Accept ou !GCCF_Not_Accept) au processus "Gestion Conférence"
au niveau du modérateur qui met à jour le contexte de conférence. Le processus "Gestion
Conférence" atteint l’état final suite à la terminaison de la conférence par le modérateur ou au
départ d’un participant.
Initial_Floor
? Join from P1/ !. ? Create_Conf from P1 /
! Send_Media to P4
Update_FC
? Terminate /
- ? Leave / !. ! GCCF_Terminate to
- ? GCCF_Terminate / !. ALL
Final_Floor
P1 est le processus Coordination_GCCF
P4 est le processus Gestion_Media
GCCF_Update_FC signifie SCCP_ Update_Floor_Context
Le processus "Contrôle Floor" offre des services de contrôle de floor (figure II.1.7). Il
permet au modérateur de créer des floors et de les associer aux ressources correspondantes. Il
permet aux participants de demander et de libérer un floor. Les requêtes relatives à un floor
sont mises dans une file d’attente du contexte de floor. Le processus "Contrôle Floor" permet
au modérateur de consulter le contexte de floor et de contrôler la détention du floor. Il lui
offre aussi la possibilité de donner le floor aux participants et de les leurs retirer s’ils
dépassent le temps qui leur a été accordé. Nous modélisons le comportement de ce processus
87
en deux états relatifs au participant ("Participant_Floor" et "Attente_Floor"), un état relatif au
modérateur ("Moderateur_Floor") et un état ou le processus est en attente d’une réponse du
processus "Coordination_GCCF" ou d’un processus "Contrôle Floor" homologue distant
("Attente_Floor").
Le processus "Gestion Média" constitue une interface entre le processus "Contrôle Floor"
et le bloc "Agents Média". Son comportement consiste à recevoir des messages du processus
"Contrôle Floor" et d’envoyer des messages au bloc "Agents Média". Chaque fois qu’un
processus "Contrôle Floor" détient le floor, il donne l’ordre au processus "Gestion Média"
d’envoyer les médias. Une fois qu’il perd le floor il donne l’ordre d’arrêter l’envoi des médias
(figure II.1.8).
Initial_Media
? Send_Media /
! Send_Media
to Media Agent
? Send_Media /
! Send_Media to Media Agent
Envoi_Media
? Stop_Send_Media /
! Stop_Send_Media to Media Agent
Arret_Envoi_Media
88
P1 Modérateur P2 Modérateur P3 Modérateur P4 Modérateur SIP P1 Participant P2 Participant P3 Participant P4 Participant SIP
GCCF_Create_Conf
Create_Conf
Create_Conf
Send_Media
GCCF_Join
GCCF_Create_FLoor Join
Create_Floor GCCF_Update_FC Join
GCCF_Update_CC
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
Ask_Floor_Pending
GCCF_Ask_Floor_Context
Ask_Floor_Context
Give_Floor_Context
GCCF_Give_Floor_Context
GCCF_Invite
Invite
SIP_Invite
SIP_Invite
SIP_OK
SIP_OK
Accept
GCCF_Accept
GCCF_Give_Floor
Give_Floor
Stop_Send_Media
GCCF_Give_Floor
Send_Media
GCCF_Update_FC
Give_Floor
GCCF_Give_Floor
GCCF_Reject_Floor
SCCP_Release_Floor
Release_Floor
Stop_Send_Media
GCCF_Release_Floor
Release_Floor
GCCF_Update_FC
GCCF_Release_Floor
Send_Media
GCCF_Leave
Leave
Leave
GCCF_Terminate GCCF_Update_CC
Terminate
Terminate
GCCF_Terminate
La figure II.1.9 présente un scénario sous forme de MSC (Message Sequence Chart) d’une
conférence régie par la politique présidée. Ce scénario comporte deux acteurs : le modérateur
et un participant. Chacun de ces acteurs est représenté par les processus de son entité GCCF
(P1 pour "Coordination_GCCF", P2 pour "Gestion Conférence", P3 pour "Contrôle Floor" et
P4 pour "Gestion Média").
89
contexte de floor à tous les participants (l’envoi multicast, matérialisé par la flèche en
double).
Dans cette section, nous décrivons un MMTS régi par une politique explicite. Nous
commençons par décrire le protocole sous-jacent à cette politique de manière informelle puis,
nous présentons ensuite la description formelle de l’entité GCCF correspondante.
La politique explicite part du principe qu’il n' y a pas de membre de la conférence chargé
de la gestion et du contrôle de la conférence. Tous les participants sont sur le même pied
d’égalité. Le floor est donné ou libéré sur la demande d’un membre de la conférence. Tant
que le floor est pris, les requêtes de demande de floor sont mises dans une file d’attente.
Généralement, ces requêtes sont traitées selon le principe du "premier arrivé - premier servi".
Une conférence d’un MMTS régi par une politique explicite peut être initiée par le
premier participant qui prend l’initiative de la créer. Celui ci devient immédiatement détenteur
du floor. Lorsqu’un nouveau participant joint la conférence, il diffuse un message de jointure
à tous les membres de la conférence. Seul le détenteur de floor lui envoie les contextes de
floor et de conférence. Ces contextes vont être mis à jour à chaque fois qu’il y a modification
au niveau de la conférence ou des floors. Ces mises à jour se font de manière distribuée grâce
à l’envoi de messages en mode multicast.
90
Le floor est demandé explicitement par un participant qui désire intervenir dans une
session de la conférence. Le floor est immédiatement accordée à ce participant si la file est
vide et si le détenteur du floor le libère. Si ce n’est pas le cas, la demande du participant est
mise dans la file d’attente. Cette file n’est pas centralisée au niveau d’un seul site. Elle est
construite dynamiquement et est organisée de manière distribuée. Elle est basée sur
l’information "suivant" de façon à ce que chaque participant ayant effectué une demande est
pointé par celui qui l’a immédiatement devancé.
Initial_Coordination
- ? GCCF_Join /
! Join to P2
! Join to P3
- ? GCCF_Create_Conf /
- ? GCCF_ Create_Floor
! Create_Conf to P2
! Create_Floor to P3
! Create_Conf to P3
- ? GCCF_Release_Floor /
! Release_Floor to P3
- ? GCCF_Ask_Floor /
! Ask_Floor
- ? Give_Floor /
! GCCF_Give_Floor Participant_Cordination Final_Coordination
- ? Grab_Floor from P3 / - ? GCCF_Leave /
! GCCF_Grab_Floor ! Leave to P2
! Leave to P3
- ? GCCF_Terminate /
! Terminate to P2
! Terminate to P3
91
"GCCF_Ask_Floor" que le processus "Coordination_GCCF" transmet au processus "Contrôle
Floor" à l’aide du message interne "Ask_Floor". A ce même état, le processus
"Coordination_GCCF" peut recevoir des messages internes des autres processus de l’entité
GCCF et les notifient à "l’Interface Conférence" sous forme de messages GCCF
(?Give_Floor/!GCCF_Give_Floor). Le processus "Coordination_GCCF" peut atteindre l’état
final s’il reçoit des demandes de départ ou de terminaison de la part de "l’Interface
Conférence" (?GCCF_Leave ou ?GCCF_Terminate").
Initial_Conf
- ? Create_Conf /
Update_CC
- ? Join /
! GCCF_Update_CC(join)
to ALL
- ? GCCF_Update_CC (join) /
! GCCF_Give_CC
Update_CC
- ? GCCF_Update_CC (leave) / Participant_Conf Final_Conf
Update_CC - ? Leave /
!.
- ? Terminate /
!.
92
l’état "Detenteur_Floor" s’il reçoit un message lui accordant le floor de la part de l’entité
GCCF du dernier participant ayant eu le floor ( ?GCCF_Give_Floor).
Lorsque le détenteur du floor le libère, son processus "Contrôle Floor" retourne à l’état
"Participant_Floor" ( ? Release_Floor). Cette même transition peut être dûe à la réception
d’un message de retrait de floor (GCCF_Grab_Floor). La demande de retrait de floor est
effectuée par l’entité GCCF relative au dernier participant ayant libéré le floor suite à
l’expiration du temporisateur. Le processus "Contrôle Floor" atteint l’état final suite au
départ d’un participant ou suite à la terminaison de la conférence.
Initial_Floor
? Join /
? Create_Conf from P1 /
! .
! Send_Media
- ? GCCF_Grab_Floor /
! Grab_Floor
- ? GCCF_Ask_Floor /
! GCCF_Give_Floor to suivant - ? Timeout /
! Ask_Floor Detenteur_Floor Participant_Floor
! Stop_Send_Media ! GCCF_Grab_Floor
- ? Release_Floor /
! GCCF_Give_Floor
! Stop_Send_Media
Activate_Timer
? Ask_Floor /
? GCCF_Give_Floor ! GCCF_Ask_Floor to ALL - ? Leave /
! Give_Floor ! .
Attente_Floor
! Send_Media
Final_Floor
La figure II.1.13 présente un scénario d’une conférence régie par la politique explicite que
nous avons spécifiée. Ce scénario comporte trois participants représentés chacun par les
processus de l’entité GCCF correspondante. Le premier participant crée la conférence et
obtient le floor. Le deuxième et le troisième participant joignent ensuite cette conférence. Le
deuxième participant demande le floor en diffusant une requête de demande de floor à tout le
groupe. Cette demande est traité par le détenteur du moment qu’il n y a pas de participants en
file d’attente. Celui ci libère le floor et l’accorde au deuxième participant.
93
P1 P2 P3 P4 P1 P2 P3 P4 Participant P1 P2 P3 P4 Participant
Participant 1 Participant 1 Participant 1 Participant1 Participant 2 Participant 2 Participant 2 2 Participant 3 Participant 3 Participant 3 3
GCCF_Create_Conf
GCCF_Join
Create_Conf
GCCF_Join
Create_Conf Join GCCF_Update_CC (join)
Send_Media
Join Join GCCF_Update_CC (join)
Give_Floor
GCCF_Give_Floor Join
GCCF_Update_FC (join)
GCCF_Update_FC (join) GCCF_Update_FC (join)
GCCF_Give_Floor_Context
GCCF_Update_CC(join)
GCCF_Give_Conference_Context
GCCF_Update_FC (join)
GCCF_Give_Floor_Context
GCCF_Update_CC (join)
GCCF_Give_Conference_Contexte
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
GCCF_Release_Floor
Release_Floor
Stop_Send_Media
Stop_Send_Media
GCCF_Give_Floor GCCF_Ask_Floor
GCCF_Update_FC
Send_Medi Ask_Floor
Give_Floo a GCCF_Ask_Floor
r
GCCF_Give_Floor
GCCF_Ask_Floor
Ask_Floo
r
GCCF_Ask_Floor
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
GCCF_Release_Floor
Release_Floo
r
Activate_Timer
GCCF_Give_Floor
Give_Floor
GCCF_Give_Floor
Timeout
GCCF_Grab_Floor
Grab_Floor
GCCF_Grab_Floor
GCCF_Give_Floor
Give_Floor
GCCF_Give_Floor
GCCF_Leave
Leave
Leave
GCCF_Update_CC
GCCF_Terminate
Terminate
GCCF_Terminate
Terminate
94
Le troisième participant quitte ensuite la conférence et le premier participant lui met fin.
Notons que toutes ces interactions se passent entre les entités GCCF et que les participants
n’interagissent avec le système que pour demander ou libérer le floor.
1.4 Conclusion
95
Chapitre 2
Vérification de propriétés de la
gestion et du contrôle au sein d’une
conférence multimédia
Le travail de ce chapitre a été réalisé au LIFC de Besançon au cours d’un stage de recherche
dans le cadre du projet STIC. Ce travail a fait l’objet de la publication suivante :
2.1 Introduction
Dans ce chapitre, nous commençons par identifier les règles que doit respecter un système
de téléconférence (présidée et explicite). Nous présentons ensuite la description LTL de ces
règles que nous vérifions à l’aide de l’outil Promela/SPIN.
96
2.2 Description des propriétés
Les propriétés identifiées sont décrites de manière informelle dans un premier temps, puis
formellement en utilisant la LTL.
Les propriétés que nous avons identifiées sont décrites ci-dessous [Ouzz 02a] :
- Propriété 2 : "Lorsqu’un participant dispose du floor, le modérateur ainsi que les autres
participants ne doivent pas l’avoir".
- Propriété 4 : "Si un participant ne reçoit pas le floor, il doit être notifié que sa demande a
été rejetée".
- Propriété 6 : "Un participant doit être informé que le floor lui a été accordé".
- Propriété 7 : "Un modérateur doit être capable de retirer le floor à son détenteur".
- Propriété 8 : "Un participant doit être informé que le floor lui a été retiré".
- Propriété 9 : "Lorsqu’un participant dispose du floor, c’est lui qui doit envoyer ses
médias".
- Propriété 10 : "Lorsqu’un participant envoie ses médias, les autres participants doivent
être en réception".
Les propriétés décrites ci-dessus concernent la politique présidée. Toutefois les propriétés
2, 3, 5, 6, 8, 9 et 10 doivent être aussi vérifiées par un MMTS régi par la politique explicite.
Nous utilisons la LTL pour la description formelle des propriétés décrites ci-dessus. Ce
formalisme est une extension de la logique classique. Il permet de valider des protocoles de
communication en se basant sur des techniques d’expression des relations entre des
97
évènements. La syntaxe de la logique temporelle est la même que celle des prédicats, excepté
qu’elle utilise des opérateurs supplémentaires [Pnue 77]. Ces opérateurs sont décrits comme
suit :
- p : qui signifie que la propriété p est vraie à un moment donné dans le futur.
Pour pouvoir décrire les propriétés identifiées en LTL dans un MMTS régi par la politique
présidée, nous considérons une conférence constituée d’un modérateur et de trois participants.
Chaque membre (participant ou modérateur) est représenté par son entité GCCF constituée de
quatre processus. Les propriétés sont décrites en fonction des états des automates relatifs aux
processus de l’entité GCCF de chaque membre. Nous utilisons pour cela quatre tableaux de
quatre cases chacun :
Nous maintenons le même scénario pour le cas d’un MMTS régi par la politique explicite
en considérant le modérateur comme un simple participant.
98
Moderateur_Detenteur qui exprime que le modérateur est à l’état "Detenteur_Floor"
(Etat_Floor[0]= "Detenteur_Floor").
- Propriété 2 : "Lorsqu’un participant dispose du floor, le modérateur ainsi que les autres
participants ne doivent pas l’avoir".
Dans un MMTS régi par la politique présidée, la propriété 2 s’écrit comme suit :
Dans un MMTS régi par la politique explicite, la propriété 2 s’écrit comme suit :
Dans un MMTS régi par la politique présidée, la propriété 3 s’écrit comme suit :
(Moderateur_Detenteur (! Moderateur_Detenteur))
(Detenteur_i (! Detenteur_i)) pour 1<=i<=3
Dans un MMTS régit par la politique explicite, la propriété 3 s’écrit comme suit :
- Propriété 4 : "Si un participant ne reçoit pas le floor, il doit être notifié que sa demande a
été rejetée".
99
Attente_Floor_i qui exprime le processus "Contrôle Floor" relatif au participant "i" est à
l’état "Attente_Floor" (Etat_Floor[i]= "Attente_Floor" avec 1<=i<=3)
Non_Detenteur_i qui exprime le processus "Contrôle Floor" relatif au participant "i" est à
l’état "Participant_Floor" (Etat_Floor[i]= "Participant_Floor" avec 1<=i<=3)
Dans un MMTS régi par la politique présidée, la propriété 5 s’écrit comme suit :
Dans un MMTS régi par la politique explicite, la propriété 5 s’écrit comme suit :
- Propriété 6 : "Un participant doit être informé que le floor lui a été accordé".
Dans un MMTS régi par la politique présidée, la propriété 6 s’écrit comme suit :
(Attente_Floor_i Detenteur_Floor_i)
Dans un MMTS régi par la politique explicite, la propriété 6 s’écrit comme suit :
(Attente_Floor_i Detenteur_Floor_i)
- Propriété 7 : "Un modérateur doit être capable de retirer le floor à son détenteur".
La propriété 7 s’écrit :
- Propriété 8 : "Un participant doit être informé que le floor lui a été retiré".
Dans un MMTS régi par la politique présidée, la propriété 8 s’écrit comme suit :
100
Dans un MMTS régi par la politique explicite, la propriété 8 s’écrit comme suit :
- Propriété 9 : "Lorsqu’un participant dispose du floor, c’est lui qui doit envoyer ses
médias".
Diffusion_i qui exprime que le processus "Gestion Média" relatif au participant "i" est à
l’état "Envoi_Media" (Etat_Media[i]= "Envoi_Media", 1<=i<=3).
Dans un MMTS régi par la politique présidée, la propriété 9 s’écrit comme suit :
(Moderateur_Detenteur (! Moderateur_Diffusion))
Dans un MMTS régi par la politique explicite, la propriété 9 s’écrit comme suit :
- Propriété 10 : "Lorsqu’un participant envoie ses médias, les autres participants doivent
être en réception".
Dans un MMTS régi par la politique présidée, la propriété 10 s’écrit comme suit :
Dans un MMTS régit par la politique explicite, la propriété 10 s’écrit comme suit :
101
2.3 Vérification des propriétés
Promela (Protocols Meta LAnguage) [Holz 91] est un langage de spécification formelle
qui permet la description des protocoles et des systèmes distribués. Une spécification Promela
consiste en un ensemble d’objets qui peuvent être de deux types : les processus et les canaux
de messages. Les processus Promela permettent de décrire le comportement du système
spécifié.
Un processus se déclare en Promela à l’aide du mot clé "Proctype". Une fois déclaré, il
peut être instancié au sein du processus principal "Init" une ou plusieurs fois. L’instanciation
se fait à l’aide du constructeur "Run (processus)". Les processus d’une spécification Promela
peuvent ainsi s’exécuter en parallèle une fois le processus "Init" est lancé. La communication
entre processus se fait via des canaux qui se présentent sous forme de file d’attente. Promela
permet deux types de communication : asynchrone si la taille du canal est supérieure à 1 et
synchrone si la taille est 0.
La représentation des données dans une spécification Promela se fait par des variables
(globales ou locales). Une variable peut être de type prédéfini (bit, byte, int ou short) ou de
type tableau. Le langage Promela permet de définir d’autres types grâce au constructeur
"mtype". Ce constructeur permet de définir de nouvelles structures de données désignant des
états ou des messages.
102
Pour décrire notre système, nous avons considéré une conférence constituée d’un
modérateur et de trois participants. Pour représenter les états des processus des entités GCCF,
nous avons considéré quatre tableaux : "Etat_Coordination", "Etat_Conf", "Etat_Floor" et
"Etat_Media". Les états des processus du modérateur sont représentés par la case 0 des quatre
tableaux et ceux des processus des participants, par les cases 1,2 et 3 de ces même tableaux.
Dans le cas d’une politique explicite, le modérateur est considéré comme un simple
participant.
La communication entre les processus se fait via plusieurs types de canaux. Nous citons à
titre d’exemple les canaux suivants :
Nous présentons dans ce qui suit des exemples de description Promela concernant les
processus "Contrôle Floor" dans le cas d’un MMTS présidé et d’un MMTS explicite. La
figure II.2.1 présente la description Promela du comportement du processus "Contrôle Floor"
relatif à un simple participant dans un MMTS régi par la politique présidée. Elle consiste en
un ensemble d’alternatives (if .. fi) relatives aux états de ce processus. Chaque alternative
correspond à un état et un canal bien précis. En étant à cet état et en recevant un message à
travers ce canal, le processus change éventuellement d’état, effectue un traitement et envoie
un ou plusieurs messages. Ainsi, le premier choix concerne l’état initial (Etat_Floor[i] ==
Init). Si le processus reçoit le message "Join" à travers le canal
"Channel_Coordination_Floor", il passe à l’état "Participant_Floor".
103
/** Processus "Contrôle Floor" – Comportement d’un simple participant **/
do : :
if
:: (Etat_Floor[i] == INIT ) ->
CHANNEL_COORDINATION_FLOOR ? message ;
:: (message == JOIN) -> Etat_Floor[i] = PARTICIPANT_FLOOR ;
fi
fi
…………..
……….
….
104
A l’état "Participant_Floor", le processus peut demander le floor ("Ask_Floor") ou quitter
la conférence ("Leave"). Ces deux messages sont reçus à travers le
"Channel_Coordination_Floor". Dans le premier cas, il transite à l’état "Attente_Floor". Dans
le deuxième cas, il passe à l’état final. Il peut aussi recevoir (tout en étant à l’état
"Participant_Floor") les messages de terminaison ("GCCF_Terminate") ou de mise à jour de
contexte de floor ("GCCP_Update_FC") à travers le canal
"Channel_Moderateur_Participant_Floor".
105
/** Suite du processus "Contrôle Floor" realtif à une poltique présidé – Comportement du modérateur **/
od
106
proctype CONTROLE_FLOOR (I)
do : :
if
: : (Etat_Floor[i] == INIT -> CHANNEL_CORDINATION_FLOOR ? message ;
if : : (message == CREATE_CONF) ->
atomic {Etat_Floor[i] = DETENTEUR_FLOOR ; Detenteur =i ;
CHANNEL_FLOOR_MEDIA ! SEND_MEDIA ; }
: : (message == JOIN) ->
atomic {Etat_Floor[i] = PARTICIPANT_FLOOR ;
j=3
do :: (j>0) -> CHANNEL_FLOOR_ [j]! GCCF_UPDATE_FC(JOIN) ; j=j-1 ; od }
fi
fi
………
fi
od
}
Figure II.2.3. Comportement du processus "Contrôle Floor" dans une politique explicite.
107
La figure II.2.3 présente la description Promela du processus "Contrôle Floor" d’un
MMTS régi par la politique explicite. Ce processus peut prendre trois principaux états : l’état
"Participant_Floor", l’état "Détenteur_Floor" et l’état "Attente_Floor". Il échange des
messages avec le processus "Coordination_GCCF" pour exprimer les demandes d’un
participant et avec les processus "Contrôle Floor" homologues pour contrôler la détention du
floor entre les participants. Par exemple, étant à l’état "Participant_Floor" et recevant le
message de demande de floor du processus "Coordination_GCCF" ("Ask_Floor"), le
processus "Contrôle Floor" diffuse le message GCCF de demande de floor à tous les
participants et passe à l’état "Attente_Floor".
- La "supertrace" ou Bit State Space, qui s’applique sur des systèmes de grande taille.
Elle consiste à réduire l’encombrement mémoire en codant la présence d’un état sur un
bit.
Cet outil permet de vérifier des propriétés exprimées en logique temporelle avec un
processus " never" qui permet de spécifier, sur l’ensemble des exécutions, des contraintes
telles que : "toujours", "fatalement", etc.
Nous présentons dans cette section des exemples de déroulement de vérification à l’aide
de l’outil SPIN. Les figures II.2.3 présente la propriété 2 pour la politique présidée. Dans
chaque exécution de vérification, nous commençons par écrire les propositions utilisées par la
108
propriété à l’aide de la macro instruction "#define" dans la partie réservée à la définition des
symboles (Symbol Definition). Nous écrivons ensuite la propriété en question dans la partie
Formula et nous générons l’automate de la propriété (Partie Never Claim) puis nous lançons
le processus de vérification. Le résultat apparaît en bas de la fenêtre.
/*
* Formula As Typed:
[] (([] Detenteur_1->!Moderateur_Detenteur && !Detenteur_2 && !Detenteur_3) )
* To The Negated Formula []
!(([] Detenteur_1->!Moderateur_Detenteur && !Detenteur_2 && !Detenteur_3) )
* (Formalizing violations of the original)
*/
never { /* !(([] Detenteur_1->!Moderateur_Detenteur && !Detenteur_2 && !Detenteur_3) )*/
Figure II.2.4. Vérification de la propriété d’exclusion mutuelle du floor dans un MMTS présidé.
109
([] Detenteur_0->!Detenteur_1 && !Detenteur_2 && !Detenteur_3)
/*
* Formula As Typed:
[] (([] Detenteur_1->!Detenteur_0 && !Detenteur_2 && !Detenteur_3) )
* To The Negated Formula []
!(([] Detenteur_1->!Detenteur_0 && !Detenteur_2 && !Detenteur_3) )
* (Formalizing violations of the original)
*/
never { /* !(([] Detenteur_1->!Detenteur_0 && !Detenteur_2 && !Detenteur_3) )*/
Figure II.2.5. Vérification de la propriété d’exclusion mutuelle du floor dans un MMTS explicite.
2.4 Conclusion
Dans ce chapitre, nous avons identifié les propriétés que doit respecter un système de
téléconférence (présidé ou explicite). Nous avons ensuite décrit ces propriétés en logique
temporelle linéaire que nous avons vérifiées à l’aide de l’outil Promela/SPIN. Ceci nous a
permis d’obtenir des spécifications cohérentes et vérifiées et qui répondent aux besoins requis.
Ces spécifications vont servir de base pour l’implémentation. Celle-ci passe par
l’identification du mécanisme approprié à la politique utilisée.
110
Chapitre 3
Mécanismes de réalisation
Le travail de ce chapitre a été réalisé au LIFC de Besançon au cours d’un stage de recherche
dans le cadre du projet STIC. Ce travail a fait l’objet de la publication suivante :
3.1 Introduction
Nous commençons par présenter les versions initiales de chaque algorithme (Le Lann et
Naimi-Tréhel) avec les modifications apportées pour le support de l’insertion dynamique
comme première étape. Nous donnons ensuite les modifications concernant le support de la
suppression dynamique.
111
3.2 Algorithmes d’exclusion mutuelle
Les algorithmes d’exclusion mutuelle permettent de gérer l’accès à une section critique
partagée entre plusieurs processus. Dans les systèmes monoprocesseur, l’exclusion mutuelle
est gérée par les sémaphores, les moniteurs ou autres constructeurs de ce type. Dans les
systèmes distribués, l’exclusion mutuelle doit être mise en œuvre à l’aide d’algorithmes
distribués. Ces algorithmes peuvent être classifiés en deux catégories : les algorithmes
d’exclusion mutuelle basés sur la permission et les algorithmes basés sur le jeton.
Dans la famille des algorithmes basés sur la permission [Lamp78, Rica 81, Maek 85], le
droit d’entrer en section critique pour un site donné est assuré par le concept de permission.
Ce droit est représenté par un nombre de permissions devant être accordées par les autres
sites. Une permission est un message échangé entre un site émetteur d’une requête et un site
accordant sa permission à cette requête. Les algorithmes basés sur la permission emploient le
protocole suivant : Pour qu’un site i puisse exécuter sa section critique, il doit d’abord
demander la permission à un ensemble Ei de sites et ne peut exécuter sa permission que s’il a
reçu toutes les permissions attendues. Dans ces d’algorithmes, à tout instant, un seul site peut
exécuter sa section critique et ce, lorsqu’il reçoit un nombre suffisant de permissions des
autres sites. Cette classe d’algorithmes regroupe deux catégories : les algorithmes broadcast,
les algorithmes de type multicast. Les algorithmes de type broadcast se basent sur le fait
qu’un site envoie sa demande de permission à tous les sites impliqués dans l’exclusion
mutuelle. Les algorithmes multicast se basent sur la demande restreinte de la permission.
Les algorithmes basés sur le jeton reposent sur l’unicité de ce jeton. Le site qui détient le
jeton exécute sa section critique. Dans cette catégorie, les différents algorithmes se
distinguent par la manière dont le jeton circule entre les demandeurs. Le premier algorithme
basé sur le jeton a été élaboré par Le Lann [Lann 77]. Dans cet algorithme un jeton unique
circule d'un site à l’autre. L’ensemble des sites forme un anneau logique. Suziki et Kasami
[Suzu 85] transforment l’algorithme de Ricart et Agrawela basé sur la permission en un
algorithme basé sur le jeton. Dans l’algorithme Ricart et Agrawela, la permission est
confirmée par le message reply. Ce message joue le rôle de jeton dans l’algorithme de Suziki
et Kasami et est doté d’une file d’attente composée des sites demandeurs du jeton. Makki
[Makk 94] propose une approche similaire à celle d’une file d’attente du jeton, dans laquelle
chaque site envoie sa requête au possesseur du jeton au lieu de l’envoyer à tous les sites du
système. Ceci permet de réduire le coût de communication. L’algorithme de Singhal [Sing 89]
112
emploie une heuristique afin de deviner quel est le site du système qui possède le jeton ou les
sites qui sont susceptibles de l’avoir. Ceci permet de réduire le coût de communication.
L’algorithme Naimi et Tréhel [Naim 87] organise les sites du système en une structure
arborescente (logique) et dynamique et permet une meilleure performance de l’ordre de O(log
(N)) messages par exécution de section critique.
Les algorithmes d’exclusion mutuelle distribués supposent que le groupe de sites ne peut
pas évoluer dans le temps. Or, pour pouvoir adopter de tels algorithmes comme mécanismes
de contrôle de floor, il faut pouvoir insérer et retirer dynamiquement des sites relatifs à des
participants. Cette section décrit l’insertion de nouveaux participants dans deux algorithmes
d’exclusion mutuelle distribués fondés sur le concept du jeton. Ces algorithmes nous ont
parus plus pratiques à adapter aux modifications de la liste des participants [Ouzz 00b]. Une
solution simple consiste à arrêter l’activité du groupe et de modifier statiquement la liste des
sites. Nous avons rejeté cette idée et nous avons opté pour une insertion dynamique des sites.
Pour chaque algorithme, nous décrivons dans un premier temps la stratégie d’insertion de
manière informelle puis nous donnons l’algorithme correspondant à cette stratégie.
Nous adoptons deux hypothèses principales pour les algorithmes d’exclusion mutuelle
distribués basés sur le jeton (en particulier Le Lann). Ces hypothèses concernent la
communication et la section critique. Pour la communication entre les sites, nous supposons
qu’il n y a ni duplication, ni modification, ni perte de messages. En ce qui concerne la section
critique, nous supposons qu’un site qui entre en section critique en sort au bout d’un temps
fini.
L’algorithme Le Lann est le premier algorithme basé sur le jeton [Lann 77]. Dans cet
algorithme, les sites d’un système sont organisés sous forme d’un anneau logique dans lequel
un jeton unique circule séquentiellement d’un site à un autre. Lorsque le jeton visite un site,
deux cas se présentent : soit que le jeton est retenu par ce site pour marquer l’utilisation de la
section critique ; soit que le jeton est renvoyé immédiatement par ce site (qui n’utilise donc
pas la section critique) à son successeur dans l’anneau. Le jeton circule de manière continue
113
entre les sites même s’il n y a aucune demande. La figure II.3.1 décrit l’algorithme tel qu’il
est présenté par Le Lann. Il consiste en trois instructions : l’attente du jeton, l’entrée en
section critique si la variable requête est mise à vrai et l’envoi du jeton au successeur.
Attendre (jeton)
Si requête Alors
<Section Critique>
Fsi
Envoyer (jeton)
Quand un site veut entrer en section critique, il met une variable requête à vrai. Quand il
obtient le jeton, il entre en section critique si requête est vrai. Sinon, il passe le jeton au
suivant.
a. Présentation informelle
Nous supposons que lorsqu’un processus Pi veut joindre l’anneau, il choisit un processus
Pj déjà existant et émet la demande d’entrée vers Pj. A la réception de cette demande, Pj ajoute
le processus à sa file de demandeurs. L’idée de l’algorithme est qu’un processus ne peut
insérer les nouveaux arrivés que lorsqu’il détient le jeton. Ceci permet de ne pas insérer un
nouveau site plusieurs fois. Après avoir réalisé cette opération, il peut entrer ou non en section
critique et remet par la suite le jeton à son successeur. Supposons que l’anneau soit formé des
processus P1, P2, …, Pi-1, Pi , Pi +1, …, Pn : Pi-1 est le prédécesseur de Pi, Pi+1 est le successeur
de Pi. Nous supposons aussi que, avant la réception du jeton, Pi peut recevoir un certain
nombre de demandes d’entrées de la part de Pe1, Pe2 , …, Pem (figure II.3.2).
Une fois que Pi reçoit le jeton de la part de Pi-1, il insère les nouveaux arrivés un par un. Il
retire ainsi Pe1 de la file, envoie le message (Change_Successeur, Pe1), à Pi-1 et attend
l’acquittement (Ack). En recevant le message (Change_Successeur, Pe1), Pi-1 modifie son
successeur qui devient Pe1 et envoie l’acquittement (Ack) à Pi. Ce dernier envoie par la suite
le message (Init_Pred-Succ, Pi-1, self) à Pe1, lui indiquant d’initialiser son prédécesseur à Pi-1
et son successeur à Pi (self), puis attend l’acquittement. Lorsque Pi reçoit l’acquittement, il
modifie son prédécesseur par Pe1. Cette opération va être réitérée jusqu’à ce que la file soit
vide. Après avoir fini l’opération d’insertion, le processus détenteur du jeton entre en section
critique s’il le désire, puis envoie le jeton à son successeur.
114
P3
.........
Pi-1
(1)
P2 (2)
Pi .........
P1 Pe1 Pe2 Pm
(3)
Pn Pi+1
.........
115
mettre à jour le successeur du processus ayant reçu ce message au paramètre "succ". Le
message d’acquittement "Ack" qui dénote un acquittement attendu, permet de continuer
l’exécution du processus en attente de cet acquittement. Le message "Init_Pred_Succ" qui
permet d’initialiser les variables prédécesseur et successeur d’un nouveau élément inséré au
paramètre "pred" et "succ". Le message de jointure "joindre" permet à un processus de joindre
le groupe des processus de l’algorithme. Le processus ayant reçu ce message ajoute
l’identificateur du processus voulant joindre le groupe à sa file.
Figure II.3.4. Traitement des messages relatifs à l’insertion de nouveaux participants dans l’algorithme Le Lann.
Bien qu’il s’agisse encore d’un algorithme à jeton, la structure de données utilisée est
totalement différente de celle de l’algorithme de Le Lann qui fonctionne sur un anneau.
L’algorithme de Naimi-Tréhel structure l’ensemble des sites en une arborescence dynamique.
Une requête est acheminée le long des arcs, du demandeur de la section critique vers la racine.
Le site qui est à la racine accepte la requête s’il n’y a personne en attente ou la met en attente.
Le nombre moyen de messages est considérablement réduit et est de l’ordre Log(n) [Naim
96].
a. Principe
Comme pour les autres algorithmes, on suppose que le réseau est complet et qu’il n’y a
pas d’erreurs sur les messages. Les sites sont structurés en arborescence virtuelle. Chaque site
116
connaît son père dans l’arborescence. Une demande d’entrée en section critique de la part
d’un site non racine, est transmise de père en père, et arrive finalement à la racine. Ce site
racine peut être dans une des 3 situations :
- Il possède le jeton mais ne l’utilise pas. Dans ce cas, il envoie son "OK" au demandeur
qui pourra entrer en section critique.
- Il est en attente du jeton, propriété d’un autre site. Le site demandeur est aussi mis en
attente.
Les sites qui font une demande d’entrée en section critique sont structurés en une file
d’attente virtuelle distribuée. Chaque site connaît son suivant dans cette file. Le premier
élément de la file possède le jeton. Quand un site sort de la section critique, il transmet le
jeton à son suivant dans la file (s’il y en a un).
b. Exemple
Le site 1 dispose du jeton. Le père de chaque site est le site 1. Personne n’a encore
demandé le jeton (figure II.3.5).
117
1 1 2 3 4 5
pere nil 1 1 1 1
2 3 4 5 jeton V F F F F
demande F F F F F
Le site 2 met sa variable "demande" à vrai. Il n’est pas racine et transmet alors sa
demande à son père. Il devient ainsi racine et attend le jeton avant d’entrer en section critique.
Quand le site 1 reçoit la requête émise par le site 2, il met la variable "jeton" à faux, répond
"OK" au site 2 et modifie la variable "père" qu’il met à la valeur 2. Ceci est dû au fait qu’il
possède le jeton et qu’il n’a pas fait de demande pour entrer en section critique. Quand le site
2 reçoit le message "OK", il met sa variable "jeton" à vrai. Il peut alors entrer en section
critique (figure II.3.6).
2 1 2 3 4 5
pere 2 nil 1 1 1
1 jeton F V F F F
demande F V F F F
3 4 5
Le site 3 met sa variable "demande" à vrai. Il n’est pas racine et transmet alors sa
demande à son père, qui est le site 1. Il devient ainsi racine et attend le jeton avant d’entrer en
section critique. A ce stade, l’arborescence est détruite puisque les sites 2 et 3 sont tous deux
racines. Elle va se reconstruire à l’arrivée des messages en transit. Quand le site 1 reçoit la
requête du site 3, il envoie la requête à son père qui est le site 2, puis modifie sa variable
"père" qui prend comme valeur l’identificateur du demandeur.
Quand le site 2 reçoit la requête du site 3, il ne lui cède pas le jeton puisqu’il a une
demande en cours (il est en section critique). Il met alors le site 3 comme son suivant dans la
file. Ce qui signifie qu’il devra donner le jeton au site 3 quand il quittera la section critique.
Sa variable "père" prend comme valeur l’identificateur demandeur (figure II.3.7).
118
3 1 2 3 4 5
pere 3 3 nil 1 1
2 1 jeton F V F F F
demande F V V F F
4 5
Le site 4 met sa variable "demande" à vrai. Il n’est pas racine et transmet alors sa
demande à son père, qui est le site 1. Il devient racine et attend le jeton avant d’entrer en
section critique. A ce stade, l’arborescence est détruite puisque les sites 4 et 3 sont tous deux
racines. Elle va se reconstruire à l’arrivée des messages en transit. Quand le site 1 reçoit la
requête émise par le site 4, il envoie la requête à son père qui est le site 3, puis modifie sa
variable "père" qui prend comme valeur l’identificateur du demandeur.
Quand le site 3 reçoit la requête du site 4, il met le site 4 comme son suivant dans la file
(puisqu’il n’a pas le jeton). Ceci signifie qu’il devra donner le privilège au site 4 quand il
quittera la section critique (qu’il n’a pas encore). Sa variable "père" prend comme valeur
l’identificateur du demandeur.
4 1 2 3 4 5
pere 4 3 4 nil 1
3 1 jeton F V F F F
demande F V V V F
2 5
Le site 2 met sa variable "demande" à faux. Il perd le jeton, envoie le message "OK" à son
suivant (site 3) dans la file. Quand le site 3 reçoit le message "OK", il met sa variable "jeton"
à vrai, et rentre en section critique (figure II.3.9).
119
4 1 2 3 4 5
pere 4 3 4 nil 1
3 1 jeton F F V F F
demande F F V V F
2 5
c. Algorithme
L’algorithme Naimi-Tréhel (figure II.3.10) consiste en quatre procédures. La première
procédure permet l’initialisation des différentes variables de l’algorithme. La deuxième
procédure concerne la demande de la section critique. Celle ci consiste à mettre la variable
demande à vrai et de retransmettre la demande au père.
Const N = … ; moi= … ;
Type mess = (req, ok) ; site= 1..N {nil} ;
Var pere, suivant : site ; jeton, demande : booléen ;
Procedure Initialisation
Dedut
pere := ; (la valeur est la même pour chaque site autre que la racine et vaut nil à la racine)
suivant :=nil ;
jeton := (pere = nil) (vrai pour la racine, faux sinon)
demande := faux
FIN
Procedure Demander_Section_Critique Procedure Liberer_Section_Critique
Debut Debut
demande :=vrai ; demande :=faux ;
Si (pere <> nil) Alors Si (suivant<>nil) Alors
Envoie (req, moi) à père Envoie (ok, moi) à suivant
pere :=nil suivant :=nil ;
Fsi jeton :=faux
Fin Fsi
Fin
Procedure Traitement_Message(message : mess, demandeur : site)
Debut
Cas message
req :
Si pere = nil Alors
Si demande Alors suivant :=demandeur
Sinon jeton :=faux ;
Envoie (ok, demandeur) à demandeur
Fsi
Sinon Envoie (req, demandeur) à pere
Fsi ;
pere :=demandeur
ok : jeton :=vrai
Fin
120
La troisième procédure permet de libérer la section critique. Elle remet les variables
demande et jeton à faux et envoie le message "OK" au suivant de la liste de sites en attente du
jeton. La quatrième procédure permet de traiter les messages "REQ" et "OK". Le traitement
du message "REQ" par un site racine en section critique consiste à mettre le site émetteur en
file d’attente en le considérant comme son suivant. Un site racine qui n’utilise pas la section
critique passe le jeton au site demandeur (Envoie("OK", demandeur)). Un site non racine se
contente de transférer le message "REQ" à son père dans l’arborescence. Le traitement du
message "OK" représente l’acquisition du jeton (matérialisé par jeton=vrai) par le récepteur
qui entre de ce fait en section critique.
a. présentation informelle
Lorsqu’un nouveau site désire joindre l’ensemble des sites de l’arborescence Naimi-Téhel,
il diffuse un message de jointure à tous les sites. Seul le site Pi qui dispose du jeton le prend
en compte. Tant qu’il dispose de ce jeton, il continue à insérer les nouveaux arrivés en les
prenant comme fils dans l’arborescence. Une fois que Pi sort de la section critique, il envoie le
jeton à un site Pj et met sa variable "jeton" à faux.
Pj
(1) envoi du jeton
(2) Envoi de l'acquittement de
réception du jeton
(3) Envoi de la liste des sites
stockés
(1)
Pi (2)
(3)
Le problème qui se pose est que, entre l’instant où le jeton est envoyé par P i et l’instant où
le jeton est reçu par Pj, aucun site de l’arborescence ne dispose du jeton et les nouveaux
arrivés ne peuvent pas être insérés. Il est alors logique que Pi les stocke provisoirement. Ceci
impose que Pi soit connu. Cela se fait par l’introduction d’une variable "jeton_envoyé" qui
sera vrai entre le moment de l’envoi et le moment de l’acquittement de l’envoi. Une fois qu’il
reçoit l’acquittement, il arrête de stocker les nouveaux arrivés et envoie la liste stockée à P j. Pj
aura sans doute déjà inséré certains éléments de cette liste, il n’insérera donc que ceux qu’il
121
n’as pas encore inséré. La figure II.3.11 donne une idée de ce problème. Le site Pi détient le
jeton et le site Pj attend le jeton.
Dans un premier temps, le processus Pi disposant du jeton, peut recevoir des demandes de
jointure de la part des processus Pe1, …, Pen. Ces derniers seront insérés par Pi dans
l’arborescence, et mémorisés dans une liste "Liste_Sites_Inseres". N’ayant plus le jeton (jeton
envoyé), il mémorise les nouveaux arrivés, Pen+1, …, Pek, …, Pel dans une liste
"Liste_Sites_Stockes". En recevant le jeton, Pj envoie un acquittement à Pi et commence à
insérer les nouveaux arrivés Pek, … , Pel, …, Pem tout en les mémorisant dans sa liste
"Liste_Sites_Inseres". Pi lui envoie sa liste "Liste_Sites_Stockes" après la réception de
l’acquittement envoyé par Pj. En recevant la liste des sites stockés envoyée par Pi, Pj ôte les
sites de cette liste de sa liste des sites insérés et insère le reste des sites dans l’arborescence.
b. Algorithme
En plus des variables utilisées dans l’algorithme Naimi-Tréhel, on fera usage des variables
suivantes :
- "Jeton_Envoye" : variable booléenne mise à vrai après l’envoi du jeton et qui reste à vrai
jusqu’au moment où on va autoriser le destinataire à transmettre à son tour le jeton.
- "Liste_Sites_Stockes" : c’est l’ensemble des nouveaux arrivés qui sont mémorisés par un
site juste après l’envoi du jeton.
- "Listes_Sites_Inseres" : c’est l’ensemble des nouveaux arrivés qui sont insérés par un site
disposant du jeton.
- "Autorisation" : cette variable mise à vrai traduit le fait qu’il ne sert plus à rien de savoir
qui est l’émetteur du jeton à Pj (ce site émetteur a mis "Jeton_Envoye" à faux) et par
conséquent, Pj est autorisé à envoyer le jeton à un autre site.
122
Les figures II.3.12 et II.3.13 décrivent le code de l’algorithme permettant l’insertion
dynamique des sites dans l’arborescence Naimi-Tréhel. La première figure présente la partie
initialisation de l’algorithme et la procédure de libération de la section critique modifiée. Dans
cette procédure, nous ajoutons trois instructions. La première instruction remet la variable
"autorisation" à sa valeur initiale (faux) étant donnée que le site en question était autorisé à
envoyer le jeton et qu’il a consommé cette autorisation. La deuxième instruction remet la liste
"Liste_Sites_Stockes" à vide et la troisième instruction remet la variable "Jeton_Envoye" à
vrai. Ces deux instructions permettent au site de garder les nouveaux arrivés tant que l’accusé
de réception du jeton n’est pas reçu.
Const N = … ; moi= … ;
Type mess = (req, ok, inserer, ack, initialiser_pere, joindre) ;
site= 1..N {nil} ;
liste_sites : liste de sites ;
Var pere, suivant : site ; jeton, demande, jeton_envoye, autorisation : booléen ;
liste_sites_inseres, liste_sites_stockes : liste_sites ;
Procedure Initialisation
Debut
pere := … ; (la valeur de père est la même pour chaque site autre que la racine et vaut nil à la racine)
suivant :=nil ;
Si pere = nil Alors jeton := vrai ; autorisation :=vrai ;
Sinon jeton :=faux ; autorisation :=faux ;
Fsi
jeton_envoye :=faux ;
liste_sites_stockes :=vide ;
liste_sites_inseres :=vide ;
Fin
Procedure Liberer_Section_Critique
Debut
demande:=faux;
Tant_que (non(autorisation)) faire rien F_Tant_que
Si ((suivant = nil) et autorisation) Alors
autorisation :=faux ;
Envoie (ok, moi) à suivant ;
suivant := nil ;
jeton :=faux ;
liste_sites_stockes :=vide ;
jeton_envoye :=vrai ;
Fin
La figure II.3.13 présente la procédure de traitement des messages reçus par un site dans
cet algorithme. Nous présentons les modifications apportées au traitement de chaque message
de l’algorithme Naimi-Tréhel initial ainsi que le traitement des messages introduits par la
gestion de l’insertion dynamique :
123
- La réception du message "OK" entraîne l’envoi de l’accusé de réception (Ack) à
l’émetteur de ce message et la remise de la lite des sites insérés ("Liste_Sites_Inseres") à
vide pour qu’il puisse y mettre les nouveaux arrivés après réception du jeton.
- A la réception de l’accusé (Ack), le site en question met sa variable "Jeton_Envoye" à
faux pour qu’il arrête la mémorisation des sites au cours de la période de transmission du
jeton. Il envoie ensuite la liste de ces sites mémorisés ("Liste_Sites_Stockes") au nouveau
site détenteur du jeton et la remet à vide pour une éventuelle utilisation.
- La réception du message d’insertion "Inserer" permet au site en question d’insérer les sites
reçus en paramètre en les considérant comme ses fils (insertion sans redondance).
- La réception du message "Joindre" permet au site récepteur d’ajouter le site reçu en
paramètre à sa liste "Liste_Sites_Inseres" s’il dispose du jeton et de le garder dans la liste
des sites stockés s’il ne le possède pas.
- La réception du message "Initialiser_Pere" permet au site récepteur d’initialiser sa
variable "Pere" au paramètre reçu.
ok : debut
jeton := vrai ;
Envoie (Ack,moi, []) à element ;
liste_sites_inseres :=vide ;
fin ;
ack : debut
jeton_envoye :=faux ;
l :=liste_sites_stockes ;
Envoie(inserer, moi, L) ;
liste_sites_stockes :=vide ;
fin
inserer : debut
autorisation :=vrai ;
pour_tout element de (L – liste_sites_inseres) faire
Envoie(initialiser_pere, self, []) à element ;
joindre_element : debut
Si jeton Alors liste_sites_inseres :=liste_sites_inseres {element} ;
Envoie(initialiser_pere, self, []) à element ;
Si jeton_envoye Alors
liste_sites_stockes :=liste_sites_stockes {element} ;
Fsi
Fsi
initialiser_pere : pere :=element ;
Fin
Figure II.3.13. Traitement des messages relatifs à l’insertion dans l’algorithme Naimi-Tréhel.
124
c . Eléments de preuve
Exclusion mutuelle
Il n’y a pas de changement puisque, au plus un site a le jeton et il faut le jeton pour entrer
en section critique.
Vivacité
Il s’agit de montrer qu’un site qui veut entrer en section critique y entre au bout d’un
temps fini. Il n’y a aucun changement puisque notre travail a consisté à insérer les nouveaux
arrivés mais seulement quand un site a obtenu le jeton. Notre travail n’a aucunement modifié
l’obtention du jeton.
Insertion
Il s’agit de montrer qu’un site qui veut entrer dans la liste des participants va y entrer une
fois et une seule au bout d’un temps fini.
125
"Liste_Sites_Inseres") dans la liste des participants. Pe n’étant pas dans la liste des sites
insérés, il va être inséré une fois et une seule fois.
d . Performances
Dans l’algorithme Naimi-Tréhel modifié, pour chaque insertion d’un nouveau site, il faut
n+2 messages (au pire des cas) : n messages diffusés par le nouveau site, un message
autorisation, et un message "Initialiser_Pere" reçu par le nouveau site.
On adopte la stratégie dans laquelle un site enregistre la demande et le premier qui obtient
le jeton réalise l’insertion et demande aux autres sites de ne pas prendre en compte son
insertion. Cela va nous permettre d’éviter le dialogue entre le prédécesseur et le site qui a le
jeton. Toutefois, cette stratégie s’avère plus coûteuse en nombre de messages et nécessite plus
de synchronisations.
a. Présentation informelle
Nous adoptons la même idée qu’on a considérée pour l’insertion dynamique de nouveaux
nœuds. Un processus désirant quitter le groupe de nœuds dans l’algorithme Le Lann doit
attendre tout d’abord la réception du jeton. En effet, un processus ne peut quitter l’anneau
qu’après avoir inséré les nœuds stockés dans la file.
P3
......... (1)
Pi-1
P2
Pi .........
Pn Pi+1
......... (3)
126
la file, un par un (le dernier élément inséré est Pem). Une fois cette étape terminée, il met à
jour le successeur du dernier élément inséré en lui attribuant l’identificateur de P i+1 et le
prédécesseur de Pi+1 qui devient Pem.
La figure II.3.15 présente la procédure de départ que nous proposons pour que
l’algorithme Le Lann puisse supprimer dynamiquement des sites de l’anneau. Quand un
processus Pi reçoit le jeton, il commence par insérer les éléments de sa file dans l’anneau. Une
fois cette étape terminée, il procède au changement du successeur de son prédécesseur par son
successeur et du prédécesseur de son successeur par le dernier élément inséré de la file.
Procedure Quitter ()
Debut
Attendre (jeton) de predecesseur ;
Tant_que (file non vide) faire
nouveau_element := Retirer(tete_file, file) ;
Envoie (Change_Successeur , nouveau_element) à predecesseur ;
Tant_que (not (ack_recu)) Faire rien F_Tant_que
ack_recu :=faux ;
Envoie (Init_Pred_Succ, predecesseur, self) à nouveau_element ;
Tant_que not (ack_recu) Faire rien F_Tant_que;
ack_recu :=faux ; predecesseur := nouveau_element ;
F_Tant_que
Envoie (Changer_Successeur, successeur) à predecesseur ;
Tant_que (not (ack_recu)) Faire rien F_Tant_que
ack_recu :=faux ;
Envoie (Changer_Predecesseur, predecesseur) à successeur ;
Tant_que (not (ack_recu)) Faire rien F_Tant_que
ack_recu :=faux ;
Envoie jeton à successeur ;
Fin.
Figure II.3.15. Suppression de sites dans l’algorithme Le Lann.
Procedure Traiter_message
Debut
Cas message_recu
(change_successeur, succ) : Debut
successeur :=succ ;
Envoie (ack) à emetteur ;
Fin ;
ack : ack_recu :=vrai ;
(init_pred_succ, pred, succ) : Debut
successeur :=succ ;
predecesseur := pred ;
Envoie (ack) à emetteur ;
Fin
(joindre, ident) faire ajout_element_file (file, ident) ;
Fin_Cas
Fin.
Figure II.3.16. Traitement des messages relatifs à la suppression dans l’algorithme Le Lann..
127
La figure II.3.16 décrit le traitement des messages pour le support de la suppression
dynamique d’un site dans l’algorithme Le Lann. Nous ajoutons le traitement du message
"Changer_Predecesseur" qui permet de changer le prédécesseur du site récepteur de ce
message par le nouveau prédécesseur reçu en paramètre.
Racine Racine
P1 Départ P1
P2 P3 P2 P3
P4 4 5 P5 P4 4 5 P5
La figure II.3.18 montre une deuxième situation de blocage où l’ensemble des sites de
l’arborescence est bloqué. C’est le cas ou le site P7 quitte le groupe. En effet, lorsque le site
P8 libère le jeton, il envoie le message de libération "Ok" qui n’atteint pas la destination (son
suivant : P7). En d’autres termes, le jeton échangé entre les sites de l’arborescence est perdu.
De ce fait, le départ d’un site doit suivre une procédure et doit se faire en consentement avec
les autres sites.
128
Une des solutions envisageables pour éviter ce type de situations est de gérer un départ
(ou plusieurs) comme une décision collective entre les sites. Ceci suppose que ce changement
se fait périodiquement et nécessite un arrêt momentané de l’activité des sites (envoie de
messages de demandes, de libération ou d’exécution de section critique). La décision peut être
par exemple le résultat de vote entre les sites pour accepter ou refuser le changement de
configuration [Vill 03]. L’activité des sites reprend dès que la configuration est modifiée et
considérée comme configuration valable. Nous estimons que cette solution est statique.
Racine
P1 P6
P7 Départ
P2 P3
P8
P4 P5
La solution que nous considérons est plutôt une solution dynamique et consiste à changer
la configuration de l’arborescence chaque fois que cela est possible. La décision de départ
n’est pas dans ce cas une décision collective mais individuelle. Quand un site veut quitter le
groupe, il envoie un message de départ ("Quitter") à tous les sites de l’arborescence. Seuls les
sites fils de l’émetteur traitent ce message et changent leur information père par le nouveau
père reçu en paramètre (père de l’émetteur). Toutefois, si le père du site quittant le groupe,
veut lui aussi quitter le groupe, ceci peut entraîner une configuration non valide. Dans la
figure II.3.19, si le site Pi et le site Pi-1 expriment le besoin de quitter le groupe, ils diffusent le
message de départ ("Quitter"). Etant donnée qu’on ne peut pas assurer l’ordre de la réception
des messages, deux cas peuvent se présenter. Les sites Pi+1 et Pi+2 reçoivent le message de
départ de Pi avant celui de Pi-1. Dans ce cas le problème n’est pas posé. En effet, les sites vont
adopter Pi-1 comme nouveau père dans un premier temps puis Pi-2 dans un deuxième temps.
129
Pi-2
Départ
Pi Pi+1 Pi+2
Pi+1 Pi+2
Dans le deuxième cas, Les sites Pi+1 et Pi+2 reçoivent le message de départ de Pi-1 avant
celui de Pi. Ces sites ne vont pas traiter le message "Quitter" envoyé par Pi-1 du moment que
ce ne sont pas ses fils. Ils vont par contre traiter le message "Quitter" reçu par Pi et changer le
père par Pi-1. Or ce dernier site a déjà quitté l’arborescence. Ce qui fait que les sites Pi+1 et Pi+2
seront dans une situation de blocage. En effet il n’auront plus de père et seront isolés du
groupe (figure II.3.20).
Pi-2
Pi-2
Pi-1 Départ
Pi
Départ
Pi
Pi+1 Pi+2
Pi+1 Pi+2
La solution que nous adoptons pour résoudre ce problème est de considérer le départ d’un
site comme étant une section critique. En d’autres termes, un seul site peut effectuer un départ
à un instant donné. Nous traitons ainsi la gestion de ces départs à l’aide de l’algorithme
Naimi-Tréhel classique (initial). Il y aura donc deux arborescences formées par les sites : la
première arborescence concerne la section critique relative à une ressource partagée gérée par
un premier jeton et la deuxième arborescence, relative au départ des sites, gérée par un
deuxième jeton (jeton des départs).
130
Un site voulant quitter l’arborescence des sites Naimi-Tréhel envoie une demande de
départ vers le père au niveau de l’arborescence relative aux départs. Cette demande va être ré
acheminée vers la racine. Suite à cette demande, tous les sites l’ayant reçu deviennent des fils
du site demandeur dans l’arborescence relative à la gestion des départs. Si le jeton des départs
est libre, le site demandeur entame la procédure de départ. Sinon, il prend place dans la file
d’attente relative aux départs.
La procédure de départ consiste à diffuser le message de départ ("Quitter") à tous les sites.
Ce message n’est traité que par les fils du site ayant diffusé ce message dans l’arborescence
de gestion des départs. Le traitement de ce message par un site récepteur, consiste à changer
le père par le père du site ayant diffusé le message et de lui envoyer un accusé. Une fois que
tous les fils lui ont envoyé cet accusé, le site ayant procédé au départ passe le jeton de départ à
son suivant et quitte le groupe. Toutefois, un site disposant du jeton de la section critique
relative à la ressource partagée ainsi que la racine de son arborescence ne peuvent pas quitter
le groupe tant qu’il sont dans l’une de ces deux situations. C’est la seule restriction que nous
adoptons pour la procédure de départ. En effet, si le possesseur du jeton relatif à la ressource
partagée entame la procédure de départ, cela peut entraîner la perte de ce jeton. Il ne doit ainsi
entamer cette procédure qu’après avoir libérer le jeton relatif à la ressource partagée. Pour ce
qui est de la racine, son départ entraîne une situation ou on aura deux (ou plusieurs)
arborescences isolées les unes des autres. Ce qui entraîne une situation non valide pour
l’algorithme Naimi-Trehel (figure II.3.21).
Départ
Racine
Etant donné que nous gérons les départs des participants à l’aide de l’algorithme de
Naimi-Trehel, nous devons traiter deux arborescences simultanément : l’arborescence relative
à la ressource partagée et l’arborescence relative aux départs. Pour cela nous distinguons entre
131
les variables de gestion de la ressource partagée et celles de la gestion des départs. Pour la
gestion de la ressource partagée, nous aurons besoin des variables suivantes :
Les variables relatives à la gestion de la jointure dynamique restent les mêmes, à savoir :
"Jeton_Envoye", "Liste_Sites_Stockes", "Autorisation".
132
Const N = … ; moi= … ;
Type mess = (req_RP, ok_RP, req_D, ok_D, inserer, ack, initialiser_pere, joindre, quitter, ack_quiter) ;
site= 1..N {nil} ;
liste_sites : liste de sites ;
Var pere_RP, suivant_RP : site ; jeton_RP, demande_RP, jeton_envoye, autorisation : booléen ;
pere_D, suivant_D : site ; jeton_D, demande_D : booléen ;
liste_sites_inseres, liste_sites_stockes : liste_sites ;
nb_fils : entier ;
Procedure Initialisation
Debut
pere_RP := … ; (la valeur de père est la même pour chaque site autre que la racine et vaut nil à la racine)
pere_D := … ; (la valeur de père est la même pour chaque site autre que la racine et vaut nil à la racine)
suivant :=nil ;
Si pere_RP = nil Alors jeton_RP := vrai ; autorisation :=vrai ;
Sinon jeton_RP :=faux ; autorisation :=faux ;
Fsi
Si pere_D = nil Alors jeton_D := vrai ; autorisation :=vrai ;
Sinon jeton_D :=faux ; autorisation :=faux ;
Fsi
jeton_envoye :=faux ; liste_sites_stockes :=vide ; liste_sites_inseres :=vide ;
nb_fils= … (0 si non racine, N si nombre de sites autres que la racine
Fin
La figure II.3.23 présente les traitements de tous les messages échangés entre les sites
Nous ajoutons le traitement des messages "Quitter" et "Ack_Quitter". Le traitement du
premier message consiste à modifier les informations "Pere" et "Suivant" par celles reçues en
paramètres (Liste_Sites).
133
Procedure Traiter_Message (message : mess, element :site, liste : liste_sites )
Debut
Cas message
req_RP : Si pere_RP = nil Alors
Si demande_RP Alors suivant_RP := element
Sinon jeton_RP :=faux ; Envoie (ok_RP, element) à element Fsi
Sinon Envoie (req_RP, element) à pere_RP Fsi ;
pere_RP :=element ;
nb_fils=nb_fils-1 ;
ack_quitter : nb_fils=nb_fils-1 ;
Si (nb_fils=0) alors Envoie(ok_D,moi) à suivant_D ;
suivant_D=nil ;
jeton_D=faux ;
Fsi
Fin
Figure II.3.23. Traitement des messages relatifs à la suppression dans l’algorithme Naimi-Tréhel.
134
3.5 Conclusion
Dans ce chapitre, nous avons présenté des améliorations que nous avons apportées à des
algorithmes d’exclusion mutuelle distribués, en vue de supporter l’insertion et la suppression
dynamiques des sites participants. Les algorithmes obtenus peuvent ainsi servir comme
mécanismes pour l’implémentation de protocoles de gestion et de contrôle de floor dans des
systèmes de téléconférence multimédia.
135
Chapitre 4
Conception et implémentation
Le travail de ce chapitre a été réalisé au LAAS de Toulouse au cours d’un stage de recherche
dans le cadre du projet STIC. Ce travail a fait l’objet des publications suivantes :
4.1 Introduction
Nous avons présenté dans les chapitres précédents des spécifications formelles relatives à
deux systèmes de téléconférence. Le premier système obéit à une politique présidée. Le
deuxième est régi par une politique explicite. Nous avons ensuite vérifié ces deux systèmes en
élaborant et en validant des propriétés temporelles. Nous avons aussi élaboré des algorithmes
pouvant servir de mécanismes à ces politiques. Ces spécifications, claires et précises, nous ont
facilité la conception et la réalisation de ces systèmes que nous présentons dans ce chapitre.
136
4.2 Conception et réalisation d’un système à politique présidée
Nous présentons dans cette section la conception d’un système de gestion et de contrôle
de floor d’une téléconférence régie par la politique présidée en utilisant la notation standard
UML (Unified Modeling Language) [Rumb 00, Roqu 00]. Nous présentons ensuite la
réalisation de ce système que nous avons effectuée à l’aide de Java et JMF (Java Media
Framework) et que nous avons déployée sur un réseau local sous LINUX.
Un acteur représente l’abstraction d’un rôle joué par une entité externe (utilisateur,
dispositif matériel ou autre système) qui interagit directement avec le système étudié. Les
acteurs qui interagissent avec le MMTS sont :
- Le participant : cet acteur généralise les deux acteurs précédents. Un participant peut être
un modérateur (ou chairman) ou un simple participant.
137
4.2.1.2 Diagrammes de cas d’utilisation
La figure II.4.1 présente les cas d’utilisations relatifs à un modérateur. Elle comporte deux
principaux cas d’utilisation : le cas "Gérer Conférence" et le cas "Contrôler Floor". Le
premier cas permet au modérateur de créer, d’arrêter, de reprendre ou de terminer une
conférence. Le deuxième cas lui permet d’attribuer le floor (relatif à une ressource) ou de le
retirer à un participant ayant dépassé le temps qui lui a été accordé pour la détention du floor.
Créer
Arrêter (Paus e)
gérer conférence
Reprendre (Res um e)
Modérateur
Terminer
Donner floor
Contrôler floor
Retirer floor
La figure II.4.2 présente les cas d’utilisation relatifs à un simple participant. Elle comporte
deux principaux cas d’utilisation : le cas "Participer à Conférence" et le cas "Exploiter Floor".
Le premier cas permet au participant de joindre ou de quitter la conférence. Le deuxième cas
lui permet de demander ou de libérer le floor.
138
Joindre Conférence
Participer à conférence
Quitter Conférence
Sim ple
Participant
Exploiter floor
Libérer floor
Le diagramme de classes est le diagramme le plus important dans toutes les méthodes de
conception orientées objets. Il sert de base pour les outils de génération automatique du code.
C’est également le diagramme qui comporte la plus grande gamme de notations et de
variantes. Il est composé de classes et de relations qui les lient. Ces relations peuvent être de
différents types (agrégation, héritage, etc.). La figure II.4.3 décrit le diagramme de classes du
système régi par la politique présidée. Nous modélisons l’entité GCCF à l’aide de la classe
"Entité GCCF". Cette classe est composée des classes "Coordination_GCCF", "Gestion
Conférence", "Contrôle Floor" et "Gestion Média" qui modélisent la gestion et le contrôle de
conférence du MMTS.
Chaque participant est modélisé par une instance de la classe "Participant". Cette classe
regroupe toutes les informations relatives à un participant (modérateur ou simple participant).
Elle généralise les classes "Modérateur" et "Simple Participant". L’ensemble des instances de
139
la classe "Participant" constitue le contexte de conférence modélisé par la classe "Contexte
Conference". Celle-ci offre les méthodes permettant la consultation et la mise à jour du
contexte de conférence.
Le contexte de floor est modélisé par la classe "Contexte Floor". Elle est composée d’un
ou de plusieurs floors modélisés par la classe "Floor". Cette classe dispose d’une structure
"Liste_Demandeurs" et offre les opérations de gestion de cette liste (Ajout/Retrait). Chaque
instance de la classe "Floor" correspond à une ressource ou plusieurs modélisées par la classe
"Ressource".
140
4.2.1.4 Diagrammes de séquences
Nous présentons dans cette section des exemples de diagrammes de séquences relatifs au
cas d’utilisation de contrôle de floor concernant le modérateur.
: Fenetre : Interface Conference : Coordination_GCCF :Controle Floor : Gestion Media : Contexte_Floor : Floor : Controle Floor Gestion Media (Simple : Coordination_GCCF Interf ace Conf erence
Moderateur (Moderateur) (Moderateur) (Moderateur) (Moderateur) (Simple Participant) Participant) (Simple Participant) (Simple Participant)
Donner_Floor
GCCF_Give_Floor
Give_Floor
Stop_Send_Media
GCCF_Update_Floor_Context
Deverrouiller_Floor
GCCF_Give_Floor
Give_Floor
GCCF_Give_Floor
Stop_Send_Media
GCCF_Update_Floor_Context
Verrouiller
141
"Contrôle Floor". Celle-ci demande l’arrêt d’envoi des médias à la classe "Gestion Média",
met à jour le contexte de floor et envoie le floor à la classe "Contrôle Floor" relative au
participant désigné par le modérateur. Cette dernière classe notifie l’attribution du floor à la
classe "Coordination_GCCF" qui achemine cette notification vers la classe "Interface de
Conférence".
: Fenetre : Interface Conference : Coordination_GCCF : Controle_Floor : Gestion Media : Contexte_Floor : Floor : Controle Floor : Coordination_GCCF : Gestion Media : Interface Conference
Moderateur (Moderateur) (Moderateur) (Moderateur)) (Moderateur) (Simple Participant) (Simple Participant) (Simple Participant) (Simple Participant)
Retirer_Floor
GCCF_Grab_Floor
Grab_Floor
GCCF_Grab_Floor
Grab_Floor
GCCF_Grab_Floor
Stop_Send_Media
GCCF_Release_Floor
Release_Floor
GCCF_Update_Floor_Context
GCCF_Release_Floor
Rendre_Floor
Deverrouiller_Floor
Send_Media
GCCF_Update_Floor_context
Verrouiller_Floor
Le modérateur invoque le service de retrait de floor via son interface sur la classe
"Interface de Conférence". Celle-ci achemine cette demande à la classe
"Coordination_GCCF" qui la transfère à la classe "Contrôle Floor". Cette classe envoie la
demande de retrait de floor à la classe "Contrôle Floor" relative au participant détenteur du
floor. Cette dernière classe demande l’arrêt d’envoi des médias à la classe "Gestion Media",
met à jour le contexte de floor et envoie le message de libération de floor à la classe "Contrôle
142
Floor" du modérateur. Celle-ci met à jour le contexte de floor et ordonne l’envoi des médias
du modérateur à la classe "Gestion Media".
Nous présentons dans cette section des exemples de diagrammes de séquences relatifs au
cas d’utilisation de contrôle de floor concernant un simple participant.
: Fenetre : Interf ace Conf erence : Coordination_GCCF : Controle Floor : Controle Floor : Coordination_GCCF : Contexte Floor
SimpleParticipant (Simple Participant) (Simple Participant) (Simple Participant) (Moderateur) (Moderateur)
Demander_Floor
GCCF_Ask_Floor
Ask_Floor
GCCF_Ask_Floor
Ask_Floor
GCCF_Update_Floor_Context
143
: Fenetre : Interface Conference : Coordination_GCCF Controle Floor Gestion Media : Contexte_Floor : Floor : Controle Floor : Coordination_GCCF Gestion Media Interface Conference
Simple Participant (Simple Participant) (Simple Participant) (Simple Participant) (Simple Participant) (Moderateur) (Moderateur) (Moderateur) (Moderateur)
Liberer_Floor
GCCF_Release_Floor
Release_Floor
Stop_Send_Media
GCCF_Update_Floor_Context
Deverrouiller_Floor
GCCF_Release_Floor
Release_Floor
GCCF_Release_Floor
Send_Media
GCCF_Update_Floor_context
Verrouiller_Floor
4.2.2 Réalisation
Nous présentons dans cette section l’implémentation du MMTS régi par la politique
présidée à travers les interfaces qu’il fournit aux usagers. Cette implémentation a été effectuée
en utilisant le langage Java et l’API JMF par-dessus LINUX [Oual 02]. Nous commençons
par présenter les interfaces préliminaires à une participation dans une conférence. Nous
donnons ensuite les interfaces affichées au cours de la participation d’un usager.
144
Figure II.4.8. Interface de saisie des Informations d’un utilisateur.
145
protocoles. Nous avons cependant utilisé une base de données centralisée pour maintenir les
informations des conférences créées.
L’usager peut aussi spécifier les ressources à utiliser dans cette conférence (audio/vidéo)
et outils de coopération (tableau blanc ou chat). L’usager ayant introduit ces informations
devient le modérateur de la conférence créée.
146
Figure II.4.10. Interface "Création d’une conférence".
147
4.2.2.2 Interfaces de gestion du déroulement de la conférence
148
Le panneau "Group information" permet de consulter la liste de tous les utilisateurs
connectés et leurs informations ("All Users"), consulter la liste des demandeurs de floor
("Floor Callers") ou supprimer un utilisateur de la conférence ("Remove User"). Le panneau
"Ressources" permet d’activer ou désactiver une ressource. Le panneau "Buttons" contient un
ensemble de boutons pour terminer, initialiser, arrêter ou reprendre une conférence. Un label,
situé dans le coté droit de ce panneau sert à mentionner le nom du participant qui détient le
floor.
L’interface relative à un simple participant est présentée à la figure II.4.13. Cette interface
comporte les mêmes panneaux que l’interface du modérateur. La différence réside dans le
panneau "Floor" et le panneau "Bouttons". Dans le premier panneau, le participant dispose
seulement des fonctionnalités lui permettant de demander ou de libérer le floor. Le deuxième
panneau offre uniquement les fonctionnalités de connexion ou de départ d’un simple
participant.
149
4.3 Réalisation d’un système à politique explicite
L’outil de visioconférence permet un dialogue informel entre les membres d’une même
session de travail. Il offre des fonctionnalités de connexion/déconnexion, de sélection du type
de médias (audio/vidéo) et de spécification du débit émis de la vidéo en nombre d’images par
seconde. Tous les utilisateurs de la visioconférence ont les mêmes privilèges. Le groupe de
travail se définit par une adresse IP (multicast ou unicast selon les conditions d’utilisation) et
par un numéro de port [Baud 01a].
L’outil tableau blanc est une application client/serveur fonctionnant sous TCP et conçue
pour offrir les fonctionnalités d’un tableau blanc classique d’une salle de cours ou de réunion.
Le but est de partager des documents statiques variés, utilisés dans le cadre d’une présentation
de travail. Le responsable de la réunion affiche des documents que tous les autres participants
pourront sauvegarder localement en fin de session. Cet outil est en fait un éditeur graphique
partagé, utilisant comme fond d’écran, un document pré-existant enregistré au format GIF ou
JPEG.
L’outil de partage d’applications est utilisé par un participant pour diffuser une image de
l’application métier sur laquelle il travaille. Cet outil effectue une capture d’écran diffusée à
l’ensemble des participants de la session et fonctionne selon un modèle client/serveur. Le
150
serveur de partage est lancé sur la machine qui est également serveur d’applications métiers.
Seules les copies d’écrans sont diffusées comme cela se produit dans une salle de réunion
classique équipée d’un vidéo projecteur.
Visioconference
Gestion de Partage Configuration
Tableau blanc
session d'application hors-ligne
RTP/RTCP
Multicat
Environnement PLATINE Fiable
Transport
Le gestionnaire de session est un outil dont l’interface est présente uniquement sur le
poste du responsable de la session. Son rôle est de gérer les différents outils de la plate-forme.
Pour ce faire, il transmet des ordres à l’ensemble des participants ou à un participant identifié
tels que :
- Réduire et restaurer : ordre qui permet d’iconifier ou de restaurer la fenêtre d’un des
outils de la plate-forme sélectionné. Cet ordre est utilisé par le responsable pour attirer
l’attention d’un ou de plusieurs participants sur un outil à un moment donné.
- Montrer ou cacher : met en avant ou en arrière plan un outil de la plate-forme pour un
participant ou pour l’ensemble des participants.
- Verrouiller ou déverrouiller un outil : autorise un accès en lecture ou en lecture/écriture
sur un outil de la plate-forme.
- Quitter : ferme définitivement l’application sélectionnée chez un participant ou pour tous
les participants
L’architecture du MMTS à politique explicite que nous avons réalisé est composée de
Platine comme environnement de base auquel on a intégré un module de "Gestion de
151
Conférence et de Contrôle de Floor" pour gérer les ressources demandées par les applications
coopératives (figure II.4.15). Nous distinguons ainsi les cinq blocs suivants :
Applications Cooperatives
Environnement
Gestion de Conférence et PLATINE
Contrôle de Floor RTP/RTCP
Multicat Fiable
Transport
152
contrôle d’acquisition et de libération du floor. Etant donné qu’on s’est intéressé au floor
relatif aux canaux des médias (audio et vidéo), le bloc "Gestion de Conférence et Contrôle de
Floor" fait appel aux primitives offertes par Platine : "Start_Send_Media" et
"Stop_Send_Media". L’acquisition du "floor" entraîne l’invocation de la primitive
"Start_Send_Media". La libération du "floor" entraîne l’invocation de la primitive
"Stop_Send_Media".
4.3.3 Implémentation
Nous avons réalisé une implémentation qui permet le contrôle de l’outil visioconférence
en gérant un floor relatif aux modules de transmission de l’audio et de la vidéo. Ce contrôle
est assurée par la classe "Gestion_Conference_Controle_Floor" implémentant le bloc
"Gestion de Conférence et Contrôle de Floor" en JAVA. Cette classe implémente le
mécanisme d’exclusion mutuelle distribué dynamique (algorithme Naimi-Tréhel modifié) et
interagit d’une part, avec les classes de l’outil de visioconférence de Platine et d’autre part,
avec une classe implémentant une application coopérative. Cette application se présente
comme une interface comportant les boutons de prise et de libération de la parole. Le
mécanisme d’exclusion mutuelle permet un ordonnancement des requêtes des utilisateurs de
la session coopérative.
153
c
Nous présentons dans cette section l’implémentation d’une application CSCL (Computer-
Supported Cooperative Learning). Cette application permet d’accompagner des étudiants
dans leur processus d’apprentissage. Elle leur fournit un environnement synchrone pour la
préparation des exercices d’un cours ou d’un examen. Elle est réalisée par-dessus le système à
politique explicite que nous avons présenté dans la section 4.3.
L’accompagnement des étudiants dans la résolution des exercices est un aspect très
important dans leur processus d’apprentissage. Cet aspect est généralement supporté de
manière asynchrone dans les systèmes d’enseignement à distance. Les étudiants effectuent
154
leurs exercices individuellement et les envoient à l’enseignant. Toutefois, les interactions et la
communication entre les étudiants d’un groupe de travail constituent un moyen efficace pour
l’assimilation d’un cours à travers des exercices ou la préparation d’un examen. Dans le but
de faciliter la résolution des exercices en groupe via une application CLCS, [Haak 02]
identifie les caractéristiques requises par une telle application :
Nous discutons dans cette section la mise en œuvre d’une partie des caractéristiques
mentionnées ci-dessus à travers notre implémentation. Pour supporter la préparation des
155
exercices, nous implémentons un outil permettant la gestion d’une base de données des
exercices. Cet outil offre un ensemble de services à l’enseignant, ou à l’étudiant responsable
du groupe. Ces services concernent la création et la suppression et l’insertion d’une
description d’un exercice, la copie d’une description d’un exercice et l’édition d’un exercice
existant (figure II.4.17). Cet outil permet aussi à l’étudiant de consulter des exercices et leur
stade de résolution.
156
Comme moyen d’édition et de visualisation commune, nous implémentons un tableau
blanc qui permet d’offrir les fonctionnalités classiques d’un tableau de classe et offre la
possibilité de discuter conjointement un exercice via des schémas graphiques et du texte
(figure II.4.18). Pour les trois dernières caractéristiques, nous utilisons le système de
téléconférence à politique explicite que nous avons présenté dans la section 4.3. Ce système
permet de supporter la gestion de groupe, l’envoi des données multimédias, la coordination
des interventions des différents membres du groupe et le contrôle des floors relatifs aux
ressources partagées.
157
L’architecture que nous adoptons pour l’application de préparation coopérative des
exercices est une architecture client/serveur. Du côté client, elle comporte quatre
composantes : l’interface de l’application, la composante "Gestion de conférence et Contrôle
de Floor", la composante "Agent de Gestion du Contexte de Préparation" ("AGCP"), et la
composante de transport. La première composante présente à l’utilisateur l’ensemble des
fonctionnalités de gestion des exercices (pouvant être des applets). La deuxième composante
permet la gestion et le contrôle des interactions des membres et des ressources. La
composante "AGCP" exécute les fonctionnalités offertes par l’interface. Du côté du serveur,
nous distinguons trois composantes : la composante de "Gestion du Contexte de Préparation"
("GCP"), la composante JDBC et la base de donnée. La première composante comporte
l’ensemble des services (pouvant être des servlets) qui répondent aux demandes des
"AGCPs". La deuxième composante permet l’interaction entre la composante "GCP" et la
base de donnée. La base de donnée permet de stoker le contexte de la préparation.
Responsable Etudiant
Services de
Connexion au Création d'un
Création Connexion au Consultation préparation
système exercice
d'une session système d'un exercice
de préparation
Service de JDBC
création d'une
préparation
Service de
création d'un
Agent de Gestion du Contexte de
Gestion de Conférence et Controle de Floor
.....
exercice
Préparation
Service de
consultation
Base de
d'un exercie données
Transport
Serveur de préparation
Client
4.5 Conclusion
Dans ce chapitre, nous avons présenté la conception UML et la réalisation d’un système
de téléconférence régi par la une politique présidée. Nous avons ensuite décrit
l’implémentation d’un système à politique explicite. La première implémentation est basée
essentiellement sur la spécification formelle (Partie II chapitre 1 section 1.3.2) qui nous a
158
facilité la conception et la réalisation. La deuxième implémentation est basée sur un
mécanisme d’exclusion mutuelle distribué et fait usage de l’environnement Platine. Cette
implémentation nous a servi de base pour la réalisation de l’application CSCL pour la
préparation coopérative des exercices. Notons que d’autres applications ont été effectués par-
dessus les systèmes de téléconférence (présidée et explicite) pour le télétravail et le suivi
synchrone d’un cours donnée par un enseignant (classe virtuelle).
159
Conclusion générale
Dans ce travail de thèse, nous avons commencé par présenter un état de l’art sur les
systèmes coopératifs, les normes concernant les systèmes de téléconférence multimédia et les
produits basés sur ces standards. Cette étude nous a permis de mettre en évidence le besoin et
le rôle de la gestion et du contrôle du déroulement d’une téléconférence. Ceci requière deux
principaux aspects auxquels nous nous sommes intéressés : la gestion de conférence et le
contrôle du "floor". Conformément aux objectifs de cette thèse, nous avons apporté une
contribution au niveau des points suivants:
- La définition d’une architecture de gestion et de contrôle de conférence multimédia ;
- La spécification formelle de protocoles de gestion de conférence et de contrôle de
"floor" (protocoles GCCF) ainsi que leur vérification ;
- L’élaboration de mécanismes de réalisation des protocoles spécifiés ;
- L’implémentation de ces protocoles.
160
l’entité de gestion de conférence et de contrôle de floor selon ces deux politiques. Les
descriptions formelles ont été élaborées à l’aide du formalisme de machines à états finis
communicants. L’objectif de cette description formelle est d’aboutir à des spécifications
claires, exactes, consistantes et vérifiables. Nous avons aussi identifié des propriétés
temporelles qui répondent aux besoins attendus des systèmes de téléconférence en terme de
sûreté, de vivacité et d’exclusion mutuelle. Nous avons décrit ces propriétés en logique
temporelle linéaire et nous les avons vérifiées automatiquement, à l’aide de l’outil
Promela/Spin.
Au niveau des mécanismes de réalisation, nous nous sommes basés sur les techniques
d’exclusion mutuelle et de la gestion des accès multiples. Nous avons considéré plus
particulièrement les algorithmes d’exclusion mutuelle distribués basés sur l’échange du jeton.
Nous avons apporté des améliorations à deux de ces algorithmes à savoir : Le Lann et Naimi-
Tréhel. Ces améliorations ont pour objectif de supporter l’insertion et la suppression
dynamique de sites. Ainsi, nous avons établi des techniques permettant d’ajouter et de
supprimer un site de l’anneau régissant l’algorithme Le Lann. Nous avons ensuite ajouté des
procédures permettant d’insérer et de supprimer un site de l’arborescence Naimi-tréhel. Les
algorithmes ainsi obtenus peuvent servir de mécanismes d’implémentation de protocoles de
gestion et de contrôle de "floor".
Comme perspective à ce travail, nous prévoyons trois volets différents. Le premier volet
concerne le passage à l’échelle. En effet, les implémentations mentionnées ci-dessus, ont été
effectuées sur des réseaux locaux (Linux ou Microsoft). Nous projetons ainsi les déployer sur
Internet. Le deuxième volet prévoit l’étude des besoins de ces systèmes en vue de supporter la
mobilité des participants. Dans des plateformes mobiles, le participant doit pouvoir retrouver
161
le même environnement du système de téléconférence après un éventuel déplacement. La
gestion de la conférence et des ressources partagées doit prendre en compte ces aspects. Le
dernier volet concerne la mise en œuvre d’autres applications coopératives au-dessus des
systèmes implémentés. Ces applications concernent le télétravail (exemple de séance
parlementaire à distance) et le télé-enseignement (classe de cours virtuelle).
162
Bibliographie
Références
163
[Borm 01] C. Bormann, J. Ott and H. Kutscher, "SCCP: Simple Conference Control
Protocol", Internet Draft, draft-ietf-mmusic-sccp-01-txt, February 13, 2001.
[Bour 00] G. Bourgin, "Un Support Informatique à l’Activité Coopérative Fondé sur la
Théorie de l’Activité", Thèse de Doctorat Informatique, Université des
Sciences et Technologies, 2001.
[Bout 01] C. Bouthier et G. Cannals "Le Contexte Comme Base de Conscience de
Groupe", CTE, Troyes, 2001.
[Bowe 95] J. Bowers and G. Button, "Workflow from Within and Without", European
Conference on Computer Supporter Cooperative Work (ECSCW’ 95), 1995.
[Cava 88] A. Cavalli, E. Paul, "Exhaustive Analysis and Simulation for Distributed
Systems", Both sides of the same coin, Distributed computing, 1988.
[Chou 95] R. Choudary and P. Dewan, "A Genaral Multi-User Undo/Redo Model",
European Conference on Computer Supporter Cooperative Work (ECSCW’
95), 1995.
[Cout 99] J. Coutaz, F. Bérard, E. Carraux and W. Astier "CoMedi: Using Computer
Vision to Support Awarness and Privacy in Media Spaces", ACM Conference
on Human Factors and Computing Systems (CHI’99), ACM Press, pp 13-14,
1999.
[Cout 01] J. Coutaz, "Architecture Logicielle Conceptuelle des Systèmes Interactifs",
Livre, Analyse et Conception de l’IHM : Interaction Homme-Machine pour les
SI, Hermès, 2001.
[Crow 95] T. Crowley, P. Milazzo, E. Baker, E. Forsdick and R. Tomlinson, "MMConf:
An Infrastructure for Building Shared Multimedia Applications", Proceeding
of ACM Conference on CSCW, 1995.
[Davi 92] R. David, H. Alla, "Du Grafcet aux réseaux de Petri", Editions Hermes, Paris,
1992.
[Davi 98] B. David, "Apports de la Technologie Informatique à l’Ingénierie
Concourante : Cas du Workflow et du Groupware", L’entreprise
Communicante, Paris : Hermès, 1998.
[Deco 96] D. Decouchant, V.Quint et M Romero, "Groupware and Authoring", Acdemic
press, 1996.
[Deer 91] S. Deering, "Multicast Routing in a Datagram Internetwork", Phd Thesis,
Stanford University, California, USA, 1991.
164
[Deer 99] S. Deering., W.Fenner and B.Haberman, "Multicast Listener Discovery (MLD)
for IPv6", RFC 2710, October 1999.
[Dewa 00] P. Dewan, "An Integrated Approach to Designing and Evaluating
Collaborative Applications Infrastructures", Journal of Computer-Supported
Cooperative Work (JCSCW), 2001.
[Dix 93] A. Dix, J. Finlay, G. Abowd and R. Beale "Human Computer Interaction",
Prentice-Hall, 1993.
[Domm 97] H.-P. Dommel and J.J. Garcia-Luna-Aceves, "Floor Control for Multimedia
Conferencing and Collaboration", Multimedia Systems (ACM/Springer), Vol.
5, No. 1, January 1997.
[Domm 99] H.-P. Dommel and J.J. Garcia-Luna-Aceves, "Efficacy of Floor Control
Protocols in Distributed Multimedia Collaboration", Cluster Computing
Journal, Special issue on Multimedia Collaborative Environments, Vol. 2, No.
1, 1999.
[Domm 03] H.-P. Dommel, "Peer-to-Peer: Technology and Trends", Magazine of the
Association of Internet Professionals, Apr/May 2003.
[Domm 04] H. P. Dommel and S. Verma, "Multipoint Synchronization Protocol", Proc.
IEEE Int. Conference on Systems, Man and Cybernetics (SMC'04), The
Hague, The Netherlands, Oct. 10-13, 2004.
[Dorc 95] T. Dorcey, "The CU-SeeMe Desktop Videoconferencing Software",
ConneXions – The Interoperability Report, Vol. 9, No 3,1995.
[Dour 96] P. Dourish, "Open Implementation and Flexibility in CSCW Toolkits",
Computer Science Thesis, University College of London, Londres, 1996.
[Dour 98] P. Dourish, "Introduction: The State of Art of Computer Supported
Cooperative Work", the Journal of Collaborative Computing, 7 N° 1 et 2
(Interaction and Collaboration in MUDs, 1998.
[Ech- 01] M. D. Ech-chrif El Kettani, "KBT : Conception d’une Architecture Générique
de Protocoles de Routage Multipoint Inter Domaine", Thèse de Doctorat
d’Etat, soutenue à l’Ecole Mohammadia des Ingénieurs, 2001.
[Ehri 85] H. Ehrig and B. Mahr, "Fundamentals of Algebraic Specification 1 –
Equations and Initial Semantics", Volume 6 of EATCS Monographs on
Theoretical Computer Science, Springer-Verlag, Berlin, 1985.
[Elli 91] C. Ellis, S. Gibbs and G. Rein, "Groupware: Some Issues and Experiences",
Communications of the ACM, 34(1)38-58, 1991.
165
[Elli 94] C. Ellis, and J. Wainer, "A Conceptual Model of Groupware", In Proc.
CSCW’94, ACM Press, 1994.
[Elli 99] C. Ellis, "Workflow Technology", Computer Supported Cooperative Work,
Beaudouin-Lafon, Trends in Software, 1999.
[Fenn 97] W. Fenner, "Internet Group Management Protocol, Version 2", RFC 2236,
IETF, 1997.
[Finn 97] K. Finn, A. Sellen and S. Wilbur, "Video Mediated Communication",
Lawrence Erlbaum Associates, 1997.
[Fluc 95] F. Fluckiger, "Understanding Networked Multimedia Applications and
Technology", Prentice Hall, New York, 1995.
[From 98] M. Fromme and H. Pralle, "An Address Resolution and Key Exchange Protocol
for Conferencing Applications on the Internet, Confman 2.0", Interactive
Distributed Multimedia Systems and Telecommunication Services, 5th
International Workshop, IDMS'98, Oslo, Norway, 1998.
[Gree 95] S. Greenberg, C. Gutwin and A. Cockburn, "Sharing Fisheye Views in
Relaxed-WYSIWIS Groupware Applications", Proceeding of Graphics
Interface, Distributed by Morgan Kaufmann, pp. 22-24, Toronto 1995
[Gree 98] S. Greenberg and M. Roseman, "Using a Room Metaphor to Ease Transitions
in Groupware", Technical Report 1999-425, Department of Computing and
Information Science, University of Calgary, Calgary, 1998.
[Greg 99] W. Greg, "Architecture for Synchronous Groupware", Technical Report 1999-
425, Department of Computing and Information Science, Queen’s University
Kingston, Ontario, 1999.
[Greif 88] I. Greif, "CSCW: What does it mean?", CSCW’ 88. Proceedings of the
Conference on Computer-Supported Cooperative Work, September 26-28,
1988, Portland, Oregon, ACM, New York, NY, 1988.
[Gutw 95] C.Gutwin and S. Greenberg, "Support of Awarness in Real-time Descktop
Conferences", Proceeding of the 2nd New Zealand Computer Science
Research Students’ Conference, University of Waikato, April 1995.
[Gutw 00] C.Gutwin and S. Greenberg, "The Mechanism of Colaboration: Developing
Low Cost Usability Evaluation Methods for SharedWorkspaces", IEEE 9th
Internationnal Workshop on Enabling Technologies: Infrastructure for
Collaborative Entreprises (WET-ICE’00), 2000.
166
[Hahn 91] U. Hahn and M. Jarke, "Teamwork Support in a knowledge-Based Information
System Environment", IEEE Transactionson Software Engineering, 17(5), pp
467-482, Mai 1991.
[Haak 03] J. M. Haake, T. Schümmer, and A. Haake, "Supporting Collaborative
Exercises for Distance Education", Proceedings of the 36th Hawaii
International Conference on System Sciences (HICSS’03), 2003.
[Hand 97] M. Handley, V. Jacobson, "SDP : Session Description Protocol", RFC 2327,
1997.
[Hand 98] M. Handley, V. Jacobson, "SIP : Session Initiation Protocol", RFC 2543,
1998.
[Hilt 01] Volker Hilt, Claudia Schremmer, Christoph Kuhmünch, Jürgen Vogel,
"Creation and Use of Multimedia Teachware in synchronous and
asynchronous Teleteaching", WI-Schwerpunkthef, Virtuelle Aus- und
Weiterbildung" 43 (01/2001), pp. 23-33, February 2001.
[Hoft 98] G.H.T. Hofte, "Working Aport Together", Volume. N° 001, Electronique ed,
Ensschede, The Netherlands: Telmatica Institut, 1998.
[Holz 91] G.J. Holzmann, "Design an Validation of Computer Protocol", Prentice-Hall,
1991.
[Ibri 02] A. Ibriz and M. Erradi, "Cooperative Session Control over SIP", Internet and
Information Technology, CIIT’02, Virgin Island, USA, 2002.
[ISO 88] International Organisation for Standardisation (ISO), IS 8807 "Information
Processing Systems, Open Systems Interconnection, LOTOS – A Formal
Description Technique Based on the Temporal Ordering of Observational
Behavior", July 1988.
[ISO 89] International Organization for Standardization (ISO), "ESTELLE, A Formal
Description Technique based on Extended State Transition", International
Standard, ISO-9074, 1989.
[ITU 88a] International Telecommunication Union, "Pulse Code Modulation (PCM) for
Voice Frequencies", ITU-T Recommendation G.711, 1988.
[ITU 88b] International Telecommunication Union, "SDL User Guidelines". IUT-T
Z100, 1988.
[ITU 93a] International Telecommunication Union, "Recommandation H.320, Narrow-
band Visual Telephone Systems and Terminal Equipment", ITU-T
Recommendation H.320, 1993.
167
[ITU 93b] International Telecommunication Union, "Recommandation H.261 : Codec
Vidéo pour services audiovisuels à p* 64 kbits/s", ITU-T Recommendation
H.261, 1993.
[ITU 95a] International Telecommunication Union, "Adaptation of H320 Visual Telepone
Terminals to B-ISDN Environments", ITU-T Recommendation H.321, 1995.
[ITU 95b] International Telecommunication Union, "Visual Telephone Systems and
Equipment for Local Area Networks Which Provide a Non-Guaranteed Quality
of Service", ITU-T Recommendation H.322, 1995.
[ITU 95c] International Telecommunication Union, "Control Protocol for Multimedia
Communication", ITU-T Recommendation H.245, 1995.
[ITU 95d] International Telecommunication Union, "Media Stream Packetization for
Visual Telephone Systems on Non-Guaranteed Quality of Service LANs", ITU-
T Recommendation H.225, 1995.
[ITU 95e] International Telecommunication Union, "Recommendation H.263 : Video
Coding for Low Bitrate Communication", ITU-T Recommendation H.263,
1993.
[ITU 96a] International Telecommunication Union, "Recommendation H.323 : Visual
Telephone Systems and Equipment for Local Area Networks which Provide a
Non-guaranteed Quality of Service", ITU-T Recommendation H.323,
November 1996.
[ITU 96b] International Telecommunication Union, "Data Protocols for Multimedia
Conferencing", ITU-T Recommendation T.120, November 1996.
[ITU 96c] International Telecommunication Union, "Multipoint Binary File Transfer
Protocol", ITU-T Recommendation T.127, November 1996.
[ITU 96d] International Telecommunication Union, "Generic Application Template",
ITU-T Recommendation T.121, November 1996.
[ITU 97] International Telecommunication Union, "Multipoint Still Image and
Annotation Protocol", ITU-T Recommendation T.126, November 1997.
[Jaco 98] V. Jacobson ans S. McCanne, "Using the LBL Network Whiteboard",
Technical Report; Lawrence Berkley Laboratory, 1998.
[Jard 94] C. Jard, "Contribution à la Vérification Dynamique des Protocoles",
Documents d’habilitation, IRISA+IFSIC, Université de Rennes 1, 1994.
168
[Joha 88] R. Johansen, "Current User Approaches to Groupware", Groupware:
Computer support for business teams. pp 12-44, New York: The Free Press,
1988.
[John 82] P. Johnson-Lenz and T. Johnson-Lenz, "Groupware: The Process and Impacts
of Design Choices", In Studies of Computer-Mediated Communication
Systems: A Synthesis of the Findings. Final Report of a Workshop, pages 45-
55. Computerized Conferencing and Communications Center, New Jersey
Institute of Technology, 1982.
[Kana 95] JR. Kanawati, "Un Modèle de Protection de Données pour les Applications
Coopératives", Journées jeunes chercheurs en systèmes réparties, Rennes,
1995.
[Kars 94] A. Karsenty, "Le Collecticiel: de l’Interaction Homme-Machine à la
Communication Home-Machine-Homme", TSI Technique et Sciences
Informatiques, 13(1):105-127, 1994.
[Kaus 98a] N., Crowcroft J. "General Conference Control Protoco" , 6th IEE conference
on telecommunication, 29th march – 1st april, Edinburgh, UK, 1998, pp 143-
152
[Kaus 98b] Kausar N., Crowcroft J. – "Floor Control Requirements from Reliable IP
Multicast" 8th IFIP Conference on High Performance Networking (HPN'98)
The Millennium Push of Internet, Vienna September 21-25, 1998
[Kaus 99] N., Crowcroft J. "An Architecture for Conference Control Functions" , Data
communication and voice networks Conference, SPIE Symposium ,19-22nd
September 1999, Boston MA
[Kuts 94] D. Kutscher, J. Ott and C. Bormann, "Session Description and Capability
Negociation", Internet Draft, IETF, 2002.
[Lamp 78] L. Lamport "Time, clocks and the ordering of events in a distributed
system", Communications of the ACM, Vol.21, N° 7, pp 558-565, July 1978.
[Lann 77] G. Le Lann "Distributed Systems - Towards a Formal Approach",IFIP
Congress, pp 155-160, 1977.
[Laur 00] Y. Laurillau et L. Nigay "Modèle de Navigation Collaborative Synchrone pour
l’Exploration des Grands Espaces d’Information", IHM’00, 2000.
[Laur 02a] Y. Laurillau et L. Nigay "Clover Architecture for Groupeware", CSCW’02,
New Orleans, USA, 2002.
169
[Laur 02b] Y. Laurillau et L. Nigay "Architecture Clover pour les Collecticiels", IHM’02,
Poitiers, France, 2002.
[Lauw 90] J.C Lauwers, K.A. Lantz and A.L. Romanow, "Replicated Architectures for
Shared Window Systems: a Critique ", In Proceedings of the Conference on
Office Information Systems ACM COIS’90, Boston, MA, USA, pp 249-260,
ACM Press, 1990.
[Lian 90] L. Liang, S.T. Chanson and G.W. Neufeld, "Process Groups and
Communications: Classifications and Requirements", IEEE Computer, pp. 56-
66, 1990.
[Lyon 98] F. Lyonnet, "Support des Applications Multimedia sur l’Internet Incluant des
Liens Sans-Fils", Thèse de Doctarat, Université Nice – Sophia, 1998.
[Mack 99] MW. Mackay, "Media Space: Environments for Informal Multimedia
Interaction", Computer Supported Cooperative Work, Beaudouin-Lafon,
Trends in Software, 1999.
[Maek 85] M. Maekawa "A N Algorithm for Mutual Exclusion Decentralized
Systems", ACM Transactions on Computer Systems, Vol. 3, N° 2, pp 145-159,
May 1985.
[Makk 94] K. Makki, "An Efficient Token-based Distributed Mutual Exclusion
Algorithm", Journal on Computer and Hardware Engineering, December 1994.
[Mant 94] M. Mantei, R. Baeker, A. Sellen, W. Buxton and T. Milligan, "Experience in
the Use of Media Space", In ACM SIGCHI Conference on Human Factors in
Computing Systems, pp 203-208, 1991.
[Mari 94] J. Mariani, T. Rodden and J.Trevor, "The Use of Adapters to Support Sharing",
Technical Report, Lancaster University, 1994.
[Minö 93] S. Minör and B. Magnusson, "A Model for Semi-Synchronous Collaborative
Editing", Proceeding ACM Conference on CSCW, 1993.
[Naim 87] M. Naimi, M. Tréhel "An Improvement of the log (n) Distributed Algorithm
for Mutual Exclusion", 7 th International Conference on Distributed
Computing, pages 371-375, 1987.
[Naim 96] M. Naimi, M. Tréhel and A. Arnold, "A O(log(n)) Distributed Mutual
Exclusion Algorithm Based on Path Reversal", Parallel and Distributed
Computing 34, pp 1-13, 1996.
[Ohmo 92] T. Ohmori, K. Maeno, S. Sakata, H. Fukuora and K. Watab, "Distributed
Cooperative Control for Sharing Application Based on Multiparty Desktop
170
Conferencing System: MERMAID", IEEE Proceedings of the international
Conference on Distributed Computing Systems, Berlin, 17(1): 538-546, June
1992.
[Oual 02] M. Oualla, M. Ouzzif and M. Erradi, "Implementation of a Multimedia
Teleconferencing system over Internet", IWCSE, Marrakech, December 2002.
[Ouzz 00a] M. Ouzzif, M. Erradi and A. Schaff, "An SDL Specification of Coordination
Protocol within a Teleconferencing System", ISIVC2000, Rabat, 2000.
[Ouzz 00b] M. Ouzzif, M. Tréhel, "Insertion de Nouveaux Participants à une Conférence
sur un Réseau ; Adaptation d’Algorithmes d’Exclusion Mutuelle Distribués à
Jeton", ISIVC2000, Rabat, 2000.
[Ouzz 02a] M. Ouzzif, M.Erradi, "Formal Description of Teleconferencing Management
and Control Protocol", IEEE, IWCSE, Marrakech, December 2002.
[Ouzz 04] M.Ouzzif et M. Erradi, "Un Protocole de Floor Control basé sur un
mécanisme d’exclusion mutuelle distribué dynamique", NOTERE’04, Saidia,
Maroc, 2004.
[Owez 97] Philippe Owesarski, Veronique Baudin et Michel Diaz, « Conception et
développement d’un système synchrone de télé-formation professionnelle ».
Calculateurs parallèles, Volume 9, numéro 2, 1997.
[Pale 02] L. Palen and J. Grudin, "Discretionary Adoption of Group Support Software:
Lessons from Calendar Application", Livre – Organisational Implementation
of Colaboration Technology, MUNK, 2002.
[Paul 97] S. Paul, K. Sabnani D.J.C Lin and S. Bhattacharyya, "Reliable Multicast
Transport Protocol (RMTP)", IEEE Journal on Selected Areas in
Communications, Vol. 15, N°.3, pp 407-42, 1997.
[Perr 97] M. Perry, "CONFCNTLR: A Video Conference Controller", masters thesis in
San Francisco State University, December 1997.
[Pnue 77] A. Pnueli, « The Temporal Logic of Programs », In Wizard V. Oz an Mihalis
Yannakakis, editors, Proceedings of the 18th Symposium on Foundations of
Computer Science, pages 46-57, 1977.
[Rica 81] Glenn Ricart, Ashok K. Agrawala "An Optimal Algorithm for Mutual
Exclusion in Computer Networks", CACM 24 (1) : 9-17, 1981.
[Roqu 00] P. Roques, F. Vallée, "UML en action : De l’analyse des besoins à la
conception en Java". Deuxième Tirage, Eyrolles, 2000.
171
[Rumb 99] J. Rumbaugh, I. Jacobson, G. Booch, "The Unified Modeling Language
Reference Manual", Addison-Wesley, 1999.
[Rodr 01] L.M. Rodriguez Peralta, T. Villemur, K.Drira, "An XML architecture for a
synchronous session model ", PDPTA’01, 2001.
[Rodr 02] L.M. Rodriguez Peralta, T. Villemur, K.Drira, J.Mmolina, "Managing
dependencies in dynamic collaborations using coordination diagrams",
OPODIS’02, 2002.
[Salb 95] D. Salber, "De l’interaction Individuelle aux Systèmes Multi-utilisateurs
L’exemple de la Communication Homme-Homme-Médiatisée", Thèse de
Doctorat Informatique, Université Joseph Fourier, Grenoble, 1995.
[Sass 94] M.A.Sasse, Claus-Dieter Schulz, Thierry Turletti "Remote Seminars through
Multimedia Conferencing : Experiences from the MICE project",
INET/JENC5 1994.
[Schu 96] H. Shulzrine, "RTP: A Transport Protocol for Real-Time Appliactions", IETF
RFC, 1996 ConneXions- The Interoperability Report, Vol. 8, No 10, October
1994.
[Schu 98] H.Schulzrinne, "A Comparison of SIP and H.323 for Internet Telephony",
proceedings of the Network operating System Support for Digital Audio and
Video (NOSSDAV '98), Cambridge, 1998.
[Schu 04] H. Schulzrinne, K. Singh and X. Wu, "Programmable Conference Server",
Columbia University Technical Report CUCS-040-04, New York, NY, Oct
2004.
[Sein 97] L. Seinturier, L. Duchien and g. Florin, "A Design and an Observational
Approach for Group BehaviourDesign Patterns", Proceedings of the European
Conference on Technologies of Object-Oriented Languages and Systems
(Tools Europe 97), Paris 1997.
[Shen 94] H. Shen, "Access Control for Collaborative Environment", PhD Thesis, Purdue
University, Lafayette, 1994.
[Sing 89] M. Singhal "A Heuristically Aided Algorithm for Mutual Exclusion in
Distributed Systems", IEEE Transactionson Computers 38 (5),, pp 651-662,
1989.
[Suzu 85] I. Suzuki and T. Kasami "A Distributed Mutual Exclusion Algorithm",
ACM Transactions on Computer Systems, volume 3, pp 334-349, 1985.
172
[Stef 87] M. Stefik, D.G. Bobrow, g. Foster, S. Lanning and D. Tartar, "WYSIWIS
Revised: Early Experiences with Multiuser Interfaces", ACM Transaction on
Office Information Systems, 5(2): 147-186, April 1987.
[Tarp 97 ] F. Tarpin-Bernaud, "Apports des Collecticiels à l’Ingénierie Concourante",
PRIMECA’97, La Plagne, 1997.
[Tros 00] D. Trossen, "Scalable Group Communication in Tithgly Coupled
Environmentsl", PhD Thesis, University of Technology, Aschen, Germany,
Sept 2002.
[Turl 95] T. Turletti, "The INRIA Videoconferencing System (IVS)", ConneXions- The
Interoperability Report, Vol. 8, No 10, October 1994.
[Turn 93] Kenneth J. Turner, "Using Formal Description Techniques : An Introduction to
ESTELLE, LOTOS and SDL", John Wiley, 1993.
[Vill 03] T. Villemur, L. M. Rodriguez Peralta, K. Drira, "Conception d'un service de
gestion de session orienté modèle pour des groupes collaboratifs synchrones",
CFIP’03, 2003.
[Whet 97] B. Whetten, T. Montgomery and S.Kaplan, "A High Performance Totally
Multicast Protocol", Theory and Practice in Distributed Systems, LNCS, 1997.
[Whit 00] S. Whittaker, B. Nardi and E. Bradner, "Interaction and Outeraction: Instant
Messaging in Action ", CSCW’00, 2000.
[Wu 02] X. Wu, "Use SIP and SOAP for Conference Floor Control", Internet Draft,
IETF, Feb 2002.
[Yerg 96] F. Yergeau, "UTF-8, A Transformation format of Unicode and ISO 10646",
RFC 2044, October 1996.
[Zafe 01] A. Zafer, "A Collaborative Editor", Mémoire de Master Scientifique en
Informatique, Université de Virginie, 2001.
[Zhan 93] L. Zhang, S. Deering, D. Estrin, S. Shenker, D. Zappala, "RSVP: A New
Resource ReSerVation Procol", Proc. IEEE Network, 1993.
Sites WWW
173
[Bliz 02] http://www.blizzard.com/worlds-starcraft.shtml.
[Conf 04]http://www.rvs.uni-hannover.de/products/confman/v2.0/
174