Le Distributed Coordination Function (DCF)

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 :

Short Inter-Frame Spacing (SIFS) :
est le plus court des IFS. Il est utilisé pour séparer les différentes trames transmises au sein d'un même dialogue comme par exemple, entre des données et leurs aqcuittements ou entre différents fragments d'une même trame ou pour tout autre transmission relative à un même dialogue (question-réponse).

DCF Inter-Frame Spacing (DIFS) :
est le temps que doivent attendre les autres stations avant d'émettre un paquet en mode DCF. La valeur du DIFS est égale à celle d'un SIFS augmentée de deux timeslots2.2.

PCF Inter-Frame Spacing (PIFS) :
est le temps que doit attendre les autres stations avant d'émettre un paquet en mode PCF. La valeur est inférieur au DIFS, pour permettre de favoriser ce mode. Le mode PCF est expliqué dans la partie suivante.

Extended Inter-Frame Spacing (EIFS) :
est le plus long des IFS. Lorsque une station reçoit une trame erronée, elle doit attendre pendant un EIFS l'acquittement de cette trame.

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.

Figure: L'algorithme du Carrier Sens Multiple Access/Collision Avoidance (CSMA/CA)
\includegraphics[width=15cm,angle=0]{img/CSMACA.eps}

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.

Figure: Le système de retransmission CSMA
\includegraphics[width=15cm,angle=0]{img/CSMA.eps}

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.

Figure: Les différentes intertrames
\includegraphics[width=15cm,angle=0]{img/IFS.eps}

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.

Figure: Transmission d'un paquet suivi de son accusé de réception
\includegraphics[width=13cm,angle=0]{img/IFS2.eps}

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.[*])

Figure: Le problème de la station cachée
\includegraphics[width=12cm,angle=0]{img/stationCache.eps}

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.

Figure: Le mécanisme du virtual Carrier Sense (VCS)
\includegraphics[width=12cm,angle=0]{img/stationCacheVCS.eps}

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.

Figure: Le mécanisme VCS et les intertrames
\includegraphics[width=15cm,angle=0]{img/VCS.eps}

2004-08-25