Federico Amedeo Izzo 9 лет назад
Родитель
Сommit
de810fee8f
1 измененных файлов с 99 добавлено и 116 удалено
  1. 99 116
      Piattaforme Software per la Rete/MOD1/lesson_13.md

+ 99 - 116
Piattaforme Software per la Rete/MOD1/lesson_13.md

@@ -1,118 +1,101 @@
 # Piattaforme e Software per la rete - lezione 13
 #### Giacomo Verticale
-###### 26 April 2016
-## IP Traceback
-Per un pacchetto osservato ad certo nodo, ci interessa sapere da dove il pacchetto è entrato
-nella rete e che nodi ha attraversato.
-Vediamo pacchetto P in V
-Vogliamo ricostruire il suo percorso nella rete.
-Possiamo mandare un altro pacchetto verso la stessa sorgente, ma essendo
-il routing asimmetrico, non è detto che un pacchetto nella direzione
-opposta seguirà lo stesso percorso.
-Altrimenti possiamo loggare tutti i pacchetti e chiedere ai vicini del nodo ricevente
-se hanno visto il pacchetto in questione.
-Un altro problema è che il pacchetto man mano che viaggia nella rete cambia
-alcuni dei suoi campi.
-Inoltre salvare su disco tutti i pacchetti è oneroso come capacità richiesta e velocità.
-Un terzo motivo è che i log stessi diventano un bersaglio interessante per gli intrusi.
-Serve una soluzione con costo computazionale costante, anche a costo di aumentare
-la probabilità di falsi positivi.
-
-Una soluzione adottata sono i __filtri di Bloom__
-
-## Filtro di Bloom
-Implementa in modo efficiente anche se non esatto il test di appartenenza ad un insieme.
-I browser ultimamente ci mettono tempo ad avviarsi perchè scaricano l'ultimo
-aggiornamento del filtro di bloom con la lista dei siti malicious.
-Le operazioni consentite sono:
-- Inizializzazione
-- Inserimento
-- Test
-
-Per implementarlo ci serve:
-- *h_i(x)* una famiglia di k funzioni hash indipendenti.
-- *A* array binario di m elementi inizialmente nullo
-
-è analogo alla tecnica di classificazione dei pacchetti.
-```
-INSERT(x)
-FOR i<-1,k
-    A[h_i(x)]=1
-```
-Do in pasto il mio input a tutte le funzioni di hash e setto a 1 le posizioni
-risultanti nell'array, se sono già a 1 le lascio così.
-All'aumentare delle funzioni di hash aumenta la probabilità di riempire l'array.
-
-```
-TEST(x)
-FOR i<-1,k
-    IF A[h_i(x)]==0 THEN
-        RETURN 0
-    END IF
-END FOR
-RETURN 1
-```
-
-Se durante l test trovo 1 in tutte le posizioni, potrei avere un match che però potrebbe
-essere un falso positivo
-
-In pratica il sistema viene dimensionato in modo da rendere trascurabile la probabilità di 
-falso positivo.
-
-### Probabilità errore
-- Prob che elemento j di a sia pari a 0 dopo 1 inserimento.
-=(1-1/m)^h
-- Prob [A(j)=1 | n]
-=1-(1-1/m)kn
-- Probabilità di __falso positivo__
-Equivale al caso in cui la probabilità precedente si verifica per k funzioni hash
-= [1-(1-1/n)^kn]^k=~[1-exp(kn/n)]^k
-
-### Esempio
-Supponiamo di avere un bloom filter con m=5 e k=2
-- h_1(x) = x*mod5
-- h_2(x) = (2x+3)*mod5
-Una funzione di hash pessima è
-h(x)=2xmod8 perchè l'ultimo bit rimane sempre a 1
-Un'altra cattiva scelta di funzioni hash è quando le funzioni hash
-sono correlate e quidi non producono più output indipendenti.
-Richieste:
-- Inserire x=9 e x=11
-- Testare x=15 e x=16
-
-Filtro vuoto = 00000
-Inserisco x=9:
-- h1(9)=4 h2(9)=1
-Risultato = 01001
-Inserisco x=11
-- h1(11)=1 h2(11)=0
-Risultato = 11001
-Test
-- h2(15)=0 h2(15)=3
-
-Consideriamo il sistema visto applicato ad un router
-x= identificativo del flusso
-lunghezza pacchetti = 512byte
-Su x sono calcolati n hash dalla famiglia hi(x) con 1<=i<=n
-tali hash sono usati come indici in n array di m elementi
-A1,A2,...,An.
-Ad ogni pacchetto si incrementa Ai[hi(x)] per ogni i
-Se Ai[hi(x)]>=S per ogni i, salvo x su disco.
-
-Tutti array azzerati ogni T=10s
-1- Dire quali campi scegliere per X per avere nello stesso flusso i pacchetti
-verso lo stesso socket nello stesso host.
-x = IP dest || porta || porta dest
-
-Come scegliere S in modo da selezionare tutti i flussi da almeno 25Mbit/s
-
-S=(25*10^6bit/s*10s)/8*512 =61036 pacchetti
-*******
-Un certo flusso g ha superato la soglia considerando m = 2^8 e n=3
-oltre la prob che un nuovo flusso sia selezionato
-dire la probabilità che un *nuovo* flusso sia selezionato
-
-Pr(hi(x)=hi(y)) per un dat i = 1/m
-Probabilità di falso positivo = (1/m)^n
-=1/2^24=~6*10^-8
- 
+###### 29 April 2016
+## Ingegneria del traffico
+- Ingegneria del traffico IP
+    - Consiste nell-agire sui pesi dei protocolli di routing
+    - Ha delle limitazioni
+- Ingegneria del traffico con __MPLS__
+    - Consente instradamento puntuale di
+         - singoli flussi
+         - classi di traffico (aggregati di flussi)
+
+Vedendo la pila protocollare le soluzioni di ingegneria del
+traffico come MPLS si posizionano tra Data Link e IP
+Perché agiscono prima che IP effettui il routing.
+
+|L2 Header|
+| --- | 
+|...|
+|...|
+|IP Header|
+
+Tra gli header L2 e Gli header IP vengono inserite delle etichette
+Nell'header L2 é indicato nel campo *data type* che il payload é __MPLS__
+L'ultima etichetta é contrassegnata con 1 nel capo *S* in modo da sapere
+che la parola successiva é il pacchetto IP e non un ulteriore etichetta.
+
+### Campi dell'intestazione MPLS
+- etichetta = indirizzo preso da uno spazio di flat
+- exp = usato analogamente a *type of service*, ad
+esempio per classificare i pacchetti in modo da
+garantire la loro consegna.
+- S = é posto a uno nell'utlima etichetta
+- TTL = come in IP.
+
+__MPLS__= Multi Protocol Label Switching
+Di protocolli di livello 3 é usato praticamente solo IP
+mentre Puó lavorare su tutti i protocolli di livello 2 
+su cui puó lavorare IP.
+
+MPLS si trova su alcuni segmenti di reti, generalmente appartenenti 
+ad un solo gestore.
+Dei nodi equipaggiati con MPLS nella rete ce ne sono alcuni
+presenti al confine della rete ed altri al bordo.
+I nodi fanno un po' da switch e un po' da router IP
+I nodi al bordo vengono chiamati __Label Edge Router__
+Quelli in mezzo vengono chiamati __Label Switching Router__
+
+Gli __LER__:
+- Classificano pacchetti IP
+- Applicano una etichetta
+- inoltra
+
+Gli __LSR__:
+- Instraddano i pacchetti sulla base delle etichette.
+
+Questo tipo di soluzioni viene utilizzato in reti metropolitane
+per far fare percorsi diversi a tipi diversi di traffico
+
+Operazioni di un __LER__:
+- Push = aggiunge un layer di etichetta
+- Pop = rimuove l'etichetta esterna
+
+Operazioni di un __LSR__:
+- swap = modificare il valore dell'etichetta esterna.
+Il valore numerico dell'etichetta viene cambiato perché in questo modo 
+é necessario mettere d'accordo sul valore di un etichetta solo pochi nodi
+e non tutti i nodi.
+In questo modo é possibile anche avere piú reti __MPLS__ innestate una
+nell'altra.
+
+__FEC__ = Forwarding Equivalence Class, indica che i pacchetti
+appartenenti ad una sola classe vengono gestiti e inoltrati in modo uniforme.
+
+|FEC|Etichetta locale| Etichette remote|
+|---|---|
+|Regola 1 | 29|R1:45 R2:50|
+|Regola 2 | ||
+
+Viene espressa in una tabella in cui si esprime la corrispondenza
+tra etichette locali ed etichette remote.
+Tuttavia la tabella completa viene distribuita nei vari nodi in cui é presente 
+o solo la colonna *etichetta locale* o quella *etichette remote*
+Quindi non costruisco un insieme di circuiti virtuali ma un insieme
+di *cammini* che sono *unidirezionali*
+
+## Ingegneria del traffico
+Per realizzare l´ architettura necessaria devo:
+- Definire flussi e classi di traffico
+    - I __LER__ associano i pacchetti alle FEC usando un classificatore
+- Descrivere ogni classe di traffico.
+    - Deve essere data (per esempio la banda di picco).
+- Descrizione della rete e della disponibilitá di risorse
+    - Non basta la mappa fornita da link state, serve la banda disponibile.
+    - In internet viene esteso OSPF (OSPF-TE)che comunica anche disponibilitá di banda.
+- Implementare un algoritmo che decida dove instradare i vari flussi.
+    - Puó essere lento e trovare l'ottimo assoluto o veloce e venire eseguito spesso
+- Protocollo per inserire i percorsi nelle tabelle.
+    - IETF cosniglia RSVP-TE
+
+