Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:02:contents:01 [2023/09/27 17:04]
vlad_iulius.nastase [01. [10p] Switch vs. Hub]
rl:labs:02:contents:01 [2023/10/17 10:51] (current)
vlad_iulius.nastase [01. [10p] Implementare Hub]
Line 1: Line 1:
-==== 01. [15p] Switch vs. Hub ====+==== 01. [15p] Implementare ​Hub ====
  
-**Topologie**:​ {{:​rl:​labs:​02:​contents:​rl_2022-2023_laborator-02_01.pkt|download}}.+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:
  
-  * 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 interconectareuna este cu un **switch**, iar cealaltă este cu un **hub**. ​ +<​code>​ 
-  * 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//) +while hub is powered on
-  * 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.+    for each port: 
 +        if there is incoming data: 
 +            read the incoming data 
 +            for each other port: 
 +                send the data to that port 
 +</​code>​
  
-  * Ce puteți spune despre ​diferența dintre switch și hub+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 
-  ​La ce nivel din stiva OSI rulează fiecare?+de la scheletul de la [[https://​gitlab.cs.pub.ro/​rl/​schelet-hub|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. 
 + 
 +<code Python>​ 
 +# data este de tip byte array 
 +interface, data, length = recv_from_any_link() 
 +send_to_link(interface,​ data, length) 
 +</​code>​ 
 + 
 +<​hidden>​ 
 +<code Python>​ 
 +def main(): 
 +    interfaces = range(0, wrapper.init() + 1) 
 + 
 +    while True: 
 +        interface, data, length = recv_from_any_link() 
 +         
 +        print("​Received frame of size {} on interface {}"​.format(length,​ interface)) 
 + 
 +        for i in interfaces:​ 
 +            if i != interface:​ 
 +                print("​Forwarding to interface {}"​.format(i)) 
 +                send_to_link(i,​ data, length) 
 +</​code>​ 
 +</​hidden>​
rl/labs/02/contents/01.1695823446.txt.gz · Last modified: 2023/09/27 17:04 by vlad_iulius.nastase
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