Cette méthode s'appuie sur le protocole Carrier Sens Multiple Access/Collision Avoidance (CSMA/CA), combiné à l'algorithme
de back-off. CSMA/CA est proche
du Carrier Sens Multiple Access/Collision Detection (CSMA/CD) d'Ethernet (IEEE 802.3), mais, on remplace la
Collision Detection (détection de collision) par Collision Avoidance, qui signifie l'évitement de collision.
Le CSMA/CA est une technique d'accès aléatoire avec écoute de la porteuse, qui permet d'écouter le support de transmission
avant d'émettre. Le CSMA évite ainsi qu'une transmission ne soit faite que lorsque le support est libre. Cela réduit le risque
de collision, mais ne permet pas de l'éviter complètement.
Dans le protocole Ethernet, CSMA/CD permet de détecter les collisions et traite les collisions qui se produisent lorsque
plusieurs stations accèdent au support.
Cependant, avec le IEEE 802.11, la détection des collisions n'est pas possible. Pour détecter une collision, une station devrait
pouvoir écouter et transmettre en même temps. Or avec la radio, la transmission empêche la station d'écouter la même
fréquence en même temps.
Donc, le CSMA/CD a été légèrement modifié pour aboutir au CSMA/CA, qui a pour but de prévenir au maximum les collisions.
Il essaye de réduire le nombre de collisions en évitant qu'elles se produisent, sachant que la
plus grande probabilité d'avoir une collision est lors de l'accès au support.
Le CSMA/CA fait appel à différentes techniques, telles que :
Pour comprendre l'algorithme du CSMA/CA, il faut connaître ce qu'est l'inter-Frame Spacing (IFS). C'est un mécanisme d'espacement
entre deux trames. Ce sont en fait des périodes d'inactivité sur le support de transmission qui permettent de gérer l'accès
au support pour les stations ainsi que d'instaurer un système de priorités lors d'une transmission.
Il existe quatres types d'IFS :
Dans l'algorithme, le calcul du temporisateur se fait pas le biais de l'algorithme du back-off. Il est utilisé
de la même manière que dans le CSMA/CD et est décrit dans la figure (cf. FIG.
).
La seule chose qui change, c'est qu'on ne détecte pas la collision, mais, on déduit qu'il s'est produit une collision
lorsqu'on ne reçoit pas d'ACK.
Il permet de tirer un nombre aléatoire entre 0 et X, où la valeur de X croit exponentiellement par rapport
au nombre de tentatives de transmission. Le nombre tiré est multiplié par le timeslot. La station devra attendre le temps correspondant
au résultat de l'algorithme avant de refaire une nouvelle tentative de réémission sur le support, tout en vérifiant qu'il soit libre. Après un certain nombre
d'échec, on considère que l'émission a echoué.
Cette technique permet d'éviter au maximum les collisions en laissant, pour chaque station, la même probabilité d'accès au support.
Le premier schéma (cf. FIG.
) présente comment se fait l'élection de la machine qui transmettra, lorsque
plusieurs machines souhaitent transmettre dans un même temps. La station A émet, et c'est alors que les stations B et C souhaitent émettre un paquet.
Elles écoutent le support, mais il est occupé, donc elles attendent qu'il se libère. Une fois, le support libre, elles attendent le temps d'un DIFS
(temps d'attente avant d'émettre une nouvelle trame de données). Elles attendent chacune le temps calculé par leur leur exécution de l'algorithme
du Back-off.
La station C a tiré un temps moins long, donc c'est elle qui émet avant la station B.
Sur le schéma suivant (cf. FIG.
), on s'aperçoit comment s'organisent les différents temporisateurs. Le
temporisateur EIFS, n'est pas présent dans ce schéma, car il ne rentre pas en jeu dans ce cas.
Le dernier schéma (cf. FIG.
) permet de comprendre l'intérêt du SIFS. Elle permet
de favoriser l'acquittement des paquets. Le temps d'attente avant de transmettre un acquitement est moins long que celui
pour transmettre un paquet. Donc, l'envoi d'aqcuittement sera préféré par rapport à l'envoi d'un nouveau paquet.
Il existe aussi un mécanisme de réservation qui est optionnel. C'est le virtual Carrier Sense qui permet de réserver
le support entre deux stations avant tout envoi de données. Ce mécanisme permet d'éviter le problème de la station caché. Ce problème est simple.
On a trois stations : A, B et C. La stations B est à portée des deux stations mais, A et C ne peuvent pas se voir, car hors de portée, comme le montre
le schéma (cf. FIG.
)
Lorsque A émet des données pour la station B, la station C peut très bien essayer de faire la même chose. En effet, lorsqu'elle écoute le support
elle n'entend rien, puisque la station est bien hors de sa portée. Ainsi, croyant le support libre, elle va émettre et brouiller la récéption de la station B.
C'est pour éviter ce problème, que l'algorithme du VCS, entre en jeu. Il est simple. Lorsque A veut envoyer des données vers B, elle émet une requête Request to Send (RTS)
qui sera reçue par l'ensemble des stations qui seront à sa portée.
Cette requête contient le source, le destinataire et la durée estimée de la transaction. Donc, le destinataure est la station B. Dès que B reçoit cette requête, elle émet un Clear to Send (CTS)
si elle est prête et que le support est libre. Comme le montre le schéma (cf. FIG.
), la station
C ne reçoit que le CTS. Cependant, le CTS porte les mêmes informations que le RTS. La station C ne transmettra alors pas pendant la période de temps
spécifié dans le CTS.
Ce mécanisme permet donc de réserver le support auprès de toutes les stations à portée des deux stations voulant communiquer.
Dans le schéma (cf. FIG.
), on voit par quel mécanisme se met en place le VCS. Cela permet ainsi
à la source d'émettre son paquet en évitant les collisions. Toutes les stations à portée des deux stations qui communiquent, attendent que la source ait emis
son paquet et que le destinataire ait acquitté le paquet.
2004-08-25