Rapport TP2 WiFi CSMA/CA & Packet Racer

Rapport TP2 WiFi CSMA/CA
Dans un réseau local Ethernet classique, la méthode d'accès utilisée par les machines est le CSMA/CD (Carrier Sense Multiple Access with Collision Detection), pour lequel chaque machine est libre de communiquer à n'importe quel moment. Chaque machine envoyant un message vérifie qu'aucun autre message n'a été envoyé en même temps par une autre machine. Si c'est le cas, les deux machines patientent pendant un temps aléatoire avant de recommencer à émettre.
Dans un environnement sans fil ce procédé n'est pas possible dans la mesure où deux stations communiquant avec un récepteur ne s'entendent pas forcément mutuellement en raison de leur rayon de portée. Ainsi la norme 802.11 propose un protocole similaire appelé CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance).
Le protocole CSMA/CA utilise un mécanisme d'esquive de collision basé sur un principe d'accusé de réception réciproque entre l'émetteur et le récepteur.
Ce TP traite de l’étude précise de cette méthode. Pour cela, nous utilisons deux stations en mode ad-hoc, sachant que l’une des stations possède une interface Wifi virtuelle en mode monitor afin de sniffer le trafic.
Pour commencer, nous allons créer une interface virtuelle mon0 en mode monitor pour snifer le trafic.
Pour ce faire, il faut charger les modules de la carte réseau (Ralink 2561 dans ce cas) à l’aide de la commande modprobe rt61pci. Nous pouvons alors vérifier la présence de
l’interface wlan0 qui est active. La création l’interface virtuelle mon0 s’opère avec la commande airmon-ng start wlan0. On peut alors remarquer que l’interface wlan0 possède une interface virtuelle qui est activée.
On lance une capture wireshark sur l’interface mon0.
Nous captons toutes les trames provenant des réseaux WiFi avoisinant.
Maintenant nous allons positionner l’interface principale wlan0 en mode ad-hoc et monter l’interface.

Avant d'effectuer cette manipulation on fait tomber l'interface Ethernet par câble et on débranche le câble.
# ifconfig eth0 down
On configure la carte pour se connecter en ad-hoc.
# wlanconfig wlan0 destroy # wlanconfig wlan0 create wlandev wifi0 wlanmode adhoc
On détruit la configuration actuelle pour se mettre en mode ad-hoc. On lui spécifie un nom de réseau et un channel (fréquence à utiliser).
# iwconfig wlan0 essid “alexisaurele” # iwconfig wlan0 channel 1
On vérifie ensuite que l'on utilise bien ce nom de réseau et la fréquence propre au channel que l'on a choisi.
# iwconfig lo no wireless extensions. eth0 no wireless extensions. eth1 no wireless extensions. wifi0 no wireless extensions. wlan0 IEEE 802.11g ESSID:"alexisaurele" Mode:Ad-Hoc Frequency:2.442 GHz Bit Rate:0 kb/s ![]() RTS thr:off Fragment thr:off Encryption key:off Link Quality=0/94 Signal level=-93 dBm Noise level=-93 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 # iwlist wlan0 freq wlan0 22 channels in total; available frequencies : Channel 01 : 2.412 GHz Channel 02 : 2.417 GHz Channel 03 : 2.422 GHz Channel 04 : 2.427 GHz Channel 05 : 2.432 GHz ![]() Channel 06 : 2.437 GHz Channel 07 : 2.442 GHz Channel 08 : 2.447 GHz Channel 09 : 2.452 GHz Channel 10 : 2.457 GHz Channel 11 : 2.462 GHz Current Frequency=2.442 GHz (Channel 1) |
Nous analysons ensuite les trames (beacon frame) envoyées par cette station.
Les beacon frames servent à annoncer la présence d’une station émettrice dans le réseau. Un routeur écoute les trames balise pour reconnaître les nouveaux périphériques sans fils afin de s’associer et d’obtenir une adresse IP par exemple. On peut remarquer cela en regardant l’adresse destination qui est une adresse de diffusion (broadcast).
Voici la liste des informations contenues dans les beacon frames :
FC (Frame Control, en français contrôle de trame) : ce champ de deux octets est constitué des informations suivantes :

