Laborator 2. Comutarea pachetelor

Cunoștințe și abilități ce vor fi dobândite

  • Procesul de comutare al switch-urilor
  • Popularea și conținutul tabelei de comutare

Cheat sheet

Packet Tracer

Descărcați arhiva de instalare Packet Tracer 8.2 de aici (legacy link).

Mininet

Pentru a simula o rețea virtuală vom folosi Mininet. Mininet este un simulator de rețele ce folosește în simulare implementări reale de kernel, switch și cod de aplicații. Mininet poate fi folosit atat pe Linux cat si WSL2 (recomandat Ubuntu 22.04).

sudo apt update
sudo apt install mininet openvswitch-testcontroller tshark python3-click python3-scapy xterm python3-pip
sudo pip3 install mininet

După ce am instalat Mininet, vom folosi următoarea comandă pentru a crește dimensiunea fontului în terminalele pe care le vom deschide.

echo "xterm*font: *-fixed-*-*-*-18-*" >> ~/.Xresources
xrdb -merge ~/.Xresources

Când o să rulăm simularea, e posibil să întâlniți următoarea eroare: Exception: Please shut down the controller which is running on port 6653:. Pentru a rezolva problema, va trebui să rulați pkill ovs-test.

Exerciții

01. [15p] Implementare Hub

Vom implementa in Python funcționalitatea de baza a unui Hub. Cum am vazut si in cadrul laboratorului anterior, pentru fiecare frame primit, hub-ul îl trimite pe toate interfețele (link sau port). Mai jos gasim o descriere in pseudocod:

while hub is powered on:
    for each port:
        if there is incoming data:
            read the incoming data
            for each other port:
                send the data to that port

In acest exercițiu vom implementa un Hub in Python pornind de la un API simplu de primire si trimitere de frame-uri Ethernet. Vom porni de la scheletul de la urmatoarea adresa. Tot acolo, gasiti in README.md detalii despre rularea scheletului. Implementarea se va face in hub.py, in dreptul celor doua TODO-uri.

# data este de tip byte array
interface, data, length = recv_from_any_link()
send_to_link(interface, data, length)

02. [15p] Introducere în Packet Tracer

Descărcați arhiva de instalare Packet Tracer 8.2 de aici.

Packet Tracer este un utilitar cu ajutorul căruia se pot simula topologii de rețea folosind hub-uri, rutere, switch-uri și calculatoare. Vom prezenta principalele componente din spațiul de lucru:

  1. La apăsare vor apărea mai multe modele de rutere în dreapta acestuia. Este suficient să alegeți modelul Router-PT și să îl plasați în zona de lucru (partea albă din mijloc) oriunde doriți.
  2. La apăsare vor apărea mai multe modele calculatoare în dreapta acestuia. Este suficient să alegeți modelul PC-PT și să îl plasați în zona de lucru (partea albă din mijloc) oriunde doriți.
  3. Se alege tipul legăturii (UTP straight, UTP cross-over, conexiune serială, etc.). Este suficient să alegeți primul tip de cablu (cel marcat Automatically Choose Connection Type, cu iconița unui fulger portocaliu), aceasta punând automat tipul legăturii dintre două echipamente. După selecția tipului de cablu apăsați pe echipamentele care se doresc a fi unite. În unele cazuri veți avea de ales portul echipamentului (ex. FastEthernet 0/1, FastEthernet 0/2, etc.)
  4. La apăsare vor apărea mai multe modele de switch-uri în dreapta acestuia. Este suficient să alegeți modelul Switch-PT și să îl plasați în zona de lucru (partea albă din mijloc) oriunde doriți.
  5. La apăsare vor apărea mai multe modele de hub-uri în dreapta acestuia. Este suficient să alegeți modelul Hub-PT și să îl plasați în zona de lucru (partea albă din mijloc) oriunde doriți.
  6. Puteți folosi butonul Delete pentru a șterge istoria pachetelor trimise.
  7. În chenarul din dreapta jos va apărea pachetul trimis și status-ul recepției (Last Status).
  8. Se poate selecta modul de operare: Realtime (modul implicit) sau Simulation (se apasă pe tab-ul din spatele Realtime pentru a-l activa). În modul Simulation se poate vedea pas cu pas cum circulă pachetele între echipamentele active. În modul Simulation trimiteți un pachet și apoi apăsați pe butonul Auto Capture/Play.
  9. Se poate trimite un pachet între două entități de nivel 3 (calculator, router). După selectare, apăsați pe echipamentele între care vreți să trimiteți pachete.

