|
@@ -0,0 +1,35 @@
|
|
|
+# Piattaforme e Software per la rete - lezione 7
|
|
|
+#### Giacomo Verticale
|
|
|
+###### 1 April 2016
|
|
|
+## Middleboxes
|
|
|
+Una soluzione è usare le TCAMs nelle packet classification, ma sono grosse e consumano molto,
|
|
|
+non hanno un estensione ulteriore per il range match, se ho un range di 50 valori dovrei creare 50 regole.
|
|
|
+Ma posso giocare coi prefissi per ridurre il n° di regole.
|
|
|
+Guardiamo un campo di IPv6: __flow label__, viene messo dentro di esso un numero a caso di 20 bit,
|
|
|
+che verrà replicato in tutti i pacchetti dello stesso flusso.
|
|
|
+Lo scopo di avere un campo di questo tipo è consentire ai nodi intermedi di prendere decisioni
|
|
|
+di packet classification guardando solo il livello 3, senza andare a livello 4 (che potrebbe
|
|
|
+non essere accessibile per via della crittografia).
|
|
|
+Uso gli ultimi bit del flow label per indirizzare i pacchetti che appartengono ad uno stesso flusso
|
|
|
+per la stessa strada.
|
|
|
+La sorgente potrebbe non mandare pacchetti dello stesso flusso con lo stesso numero flow,
|
|
|
+perciò i nodi intermedi potrebbero non fidarsi della sorgente.
|
|
|
+Oltre al flow label nella cache mando anche gli altri campi importanti in modo che possa confrontarli.
|
|
|
+
|
|
|
+So fare molto bene i match uno per volta ma ho difficoltà a farlo di più campi contemporaneamente.
|
|
|
+Quindi: trovo tutte le regole che matchano campo 1 poi quelle che matchano campo 2, le tengo tutte
|
|
|
+e ne faccio l'intersezione (AND), e trovo quelle che matchano con tutti i campi.
|
|
|
+
|
|
|
+Per fare l'and bit a bit (bitwise) è lineare il costo.
|
|
|
+Se ho tutti zero non ho un match, se ho almeno un 1 sì.
|
|
|
+
|
|
|
+## Switching
|
|
|
+La memoria condivisa funziona solo per poche porte e link lenti.
|
|
|
+Nelle architetture a bus si salta la memoria, il pacchetto viene salvato direttamente sulla porta d'uscita
|
|
|
+partendo dalla memoria d'ingresso.
|
|
|
+Ci sono varie versioni in base al numero di CPU:
|
|
|
+- Quella ad una CPU prende essa tutte le decisioni di forwarding
|
|
|
+- Con più CPU si alleggerisce il carico computazionale,
|
|
|
+Si presentano pacchetti in cui i *lookup*sono fatti già sulle line card,
|
|
|
+non sovraccaricando la CPU che gestisce solo il piano dati.
|
|
|
+Un'altra soluzione è avere una __matrice crossboard__
|