Ø Version de protocole : ce champ de 2 bits permettra de prendre en compte les évolutions de version du standard 802.11. La valeur est égale à zéro pour la première version.
Ø Type et Sous-type : ces champs, respectivement de 2 et 4 bits, définissent le type et le sous-type des trames. Le type gestion correspond aux demandes d'association ainsi qu'aux messages d'annonce du point d'accès. Le type contrôle est utilisé pour l'accès au média afin de demander des autorisations pour émettre. Enfin le type données concerne les envois de données (la plus grande partie du trafic).
Ø To DS : ce bit vaut 1 lorsque la trame est destinée au système de distribution (DS), il vaut zéro dans les autres cas. Toute trame envoyée par une station à destination d'un point d'accès possède ainsi un champ To DS positionné à 1.
Ø From DS : ce bit vaut 1 lorsque la trame provient du système de distribution (DS), il vaut zéro dans les autres cas. Ainsi, lorsque les deux champs To et From sont positionnés à zéro il s'agit d'une communication directe entre deux stations (mode ad hoc).
Ø More Fragments (fragments supplémentaires) : permet d'indiquer (lorsqu'il vaut 1) qu'il reste des fragments à transmettre
Ø Retry : à 1 ce bit spécifie que le fragment en cours est une retransmission d'un fragment précédemment envoyé (et sûrement perdu)
Ø Power Management (gestion d'énergie) : indique, lorsqu'il est à 1, que la station ayant envoyé ce fragment entre en mode de gestion d'énergie
Ø More Data (gestion d'énergie) : ce bit, utilisé pour le mode de gestion d'énergie, est utilisé par le point d'accès pour spécifier à une station que des trames supplémentaires sont stockées en attente.
Ø WEP : ce bit indique que l'algorithme de chiffrement WEP a été utilisé pour chiffrer le corps de la trame.
Ø Order (ordre) : indique que la trame a été envoyée en utilisant la classe de service strictement ordonnée (Strictly-Ordered service class)
Durée / ID : Ce champ indique la durée d'utilisation du canal de transmission.

Champs adresses : une trame peut contenir jusqu'à 3 adresses en plus de l'adresse de 48 bits Contrôle de séquence : ce champ permet de distinguer les divers fragments d'une même trame. Il est composé de deux sous-champs permettant de réordonner les fragments :
Ø Le numéro de fragment
Ø Le numéro de séquence
Nous allons ensuite placer une deuxième station en mode ad-hoc avec la précédente.
Pour ce faire, nous configurons les adresses IP des deux stations :
station1 : 192.168.1.2
station2 : 192.168.1.3
Le ping est un succès, les deux stations communiquent. L’option –c indique qu’un seul paquet doit être envoyé.
Voici ce que nous obtenons sur la capture wireshark pendant les échanges.
Les trames au niveau LLC (Logical Link Control) comportent les informations suivantes :
- DSAP (Destination Service Access Point) : adresse destination. - IG Bit : adresse individuelle ou adresse de groupe.

- SSAP (Service Source Access Point) : adresse source.
- CR Bit : type de LLC, contrôle avec/sans connexion avec/sans acquittement.
Déterminez la valeur de débit à partir de l’entête de la couche physique.
On peut voir que le débit est de 24 Mbits/s à partir de l’entête de la couche physique dans le champ Date rate.
Quelle est la valeur du champ Retry ?
La valeur du champ Retry est 0. Ce qui signifie que si un fragment se perd lors d’une transmission, ce dernier ne sera pas retransmit.
Est-ce que la trame est fragmentée au niveau de la couche 2 ? Quelle est la valeur du champ Duration ?
La trame peut être fragmentée au niveau de la couche 2. Dans ce cas la trame n’a pas été fragmentée car le flag MF (MoreFragment) est à 0, le numéro de fragment (Fragmentnumber) est à 0 et le champ Duration, qui indique la durée d’utilisation du canal de transmission est également à 0.
Le principe est simple, la station voulant émettre écoute le réseau. Si le réseau est encombré, la transmission est différée. Dans le cas contraire, si le média est libre pendant un temps donné (appelé DIFS pour Distributed Inter Frame Space), alors la station peut émettre. La station transmet un message appelé Ready To Send (noté RTS signifiant prêt à émettre) contenant des informations sur le volume des données qu'elle souhaite émettre et sa vitesse de transmission. Le récepteur (généralement un point d'accès) répond un Clear To Send (CTS, signifiant Le champ est libre pour émettre), puis la station commence l'émission des données.
A réception de toutes les données émises par la station, le récepteur envoie un accusé de réception (ACK). Toutes les stations avoisinantes patientent alors pendant un temps qu'elle considère être celui nécessaire à la transmission du volume d'information à émettre à la vitesse annoncée.
La technique RTS/CTS est-elle activée par défaut sur les cartes ? Expliquez.

Le RTS/CTS n’est pas activé par défaut, car ces trames sont envoyées à bas débit (1Mbits/s) pour atteindre les périphériques les plus éloignées, or le temps de transmission de ces trames fait baisser le débit utile.
Nous positionnons le RTS à 500.
Nous effectuons un ping de 500 octets.
Le champ Duration est à 172. Ainsi la durée d’utilisation du canal de transmission est plus longue.
Maintenant nous réalisons un ping de 5Mo.
La trame est alors fragmentée, et Duration passe augmente de manière significative. Le canal de transmission accorde plus de temps pour échanger des données fragmentées.
Les trames RTS et CTS sont utilisées pour la réservation virtuelle des ressources dans le cadre de la procédure d’accès au support physique. Cette technique permet de diminuer les collisions lors des transmissions.
L’entête MAC comporte quelques différences suivant qu’il s’agisse de trames RTS, CTS ou ACK.
Trame RTS
L’entête de la trame RTS comprend les champs suivant :
- Frame Control : analogue au champ de la trame de données MAC.
- Duration : Durée à réserver.

- RA : Adresse de la station réceptrice.
- TA : Adresse de la station émettrice.
Trame CTS
L’entête de la trame CTS comprend les même champs que celui de RTS, hormis le champ TA. Le champ RA étant recopié à partir du champ TA de la trame RTS reçue.
On peut remarquer que l’adresse MAC source n’est pas présente, en effet la station qui envoie le CTS pour dire « j’écoute une station », peut être n’importe quelle station. On en vient donc au point faible de cette technique, imaginons qu’une machine envoie des CTS de manière rapide et régulière pour prendre toute la bande passante du réseau. Les périphériques sans fils deviennent alors vulnérables aux attaques et les hackers aiment cette technique de « CTS
Flood » (inondation de CTS) car l’adresse MAC source n’est pas transmise. C’est une attaque par déni de service qui consiste à rendre indisponible un service, dans ce cas le réseau devient saturé.
En cas de fragmentation, un RTS/ CTS est envoyé avant chaque fragment ? Prouvez ça ou le contraire via une analyse par wireshark.
D’après la capture wireshark ci-dessus, il s’avère qu’un RTS est envoyé avant chaque fragment justement pour éviter les collisions de transmissions. Cependant les trames CTS sont envoyées moins souvent mais de manière périodique, probablement proportionnelle au champ Duration.
En changeant le débit de la carte, montrez que ce débit est transmis au niveau de l’entête de la couche physique.
Nous changeons le débit de l’interface wlan0 à 11 Mb/s.
pccop0b004-1 :~# iwconfig wlan0 rate 11M
Ainsi, le champ Data Rate est bien transmis dans l’entête de la couche physique.
Quelle est la valeur par défaut de nombre de retransmissions de votre carte ?

Avec la commande iwconfig (lorsque RTS est activé), le champ Retry long limit indique le nombre de retransmissions de l’interface wlan0.
Comment peut-on modifier cette valeur ?
Cette valeur est modifiable avec ma commande iwconfig wlan0 retry 10 pour passer à 10 retransmissions maximum.
Packet tracer est un logiciel de simulation de réseaux virtuels créée par cisco. Nous avons configuré PC0, PC1, PC2, PC3 et PC4 en IP dynamique, PC5 et PC6 possèdent des adresses statiques.
La connexion fonctionne.
Attention !
Veuillez à mettre sur ON les ports ethernet du switch.
Nous effectuons un ping à partir de PC5 vers PC2.
Sans succès, la machine est inaccessible car elle n’appartient pas au même réseau que la machine source (source : 192.168.10.3, destination : 192.168.3.4).
Pour remédier à cela nous ajoutons une route sur le routeur.
De cette manière les paquets en direction du routeur sont redirigés sur le réseau local appartenant au routeur sans fil.

Et les deux stations peuvent maintenant communiquer correctement.
Nous arrivons à la fin de ce TP avec de meilleures connaissances dans le monde du WiFi. Nous avons étudié en détails le principe CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) composé de trames RTS (Ready-To-Send) et CTS (Clear-To-Send) et d’acquittement (ACK) permettant de diminuer le risque de collisions des paquets transmis. D’autre part nous avons pu découvrir Packet Tracer qui se montre être une application très utile et efficace pour simuler des configurations de réseaux divers et variés.