Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol TP 4 : SPANNING TREE PROTOCOL NE320 : Réseaux Locaux Décembre 2006 Sommaire : SOMMAIRE : ....................................................................................................................................................... 1 INTRODUCTION ................................................................................................................................................. 2 1. SPANNING TREE PROTOCOL .................................................................................................................... 2 2. ELECTION DU ROOT BRIDGE ................................................................................................................... 2 3. DESIGNATED BRIDGE.................................................................................................................................. 7 4. ROOT PATH COST ......................................................................................................................................... 9 5. ALGORITHME ................................................................................................................................................ 9 6. APPLICATION ................................................................................................................................................. 9 7. PROXY ARP ................................................................................................................................................... 10 7.1. PROBLEME.................................................................................................................................................. 11 7.2. PROXY ARP ............................................................................................................................................... 11 CONCLUSION.................................................................................................................................................... 12 Page 1 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol Introduction Dans ce TP, nous allons étudier le principe de fonctionnement de l’algorithme de Spanning Tree qui permet d’éviter les boucles logiques dans un réseau où il y a des boucles physiques. Nous étudierons ensuite un proxy ARP. 1. Spanning Tree Protocol Imaginons un réseau dont la topologie est celle de la figure suivante (toutes les stations sont des bridges). Question 1 : Quels sont les problèmes d’une telle configuration ? On sait qu’un bridge (ou pont) laisse passer toutes les trames qui arrivent à une de ses interfaces sur toutes les autres. Le problème qui arrive lorsqu’un réseau a une configuration de ce type, comportant au moins une boucle, c’est que lorsque deux stations veulent communiquer, les trames qu’elles s’envoient ont plusieurs chemins pour passer donc la trame sera dupliquée d’autant de fois qu’il y a de chemins. Mais le phénomène est pire : la trame une fois arrivée à un pont sera retransmise, même si elle a déjà été transmise dans le sens inverse. Il arrive donc un tellement grand nombre de collisions que le réseau est saturé et que plus aucune communication n’est possible. Le STP est un protocole permettant de supprimer ces problèmes. Pour cela, STP désactive certains liens et laisse les autres actifs de manière à ce que tous les switches et bridges soient connectés dans une topologie d’arbre (d’où le nom). Le spanning tree est capable de se mettre en place et de se reconfigurer tout seul suite à des évènement intervenants sur le réseau. 2. Election du root bridge Configurez les machines comme le schéma suivant : Page 2 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol Les interfaces eth0 de nos machines sont connectées sur un bus et les interfaces eth1 sont connectées sur un autre bus. Nos machines feront office de bridge entre les deux réseaux locaux. Question 2 : Complétez le schéma avec les adresses des différents bridges. [Travail préliminaire : nous avons changé l’adresse MAC de l’interface eht0 temporairement comme demandé grâce à la commande ifconfig : (none):/home/userir# ifconfig //on regarde l'@ MAC de eth1 eth0 Link encap:Ethernet HWaddr 00:04:76:DD:E3:7B inet addr:192.168.130.152 Bcast:192.168.130.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:310 errors:0 dropped:0 overruns:11 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:33200 (32.4 KiB) TX bytes:1662 (1.6 KiB) Interrupt:11 Base address:0xa000 eth1 Link encap:Ethernet HWaddr 00:04:76:E2:7E:BA UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:60 (60.0 b) Interrupt:5 Base address:0xa400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1392 (1.3 KiB) TX bytes:1392 (1.3 KiB) (none):/home/userir# ifconfig eth0 down //on desactive eth0 et on change sa MAC : (none):/home/userir# ifconfig eth0 hw ether 00:04:76:E2:7E:BB (none):/home/userir# ifconfig eth0 up (none):/home/userir# ifconfig eth0 Link encap:Ethernet HWaddr 00:04:76:E2:7E:BB inet addr:192.168.130.152 Bcast:192.168.130.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:310 errors:1 dropped:0 overruns:12 frame:3 Page 3 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:33200 (32.4 KiB) TX bytes:1662 (1.6 KiB) Interrupt:11 Base address:0xa000 eth1 Link encap:Ethernet HWaddr 00:04:76:E2:7E:BA UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:60 (60.0 b) Interrupt:5 Base address:0xa400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1392 (1.3 KiB) TX bytes:1392 (1.3 KiB) Nous avons donc l’adresse MAC de eth0 qui est la suivante de celle de eth1.] Schéma : Les adresses MAC commencent toutes par 00:04:76:E2 (car ce sont les mêmes modèles du même constructeur). Nous configurons le bridge : bruges:/home/userir# ifconfig br0 up bruges:/home/userir# brctl showstp br0 br0 bridge id 8000.000476e280a7 designated root 8000.000476e27eba root port 1 100 max age 19.99 19.99 hello time 1.99 1.99 forward delay 14.99 14.99 ageing time 299.95 hello timer 0.00 0.00 topology change timer 0.00 0.00 Page 4 sur 12 path cost bridge max age bridge hello time bridge forward delay tcn timer gc timer Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol flags eth1 (0) port id listening designated 100 designated 19.07 designated 11.49 designated 0.00 flags 0000 state root 8000.000476e27eba path cost bridge 8000.000476e27eba message age timer port 8002 forward delay timer cost 0 hold timer Question 3 : Que remarquez vous ? On remarque que le root peut changer, en fonction des stations présentes sur le réseau. Celui qui est root est celui dont l’interface à l’adresse MAC la plus petite. Question 4 : Selon vous, quel est le critère de choix du root bridge ? Le critère de choix, comme nous l’avons déduit des expériences précédentes, semble être l’adresse MAC. En effet, le root est toujours la machine ayant l’adresse MAC la plus petite sur le réseau. Après vérification, il est exact que c’est le critère d’élection du root bridge. Question 5 : Relevez les indications suivantes dans les paquets STP observés Trame STP capturée par ETHEREAL : No. Time Source Destination Protocol Info 1 0.000000 3Com_e2:7e:ba Spanning-tree-(for-bridges)_00 STP Conf. Root = 32768/00:04:76:e2:7e:ba Cost = 0 Port = 0x8002 Frame 1 (60 bytes on wire, 60 bytes captured) IEEE 802.3 Ethernet Logical-Link Control Spanning Tree Protocol Protocol Identifier: Spanning Tree Protocol (0x0000) Protocol Version Identifier: Spanning Tree (0) BPDU Type: Configuration (0x00) BPDU flags: 0x00 Root Identifier: 32768 / 00:04:76:e2:7e:ba Root Path Cost: 0 Bridge Identifier: 32768 / 00:04:76:e2:7e:ba Port identifier: 0x8002 Message Age: 0 Max Age: 20 Hello Time: 2 Forward Delay: 15 - Quelle est l’adresse MAC de destination du paquet ? L’adresse MAC de destination du paquet est une adresse spéciale au protocole STP. Il s’agit de 01:80:C2:00:00:00. Page 5 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol - Root bridge ID Le root bridge id est : 00:04:76:e2:7e:ba. Il s’agit de notre adresse MAC car c’est notre station qui a la plus petite adresse MAC de toutes celles du réseau. (en réalité le bridge id est la priorité et l’adresse mac, séparés par un point) - Root path cost Le root path cost est 0. - Bridge id Le bridge id est : 00:04:76:e2:7e:ba. - Port id Le port id est 0x8002. - Que signifie le bit TC selon vous ? Le bit TC (Topology Change) est un bit indiquant qu’un changement au niveau de la topologie de l’arbre et du réseau a été détecté (changement de root, changement de port, …) Question 6 : Désactivez le root bridge pour vérifier, est-ce conforme ? Que remarquez vous dans les paquets STP ? No. Time Source Destination Protocol Info 3 0.000131 3Com_e2:80:a9 Spanning-tree-(for-bridges)_00 STP Topology Change Notification Frame 3 (60 bytes on wire, 60 bytes captured) IEEE 802.3 Ethernet Logical-Link Control Spanning Tree Protocol Protocol Identifier: Spanning Tree Protocol (0x0000) Protocol Version Identifier: Spanning Tree (0) BPDU Type: Topology Change Notification (0x80) No. Info STP Time Source Destination Protocol 4 0.999560 3Com_e2:7f:9d Spanning-tree-(for-bridges)_00 Conf. TC + Root = 0/00:04:76:e2:7f:9d Cost = 0 Port = 0x8001 Frame 4 (60 bytes on wire, 60 bytes captured) IEEE 802.3 Ethernet Logical-Link Control Spanning Tree Protocol Protocol Identifier: Spanning Tree Protocol (0x0000) Protocol Version Identifier: Spanning Tree (0) BPDU Type: Configuration (0x00) BPDU flags: 0x81 (Topology Change Acknowledgment, Topology Change) Root Identifier: 0 / 00:04:76:e2:7f:9d Root Path Cost: 0 Bridge Identifier: 0 / 00:04:76:e2:7f:9d Port identifier: 0x8001 Message Age: 0 Max Age: 20 Hello Time: 2 Page 6 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol Forward Delay: 15 On voit que la mention Topology Change Notification apparaît car le bit TC est à 1. Le nouveau root est la station qui a l’adresse MAC la plus petite dans celles du nouveau réseau, où l’ancien root n’est plus. En réalité, un administrateur réseau peut influencer l’élection du designated bridge par le choix d’une priorité différente. Question 7 : Comment faîtes vous cette manipulation ? On utilise la commande : brctl setbridgeprio <bridge> <priorité> Par exemple, on met la priorité d’un post à 0, la meilleure possible (une priorité peut être entre 0 et 65535) : bruges:/home/userir# brctl setbridgeprio br0 0 bruges:/home/userir# brctl stp br0 on bruges:/home/userir# ifconfig br0 up bruges:/home/userir# brctl showstp br0 br0 bridge id 0000.000476e280a7 designated root 0000.000476e280a7 root port 0 path cost 0 max age 19.99 bridge max age 19.99 hello time 1.99 bridge hello time 1.99 forward delay 14.99 bridge forward delay 14.99 ageing time 299.95 hello timer 1.78 tcn timer 0.00 topology change timer 10.78 gc timer 160.07 flags TOPOLOGY_CHANGE TOPOLOGY_CHANGE_DETECTED eth1 (0) port id forwarding designated 100 designated 0.00 designated 0.00 designated 0.78 flags 0000 state root 0000.000476e280a7 path cost bridge 0000.000476e280a7 message age timer port 8001 forward delay timer cost 0 hold timer On voit que la station est devenue bridge. 3. Designated bridge Toutes les stations ont la même priorité. Page 7 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol Question 8 : Quel est le root path cost envoyé par le root bridge sur l’interface eth1 Le root bridge envoie le root path cost 0 sur l’interface eth1. Maintenant ajoutez un à un l’interface eth0 dans le bridge br0 sur tous les bridges sauf le root bridge. (les réponses suivantes sont valables pour n’importe quel nombre d’interfaces ajoutées) Question 9 : Quel est le coût vers la racine vu par le bridge ajouté ? Le root path cost vu par le bridge ajouté est 100, coût par défaut. Question 10 : Qui est le designated bridge ? Le designated bridge est la station pour laquelle l'interface eth0 a le bridge id le plus bas (fonctionnement similaire que pour l'election du root). C’est le seul bridge du réseau à avoir ses deux interfaces dans le même pont et que ces deux interfaces soient en mode forwarding, comme nous allons le voir. Question 11 : Quel est le(s) lien(s) ethernet désactivé(s) (état bloqué) ? Toutes les interfaces eth0 sauf celle du designated bridge sont en Blocking. Celle du designated bridge est en forwarding. Cela signifie qu’une trame du bus formé par les eth0 à destination de l’autre réseau passera obligatoirement par le designated bridge. C’est l’arête active de l’arbre, les autres arêtes (i.e. les autres ponts) sont désactivées. Question 12 : Sur un des bridges bloqué faites la commande brctl setpathcost br0 eth1 50. Que venez vous de faire ? Cette commande permet de changer le coût de la racine vu par le bridge par l’interface eth0 à 50, alors qu’il était à 100. Question 13 : Quels changements voyez-vous ? Expliquez. On voit que le designated bridge change. En effet, le bridge dont on vient de changer le coût de passage devient designated car on a signifié aux autres stations qu’il est plus avantageux de passer par lui plutôt que par les autres (le coût est de 50, contre 100 pour les deux autres stations). Son interface passe donc en Forwarding et celle du précédent designated bridge passe en blocking. Question 14 : En conclusion, que pensez vous du critère de sélection du designated bridge. Le critère de sélection du designated bridge est, à l’instar de l’élection du root bridge et des priorités, le coût de passage qui doit être le plus petit possible et en cas d’égalité, c’est l’adresse MAC qui est décisive. En réalité le critère est le bridge id, qui est formé du coût et de l’adresse mac séparés par un point. Page 8 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol 4. root path cost Qustion 15 : Sur l’autre bridge bloqué faites la commande brctl setpathcost br0 eth0 10. Que venez vous de faire ? Expliquez. On vient de changer le coût vers la racine de l’interface eth1 du bridge de 0 à 10. Par conséquent, son interface eth0 passe en Forwarding et eth1 en Blocking. En effet, il a deux possibilités d’aller à la racine : passer par eth1 ou par eth0, via le designated bridge. Le designated bridge à un coût de 50, et eth0 de 10. eth1 à un coût de 100. Passer par eth0 et le designated bridge est donc avantageux, car le coût vers la racine total est de 50 + 10 = 60. Donc il a activé son interface eth0 et bloqué eth1. Question 16 : En conclusion, que pensez vous de la manière de calculer le root path cost ? Le root path cost est finalement calculé grâce à la somme des coûts des interfaces sortantes des équipements utilisés pour accéder à la racine. 5. Algorithme Question 17 : Ecrivez l’algorithme permettant de trouver l’état d’un port, sachant que les ports du root bridge sont toujours en forwarding. Si le bridge est root bridge Alors Ses ports sont forwarding Sinon Si le bridge est designated bridge et que ses deux interfaces sont activées Alors Ses ports sont forwarding Sinon Si le bridge n’est ni root ni designated Alors Si les coûts vers la racine des deux interfaces sont différents Alors Si le coût de l’interface 1 est supérieur à celui de l’interface 2 Alors Bloquer le port de l’interface 1 Autoriser le port de l’interface 2 Sinon Bloquer le port de l’interface 1 Autoriser le port de l’interface 2 6. Application Question 18 : Trouver de manière théorique les ports actifs/bloqués sur la première topologie présentée. Rappel de la topologie : Page 9 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol On considère que toutes les interfaces ont la même priorité. La station élue root bridge est celle qui a l’adresse MAC la plus faible. Appelons là A. Les deux interfaces de A sont forwarding. A à deux voisines : B et C. Chacune de ces stations passe designated bridge car elles relient deux réseaux différents. Il reste une station : D. Cette station, pour atteindre A, à le choix de passer pas B ou C. Elle compare donc les coûts vers la racine. On suppose que B est élue. Alors B a ses deux interfaces en forwarding, C n’a que l’interface allant vers A et D n’a que celle allant vers B. On obtient un arbre comme celui-ci : A C B D Les arêtes qui n’apparaissent pas correspondent aux interfaces bloquées. Question 19 : Vérifiez par la pratique Nous réalisons cette topologie en faisant une boucle avec nos stations. Avec l’aide d’outils tes que ping, ethereal, ou encore showstp, nous pouvons voir que la configuration est bien celle que nous avions deviné. 7. Proxy ARP Page 10 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol 7.1. Problème La configuration est remise comme au début du TP. On relie notre routeur à eth1 avec un câble croisé. Question 20 : Faites un schéma de l’installation R représente le routeur. La machine esisar, notre routeur et notre station sont sur le même sous-réseau IP. Cependant, le routeur n’est pas sur le même lien ethernet qu’esisar. Question 21 : Quel problème cela pose-t-il ? Démontrez le par la pratique. Les paquets ARP ne passent pas le pont. En effet, si le routeur veut communiquer à la machine esisar, il lui faut d’abord connaître son adresse MAC. Pour la connaître, il faut qu’il envoie des requêtes ARP et qu’il en reçoive les réponses. Or les paquets ARP ne sont pas transférés du routeur à la machine esisar et inversement. Donc la correspondance IP/MAC ne peut pas être faite. 7.2. Proxy ARP Nous configurons notre machine en proxy ARP. On ajoute une route sur notre station vers le routeur : #root add -host 192.168.130.55 eth1 Puis on active l’ip forwarding et le proxy ARP: #sysctl -w net.ipv4.ip_forward=1 #sysctl -w net.ipv4.conf.all.proxy_arp=1 Page 11 sur 12 Adil BENNIS Viet Hung DO Jean Marc DUFOUR NE 320 P2009 IR TP4 : Spanning Tree Protocol Question 22 : Qu’observez vous dans les captures et dans les tables ARP des différentes machines ? On s’aperçoit maintenant que notre machine répond aux requêtes ARP en renvoyant sa propre adresse MAC. Le routeur peut donc maintenant communiquer avec esisar : il envoie les paquets au proxy ARP qui, lui, les renvoie à la machine esisar. Question 23 : Déduisez-en le fonctionnement d’un proxy ARP. Le proxy ARP permet de transférer des paquets entre deux réseaux physiques, pour n’en faire qu’un seul réseau logique. Les machines d’un réseau s’adresse à lui pour communiquer avec les machines d’un autre réseau et lui sait faire la correspondance pour adresser les paquets au bon destinataire. Conclusion Lors de ce TP, nous avons étudié le protocole Spanning Tree, qui permet d’utiliser au mieux les liens redondants d’un réseau en en désactivant certains. Nous avons vu comment administrer ce protocole, notamment en spécifiant les root bridge et designated bridge grâce aux priorités et coûts affectés aux interfaces ou encore en choisissant les interfaces à activer ou désactiver grâce aux coûts. Nous avons ensuite étudié le fonctionnement d’un proxy ARP dans une machine bridge. Page 12 sur 12