# CSMA

CSMA est le sigle de Carrier Sense Multiple Access (« Accès multiple avec surveillance de porteuse » ou « Accès multiple avec écoute de la porteuse »). Il s'agit d'un ensemble de protocoles d'accès à un média. Ceux-ci vérifient que le support est disponible avant de commencer l'envoi d'une trame. Ils permettent également de détecter ou bien éviter les collisions de messages dans les transmissions (CSMA/CA, Carrier Sense Multiple Access with Collision Avoidance, « Accès multiple avec surveillance de porteuse et évitement de collisions »).

## Généralités

Pour éviter des erreurs lors de la transmission de données dans les réseaux partagés, il est nécessaire d'éviter les collisions entre plusieurs émetteurs. Cependant, selon le média et d'autres paramètres (débit, distance, codage…), il n'est pas possible d'utiliser une seule et unique méthode.
Il existe trois méthodes principales employées dans les réseaux :
* CSMA/CD : Collision Detection
* CSMA/CA : Collision Avoidance
* CSMA/CR : Collision Resolution (aussi appelé CSMA/BA pour "Bitwise Arbitration" ou CSMA/AMP pour "Arbitration on Message Priority")
Avant de définir les techniques, il est utile pour une bonne compréhension de faire une analogie avec un groupe de personnes souhaitant discuter entre elles :
CSMA/CD correspond à un groupe dans lequel chaque personne peut prendre la parole quand elle le souhaite (lors d'un silence). Si deux personnes parlent en même temps, elles s'arrêtent et attendent un petit temps (aléatoire pour chaque personne).
CSMA/CA ressemble plus à un groupe d'élèves dans une classe : lorsqu'un élève veut parler, il doit lever la main et l'enseignant va l'autoriser à parler pour une durée définie. Si un élève au premier rang lève la main, il ne peut pas voir celui qui a levé également la main au fond, d'où l'importance du rôle de l'enseignant.
CSMA/CR sera plus difficile à imaginer : dans un groupe de personnes, si deux personnes parlent en même temps, elles continuent de le faire tant qu'elles disent strictement la même chose. Dès que les paroles divergent, un arbitrage logique est fait et l'une des personnes s'arrête, laissant l'autre terminer sa phrase.

## CSMA modes d'accès
### CSMA p-persistant

Si une station souhaite émettre et que le canal est libre, elle émet avec une probabilité p. Sinon, elle attend un intervalle de temps avant de retenter avec la même probabilité p. En cas de collision, la station attend un temps aléatoire avant de recommencer la procédure.

### CSMA 1-persistant

CSMA 1-persistant est un cas particulier de CSMA p-persistant où p = 1. Si une station souhaite envoyer des données et que le support de transmission est libre, elle commence l'émission. Si le support est occupé, elle commence l'envoi dès que celui-ci se libère. En cas de collision, la station attend un temps aléatoire avant de recommencer l'émission. C'est la méthode employée avec CSMA/CD sur les systèmes Ethernet.

### CSMA o-persistant

Chaque station se voit affecter un ordre de transmission par une station maître. Chaque station transmet ses informations dans l'intervalle de temps qui lui est affecté. Cette méthode est utilisée dans les réseaux CobraNet, LonWorks et Controller Area Network.

### CSMA non persistant

En mode non persistant, chaque station vérifie régulièrement que le média est disponible. Si ce n'est pas le cas, elle attend un temps aléatoire pour revérifier si le média est enfin libre. Enfin, lorsque le média n'est pas occupé, la station transmet ses informations immédiatement. Cette approche réduit les collisions mais le temps d'attente initial peut être très long.

## CSMA/CD (Collision Detection)

La méthode CSMA/CD (Carrier Sense Multiple Access / Collision Detection) est dérivée d'un système de transmission radio appelé Aloha. Son principe est de laisser chacun libre de gérer ses émissions en fonction de ses besoins et de la disponibilité du média.
En l'absence d'information à transmettre, la station écoute (ou reçoit) les paquets qui circulent sur le média dans un sens ou dans l'autre. Quand la station a besoin d'émettre un ou plusieurs paquets, elle vérifie qu'aucune trame n'est émise sur le média. Si c'est le cas elle commence à émettre son paquet. Si ce n'est pas le cas, elle attend la fin de la transmission en cours.
Chaque machine ayant à tout instant la possibilité de commencer une transmission de manière autonome, la méthode d'accès est distribuée : elle est dite à accès multiple (Multiple Access : MA). La machine observe le média en cherchant à détecter une porteuse (Carrier Sense : CS). Si aucune trame n'est transmise, elle ne trouve pas de porteuse.
Elle envoie ses paquets sur le support physique et reste à l'écoute du résultat de son émission pendant quelque temps, pour vérifier qu'aucune autre machine n'a suivi le même comportement qu'elle au même instant (collision).
La méthode d'accès étant à détection de collision (Collision Detect : CD), lors de son émission une machine peut déceler un problème de contention, et s'arrêter avec l'intention de renvoyer son paquet ultérieurement quand elle aura de nouveau la parole. De façon à minimiser le risque de rencontrer une deuxième collision avec la même machine, chacune attend pendant un délai aléatoire avant de tenter une nouvelle émission.
Cependant, de manière à ne pas saturer un réseau qui s'avérerait déjà très chargé, la machine n'essaiera pas indéfiniment de retransmettre un paquet si à chaque tentative elle se trouve en conflit avec une autre ; après un certain nombre d'essais infructueux (le nombre maximum de reprises est de 16) le paquet est éliminé. On évite ainsi l'effondrement du réseau. Les couches supérieures sont averties que la transmission du message a échoué.

## CSMA/CA (Collision Avoidance)

La méthode CSMA/CA s'utilise dans les réseaux sans-fil. En effet, contrairement aux réseaux filaires, deux stations peuvent émettre vers une troisième sans se détecter (la première étant hors de portée de la seconde).
Pour diminuer le risque de collisions, une procédure distribuée basée sur l'écoute du canal et l'utilisation de temps d'attentes aléatoires avant la transmission de données est mise en place.

## CSMA/CR (Collision Resolution)

Cette méthode est légèrement plus évoluée que la méthode CSMA/CD : si plusieurs stations transmettent un message, elles appliquent un ET logique entre le signal reçu et le signal émis. Dans le cas d'une inégalité, la station s'arrête de transmettre. Comme le 0 est une valeur dominante, elle écrase donc le 1 (état récessif) : cela signifie que la communication de l'une des stations n'est pas modifiée et permet ainsi de terminer cette communication sans délai d'attente ou de retransmission.
Un réseau utilisant cette méthode peut alors être déterministe. C'est la méthode employée dans les réseaux CAN.

## Protocoles utilisant CSMA

* Le réseau sans fil ALOHAnet utilise un CSMA pur
* Certaines versions anciennes d'Ethernet fonctionnent avec le CSMA/CD
* 802.11 DCF (Wi-Fi) fonctionne avec CSMA/CA
* LocalTalk utilise CSMA/CA
* IEEE 802.11 (réseau local sans fil) utilise CSMA/CA
* CAN utilise CSMA/CR
* IEEE 802.15 (réseaux PAN sans fil) utilise CSMA/CA