Pourquoi les commutateurs ont-ils besoin de tables ARP lorsque la traduction est effectuée du côté des machines?

12

Comme le montre clairement le titre, pourquoi les commutateurs ont-ils besoin de tables ARP lorsque la traduction est effectuée du côté des machines?

En gros, pourquoi il y a deux tables ARP sur les machines et sur les commutateurs? Celui sur l'interrupteur n'est-il pas suffisant?

Mohamad-Jaafar NEHME
la source
Je pense que les réponses sur cette page sont correctes. J'ai trouvé d'autres commentateurs sur d'autres pages disant que les commutateurs L2 contiennent des tables ARP. Cela n'a aucun sens. Seuls les appareils L3 contiennent des tables ARP.
Stephen Gibbons

Réponses:

23

Il s'agit d'une idée fausse assez courante ou, plus précisément, d'un problème de terminologie. Dans un commutateur de couche deux, il n'y a pas de table ARP, seulement une table de transfert. Le commutateur enregistre chaque adresse MAC src qu'il voit en entrée dans la table de transfert et l'attribue au port afin que les trames avec un MAC dst ne soient envoyées qu'au port connu pour ce MAC. Beaucoup de gens appellent cela une "table arp" ou "cache arp" même si ce n'est ni l'un ni l'autre.

Dans un commutateur de couche deux géré, il existe une table de transfert et une table ARP, mais cette dernière n'est utilisée que pour l'interface de gestion pour parler aux hôtes intéressés (c'est-à-dire le PC que vous utilisez pour configurer le commutateur). Dans un commutateur de couche 3 géré il y aura une table de transfert plus une table ARP, car il en a besoin pour l'interface de gestion et la fonctionnalité de routeur existe pour effectuer le transfert entre les sous-réseaux.

Jeff Meden
la source
Je crois comprendre que vous modéliseriez un commutateur comme un ensemble de ports (de commutation). Les ports sont des files d'attente de paquets numérotées. Le commutateur draine les ports dans un ordre arbitraire et maintient un mappage de mac à port. Lorsqu'un paquet est drainé d'un port, le mac src (adresse) est mappé sur le port (numéro). Lorsqu'un paquet drainé doit être livré, il est envoyé au port du dest mac s'il est connu, ou diffusé s'il n'est pas connu. Cela signifie qu'un port doit obtenir un paquet eth pour être mappé.
Rob
@Rob, il y a un certain nombre de déclarations peu claires, sinon d'inexactitudes absolues, dans votre commentaire. Les ports ne sont pas des files d'attente; il peut y avoir un mappage 1 à 1 sur certaines plates-formes, mais ce ne sont pas les mêmes. Les adresses MAC sont apprises lorsqu'une trame est reçue et non transmise. Les trames sont livrées à la file d'attente de sortie dans l'ordre où elles sont reçues, éventuellement en conjonction avec une sorte de QoS, ce n'est pas arbitraire. Les trames dont l'adresse de destination est inconnue sont inondées et non diffusées.
Apprendre
Ensuite: le modèle bascule sous forme de paires numérotées de files d'attente (paquets Ethernet) (in, out). Lors de la lecture d'une file d'attente d'entrée, assurez-vous que src mac de ce paquet est mappé au numéro de port de la file d'attente d'entrée. Ce paquet doit être placé dans la file d'attente de sortie correspondant à dst mac. Si le port n'est pas mappé, le paquet est mis en file d'attente dans toutes les files d'attente de sortie autres que la sienne. (Je ne sais pas quelle est la distinction diffusion / inondation, car je suppose qu'il envoie littéralement le même signal sur tous les fils au niveau matériel; ou peut-être qu'il effectue des tourniquets à travers les ports?)
Rob
Ah ... Je pense que je vois l'objection à modéliser le commutateur comme des files d'attente de paquets. Le commutateur peut fonctionner sur des blocs de données plus petits que des paquets entiers. C'est-à-dire: dès que nous savons quels ports devraient recevoir un paquet pour lequel nous obtenons des octets, nous pourrions envoyer ces octets. ex: file d'attente juste assez d'octets pour gérer l'en-tête Ethernet; ne tenez pas le paquet entier.
Rob
@Rob, une trame inondée est une trame unicast avec une destination inconnue qui est inondée sur chaque port autre que le port de réception. Une diffusion est une trame toutes destinations qui est envoyée à tous les ports autres que le port de réception, mais continuera à être traitée de cette manière par tous les commutateurs qui la reçoivent dans le domaine de diffusion L2. Bien que similaire en effet sur un seul commutateur, l'effet sur l'ensemble du réseau est considérablement différent.
Apprendre
6

Chaque appareil utilisant le protocole IP possède une table ARP. Étant donné que IP est un protocole L3 et nécessite un protocole L2 sous-jacent, il s'agit d'une condition pour qu'un appareil puisse traduire une adresse IP L3 en son adresse L2 correspondante.

Que votre appareil communique ou non avec une adresse IP sur le réseau local, il doit envoyer son trafic L2 (pour rester simple, excluons la diffusion et la multidiffusion de cette discussion) vers un appareil spécifique sur le domaine L2 local. Si l'adresse IP se trouve sur le réseau local, ce serait directement vers le périphérique de destination. Sinon, ce serait le périphérique fonctionnant comme passerelle ou routeur pour le réseau local qui peut transférer le trafic L3 vers sa destination.

Si un commutateur n'utilise pas du tout le protocole IP (c'est-à-dire qu'il ne fournit même aucune sorte de gestion sur IP, aucune fonctionnalité L3, etc.), il n'a pas besoin d'une table ARP.

Cependant, je ne connais pas de plate-forme de commutation d'entreprise qui n'utilise pas le protocole IP. Telnet, SSH, HTTP, HTTPS et SNMP ne sont que quelques exemples des services couramment pris en charge d'un commutateur d'entreprise qui nécessiteraient un accès à IP.

YApprendre
la source
2

Comme vous le savez probablement déjà, le but de la table ARP est de traduire les adresses de couche réseau en adresses de couche liaison. c'est-à-dire des adresses IP aux adresses MAC.

Les tableaux auxquels vous vous référez ne sont pas tout à fait complets. Les commutateurs de couche 2 ont également deux types de tables:

  • une table ARP utilisée pour communiquer avec le commutateur "comme un ordinateur" pour l'interfaçage avec ses commandes. Eh bien, il y aura cela si c'est un commutateur géré

  • un tableau qui relie les ports de commutation aux adresses MAC

Exemple 1: Si un PC lance un paquet, il utilisera l'adresse MAC si l'adresse IP est locale (à partir de la table ARP). Lorsque ce paquet atteint un commutateur, le commutateur déplace le paquet vers le port approprié en fonction de l'adresse MAC (à partir de la table des ports / MAC des commutateurs).

Exemple2: Si un commutateur lance un paquet à partir de son interface de gestion, il fait la même chose qu'un PC ferait en utilisant sa table ARP. Mais, si un commutateur lance un paquet à partir de sa fonction de commutation, il déplace simplement ce paquet d'un port à un autre en fonction de sa table port / MAC.

fred3
la source
Merci très cher. Exemples gentils et utiles. Veuillez ne pas confondre entre paquets et trames.
Mohamad-Jaafar NEHME
-2

Les commutateurs ont des tables d'adresses mac.
Les points de terminaison tels que les PC ont des tables d'arp.

Ronnie Royston
la source
Donc, seuls les commutateurs ont des tables d'adresses mac? Et seuls les points finaux ont des tables ARP?
Apprendre
1
@YLearn Pour les commutateurs L2 réels, oui.
Navin