Vous êtes ici : Accueil > > Papers > > La magie du WiFi : la couche MAC Page précédente ;
Par 4N9e
Sommaire :
Cette appellation représente le fait que le protocole MAC (Medium Acces Control) est le composant principal de la couche liaisons. Le but du protocole MAC est de gérer l'usage du media WiFi : il va décider quand un équipement radio va pouvoir transmettre, et quand il est supposé recevoir des données.
C'est ce qu'on appelle le mécanisme d'accès aux canaux. Il en existe trois en liaisons radio, le TDMA, le CSMA et le "polling".
Est basé sur un principe simple : un des noeuds du réseau à la charge de réguler les autres noeuds du réseau. Appellons le "station de base". Le temps alloué par canal est divisé en time-slots de taille fixe. Ce sont des petits "credit-temps" de transmission, et chaque noeud se voit attribué ces time-slots durant lesquels il peut émettre. La station de base indique dans une trame de maintenance (la balise) si tel time-slot est de type downlink (de la base vers un noeud), ou uplink (d'un noeud vers la base). S'y ajoute un dernier type de time-slot de service par lequel un noeud exprime le besoin d'une connexion. Selon le standard, l'uplink, le downlink et le service occuppent chacun une fréquence particulière.
Comme le TDMA convient parfaitement aux communications téléphoniques numériques à cause du caractère prévisible des trames envoyées (leur taille reste fixe ainsi que leurs protocoles en terme de bits de start, de stop et de contrôle d'erreur), on va le retrouver dans les applications GSM pour l'Europe, PCS aux Etats Unis ou encore dans les téléphones sans fil numériques DECT. En revanche son manque de flexibilité nuit à son utilisation dans le cadre de réseaux de données avec des accès d'équipements inconnus du réseau (connexion d'un WiFi qui passe à proximité de la base par exemple). De plus, TDMA utilise des tailles de paquets fixes, alors qu'un réseau basé sur IP utilise des paquets de taille variable difficilement previsible de facon standard par ce genre d'équipement radio. Enfin, TDMA est assez sensible. Dans une gamme radio strictement réservée comme le GSM, tout va bien. Mais dans les gammes WiFi (libres d'accès), les interférences lui posent des problèmes.
Quant à lui est le mécanisme privilégié dans les réseaux sans fil. Il est dérivé du CSMA/CD (collision détection) utilisé en Ethernet. La différence tient au fait que dans un cable, un équipement peut transmettre pendant qu'il écoute sans qu'il y ait collision entre les deux données (entrantes et sortantes). Or dans un équipement radio, meme si celui ci peut théoriquement émettre et recevoir en meme temps, en réalité la force de sa propre émission "couvre" une éventuelle réception simultannée. D'où le principe qui va être ici d'écouter avant de transmettre (...un principe de sage que certains parmi nous devraient suivre, n'est ce pas ?) Pour ce faire, il écoute le canal. Si celui-ci est occuppé, il attend. Si celui ci est libre, il émet. C'est simple, et assez robuste en outre aux interférences, parcequ'il va les prendre pour une occupation de canal et ne pas transmettre.
En pratique, s'y ajoute un principe de contention : lorsqu'il écoute un canal, que celui-ci semble silencieux, il génère un nombre aléatoire qui lui sert de temps d'attente. A la fin de cette attente, il écoute à nouveau : si le canal est toujours libre, alors il envoie le premier paquet. Comme la contention est aléatoire pour chaque noeud du réseau, ca devient en fait un challenge : tout le monde "tire au sort" son temps d'attente, et celui qui a le plus court gagne le droit d'émettre ! Cette contention est calculée a chaque paquet transmis, par tous les noeuds. Ainsi statistiquement chaque noeud à un temps équitable de parole sur le réseau.
Enfin se situe à mi chemin entre le TDMA et le CSMA. La base garde le contrôle total du réseau, mais la taille des trames n'est plus fixe, permettant ansi des tailles variables de paquets. En fonction du trafic, la base envoie une autorisation d'émettre à un noeud quand elle considère que le tour de celui ci est venu. Dans certains cas, la base envoie une autorisation à tous les noeuds du réseau afin de voir qui répond afin de déterminer qui a besoin de transmettre.
Comme le CSMA propose un réseau ad-hoc sans besoin d'une station de base pour gérer le réseau, il est préféré dans le cadre d'un réseau WiFi.
Cela étant, le problème majeur du protocole CSMA/CA est que l'émetteur ne peut pas détecter les collisions sur le media. En outre, il existe un plus grand taux d'erreur sur une transmission radio que filaire impliquant un plus grand risque que les paquets TCP soient corrompus. Or, TCP n'apprécie pas vraiment la perte de paquets au niveau de la couche MAC.
En effet, TCP a été développé avant tout dans le cadre de réseaux filaires, réseaux où les pertes sont minimales. Si un paquet est perdu, TCP considère qu'il a été rejeté au niveau d'un routeur ou d'une passerelle du fait de la congestion. Afin de réduire cette congestion, TCP ralentit de facon drastique.
Dans le cas d'une interface radio, le taux d'erreur est plus grand puisque les collisions peuvent difficilement être repérées avec certitude (les détecter de facon statistique ne represente pas une certitude acceptable). Dans ce cas, TCP considère ceci comme un état de congestion et se dégrade, n'utilisant pas toute la bande passante disponible.
Dans un réseau sans fil, le principe de retransmission au niveau MAC résoud ce probleme en détectant et éliminant la perte de paquets due aux erreurs et autres collisions. Ce qui permet à TCP de "voir" un canal propre, et ne lui donne aucune raison de ralentir.
Chaque fois qu'un noeud reçoit un paquet, il renvoie un message court (un ACK) à l'émetteur pour indiquer qu'il a reçu correctement et sans erreur le paquet. De ce fait, si apres une transmission l'émetteur ne reçoit pas cet ACK il sait que ce paquet a été perdu et va retransmettre ce paquet. La plupart des protocoles MAC utilisent un principe de Stop-and-Go : ils n'envoient le prochain paquet de la pile que si ils ont reçu le ACK du paquet en cours (par opposition aux window variables en TCP). Le protocole est simplifié, les délais de transmission réduits et évitée aussi la désequenciation (desequencing, terme technique difficilement transcriptible en francais) des paquets, chose que TCP n'apprécie pas non plus.
Ces ACK font partie intégrante du protocole MAC, ce qui est une garantie contre le phenomène de collision. Ils sont en ce sens bien differents des ACK en TCP, qui travaillent à une couche différente et sur une trame temporelle différente, en fait. Il est évident que les paquets de broadcast et de multicast ne sont pas concernés et sont donc de ce fait plus vulnérables par contre.
Tous les protocoles wireless n'appliquent pas le même principe. D'abord certains anciens matériels WiFi ne le font pas, mais aussi les communications satellite à cause d'un RTT évidement trop long au-delà duquel le système se doit de transmettre le paquet suivant.
Le caractère instable d'une liaison radio est un réel problème comme on l'a vu auparavent et malgré l'ensemble des mesures prises pour garantir l'intégrité des paquets reçus, certaines situations de l'environnement radioélectrique peuvent rapidement mener à une probabilité d'erreurs proche de 100%. De ce fait afin d'éviter le ralentissement du réseau à cause de la retransmission des plus gros paquets contenant trop d'erreurs, ceux-ci sont fragmentés en paquets plus petits. Si les seuls fragments erronnés sont alors retransmis, ceci suppose la dupplication des en-têtes sur l'ensemble des fragments.
L'un des principaux problèmes d'un réseau radio est l'atténuation du signal dans l'espace à cause des perturbations ou plus généralement des conditions de déploiement du réseau. La conséquence est qu'un récepteur peut à un moment donné ne plus recevoir les autres systèmes du réseau, et devenir "caché" aux yeux des autres. Continuant cependant à émettre parcequ'il ne perçoit pas d'autre hôte actif en vertu du principe du Carrier Sense vu précédement, ceci participe grandement à la congestion du réseau.
Evidement, dans ce cas, comme les systèmes touchés par l'atténuation ne subissent pas cette congestion (ne recevant pas non plus l'hôte "caché"), il n'en est pas de même pour les hôtes situés à mi chemin de la liaison radio qui, eux, ne sont pas touchés par l'atténuation : ils reçoivent suffisament les hôtes isolés et subissent de plein fouet la congestion. De la sorte, cette "attaque" involontaire d'un hôte devenu sourd éjecterait certains autres hôtes actifs du reseau.
Afin d'éviter cette chute du réseau, c'est le principe de RTS/CTS qui est mis en oeuvre : l'émission de chaque paquet à destination d'un hôte est précédée d'une demande RTS (Ready To Send), et l'émetteur attend une réponse CTS (Clear To Send) de son correspondant, chacun déclarant de ce fait si il est toujours en mesure de participer au réseau ou non. D'autre part, tous les autres participants entendent le CTS, même si ils n'ont pas perçu le RTS. Le RTS et le CTS contiennent la taille de la transmission à venir. Ainsi, chacun connait la probabilité de collision au sein du réseau. Ce mécanisme est aussi appelé Virtual Carrier Sense.
Le bit-rate, vitesse de transmission théorique sur le vecteur considéré est, comme on le sait, bien différent de la vitesse de transmission réelle obtenue. Par exemple en Ethernet si on considère des vitesses telles que 10 Mb/s, 100 Mb/s ou 1Gb/s, on peut espérer 80 à 95% de cette vitesse comme utile à la transmission des données.
En revanche, comme on l'a vu, le cas des vecteurs radio est bien différent puisque sujet à de nombreuses perturabations contre lesquelles luttent différents mécanismes qui ont été décris jusqu'à présent. L'ensemble de ces mécanismes prend une part non négligeable dans la transmission avant qu'un paquet ne soit effectivement transmis et reçu.
En pratique, on peut espérer entre 50% et 70% de la vitesse théorique annoncée utilisée réellement pour le transport des données en WiFi.
Article paru sur FutureZone ;
4N9e
Page précédente | Accueil | Allez Up ! ;