• Aucun résultat trouvé

Définition 2 (lien symétrique) Pour toute paire de nœudsietj, on note{i, j}un lien symétrique entreietj, c’est-à-dire l’ensemble des liens asymétriques{(i, j),(j, i)}.

Par extension, on noteraE2la fonction qui à tout instanttassocie l’ensemble des liens symétriques existant à cet instant.

Définition 3 (voisinage symétrique) Pour tout nœudidu réseau et tout instantt, soit Ni(t)l’ensemble des voisins symétriques directs dei, soit

∀t∈R+, ∀i∈V, Ni(t) =

j:{i, j} ∈E2(t) (3.1)

Nous pouvons maintenant définir les compteurs par lien (voir FIG. 3.1).

Définition 4 (entrée/sortie par lien) Pour tout lien(i, j) et pour tout instantt, soit Iij(t)(respectivementOij(t)) le nombre total d’octets ayant traversé le lien(i, j)dans des paquets non destinés àj(respectivement non originaires dei).

Formellement, le principe de conservation de flot appliqué à la quantité de données traver-sant les liens du graphe topologique s’exprime de la façon suivante.

∀t∈R+, ∀i∈V, X

j∈V

(Iji(t)−Oij(t)) = 0 (3.2)

En se plaçant dans l’hypothèse où les quantitésIij(t)etOij(t)sont connues de tous les nœuds pour tout lien(i, j)et à tout instantt, alors une perte de paquet, aussi infime soit elle, implique que le principe de conservation de flot dans le réseau n’est pas vérifié. Nous allons

voir par la suite comment on peut déduire de cette idée une méthode reposant sur l’extension du protocole de routage existant dans le but de détecter les pertes de trafic.

3.1.2 Compteurs locaux aux nœuds

Dans la réalité, les quantités en jeu dans (3.2) ne sont pas directement connues puisqu’il n’existe pas un oracle indépendant des nœuds qui comptabilise le trafic sur tous les liens. Le seul moyen technique à notre disposition est la possibilité pour les nœuds de comptabiliser ce trafic eux-mêmes. Alors pour chacune des quantités introduite au paragraphe précédent, on ne dispose que de ce qu’on appellera ses deuxvuespar chacune des extrémités du lien.

Définition 5 (vue d’une entrée/sortie par lien) Pour tout lien(i, j)et pour tout ins-tantt, soientIiji(t)etOiji (t)(respectivementIijj(t)etOijj(t)) les vues dei (respective-ment dej) des quantitésIij(t)etOij(t).

On doit donc requérir de chacun des nœuds du réseau de mettre en place des compteurs de paquets, c’est-à-dire des variables en mémoire qui sont incrémentées du nombre d’octets contenus dans chaque paquet de données qui passe par un lien. Supposons pour le moment, toute considération pratique mise de côté, que ces variables sont maintenues dans une zone de mémoire partagée par tous les nœuds. Ainsi tout compteur est disponible pour chaque nœud.

On voudrait que tous les nœuds puissent vérifier la conservation de flot en chacun des autres nœuds à tout moment. Se pose alors la question de savoir comment reformuler (3.2) en termes de vues et non plus en termes deIji(t)etOij(t)directement. Pour chaque occurrence deIji(t) dans la formule, on peut choisir d’utiliserIjii (t)ouIjij(t), de même pourOij(t)et ses vues Oiji (t)etOijj(t). Les trois différentes formules que l’on obtient ne sont pas équivalentes et aucune d’elle n’est vraiment utilisable seule directement dans la pratique.

Considérons toutefois la version suivante :

∀t∈R+, ∀i∈V, X

j∈V

Ijii (t)−Oiji (t)

= 0 . (3.3)

On remarque qu’elle n’implique que les vues du nœudi, ce qui présente des avantages et des inconvénients, comme nous allons le voir tout de suite.

Cohérence par nœud

On appelleracohérence par nœud, la vérification de (3.3) à partir des compteurs d’un nœud.

Il est clair que si la propriété de conservation de flot ainsi formulée n’est pas vérifiée, alors soit

le nœud originaire des compteurs a effectivement perdu du trafic, soit il a commis une erreur de maintenance de ses compteurs. Quoi qu’il en soit, on appellera la quantité de non-conservation de flot lebilan par nœud, défini de la façon suivante.

Définition 6 (bilan par nœud) Pour tout nœud iet pour tout instant t, soit Bi(t)le bilan par nœud deidéfini par la relation suivante :

∀t∈R+, ∀i∈V, Bi(t) = X

j∈Ni(t)

Ijii (t)−Oiji (t)

(3.4)

Un avantage de la formulation de la propriété de conservation de flot comme dans (3.3) est certainement que le bilan par nœud dei peut être calculé en ne se basant que sur les variables maintenues pari. En effet, lorsqu’au lieu de variables en mémoire partagée nous allons considérer que ces valeurs sont diffusées dans les messages de contrôle, il suffira de se baser sur les messages en provenance deipour effectuer ce genre de calcul. En revanche, l’inconvénient principal est que cette formulation n’assure pas quei a bien maintenu ses compteurs au cours du temps. Autrement dit,ipeut toujours mentir en prétendant n’avoir perdu aucun trafic et alors son bilan par nœud sera nul.