Testare conectivitate

  • Creați o topologie cu 2 switch-uri legate între ele și câte 2 calculatoare legate la fiecare din switch-uri.
  • Înainte de a putea trimite pachete, trebuie configurate adresele IP pe fiecare din calculatoare. La apăsarea unui click pe calculator, va apărea o fereastră prin care puteți configura calculatoarele. Mergeți pe tab-ul Desktop și apăsați pe iconița IP Configuration.
  • Completați câmpul IP Address cu o adresă IP din intervalul 192.168.1.1 - 192.168.1.5 și câmpul Subnet Mask cu valoarea 255.255.255.0. Restul câmpurilor rămân goale.
  • Verificați conectivitatea între fiecare 2 calculatoare folosind facilitatea 9 prezentată mai sus.

Dacă ați introdus o comandă inexistentă în CLI este foarte posibil să se blocheze pentru o perioadă scurtă de timp terminalul și să vă afișeze un mesaj asemănător celui de mai jos:

R1# end
Translating "end"...domain server (255.255.255.255)

În acest caz folosiți combinația de taste: CTRL + SHIFT + 6 sau CTRL + ALT + 6

03. [15p] Switch vs. Hub

Topologie: download.

  • Vrem să urmărim diferențele între switch și hub. Vom simula transmiterea de pachete între stații folosind o topologie PacketTracer în care se află 2 rețele cu câte 4 calculatoare fiecare. Diferența între topologii este dispozitivul de interconectare: una este cu un switch, iar cealaltă este cu un hub.
  • Așteptați ca porturile din switch să lumineze cu verde (nu cu portocaliu) și apoi trimiteți pachete între oricare 2 calculatoare în cele 2 topologii pentru a vă asigura că există conectivitate. (luminează cu portocaliu timp de circa 30 de secunde până când se definitivează rularea STP - Spanning Tree Protocol)
  • După ce ati verificat existența conectivității, intrați în modul Simulation și trimiteți câte un pachet între 2 calculatoare. Faceți acest lucru pentru ambele rețele. Observați ce pachete sunt generate în rețea în fiecare caz.
  • Ce puteți spune despre diferența dintre switch și hub?
  • La ce nivel din stiva OSI rulează fiecare?

04. [15p] Popularea tabelei de comutare

Topologie: download

  • Dorim să urmărim modul în care se populează tabela de comutare a unui switch. Topologia este formată dintr-un switch și 4 stații. Încărcați fișierul de topologie în Packet Tracer și așteptați ca porturile switch-ului să lumineze verde în loc de portocaliu (să fi rulat STP).
  • După cum ați observat de la exercițiul anterior, switch-ul comută pachetele doar către destinație, făcând acest lucru pe baza unei tabele de comutare (MAC Address Table).
  • Pentru configurarea unui switch, apăsăm pe iconița sa din fereastră albă din Packet Tracer. Va apărea o fereastră prin care putem configura switch-ul. Singurul tab de interes este cel denumit CLI (Command Line Interface). Apăsați tasta Enter cel puțin o dată ca să vedeți unde este cursorul. Acest CLI este specific Cisco si este format după cum urmează:
    • literele până la caracterul ”>” (mai mare) reprezintă hostname-ul echipamentului
    • caracterul ”>” semnifică faptul că sunteți autentificat ca un utilizator neprivilegiat (fără drepturi administrative)
  • Obtineti drepturi administative pentru a afisa tabela de comutare/MAC a switch-ului si observati ca este goala.

Tabela de comutare

  • Tabela de comutare conține mai multe coloane dintre care două sunt de interes:
    • coloana Mac Address specifică adresa MAC
    • coloana Ports specifică portului switch-ului
  • Tabela este, așadar, o asociere între o adresă MAC și un port. Spunem că tabelele au, pentru fiecare intrare:
    • o componentă de potrivire și de căutare (match) - se caută o adresă MAC
    • o componentă de acțiune - pe baza rezultatului obtinut in urma operatiei de match se trimite pachetul pe portul aferent.
  • Partea de căutare poate apărea o singură dată, partea de acțiune de mai multe ori:
    • putem avea mai multe adrese MAC aferente unui port
    • o adresă MAC poate apărea cel mult o dată în tabela de comutare.
  • Aflati numele/numărul fiecărui port al unui switch si adresa MAC a unei statii.
  • Trimiteți un pachet de la PC0 la PC1. Afișați din nou tabela de comutare.
  • Observați adăugarea a două intrări:
    • O intrare este generată la trimiterea pachetului PC0 la PC1 - conține adresa MAC a stației PC0 și portul pe care aceasta este legată la switch
    • A doua este generată la întoarcerea pachetului de la PC1 la PC0 - conține adresa MAC a stației PC1 și portul pe care aceasta este, la rândul ei, legată la switch.
  • Trimiteți un pachet de la PC1 la PC2. Afișați din nou tabela de comutare. De ce apare doar o singură intrare, nu două?
  • Trimiteți un pachet de la PC2 la PC3. Afișați din nou tabela de comutare. Ce observați?
  • Curățați tabela de comutare.
  • Intrați în modul Simulation și trimiteți un pachet de la PC1 la PC3. Ce observați? Urmăriți în fereastra Event list un sumar al pachetelor trimise.
  • Mai trimiteți încă un pachet de la PC1 la PC3. De ce s-a comportat diferit de data aceasta? Afișați din nou tabela de comutare.
  • Curățați tabela de comutare.
  • Intrați în modul Simulation și trimiteți un pachet de la PC1 la PC3. La fiecare pas al simulării vizualizați tabela de comutare a switch-ului. Discutați cu asistentul dacă aveți întrebări legate de popularea tabelei de comutare.

