Differences

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

Link to this comparison view

rl:labs:02:contents:01 [2013/10/06 12:33]
mihai.carabas [01. Popularea tabelei de comutare]
rl:labs:02:contents:01 [2023/10/17 10:51] (current)
vlad_iulius.nastase [01. [10p] Implementare Hub]
Line 1: Line 1:
-==== 01. Switch vs. Hub ====+==== 01. [15p] Implementare ​Hub ====
  
-În topologia PacketTracer ​de la această {{:​rl:​labs:​02:​contents:​rl_2013-2014_laborator-02_01.pkt|adresă}},​ veți găsi 2 rețele de câte 4 calculatoarediferența între ​ele fiind dispozitivul de interconectareuna este cu **switch** iar cealaltă este cu un **hub**. Trimiteți pachete între oricare 2 calculatoare în cele 2 topologii pentru a vă asigura că există conectivitate.+Vom implementa in Python funcționalitatea ​de baza a unui HubCum am vazut si in cadrul laboratorului anteriorpentru fiecare frame primit, hub-ul îl trimite pe toate interfețele (link sau port). Mai jos gasim o descriere in pseudocod:
  
-Intrați în modul "Simulation" ​ștrimitețcâte un pachet între 2 calculatoareFacețacest lucru pentru ambele rețele. Ce observați? Care este diferența între o rețea cu un switch și una cu un hub?+<​code>​ 
 +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 
 +</​code>​ 
 + 
 +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 [[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 in interfaces:​ 
 +            if != interface:​ 
 +                print("​Forwarding to interface {}".format(i)) 
 +                send_to_link(i, data, length) 
 +</​code>​ 
 +</​hidden>​
rl/labs/02/contents/01.1381051988.txt.gz · Last modified: 2013/10/06 12:33 by mihai.carabas
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