Add link layer course
This commit is contained in:
parent
6b13b3cdb4
commit
5c5aba4871
1 changed files with 215 additions and 0 deletions
215
content/reseaux_protocoles/5_couche_liaison/index.md
Normal file
215
content/reseaux_protocoles/5_couche_liaison/index.md
Normal file
|
@ -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.
|
Loading…
Add table
Add a link
Reference in a new issue