05. [20p] Conținutul tabelei de comutare

Topologie: download

Analiza tabela de comutare

  • Ne propunem să urmărim conținutul tabelei de comutare într-un scenariu cu 2 switch-uri.
  • La fiecare switch sunt conectate câte 2 calculatoare. Încărcați fișierul topologie în PacketTracer și așteptați ca switch-urile să ruleze STP. după rularea STP, porturile switch-urilor vor avea culoarea verde.
  • Trimiteți pachete între orice 2 calculatoare din rețea și vizualizați tabela de comutare pe ambele switch-uri.
  • Observați că un port poate avea asociate mai multe adrese MAC. Portul unui switch care are legătura cu celălalt switch cuprinde trei adrese MAC:
    • adresa MAC a portului celuilalt switch
    • adresele MAC ale stațiilor conectate la celălalt switch

Analiza tabela de comutare dupa decuplarea unui echipament

  • Afișați tabela de comutare a switch-ului Switch0 și rețineți portul asociat adresei MAC a stației PC1.
  • Decuplați stația PC1 de la rețea apăsând pe beculețul verde de pe legătura la Switch0 a acestuia urmată de tasta Escape (un alt mod de a șterge o legătură se poate obține prin folosirea butonului în formă de “X” din dreapta, urmată de apăsarea pe elementul care se dorește a fi șters).
  • După decuplarea calculatorului, urmăriți tabela de comutare și observați pierderea intrării aferente.

Analiza tabela de comutare dupa reconectarea unui echipament

  • Folosiți un cablu Copper Straight-Through pentru a conecta stația PC1 la celălalt port disponibil al switch-ului Switch0 (diferit de cel inițial).
  • După rularea STP pe switch, trimiteți un pachet între PC1 și PC0.
  • Observați popularea tabelei de comutare cu o nouă intrare corespunzătoare adresei MAC a stației PC1. O adresă MAC nu poate apărea de două ori în tabela de comutare a unui switch.

06. [20p] Intrări statice în tabela de comutare

Topologie: download

  • Până în acest punct am observat cum se poate popula dinamic o tabela de comutare a unui switch. Ați văzut că în tabela de comutare intrările erau marcate cu DYNAMIC în dreptul coloanei Type.
  • Tabela de comutare se poate popula și static cu intrări predefinite pentru un anumit port. Dorim să configurăm intrări statice în tabela de comutare a unui switch.
  • Pentru a putea configura un echipament Cisco, trebuie să intrăm în modul de configurare.
  • Acest mod îl veți recunoaște prin adăugarea sufixului (config) la prompt-ul CLI-ului.
  • În acest mod puteți doar să realizați configurări, nu puteți vizualiza parametrii switch-ului (ex. afișarea tabelei de comutare).

Configurare statică în tabela de comutare

  • Topologia conține un switch și 4 calculatoare. Încărcați fișierul conținând topologia în PacketTracer și așteptați rularea STP.
  • Vom configura o intrare statică pentru stația PC1, stație conectată pe portul FastEthernet1/1 (sau Fa1/1) din switch și care are adresa MAC 0001.639D.68E3.
  • Trimiteți un pachet de la stația PC0 la stația PC1. Afișați tabela de comutare.
  • Se observă tipul STATIC pentru intrarea cu adresa MAC a stației PC1 și intrarea de tipul DYNAMIC pentru adresa MAC a stației PC0.
  • Creați încă o intrare statică pentru stația PC2 după modelul de mai sus. Verificați conectivitatea cu toate celelalte stații.
  • Goliți tabela de comutare.
  • Creați o intrare statică pentru portul din switch aferent stației PC3, dar în loc sa puneți adresa MAC a stației PC3, puneți o adresă MAC care nu există în rețeaua locală.
  • Afișați tabela de comutare. Testați conectivitatea stației PC3 cu celelalte stații și afișați din nou tabela de comuntare.
  • Observați prezența a două intrări MAC pe același port, una statică (introdusă mai devreme) și alta dinamică (adresa MAC a stației PC3).
  • O intrare statică are avantajul permanenței. În absența traficului, o intrare dinamică este ștearsă din tabela de comuntare după câteva minute. O intrare statică poate fi ștearsă doar explicit, prin folosirea comenzii clear mac-address-table.
  • Dacă dorim să configurăm acces exclusiv al stației PC3 în tabela de comutare, trebuie folosite comenzi de port security.
rl/labs/02.txt · Last modified: 2024/10/18 08:10 by florin.stancu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0