lesson_07.md 2.1 KB

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