# Chapitre 10: Commutation de couche 2 et protocole STP (Spanning Tree Protocol)
{{METATOC}}
Les sujets traités dans ce chapitre sont les suivants :
- Configurer, vérifier et dépanner un commutateur avec des VLAN et des communications entre commutateurs
- Configurer, vérifier et dépanner le fonctionnement et le routage de base du routeur sur les appareils Cisco
- Sélectionner les supports, câbles, ports et connecteurs appropriés pour connecter les commutateurs à d'autres périphériques réseau et hôtes
- Expliquer la technologie et la méthode de contrôle d'accès aux médias pour les réseaux Ethernet
- Expliquer la segmentation du réseau et les concepts de base de la gestion du trafic
- Expliquer les concepts de commutation de base et le fonctionnement des commutateurs Cisco
- Effectuer et vérifier les tâches de configuration initiale du commutateur, y compris la gestion des accès à distance
- Vérifier l'état du réseau et le fonctionnement du commutateur à l'aide d'utilitaires de base (notamment : ping, traceroute, telnet, SSH, arp, ipconfig), `SHOW` et commandes `DEBUG`
- Identifier, prescrire et résoudre les problèmes courants de média réseau commuté, les problèmes de configuration, la négociation automatique et le matériel les échecs de commutation
La commutation couche 2 est le processus d'utilisation de l'adresse matérielle des périphériques sur un réseau local pour segmenter un réseau. Puisqu'on a les idées de base, on va maintenant se concentrer sur les détails de la commutation de la couche 2 et expliquer comment cela fonctionne.
On a retenu que la commutation divise les grands domaines de collision en plus petits et qu'un domaine de collision est un segment de réseau avec deux ou plus appareils partageant la même bande passante. Un réseau concentrateur est un exemple typique de ce type de technologie. Mais puisque chaque port sur un commutateur est en fait son propre domaine de collision, on peut créer un réseau LAN Ethernet bien meilleur en remplaçant simplement les concentrateurs par des commutateurs !
Les commutateurs ont vraiment changé la façon dont les réseaux sont conçus et mis en œuvre. Si une conception à commutation pure est correctement mise en œuvre, elle se traduira par un interréseau propre, rentable et résilient. Dans ce chapitre, on étudiera et comparera la façon dont les réseaux ont été conçus avant et après l'introduction des technologies de commutation.
Les protocoles de routage (tels que RIP, dont on a parlé au chapitre 8, « Routage IP ») ont des processus pour empêcher les boucles réseau de se produire dans la couche Réseau. Cependant, si on a des liens physiques redondants entre les commutateurs, les protocoles de routage ne feront rien pour arrêter les boucles de se produire au niveau de la couche de liaison de données. C'est exactement la raison pour laquelle le protocole Spanning Tree (STP) a été développé - pour mettre un terme aux boucles dans une couche 2 réseau commuté. L'essentiel de ce protocole vital, ainsi que son fonctionnement au sein d'un réseau commuté, sont également des sujets importants qu'on abordera
à fond dans ce chapitre.
On utilisera trois commutateurs pour démarrer la configuration d'un réseau commuté, et on continuera en fait avec leur configuration au chapitre 11,« Réseaux locaux virtuels (VLAN) ».
## Avant la commutation de couche 2
Remontons un peu dans le temps et examinons l'état des réseaux avant les commutateurs et comment les commutateurs ont aidé à segmenter le réseau local d'entreprise.
Avant la commutation LAN, la conception de réseau typique ressemblait au réseau de la Figure suivante.
.-----. .-----.
.------| Hub | | Hub |------.
| '-----' '-----' |
| |
| .-----. .-----. |
| .----| Hub | | Hub |----. |
| | '-----' '-----' | |
Server Farm | | | |
.---. .---. | | .-----. .-----. | |
|[c]| |[c]| | | .--| Hub | | Hub |--. | |
.---. .---. | | | '-----' '-----' | | |
| | | | | | | |
| | | | | | | |
.-------. .-------. .-------.
| | |[PK] | |[PK] |
| Hub |----------| Corp |<-------------->| R3 |
| | | | | |
'-------' '-------' '-------'
|Corporate Remote Branch
|
.-----. .-----.
| | |Token|
| R1 |---------|Ring |
| | | |
| | '-----'
| |
| |
.-----.
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
Cette conception a été appelée un backbone effondré car tous les hôtes ont besoin d'aller au backbone d'entreprise pour atteindre n'importe quel service réseau—à la fois LAN et mainframe.
En remontant encore plus loin, avant que les réseaux comme celui illustré à la Figure précédente n'aient des dispositifs de segmentation physique tels que des routeurs et des concentrateurs, il y avait le réseau mainframe. Ce réseau comprenait l'ordinateur central (IBM, Honeywell, Sperry, DEC, etc.), les contrôleurs et les terminaux muets qui étaient connectés au contrôleurs. Tous les sites distants étaient connectés au mainframe avec des ponts.
Et puis le PC a commencé son ascension et le mainframe a été connecté à l'Ethernet ou à un LAN Token Ring où les serveurs étaient installée. Ces serveurs étaient généralement OS/2 ou LAN Manager car c'était "pré-NT". Chaque étage d'un immeuble était équipé d'un câble coaxial ou d'un câblage paire torsadée au réseau fédérateur de l'entreprise et a ensuite été connecté à un routeur. Les PC exécutaient un logiciel d'émulation qui leur permettait de se connecter au services mainframe, donnant à ces PC la possibilité d'accéder simultanément aux services de l'ordinateur central et du réseau local. Finalement, le PC est devenu suffisamment robuste pour permettre aux développeurs d'applications de porter des applications plus efficacement qu'ils ne le pouvaient auparavant, une avancée qui a considérablement réduit les prix des réseaux et a permis aux entreprises de croître à un rythme beaucoup plus rapide.
Lorsque Novell est devenu plus populaire à la fin des années 80 et au début des années 90, les serveurs OS/2 et LAN Manager ont été largement remplacés par des serveurs NetWare. Cela a rendu le réseau Ethernet encore plus populaire, car c'est avec cela que les serveurs Novell 3. x communiquaient.
logiciel client/serveur.
Voilà donc l'histoire de la création du réseau des backbones effondrés. Il n'y avait qu'un seul problème : l'épine dorsale de l'entreprise grandissait et grandissait, et au fur et à mesure de sa croissance, les services réseau sont devenus plus lents. Une grande raison à cela était que, au même moment où cette énorme poussée de croissance se produisait, les services LAN avaient besoin d'un service encore plus rapide et le réseau devenait totalement saturé. Tout le monde jetait les Mac et les terminaux stupides utilisés pour le service mainframe en faveur de ces nouveaux PC élégants afin qu'ils puissent se connecter plus facilement au backbone et aux services réseau de l'entreprise.
Tout cela se passait avant la popularité capitale d'Internet, de sorte que tout le monde dans l'entreprise devait passer par une prestation de service pour accéder au réseau de l'entreprise. Pourquoi? Car sans Internet, tous les services réseau étaient internes, exclusifs au réseau de l'entreprise. Cela a créé un besoin criant pour segmenter ce réseau d'entreprise gigantesque et laborieux, connecté à de vieux routeurs lents. Au début, Cisco a juste créé des routeurs plus rapides (pas de doute à ce sujet), mais plus de segmentation était nécessaire, en particulier sur les réseaux locaux Ethernet. L'invention de FastEthernet a été une très bonne et utile chose aussi, mais cela ne répondait pas du tout à ce besoin de segmentation du réseau.
Mais les appareils appelés ponts l'ont fait, et ils ont d'abord été utilisés dans le réseau pour briser les domaines de collision. Les ponts étaient fortement limités par le nombre de ports et autres services réseau qu'ils pouvaient fournir, et c'est à ce moment-là que les commutateurs de couche 2 sont venus. Ces commutateurs brisent les domaines de collision sur chaque port, comme un pont, mais les commutateurs peuvent fournir des centaines de ports ! Ce premier réseau local commuté ressemblait au réseau illustré à la Figure suivante.
.-----. .-----.
.------| Hub | | Hub |------.
| '-----' '-----' |
| |
| .-----. .-----. |
| .----| Hub | | Hub |----. |
| | '-----' '-----' | |
Server Farm | | | |
.---. .---. | | .-----. .-----. | |
|[c]| |[c]| | | .--| Hub | | Hub |--. | |
.---. .---. | | | '-----' '-----' | | |
| | | | | | | |
| | .-------. .-------.
| | | switch| | switch|
| | '-------' '-------'
| | | |
.-------. .-------. .-------.
| | |[PK] | |[PK] |
| Hub |----------| Corp |<-------------->| R3 |
| | | | | |
.-------. '-------' '-------'
|Corporate Remote Branch
|
.-----. .-----.
| | |Token|
| R1 |---------|Ring |
| | | |
| | '-----'
| |
| |
.-----.
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
Chaque hub a été placé dans un port de commutation, une innovation qui a considérablement amélioré le réseau. Maintenant, au lieu que chaque bâtiment soit entassé dans le même domaine de collision, chaque hub est devenu son propre domaine de collision distinct. Mais il y avait un hic : les ports de commutation étaient encore très nouveaux, donc incroyablement cher. Pour cette raison, le simple fait d'ajouter un switch à chaque étage du bâtiment n'allait tout simplement pas se produire, du moins pas encore. Le prix a considérablement baissé, alors maintenant connecté chacun des utilisateurs à un port d'un commutateur est à la fois bon marché et faisable.
Alors voilà, si on veut créer une conception de réseau et la mettre en œuvre, la commutation est un must. Un conception contemporaine typique et une mise en œuvre complètes d'un réseau commuté ressemblerait à la figure suivante.
.---. .---. .---. .---. .---. .---. .---. .---.
|[c]| |[c]| |[c]| |[c]| |[c]| |[c]| |[c]| |[c]|
'---' '---' '---' '---' '---' '---' '---' '---'
| | | | | | | |
.---. .---. .---. .---. .---. .---. .---. .---.
| sw| | sw| | sw| | sw| | sw| | sw| | sw| | sw|
'---' '---' '---' '---' '---' '---' '---' '---'
| | | | | | | |
.-------. .-------. .-------. .-------.
| switch| | switch| | switch| | switch|
'-------' '-------' '-------' '-------'
| | | |
.--------. .--------. .------.
| switch |----------------| switch |-----|[PK] |<--->
'--------' '--------' '------'
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
On remarquera qu'il y a toujours un routeur là-dedans. Mais son métier a changé. Au lieu d'effectuer simplement une segmentation logique, il crée et gère désormais la segmentation logique et physique. Ces segments logiques sont appelés VLAN, que l'on verra en détail, dans ce chapitre et dans le chapitre 11.
## Services de commutation
Contrairement aux ponts, qui utilisent un logiciel pour créer et gérer une table de filtrage, les commutateurs utilisent des circuits intégrés spécifiques à l'application (ASIC) pour construire et maintenir leurs tables de filtrage. Mais il est toujours correct de considérer un commutateur de couche 2 comme un pont multiport car leur raison d'être de base est la même : pour briser les domaines de collision.
Les commutateurs et les ponts de couche 2 sont plus rapides que les routeurs car ils ne prennent pas de temps à consulter les informations d'en-tête de la couche réseau. Au lieu de celà, ils examinent les adresses matérielles de la trame avant de décider de transférer, d'inonder ou de supprimer la trame.
Les commutateurs créent des domaines de collision privés et dédiés et fournissent une bande passante indépendante sur chaque port, contrairement aux concentrateurs.
La commutation de couche 2 fournit les éléments suivants :
- Pontage basé sur le matériel (ASIC)
- Vitesse du fil
- Faible latence
- Faible coût
L'appareil ne lit que la trame encapsulant le paquet, ce qui rend le processus de commutation considérablement plus rapide et moins sujet aux erreurs que les processus de routage.
Et si on utilise la commutation de couche 2 pour la connectivité des groupes de travail et la segmentation du réseau (brisant les domaines de collision), on peut créer plus de segments de réseau qu'avec les réseaux routés traditionnels.
De plus, la commutation de couche 2 augmente la bande passante pour chaque utilisateur car, encore une fois, chaque connexion (interface) dans le commutateur est son propre domaine de collision.
Dans les sections suivantes, on va approfondir la technologie de commutation de couche 2.
### Limitations de la commutation de couche 2
Étant donné qu'on place généralement la commutation de couche 2 dans la même catégorie que les réseaux pontés, on a également tendance à penser qu'il a les mêmes blocages et problèmes que font les réseaux pontés. Garder à l'esprit que les ponts sont des choses bonnes et utiles si on conçois le réseau correctement, en gardant également leurs fonctionnalités comme leurs limites à l'esprit. Et pour bien concevoir avec des ponts, voici les considérations les plus importantes :
- Il faut absolument décomposer correctement les domaines de collision.
- La bonne façon de créer un réseau ponté fonctionnel est de s'assurer que ses utilisateurs passent 80 % de leur temps sur le segment local.
- Les réseaux pontés brisent les domaines de collision, mais ce réseau est toujours un grand domaine de diffusion. Ni les commutateurs de couche 2 ni les ponts brisent les domaines de diffusion par défaut, ce qui non seulement limite la taille et le potentiel de croissance d'un réseau, mais peut également réduire sa performance globale.
- Les diffusions et les multidiffusions, ainsi que le temps de convergence lent des spanning tree hérités, peuvent causer des problèmes majeurs quand le réseau grandit.
Ce sont les principales raisons pour lesquelles les commutateurs de couche 2 ne peuvent pas remplacer complètement les routeurs (périphériques de couche 3) dans un interréseau.
### Pontage vs commutation LAN
C'est vrai, les commutateurs de couche 2 ne sont en fait que des ponts qui donnent beaucoup plus de ports, mais il existe des différences importantes que l'on doit toujours garder à l'esprit :
- Les ponts sont basés sur des logiciels, tandis que les commutateurs sont basés sur du matériel car ils utilisent des puces ASIC pour aider à prendre des décisions de filtrage.
- Un commutateur peut être considéré comme un pont multiport.
- Il ne peut y avoir qu'une seule instance de spanning-tree par pont, alors que les commutateurs peuvent en avoir plusieurs.
- La plupart des commutateurs ont un nombre de ports plus élevé que la plupart des ponts.
- Les ponts et les commutateurs inondent les diffusions de la couche 2.
- Les ponts et les commutateurs apprennent les adresses MAC en examinant l'adresse source de chaque trame reçue.
- Les ponts et les commutateurs prennent des décisions de transfert en fonction des adresses de couche 2.
## Fonctions de commutation de la couche 2
Il existe trois fonctions distinctes de la commutation de couche 2 (il faut s'en souvenir !) : l'apprentissage d'adresses, les décisions de transfert/filtrage et l'évitement de boucle.
* **Apprentissage des adresses**: Les commutateurs et ponts de couche 2 mémorisent l'adresse matérielle source de chaque trame reçue sur une interface, et ils enregistrent ces informations dans une base de données MAC appelée table de transfert/filtre.
* **Décisions de transfert/filtrage**: Lorsqu'une trame est reçue sur une interface, le commutateur regarde l'adresse matérielle de destination et trouve l'interface de sortie dans la base de données MAC. La trame n'est transmise qu'à un port de destination approprié.
* **Évitement des boucles**: Si plusieurs connexions entre les commutateurs sont créées à des fins de redondance, des boucles de réseau peuvent se produire. Le protocole Spanning Tree (STP) est utilisé pour arrêter les boucles réseau tout en permettant la redondance.
On parlera en détail de l'apprentissage des adresses, des décisions de transfert/filtrage et de l'évitement des boucles dans les sections suivantes.
### Apprentissage d'adresse
Lorsqu'un commutateur est mis sous tension pour la première fois, la table de transfert/filtre MAC est vide, comme illustré à la Figure suivante.
E0/0:
E0/1:
E0/2:
E0/3:
.--------------.
| switch |
E0/0 | |E0/3
.-----+ |--------.
| | | |
| | | |
| '--------------' |
| E0/1| |E0/2 |
| | | |
| | | |
.---. .---. .---. .---.
|[c]| |[c]| |[c]| |[c]|
'---' '---' '---' '---'
HostA HostB HostC HostD
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
Lorsqu'un périphérique transmet et qu'une interface reçoit une trame, le commutateur place l'adresse source de la trame dans la table de transfert/filtre MAC, lui permettant de se rappeler sur quelle interface se trouve l'appareil émetteur. Le commutateur n'a alors d'autre choix que d'inonder le réseau avec cette trame sortante de chaque port, à l'exception du port source, car il n'a aucune idée de l'emplacement réel du périphérique de destination.
Si un périphérique répond à cette trame inondée et renvoie une trame, alors le commutateur prendra l'adresse source de cette trame et placera ce MAC également dans sa base de données, en associant cette adresse à l'interface qui a reçu la trame. Étant donné que le commutateur dispose désormais des deux
Adresses MAC dans sa table de filtrage, les deux appareils peuvent désormais établir une connexion point à point. Le commutateur n'a pas besoin d'inonder le réseau avec cette trame comme il l'a fait la première fois car désormais les trames peuvent et seront transmises uniquement entre les deux appareils. C'est exactement la chose qui fait des commutateurs de couche 2 mieux que des Hubs. Dans un réseau concentrateur, toutes les trames sont transférées vers tous les ports à chaque fois, quoi qu'il arrive. La figure suivante montre les processus impliqués dans la construction d'une base de données MAC.
E0/0: 0000.8c01.000A step 2
E0/1: 0000.8c01.000B step 4
E0/2:
E0/3:
.--------------.
| switch |
E0/0 | |E0/3
.-----------------------------.
| 1 | | 3 |
|.--->| .----------. |------. |
|| '-|----------|-' | |
|| E0/1| | ^ |E0/2 | |
|| | |3 |4 | |3 | |
|| | v | | v v |
.---. .------. .---. .---.
|[c]| |[c] | |[c]| |[c]|
'---' '------' '---' '---'
HostA HostB HostC HostD
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
Dans cette figure, on peut voir quatre hôtes connectés à un commutateur. Lorsque le commutateur est sous tension, il n'a rien dans sa table de transfert/filtre d'adresse MAC. Mais lorsque les hôtes commencent à communiquer, le commutateur place l'adresse matérielle source de chaque trame dans la table avec le port auquel correspond l'adresse source de la trame.
On va étudier un exemple de la façon dont une table de transfert/filtre est remplie:
- L'hôte A envoie une trame à l'hôte B. L'adresse MAC de l'hôte A est 0000.8c01.000A ; L'adresse MAC de l'hôte B est 0000.8c01.000B.
- Le commutateur reçoit la trame sur l'interface E0/0 et place l'adresse source dans la table d'adresses MAC.
- Étant donné que l'adresse de destination n'est pas dans la base de données MAC, la trame est transmise à toutes les interfaces, à l'exception du port source.
- L'hôte B reçoit la trame et répond à l'hôte A. Le commutateur reçoit cette trame sur l'interface E0/1 et place l'adresse source du matériel dans la base de données MAC.
- L'hôte A et l'hôte B peuvent maintenant établir une connexion point à point et seuls les deux appareils recevront les trames. Les hôtes C et D ne verront pas les trames, et on ne trouvera pas leurs adresses MAC trouvées dans la base de données car ils n'ont pas encore envoyé de trame au commutateur.
Si l'hôte A et l'hôte B ne communiquent plus avec le commutateur dans un certain laps de temps, le commutateur videra leurs entrées de la base de données.
### Les décisions de transférer/filtrer
Lorsqu'une trame arrive à une interface de commutateur, l'adresse matérielle de destination est comparée à la base de données MAC de transfert/filtre. Si l'adresse de destination matérielle est connue et répertoriée dans la base de données, la trame n'est envoyée que par la bonne interface de sortie. Le commutateur ne transmet pas la trame à n'importe quelle interface à l'exception de l'interface de destination. Cela préserve la bande passante sur les autres segments du réseau et est appelé filtrage de trame.
Mais si l'adresse matérielle de destination n'est pas répertoriée dans la base de données MAC, la trame est alors inondée sur toutes les interfaces actives à l'exception de l'interface où la trame a été reçue le. Si un appareil répond à la trame inondée, la base de données MAC est mise à jour avec l'emplacement de l'appareil (interface).
Si un hôte ou un serveur envoie une diffusion sur le réseau local, le commutateur inondera la trame sur tous les ports actifs, à l'exception du port source par défaut. Il faut se rappeller, que le commutateur crée des domaines de collision plus petits, mais il s'agit toujours d'un grand domaine de diffusion par défaut.
Dans la Figure suivante, l'hôte A envoie une trame de données à l'hôte D. Que fera le commutateur lorsqu'il recevra la trame de l'hôte A ?
switch# sh mac address-table
Vlan Mac Address Ports
---- ---------------- ------
1 0005.dccb.d74b Fa0/4
1 000a.f467.9e80 Fa0/5
1 000a.f467.9e8b Fa0/6
.--------------.
| switch |
Fa0/3 | |Fa0/6
.-----| |--------.
| | | |
| | | |
| '--------------' |
| Fa0/4| |Fa0/5 |
| | | |
| | | |
.---. .---. .---. .---.
|[c]| |[c]| |[c]| |[c]|
'---' '---' '---' '---'
HostA HostB HostC HostD
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
Étant donné que l'adresse MAC de l'hôte A ne figure pas dans la table de transfert/filtre, le commutateur ajoutera l'adresse source et le port à la table d'adresses MAC, puis transmettre la trame à l'hôte D. Si l'adresse MAC de l'hôte D n'était pas dans la table de transfert/filtre, le commutateur aurait inondé la trame sur tous les ports sauf pour le port Fa0/3.
Maintenant on va voir la sortie d'une table d'adresses show mac :
```
Switch# sh mac address-table
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0005.dccb.d74b DYNAMIC Fa0/1
1 000a.f467.9e80 DYNAMIC Fa0/3
1 000a.f467.9e8b DYNAMIC Fa0/4
1 000a.f467.9e8c DYNAMIC Fa0/3
1 0010.7b7f.c2b0 DYNAMIC Fa0/3
1 0030.80dc.460b DYNAMIC Fa0/3
1 0030.9492.a5dd DYNAMIC Fa0/1
1 00d0.58ad.05f4 DYNAMIC Fa0/1
```
Supposons que le commutateur précédent reçoive une trame avec les adresses MAC suivantes :
* **Source MAC**: 0005.dccb.d74b
* **MAC de destination**: 000a.f467.9e8c
Comment le commutateur gérera-t-il cette trame? Réponse : L'adresse MAC de destination sera trouvée dans la table d'adresses MAC et la trame sera transmis Fa0/3 uniquement.Si l'adresse MAC de destination n'est pas trouvée dans la table de transfert/filtre, elle transférera la trame vers tous les ports du commutateur, à l'exception du port sur lequel elle est originaire, à la recherche du périphérique de destination.
**Sécurité des ports**: Comment peut-on la protéger des utilisateurs non autorisés ? Par défaut, les adresses MAC apparaîtront dynamiquement dans la base de données de transfert/filtre MAC. on peut les arrêter en utilisant la sécurité des ports. Voici les options de la commande `port-security`:
```
Switch# config t
Switch(config)# int f0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security ?
aging Port-security aging commands
mac-address Secure mac address
maximum Max secure addresses
violation Security violation mode
```
Étant donné que tous les derniers commutateurs Cisco sont livrés avec les ports en mode souhaitable (le port souhaite être connecté s'il détecte un autre commutateur qui vient d'être connecté), on doit d'abord changer le port du mode souhaitable au port access ou on ne pourra pas configurer la sécurité du port. Une fois cela fait, on peut continuer avec la commande `port-security`.
On peut voir clairement dans la sortie précédente que la commande `switchport port-security` peut être utilisée avec quatre options. La commande `port-security` permet de contrôler facilement les utilisateurs sur le réseau. on peut utiliser la commande `switchport port-security mac-address` pour assigner des adresses MAC individuelles à chaque port de commutateur, mais cela est chronophage !
Pour configurer un port de commutateur afin de n'autoriser qu'un seul hôte par port et pour fermer le port si cette règle est violée, utiliser les commandes suivantes :
```
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security violation shutdown
```
Ces commandes sont probablement les plus populaires car elles empêchent les utilisateurs aléatoires de se connecter à un commutateur ou à un point d'accès qui se trouve dans leur Bureau. La valeur maximale de 1 (qui est la valeur par défaut de la sécurité du port) signifie qu'une seule adresse MAC peut être utilisée sur ce port ; si l'utilisateur essaie d'ajouter un autre hôte sur ce segment, le port du commutateur s'arrêtera. Si cela se produit, il faudra entrer manuellement dans le commutateur et activer le port en faisant un cycle avec `shutdown` puis un `no shutdown`.
L'une de mes commandes préférées est probablement la commande `mac-address sticky` :
```
Switch(config-if)# switchport port-security mac-address sticky
Switch(config-if)# switchport port-security maximum 2
Switch(config-if)# switchport port-security violation shutdown
```
Fondamentalement, cela fournit une sécurité d'adresse MAC statique sans avoir à saisir l'adresse MAC de tout le monde sur le réseau.
Dans l'exemple précédent, les deux premières adresses MAC dans le port «sticky» en tant qu'adresses statiques et le resteront aussi longtemps qu'on la définit dans le commande aging.
### Évitement de boucle
Les liens redondants entre les commutateurs sont une bonne idée car ils permettent d'éviter des pannes de réseau irrécupérables dans le cas où un lien cesse de fonctionner.
Cela semble bien, mais même si les liens redondants peuvent être extrêmement utiles, ils causent souvent plus de problèmes qu'ils n'en résolvent, parce que les trames peuvent être inondés simultanément sur tous les liens redondants, créant des boucles de réseau ainsi que d'autres maux.
Si aucun schéma d'évitement de boucle n'est mis en place, les commutateurs inonderont les diffusions à l'infini sur l'ensemble de l'interréseau. C'est parfois appelé tempête de diffusion. La figure suivante illustre comment une diffusion peut être propagée à travers le réseau.
.-----.
| |
| |
| |
| |
'-----'
| |
-----+-+--+---------------------------+------------- Segment 1
| | |
| .--|---------------------------|--.
| | | .-----------------------. | |
v | | | .-------------------. | | |
v | : | | : | |
.--------. .---------. .--------.
|Switch A| |Broadcast| |Switch B|
'--------' '---------' '--------'
| | : | | : | ^
| | | .-------------------. | | |
| | .-----------------------. | |
.--|---------------------------|--.
| |
----------+---------------------------+------------- Segment 2
* **Copies de trames multiples**: Un appareil peut recevoir plusieurs copies de la même trame puisque cette trame peut arriver de différents segments en même temps. La figure montre comment tout un tas de trames peuvent arriver de plusieurs segments simultanément. Le serveur de la figure envoie une trame unicast vers le routeur C. Puisqu'il s'agit d'une trame monodiffusion, le commutateur A transfère la trame et le commutateur B fournit le même service : il transfère la monodiffusion. C'est mauvais car cela signifie que le routeur C reçoit cette trame de monodiffusion deux fois, provoquant une surcharge supplémentaire sur le réseau.
* **Ecrasement de la table MAC**: La table de filtrage des adresses MAC peut être totalement confuse quant à l'emplacement du périphérique source car le commutateur peut recevoir la trame de plus d'un lien. Et de plus, le commutateur déconcerté pourrait être tellement pris dans une mise à jour constante de la table de filtrage MAC avec les emplacements d'adresses matérielles source qu'il ne réussira pas à transmettre une trame.
* **tempête de diffusion**: L'une des choses les plus désagréables qui puisse arriver est la génération de plusieurs boucles sur un réseau. Cela signifie que des boucles peuvent se produire dans d'autres boucles, et si une tempête de diffusion devait également se produire, le réseau ne serait pas en mesure d'effectuer la commutation de trames, point final !
.-----.
Router C | |
.-----. | |
|[PK] | .-------. | |
| | |unicast| | |
'-----' '-------' '-----'
|<--------------------------------- | |
-------+----+---------------------------+--+-|-------- Segment 1
^ | | |
.-------. | | | | .-------.
|unicast| | | | | |unicast|
'-------' | | | | '-------'
| | | v
.--------. .---------. .--------.
|Switch B| |Broadcast| |Switch A|
'--------' '---------' '--------'
| | | ^
| | | |
| | | |
.--|-----------------------------|--.
| |
------------+-----------------------------+------------- Segment 2
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
Tous ces problèmes sont synonymes de catastrophe (ou du moins proche de celle-ci) et sont des situations résolument mauvaises qui doivent être évitées, ou du moins corrigées d'une manière ou d'une autre.
C'est là que le protocole Spanning Tree entre en jeu. Il a été développé pour résoudre chacun des problèmes dont on viens de parler.
## Protocole Spanning Tree (STP)
La société appelée Digital Equipment Corporation (DEC), qui a été achetée et rebaptisée Compaq, a créé la version originale de Spanning Tree Protocol, ou STP. L'IEEE a ensuite créé sa propre version de STP appelée 802.1D.
Cisco a évolué vers une autre norme de l'industrie dans ses nouveaux commutateurs appelés 802.1w. On verra également cette version STP dans cette section, mais d'abord, définissons quelques bases STP importantes.
La tâche principale de STP est d'éviter qu'une boucle du réseau ne se produise sur un réseau de couche 2 (ponts ou commutateurs). Il surveille avec vigilance le réseau pour trouver tous liens, en veillant à ce qu'aucune boucle ne se produise en fermant les liens redondants. STP utilise l'algorithme spanning-tree (STA) pour créer d'abord une base de données de topologie, puis recherche et désactive les liens redondants. Avec l'exécution de STP, les trames seront transmises uniquement sur les liens premium sélectionnés par STP.
Dans les sections suivantes, on va aborder les détails du protocole Spanning Tree.
STP est un protocole de couche 2 utilisé pour maintenir un réseau commuté sans boucle.
Le protocole Spanning Tree est nécessaire dans les réseaux tels que celui illustré à la figure suivante, on a un réseau commuté avec une topologie redondante (boucles de commutation). Sans un certain type de mécanisme de couche 2 pour arrêter la boucle réseau, on aurait les problèmes dont on a parlé précédemment : tempêtes de diffusion, copies de trames multiples et écrasement de la table MAC.
.------. .------. .------.
|switch|----|switch+----+switch|
'------' '------' '------'
| | |
| '----------. |
| | |
.------. .------. .------.
|switch|----|switch|----|switch|
'------' '------' '------'
Il faut comprendre que le réseau de la figure précédente sans STP activé fonctionnerait en quelque sorte, bien qu'extrêmement lentement. Cela démontre clairement le danger des boucles de commutation.
Et pour aggraver les choses, il peut être très difficile de trouver ce problème une fois qu'il a commencé !
### Terminologie Spanning Tree
Avant d'entrer dans la description des détails du fonctionnement de STP dans le réseau, il faut comprendre quelques idées et termes de base et leur relation au sein du réseau commuté de couche 2 :
* **Root bridge**: Le pont racine est le pont avec le meilleur ID de pont. Avec STP, la clé est que tous les commutateurs du réseau élisent un pont racine qui devient le point focal du réseau. Toutes les autres décisions du réseau, telles que le port à bloquer et le port à mettre en mode de transfert - sont faites du point de vue de ce pont racine. Une fois qu'un pont racine est élu sur le réseau, tous les autres ponts doivent créer un chemin unique vers ce pont racine. Le port avec le meilleur chemin vers le pont racine est appelé le port racine.
* **BPDU**: Tous les commutateurs échangent des informations à utiliser dans la sélection du commutateur racine ainsi que dans la configuration ultérieure du réseau. Chaque commutateur compare les paramètres de la Bridge Protocol Data Unit (BPDU) qu'il envoie à un voisin avec ceux qu'il reçoit des autres voisins.
* **Bridge ID**: L'ID de pont est la façon dont STP assure le suivi de tous les commutateurs du réseau. Il est déterminé par une combinaison de la priorité du pont (32 768 par défaut sur tous les commutateurs Cisco) et l'adresse MAC de base. Le pont avec l'ID de pont le plus bas devient le pont racine dans le réseau.
* **Nonroot bridges**: Il s'agit de tous les ponts qui ne sont pas le pont racine. Les ponts non root échangent des BPDU avec tous les ponts et mettent à jour la base de données de topologie STP sur tous les commutateurs, empêchant les boucles et fournissant une mesure de défense contre les défaillances de liaison.
* **Port cost**: Le coût du port détermine le meilleur chemin lorsque plusieurs liens sont utilisés entre deux commutateurs. Le coût d'un lien est déterminé par la bande passante d'un lien.
* **Root port**: Le port racine est toujours le lien directement connecté au pont racine, ou le chemin le moins coûteux vers le pont racine. Si plus d'un lien se connecte au pont racine, un coût de port est déterminé en vérifiant la bande passante de chaque lien. Le port le moins cher devient le port racine. Si plusieurs commutateurs en amont ont le même coût, le pont avec l'ID de pont le plus bas est utilisé. Lorsque plusieurs liens se connectent au même périphérique, le port connecté au numéro de port le plus bas sur le commutateur en amont sera utilisé.
* **Designated port**: Un port désigné est celui qui a été déterminé comme ayant le meilleur coût (le plus bas) pour le pont racine via son port racine. Le port désigné sera marqué comme port de transfert.
* **Nondesignated port**: Un port non désigné est un port dont le coût est plus élevé que le port désigné. Ils sont ce qui reste après les ports racine et les ports désignés ont été déterminés. Les ports non désignés sont mis en mode bloquant, ce ne sont pas des ports de transfert.
* **Forwarding port**: Un port de transfert transfère des trames et peut être un port racine ou un port désigné.
* **Blocked port**: Un port bloqué est le port qui, afin d'éviter les boucles, ne transmettra pas de trames. Cependant, un port bloqué écoutera toujours les trames BPDU mais supprimera toutes les autres trames.
### Opérations Spanning Tree
Comme on l'a déjà dit, le travail de STP consiste à trouver tous les liens du réseau et à fermer ceux qui sont redondants, empêchant ainsi les boucles de réseau de se produire.
STP y parvient en élisant d'abord un pont racine qui passera par tous les ports et servira de point de référence pour tous les autres périphériques du domaine STP. Une fois que tous les commutateurs se sont mis d'accord sur l'identité du pont racine, chaque pont doit trouver son seul et unique port racine. Chaque lien entre deux commutateurs doit avoir un et un seul port désigné—le port sur ce lien qui fournit la bande passante la plus élevée vers la racine. Il est vraiment important de se rappeler qu'un pont peut passer par de nombreux autres ponts pour arriver à la racine, ce qui signifie que ce n'est pas toujours le Le chemin le plus court mais le chemin le plus rapide (la bande passante la plus élevée) qui sera celui utilisé.
De toute évidence, chaque port sur le pont racine est un port désigné (port de transfert pour un segment), car on ne peut pas plus se rapprocher de la racine que d'être la racine. Une fois la poussière retombée, tout port qui n'est ni un port racine ni un port désigné, ce qui signifie qu'il s'agit d'un port non racine et non désigné, est placé à l'état de blocage, rompant ainsi la boucle de commutation.
Comme les choses ayant tendance à se dérouler beaucoup plus facilement lorsqu'on a pas plus d'une personne prenant une décision de navigation, il ne peut y avoir qu'un pont racine dans un réseau donné. On verra plus en détail du processus d'élection du pont racine dans la section suivante.
### Sélection du pont racine
L'ID de pont est utilisé pour élire le pont racine dans le domaine STP et pour déterminer le port racine pour chacun des périphériques restants dans le domaine STP lorsque plusieurs ports racine candidats sont disponibles et que les coûts de chemin sont égaux. Cet ID fait 8 octets et inclut à la fois la priorité et l'adresse MAC de l'appareil. La priorité par défaut sur tous les appareils exécutant la version IEEE STP est de 32 768.
Pour déterminer le pont racine, on combine la priorité de chaque pont avec son adresse MAC. Si deux commutateurs ou ponts ont la même valeur de priorité, l'adresse MAC devient la condition de départage pour déterminer qui a l'ID le plus bas (le meilleur). C'est comme ça : si deux commutateurs, A et B - utilisent la priorité par défaut de 32 768, alors l'adresse MAC sera utilisée à la place. Si l'adresse MAC du commutateur A est 0000.0c00.1111 et l'adresse MAC du commutateur B est 0000.0c00.2222, alors le commutateur A deviendrait le pont racine, valeur la plus basse est la meilleure lorsqu'il s'agit d'élire un pont racine.
Par défaut, avant l'élection du pont racine, les BPDU sont envoyées toutes les deux secondes sur tous les ports actifs sur un pont/commutateur — encore une fois, le pont avec l'ID de pont le plus bas (le meilleur) est élu pont racine. on peut modifier l'ID du pont en abaissant sa priorité afin qu'il devienne un pont racine automatiquement. Être capable de faire cela est important dans un grand réseau commuté, cela garantit que les meilleurs chemins sont choisis.
La Figure suivante montre un réseau commuté typique avec des chemins commutés redondants. Tout d'abord, découvrons quel commutateur est la racine ; alors on peut avoir le pont non root devient la racine en changeant la priorité du commutateur.
Switch A Switch B
Default priority 32768 Default priority 32768
MAC "0c00111111111" MAC "0c0022222222"
.------. 100Mbps Fa0/11.------.
| |-------------------------| |
|switch| |switch|
| |-----------------------X-| |
'------' 100Mbps Fa0/12'------'
Block
En regardant la figure, on peut dire que le commutateur A est le pont racine car c'est celui avec l'ID de pont le plus bas. L'interrupteur B doit arrêter l'un de ses ports connecté au commutateur A pour éviter qu'une boucle de commutation ne se produise. Même si le commutateur B ne transmettra pas le port bloqué, il recevra toujours les BPDU.
Pour déterminer quel port STP s'arrêtera sur le commutateur B, il vérifiera d'abord la quantité de bande passante de chaque lien, puis fermera le lien avec la valeur de bande passante la plus faible. Étant donné que les deux liaisons entre le commutateur A et le commutateur B sont de 100 Mbps, STP fermera généralement le plus grand des numéros de port.
Dans cet exemple, 12 est supérieur à 11, donc le port 12 serait mis en mode bloquant.
Changer la priorité par défaut est le meilleur moyen de choisir un pont racine. Ceci est important car il faut que le switch soit le plus proche du centre du réseau pour être le pont racine du réseau afin que STP converge rapidement.
Faisons de Switch B la racine du réseau. Voici la sortie du commutateur B qui montre la priorité par défaut. On utilisera la commande `show spanning-tree` :
```
spanning-tree command:
Switch B(config)# do show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0005.74ae.aa40
Cost 19
Port 1 (FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0012.7f52.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
[output cut]
```
On notera les informations suivantes:
- le commutateur B exécute le protocole IEEE 802.1d (la sortie dit simplement « ieee »)
- la première sortie (ID racine) est l'information de pont racine pour le réseau commuté. L
- le port du commutateur B (appelé port racine) vers le pont racine est le port 1.
- l'ID de pont est l'ID de pont spanning tree réel pour le commutateur B et pour le VLAN 1, répertorié comme VLAN0001—chaque VLAN peut avoir un pont racine différent
- l'adresse MAC du commutateur B est également répertoriée et on peut voir qu'elle est différente de l'adresse MAC du pont racine.
La priorité du commutateur B est 32 768, la valeur par défaut pour chaque commutateur. On le voit répertorié comme 32769, mais l'ID de VLAN réel est ajouté, donc dans ce cas, il affiche 32769 pour le VLAN 1. Le VLAN 2 serait 32770, et ainsi de suite.
Comme on l'a dit, on peut modifier la priorité pour forcer un commutateur à devenir la racine du réseau STP, alors faisons-le maintenant pour le commutateur B. Utiliser la commande suivante pour modifier une priorité de pont sur un commutateur Catalyst :
```
Switch B(config)# spanning-tree vlan 1 priority ?
<0-61440> bridge priority in increments of 4096
Switch B(config)# spanning-tree vlan 1 priority 4096
```
On peut définir la priorité sur n'importe quelle valeur comprise entre 0 et 61440. La définir sur zéro (0) signifie que le commutateur sera toujours un pont racine (en supposant qu'il a également un MAC inférieur à celui d'un autre commutateur dont l'ID de pont est également défini sur 0) et la priorité du pont est définie par incréments de 4096. Si on veut définir un commutateur pour être le pont racine pour chaque VLAN du réseau, il faut alors changer la priorité de chaque VLAN, 0 étant la priorité la plus basse qu'on peut utiliser. Il ne serait pas avantageux de régler tous les commutateurs sur une priorité de 0.
Maintenant qu'on a changé la priorité du commutateur B pour le VLAN 1 à 4096, on a réussi à forcer ce commutateur à devenir la racine :
```
Switch B(config)# do show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 4097
Address 0012.7f52.0280
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 4097 (priority 4096 sys-id-ext 1)
Address 0012.7f52.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
[output cut]
```
L'adresse MAC de la racine et la priorité du pont du commutateur B sont désormais les mêmes, ce qui signifie que le commutateur B est maintenant le pont racine, et il le signale. Connaître la commande `show spanning-tree` est une chose très importante ; on l'utilisera à nouveau vers la fin de ce chapitre.
Il existe encore une autre commande qu'on peut utiliser pour définir le pont racine, et on en parlera lorsqu'on abordera les exemples de configuration de commutateur plus loin dans ce chapitre.
### États du port Spanning Tree
Les ports d'un pont ou d'un commutateur exécutant IEEE 802.1d STP peuvent passer par cinq états différents :
* **Blocking**: Un port bloqué ne transmet pas les trames ; il n'écoute que les BPDU. Le but de l'état de blocage est d'empêcher l’apparition de boucles. Tous les ports sont en état de blocage par défaut lorsque le commutateur est mis sous tension.
* **Listening**: Le port écoute les BPDU pour s'assurer qu'aucune boucle ne se produit sur le réseau avant de transmettre des trames de données. Un port en état d'écoute se prépare à transmettre des trames de données sans remplir la table d'adresses MAC.
* **Learning**: Le port du commutateur écoute les BPDU et apprend tous les chemins du réseau commuté. Un port en état d'apprentissage remplit la table d'adresses MAC mais ne transmet toujours pas les trames de données. Le délai avant signifie le temps qu'il faut pour faire passer un port du mode d'écoute au mode d'apprentissage (ou du mode d'apprentissage au mode de transfert), qui est défini sur 15 secondes par défaut et peut être vu dans la sortie show spanning-tree.
* **Forwarding**: Le port envoie et reçoit toutes les trames de données sur le port ponté. Si le port est toujours un port désigné ou racine à la fin de l'état d'apprentissage, il passe à l'état de transfert.
* **Disabled (techniquement pas un état de transition)**: Un port dans l'état désactivé (administrativement) ne participe pas au transfert de trame ou STP. Un port à l'état désactivé est virtuellement non opérationnel.
Les commutateurs remplissent la table d'adresses MAC dans les modes d'apprentissage et de transfert uniquement.
Les ports de commutation sont le plus souvent en état de blocage ou de transfert. Un port de transfert est généralement un port qui a été déterminé pour avoir le coût le plus bas (le meilleur) pour le pont racine. Mais quand et si le réseau subit un changement de topologie (en raison d'un lien défaillant ou parce que quelqu'un ajoute un nouveau commutateur), on trouvera les ports d'un commutateur en transition entre les états d'écoute et d'apprentissage.
Comme on l'a mentionné, le blocage des ports est une stratégie pour empêcher les boucles réseau. Une fois qu'un commutateur détermine le meilleur chemin vers le pont racine pour sa racine ainsi que tous les ports désignés, tous les autres ports redondants seront en mode bloquant. Les ports bloqués peuvent toujours recevoir des BPDU - ils n'envoient tout simplement pas les trames.
Si un commutateur détermine qu'un port bloqué doit maintenant être le port désigné ou le port racine en raison d'un changement de topologie, il passera en mode d'écoute et vérifier tous les BPDU qu'il reçoit pour s' assurera qu'il ne créera pas de boucle lorsque le port passera en mode de transfert.
### Convergence
La convergence se produit lorsque tous les ports sur les ponts et les commutateurs sont passés aux modes de transfert ou de blocage. Aucune donnée ne sera transmise jusqu'à ce que la convergence soit complète. Lorsque STP converge, toutes les données de l'hôte arrêtent de transmettre ! Donc si on veut continuer à parler aux utilisateurs du réseau (ou rester employé pendant un certain temps), il faut absolument s'assurer que le réseau commuté soit physiquement très bien conçu pour que STP puisse converger rapidement.
La figure suivante montre de très bonnes considérations pour la conception et la mise en œuvre de votre réseau commuté afin que STP converge
efficacement.
STP root
.-------.Bridge priority 4096
.-------------| |-------------.
| | 3560 | |
| .----------| |----------. |
| | '-------' | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
.-------. .-------. .-------.
| |-------| |-------| | Bridge priority
| 3560 | | 3560 | | 3560 | 8192
| |-------| |-------| |
'-------' '-------' '-------'
| | | | | | | | | | | |
.--' | | '--. .--' | | '--. .--' | | '--.
| | | | | | | | | | | |
| .-. .-. | | .-. .-. | | .-. .-. |
| | | | | | | | | | | |
.----. .----. .----. .----. .----. .----.
|2960| |2960| |2960| |2960| |2960| |2960|
'----' '----' '----' '----' '----' '----'
La convergence est vraiment importante car elle garantit que tous les appareils disposent d'une base de données cohérente. Mais ça coûte un peu de temps. Il faut généralement 50 secondes pour passer du mode blocage au mode de transfert, et on ne recommande pas de modifier les minuteurs STP par défaut. (Mais on peut ajuster ces minuteries si nécessaire lorsqu'on dispose d'un grand réseau.) En créant une conception de manière hiérarchique, comme illustré à la figure ci-dessus, on peut faire en sorte que le Core prenne la racine STP, ce qui rendra ensuite le temps de convergence STP agréable et rapide.
Étant donné que le temps de convergence de la topologie spanning-tree typique du blocage au transfert sur un port de commutateur est de 50 secondes, cela pourrait créer des problèmes de délai d'attente sur les serveurs ou hôtes, par exemple, lorsqu'on les redémarre. Pour résoudre ce problème, on peut désactiver le spanning tree sur chaque ports utilisant PortFast.
### Spanning Tree PortFast
Si on a un serveur ou d'autres appareils connectés au commutateur pour lesquels on est totalement sûr qu'il ne créera pas de boucle de commutation si STP est désactivé, on peut utiliser `portfast` sur ces ports. L'utiliser signifie que le port ne passera pas les 50 secondes habituelles pour passer en mode de transfert attendant que STP converge.
```
Switch(config-if)# spanning-tree portfast ?
disable Disable portfast for this interface
trunk
Enable portfast on the interface even in trunk mode
```
Les ports trunk sont utilisés pour connecter des commutateurs ensemble et transmettre des informations VLAN entre eux. Si on veut absolument l'activer sur un port de trunk il ne s'agit pas d'une configuration typique car les ports entre les commutateurs doivent exécuter généralement STP.
Regardons les messages que l'on reçois lorsqu'on active `portfast` sur une interface :
```
Switch(config-if)# spanning-tree portfast
%Warning: portfast should only be enabled on ports connected to a
single host. Connecting hubs, concentrators, switches, bridges,
etc... to this interface when portfast is enabled, can cause
temporary bridging loops.
Use with CAUTION
%Portfast has been configured on FastEthernet0/1 but will only
have effect when the interface is in a non-trunking mode.
Switch(config-if)#Portfast is
```
Portfast est activé sur le port F0/1, mais on notera qu'on a un message assez long invitant à faire attention.
La commande `range` précédente permet de définir plusieurs ports du commutateur en mode portfast ainsi:\\ `Switch(config)# int range fastEthernet 0/1 - 12`\\ `Switch(config-if-range)# spanning-tree portfast`\\ \\ Il faut bien faire attention de ne pas créer de boucles!, il faut être très prudent avec la commande `portfast`.\\ \\ La commande `range` peut être utilisée avec n'importe quelle commande.
### Spanning Tree UplinkFast
`UplinkFast` est une fonctionnalité spécifique à Cisco qui améliore le temps de convergence de STP en cas de défaillance de la liaison. Et, comme avec la commande `portfast`, il faut faire très attention à l'endroit où on utilise cette commande ! La fonction `UplinkFast` est conçue pour s'exécuter dans un environnement commuté lorsque le commutateur a au moins un port racine alternatif/de secours (un port en état de blocage). C'est pourquoi Cisco recommande d'activer `UplinkFast` uniquement pour les commutateurs avec des ports bloqués et, généralement, au niveau de la couche d'accès.
`UplinkFast` permet à un commutateur de trouver des chemins alternatifs vers le pont racine avant que le lien principal ne tombe en panne. Cela signifie que si le lien principal échoue, le lien secondaire viendrait plus rapidement - le port n'attendrait pas le temps de convergence STP normal de 50 secondes. Donc, si on exécuter le 802.1d STP et qu'on a des liens redondants sur les commutateurs de couche d'accès, il faut absolument activer `UplinkFast`. Mais il ne faut pas l'utiliser sur les switchs qui n'ont pas la connaissance implicite de la topologie d'un lien racine alternatif/de sauvegarde qui est généralement utilisé pour la distribution et les commutateurs Core dans une conception Cisco multicouche .
### Spanning Tree BackboneFast
Contrairement à `UplinkFast`, qui est utilisé pour déterminer et corriger rapidement les défaillances de liaison sur le commutateur local, une autre extension STP propriétaire de Cisco appelée `BackboneFast` est utilisé pour accélérer la convergence lorsqu'un lien qui n'est pas directement connecté au commutateur échoue. Si un commutateur exécutant `BackboneFast` reçoit un BPDU inférieur de son pont désigné, il sait qu'un lien sur le chemin vers la racine a échoué. Juste pour être sûr qu'on est clair à ce sujet, un BPDU inférieur est celui qui répertorie le même commutateur pour le pont racine et le pont désigné.
Contrairement à `UplinkFast`, qui n'est configuré que sur des switchs de couche Access ou des switchs avec des liens redondants et au moins un lien en mode blocage, `BackboneFast` doit être activé sur tous les commutateurs Catalyst pour permettre la détection des défaillances de liaison indirecte.
L'activation de BackboneFast est également avantageux car il démarre la reconfiguration du spanning tree plus rapidement - il peut économiser 20 secondes sur la convergence STP de 50 secondes par défaut.
### Protocole RSTP (Rapid Spanning Tree Protocol) 802.1w
**R**apid **S**panning **T**ree **P**rotocole (RSTP) permet d'avoir une bonne configuration STP sur un réseau commuté (quelle que soit la marque des commutateurs) et que toutes les features dont on viens de parler soient intégrées et activées sur chaque commutateur.
Cisco a créé `PortFast`, `UplinkFast` et `BackboneFast` pour « réparer » les insuffisances présentées par la norme IEEE 802.1d. Les inconvénients à ces améliorations réside uniquement dans le fait qu'elles sont la propriété de Cisco et nécessitent une configuration supplémentaire. Mais la nouvelle norme 802.1w (RSTP) s'adresse à tous ces « problèmes » dans un seul paquet: activer simplement RSTP et on est prêt. Il est important de s'assurer que tous les commutateurs du réseau exécutent le protocole 802.1w pour que 802.1w fonctionne correctement !
Cela peut surprendre, mais RSTP peut en fait interagir avec les protocoles STP hérités. Cependant la capacité de convergence intrinsèquement rapide du 802.1w est perdue lorsqu'il interagit avec les ponts hérités.
RSTP n'a pas été conçu pour être un « tout nouveau » protocole, mais plutôt une évolution de la norme 802.1d, avec un temps de convergence plus rapide lorsqu'un changement de topologie se produit. La rétrocompatibilité était indispensable lors de la création de 802.1w.
Le 802.1w est défini dans ces différents états de port :
- Disabled = Discarding
- Blocking = Discarding
- Listening = Discarding
- Learning = Learning
- Forwarding = Forwarding
La détermination du pont racine, des ports racine et des ports désignés n'a pas changé ; Cependant, il faut comprendre le coût de chaque lien pour prendre cette décision. Le tableau suivant montre les coûts IEEE basés sur la bande passante que STP et RSTP utilisent pour déterminer le meilleur chemin vers le pont racine.
^ Vitesse de liaison ^ Coût (Spécification IEEE révisée) ^ Coût (ancienne spécification IEEE) ^
| 10 Go/s | 2 | 1 |
| 1 Go/s | 4 | 1 |
| 100Mb/s | 19 | 10 |
| 10Mb/s | 100 | 100 |
Jetons un coup d'œil à un exemple de la Figure suivante sur la façon de déterminer les ports à l'aide des spécifications de coût IEEE révisées.
MAC Address MAC Adress
0013.8039.9500 0016.80d7.d580
.-------. .-------.
| | | |
|switchA|------------------|switchB|
| |Fa0/2 Gi0/2| |
'-------' '-------'
Fa0/2| |Gi0/1
| |
| |
| |
Fa0/1| |Gi0/1
.-------. .-------.
| | | |
|switchC|------------------|switchD|
| |Fa0/2 Gi0/2| |
'-------' '-------'
MAC Address MAC Adress
0013.8030.5e80 0013.80c7.9700
Quel est le pont racine et quels sont les ports racine et ports désignés ?
SwitchC a l'adresse MAC la plus basse, donc SwitchC devient le pont racine et tous les ports transfèrent les ports désignés sur un pont racine, donc c'est la partie facile. Maintenant, quel est le port racine pour SwitchA ? Si le chemin entre SwitchA et SwitchB était à la fois Gigabit, alors ce coût ne serait que de 4, mais ils sont FastEthernet, donc le coût sur le lien entre SwitchA et SwitchB est de 19. En regardant le coût du lien entre SwitchB et SwitchD, on peut voir qu'il s'agit d'un coût de 4 puisqu'il s'agit d'un lien Gigabit ; cependant, le coût entre SwitchD et SwitchC est de 19 car il s'agit d'un lien FastEthernet, idem pour le lien entre SwitchA et SwitchB. Le coût total de SwitchA à SwitchC via SwitchB et D est de 19+4+19 = 42.
On peut obtenir un coût inférieur si on passe directement de SwitchA à SwitchC avec un coût de 19, donc Fa0/1 sur SwitchA est le port racine. Pour SwitchB, le meilleur chemin passe par SwitchD avec un coût de 4+19 = 23, donc Gi0/1 est le port racine de SwitchB et Gi0/2 est le port racine de SwitchD. On a juste besoin d'un port de transfert sur le lien entre SwitchA et B, et puisque SwitchA a l'ID de pont le plus bas, Fa0/2 sur SwitchA serait un port de transfert. Tout port non répertorié ici passerait en mode bloquant (non désigné) pour arrêter les boucles.
Cependant il ne suffit de trouver le pont racine, puis de déterminer les ports racine, puis les ports désignés. La meilleure façon de comprendre cela est de s'entraîner, alors examinons un autre exemple avec la figure suivante.
MAC Address MAC Adress
0013.8039.9500 0016.80d7.d580
.-------. .-------.
| | | |
|switchA|------------------|switchB|
| |Fa0/2 Gi0/2| |
'-------' '-------'
Fa0/2| | 1Gps | |Gi0/1
| '-------. | |
| | 1Gbps | |
| .--------------------' |
| | | |
| | '------------. |
Fa0/1| | | |Gi0/1
.-------. .-------.
| | | |
|switchC|------------------|switchD|
| |Fa0/2 Gi0/2| |
'-------' '-------'
MAC Address MAC Adress
0013.8030.5e80 0013.80c7.9700
Quel pont est le pont racine ? Étant donné que toutes les priorités sont supposées par défaut, SW-C serait le pont racine car il a l'adresse MAC la plus basse. On peut rapidement voir que SW-D a un port Gigabit direct vers SW-C, ce serait donc le port racine pour SW-D avec un coût de 4. Le meilleur de SW-B
chemin serait également le port Gigabit direct vers SW-C avec un coût de 4, mais qu'en est-il de SW-A ? Le port racine pour SW-A ne serait pas le port direct 100Mbps avec un coût de 19, mais le port Gigabit vers SW-D puis le port Gigabit vers SW-C avec un coût total de seulement 8.
**EtherChannel**: Au lieu d'avoir des liens redondants et de permettre à STP de mettre l'un des liens en mode BLK (bloqué), on peut regrouper les liens et créer une agrégation logique de sorte que les multiples liens apparaissent alors comme un seul.\\ \\ Pour cela on a le choix entre prendre la version Cisco d'**EtherChannel** et la version **IEEE** des protocoles d'agregation de canal de port. La version de Cisco s'appelle **P**ort **A**ggregation **P**rotocol (**PAgP**) et la norme **IEEE 802.3ad** s'appelle **L**ink **A**ggregation **C**ontrol **P**rotocol (**LACP**). Les deux versions fonctionnent aussi bien, mais la façon dont on les configure est différente. On va regrouper quelques liens vers la fin de ce chapitre pour démontrer cela.
On va voir comment configurer RSTP plus loin dans ce chapitre. C'est assez facile, en fait.
## Configuration des Commutateurs
Après avoir parcouru les commandes de base dans ce chapitre, on va voir dans le chapitre suivant, comment configurer des réseaux locaux virtuels (VLAN) plus Inter-Switch Link (ISL), trunk 802.1q et protocole Virtual Trunk (VTP) de Cisco.
Voici une liste des tâches de base qu'on verra dans les sections suivantes :
- Fonctions administratives
- Configuration de l'adresse IP et du masque de sous-réseau
- Configuration de la passerelle IP par défaut
- Paramétrage de la sécurité des ports
- Configuration de PortFast
- Activation de BPDUGuard et BPDUFilter
- Activation de UplinkFast
- Activation de BackboneFast
- Activation de RSTP (802.1w)
- Activation d'EtherChannel
- Configuration d'un commutateur racine STP
On utilisera le schéma suivant pour configurer dans ce chapitre ainsi que dans Chapitre 11 l'interréseau.
Clients Clents
.-----. Phone A Phone B .-----.
|[c] | .----.` '.----. |[c] |
| | | || || | | |
.-----. | || || | .-----.
| | .----.` '.----. |
| | | | |
v | | | |
.-------. .-------. .-------.
| |---------------| |---------------| |
|switch | |switch | |switch |
| |---------------| |---------------| |
'-------' '-------' '-------'
|S1 Core S2
|
.---+---.
|[PK] |
| |
| |
'-------'
[c]: {"a2s:type":"computer","a2s:delref":true}
[PK]: {"fill":"#FFAAAA","a2s:delref":true}
### Configuration d'un commutateur
Lorsqu'on connecte les commutateurs les uns aux autres, comme le montre la figure, on utilisera un câble croisé entre les commutateurs. Cependant les commutateurs plus récents détectent automatiquement le type de connexion, on peut donc utiliser des câbles droits. Différents commutateurs ont des besoins et des capacités différents, alors garder cela à l'esprit lorsqu'on connecte différents commutateurs ensemble.
Lorsqu'on connecte pour la première fois les ports du commutateur les uns aux autres, les voyants de liaison sont orange puis deviennent verts pour indiquer un fonctionnement normal. Il s'agit de la convergence de spanningtree, et ce processus prend environ 50 secondes sans extensions activées. Mais si on se connecte à un port de commutateur et le voyant du port du commutateur alterne vert et orange, cela signifie que le port rencontre des erreurs. Si cela se produit, vérifier la carte NIC hôte ou le câblage.
Commençons la configuration en se connectant à chaque commutateur et en définissant les fonctions administratives.
#### S1
On attribue également une adresse IP à chaque switch, mais ce n'est pas vraiment nécessaire pour faire fonctionner le réseau. La seule raison pour laquelle on le fait est qu'on peut le gérer/l'administrer à distance, via telnet par exemple. Utilisons un schéma IP simple comme 192.168.10.16/28:
```
Switch> en
Switch# config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)# hostname S1
S1(config)# enable secret todd
S1(config)# int f0/1
S1(config-if)# description 1st Connection to Core Switch
S1(config-if)# int f0/2
S1(config-if)# description 2nd Connection to Core Switch
S1(config-if)# int f0/3
S1(config-if)# description Connection to HostA
S1(config-if)# int f0/4
S1(config-if)# description Connection to PhoneA
S1(config-if)# int f0/8
S1(config-if)# description Connection to IVR
S1(config-if)# line console 0
S1(config-line)# password console
S1(config-line)# login
S1(config-line)# exit
S1(config)# line vty 0 ?
<1-15> Last Line number
S1(config)# line vty 0 15
S1(config-line)# password telnet
S1(config-line)# login
S1(config-line)# int vlan 1
S1(config-if)# ip address 192.168.10.17 255.255.255.240
S1(config-if)# no shut
S1(config-if)# exit
S1(config)# banner motd # This is the S1 switch #
S1(config)# exit
S1# copy run start
Destination filename [startup-config]? [enter]
Building configuration...
[OK]
S1#
```
La première chose à noter à ce sujet est qu'il n'y a pas d'adresse IP configurée sur les interfaces physiques du commutateur. Étant donné que tous les ports d'un commutateur sont activé par défaut, il n'y a pas grand chose à configurer. L'adresse IP est configurée sous une interface logique, appelée domaine de gestion ou VLAN. On utilisera généralement le VLAN 1 par défaut pour gérer un réseau commuté, comme on le fait ici. Le reste de la configuration est essentiellement le même que le processus qu'on suit pour la configuration du routeur. Il faut se rappeler, pas d'adresses IP sur les interfaces de commutateur physiques, pas de protocoles de routage, etc. On effectue la commutation de couche 2 à ce stade, pas le routage ! Il faut également noter qu'il n'y a pas de port auxiliaire sur les commutateurs Cisco.
#### S2
Voici la configuration S2 :
```
Switch# config t
Switch(config)# hostname S2
S2(config)# enable secret todd
S2(config)# int fa0/1
2(config-if)# description 1st Connection to Core
S2(config-if)# int fa0/2
S2(config-if)# description 2nd Connection to CoreS2(config-if)# int fa0/3
S2(config-if)# description Connection to HostB
S2(config-if)# int fa0/4
S2(config-if)# description Connection to PhoneB
S2(config-if)# line con 0
S2(config-line)# password console
S2(config-line)# login
S2(config-line)# exit
S2(config)# line vty 0 ?
<1-15> Last Line number
S2(config)# line vty 0 15
S2(config-line)# password telnet
S2(config-line)# login
S2(config-line)# int vlan 1
S2(config-if)# ip address 192.168.10.18 255.255.255.240
S2(config-if)# no shut
S2(config-if)# exit
S2(config)# banner motd # This is my S2 Switch #
S2(config)# exit
S2# copy run start
Destination filename [startup-config]? [enter]
Building configuration...
[OK]
S2#
We should now be able to ping from S2 to S1. Let’s try it:
S2# ping 192.168.10.17
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.17, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
S2#
```
On doit maintenant pouvoir envoyer un ping de S2 à S1:
```
S2# ping 192.168.10.17
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.17, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
S2#
```
Comment peut-on envoyer un ping via le commutateur Core si on ne l'a pas encore configuré, et pourquoi on n'a eu que quatre pings pour fonctionner à la place des cinq? (Le premier point [.] est un temps mort ; le point d'exclamation [!] est un succès.):\\ - on n'a pas besoin que le commutateur soit configuré pour le faire fonctionner. Tous les ports sont activés par défaut, donc en l'activant, on doit pouvoir communiquer entre les hôtes connectés.\\ - le premier ping n'a pas fonctionné à cause du temps que prend ARP pour résoudre l'adresse IP en son adresse MAC matérielle correspondante.
#### Core
Voici la configuration du commutateur Core :
```
Switch> en
Switch# config t
Switch(config)# hostname Core
Core(config)# enable secret todd
Core(config)# int f0/5
Core(config-if)# description 1st Connection to S2
Core(config-if)# int fa0/5
Core(config-if)# description 2nd Connection to S2
Core(config-if)# int f0/7
Core(config-if)# desc 1st Connection to S1
Core(config-if)# int f0/8
Core(config-if)# desc 2nd Connection to S1
Core(config-if)# line con 0
Core(config-line)# password console
Core(config-line)# login
Core(config-line)# line vty 0 15
Core(config-line)# password telnet
Core(config-line)# login
Core(config-line)# int vlan 1
Core(config-if)# ip address 192.168.10.19 255.255.255.240
Core(config-if)# no shut
Core(config-if)# exit
Core(config)# banner motd # This is the Core Switch #
Core(config)# exit
Core# copy run start
Destination filename [startup-config]? [enter]
Building configuration...
[OK]
Core#
```
Maintenant, pingons sur S1 et S2 à partir du commutateur Core et voyons ce qui se passe :
```
Core# ping 192.168.10.17
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 192.168.10.17, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
Core# ping 192.168.10.18
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.18, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
Core# sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.10.18 0 001a.e2ce.ff40 ARPA Vlan1
Internet 192.168.10.19 - 000d.29bd.4b80 ARPA Vlan1
Internet 192.168.10.17 0 001b.2b55.7540 ARPA Vlan1
Core#
```
Lorsqu'on souhaite gérer les switchs depuis l'extérieur du réseau local, il faut définir une passerelle par défaut sur les commutateurs, comme on le ferait avec un hôte. Pour cela on utilise la commande `ip default-gateway` dans la configuration globale. Voici un exemple où le routeur a une adresse IP utilisant la dernière adresse IP de la plage de sous-réseau (on utilisera le routeur dans le prochain chapitre, sur les VLAN) :
```
Core# config t
Enter configuration commands, one per line. End with CNTL/Z.
Core(config)# ip default-gateway 192.168.10.30
Core(config)# exit
Core#
```
#### Sécurité des ports
Comme on l'a dit plus tôt dans le chapitre, ce n'est généralement pas une bonne chose d'avoir les commutateurs disponibles pour que quiconque puisse simplement s'y connecter.
En utilisant la sécurité des ports, on peut limiter le nombre d'adresses MAC pouvant être attribuées dynamiquement à un port, définir adresses MAC statiques et, définir des pénalités pour les utilisateurs qui abusent. Par exemple on peut fermer le port lorsque la politique de sécurité est violée, puis obliger les agresseurs à se justifier avant d'activer à nouveau leur port. Cela aide généralement vraiment à se souvenir de bien se comporter !
On peut choisir d'autoriser le commutateur à apprendre ces valeurs de manière dynamique, ou on peut définir des adresses statiques pour chaque port à l'aide de la commande `switchport port-security mac-address {mac-address}`.
On va donc définir la sécurité des ports sur le commutateur S1. Les ports fa0/3 et fa0/4 n'ont qu'un seul périphérique connecté dans le laboratoire. En utilisant la sécurité des ports, on peut savoir avec certitude qu'aucun autre appareil ne peut se connecter une fois que l'hôte sur le port Fa0/3 et le téléphone sur Fa0/4 sont connectés. Voici comment procéder:
```
know for certain that no other device can connect once our host in port Fa0/3 and the phone in Fa0/4 are connected. Here’s how we’ll do that:
S1# config t
Enter configuration commands, one per line. End with CNTL/Z.
S1(config)# int range fa0/3 - 4
S1(config-if-range)# switchport mode access
S1(config-if-range)# switchport port-security
S1(config-if-range)# switchport port-security maximum ?
<1-8192> Maximum addresses
S1(config-if-range)# switchport port-security maximum 1
S1(config-if-range)# switchport port-security mac-address sticky
S1(config-if-range)# switchport port-security violation ?
protect Security violation protect mode
restrict Security violation restrict mode
shutdown Security violation shutdown mode
S1(config-if-range)# switchport port-security violation shutdown
S1(config-if-range)# exit
```
Les premières commandes qu'on a tapé définissent le mode des ports sur les ports « d'access », car ils sont définis sur « désirable » par défaut, ce qui signifie qu'ils « désirent » se connecter à un quelconque commutateur. On ne peut pas définir la sécurité des ports sur un port en mode souhaitable. Après avoir activé la sécurité sur les ports, on a mis la sécurité du port sur le port fa0/3 et fa0/4 pour permettre une association maximale d'une adresse MAC, et seulement la première adresse MAC associé au port pourra envoyer des trames via le commutateur. Si un deuxième appareil avec une adresse MAC différente tentait d'envoyer une trame dans le commutateur, le port serait fermé à cause de le commande de violation. La commande `sticky` permet d'éviter de taper les adresses MAC de chaque appareil à la main !
Maintenant, vérifions la sécurité du port sur l'un des ports à l'aide de la commande `show port-security interface` :
```
S1#sh port-security interface f0/3
Port Security : Enabled
Port Status : Secure-down
Violation Mode : shutdown
Aging Time : 2 mins
Aging Type : Inactivity
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 1
Total MAC Addresses : 0
Configured MAC Addresses : 0
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0000.0000.0000:0
Security Violation Count : 0
```
Il existe deux autres modes que on peut utiliser au lieu de simplement fermer le port. Le mode de protection signifie qu'un autre hôte peut se connecter mais les trames seront simplement supprimées. Le mode Restreindre avertit via SNMP qu'une violation s'est produite sur un port.
Dans la connexion avec les commutateurs, on a des liens redondants, il est donc préférable de laisser STP s'exécuter sur ces liens (pour l'instant). Mais sur les switchs S1 et S2, on a également des hôtes connectés aux ports fa0/3 et fa0/4 (pas le Core). Désactivons donc STP sur ces ports.
Il faut comprendre que les hôtes peuvent se connecter directement physiquement à l'arrière des téléphones, car les téléphones disposent généralement d'une prise Ethernet. On a donc vraiment besoin que d'un seul port sur le commutateur pour les deux appareils. On y reviendra en détail dans la section téléphonie du chapitre 11.
#### PortFast
Si on utilise la commande **portfast**sur les commutateurs, on évite que les hôtes ne puissent éventuellement pas recevoir d'adresse DHCP car STP met beaucoup trop de temps à converger et la requête DHCP de l'hôte expire. On va donc utiliser `PortFast` sur le port fa0/3 et fa0/4 sur les commutateurs S1 et S2 :
```
S1# config t
S1(config)# int range f0/3 - 4
S1(config-if-range)# spanning-tree portfast ?
disable Disable portfast for this interface
trunk Enable portfast on the interface even in trunk mode
S1(config-if-range)# spanning-tree portfast
%Warning: portfast should only be enabled on ports connected to a
single host. Connecting hubs, concentrators, switches, bridges,
etc... to this interface when portfast is enabled, can cause
temporary bridging loops.
Use with CAUTION
%Portfast will be configured in 2 interfaces due to the range command
but will only have effect when the interfaces are in a non-trunking mode.
S1(config-if-range)#
```
Maintenant qu'on ai configuré S1, on également activer **PortFast** sur fa0/3-4 de S2. Encore une fois, il faut être prudent lors de l'utilisation de **PortFast** - on ne veut certainement pas créer une boucle réseau ! Pourquoi? Parce que si on laisse cela arriver, même si le réseau peut toujours fonctionner (enfin, en quelque sorte), les données passeront très lentement, et pire, cela pourrait prendre très longtemps pour trouver la source du problème. Il existe des commandes de sauvegarde qu'on peut utiliser lors de l'utilisation de **PortFast** au cas où quelqu'un causerait accidentellement une boucle dans un port configuré avec **PortFast** activé. Les voici:
* **BPDUGuard**: si on active **PortFast** pour un port de commutateur, activer **BPDUGuard** est une très bonne idée. Si un port de commutateur qui a **PortFast** activé reçoit un BPDU sur ce port, il placera le port dans l'état d'erreur désactivé. Cela empêche un administrateur d'accidentellement connecter un autre port de commutateur ou de concentrateur à un port de commutateur configuré avec **PortFast**. Cela permet d'empêcher (garder) que cela se produise et faire tomber, ou au moins gravement paralyser, le réseau. On ne configurera cette commande que sur les commutateurs de couche d'accès - commutateurs où les utilisateurs sont directement connectés, donc pas sur le commutateur Core.
* **BPDUFilter**: Étant donné qu'un port de commutateur sur lequel **PortFast** est activé recevra toujours des BPDU par défaut, on peut utiliser **BPDUFilter** pour empêcher complètement les BPDU d'entrer ou de sortir de ce port. Le filtrage **BPDUFilter** retirera immédiatement un port de **PortFast** s'il reçoit un BPDU et force le port à faire à nouveau partie de la topologie STP. Contrairement à **BPDUGuard**, qui place le port en erreur désactivé, **BPDUFilter** gardera un port actif, mais sans l'exécution de **PortFast**. Il n'y a aucune raison de recevoir des BPDU sur une interface configuré avec **PortFast**.
Pour configurer les interfaces S1 et S2 qui sont déjà configurées avec **PortFast** avec **BPDUGuard** et **BPDUFilter**, c'est simple :
```
S1(config-if-range)# spanning-tree bpduguard ?
disable Disable BPDU guard for this interface
enable Enable BPDU guard for this interface
S1(config-if-range)# spanning-tree bpduguard enable
S1(config-if-range)# spanning-tree bpdufilter ?
disable Disable BPDU filtering for this interface
enable Enable BPDU filtering for this interface
S1(config-if-range)# spanning-tree bpdufilter enable
S2(config-if-range)# spanning-tree bpduguard enable
S2(config-if-range)# spanning-tree bpdufilter enable
```
On notera qu'on peut généralement utiliser ensemble la commande **bpduguard** ou la commande **bpdufilter**, bien que l'application des deux commandes à la même interface sembleraient intrinsèquement en désaccord l'une avec l'autre. A la réception d'un BPDU, **bpduguard** désactiverait par erreur le port à la réception d'un BPDU. La configuration des deux commandes est donc quelque peu exagérée.
On va également configurer quelques autres extensions STP 802.1d qu'on peut utiliser lors de la configuration de STP.
#### UplinkFast
Voici comment configurer **UplinkFast** sur les commutateurs de couche d'accès (S1 et S2) :
```
S1# config t
S1(config)# spanning-tree uplinkfast
S2# config t
S2(config)# spanning-tree uplinkfast
S1(config)# do show spanning-tree uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs) : 1
Number of proxy multicast addresses transmitted (all VLANs) : 8
Name Interface List
-------------------- ------------------------------------
VLAN0001 Fa0/1(fwd), Fa0/2
S1(config)#
```
La commande **uplinkfast** est une commande globale et elle est activée sur chaque port.
#### BackboneFast
```
S1(config)# spanning-tree backbonefast
S2(config)# spanning-tree backbonefast
Core(config)# spanning-tree backbonefast
S2(config)# do show spanning-tree backbonefast
BackboneFast is enabled
BackboneFast statistics
-----------------------
Number of transition via backboneFast (all VLANs) : 0
Number of inferior BPDUs received (all VLANs) : 2
Number of RLQ request PDUs received (all VLANs) : 0
Number of RLQ response PDUs received (all VLANs) : 1
Number of RLQ request PDUs sent (all VLANs) : 1
Number of RLQ response PDUs sent (all VLANs) : 0
S2(config)#
```
On remarquera que contrairement à ce qu'on a fait avec **UplinkFast**, on a configuré **BackboneFast** sur tous les commutateurs du réseau, pas seulement le commutateur d'Acces de couche.
**BackboneFast** est utilisé pour déterminer les échecs de liaison de chemin racine indirectement connectés sur un commutateur distant, contrairement à **UplinkFast**, qui est utilisé pour
déterminer et corriger rapidement les défaillances de liaison sur le commutateur local.
#### RSTP (802.1w)
La configuration de RSTP est en fait aussi simple que la configuration de n'importe laquelle de nos autres extensions 802.1d. Considérant à quel point c'est mieux que 802.1d, on penserait la configuration serait plus complexe, mais ce n'est pas le cas.
Activons-la maintenant dans le commutateur Core et voyons ce qui se passe :
```
Core# config t
Core(config)# spanning-tree mode ?
mst Multiple spanning tree mode
pvst Per-Vlan spanning tree mode
rapid-pvst Per-Vlan rapid spanning tree mode
Core(config)# spanning-tree mode rapid-pvst
Core(config)#
1d02h: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1,
changed state to down
1d02h: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1,
changed state to up
```
Le commutateur Core exécute maintenant le STP 802.1w:
```
Core(config)# do show spanning-tree
VLAN0001
Spanning tree enabled protocol rstp
Root ID Priority 32769
Address 000d.29bd.4b80
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000d.29bd.4b80
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
--------------- ---- --- ------- -------- ------------
Fa0/5 Desg FWD 19 128.5 P2p Peer(STP)
Fa0/6 Desg FWD 19 128.6 P2p Peer(STP)
Fa0/7 Desg FWD 19 128.7 P2p Peer(STP)
Fa0/8 Desg FWD 19 128.8 P2p Peer(STP)
```
Intéressant… on dirait que rien ne s'est vraiment passé. On peut voir sur les deux autres commutateurs que tous les ports ont convergé. Une fois que tout était en place, tout se ressemble. 802.1d et 802.1w semblent cohabiter sans problème.
Mais, si on regarde de plus près, on verra que le commutateur 802.1w est passé des BPDU 802.1w aux BPDU 802.1d sur le ports se connectant aux autres commutateurs exécutant 802.1d (tous).
Les commutateurs S1 et S2 pensent que le commutateur Core exécute en fait 802.1d, car le Core est revenu aux BPDU 802.1d juste pour eux.
Et même si les commutateurs S1 et S2 reçoivent les BPDU 802.1w, ils ne les comprennent pas, alors ils les abandonnent simplement. Cependant, le core reçoit les BPDU 802.1d et les accepte des commutateurs S1 et S2, sachant maintenant sur quels ports exécuter 802.1d. En d'autres termes, activer 802.1w pour un seul commutateur n'a pas vraiment aidé le réseau du tout !
Un petit problème ennuyeux est que, comme le commutateur Core sait envoyer des BPDU 802.1d sur les ports connectés à **S1** et **S2**, cela ne changera pas automatiquement si les commutateurs S1 et S2 étaient configurés ultérieurement avec 802.1w, on aurait toujours besoin de redémarrer le commutateur Core pour arrêter les BPDU 802.1d.
#### EtherChannel
Il existe deux versions des protocoles de négociation EtherChannel, la version Cisco et la version IEEE. On va utiliser la version Cisco et regrouper les liens entre le commutateur **S1** et le Core.
On utilisera la commande globale interface `port-channel` et les commandes d'interface `channel-group` et `channel-protocol` sur les commutateurs S1 et Core.
Voici à quoi cela ressemble :
```
S1# config t
S1(config)# int port-channel 1
S1(config-if)# int range f0/1-2
S1(config-if-range)# switchport mode trunk
1d03h: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/2
moved to Forwarding (UplinkFast).
S1(config-if-range)# switchport nonegotiate
S1(config-if-range)# channel-group 1 mode desirable
S1(config-if-range)# do sh int fa0/1 etherchannel
Port state = Up Sngl-port-Bndl Mstr Not-in-Bndl
Channel group = 1 Mode = Desirable-Sl Gcchange = 0
Port-channel = null GC = 0x00010001 Pseudo port-channel = Po1
Port index = 0 Load = 0x00 Protocol = PAgP
[output cut]
```
```
Core# config t
Core(config)# int port-channel 1
Core(config-if)# int range f0/7-8
Core(config-if-range)# switchport trunk encap dot1q
Core(config-if-range)# switchport mode trunk
1d03h: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/2
moved to Forwarding (UplinkFast).
Core(config-if-range)# switchport nonegotiate
Core(config-if-range)# channel-group 1 mode desirable
1d04h: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/2
moved to Forwarding (UplinkFast).
1d04h: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/2
moved to Forwarding (UplinkFast).
1d04h: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
1d04h: %LINEPROTO-5-UPDOWN: Line protocol on Interface
Port-channel1, changed state to up
Core(config-if-range)# do show int port-channel 1
Port-channel1 is up, line protocol is up (connected)
Hardware is EtherChannel, address is 001b.2b55.7501 (bia 001b.2b55.7501)
MTU 1500 bytes, BW 200000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Full-duplex, 100Mb/s, link type is auto, media type is unknown
[output cut]
```
On a ajouté la commande d'interface `switchport nonegotiate` pour empêcher les commutateurs d'essayer de détecter automatiquement les types de liens et également de configurer automatiquement trunk; au lieu de cela, on a configuré statiquement les liens trunk. Les deux liens entre le S1 et le Core sont désormais regroupés à l'aide de Cisco EtherChannel version de PAgP.
## Vérification des commutateurs
La première chose à faire avec n'importe quel routeur ou commutateur est de parcourir les configurations avec une commande `show running-config`. Pourquoi? Parce que faire ça
donne une très bonne photo de chaque appareil. Cependant examiner toutes les configurations prendrait du temps. En outre, on peuts exécuter d'autres commandes qui fourniront toujours de très bonnes informations.
Par exemple, pour vérifier l'adresse IP définie sur un commutateur, on peut utiliser la commande `show interface`. Voici la sortie :
```
S1# sh int vlan 1
Vlan1 is up, line protocol is up
Hardware is EtherSVI, address is 001b.2b55.7540 (bia 001b.2b55.7540)
Internet address is 192.168.10.17/28
MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set, reliability 255/255,
txload 1/255, rxload 1/255
[output cut]
```
les adresses IP ne sont pas nécessaires sur un commutateur pour fonctionner. La seule raison pour laquelle on définit une adresse IP, un masque et une passerelle par défaut est à des fins de gestion.
### show mac address-table
La commande `show mac address-table` affiche la table de filtrage avant, également appelée ccontent addressablememory (CAM). Voici la sortie du commutateur **S1**:
```
S1# sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU
All ffff.ffff.ffff STATIC CPU
[output cut]
1 0002.1762.b235 DYNAMIC Po1
1 0009.b79f.c080 DYNAMIC Po1
1 000d.29bd.4b87 DYNAMIC Po1
1 000d.29bd.4b88 DYNAMIC Po1
1 0016.4662.52b4 DYNAMIC Fa0/4
1 0016.4677.5eab DYNAMIC Po1
1 001a.2f52.49d8 DYNAMIC Po1
1 001a.2fe7.4170 DYNAMIC Fa0/8
1 001a.e2ce.ff40 DYNAMIC Po1
1 0050.0f02.642a DYNAMIC Fa0/3
Total Mac Addresses for this criterion: 31
S1#
```
Les commutateurs utilisent ce qu'on appelle les adresses MAC de base qui sont attribuées au CPU. À partir de la sortie précédente, on peut voir qu'on a sept adresses MAC attribuées dynamiquement au port EtherChannel 1. Les ports Fa0/3, Fa0/8 et Fa0/4 n'ont qu'un seul MAC adresse attribuée et tous les ports sont attribués au VLAN 1.
Jetons un coup d'œil à la CAM du commutateur **S2** et voyons ce qu'on peut trouver. Garder à l'esprit que le commutateur **S2** n'a pas configuré EtherChannel comme Le commutateur **S1** le fait, donc STP fermera l'une des liaisons redondantes vers le commutateur principal :
```
S2# sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0008.205a.85c0 STATIC CPU
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0100.0cdd.dddd STATIC CPU
[output cut]
1 0002.1762.b235 DYNAMIC Fa0/3
1 000d.29bd.4b80 DYNAMIC Fa0/1
1 000d.29bd.4b85 DYNAMIC Fa0/1
1 0016.4662.52b4 DYNAMIC Fa0/1
1 0016.4677.5eab DYNAMIC Fa0/4
1 001b.2b55.7540 DYNAMIC Fa0/1
Total Mac Addresses for this criterion: 26
S2#
```
On peut voir dans la sortie précédente qu'on a quatre adresses MAC attribuées à Fa0/1. Et bien sûr, on peut également voir qu'on a une connexion pour chaque hôte sur les ports 3 et 4. Mais où est le port 2 ? Le port 2 étant une liaison redondante, STP a placé Fa0/2 en mode bloquant.
### Assigner une adresse MAC statique
On peut définir une adresse MAC statique dans la table d'adresses MAC, mais cela demande beaucoup de travail:
```
S1# config t
S1(config)# mac-address-table static aaaa.bbbb.cccc vlan 1 int fa0/5
S1(config)# do show mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU
[output cut]
1 0002.1762.b235 DYNAMIC Po1
1 0009.b79f.c080 DYNAMIC Po1
1 000d.29bd.4b87 DYNAMIC Po1
1 000d.29bd.4b88 DYNAMIC Po1
1 0016.4662.52b4 DYNAMIC Fa0/4
1 0016.4677.5eab DYNAMIC Po1
1 001a.2f52.49d8 DYNAMIC Po1
1 001a.2fe7.4170 DYNAMIC Fa0/8
1 001a.e2ce.ff40 DYNAMIC Po1
1 0050.0f02.642a DYNAMIC Fa0/3
1 aaaa.bbbb.cccc STATIC Fa0/5
Total Mac Addresses for this criterion: 31
S1(config)#
```
On peut voir qu'une adresse MAC statique est désormais attribuée de manière permanente à l'interface Fa0/5 et qu'elle est également attribuée au VLAN 1 uniquement comme indiqué sur le côté gauche de la sortie.
### show spanning-tree
La commande `show spanning-tree` est importante. Avec elle, on peut voir qui le root bridge est et quelles sont nos priorités pour chaque VLAN.
Par défaut, les commutateurs Cisco exécutent ce qu'on appelle l'arbre couvrant par VLAN (PVST), ce qui signifie essentiellement que chaque VLAN exécute sa propre instance du protocole STP. Si on utilise `show spanning-tree`, on recevra des informations pour chaque VLAN, en commençant par le VLAN 1. Donc, lorsqu'on a plusieurs VLAN et qu'on veut voir ce qui se passe, par exemple, avec VLAN 2 - on utilisera la commande `show spanning-tree vlan 2`.
Voici une sortie de la commande `show spanning-tree` du commutateur S1. Puisqu'on n'utilise que le VLAN 1, on n'a pas besoin d'ajouter le numéro de VLAN à la commande :
```
S1# sh spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000d.29bd.4b80
Cost 3012
Port 56 (Port-channel1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 49153 (priority 49152 sys-id-ext 1)
Address 001b.2b55.7500
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
Uplinkfast enabled
Interface Role Sts Cost Prio.Nbr Type
--------------- ---- --- ------- ------- ----------
Fa0/3 Desg FWD 3100 128.3 Edge Shr
Fa0/4 Desg FWD 3019 128.4 Edge P2p
Fa0/8 Desg FWD 3019 128.8 P2p
Po1 Root FWD 3012 128.56 P2p
```
Puisque n'on n'a que le VLAN 1 configuré, il n'y a plus de sortie pour cette commande, mais si on en avait plus, on obtiendrait une autre page pour chaque VLAN configuré sur le commutateur. La priorité par défaut est 32768, mais il y a quelque chose appelé l'extension d'ID système (sys-id-ext), qui est l'identifiant de VLAN. La priorité d'ID de pont est incrémentée par le numéro de ce VLAN. Et comme on n'a que le VLAN 1, on incrémente de un à 32769. Mais il faut comprendre que par défaut, `BackboneFast` élève la priorité par défaut à 49152 pour empêcher ce pont de devenir la racine.
Le haut de la sortie montre qui est le pont racine :
```
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000d.29bd.4b80
Cost 3012
Port 56 (Port-channel1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
```
EtherChannel Port 1 est le port racine, ce qui signifie que c'est le chemin choisi vers le pont racine, et il a un identifiant de 000d.29bd.4b80. Ce ne peut être que le commutateur **Core** ou **S2**, et on découvrira lequel il s'agit dans une minute.
La dernière sortie de la commande affiche les ports qui exécutent STP et ont une connexion à un autre périphérique. Parce qu'on a EtherChannel, on n'a pas de ports bloqués. Une façon de déterminer si le pont n'est pas la racine est de voir s'il existe des ports `Altn BLK` (c'est-à-dire les ports bloqués qui sont des suppléants). Un pont racine n'aurait jamais de port bloqué sur aucune interface, mais tous les ports sur **S1** s'affichent transmission (FWD) en raison de le configuration EtherChannel.
### Déterminer le Root Bridge
Pour déterminer lee pont racine, on utilisera évidemment la commande `show spanning-tree`. Jetons un coup d'œil au deux autres commutateurs et voyons lesquels est le pont racine par défaut. Noter mentalement l'adresse MAC de l'ID du pont ainsi que la priorité du commutateur **S1**. Voici la sortie **S2** :
```
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000d.29bd.4b80
Cost 3019
Port 2 (FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 49153 (priority 49152 sys-id-ext 1)
Address 001a.e2ce.ff00
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Uplinkfast enabled
Interface Role Sts Cost Prio.Nbr Type
--------------- ---- --- ------- -------- ------------
Fa0/1 Root FWD 3019 128.2 P2p
Fa0/2 Altn BLK 3019 128.3 P2p
Fa0/3 Desg FWD 3100 128.4 Edge Shr
Fa0/4 Desg FWD 3019 128.5 Edge P2p
S2#
```
On peut voir que le port Fa0/2 est bloqué, donc ce commutateur ne peut pas être le pont racine. Un pont racine ne peut pas avoir de ports bloqués. Encore une fois, noter l'adresse MAC de l'ID de pont et à la priorité en haut de la sortie, qui fournit nos informations de pont racine. Voici la sortie du commutateur Core :
```
Core# sh spanning-tree
VLAN0001
Spanning tree enabled protocol rstp
Root ID Priority 32769
Address 000d.29bd.4b80
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000d.29bd.4b80
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
--------------- ---- --- ------- -------- --------------
Fa0/5 Desg FWD 19 128.5 P2p Peer(STP)
Fa0/6 Desg FWD 19 128.6 P2p Peer(STP)
Po1 Desg FWD 12 128.66 P2p Peer(STP)
```
Mais pourquoi le commutateur Core a-t-il simplement la valeur par défaut de 32768 et non de 49152 comme les autres commutateurs ? Parce qu'il exécute la version 802.1w de STP et BackboneFast est désactivé par défaut.
Jetons un coup d'œil à l'adresse MAC du pont de chaque commutateur :
```
Adresse S1 : 001b.2b55.7500
Adresse S2 : 001a.e2ce.ff00
Adresse Core : 000d.29bd.4b80
```
En vérifiant les adresses MAC et si tous les commutateurs sont définis sur la priorité par défaut, quel commutateur devrait être le commutateur racine ? Lire les adresses MAC de la gauche vers la droite. Core est évidemment l'adresse MAC la plus basse, et en regardant la sortie du `show spanning-tree`, on peut voir qu'il s'agit bien du pont racine (même si tous les commutateurs avaient la même priorité). C'est une bonne pratique de comprendre comment identifier le potentiel pont racine en comparant de temps en temps les adresses MAC des commutateurs.
### Définir le Root Bridge
C'est plutôt pratique que le commutateur Core soit le pont racine par défaut, car c'est là qu'on choisirais généralement de définir la racine. Mais on peut le changer:
```
S1# config t
S1(config)# spanning-tree vlan 1 priority ?
<0-61440> bridge priority in increments of 4096
S1(config)# spanning-tree vlan 1 priority 16384
S1(config)# do show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 16385
Address 001b.2b55.7500
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16385 (priority 16384 sys-id-ext 1)
Address 001b.2b55.7500
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
--------------- ---- --- ------- -------- -----------
Fa0/3 Desg FWD 100 128.3 Edge Shr
Fa0/4 Desg FWD 19 128.4 Edge P2p
Fa0/8 Desg FWD 19 128.8 P2p
Po1 Desg FWD 12 128.56 P2p
```
Lorsqu'on abaisse la priorité S1 à 16384, le commutateur S1 est immédiatement devenu le pont racine. on peut définir les priorités de 0 à 61440. Zéro (0) signifie que le commutateur sera toujours le pont racine (à moins qu'un autre commutateur avec sa priorité de pont également définie sur 0 ait une adresse MAC inférieure) et 61440 signifie que le commutateur ne sera jamais une racine.
Voici une commande simple qu'on peut exécuter sur un commutateur pour le définir comme pont racine : `S1(config)# spanning-tree vlan 1 root primary`\\ \\ Il faut configurer cela par VLAN, et on peut également définir un commutateur principal et secondaire en tant que racines.
## Résumé
Dans ce chapitre, on a parlé des différences entre les commutateurs et les ponts et de la façon dont ils fonctionnent tous les deux au niveau de la couche 2 et créent une table MAC de forward/filter des afin de prendre des décisions sur le transfert ou l'inondation d'une trame.
On a également discuté des problèmes qui peuvent survenir si on a plusieurs liens entre les ponts (commutateurs) et comment résoudre ces problèmes en utilisant le Protocole Spanning Tree (STP).
Enfin, on a vu la configuration détaillée des commutateurs, et la vérification de la configuration, la définition des extensions Cisco STP et changer le pont racine en définissant une priorité de pont.
## Essentiels de l'examen
**Les trois fonctions essentielles d'un commutateur**: L'apprentissage d'adresse, les décisions de transfert/filtrage et l'évitement de boucle sont les fonctions d'un commutateur.\\ \\ **La commande show mac address-table**: La commande `show mac address-table` montre la table de transfert/filtre utilisée sur le réseau local.\\ \\ **Comprendre l'objectif principal du protocole Spanning Tree dans un réseau local commuté**: Le but principal de STP est d'empêcher les boucles dans un réseau commuté avec des chemins commutés redondants.\\ \\ **Les états de STP**: Le but de l'état de blocage est d'empêcher l'utilisation de chemins en boucle. Un port en état d'écoute se prépare à transmettre des trames de données sans remplir la table d'adresses MAC. Un port en état d'apprentissage remplit la table d'adresses MAC mais ne transmet pas les trames de données. Un port en état de transfert envoie et reçoit toutes les trames de données sur le port ponté. Enfin, un port à l'état désactivé est virtuellement non opérationnelle.\\ \\ **La commande show spanning-tree**: il faut être familiarisé avec la commande show spanning-tree et savoir qui est le pont racine.
## Travaux pratiques
### Laboratoire 10
Répondre aux questions suivantes :
1. Quelle commande montrera la table de transfert/filtre ?
2. Si une adresse MAC de destination ne figure pas dans la table de transfert/filtre, que fera le commutateur avec la trame ?
3. Quelles sont les trois fonctions de commutation de la couche 2 ?
4. Si une trame est reçue sur un commutateur et que l'adresse MAC source n'est pas dans la table de transfert/filtre, que fera le commutateur ?
5. Quelle extension propriétaire Cisco STP mettrait un port de commutateur sur err-disabled si un BPDU est reçu sur ce port ?
6. 802.1w s'appelle aussi?
7. Quand STP est-il considéré comme convergé ?
8. Les commutateurs divisent les domaines _________.
9. Qu'est-ce qui est utilisé pour empêcher les boucles de commutation dans un réseau avec des chemins commutés redondants ?
10. Quelle extension Cisco 802.1d empêche la transmission de BPDU par un port ?
(Les réponses à Written Lab 10 peuvent être trouvées après les questions de révision de ce chapitre.)
### Questions de révision
Les questions suivantes sont conçues pour tester votre compréhension du contenu de ce chapitre:\\ \\
1. Lequel des protocoles suivants est un protocole de couche 2 utilisé pour maintenir un réseau sans boucle ?
A.VTP
B.STP
C.RIP
D.CDP
2. Quelle commande affichera la table de transfert/filtre ?
A. `show mac filter`
B. `show run`
C. `show mac address-table`
D. show mac filter-table`
3. Quel est le résultat de la segmentation d'un réseau avec un pont (switch) ? (Choisir deux.)
A.Il augmente le nombre de domaines de collision.
B.Il diminue le nombre de domaines de collision.
C.Il augmente le nombre de domaines de diffusion.
D.Il diminue le nombre de domaines de diffusion.
E.Il fait des domaines de collision plus petits.
F.Cela crée des domaines de collision plus grands.
4. Quel énoncé décrit un réseau spanning-tree qui a convergé ?
A.Tous les ports de commutateur et de pont sont à l'état de transfert.
B.Tous les ports de commutation et de pont sont affectés en tant que ports racine ou désignés.
C.Tous les ports de commutateur et de pont sont dans l'état de transfert ou de blocage.
D.Tous les ports de commutation et de pont sont soit bloquants, soit bouclés.
5. Quel est le but du protocole Spanning Tree dans un réseau local commuté ?
A.Fournir un mécanisme de surveillance du réseau dans les environnements commutés
B.Pour éviter les boucles de routage dans les réseaux avec des chemins redondants
C.Pour éviter les boucles de commutation dans les réseaux avec des chemins commutés redondants
D.Pour gérer la base de données VLAN sur plusieurs commutateurs
E.Pour créer des domaines de collision
6. Quelles sont les trois fonctions distinctes de la commutation de couche 2 qui augmentent la bande passante disponible sur le réseau ? (Choisir trois.)
A.Apprentissage des adresses
B.Routage
C.Transfert et filtrage
D.Création de boucles de réseau
E.Évitement de boucle
F.Adressage IP
7. Le voyant d'état du port d'un commutateur alterne entre vert et orange. Qu'est-ce que cela pourrait indiquer?
A.Le port rencontre des erreurs.
B.Le port est fermé.
C.Le port est en mode de blocage STP.
D.Rien ; c'est normal.
8. Laquelle des affirmations suivantes est vraie ?
A.Un commutateur crée un seul domaine de collision et un seul domaine de diffusion. Un routeur crée un domaine de collision unique.
B.Un commutateur crée des domaines de collision séparés mais un domaine de diffusion. Un routeur fournit un domaine de diffusion distinct.
C.Un commutateur crée un domaine de collision unique et des domaines de diffusion séparés. Un routeur fournit également un domaine de diffusion séparé.
D.Un commutateur crée des domaines de collision distincts et des domaines de diffusion distincts. Un routeur fournit des domaines de collision séparés.
9. il faut configurer un commutateur Catalyst afin qu'il puisse être géré à distance. Lequel des éléments suivants utiliser pour accomplir cette tâche ?
A. Switch(config)#int fa0/1
Switch(config-if)#ip address 192.168.10.252 255.255.255.0
Switch(config-if)#no shut
B. Switch(config)#int vlan 1
Switch(config-if)#ip address 192.168.10.252 255.255.255.0
Switch(config-if)#ip default-gateway 192.168.10.254 255.255.255.0
C. Switch(config)#ip default-gateway 192.168.10.254
Switch(config)#int vlan 1
Switch(config-if)#ip address 192.168.10.252 255.255.255.0
Switch(config-if)#no shut
D. Switch(config)#ip
default-network 192.168.10.254Switch(config)#int vlan 1
Switch(config-if)#ip address 192.168.10.252 255.255.255.0
Switch(config-if)#no shut
10. Que fait un commutateur lorsqu'une trame est reçue sur une interface et que l'adresse matérielle de destination est inconnue ou non dans la table de filtrage ?
A.Transfère le commutateur au premier lien disponible
B.Supprime le cadre
C.Inonde le réseau avec la trame à la recherche de l'appareil
D.Renvoie un message à la station d'origine demandant une résolution de nom
11. Si un commutateur reçoit une trame et que l'adresse MAC source n'est pas dans la table d'adresses MAC mais que l'adresse de destination l'est, que fera le commutateur
avec le cadre ?
A.Jeter-le et renvoyer un message d'erreur à l'hôte d'origine
B.Inonder le réseau avec le cadre
C.Ajouter l'adresse source et le port à la table d'adresses MAC et transférer la trame vers le port de destination
D.Ajouter la destination à la table d'adresses MAC, puis transférer la trame
12. On souhaite exécuter le nouveau 802.1w sur vos commutateurs. Lequel des éléments suivants permettrait ce protocole ?
A. Switch(config)#spanning-tree mode rapid-pvst
B. Switch#spanning-tree mode rapid-pvst
C. Switch(config)#spanning-tree mode 802.1w
D. Switch#spanning-tree mode 802.1w
13. Dans quelle circonstance e est-ce que plusieurs copies de la même trame monodiffusion sont susceptibles d'être transmises dans un réseau local commuté ?
A.Pendant les périodes de forte affluence
B.Une fois les liens rompus rétablis
C.Lorsque les protocoles de couche supérieure nécessitent une fiabilité élevée
D.Dans une topologie redondante mal implémentée
14. Quelle commande a été utilisée pour produire la sortie suivante :
```
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0005.dccb.d74b DYNAMIC Fa0/1
1 000a.f467.9e80 DYNAMIC Fa0/3
1 000a.f467.9e8b DYNAMIC Fa0/4
1 000a.f467.9e8c DYNAMIC Fa0/3
1 0010.7b7f.c2b0 DYNAMIC Fa0/3
1 0030.80dc.460b DYNAMIC Fa0/3
```
A. show vlan
B. show ip route
C. show mac address-table
D. show mac address-filter
15. Si on veut désactiver STP sur un port connecté à un serveur, quelle commande utiliser ?
A. disable spanning-tree
B. spanning-tree off
C. spanning-tree security
D. spanning-tree portfast
16. En se référant au schéma sivant. Pourquoi le commutateur a-t-il deux adresses MAC attribuées au port FastEthernet 0/1 dans la table d'adresses du commutateur ?
.-------. .-------.
| | | |
|switch |------------------|switch |
| | | |
'-------' '-------'
| | | |
| | | |
.---. .---. .---. .---.
| | | | | | | |
'---' '---' '---' '---'
MAC Address Type Ports
-------------- ---------- -------
0005.dccb.d74b DYNAMIC Fa0/1
000a.f467.9e80 DYNAMIC Fa0/1
000a.f467.9e8b DYNAMIC Fa0/4
000a.f467.9e8c DYNAMIC Fa0/3
A.Les données de HostC et HostD ont été reçues par le port de commutateur FastEthernet 0/1.
B.Les données de deux des appareils connectés au commutateur ont été transmises à HostD.
C.HostC et HostD ont fait remplacer leur carte réseau.
D.HostC et HostD sont sur des VLAN différents.
17. La commutation de couche 2 fournit lequel des éléments suivants ? (Choisir quatre.)
A.Pontage matériel (ASIC)
B.Vitesse du fil
C.Faible latence
D.Faible coût
E.Routage
F.Services WAN
18. En tapant `show mac address-table` on a la sortie suivante :
```
Switch# sh mac address-table
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0005.dccb.d74b DYNAMIC Fa0/1
1 000a.f467.9e80 DYNAMIC Fa0/3
1 000a.f467.9e8b DYNAMIC Fa0/4
1 000a.f467.9e8c DYNAMIC Fa0/3
1 0010.7b7f.c2b0 DYNAMIC Fa0/3
1 0030.80dc.460b DYNAMIC Fa0/3
```
Supposons que le commutateur ci-dessus reçoive une trame avec les adresses MAC suivantes :
```
MAC source : 0005.dccb.d74b
MAC destination : 000a.f467.9e8c
```
Qu'est-ce que ça va faire?
A.Il jettera le cadre.
B.Il transmettra uniquement le port de sortie de trame Fa0/3.
C.Il ne le transmettra que sur Fa0/1.
D.Il l'enverra sur tous les ports sauf Fa0/1.
19. Il faut autoriser un hôte à se connecter dynamiquement à chaque interface de commutateur. Quelles commandes doit-on configurer sur le commutateur pour répondre à cette politique ? (Choisir deux.)
A. Switch(config-if)#ip access-group 10
B. Switch(config-if)#switchport port-security maximum 1
C. Switch(config)#access-list 10 permit ip host 1
D. Switch(config-if)#switchport port-security violation shutdown
E. Switch(config)#mac-address-table secure
20. On a deux commutateurs connectés ensemble avec deux câbles croisés pour la redondance, et STP est désactivé. Lequel des événements suivants se produira entre les switchs?
A.Les tables de routage sur les commutateurs ne seront pas mises à jour.
B.La table de transfert/filtre MAC ne sera pas mise à jour sur le commutateur.
C.Des tempêtes de diffusion se produiront sur le réseau commuté.
D.Les commutateurs équilibreront automatiquement la charge entre les deux liens.
### Réponses aux questions de révision
1. B. Le protocole Spanning Tree est utilisé pour arrêter les boucles de commutation dans un réseau commuté avec des chemins redondants.
2. C. La commande show mac address-table affiche la table de transfert/filtre sur le commutateur.
3. A, E. Les ponts brisent les domaines de collision, ce qui augmenterait le nombre de domaines de collision dans un réseau et réduirait également les collisions de domaines.
4. C. La convergence se produit lorsque tous les ports sur les ponts et les commutateurs sont passés à l'état de transfert ou de blocage. Aucune donnée n'est transmis jusqu'à ce que la convergence soit terminée. Avant de pouvoir à nouveau transmettre les données, tous les appareils doivent être mis à jour.
5. C. Le protocole Spanning Tree (STP) a été conçu pour arrêter les boucles de la couche 2. Tous les commutateurs Cisco ont le STP activé par défaut.
6. A, C, E. Les fonctionnalités de la couche 2 incluent l'apprentissage d'adresses, le transfert et le filtrage du réseau et l'évitement des boucles.
7. A. Lorsqu'on connecte un port de commutateur, les voyants de liaison sont d'abord orange/ambre, puis ils deviennent verts, indiquant un fonctionnement normal. Si le voyant du lien clignote, on a aver un problème.
8. B. Les commutateurs brisent les domaines de collision et les routeurs brisent les domaines de diffusion.
9. C. Pour gérer un commutateur à distance, il faut définir une adresse IP sous le VLAN de gestion, qui est, par défaut, l'interface vlan 1. Ensuite, à partir de mode de configuration globale, définir la passerelle par défaut avec la commande `ip default-gateway`. L'option C active l'interface de gestion, qui le rend correct par rapport à l'option B.
10. C. Les commutateurs inondent toutes les trames dont l'adresse de destination est inconnue. Si un appareil répond à la trame, le commutateur mettra à jour la table d'adresses MAC pour refléter l'emplacement de l'appareil.
11. C. Étant donné que l'adresse MAC source n'est pas dans la table d'adresses MAC, le commutateur ajoutera l'adresse source et le port auquel il est connecté dans la table d'adresses MAC, puis transférer la trame vers le port de sortie.
12. A. 802.1w est également appelé Rapid Spanning Tree Protocol. Il n'est pas activé par défaut sur les commutateurs Cisco, mais c'est un meilleur STP à exécuter car il a tous les correctifs fournis par les extensions Cisco avec 802.1d.
13. D. Si le protocole Spanning Tree ne fonctionne pas sur les commutateurs et qu'on les connecte avec des liens redondants, on aura tempêtes de diffusion et copies d'images multiples.
14. C. La commande `show mac address-table` affichera la table de transfert/filtre, également appelée table CAM, sur un commutateur.
15. D. Si on a un serveur ou d'autres appareils connectés à un commutateur dont on est totalement sûr qu'il ne créera pas de boucle de commutation si STP est désactivé, on peut utiliser `portfast` sur ces ports. L'utiliser signifie que le port ne mettra pas les 50 secondes habituelles à apparaître pendant que STP converge.
16. A. Un commutateur peut avoir plusieurs adresses MAC associées à un port. Dans le schéma, un hub est connecté au port Fa0/1, qui a deux hôtes liés.
17. A, B, C, D. Contrairement aux ponts, les commutateurs sont basés sur le matériel.
18. B. Étant donné que l'adresse MAC de destination se trouve dans la table d'adresses MAC (table de transfert/filtre), elle ne l'enverra que sur le port Fa0/3.
19. B, D. switchport port-security est une commande importante, et c'est super facile avec le CNA ; cependant, à partir de la CLI, on peut définir le maximum nombre d'adresses MAC autorisées dans le port, puis définir la pénalité si ce maximum a été dépassé.
20. C. Si le spanning tree est désactivé sur un commutateur et que on a des liens redondants vers un autre commutateur, des tempêtes de diffusion se produiront, entre autres problèmes.
### Réponses au laboratoire écrit 10
1. afficher la table d'adresses mac
2. Flood la trame sur tous les ports à l'exception du port sur lequel elle a été reçue
3. Apprentissage des adresses, décisions de transfert/filtrage et évitement des boucles
4. Il ajoutera l'adresse MAC source dans la table de transfert/filtre et l'associera au port sur lequel la trame a été reçue.
5. BPDUGuard
6. Protocole Rapid Spanning Tree (RSTP)
7. Lorsque tous les ports sont en mode blocage ou transfert
8. Collision
9. Protocole Spanning Tree (STP)
10. Port Fast