De façon évidente, une vérification supplémentaire doit être effectuée, afin de vérifier la validité des valeurs des compteurs d’un nœud.

Cohérence par lien

Les deux vues deIij(t)etOij(t)sont deux versions d’une même quantité qui devraient en principe être égales. En disposant à la fois des compteurs deiet dejpour un lien(i, j), on peut vérifier que ceux-ci sont égaux pour tout instantt. On appellera donccohérence par lien la vérification de l’égalité des compteurs des deux extrémités d’un lien.

Définition 7 (bilans par lien) Soient BIiij(t) et BOiij(t) (respectivement BIjij(t) et BOjij(t)) les bilans par lien du point de vue de i(respectivement de j) définis par les relations suivantes :

∀t∈R+, ∀i∈V, ∀j∈Ni(t)













BIiij(t) = Iiji (t)− Iijj(t) BOiij(t) =Oiij(t)−Ojij(t) BIjij(t) = Iijj(t)− Iiji (t) BOjij(t) =Ojij(t)−Oiij(t)

(3.5)

L’hypothèse selon laquelle les compteurs des nœuds sont maintenus en mémoire partagée accessible à tous en permanence n’est pas du tout réaliste. Néanmoins, on peut supposer que les compteurs sont diffusés régulièrement dans les messages de contrôle du protocole de routage existant. On peut aussi supposer qu’il existe une borne supérieurePfinie et connue par tous les nœuds de l’intervalle de temps séparant deux diffusions successives d’un message de contrôle par un nœud.

Chacun des messages successifs émis contient un numéro de séquence qui permet de le distinguer des autres. Chaque nœud maintient donc un compteur de séquence qui est incrémenté juste avant l’envoi d’un message de contrôle et dont la valeur courante est utilisée comme numéro de séquence dans ce dernier. À tout moment, le compteur de séquence contient la valeur du numéro de séquence du dernier message de contrôle émis.

Définition 8 (compteur de séquence) Pour tout instantt, soitSi(t)la valeur du comp-teur de séquence du nœudi. Pour tout numéro de séquencen, soitTi(n)l’instant de l’envoi paridu message de contrôle dont le numéro de séquence estn.

Définition 9 (intervalle maximum d’émission) SoitPl’intervalle de temps maximum entre deux émissions successives d’un message de contrôle par un nœud.

∀i∈V, ∀n∈N, Ti(n+ 1)−Ti(n)≤P (3.6)

D’après la définition 8 et la façon dont le compteur de séquence est incrémenté, on a la propriété suivante :

∀t∈R+, ∀i∈V,

(Ti(Si(t))≤t <Ti(Si(t) + 1)

Si(Ti(Si(t))) =Si(t) . (3.7)

Définition 10 (ensemble de voisins) Pour tout nœudiet tout numéro de séquencen, soit Ni(n)l’ensemble des nœuds ayant été considérés comme voisins deientre les émissions de messages numérosn−1etn.

∀i∈V, ∀n∈N, Ni(n) = [

t∈[Ti(n−1);Ti(n)[

Ni(t) (3.8)

On supposera désormais que les valeurs des compteurs sont diffusées dans les messages de contrôle uniquement aux voisins directs de leur émetteur. Ainsi, les voisins disposent des compteurs pour les instants auxquels les messages sont émis. On peut réécrire l’expression du bilan par nœud en fonction non pas de l’instantt, mais du numéro de séquencendu message :

∀i∈V, ∀n∈N, Bi(n) = X

j∈Ni(n)

Ijii (Ti(n))−Oiji (Ti(n))

(3.9)

Les voisins d’un nœud ne sont donc en mesure de calculer son bilan par nœud qu’à chaque instant de réception de ses compteurs.

Mobilité et valeurs différentielles

Dans un réseau à topologie statique, les voisins d’un nœud sont en nombre fini et ne changent pas au cours du temps. Dans ce cas de figure, la publication de compteurs pour tous les voisins depuis le début du fonctionnement du nœud va de soi et ne pose pas de problème particulier tant que le nombre de ces voisins est faible.

En revanche, dans un réseau mobile, dont la topologie est par définition dynamique, les voisins d’un nœud changent au cours du temps. Potentiellement, le nombre total de voisins différents qu’un nœud particulier peut avoir eu au cours de son fonctionnement n’a de limite que le nombre total des autres nœuds. Il n’est donc pas envisageable de faire publier les compteurs de tous les voisins passés et présents.

Si on ne publie les valeurs des compteurs que pour les voisins présents au moment de l’émission du message de contrôle, alors on doit s’attendre à ce que le bilan par nœud ne soit pas nul dans certains cas de figure, bien que le principe de conservation de flot n’ait pas été violé.

La figure 3.2 présente un exemple de changement de voisinage qui peut poser problème. Ici, le nœudlarrive dans le voisinage deiaprès quejen soit parti :ln’a aucun moyen de savoir que jétait voisin deipar le passé si ce dernier ne publie plus de compteurs concernant le lien{i, j}.

Supposons qu’un certain trafic de données ait transité dekversjen passant pari, autrement dit

i k

j

j l

(a)

i k

j l

l

(b)

FIG. 3.2: Changement de voisinage : (a)ln’est pas encore voisin deialors quejs’éloigne ;