From 5c5aba4871df9b4b4ddbceb0190541b6c2fa71c8 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Sun, 14 Apr 2024 22:56:54 +0200 Subject: [PATCH] Add link layer course --- .../5_couche_liaison/index.md | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 content/reseaux_protocoles/5_couche_liaison/index.md diff --git a/content/reseaux_protocoles/5_couche_liaison/index.md b/content/reseaux_protocoles/5_couche_liaison/index.md new file mode 100644 index 0000000..7888b9c --- /dev/null +++ b/content/reseaux_protocoles/5_couche_liaison/index.md @@ -0,0 +1,215 @@ +--- +title: "Réseaux et Protocole: couche liaison" +date: 2024-03-29 +tags: ["OSI", "ethernet"] +categories: ["Réseaux et protocoles", "Cours"] +mathjax: true +--- + +Commençons déjà par la terminologie: + + * *nœuds* : équipement (routeur, host) + * *canal de communication* : lien adjacent entre nœuds; + * *frame* : paquet de la couche liaison (niveau 2) + +La couche 2 transmet une frame entre deux **nœuds ajacents**. Il existe les +liaisons **filaires** (ethernet) et **sans-fils** (wifi, LTE). Chaque protocole +propose des caratéristiques différentes (fiabilité, rapidité etc.) + +Comme pour les autres couches étudiée jusqu'à maintenant, celle-ci encapsule les +éléments de celle au dessus en y ajoute son entête. La couche liason ajoute +ainsi les propres mécanismes de contrôles de flux entre les nœuds adjacent ou +encore la détection voire la correction d'erreur. Le mode de communication peut +être *half-duplex* ou *full-duplex* + +La couche liason est implémentée sur chacun des nœuds, elle peut l'être +directement sur le contrôleur réseau de façon matérielle mais aussi logicielle. + +## Détection d'erreur + +Elle se fait par l'ajout d'un champs *EDC* pour *Error Detection Code* dans la +frame. C'est un simple ajout de bits de parité. Cependant ajouter un seul bit de +parité **n'est pas assez fiable**. Il est alors préférable d'utiliser le *two +dimentionnal parity*, un tableau à deux dimensions pour faire du *calcul de +parité* permettant non seulement **la correction** mais aussi la **correction**. + +## Multiple access link + +Nous avons d'abors des protocole utilisé pour la communication entre deux nœuds : +*PPP* pour *Point to Point Protocol* ou encore *ethernet*. Mais d'autres sont +fait poue la diffusion (*broadcast*), la communication entre plusieurs nœuds +comme le *Wifi* ou les communications par *Satellite* + +Dans le second cas, il nous faut un algorithme pour déterminer **l'ordre de +transmisson** : à quel moment un équipement peut envoyer des données sur le +canal partagé entre tous. Il n'y a pas de canal auxiliaire ( *out of band* ) +pour organiser le partage de la ressource, il faut alors organiser le +partitionnement + +### MAC Protocol + +Le canal est divisé en plus petites pièces à l'exclusivité de nœuds. Les accès +sont aléatoires et au tour par tour. + +#### partitionnement en fonction du temps + +Chaque station a un slot de temps fixe permettant la transmission, si la station +n'a pas de donnée à transmettre, alors le slot passe en IDLE. + +#### Frequencie division multiple access *FDMA* + +Le canal est divisé sur plusieurs fréquences, chaque nœud se voit attribuer une +fréquence et peut transmettre sur celle-ci en continue. + +#### accès aléatoire + +Lorqu'un nœud veut émettre, il prend la communication sur l'ensemble du canal, +il n'y a pas de gestion de la coordination. Donc si deux nœuds ou plus émettent +en même temps alors il y a **collision**. + +Ces types de protocoles définissent alors comment détecter les collisions et ce +qu'il faut faire dans ce cas. + +Vopici des exemples de protocoles de type accès aléatoires: ALOHA, Slotter +ALOHA, CSMA, CSMA/CD, CSMA/CA + +##### Slotted ALOHA + +Le temps est divisé en intervalle régulier (intervalle de temps) correspondant au +temps nécessaire pour la transmission d'une trame. L'émetteur attend donc le +début d'une intervalle de temps pour transmettre sa trame. + +En cas de collision, le nœud retransmet son paquet après avoir attendu un temps +aléatoire. Au mieux, 37% d'efficacité. + +##### Carrier Sense Multiple Access + +C'est un protocole simple : écouter avant de transmettre : + + * Si le canal est libre alors on transmet **la trame entière**; + * sinon on repousse la transmission + +##### Carrier Sense Multiple Access with Collision Detection (CSMA/CD) + +Les collision sont possible avec CSMA, à cause du délais de propagation de la +trame. La probabilité d'une collision est déterminée par la distance et le +délais de propagation. + +Avec CSMA/CD, un hôte annule la transmission d'une trame à l'instant de la +détection d'une collision. Dans le cadre d'Ethernet par exemple: + + * Vérification du canal; + * Envoi d'une trame entière si le canal est libre; + * Si aucune collision détectée : fin! + * Sinon annule la transmission et envoie le *signal jam*; + * Entre dans le *binary exponential backoff* : choisi un nombre \\(K\\) entre + \\([1..2^{m-1}]\\) et attend \\(K x 512 \\)temps / bit et relance les étapes + à partir de la vérification du canal. + +#### à tour de rôle + +C'est un protocole reprenant le meilleur de l'accès aléatoire et du partage de +canal + +Deux façons de faire : + + * Un contrôleur décide du partage de la ressource et invite les équipement. + C'est le fonctionnent du **Bluetooth** par exemple. + * Un jeton donne le droit à transmission et passe d'hôte en hôte. Cette façon + de procéder donne lieu à un peu *d'overhead*, de plus que faire si le jeton + se perd? + +## LAN + +### Adressage + +La base de cette des LAN est l'adresse MAC inscrite en dur dans le matériel -- +mais parfois dans le logiciel, pensez aux machines virtuelles par exemple -- sur +48 bits. Les 3 premiers octets de cette adresse sont alloués par l'IEE en +fonction du fabricat du périphérique. + +### Le protocole ARP + +Il fait le lien entre l'adresse Ethernet (couche liaison) et l'adresse IP +(couche réseau). La **table ARP** présent sur tous les hôtes connecte au reseau +permet de faire le lien entre les adresses MAC et IP en y associant aussi une +durée de vie , le `TTL`. + +Des message de broadcast sont envoyés par les hôtes afin de connaitre l'adresse +MAC des autres si l'entrée n'est pas disponible dans la table (encapsulé dans +une trame Ethernet). + +### Ethernet + +C'est la technologie dominante sur les réseaux locaux depuis les années 90. +Plusieurs implémentation sont disponibles : + + * **bus** pour les réseaux coaxiaux avec un seul domaine de collision; + * **switch** pour les réseaux avec connecteur RJ45, ici un domaine de collision + par machine. + +D;abors il y a le préambules : une série de 8 octets dont les 7 presiers sont +`1010101010` puis le dernier à `1010101011`. Son rôle est de synchroniser les +hôtes et de délimiter le début de la transmission. + +Viens ensuite la *trame* composées de : + + * l'adresse *MAC* de destination; + * l'adresse *MAC* source; + * le *type* indiquant le protocole de la couche supérieure; + * la *charge utile* + * le contrôle d'intégrité (*CRC* pour **Cyclic Redundancy Check*). + +Ethernet est un protocole sans connexion : il n'y a pas de *handshake*, pas de +mécanisme d'*ACK*, pas de retransmission. On laisse ça **à la couche supérieure. + +Il existe aussi plusieurs standards Ethernet en fonction du type de liaison. + +### Les switches + +C'est un équipement de la **couche liaison** qui stocket te retransmet les +trames Ethernet. Il examine les adresse MAC dans les entêtes et envoie les +trames vers les hôtes concernés. Il est transparent et ne nécessite pas de +configuration pour un *switching* basique. + +Les switches possèdent une **table de transfert** qui contient les tuples +`MAC:Port:TTL` mis a jour en fonction des trames qu'il voit passer. Le switch +modifie dynamiquement cette table en fonction des trames qu'il voit passer sur +ses différents ports. Lorqu'il doit envoyer des trames vers une adresse qu'il ne +connait pas, alors il va emmetre une demande ARP sur **l'ensemble de ses +ports**. Cette auto-apprentissage peur fonctionner même un fois les *switches* +brachés les un aux autres. + +Il est capable de communiquer sur plusieurs canaux simultaniement sans +collisions par exemple, communication A <---> B et C <---> D ( mais A <---> B et +A <--> C ne peut se faire en simultané ) + +### VLAN + +Ils permettent de reduire le domaine de broadcast (ARP, DHCP) pour plusieurs +éventuels objectifs: + + * attacher logiquement des utilisateurs à leur machines / réseau; + * faciliter la gestion du réseau + * séparer les utilisateurs (sécurité, vie privée) + +Mais pour celà il faut des équipement compatibles et de la **configuration**. +Par exemple avec les *ports based VLAN* il est possible d'affecter +dynamiquement les ports à des VLAN. + +L'échange de messages entre les VLANs doivent se faire via un **routeur** ou un +**switch de niveau 3**. Les connexions entre les différents switches doivent se +faire va un **lien trunk** permettant de transmettre les informations relatives +aux VLAN. + +Ces information son positionnées dans l'entête Ethernet au format *802,1q*. elle +se comporte du *tag protocol* et du *vlan id*. + +### MPLS + +Ce protocole permet d'assurer un routage et un forwarding plus rapide des +paquets. Il s'intercale entre les couches 2 et 3 et se base sut l'ajout de +labels de taille fixe entre l'entête Ethernet et la charge utile. + +Le routeur MPSL regarde donc le label pour décider quoi faire avec le paquet: le +routage est plus rapide (pas de décapsulation) et plus flexible.