4.2.2.3 Initialisation des variables
Initialisation : des variables
Demandeuri : Variable
booléenne.
Jetoni : Variable booléenne.
Suivanti : Variable qui peut prendre
{1,2,.. .,N} U NIL
Début
Demandeuri +- Faux; Jetoni +-
Faux;
Suivanti +- NIL;
Modification dans la table de routage AODVi
(0,0);
Si Je suis un père Alors Jetoni
+- Vrai;
Modification dans la table de routage AODVi
(1,1);
Finsi
Fin
4.2.2.4 Les procédures de l'algorithme
Procédure N°1 : Demander la Section
Critique
1 Début
Demandeuri +- Vrai;
Si
(AODVi_[i]_Jeton_libre
= 0) Alors
Pere +- Chercher le père
adéquat(AODVi); Envoyer Requête (Jeton, i) à
Pere;
Finsi
Modification dans la table de routage AODVi
(0,1); Attendre (Jeton =
Vrai);
< Entrer en Section Critique>
2
3
4
5
6
7
8
9
10 Fin
Quand un noeud qui ne possède pas de jeton
désire entrer en SC, il devient demandeur et il cherche le père
adéquat afin de lui envoyer une requête et attend la
réception du jeton pour entrer en SC.
Procédure N°2 : Réception de Accord
(Jeton)
1 Début
2 Jetoni +- Vrai;
3 Fin
Lorsqu'un site reçoit un message de type Accord,
il va modifier sa variable booléenne Jeton à Vrai.
Procédure N°3 : Réception de
Requête (Jeton, j)
1 Début
Si
(AODVi_[i]_Jeton_libre
= 1) Ou
(AODVi_[i]_Jeton_present
= 1) Alors
Si Demandeuri = Vrai
Alors
Suivanti +-- j;
Sinon
Jetoni +-- Faux;
Envoyer Accord (Jeton) à j;
Finsi
Modification dans la table de routage AODVi
(0,0);
Sinon
Envoyer Rejet (Jeton) à j;
Finsi
13 Fin
Si un site reçoit un message de type
Requête, il va consulter sa table de routage, s'il est en SC il va mettre
ce site dans la file d'attente, sinon il va envoyer le jeton vers le site
demandeur. Dans le cas oü le site ne détient pas de jeton, il va
lui envoyer un message de type Rejet lui indiquant qu'il ne possède
aucun jeton.
Procédure N°4 : Réception de Rejet
(Jeton)
1 Début
Pere +-- Chercher le père
adéquat(AODVi);
Envoyer Requête (Jeton, i) à
Pere;
4 Fin
Lorsqu'un demandeur reçoit un message de type
Rejet, il va rechercher un autre père adéquat en consultant
toujours sa table de routage.
Procédure N°5 : Libérer la Section
Critique
1 Début
Demandeuri +-- Faux;
Si Suivanti =6 NIL
Alors
Envoyer Accord (Jeton) à Suivanti;
Jetoni +-- Faux;
Suivanti +-- NIL;
2
3
2
3
4
5
6
7
8
9
10
11
12
Sinon
Modification dans la table de routage AODVi
(1,1);
Finsi
2
3
4
5
6
7
8
9
10 Fin
Si un site veut libérer la SC, il va consulter
s'il possède déjà un site en attente dans sa file, afin de
lui envoyer un message de type Accord pour lui permettre d'entrer en
SC.
Procédure N°6 : Modification dans la table de
routage AODVi (B,C :entiers)
1 Début
AODVi_[i]_Jeton_libre ?- B;
AODVi_[i]_Jeton_present ?- C;
4 Fin
La modification dans la table de routage porte sur deux
variables (le nombre de jetons libre et le nombre de jetons présent)
selon les valeurs de B et C.
Procédure N°7 : Chercher le père
adéquat(AODVi)
1 Début
2
3
X ?- 8;
Pour Q=1 à
nombre de noeuds faire
Si
AODVi_[Q]_Jeton_libre
= 1 Alors
Min ?-
AODVi_[Q]_Distance;
Si Min < X Alors
Pere ?- Q;
X ?- Min;
Finsi Finsi
Finpour
Si X = 8 Alors
Pour Q=1 à
nombre de noeuds faire
Si
AODVi_[Q]_Jeton_present
= 1 Alors
Min ?-
AODVi_[Q]_Distance;
Si Min < X
Alors Pere ?- Q;
X ?- Min; Finsi
Finsi
Finpour
Finsi
Retourner(Pere);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Fin
Cette procédure représente la
stratégie qui nous permet de trouver le père adéquat dans
la table de routage avec le minimum de sauts.
|