|
@@ -0,0 +1,132 @@
|
|
|
+# Piattaforme Software per la Rete - lesson 1
|
|
|
+#### Giacomo Verticale
|
|
|
+###### 8 March 2016
|
|
|
+## Modulo 1 - Introduzione
|
|
|
+
|
|
|
+__Pila protocollare OSI__
|
|
|
+Il modulo 1 da una visione trasversare alla rete dal livello di trasporto in basso (comunicazione tra i nodi)
|
|
|
+Il modulo 2 invece analizza la comunicazione tra gli strati App-Tra-IP di un singolo oggetto.
|
|
|
+
|
|
|
+Per ogni singolo nodo studieremo:
|
|
|
+- I mattoncini per fornire i servizi in un singolo nodo
|
|
|
+- Implementazioni diverse a seconda del contesto (router per sensori 10€/terabit router 10K€)
|
|
|
+- Algoritmi che vengono usati per realizzare il protocollo internet
|
|
|
+
|
|
|
+Esercizi:
|
|
|
+- Valutazione delle prestazioni o esecuzione degli algoritmi visti a lezione
|
|
|
+- Parte di laboratorio in aula informatica (possibile usare il proprio computer)
|
|
|
+ - Laboratorio su *software defined networking*
|
|
|
+ - Utilizzeremo un emulatore di rete per implementare le funzioni dei nodi interni.
|
|
|
+ - Strumento: macchina virtuale che può eseguire un sottoinsieme di Python
|
|
|
+
|
|
|
+## Prova scritta
|
|
|
+- 1 Esercizio di laboratorio: eseguire e commentare programma
|
|
|
+- Esercizi numerici su protocolli e algoritmi
|
|
|
+
|
|
|
+## Materiale di studio
|
|
|
+- Slides su beep
|
|
|
+- Articoli che spiegano i concetti visti a lezione
|
|
|
+- Potrebbe servire un libro di reti (richiesta conoscenza protocollo IP, con. base TCP, con. base Ethernet)
|
|
|
+- Libro su algoritmi: Varghese - Network Algorithmics - Morgan Kaufmann 2003
|
|
|
+- Libro copiato dal precedente: Chao - High Performance Switches and Routers - Wiley 2007
|
|
|
+
|
|
|
+#### Libro Laboratorio
|
|
|
+In una __Software Defined Network__:
|
|
|
+Controllore programma il router con il protocollo openflow, l'implementazione scelta è Ryu,
|
|
|
+Per il laboratorio sarà utile il libro: RYU SDN Framework, scaricabile da internetz.
|
|
|
+
|
|
|
+## Introduzione
|
|
|
+__Network Algorithmics__: algoritmi da implementare per ottenere le prestazioni richieste da un contesto (bilanciamento costi/prestazioni)
|
|
|
+Ad esempio per un ambiente in cui è richiesta una banda di 100Kbit/s va bene anche una cpu scarda/algoritmo scarso,
|
|
|
+se il link da gestire è più veloce servono cpu più veloci e algoritmi più efficienti.
|
|
|
+
|
|
|
+### Piattaforme di Sviluppo (SDN)
|
|
|
+Difficile fare innovazione su internet perchè serve mantenere la compatibilità con i dispositivi preesistenti,
|
|
|
+es: IPv6, standardizzato nel 1996, dopo 21 anni sta iniziando ad essere adottato.
|
|
|
+
|
|
|
+__SDN__ si sta affermando ultimamente perchè permette di cambiare il comportamento dei dispositivi di rete con dei programmi.
|
|
|
+Prima della sua introduzione i dispositivi di rete avevano delle funzioni ben definite dalla fabbrica.
|
|
|
+All'inizio veniva usato su dispositivi low-end mentre ultimamente è supportato da router ad alte prestazioni.
|
|
|
+
|
|
|
+### Gestione di rete
|
|
|
+è possibile misurare il traffico ed effettuare *ingegneria del traffico*
|
|
|
+
|
|
|
+### Principi di Guida di internet
|
|
|
+Es: IP, Ethernet, e altri protocolli non sono necessariamente il modo migliore di fare le cose,
|
|
|
+ma una scelta che è stata fatta in un certo contesto.
|
|
|
+Può essere necessario superare le limitazioni dei protocolli senza sostituirli.
|
|
|
+
|
|
|
+## Principi guida dello sviluppo di IP
|
|
|
+L'obiettivo iniziale di internet (1969) era di condividere delle risorse, in particolare i Mainframe costavano tanto
|
|
|
+e comprarne uno per ogni Università, ecc era costoso e portava a dei doppioni.
|
|
|
+
|
|
|
+__Obiettivi di internet:__ (in priorità decrescente)
|
|
|
+- Condivisione e Interconnessione di risorse e reti esistenti
|
|
|
+- Resistenza ai guasti
|
|
|
+- Eterogeneità
|
|
|
+- Gestione Distribuita
|
|
|
+- Facilità di interconnessione
|
|
|
+- Accountability
|
|
|
+
|
|
|
+Questo porta a *eterogeneità* e *decentralizzazione*
|
|
|
+
|
|
|
+### Condivisione delle risorse di comunicazione
|
|
|
+Condivisione è analogo a __Multiplazione__ che implica __Commutazione__
|
|
|
+
|
|
|
+Commutazione:
|
|
|
+- *di circuito* esisteva dalla fine dell '800
|
|
|
+ - pro: garantisce delle prestazioni
|
|
|
+
|
|
|
+- *di pacchetto* era un concetto recente, non ancora provato a lunga distanza
|
|
|
+ - pro: possibilità di fare *multiplazione statistica* -> condivisione efficiente
|
|
|
+ - con: non ho garanzia di prestazioni
|
|
|
+
|
|
|
+Comunicazioni informatiche, a differenza di quelle telefoniche non richiedono una banda costante,
|
|
|
+e quindi si adattano bene alla multiplazione statistica/comm. di pacchetto.
|
|
|
+Nella commutazione di pacchetto utilizzo i *datagrammi* che sono una forma di comunicazione autocontenuta
|
|
|
+(info destinatario incluse).
|
|
|
+L'eterogeneità del progetto, ad esempio per le prestazioni delle varie reti da interconnettere ha portato ad un modello __best effort__
|
|
|
+__Best effort__: la rete si impegna ad offrire il miglior servizio possibile.
|
|
|
+In particolare la gestione della comunicazione e dei suoi problemi deve essere gestita dai *nodi finali*.
|
|
|
+Servizio richiesto alla rete è semplice: consegnare i datagrammi in ingresso all'uscita.
|
|
|
+Per questi motivi è stato adottato il __Datagramma__.
|
|
|
+
|
|
|
+__Clessidra di still dearing__
|
|
|
+Rappresentazione dello stack di internet in cui la vita (sottile) della clessidra rappresenta IP,
|
|
|
+La parte sotto rappresenta i protocolli data-link (WiFi, Ethernet, 4G...) e sotto ancora i vari mezzi fisici (Rame, Fibra, Radio...)
|
|
|
+Sopra IP abbiamo lo strato di trasporto (TCP, UDP, SCTP)
|
|
|
+Sopra il trasporto abbiamo i vari livelli applicativi (HTTP, SMTP, FTP...)
|
|
|
+
|
|
|
+Le parti sotto e sopra la vita sono eterogenee.
|
|
|
+Internet è un esempio di rete multiservizio.
|
|
|
+
|
|
|
+### Resistenza ai guasti
|
|
|
+è impossibile evitare i guasti, ma si può rimediare:
|
|
|
+- Replicando lo stato della rete
|
|
|
+- Facendo in modo che uno stato non sia essenziale per la rete
|
|
|
+
|
|
|
+A questo proposito è stato implementato il __fate-sharing__ invece della __replication__(veniva usata nelle reti telefoniche)
|
|
|
+__fate-sharing__: è accettabile perdere informazioni di stato se le informazioni perse con il nodo sono relative al nodo.
|
|
|
+Questo porta ad evitare di distribuire nella rete informazioni di stato relative ad altri nodi, in modo che lo stato legato ad un nodo
|
|
|
+è sacrificabile.
|
|
|
+
|
|
|
+Il sistema risultante è più semplice ma risulta più lenta la procedura di ripristino dei guasti (rispetto alla replication)
|
|
|
+Ma ottenere *alte prestazioni* non era tra gli obiettivi iniziali di internet (oltre alla sicurezza)
|
|
|
+
|
|
|
+### Gestione distribuita
|
|
|
+Non esiste un nodo centrale in internet, esistono delle autorità centrali per suddividere lo spazio degli indirizzi (riguarda solo configurazione)
|
|
|
+La cosa più centrale in internet sono i root server DNS che sono comunque 13.
|
|
|
+
|
|
|
+Conseguenze:
|
|
|
+- Internet può funzionare senza alcune parti
|
|
|
+- Nessuno ha una visione completa della rete
|
|
|
+
|
|
|
+### Facilità di interconnessione
|
|
|
+### Accountability
|
|
|
+Questo obiettivo non è stato pienamente perseguito, a causa della scelta del datagramma.
|
|
|
+
|
|
|
+### Obiettivi non previsti inizialmente:
|
|
|
+- __sicurezza__
|
|
|
+- __prestazioni__
|
|
|
+- __mobilità__ (spostamento continuo)
|
|
|
+- supporto al __nomadismo__ (collegamento in posti diversi)
|