Torna alla pagina di Sistemi per l'elaborazione delle informazioni
:: Sistemi per l'elaborazione delle informazioni ::
Lezione 2 Ottobre 2007
I livelli
Livello fisico e di Data Link
Tornando al livello fisico, dobbiamo ricordarci che la Ethernet a 100Mbit non usa la codifica Manchester che abbiamo illustrato precedentemente, bensì la 4B5B (che non appena leggo sul libro che cos'è ve lo faccio sapere), e usa cavi più corti proprio per via del legame tra banda passante e lunghezza dei cavi che abbiamo analizzato nelle lezioni dei giorni scorsi.
Quindi, anche se il DataLink fosse uguale, il livello fisico dovrebbe per forza di cosa cambiare. E comunque questo cambiamento sarebbe indolore, dal punto di vista del DataLink: questi sono i vantaggi dei livelli.
Livello di rete
Il DataLink funziona su una rete locale, una sola alla volta, e non specifica come far colloquiare 2 Ethernet diverse. A noi sembra tanto banale, ma vi ricordo che a questo punto non sappiamo ancora che cosa sia il TCP/IP, e ci dobbiamo attaccare: i cavi sono lunghi tot, e oltre non vanno; tutti i computer devono essere "a portata di pacchetto" e così via. Per collegare 2 Ethernet diverse occorrono macchine specifiche.
Questo è poi il primo livello software, perché i 2 livelli precedenti sono implementati da hardware.
Livello di trasporto
Quando un frame viene scartato, la specifica Ethernet non ci dice affatto come recuperalo. Occorre che ci sia un software che gestisca il reinvio dei pacchetti inviati e collisi (si dice così?), perché la NIC, di per sé, non ne sa niente.
Occorre quindi gestire il trasporto. Le caratteristiche del trasporto devono essere:
- senza errori;
- in sequenza (un pacchetto dopo l'altro)
- senza perdite;
- senza duplicati;
- il truput deve essere costante.
Nella Ethernet, l'overhead di protocollo (di cui abbiamo parlato nella prima lezione), non è affatto poco. Ciò vuol dire che il truput effettivo è inferiore alla banda passante nominale.
Per esempio, in un frame ci sono sempre e comunque 208 byte che se ne vanno tra header e trailer, e al max ci sono 1500 byte di dati. 208 byte su 1500 sono una quantità apprezzabile di overhead: 208 : (1500 + 208) = x : 100; x = 12,86%
.
Lo standard ISO/OSI e i livelli
Lo standard ISO/OSI presenta uno schema dei vari livelli, e ogni livello ha il suo protocollo specificato.
Occorre tenere conto di questo principio: quello che un livello considera esclusivamente come payload, verrà a sua volta formattato da un livello superiore secondo il suo protocollo. Questo vuol dire che ad ogni livello, un pezzo di payload se ne va per ospitare gli header dei vari protocolli.
Schema originale dei livelli ISO/OSI
Principi generali
Le reti possono essere Circuit Switching o Packet Switching.
Circuit Switching
Vuol dire a commutazione di circuito. Questo vuol dire che per ogni comunicazione viene creata una linea fisica tra mittente e ricevente.
È quello che accade col telefono: i vari apparecchi che si trovano lungo la linea telefonica commutano in modo tale da creare una connessione diretta tra il mio telefono e quello che sto chiamando.
Il vantaggio di questo tipo di collegamento è indubbiamente la velocità: ho una linea tutta per me, e posso sfruttarla al massimo.
Lo svantaggio è che questa linea, una volta che è stata stabilita, rimane stabilita anche se non la sto usando. Un esempio stupido: se alzo la cornetta e chiamo qualcuno, e poi stiamo zitti al telefono, pago la chiamata anche se non sto comunicando niente
Packet Switching
Le linee a commutazione di pacchetto invece usano una stessa linea per condividere più connessioni. È quello che abbiamo visto fino ad ora con Ethernet.
Il vantaggio è il costo, inferiore perché la linea è una e le stazioni sono tante.
Ovviamente, lo svantaggio è proprio la velocità: se siamo in troppi a comunicare, la linea si intasa.
Message Switching
Invio un messaggio, e fin quando non l'ho terminato completamente, gli altri stanno zitti. Precursore del packet switching, è oggi e nella maggior parte dei casi già implementato nel packet e nel circuit switching.
I livelli
Ancora! Sinceramente l'ordine delle spiegazioni di Pier Damiani è un po' caotico, ma tant'è!
I livelli di cui ci occupiamo sono: fisisco, datalink, rete, trasporto, applicazione. Ogni livello ha la sua responsabilità. Ogni apparecchio di rete funziona ad un certo livello. Per esempio, lo switch opera a livello 2, il sistema operativo lavora a livello 3 e così via.
Collegare Ethernet diverse
Lo switch opera a livello 2, cioè non guarda nel payload del frame ma si limita ad analizzare l'header per capire dove inoltrare il frame. Lo hub invece è di livello 1, perché è un cavo compatto, come più volte spiegato precedentemente.
Collegare Ethernet diverse vuol dire quindi capire come funzionano questi apparecchi.
Hub
Prende un frame da una porta e lo replica su tutte le altre. Fa broadcast. Tratta tutti i bit in arrivo allo stesso modo, non li guarda minimamente.
Switch
Lo switch invece non tratta tutti i bit in egual maniera: deve leggerli e capire dove mandarli, è quindi un apparecchio dotato di una qualche forma di intelligenza.
La sua intelligenza viene usata per leggere i bit del MAC di destinazione del pacchetto in arrivo, capire a quale porta inoltrarlo, e inviarcelo.
Questo presuppone la capacità dello switch di associare ad ogni porta un MAC. Infatti è ciò che avviene: ha una tabella interna che mantiene proprio questa relazione porta - MAC.
Come fa a creare sta tabella? Non è pensabile che l'amministratore di rete prenda ogni mattina a scrivere sta tabella nello switch.
Nelle reti Ethernet 100MBit è prevista una modalità di colloquio tra le schede e lo switch: in questo modo una scheda manda certi messaggi predefiniti e lo switch impara di lei quello che deve imparare.
Ma le schede 10Mbit, che seguono lo standard originale di Ethernet, non sanno niente di tutto ciò, anche perché all'epoca gli switch non erano ancora stati inventati. Ecco come si comporta lo switch in questi casi:
- arriva un pacchetto
- non sa dove mandarlo, lo replica a tutti
- ma è furbo: quando qualcuno mi invia un frame, lo vede arrivare da una porta => si segna l'indirizzo del mittente nella tabella porte - MAC
- la prossima volta che mi compare questo MAC, so a che porta associarlo
Questo processo si chiama learning. L'accesso alla tabella di switch deve essere inoltre molto rapido, per evitare latenze nella rete. La memoria veloce è costosa, quindi gli switch costano.
Ecco che abbiamo introdotto un'altra differenza tra 802.3 e 802.3u (100Mbit): non solo il livello fisico è diverso (cavi più corti, banda più ampia etc.), ma anche il Data Link è leggermente diverso, perché prevede questo dialogo con lo switch che non era previsto in origine.
Non solo: ci sono ditte che hanno aggiunto ancora delle funzionalità agli switch, e quindi al DataLink, in modo del tutto non standard.
Riassumendo, lo switch lavora a livello 2 perché deve guardare all'interno del frame.
Bridge
I Bridge ora sono poco usati, perché per connettere 2 reti si collegano degli switch, che hanno a questo proposito un'uscita ultraveloce, in genere in fibra ottica, per collegarsi ad altri switch. Questa porta si chiama BACKBONE, e viene tirata in ballo nel momento in cui lo switch trova un MAC che non esiste nella sua tabella: allora lo replica nella backbone, e spetta a qualcun altro occuparsene.
Per fortuna che ste backbone sono veloci, perché altrimenti si intaserebbe la linea replicando a tutti i messaggi di cui non si sa identificare il destinatario. Ai bei tempi, quando non c'erano le backbone veloci, replicare i messaggi a caso era un processo che poteva portare al tracollo il cavo coassiale.
Per questo esistevano i Bridge. Lavora a livello 2: copia da un livello all'altro i frames, filtrandoli però in base al loro MAC. Un bridge è collegato con una porta ad una rete, con l'altra porta ad un'altra rete. Esattamente come lo switch, fa il learning dei MAC e delle porte, così che sa indirizzare un pacchetto che gli arriva alla porta giusta, oppure non inoltrarlo dall'altra parte se la sua destinazione è nella stessa rete da cui è provenuto. Anzi, a dire la verità è lo switch che ha copiato il learning dal bridge, perché il bridge è stato inventato prima dello switch.
Nella fase di learning, un bridge impara ad associare certi MAC ad una porta. Ma che cosa succede se metto due Bridge tra le stesse 2 reti? Il Bridge 1 prende i dati dalla rete A e li replica sulla rete B. Il Bridge 2 vede arrivare questi dati dalla rete B e li replica sulla rete A. Nel frattempo, B ha imparato che questi MAC vengono dalla rete B, mentre in realtà sono stati copiati su B dal Bridge numero 1! Al passo successivo, le parti si invertono (provate ad immaginare perché) e così via. Insomma, è un grafo in cui c'è un ciclo tra i nodi (vedi Algoritmi per le definizioni di grafo, nodi e ciclo).
Per ovviare a questo problema, sono stati inventati dei Bridge che implementano un algoritmo detto Spanning Tree, il quale si accorge di questa situazione e vi pone rimedio. In sostanza crea un albero a partire dal grafo delle connessioni, e toglie il sottoalbero che non serve. Da notare che ormai sti bridge non li fanno più, che ormai non servono più.
Note di colore sul MAC
Il MAC può essere visto come un algoritmo probabilistico distribuito. Volano parole grosse, eh?
- Algoritmo: il MAC serve per mappare della memoria che non risiede in un solo luogo fisico, ma in posti diversi. Deve fare dei calcoli per mapparla nel posto giusto. Un po' come le reti di Nello, con quegli scatoli che indirizzavano le celle e così via.
- Probabilistico: è opposto a deterministico, ovvero non sa quanto tempo ci metterà per trovare il punto giusto della memoria e copiarci i dati.
- Distribuito: infatti i calcoli non avvengono in un luogo unico, ma su ogni scheda: per questo è distribuito.
Quindi, il CSMA/CD, che è un MAC, è un algoritmo di copia della memoria.
Da notare che esistono anche MAC che sono deterministici, cioè in cui il tempo di trasfermimento è noto a priori.
Torna alla pagina di Sistemi per l'elaborazione delle informazioni