• Aucun résultat trouvé

Les contraintes de simulation concernent les conditions à respecter pour que les modèles IP

puissent être correctement exécutés par les simulateurs. Elles sont à prendre à considération au

moment de la conception du multi-modèle, pour définir les différents réseaux (qui pourront en

réalité représenter des fragments d’un plus grand réseau, dans le cadre des couplages spatiaux)

qui seront à modéliser.

5.4.1 Cas des demi-liens

Une façon de couper un réseau en deux, qui peut sembler intuitive de prime abord, est de

couper au milieu d’un lien. Dans ce cas, en considérant un lien de longueur L à modéliser,

un premier modèle représentera un morceau de lien de longueur L/2, et un second modèle

représentera l’autre morceau, de même longueur. Ces deux (demi-)liens seront reliés en série,

via le multi-modèle.

La modélisation d’un lien consiste principalement à être capable de déterminer le temps qui

serait nécessaire pour qu’un message (i.e. une certaine quantité de bits) passe d’une extrémité

à l’autre. Ce temps est qualifié de latence, et sa formule est donnée dans l’Équation5.1.

latence

message

= (taille

message

/débit

lien

) + (longueur

lien

/vitesse_propagation

lien

) (5.1)

La première partie de l’équation correspond au temps de transmission, tandis que la seconde

partie correspond au temps de propagation. La longueur du lien n’intervient que dans le calcul

du temps de propagation. Or, celui-ci est souvent considéré comme négligeable, tant son impact

est faible en comparaison avec le temps de transmission (exception faite de cas particuliers

comme les connexions satellites). Le temps infime qu’il représente n’est souvent pas non plus

représentable par les simulateurs IP. Par conséquent, les modèles de lien n’incluent généralement

pas la longueur des liens dans leurs propriétés. Ainsi, par exemple, le code utilisé pour modéliser

un lien pair-à-pair dans NS-3 estbits/m_bps, ce qui correspond à un simple calcul de temps

de transmission. La notion de longueur de lien n’étant pas utilisée dans le modèle, il n’est donc

pas possible de représenter un demi-lien.

Il n’est pas non plus possible de considérer qu’un lien de débitD pourrait être équivalent à

deux (demi-)liens de débitD/2 mis bout à bout.

Un lien doit donc être considéré comme un élément atomique et ne peut être représenté que

dans son intégralité, dans un seul modèle.

5.4.2 Réseaux complets

Les simulateurs IP ne permettent généralement pas de représenter des morceaux isolés de

réseau, comme c’est nécessaire dans le cas de la conception de modèles dans le cadre d’un

couplage spatial. Ainsi, par exemple, représenter un lien qui n’est relié à aucun nœud, comme

dans le cas de la Figure5.5(premier exemple de couplage spatial, page68), n’est généralement

pas possible. L’exemple de la Figure 5.6 (premier exemple de modèle à la fois spatialement

et structurellement couplé, page 68), avec d’un côté une carte réseau qui n’est connectée à

aucun lien et de l’autre côté un lien qui n’est attaché qu’à une seule carte réseau, n’est pas

non plus possible. De la même façon, le concept de demi-couche, ou de demi-nœud, comme

proposé dans la Figure5.9(second cas de découpe dans les contraintes de modélisation, page72),

n’est pas simulable en l’état. Des contraintes de simulation s’ajoutent alors aux contraintes de

modélisation.

Nous partons du postulat que chaque modèle doit obligatoirement représenter un segment

de réseau complet et cohérent, pour que le simulateur puisse l’exécuter. Pour pouvoir adapter

les modèles théoriques des Figures 5.5, 5.6 et 5.9 à cette nouvelle contrainte, il est nécessaire

d’adapter les modèles, de façon à « compléter » les fragments de réseau. Les ajouts minimum à

effectuer sont visibles dans la Figure5.10. On constate qu’il a été nécessaire d’ajouter deux types

d’éléments : des nœuds supplémentaires (dans les trois exemples), et des liens supplémentaires

(Figure5.10b). La modification de la Figure5.10c consiste à remplacer un concept qui n’est pas

réalisable (un demi-nœud), par le concept le plus proche qui est susceptible d’être disponible

(un nœud complet).

(a) Ajout de nœuds supplémentaires, dans l’un des modèles utilisés par l’exemple de la Figure5.5page68.

