UniTO/anno2/YearI/FirstSem/CR/lesson21-15122017.md

115 lines
6.9 KiB
Markdown
Raw Normal View History

2018-11-22 13:09:11 +01:00
# Architettura CCN (continua)
Punti chiave:
* Consumers inviano **interest packets**, i nodi Producers rispondono con **data packets**
* Prefissi (nomi dei contenuti) **gerarchici e dipendenti dal contesto**
* **Nonce** usati per evitare loops di Interests
*(slides per architettura CCN)*
L'architettura e' pensata per i **router**, quindi adottare la rete CCN significa **cambiare l'architettura dei router** (proposta debole).
3 strutture dati fondamentali:
* Content Store [name/content]: salva i contenuti ricevuti (**cache**)
* Pending Interest Table [prefisso/porta]: memorizza gli interessi pendenti (memorizza prefisso e porta di provenienza della richiesta)
* Forwarding Information Base [prefisso/porte]: istruzioni di forwarding dei contenuti (memorizza prefisso e porte di ricezione / invio)
Grazie a quest'architettura, e' possibile ottenere una flessibilita' ottimale per soluzioni come il multicast (che col paradigma punto-punto non sono affrontabili a pieno).
## Interessi Pendenti e "briciole"
Se due nodi hanno il contenuto, un nodo puo' decidere di inviare l'Interest a entrambi. Solo il primo data packet torna indietro, quindi si crea uno spreco di banda.
Questo e' possibile perche' i router, al momento di ritornare il contenuto, seguono lo stesso path definito dalla richiesta (un po' come se avesse lasciato delle briciole di pane). 1 interest packet = 1 data packet ritornato.
## Name prefix: struttura
Il nome dei contenuti veicola un gran numero di informazioni, seguendo uno schema **gerarchico**: *(vedi slides per albero)* si definisce il processo di gerarchia del nome come **sequencing**.
La sequenza e': *(dall'http:// al fondo dell'indirizzo)*
* Globally-routable name (dominio)
* Organizational name (path del file)
* Versioning, segmentation (convenzionale o automatico)
Comodo per passare tante informazioni in poco spazio, ma:
* Complessita' evidente del lookup di un contenuto (in pratica, l'albero e' di dimensione (altezza / profondita') non note). Per questo fare longest prefix match e' costoso
## Remarks
*(vedi slides per remarks)*
* I router mantengono **lo stato**.
* Interest is routed, not data (briciole)
* Possibili sprechi dovuti a pacchetti duplicati scartati
* Nonces
* Il salvataggio dei contenuti utilizza un replacement scheme arbitrario (favorite)
* Pending Interest: le entry della tabella hanno un **timeout**.
* CCN permette una distribuzione di dati scalabile (youtube e il video streaming ne sono un esempio)
* La realizzazione di reti AD-HOC e' molto piu' semplice: due nodi possono immediatamente comunicare tra di loro (interest packet *local friends* per entrare in comunicazione con i nodi vicini). Questo rende molto efficente lo streaming di dati su dispositivi mobile *on-the-move* (si parla di flusso dati real time), dove non si necessita piu' di handover perche' non si utilizzano piu' gli indirizzi per comunicare. *La mobilita' viene gratis*.
## TCP-like features
Il controllo di congestione e' fattibile allo stesso modo, solo che invece di ragionare con i pacchetti TCP, si ragiona con interest/data packets. La congestion window sara' quindi espressa in termini di interest packet e data packet. Simile ai segmenti TCP. Si parla di **receiver-based congestion control**.
## Other layers
### Forwarding Table (strategic layer)
Costruire la forwarding table puo' essere fatto per interfacce multiple o singole, con paradigmi *send to best* (mando al link piu' scarico) o con alternative.
Per installare le forwarding table e' necessario
### Routing (incremental deployability)
Sono possibili anche situazioni in cui ci sono router *ccn-enabled* mischiati con router IP tradizionali. Questo per facilitare l'utilizzo e l'adozione di CCN.
**Intra-domain**:
* Ip-routers: si occupano di fare forwarding dei Link-state announcements (TLV)
* CCN-routers: si occupano di due funzioni: discovery dei nodi vicini e describe di risorse connesse
* I publishers fanno advertise dei nomi (prefissi), che sono aggiunti alla FIB
Vi sono pero' situazioni non ottimali, in quanto i nodi IP **non fanno da cache**, pertando riducendo prestazioni.
**Inter-domain**:
* ISP hanno incentivi per sviluppare il CCN (costi piu' bassi, performance maggiore)
* Problema: UDP-tunneling e' necessario per collegare le *isole CCN*, ossia gli ISP che adottano CCN, attraverso l'internet IP (ISP che NON adottano CCN).
## CCN security model
Uno degli obbiettivi di CCN e' quello di migliorare la sicurezza di Internet, con l'approccio **self-certified object**.
Ciascun data packet si auto-certifica, nel senso che contiene una **signature** e delle informazioni **signed info**, cosi' che il ricevente puo' essere sicuro della sua integrita' e della sua autenticita'.
* Si associa a ogni nome una chiave, firmando i dati assieme al nome **al momento della creazione**.
* Si verifica integrita' dei dati perche' questi contengono la signature.
### Prevenzione di attacchi Interest Flooding
Per prevenire attacchi di flooding, i nodi possono monitorare **quanti interest packets dello stesso prefix sono risolti con successo**. Inoltre, i domini possono anche richiedere ai router downstream (lungo il cammino) di rallentare il numero di pacchetti che essi inviano, relativi allo stesso prefisso.
## Prestazioni
*(vedi slides per esempi di performance)*
Le prestazioni di un sistema CCN sono vantaggiose prettamente per il multicast, essendo che un utilizzo point-to-point non conviene. E' stato misurato che:
* CCNd vs ttcp (linux): CCN perde un 20% circa della banda permessa **in una connessione point-to-point** dal TCP standard, ma non e' un brutto risultato visti i vantaggi. Questo e' il caso peggiore.
* Nel caso di un multicast / uno a molti, la performance di CCNd e' decisamente migliore del ttcp, essendo che con ttcp il download time di N ricevitori e' lineare nel numero di ricevitori, mentre con CCN e' **costante**. Questo e' possibile grazie alla cache effettuata dai nodi downstream. Queste ipotesi sono valide assumendo che tutti i nodi effettuino la richiesta contemporaneamente.
## Note
* CCN migliora la performance anche nel punto-punto, prettamente per un discorso di caching lungo il percorso.
* Le massime prestazioni offerte dal CCN dovrei fare routing to nearest replica. Questo vuol dire fare routing non a casaccio ma verso il punto piu' vicino.
* Sembra incrementally deployable, ma con molte limitazioni sulla performance.
Problemi principali:
* L'architettura e' del 2009, in via di sviluppo.
* E' davvero implementabile?
* Quanto tempo serve per il prefix look up?
* I router hanno abbastanza memoria?
* Come si regolano le scelte di nomi?
Inoltre:
* Come decido con quale criterio fare caching dei contenuti? (in che nodi, quante volte, se farla o no)
* CCN e' un approccio clean-slate (parte da 0).
* Basata su successi e lezioni dell'internet di oggi
* Built-in: sicurezza, multicast, multipath
* Ha suscitato un gran numero di critiche, conferenze e ricerca.
*(vedi slides per paper SIGCOMM di critiche al CCN)*