(b) Ajout de nœuds et d’un lien, dans les modèles IP utilisés par l’exemple de la Figure5.6page68.

(c) Utilisation d’un nœud complet, dans le premier modèle utilisé par l’exemple de la Figure5.9page72

(le second modèle devant être complété de la même façon).

Figure 5.10 – Adaptation de modèles représentant des morceaux de réseau IP, de façon à ce

qu’ils représentent chacun un réseau IP complet et cohérent, et donc simulable. Les éléments

ajoutés sont dessinés en pointillés.

Les éléments en pointillés de la Figure5.10sont autant d’éléments, qui n’existent pas dans le

système, et qui n’ont été ajoutés que pour respecter les contraintes de simulation. La conséquence

est que, dans le multi-modèle, les nœuds du système par exemple, sont représentés deux fois.

Dans la Figure5.10a, les deux nœuds qu’on ajoute correspondent aux nœuds A et B de l’exemple

de la Figure5.5(page68), qui continuent pourtant d’être représentés individuellement dans les

modèles séparés. Il convient donc de modéliser ces appendices aux réseaux de façon particulière,

de façon à ce qu’ils soient « transparents » vis-à-vis des résultats de simulation.

Ainsi, les appendices ne doivent :

1. avoir aucun impact sur les trames ou paquets qui arriveraient jusqu’à eux (aucune

mo-dification des données, quelle que soit la couche) ;

2. être à l’origine d’aucun événement de simulation, qui ferait avancer l’horloge du

simula-teur (consommation de temps de simulation) ;

3. avoir aucun rôle particulier dans le réseau simulé (routage, proxy, etc), puisqu’ils ne sont

pas censés exister.

Par commodité, on qualifiera ces appendices de « faux ». Ainsi, on ajoutera de faux nœuds

et de faux liens, de façon à compléter les réseaux.

5.4.3 Lookahead nul

La notion de lookahead est été abordée dans la Section5.4.3. Nous avons également vu dans

la Section 2.5.5que certains algorithmes de synchronisation du temps, comme celui utilisé par

MECSYCO, n’étaient pas capables d’accepter des modèles configurés avec un lookahead nul (i.e.

à zéro).

Il est possible d’éviter les modèles à configurer avec un lookahead nul, en anticipant cet

aspect dès leur conception. Le premier modèle, dans sa version corrigée, de l’exemple de la

Figure5.10b (en haut à droite), pourrait par exemple poser un problème. En effet, sur les trois

principaux éléments composants le modèle (le nœud A, le faux lien et le faux nœud), deux

n’auront aucun impact sur le temps de simulation (les appendices), par définition. Le calcul du

lookahead ne dépendra donc que de l’application simulée qui est installée sur le nœud A. S’il

s’agit, par exemple, d’un serveur ICMP qui renvoie immédiatement un paquet lorsqu’il en reçoit

un, l’action est censée être tellement rapide qu’il est fort probable que le modèle de l’application

ne consomme aucun temps de simulation. Le lookahead du modèle complet sera donc nul.

La seule solution pour éviter ce type de cas de figure, c’est de prendre en compte cette

contrainte dès la conception des modèles : lorsqu’on sépare une topologie de réseau en plusieurs

modèles dans le but de faire des couplages spatiaux entre eux, il faut prévoir d’avoir au moins

un élément dans chaque modèle qui consomme à coup sûr du temps de simulation (traitement

applicatif ou traversée d’un lien), entre l’arrivée d’une trame ou d’un paquet externe et la

transmission de la réponse.

Dans le cadre des couplages structurels, cette contrainte peut être encore plus forte. Dans

l’exemple de la Figure5.1, avec des couplages structurels entre chaque couche, certains modèles

se contenteront d’encapsuler ou de désencapsuler les données reçues, avant de les transmettre au

modèle de la couche suivante. Ces opérations sont tellement rapides dans le système, qu’elles ne

peuvent pas représenter de temps de simulation dans les modèles. Ainsi, un modèle de couche

de la suite Internet qui se contente d’encapsuler ou de désencapsuler, doit être configuré avec

un lookahead nul. De la même façon, c’est au modélisateur de faire en sorte que ses modèles ne

soient pas dans cette situation, quitte à devoir en rassembler quelques-uns, pour s’assurer qu’il

y aura toujours au moins une action qui consommera du temps de simulation.