Sei sulla pagina 1di 119

SWITCHING AND ROUTING

AA 2013-2014
Prof. Guido Mayer

REALIZZATO DA:
TREMOLADA DENNY
TROIA SEBASTIAN
MOLA ANDREA
INDICE
INTRODUZIONE
1. ARCHITETTURE DI INTERNET
1.1 IL PRESENTE
1.2 IL FUTURO
2. ARCHITETTURE DEI ROUTER
2.1 DESIGN DEI CORE ROUTER
3. IP ADDRESS LOOKUP
3.1 INTRODUZIONE
3.1.1 CLASSI DI INDIRIZZAMENTO
3.2 ALGORITMI DI LOOKUP BASATI SUGLI ALBERI
3.2.1 Binary trie
3.2.2 Path compressed trie
3.2.3 Multibit trie
3.2.4 Level compressed trie
3.2.5 Trie bitmap
3.2.6 Ricerca binaria basata sulla lunghezza dei prefissi
3.2.7 Ricerca binaria basata sullintervallo dei prefissi
3.3 ALGORITMI DI LOOKUP BASATI SULLHARDWARE
3.3.1 DIR-24-8
3.3.2 BC-16-16
3.3.3 Ternary CAM
3.3.3.1 Prefix pruning
3.3.3.2 Estensione della maschera
4. PACKET CLASSIFICATION
4.1 CLASSIFICAZIONE BASATA SUI TRIE
4.1.1 Trie gerarchici
4.1.2 Set pruning trie
4.1.3 Greed of tries
4.1.4 Schemi a due dimensioni
4.2 ALGORITMI GEOMETRICI
4.2.1 Cross-producting scheme
4.2.2 Bitmap intersection
4.3 ALGORITMI EURISTICI
4.3.1 Classificazione a flusso ricorsivo (RFC)
4.4 ALGORITMI BASATI SULLE TCAM
5. PACKET SWITCHING
5.2 SWITCH FABRIC
5.2.1 Time division switching (TDS)
5.2.2 Space division switching (SDS)
5.2.2.1 Single-path switches
5.2.2.1.1 Crossbar switch
5.2.2.1.2 Fully interconnected switches
5.2.2.1.3 Banyan-based switches
5.2.2.2 Multiple-path switches
5.2.2.2.1 Augmented Banyan Switches
5.2.2.2.2 Three-stage Clos Network
5.2.2.2.3 Multiplane switches
5.2.2.2.4 Recirculation switches
5.3 STRATEGIE DI BUFFERING
5.3.1 Shared-memory queuing
5.3.2 Output queuing (OQ)
5.3.3 Input queuing (IQ)
5.3.4 Virtual Output Queuing (VOQ)
5.3.5 Combined Input and Output Queuing (CIOQ)
5.3.6 Crosspoint Queuing
5.4 PERFORMANCE
6. SWITCHING-NETWORK THEORY
6.1 FULLY CONNECTION MULTISTAGE NETWORK
6.2 PARTIAL CONNECTION MULTISTAGE NETWORK
7. REARRANGEABLE NON BLOCKING NETWORK (RNB)
8. STRICTLY NON BLOCKING NETWORK (SNB)
9. INPUT-BUFFERED SWITCHES VIRTUAL OUTPUT QUEUING
9.1 SCHEDULING IN VOQ-BASED SWITCHES
9.2 MAXIMUM MATCHING
9.2.1 Matching di peso massimo
9.2.2 Matching di peso massimo approssimato
9.2.3 Maximum Size Matching
9.3 MAXIMAL MATCHING
9.3.1 Parallel Iterative Matching (PIM)
9.3.2 Iterative Round-Robin Matching (iRRM)
9.3.3 Iterative Round-Robin con SLIP (iSLIP)
INTRODUZIONE
Lo switching unoperazione di trasformazione eseguita su un dato dominio di multiplazione
(tempo, frequenza, etc..). Lo switch un elemento della rete che opera al livello 2 del
modello ISO/OSI ed esegue una trasformazione dal dominio di multiplazione in ingresso al
dominio in uscita. La complessit dello switching aumenta con la complessit del dominio di
multiplazione (numero di ingressi, numero di uscite). Si comincia a parlare di multiplazione
con la diffusione della rete telefonica che deve supportare conversazioni multiple nello
stesso tempo (multiplazione a divisione di spazio, prima centraliniste poi sistemi
automatizzati). Con il telefono digitale si passati a una multiplazione gerarchica (PCM,
PDH, SDH, etc..) digitale, e un dominio di multiplazione in spazio e tempo. Oggigiorno le reti
ottiche moderne usano una multiplazione a divisione di lunghezza donda (WDM), e un
dominio a divisione di spazio e lunghezza donda. In futuro si richiederanno sempre pi
accessi a Internet, e quindi una quantit di dati sempre maggiore. I limiti sono rappresentati
dal consumo energetico e dal tempo di elaborazione dei dati che diminuisce allaumentare
della capacit [bit/s].
Allinizio cerano differenti reti sviluppate in modo indipendente (da universit, centri di
ricerca, etc..), usando protocolli e architetture differenti. Il compito di Internet quello di
interconnettere ogni tipo di rete, basandosi su protocolli interni e meccanismi di
indirizzamento. Ci sono milioni di computer (detti host) connessi alla rete, e su questi vengono
eseguite le applicazioni. Ci sono infrastrutture di comunicazione che supportano le
applicazioni distribuite come web, file sharing e protocolli di comunicazione per inviare e
ricevere messaggi. Questo pu avvenire secondo 2 modelli: modello client-server, in cui il
client chiede un servizio e il server glielo fornisce, e modello peer-to-peer, in cui tutti i
terminali cooperano senza distinzioni di ruolo.

1. ARCHITETTURE DI INTERNET
1.1 IL PRESENTE
Oggi Internet un insieme di centinaia di provider di reti commerciali e di servizio per le reti.
Non ammissibile per un singolo provider connettere due nodi distanti in Internet. Pertanto, i
provider spesso fanno affidamento uno con laltro per connettere i punti. Il loro operato
dipende dalla dimensione operativa della rete, quindi gli Internet Service Provider (ISP)
possono essere suddivisi in 3 grandi categorie, secondo unorganizzazione gerarchica:

Tier-1 (copertura internazionale)


Tier-2 (copertura nazionale)
Tier-3 (copertura regionale)
Tra ISP dello stesso livello ci sono peering link, che consentono linterconnessione senza uno
scambio di denaro. Al contrario, tra livelli di differente gerarchia ci sono customer-provider
link, dove il Tier superiore fornisce il servizio al Tier inferiore dietro un pagamento in denaro
instaurando quindi rapporti commerciali di tipo customer-provider).

Tier-1: sono gli ISP di grandi compagnie di telecomunicazione, come AT&T, Sprint e SEABONE
(Telecom). Questi ISP hanno reti ad alta velocit che formano il backbone (collegamenti o
dorsale) di Internet; sono situati al centro di Internet e hanno una copertura a livello
internazionale, sono interconnessi tra loro mediante i peering link ed operano multiplando
con IP/MPLS (Multi-Protocol Label Switching) e in alcuni casi ATM, con backbone fino a 10
Gbps;

Tier-2: sono gli ISP pi piccoli ed esterni a Internet, come Vodafone. Questi ISP sono collegati
tramite customer-provider link ai Tier-1 per accedere a Internet e sono a livello nazionale;

Tier-3: sono ISP regionali e vengono usati dalle imprese per connettersi a Internet, molto pi
vicini ai sistemi finali.
Un pacchetto che viaggia tra 2 client pu attraversare tutte le tipologie di ISP.

Questa larchitettura fisica di Internet:

A fianco degli ISP, che forniscono accesso ad Internet agli utenti, ci sono i BSP (Backbone
Service Provider), i quali forniscono accessi alle linee di trasmissione agli ISP, permettendo a
questi di offrire i loro servizi. Gli ISP hanno accesso alla rete tramite un POP (Point of
Presence), ovvero un insieme di router in grado di instradare il traffico agli utenti finali, ovvero
le Customer Network, attraverso una variet di protocolli di Livello 2 (Gigabit Ethernet,
frame relay). Ogni POP connesso agli altri POP dello stesso ISP, ai POP di altri ISP per
formare un peering e ad almeno 1 router del backbone.

Il POP caratterizzato da uninfrastruttura complessa e costosa: i motivi principali sono la


mancanza nei router di porte e capacit di switching rispetto alle richieste dei POP.
Linaffidabilit dei router, che comporta la necessit di avere dei router di riserva
(ridondanti), la mancanza di un servizio di prenotazione nelle reti IP. La conseguenza di
tutto ci che oltre il 50% della capacit e diverse porte dei router sono utilizzate per le
interconnessioni, e quindi rappresentano risorse che non possono essere vendute ai clienti.
Questo problema diventa sempre pi importante se applicato al concetto di scalabilit, in
quanto allaumentare dei router connessi le risorse destinate allinterconnessione saranno in
percentuale sempre maggiori.
I diversi ISP possono scambiare traffico tra loro grazie ai NAP (Network Access Point), che
connettono i loro Autonomous System attraverso accordi di peering. Un NAP serve a
permettere alle reti degli ISP di interconnettersi tra loro direttamente, senza affidarsi a
provider esterni. E formato da uno o pi switch, a cui vengono collegati i router degli ISP,
che stabiliscono peering attraverso il protocollo BGP. La parte di rete gestita da
unorganizzazione (ad esempio un ISP) detta Autonomous System (AS). I router interni di un
AS sono detti Interior Gateway (IG), quelli di collegamento con altri AS sono detti Exterior
Gateway (EG).
1.2 IL FUTURO
Le prossime generazioni di router saranno guidate dalle richieste dai provider, i quali
richiedono riduzione dei costi delle infrastrutture e del mantenimento, mentre allo stesso
tempo un aumento della capacit e affidabilit. In seguito alla riduzione dei costi delle
tecnologie ottiche, molti network designer punteranno su edge router IP di media
dimensione, connessi a optical crossconnect (OXC), disposotovi in grado di instradare
traffico ip ad alta velocit su fibre ottiche, i quali saranno a loro volta interconnessi mediante
dispositivi di trasmissione basati su DWDM. Il problema di questo approccio che le
connessioni con OXC sono solitamente ad alto rate (oggi 10Gbps, in futuro fino a 40Gbps), e
quando gli edge router vogliono comunicare con gli altri router hanno bisogno o di
collegamenti diretti, ma ci implica che i link vengano poco utilizzati, o di collegamenti
multi-hop, ma ci comporta unalta latenza. Per risolvere questo problema, alcuni network
designer credono che sia meglio costruire router di grandi dimensioni, quindi una soluzione
single box, che aggregano il traffico dagli edge router in un unico link ad alta velocit,
connesso direttamente ai router di differenti POP attraverso meccanismi basati su DWDM.
Questo approccio diminuisce la latenza, visto che non si usa pi la tecnica multi-hop, e
riduce i costi di numerose schede di rete e collegamenti: cos facendo si ha un router di
larga capacit, scalabile, affidabile ed efficiente.

La rete fornisce un servizio di comunicazione per le applicazioni trasportando informazioni tra


processi remoti. Il servizio di trasporto fornito alle applicazioni pu essere di diverso tipo, ad
esempio mediante commutazione di circuito: vengono riservate risorse per ogni chiamata,
non c' condivisione di risorse ed richiesta una fase di set-up. Ogni nodo della rete si
occupa di funzionalit limitate al livello 1 (livello fisico), in quanto i nodi non elaborano
linformazione. Unalternativa alla commutazione di circuito rappresentata dalla
commutazione di pacchetto. Lo strato di rete (livello 3) trasferisce TPDU (Transport Protocol
Data Unit) attraverso la rete, mascherando i dettagli sulla rete e la modalit di
commutazione. Ha la funzione di instradare pacchetti, multiplare diversi flussi di livello 3 in un
collegamento di livello 2 e fa controllo di flusso e di congestione. La commutazione di
pacchetto pu avvenire in 2 modi:

Datagramma: i pacchetti sono inviati sulla base di una tabella di routing (che si trova in ogni
nodo) e un indirizzo di destinazione nellheader del datagramma. E connectionless, quindi i
pacchetti possono essere persi, duplicati o arrivare fuori sequenza (se i vari pacchetti di una
connessione prendono percorsi differenti).
Circuito virtuale: modalit di trasferimento a circuito fisso dedicato tra 2 nodi, in cui il
trasporto informativo consiste in una sequenza di pacchetti a richiesta o domanda
dellutente. Diverse connessioni logiche (canali virtuali) condividono la stessa connessione
fisica. I pacchetti vengono etichettati con una label associata alla connessione. Tutti i
pacchetti di una connessione arrivano in ordine e seguono lo stesso percorso.

Il router un dispositivo che gestisce funzioni fino al livello 3 (network layer):


Physical layer: gestisce le porte in ingresso e in uscita;
Data-link layer: gestisce i frame, in ingresso si occupa di controllare e delimitare il frame (ne
trova linizio), in uscita genera e trasmette il frame. Prima dellinvio fa anche controllo del
frame per evitare errori;
Network-layer: si occupa di funzioni che per essere svolte richiedono del tempo. Infatti mette
in un buffer il pacchetto in ingresso, processa lheader leggendone lindirizzo IP, fa il routing
di pacchetti e datagrammi (leggendo dalla tabella di routing va a identificare il link di
uscita), invia il pacchetto sul link corretto e fa controllo di flusso e di congestione (anche se a
volte queste funzioni avvengono a livello 4);
Control-plane: fa funzionare algoritmi e protocolli distribuiti che riempiono le tabelle di
routing (RIP, OSPF, BGP, etc..) e le mantengono aggiornate;

2. ARCHITETTURE DEI ROUTER


Le funzioni dei router IP possono essere classificate in due categorie: funzioni datapath e
funzioni del piano di controllo (control plane). Le funzioni di datapath vengono eseguite ogni
volta che arriva un datagramma. Un esempio sono le decisioni di inoltro, eseguite dal
motore di inoltro quando arriva un pacchetto, che lo analizza e lo inoltra tramite lutilizzo del
longest prefix matching; oppure, in altre applicazioni, si ha la packet classification, basata su
104 bit (5-tupla), per cui, a seconda del risultato, il pacchetto ha una priorit di inoltro o
viene scartato.
Le funzioni di controllo includono invece le configurazioni di sistema, gestione e scambio di
informazioni delle routing table. Il route controller (RC) scambia le informazioni sulla topologia
con altri router e costruisce la routing table basata su un protocollo di routing (RIP, OSPF,
BGP). Pu anche creare forwarding table per il forwarding engine. Queste azioni non sono
effettuate allarrivo di ogni pacchetto.

Le architetture dei router generalmente si suddividono in due categorie, entrambe con un


route controller e un management controller (MC): centralizzate e distribuite.

Architettura centralizzata: si hanno interfacce di rete, forwarding engine, un RC e un MC


interconnessi con la switching fabric. Le interfacce di input inviano lheader dei pacchetti ai
forwarding engine attraverso la switch fabric. I forwarding engine, a turno, determinano su
quale interfaccia di uscita dovrebbe essere inviato il pacchetto. Questa informazione
restituita allinterfaccia di ingresso corrispondente, che invia il pacchetto allinterfaccia di
output corretta. Lunica funzione del forwarding engine processare lheader dei pacchetti,
ed condiviso tra tutte le interfacce. Tutte le altre funzioni, come prendere parte ai
protocolli di routing, riservare le risorse, gestire i pacchetti che richiedono unattenzione
aggiuntiva e tutti gli altri compiti amministrativi e di manutenzione, sono gestite da RC e MC.

Architettura distribuita: le funzioni del forwarding engine sono integrate nelle interfacce
stesse. Molti router ad alte performance usano questa architettura. Il RC mantiene una
routing table e la aggiorna in base ai protocolli di routing (scambiando informazioni con altri
router). La tabella di routing viene usata per generare una forwarding table, che viene poi
scaricata dal RC nei forwarding engine nelle interfacce. Non necessario scaricare una
nuova forwarding table per ogni aggiornamento delle route. Gli aggiornamenti delle route
possono essere frequenti, ma i protocolli di routing richiedono tempo, fino a minuti, per
convergere. Il RC richiede una tabella di routing dinamica studiata per aggiornamenti
veloci, e una generazione veloce delle forwarding table, che possono essere ottimizzate e
non per forza dinamiche. Ogni interfaccia di rete ha il suo forwarding engine, formando cos
una line card, e di conseguenza c un solo flusso in uscita, quello del pacchetto. Pertanto
questa tecnologia molto pi performante ed la pi usata.

Questa la tipica architettura di un router:

Ci sono diverse line cards, un RC e un MC, interconnessi attraverso una switch fabric. La
comunicazione tra i vari componenti pu avvenire attraverso la switch fabric o una rete di
interconnessione separata, ad esempio uno switch Ethernet. Le linecards sono i punti di
ingresso e uscita da e verso un router. Queste forniscono linterfaccia dal layer fisico e da
quelli pi alti verso la switch fabric. I compiti eseguiti dalle linecards sono diventati pi
complessi a causa dello sviluppo di nuove applicazioni e dellevoluzione dei protocolli. Ogni
linecard supporta almeno una connessione in fibra full-duplex sul lato di rete, e almeno una
connessione di ingresso e una di uscita verso il backplane della switch fabric. In generale,
per applicazioni che richiedono tanta banda, le connessioni di rete supportano la
canalizzazione per aggregare linee a velocit minore in un collegamento a velocit
maggiore, e le connessioni nella switch fabric forniscono meccanismi di controllo di flusso
per diverse migliaia di code in ingresso e in uscita per regolare lingresso e luscita del traffico
da e verso la switch fabric.

Una line card composta da diversi componenti, che permettono di gestire diverse funzioni,
tra cui:
Gestione del sistema;
Gestione delle eccezioni;
Gestione dei fallimenti e degli allarmi;
Configurazione dei sistemi;
Manutenzione e aggiornamento delle routing table;
I diversi componenti sono:

Transponder/transceiver: fa conversione elettrico/ottico (E/O) e O/E;


Framer (L2): sincronizzazione, packet delineation, scrambling (viene cambiata la posizione
dei bit secondo un pattern predefinito in modo da distribuire gli eventuali errori);
Central Processing Unit: esegue funzioni di control plane, come aggiornamento delle table,
gestione del buffer e delle eccezioni;
Network Processor: fa table lookup, packet classification e modifica dellheader, raccoglie
statistiche e si occupa della frammentazione dei pacchetti IP, si affida a memorie molto
veloci (SRAM, DRAM, CAM).

Esistono 2 architetture di implementazione del network processor:


Configurabile: composta da molteplici coprocessori special-purpose.
Programmabile: composta da molteplici processori RISC (Reduced Instruction Set
Computer, indica microprocessori con unarchitettura semplice e lineare).
Si riscontra la difficolt di programmare il Network Processor al fine di supportare differenti
applicazioni: infatti esistono start-up specializzate nel creare codici basati sulla struttura NP.

Traffic manager: fa azioni di gestione dei buffer [EPD (Early Packet Discard), REPD (Random
EPD), weighted REPD e PPD (Partial PD)], scheduling dei pacchetti e controllo di accesso del
traffico. Questo consiste in una collezione di tecniche specifiche e meccanismi che
definiscono le caratteristiche e i requisiti del traffico (tolleranza alle perdite, rate di picco, ),
eseguono operazioni di policing e shaping se il traffico devia dalle sue specifiche. Il controllo
dei parametri di utilizzo (UPC) in ATM e il servizio differenziato (Diffserv) in IP effettuano
funzioni simili di controllo di accesso. Lo scheduling dei pacchetti assicura che i pacchetti
vengono trasmessi rispettando i requisiti di banda e ritardo. Gli schemi proposti sono deficit
round-robin e WFQ (Weighted Fair Queuing). Inoltre si occupa di risolvere le contese tra gli
input nelle switch fabric.
La classificazione degli switch si pu basare sul numero di stage. Ad esempio si pu parlare
di:
Switch a singolo stage (ad esempio lo switch cross-point), caratterizzato da un singolo
percorso tra ogni coppia input-output, in cui non ci sono pacchetti fuori sequenza, facile
da progettare ma soffre la scalabilit;
Switch a multistage (ad esempio le reti di Clos), in cui sono possibili diversi percorsi tra ogni
coppia input-output, molto scalabili e tolleranti agli errori. Possono essere memory-less (con
uno scheduling centralizzato, in cui non ci sono pacchetti fuori sequenza) e buffered (con
uno scheduling distribuito, per cui i pacchetti possono arrivare fuori sequenza).

Il ritardo nel trasferimento dei pacchetti (Dtot) dato dalla somma di tanti componenti: Wp
(tempo di attesa nel buffer in ingresso), Tp (tempo di elaborazione del percorso), Wt (tempo
di attesa nel buffer di uscita) e Tt (tempo di trasmissione). Il tempo di trasmissione pari al
rapporto tra la lunghezza media del pacchetto (L) e la capacit (bit/s) del link di uscita. Per
ipotesi i primi 2 componenti (layer 2) sono trascurabili, pertanto Dtot = Wt + Tt, i pacchetti sono
distribuiti uniformemente in tutte le code, i buffer hanno capacit infinita e le code seguono
un modello M/M/1. Ipotizzando che i processi di arrivo e servizio dei pacchetti nei nodi sono
indipendenti, si ha che il ritardo totale pari a 1/(1-) :
= 1/Tt; = Tt = ML/C; M = numero di code; = /M.
In realt, poich i buffer sono in un numero finito, c una probabilit che i pacchetti
vadano persi. La dimensione tipica del buffer per flusso pari al RTTC/N (N = numero di
flussi multiplati).
I router attuali presentano unarchitettura distribuita. Nelle line card in ingresso ci sono le
forwarding table, cio copie decentralizzate delle tabelle di routing, che, anche se vengono
aggiornate pi raramente, permettono di effettuare il lookup in modo pi efficiente, in
quanto ci avviene in modo locale piuttosto che centralizzato. In ingresso avviene uno
switching decentralizzato, in cui, dato un datagramma di destinazione, si cerca il link di
uscita nelle forwarding table, con lobiettivo che ci avvenga a velocit wire-speed. Se i
datagrammi arrivano con una velocit maggiore rispetto a quella con cui viene effettuato il
processo di lookup, si genera una coda. In uscita invece pu essere necessario utilizzare un
buffer, se la velocit con cui arrivano i datagrammi dalla switching fabric maggiore del
rate di trasmissione. In questo caso si usa un meccanismo di scheduling per scegliere quale
datagramma inviare.
Esistono 3 architetture per le switching fabric:

Switching via memory: tipica della 1 generazione di router, la CPU controlla direttamente lo
switching, il pacchetto viene copiato nella memoria del sistema (RAM), c un bus che
connette i vari componenti (memoria, porte, ), un meccanismo lento perch limitato
dalla banda di memoria;

Switching via bus: tutte le line cards in ingresso sono connesse grazie a un bus (dedicato), ci
sono sistemi per evitare collisioni, il bus condiviso ha limitazioni in velocit dovute alla
contesa di accesso al bus. Ogni line-card ha CPU e memoria, quindi alcune funzioni sono
svolte l;

Switching via interconnection network (crossbar): supera le limitazioni della banda del bus,
se c pi di un pacchetto con la stessa destinazione (intesa come port), vengono
memorizzarti nel buffer delloutput port (ci comporta ritardo e possibile perdita di
pacchetti, quindi perdita di efficienza). Questo comporta la soluzione del problema della
contesa alla porta di uscita, in quanto, se il buffer sufficientemente capiente, si possono
memorizzare i pacchetti nel buffer in uscita mentre se ne processa uno. Se la fabric processa
pi lentamente delle porte in ingresso, si pu verificare il fenomeno dellHead Of Line
blocking (HOL), in cui pacchetti verso una determinata uscita non possono essere inviati e
processati in quanto bloccati da un pacchetto in attesa in cima alla coda.

2.1 DESIGN DEI CORE ROUTER


I core router sono progettati per muovere il traffico pi velocemente possibile. Con
lintroduzione di diversi servizi ai bordi della rete e un rapido aumento della richiesta di
banda, i core router devono essere progettati in modo da essere molto pi flessibili e
scalabili del passato. Per avere questo abbiamo delle categorie a cui riferirci:
Packet Forwarding Performance: devono fornire linoltro di centinaia di milioni di pacchetti
per secondo, questo requisito serve per supportare i servizi richiesti, la possibile crescita dei
servizi nel futuro e facilitare la consegna di servizi rigenerati;
Scalabilit: il traffico ai bordi cresce rapidamente, quindi i provider sono forzati ad
aggiornare i loro sistemi ogni 3/5 anni. Gli ultimi core router sono progettati per aggiungere
matrici di routing per aumentare la banda mantenendo le infrastrutture correnti;
Bandwith Density: un altro problema con i core router la crescita di utilizzo dei dispositivi e il
conseguente aumento dei consumi. Gli ultimi core router aumentano la densit di banda
creando dispositivi pi piccoli, cos da consumare meno;
Service Delivery Features: per garantire un servizio, i core router richiedono di fornire servizi
come DiffServ classes, packet filtering, policing, rate-limiting e monitoraggio del traffico ad
alta velocit; questi servizi dovranno essere forniti senza impattare le performance del
packet forwarding;
Availability: richiedono alta disponibilit nei picchi del traffico e possibile manutenzione
senza fermare il servizio, ovvero ridondanza, componenti hardware hot-swappable
(aggiornabile con sistema attivo) e progettazione software modulare;
Security: resistere ad attacchi Denial of Service (DDoS) e altre vulnerabilit, forniscono un
rate-limitato, filtering, tracing e logging per controllare i servizi di sicurezza ai bordi della rete;
Memory Speed: la velocit delle porte di una switch fabric solitamente doppia della
velocit del collegamento per non avere problemi con overhead per il routing, flow control
e informazioni di QoS. Come risultato si ha circa 120Gbps di banda per la memoria tra I/O;
considerando 40B per pacchetto, il ciclo di vita di memoria nel buffer meno di 2.66ns.
Questa una delle sfide, perch si potrebbe usare memoria pi grande, ma non possibile
implementarla negli ASIC. Inoltre, il numero di pin per la memoria del buffer pu essere di
alcune centinaia, cos da limitare il numero di memorie esterne da connettere allASIC;
Packet Arbitration: un arbitro usato per risolvere contesa della porta duscita dalla porta
dingresso. Data una porta di uno switch a 40Gbps con pacchetti da 40B e uno speedup
pari a due, larbitro ha solo 4ns per risolvere la contesa. Questo pu essere implementato
con architettura centralizzata, dove le interconnessioni tra arbitro e tutte le line card
dingresso possono essere complesse e costose, oppure con architettura distribuita, dove
ogni line card e switch card sono coinvolte arbitrariamente. Questa seconda
implementazione pu degradare il throughput e il ritardo a causa di una mancanza di
disponibilit delle informazioni sugli stati di tutti gli ingressi e le uscite. Concludendo,
richiesta unalta velocit nella switch fabric per migliorare le performance;
QoS Control: simile al problema sopra, allaumentare della velocit delle linee aumenta
lesecuzione di policy sulle porte dingresso, packet scheduling e buffer management sulle
porte duscita;
Optical Interconnection: lutilizzo di tecniche ottiche molto costoso, consuma molta
potenza e la riconfigurazione molto difficile. Il layout delle fibre progettato per ridurre le
possibili interruzioni causate da un errore umano;
Power Consumption: per dissipare i sistemi si devono calcolare anche i costi dellaria
condizionata, e si va anche incontro ai limiti della dissipazione;
Flexibility: devono essere modulari e adattabili a requisiti futuri, ovvero non devono essere
basati solo su operazioni veloci su ASIC hardware, ma devono avere una struttura bilanciata
con ASIC programmabili.

Laccesso a Internet pu avvenire:

Dial-up via modem: connessioni tra computer mediante modem, sfruttando la banda fonica
a bassa frequenza (fino a 56 kb/s);
ADSL (Asymmetric Digital Subscriber Line): fino a 1 Mb/s in upload, fino a 20 Mb/s in
download, condividono il doppino telefonico fino alla centrale, laccesso al router del
provider mediante rete dati ad alta velocit di Telecom;
Reti locali: LAN, che collegano i terminali al router, Ethernet;
Reti radio: consentono laccesso radio condiviso per la connessione tra terminali e router,
attraverso un punto daccesso (stazione base);
Wireless LAN;
Cellulari: GPRS (56 kb/s), UMTS (384 kb/s), HSDPA/HSUPA (2/14 Mb/s);
Internet gestita dallInternet Society (ISOC), organizzazione internazionale per lo sviluppo e
la diffusione di Internet. ISOC esplica le sue attivit mediante lIAB (Internet Architecture
Board), diviso in IETF (Internet Engineering Task Force) e IRTF (Internet Research Task Force),
che si occupano tra laltro di definire i nuovi standard (i documenti sono pubblici e sono
detti RFC, Request For Comments).
3. IP ADDRESS LOOKUP
3.1 INTRODUZIONE
Il compito principale dei router (L3) quello di inoltrare pacchetti verso la loro destinazione
finale. A questo proposito un router deve decidere dove devessere inoltrato ogni
pacchetto in ingresso: questo vuol dire trovare lindirizzo del next-hop router e associare la
porta duscita su cui inviare il pacchetto. Le informazioni per linoltro sono immagazzinate in
una forwarding table, che il router raccoglie attraverso un protocollo di routing. Lutilizzo
della forwarding table si ha attraverso unoperazione chiamata address lookup, ovvero il
router usa lindirizzo di destinazione del pacchetto come chiave. Una volta recuperata
linformazione per linoltro, il router pu trasferire il pacchetto dal link dingresso al link
duscita appropriato.

3.1.1 CLASSI DI INDIRIZZAMENTO


Lindirizzo IPv4 composto da 32 bit, organizzati in gruppi da 8 (byte), divisi tra loro da punti.
Lindirizzo IP composto da 2 livelli: il primo contiene lindirizzo IP della rete, il secondo
contiene lindirizzo IP dellhost. La parte di rete, che corrisponde ai primi n bit, chiamata
prefix address. Le possibili notazioni per indicarla sono una sequenza di 0 e 1, una codifica
decimale/la lunghezza dellindirizzo o mediante una netmask, composta da un numero di 1
pari alla lunghezza dellindirizzo, e da 0 fino ad arrivare a 32 bit. Questultima notazione
quella che realmente utilizzata nelle macchine, mentre le altre 2 si usano per comodit.
Una IP NET (solitamente un layer-2 network, ad esempio Ethernet LAN), identificata da un ID,
un insieme di host connessi direttamente, e c almeno un router con una porta collegata
allIP NET per mettere in comunicazione gli host con quelli delle altre IP NET.
Linoltro (forwarding) dei pacchetti pu avvenire in 2 modi:

Diretto: viene fatto se sorgente e destinatario appartengono alla stessa rete (ad esempio
LAN). Un host A che deve mandare un pacchetto allhost B confronta lindirizzo IP di B con il
proprio, verificando che fanno parte della stessa rete. A questo punto controlla nella propria
tabella la corrispondenza tra indirizzo IP e indirizzo MAC (indirizzo locale) (la tabella viene
riempita con appositi protocolli, come ARP). Lo strato IP invia il pacchetto (formato da
payload e header contenente indirizzi IP di sorgente e destinatario) al livello 2, che lo
incapsula in un frame avente MAC-B come indirizzo di destinazione ( scritto nellheader,
oltre allindirizzo MAC-A). Come detto, i router fanno forwarding diretto se la destinazione
appartiene a una delle reti delle loro interfacce: il controllo viene fatto tramite operazioni di
AND bit a bit tra indirizzo dellinterfaccia e indirizzo di destinazione (ognuno con la propria
netmask). Se i risultati coincidono, allora il pacchetto viene inviato direttamente su quella
interfaccia.

Indiretto: viene fatto se sorgente e destinatario appartengono a reti differenti. A confronta il


proprio indirizzo IP con quello di B, e scopre che non appartengono alla stessa rete. Perci
deve mandare un pacchetto a un router (per questo compito viene solitamente identificato
un router, detto default router): per fare ci legge dalla tabella lindirizzo MAC di
uninterfaccia del router e lo comunica al layer-2, che costruisce il frame e lo invia verso
questa interfaccia (nellheader del pacchetto IP ci sono il proprio indirizzo IP e quello
dellhost destinatario, nellheader del frame ci sono il proprio indirizzo MAC e quello
dellinterfaccia del default router). Linoltro indiretto viene fatto dai router se i controlli su
tutte le interfacce danno esito negativo. A questo punto il router controlla nella propria
tabella di routing: se trova pi di una corrispondenza positiva, sceglie il dato con la netmask
pi lunga (cio con pi 1).

Poich il routing avviene a livello di rete (network layer, livello 3), nelle forwarding table dei
router tutti gli host di una singola rete sono identificati da un unico indirizzo IP di rete.
Larchitettura di indirizzamento di Internet usava uno schema detto indirizzamento classful,
che divideva le reti in 3 categorie (classi) di dimensione differente dette:

A: la classe A composta da reti aventi 0 come primo bit del prefisso di rete e gli altri 7 bit
del prefisso variabili (sono identificabili da 1 a 127), e 24 bit per gli host;

B: la classe B composta da reti aventi 10 come primi bit del prefisso di rete e gli altri 14 bit
del prefisso variabili (sono identificabili da 128 a 191), e 16 bit per gli host;

C: la classe C composta da reti aventi 110 come primi bit del prefisso di rete e gli altri 21 bit
del prefisso variabili (sono identificabili da 192 a 223), e 8 bit per gli host.

Ci sono poi indirizzi di classe D (1110, usati per il multi cast) ed E (1111, riservati per uso futuro).
Alcuni indirizzi sono riservati per determinati usi, come 0 in tutti i bit dellindirizzo host (usato
per definire la rete) o tutti 1 nellindirizzo host (usato per il broadcast).
Ci si accorti che la divisione in classi era poco efficiente, perch molti avevano bisogno di
un valore intermedio, in termini di host, tra quelli delle classi B e C. Oltre a ci sorto il
problema per cui gli indirizzi di classe B stavano terminando, e inoltre organizzazioni con molti
host avevano router con tabelle immense, oltre a ID differenti per descrivere ogni link. Perci
si sono adottate 2 soluzioni: il subnetting (VLSM), usato internamente nelle organizzazioni per
organizzare la propria rete, e il CIDR (Classless Interdomain Routing, detto anche
supernetting). I vantaggi delle sottoreti sono sia per lamministratore locale, che pu creare
nuove reti senza richiedere indirizzi classful, sia per Internet, in quanto basta un solo valore
per identificare tutte le sottoreti. Il subnetting consiste nellutilizzare parte dei bit del campo
host per identificare la sottorete, solo per uso interno e i pacchetti non portano
informazioni sul subnetting. Il subnetting pu essere ottimizzato usando il Variable Length
Subnet Masking (VLSM), che consente di avere pi di una maschera di sottorete (subnet
mask) nella stessa rete (sub-sub--sub netting).

VLSM: permette la route aggregation, cos si riducono le informazioni richieste per il routing.
E necessario che le routing tables abbiano un campo per indicare le subnet mask, e che i
protocolli di routing trasportino le informazioni sui prefissi di rete ogni volta che pubblicizzano
un cammino. Partendo da un indirizzo di una certa classe si aggiungono bit.

CIDR: lindirizzo IP diviso in segmenti, ognuno descritto da un prefisso (nella forma x/y, in cui
x il prefisso di tutti gli indirizzi del segmento e y indica la lunghezza del segmento). Prefissi di
rete differenti possono condividere il set iniziale di bit (ad esempio 128.9/16; 128.9.16/20;
128.9.19/24). Partendo da un indirizzo di una certa classe si aggiungono bit. Il prefisso con il
matching pi lungo indica il cammino pi specifico. CIDR elimina il concetto di classi negli
indirizzi, quindi hanno bisogno di un prefisso esplicito per dividere il campo di rete da quello
di host (non si basano pi sul primo bit come nellindirizzamento a classi), necessario che il
protocollo di routing possa pubblicizzare i prefissi e che i router abbiano un algoritmo di
instradamento basato sul longest prefix match. Per salvare spazio in memoria nelle routing
tables, differenti prefissi di rete possono essere aggregati. Ad esempio, le reti da 208.12.16/24
a 208.12.31/24 hanno gli stessi primi 20 bit, e quindi le 16 reti in questione possono essere
rappresentate da un prefisso a 20 bit, cio 208.12.16/20. Ci sono casi in cui aggregare indirizzi
non riduce le voci nelle forwarding tables dei router: supponiamo che un cliente possieda la
rete 208.12.21/24 e cambi il service provider, senza per voler cambiare il numero di rete.
Tutte le reti da 208.12.16/24 a 208.12.31/24 possono essere raggiunte attraverso lo stesso
service provider, tranne la rete 208.12.21/24. In questo caso non si pu fare laggregazione
degli indirizzi, ma bisogna salvare in tabella 16 voci. In alternativa si pu comunque
aggregare, ma poi bisogna aggiungere le voci delle eccezioni (in questo caso
208.12.21/24). CIDR presenta ancora problemi non risolti: esistono router che sono precedenti
a CIDR e quindi non supportano questa tecnologia, e quindi devono affidarsi alle default
routes per mantenere routing tables di dimensioni accettabili, e perci non fanno un routing
ottimo. Rimane il problema della carenza nel numero di indirizzi IP, e inoltre negli ultimi anni
sta crescendo di molto il numero delle eccezioni. Infatti, se unorganizzazione cambia il
proprio ISP, non possibile ottenere un nuovo blocco di indirizzi e rinumerare (non si pu fare
per organizzazioni complesse o che rivendono sottoreti), per cui mantiene lo stesso blocco di
indirizzi che verr pubblicizzato dal nuovo ISP: questo comporta una nuova voce nelle
routing tables, che verr valutata con il longest prefix match.

Esistono diversi parametri per valutare le performance degli algoritmi di lookup:

Velocit di lookup: se si considera una trasmissione a 10Gbit/s e un pacchetto di lunghezza


pari a 40 byte, si ha che la singola operazione di lookup deve avere una durata inferiore a
32 ns;
Requisiti di spazio: uno spazio piccolo comporta un accesso ad alta velocit;
Tempo di aggiornamento: BGP fa centinaia di aggiornamenti al secondo, quindi la
frequenza di aggiornamento deve essere maggiore;
Scalabilit: ogni anno nelle forwarding tables vengono aggiunte 25000 nuove voci;
Flessibilit nellimplementazione: questa pu avvenire via software o via hardware (pi
veloce), utilizzando un ASIC (Application Specific Integrated Circuit, un circuito integrato
creato appositamente per uno specific purpose, molto costoso), un network processor
(microprocessore caratterizzato dal possedere un set di istruzioni specifico per il networking)
o un processore generico.

3.2 ALGORITMI DI LOOKUP BASATI SUGLI ALBERI


3.2.1 Binary trie
E un albero multi-via in cui ogni nodo contiene informazioni sul next-hop e da 0 a 2 puntatori
ai nodi figli. Se a un nodo corrisponde una voce nel database dei prefissi, allora detto
grigio, mentre quando ha almeno un nodo figlio detto bianco. Durante il lookup
necessario ricordare lultimo nodo grigio visitato (che corrisponde allultimo prefisso valido se
non se ne trova uno pi specifico). Per aggiungere un prefisso si seguono i puntatori fino a
dove dovrebbe essere nellalbero, se non esistono puntatori per quel prefisso si aggiungono
e si crea il nodo, mentre se esiste gi il nodo gli si aggiunge letichetta (cos diventa grigio).
Per togliere un prefisso invece, se il nodo non ha nodi figli, si cancellano il nodo e il puntatore
a questo (il nodo genitore si cancella in modo ricorsivo fino a che si trova un nodo grigio o
uno bianco con un altro figlio), se invece ha un altro figlio, si mantiene il nodo ma si cancella
letichetta. Detti N il numero di prefissi e W la lunghezza massima dei prefissi, si ha:

complessit di lookup = O(W);


aggiornamento = O(W);
archiviazione = O(NW);
Varianti: il binary trie si pu espandere per ottenere il Complete Binary Trie, in cui ogni nodo
rappresenta un prefisso. Di conseguenza non si fa pi longest prefix match, ma si fa accesso
diretto al prefisso con lindirizzo completo. Detta W la lunghezza massima dei prefissi, la
memoria richiede 2W voci (per limitare la quantit di dati salvati in memoria, W al massimo
pari a 5).

Lalbero completo richiede troppa memoria, quindi pu essere ridotto utilizzando il Disjoint-
Prefix Binary Trie, che non usa la regola del longest prefix e cerca le informazioni di
forwarding pi specifiche. I prefissi sono sulle foglie e non sui nodi esterni: per ottenerlo si
aggiungono foglie ai nodi che hanno un solo figlio (leaf pushing).

3.2.3 Path-compressed trie


Vengono rimossi i nodi bianchi con un solo figlio. Per memorizzare i nodi che mancano, si
usano 2 valori: skip, che indica quanti bit si saltano, e segment, che indica la stringa di bit
mancanti dallultima operazione di skip.
La path compression riduce la profondit di un albero binario con rami sparsi: un albero
completo senza pi compressioni un albero binario.

complessit di lookup = O(W);


aggiornamento = O(W);
archiviazione = O(N);
3.2.4 Multi-bit trie
Invece che un bit alla volta, per ogni accesso in memoria si controllano pi bit. Ogni nodo
ha 2 array: il primo contiene il next-hop per ogni voce, e il secondo contiene i puntatori figli.
Si richiede una grande quantit di memoria.

complessit di lookup = O(W/k);


aggiornamento = O(W/k + 2k);
archiviazione = O(2kNW/k);

Per ridurre la memoria occupata si pu fare unoperazione di leaf pushing, per cui ogni
nodo ha un solo array, che contiene o un puntatore a un figlio o informazioni sul next-hop.
Questo metodo tuttavia si dimostra poco efficiente per quanto riguarda laggiornamento
dei dati.

3.2.5 Level compression-trie


Trasforma un path-compressed trie (utile quando i nodi sono sparsi) in uno multi-bit (utile
quando il trie densamente popolato). Si comincia con un disjoint-prefix binary trie (si
ottiene con il leaf pushing), si fa una path compression, quindi si fa la level compression.

Ad esempio si considera il caso in cui il destination address 11100000: si comincia dal nodo
radice, che presenta i campi di informazione stride = 3 (si usano 3 bit per identificare uno
degli 8 possibili rami) e skip = 0 (non c stata compressione). I primi 3 bit dellindirizzo di
destinazione sono 111, quindi si prende lottavo ramo. Il nodo successivo presenta
linformazione stride = 1 (quindi sono possibili 2 rami), skip = 3 (quanti bit ho compresso) e
segment = 000 (la compressione stata fatta sui rami 000). Si saltano i successivi 3 bit (per
la compressione) e si considera il settimo bit, che pari a 0. Prendendo il ramo a sinistra, si
arriva correttamente al ramo 13. Esistono casi in cui il metodo non porta a nessun risultato: si
considera il caso in cui lindirizzo di destinazione pari a 11101000. I primi 3 bit sono 111,
quindi prendo lottavo ramo. A questo punto avrei uno skip di 3 bit, pari a 000, ma lindirizzo
presenta 010, quindi non si ha match. Questo caso possibile in via teorica, ma irrealistico.
Detti N il numero dei prefissi, W la lunghezza massima del prefisso e k la lunghezza dello stride
di lookup, si ha che la complessit del lookup O(W/k), laggiornamento O(W/k + 2k) e
larchiviazione O(2kNW/k) (i valori sono uguali al multibit trie).

complessit di lookup = O(W/k);


aggiornamento = O(W/k + 2k);
archiviazione = O(2kNW/k);

3.2.6 Tree bitmap algorithm


Si basa su uno schema di lookup basato sui multi-bit expanded trie, senza leaf pushing n
bitmap compression. In questo algoritmo, un nodo contiene un puntatore al blocco dei nodi
figli, 2 bitmap (una dei figli e una per I prefissi interni) e un puntatore all'array esterno delle
informazioni sui next hop associati ai prefissi salvati nel nodo. Per la definizione dei nuovi nodi
dobbiamo creare un binary trie associato ai prefissi e impostare uno stride (al massimo
uguale a 3 e non pi di 8 stride nell'albero).
Es: stride=3

le ramificazione definiscono I nodi.


Adesso bisogna scrivere le due bitmap per ogni nodo:
Bitmap dei figli(nodo root):
Si parte dall'ultimo nodo a sinistra del nodo di root e si individuano I figli. Poniamo 1
nella bitmap se ha un figlio, 0 altrimenti.

Si va avanti con i nodi dello stesso livello (anche se non ci sono). In questo caso il
nodo non c', quindi non ha figli n sul ramo dello 0 n su quello dell'1.

Si continua cosi fino a completare la bitmap, quindi fino a completare tutti I 2^stride
posizioni dell'array( o bitmap).

Bitmap interna(nodo root):


Partiamo dal primo nodo in cima e controlliamo se un prefisso. Se lo scrivo 1 nella
bitmap altrimenti 0.

Si continua scendendo a sinistra e andando verso destra.

Eseguiamo l'algoritmo cercando l'indirizzo: 100001101.


Dividiamo l'indirizzo in base allo stride: 100|001|101.
Traduciamo il 1 blocco in decimale: 100=4.
Cerchiamo il 4 bit (partendo da zero) sulla bitmap dei figli e controlliamo se zero o
uno.
Se zero la ricerca termina nel nodo corrente e si continua con il procedimento A,
altrimenti si va avanti nell'altro nodo e si continua con il procedimento B (anche se
ueseguiamo comunque il procedimento A per memorizzare un prefisso valido perch
non detto che troviamo un prefisso valido pi avanti).
PROCEDIMENTO A:
Eliminiamo il bit pi a destra del primo blocco: 100=>10.
Scorriamo l'albero dal primo nodo del nodo root: 1 0.
Se il nodo che troviamo un prefisso lo registriamo altrimenti ripetiamo tutto il
procedimento eliminando il bit pi a destra.
PROCEDIMENTO B:
Scriviamo le bitmap del nodo a cui punta il primo blocco: 100. Oppure lo calcoliamo
tramite una formula.
Adesso prendiamo il secondo blocco:001 e ripetiamo il procedimento fino a quando
non troviamo il bit zero nella bitmap dei figli. Le informazioni sul next hop si ottengono
dall'array dei risultati.

3.2.7 Ricerca binaria basata sulla lunghezza dei prefissi


Loperazione di longest prefix matching pu essere ridotta a una serie di operazioni di exact
match, eseguite su prefissi della stessa lunghezza. I prefissi di una forwarding table sono
salvati in base alla lunghezza, in sotto-tabelle dette H1, H2, HW. Per ridurre il tempo per
eseguire lexact match, si usa una funzione di hash, diversa per ogni sotto-tabella. Se 2 o pi
prefissi hanno lo stesso valore di hash, si parla di collisione. Dato un indirizzo di destinazione e
W hash tables, una ricerca lineare richiede W operazioni di hash e W accessi in memoria. Per
ridurli, lalgoritmo cerca in Hw/2. Se trova un nodo in questa tabella di hash, non necessario
controllare anche H1, H2, Hw/2-1 (si cerca il longest prefix match). Invece se non si trova, non
serve cercare in HW/2+1, HW. A questo punto le altre tabelle vengono indagate con una
ricerca binaria. Questo meccanismo permette di avere una complessit pari a O(log 2W),
invece che O(W) della ricerca lineare. Questo metodo in realt pu dare un risultato errato:
ipotizzo di avere un indirizzo di destinazione pari a 1100. Poich il prefisso pi lungo pari a 7
bit, le sotto-tabelle vanno da H1 a H7. Prendo H4: poich non ha un nodo compatibile con
lindirizzo cercato, controllo H2. In H2 c P1 = 10*, non compatibile, e quindi controllo in H1,
dove ci sono P4 = 1*, compatibile, e P5 = 0*, non compatibile. Pertanto il prefisso risultante
P4, anche se in realt dovrebbe essere P3 = 11001*. Per risolvere questo problema si
aggiungono delle voci, dette markers, alle tabelle. In particolare, i marker consistono in voci
che indicano parte di un prefisso di lunghezza maggiore e che rimandano a questi, e
servono a segnalare una possibile corrispondenza che altrimenti non si riuscirebbe a vedere.
Infatti, ipotizzando di cercare lindirizzo 11001, si trova il marker di lunghezza 4 con il rimando
al prefisso P3 (11001*, che diventa 1100* in quanto deve avere lunghezza pari a 4), quindi si
cerca a destra e si trova correttamente il prefisso P3. Poich si effettua una ricerca binaria,
necessario aggiungere un numero di voci pari a log2W. In alternativa si pu utilizzare il
meccanismo dellespansione dei prefissi: invece che avere prefissi di ogni lunghezza, si
scelgono solo alcune lunghezze, e si adattano i prefissi a queste, con un metodo simile al
leaf pushing. In questo modo aumenta il numero delle voci in tabella, ma diminuisce il
numero dei marker da utilizzare. Ovviamente il metodo dei marker pu portare a scegliere il
percorso non corretto, se il prefisso che viene segnalato dai marker non coincide con
lindirizzo di destinazione. Per risolvere questo problema, c un meccanismo che permette
di tornare indietro a cercare il percorso corretto. Detti N il numero di prefissi e W il numero di
hash tables, la complessit del lookup e dellaggiornamento O(log2W) (non considerando
le collisioni), mentre larchiviazione O(Nlog2W) (si provano log2W marker invece che W).
3.2.8 Ricerca binaria basata sullintervallo dei prefissi
Questo metodo funziona con prefissi di lunghezza costante, quindi se si hanno lunghezze
differenti si aggiungono 0 oppure 1 in modo da avere la stessa lunghezza. Ad esempio P1 =
1*, P2 = 101* e P3 = 10101* vengono utilizzati con indirizzi a 6 bit, quindi diventano
rispettivamente 100000, 101000 e 101010. Lidea di fondo quella di dividere tutti i possibili
indirizzi in intervalli, identificati dal prefisso pi basso (L, parte fissa costante e tutti 0) e quello
pi alto (H, parte fissa costante e tutti 1). In questo modo 3 prefissi sono identificati da 6 end-
point, descrivendo 5 intervalli. Dato un indirizzo A, bisogna cercare lindirizzo L pi vicino ad A
tale per cui non si ancora raggiunto H.

Tuttavia questo meccanismo pu richiedere una ricerca lineare: per risolvere il problema, si
usa una tecnica di pre-calcolo (precomputation), per cui a ogni regione tra 2 voci
consecutive corrisponde un unico prefisso (il primo L non abbinato al corrispondente H). Ci
sono 2 colonne: la prima, identificata con =, indica a quale intervallo appartiene lend-
point, mentre la seconda, quella con >, indica quale intervallo comincia. Di conseguenza
linserimento o la cancellazione di un prefisso pu essere lenta. Dopo aver definito gli
intervalli, si costruisce una pila di prefissi: partendo dalla voce pi piccola, se una L, si pone
il prefisso in cima alla pila e lo si assegna sia a = sia a >, se unH, si assegna il prefisso a
=, lo si rimuove dalla pila e si assegna il prefisso in cima alla pila a >. Si continua cos fino
alla fine delle voci. Ad esempio considero i prefissi P1 = 1*, P2 = 1001*, P3 = 101*, P4 = 101001*,
P5 = 10101*. Usando 6 bit gli intervalli diventano rispettivamente 100000 (L) 111111 (H),
100100 (L) 100111 (H), 101000 (L) 101111 (H), 101001 (L,H), 101010 (L) 101011 (H).
Ordinandoli si ottiene 100000 (L), 100100 (L), 100111 (H), 101000 (L), 101001 (L,H), 101010 (L),
101011 (H), 101111 (H), 111111 (H). Comincio a costruire la pila: la prima voce 100000 (L),
quindi la inserisco nella pila e pongo P1 sia nella colonna = sia in quella >. Poi prendo
100100 (L), la metto in cima alla pila e aggiungo P2 nella colonna = e in quella >. Quindi
prendo 100111 (H), tolgo P2 dalla pila e aggiungo P1 nella colonna >. Continuo cos finch
termino gli intervalli.

A questo punto il processo di lookup consiste in una ricerca lineare nelle forwarding tables
del limite sinistro pi vicino allindirizzo di destinazione: comparando la voce E con lindirizzo
di destinazione A, se A<E continuo a cercare nellintervallo sinistro, se A uguale a E prendo
il prefisso = associato, se A >E cerco nellintervallo destro. Continuo cos finch trovo le voci
che racchiudono meglio lindirizzo cercato: a questo punto il prefisso > quello cercato.
Considero P1 = 1*, P2 = 101* e P3 = 1101*, che con lespansione diventano 100000-111111,
101000-101111, 110100-110111. Ordinandoli si ha 100000, 101000, 101111, 110100, 110111,
111111. Lindirizzo di destinazione 101011: lo confronto con la voce in posizione 3 (101111,
in posizione pari a numero di voci totali/2). Poich questa maggiore, allora controllo
nellintervallo sinistro. In posizione 2 (3/2 diventa 2) ho 101000, che minore dellindirizzo di
destinazione, quindi significa che lindirizzo tra la seconda e la terza voce. A questo punto,
poich nel campo > della seconda voce (101000) ho P2, significa che lindirizzo di
destinazione ha longest match con il prefisso P2.

Il tempo di lookup pari a O(log2N), laggiornamento e la memorizzazione sono pari a O(N)


(se N la dimensione del database).
3.3 ALGORITMI DI LOOKUP BASATI SULLHARDWARE
3.3.1 DIR 24-8 BASIC
E un meccanismo di lookup che permette un lookup a ogni accesso in memoria, se
applicato con un meccanismo in pipeline nellhardware. Negli ultimi anni i costi delle
memorie si sono notevolmente ridotti (16MB costano 50 $), e sono veramente pochi i router
del backbone con prefissi pi lunghi di 24 bit. Il DIR 24-8 BASIC fa 2 ricerche su 2 livelli: il primo
usa i primi 24 bit, il secondo (se necessario) usa una combinazione di indice e degli 8 bit
rimanenti. Sono usate 2 tabelle, entrambe salvate in DRAM: la prima detta TBL24, e
contiene tutti i prefissi fino a 24 bit (ha 224 voci, con indirizzi da 0.0.0 a 255.255.255), mentre la
seconda (TBLlong, 20 bit, un valore che permette di riservare abbastanza spazio per tutti i
casi, poteva ad esempio andare bene anche 21 bit, 22 bit, ) contiene i prefissi pi lunghi di
24 bit. Se un prefisso X lungo fino a 24 bit, viene salvato solo nella TBL24: il primo bit posto
a 0 per indicare che gli altri indicano linformazione sul next hop. Se invece X pi lungo, si
usa una voce nella tabella TBL24 indirizzata dai primi 24 bit di X, e si pone il primo bit pari a 1
per indicare che i rimanenti contengono un puntatore a voci della tabella TBLlong. I prefissi
che sono pi corti di 24 bit vengono espansi (ad esempio un prefisso /16 diventa 256 prefissi
/24), in modo da poter trovare linformazione con un solo accesso in memoria. Se un prefisso
pi lungo di 24 bit, viene salvato un puntatore nella TBL24 alla posizione xx.yy.zz, mentre le
informazioni sul next hop sono salvate in alcune delle 256 voci puntate da xx.yy.zz. Per ogni
indirizzo pi lungo di 24 bit, indipendentemente dalla lunghezza, vengono allocate 256 voci.
Ogni voce nella TBLlong corrisponde a uno dei 256 prefissi pi lunghi che condividono il
prefisso a 24 bit nella TBL24. Questa pu avere profondit di 1 byte se si assume che ci siano
meno di 255 router di nexthop.
Loperazione di lookup viene fatta leggendo i primi 2 byte, usando i primi 24 bit dellindirizzo
come indice della tabella TBL24: se il primo bit 0, gli altri 15 bit descrivono linformazione sul
next hop. Se invece pari a 1, si moltiplicano i rimanenti 15 bit per 256, si aggiunge il
prodotto agli ultimi 8 bit dellindirizzo di destinazione originale e si usa il valore ottenuto come
indice della TBLlong, che contiene linformazione sul next hop. Considero il caso con tre
prefissi: 10.54/16 (A), 10.54.34/24 (B), 10.54.34.192/26 (C). Il prefisso A viene salvato nella
tabella TBL24 (perch ha meno di 24 bit), dopo essere stato espanso fino a raggiungere 24
bit per voce. A questo punto, per tutti i risultati ottenuti, si pone il primo bit uguale a 0 (questo
non vale per 10.54.34). I prefissi B e C richiedono luso anche della seconda tabella, perch
hanno gli stessi primi 24 bit e C ha una voce con pi di 24 bit. Nella tabella TBL24 si inserisce
un 1 seguito da un indice (ad esempio 123). Nella seconda tabella vengono allocate 256
voci partendo da 123256 (cio da 123256+0 a 123256+255), e vengono riempite con
linformazione sul next hop corrispondente a B, tranne quelle corrispondenti a 10.54.34.192
(da 123256+192 a 123256+255), che contengono linformazione sul next hop di C.

I vantaggi sono che si richiedono 2 accessi in memoria (quelli in TBL24 e TBLlong), il supporto
di un numero illimitato di cammini (se non si considera il limite rappresentato dai cammini pi
lunghi di 24 bit con parte fissa di 24 bit) e il costo totale, tuttavia la memoria usata in modo
inefficiente e linserimento e rimozione di cammini pu richiedere differenti accessi in
memoria.
3.3.2 BC -16-16
Il modo pi diretto per implementare uno schema di lookup consiste nellavere una tabella
di forwarding in cui viene designata una voce per ogni indirizzo IP a 32 bit. Ci richiede un
solo accesso in memoria per ogni lookup, ma la dimensione della forwarding table, detta
next-hop array (NHA, cio una tabella contenente un elenco di indici di next hop),
enorme (232 bytes = 4GB).

Per ridurre la dimensione della memoria si pu impiegare un lookup indiretto. Ogni indirizzo IP
diviso in 2 parti: segmento (i primi 16 bit) e offset (gli ultimi 16 bit). La tabella di
segmentazione (Seg Table) ha 216 voci, e ogni voce (32 bit) registra o linformazione sul next-
hop o un puntatore allNHA (next hop array) associato. Ogni NHA contiene 2 16 voci, e ogni
voce (8 bit) registra il next hop (numero di porta) dellindirizzo IP di destinazione. Per un
indirizzo IP di destinazione a.b.x.y, a.b sono usati come indice nella tabella di segmentazione,
mentre x.y sono usati come indice dellNHA associato (se necessario). Per un segmento a.b,
se la lunghezza del prefisso pi lungo appartenente al segmento 16, allora le voci
corrispondenti nella tabella di destinazione contengono direttamente la porta di output, e
quindi non necessario accedere al NHA associato. Daltra parte, se la lunghezza del
prefisso pi lungo appartenente al segmento > 16, allora necessario accdere al NHA
associato. In questo modo, per un lookup del percorso IP si richiedono al massimo 3 accessi
in memoria. Sebbene lo schema di lookup indiretto fornisca un lookup veloce (fino a 3
accessi in memoria), non tiene conto della distribuzione dei prefissi che appartengono a un
segmento. Si richiede un NHA di 64 KB se la lunghezza del prefisso pi lungo appartenente al
segmento > 16. La dimensione del NHA associato pu essere ridotta ulteriormente
considerando la distribuzione dei prefissi allinterno del segmento.
Il meccanismo di lookup richiede 4 tabelle: la tabella di segmentazione (Seg Table),
composta da 216 voci, il Code Word Array (CWA), il Compressed Next Hop Array (CNHA) e il
Next Hop Array (NHA), cio una forwarding table. In modo simile a quanto avviene con il
DIR-24-8, la tabella dei segmenti (Seg Table) nel meccanismo BC-16-16 ha dimensione pari a
64 KB, e ogni voce (32 bit) divisa in 3 campi:

F (Flag, 1 bit): indica se il secondo campo contiene un puntatore alla tabella del livello
successivo (se pari a 1) o un indice di next hop (se pari a 0);
pointer/next hop (27 bit): registra o il next hop (se il valore 255) del percorso, o un
puntatore (se il valore > 255) che punta al NHA associato o a una tabella di secondo livello
CWA;
lunghezza offset (4 bit): indica la dimensione della tabella NHA, in termini di potenze di 2. Se
la dimensione non pi grande di 8 (cio il valore di campo k 3), il puntatore punta
allingresso di un comune NHA. Se la dimensione > di 8 (cio il valore di campo > 3), il
puntatore punta a un campo del CWA che a sua volta punta a un campo del CNHA e
trovare infine il next hop.
Ogni parola di codice (Code Word, CW) nel CWA composta da 2 parti: Map (16 bit) e
Base (16 bit).
Map indica la distribuzione dei next hop, mentre Base la somma degli 1 nei Maps
precedenti. Ogni bit nei Maps corrisponde a una voce nel NHA, e gli 1 nella bitmap indicano
linizio di unarea di prefissi. Il NHA con 228 voci compresso nel CHNA nel modo seguente:

Contando gli 1 nella bitmap, si pu trovare il next hop nel CHNA.

I primi 16 bit (segmento) di un indirizzo IP in ingresso sono usati per il lookup nella Segment
Table. Se il bit pi significativo (campo F) 0, che indica che il campo successivo contiene
un indice al next hop (cio un numero di porta di output), allora il processo di lookup si
interrompe e viene restituito lindice al next hop. Altrimenti, se il campo F pari a 1, si
esamina il campo lunghezza offset(gli ultimi 4 bit): se la lunghezza delloffset 3, si usano
il campo puntatore come indirizzo base, e i bit dal 17esimo al (16 + lunghezza offset)esimo
dellindirizzo IP come indirizzo delloffset, per fare il lookup nella tabella NHA, e restituire il
risultato associato. Se invece la lunghezza delloffset > 3, bisogna fare un lookup nella
tabella CWA in questo modo:

si usa il campo puntatore come indirizzo base, e i bit dal 17esimo al 28esimo come
offset dellindirizzo per trovare la corrispondente CW nella tabella CWA, e prendere i
corrispondenti Map e Base;
definendo i bit dal 29esimo al 32esimo come p, si calcola il numero, detto x, degli
1 dei p bit pi significativi nel campo Map della CW;
si usa Base come indirizzo base e x come indirizzo offset per fare un lookup nella
tabella CNHA, che restituisce il risultato associato (cio lindice di next hop).

La differenza principale tra BC-16-16 e lalgoritmo Lulea che BC basato sullhardware,


mentre Lulea basato sul software. BC-16-16 richiede solo una minima quantit di SRAM, e
pu facilmente essere implementato in hardware. Infatti una tabella di forwarding con
40000 voci pu essere compattata in una tabella di 450-470 kbyte. La maggior parte dei
lookup di indirizzo pu essere fatta con un solo accesso in memoria. Nel caso peggiore, per
un lookup si richiedono 3 accessi in memoria. Questo algoritmo non supporta aggiornamenti
incrementali: quando una tabella CWA necessita un aggiornamento, lintera tabella di
secondo livello, che include il CWA associato e il CHNA, dovrebbe essere ricostruita.

Esempio:
3.3.3 Ternary CAM
La CAM (Content Addressable Memory) una memoria specializzata nellabbinamento
(matching) che effettua confronti in parallelo. La CAM restituisce la posizione (o lindirizzo) in
cui viene trovata una corrispondenza (match). Le CAM convenzionali possono soltanto
effettuare matching esatto, se presente una parola parallela allingresso. Una CAM
ternaria (TCAM, Ternary Content Addressable Memory) registra ogni voce con una coppia
(val, mask) (entrambi i valori val, mask sono numeri a W bit). Ad esempio, se W = 6, un
prefisso 110* viene salvato come la coppia (110000, 111000). Il matching di ogni elemento
TCAM con una data chiave in ingresso viene fatto controllando se i bit di val per i quali i bit
della mask sono 1 combaciano con quelli della chiave.

Se si attiva unoperazione di matching, lindirizzo IP di destinazione a 32 bit viene


confrontato, bit a bit, con tutte le voci della TCAM. Poich possono esserci pi matching allo
stesso tempo, si usa un metodo di risoluzione basato sulla priorit e si sceglie il match con
priorit pi alta. Molte TCAM sono basate sullordine, cio la priorit determinata dalla
posizione di memoria: pi bassa la posizione, pi alta la priorit (la i-esima TCAM ha
priorit maggiore della j-esima, se i < j). Lunit di arbitraggio delle priorit sceglie dalle TCAM
loutput con priorit pi alta. Ad esempio, nella figura precedente, lindirizzo IP 192.168.0.177
porta a 4 match, alle posizioni 1, 1003, 1007 e 65535: viene scelta la posizione 1 (pi bassa
la posizione, pi alta la priorit). La tabella di forwarding viene salvata nella TCAM in ordine
decrescente delle lunghezze dei prefissi, in modo che il prefisso pi lungo viene scelto dal
codificatore delle priorit. Il gruppo di prefissi di 32 bit in fondo alla TCAM: ci sono spazi
vuoti in alcuni gruppi, riservati per aggiungere prefissi in futuro. La default route posizionata
in cima alla TCAM: il valore della mask 0, quindi fa match con tutti gli indirizzi IP in ingresso,
e viene scelta se non c matching con nessun valore sottostante. Loutput dalla TCAM
viene usato per accedere alla RAM, in cui sono salvate le informazioni sul next hop nella
stessa posizione dei prefissi nelle TCAM. TCAM restituisce il risultato del matching pi lungo in
un solo accesso in memoria, indipendentemente dalla profondit della chiave di ricerca.
Limplementazione di schemi di lookup basati su TCAM usata comunemente in quanto
pi semplice di quella di algoritmi basati su trie. Le TCAM disponibili sul mercato integrano 18
Mbit in un singolo chip, che lavora a 133 MHz, quindi si possono effettuare fino a 133 milioni di
lookup al secondo, tuttavia una soluzione costosa, anche in termini di consumi energetici.
Pertanto sono stati introdotti 2 schemi di semplificazione, al fine di ridurre la dimensione delle
TCAM:

3.3.3.1 Prefix pruning


Considero 2 prefissi P1 = 01*, e P2 = 011*. Assumendo che P1 e P2 abbiano le stesse
informazioni di instradamento, P2 risulta ridondante, in quanto la sua cancellazione non
influisce sui risultati di lookup. Quindi un lookup che dovrebbe terminare a P 2, allora
cancellandolo terminer a P1. In generale, il 20-30% dei prefissi ridondante, e quindi pu
essere cancellato.
3.3.3.2 Estensione della maschera
Le TCAM sono usate per matching ternari, e non solo per matching di prefissi. La differenza
principale tra i 2 tipi di matching che il matching di prefissi richiede che la maschera sia
composta da tutti 1 nei bit pi significativi, e tutti 0 nei rimanenti bit meno significativi.
Invece il matching ternario usa tipi liberi di maschere: lidea dellestensione della maschera
quella di estendere le maschere del tipo prefix-match a maschere del tipo ternary-match.
In alcuni casi, diverse voci delle TCAM, in modalit prefix-match, possono essere
rappresentate con una sola voce, in modalit ternary-match. In generale, il 20-30% delle
voci originali nelle TCAM pu essere risparmiato, adottando una tecnica di estensione della
maschera.

Le forwarding tables reali possono essere rappresentate utilizzando voci di un numero molto
basso di TCAM, generalmente il 50-60% della dimensione originale, usando le tecniche
precedenti. Il prefix pruning non comporta cambiamenti nella complessit
dellaggiornamento dei prefissi, cosa che invece avviene con lestensione della maschera,
in quanto questa comporta lassociazione tra prefissi differenti, e quindi ostacoli
nelleffettuare aggiornamenti incrementali.
4. PACKET CLASSIFICATION
Tradizionalmente i router fornivano solo servizi di tipo best effort, processando tutti i pacchetti
in ingresso allo stesso modo. Con lemergere di nuove applicazioni, gli ISP richiedono router
che forniscono differenti QoS (Quality of Service) alle diverse applicazioni. Per soddisfare i
requisiti nei termini di QoS, i router hanno bisogno di implementare nuovi meccanismi, ad
esempio controllo di accesso, prenotazione di risorse, accodamento per flusso e politiche di
scheduling. Per fare ci, necessario che il router sia in grado di distinguere e classificare il
traffico in ingresso in flussi differenti. I router in grado di farlo sono detti flow-aware. Un router
flow-aware si distingue da uno tradizionale in quanto in grado di tenere traccia dei flussi
che passano e di applicare differenti classi di servizio a ogni flusso. I flussi sono specificati da
regole, e ogni regola consiste in operazioni di confronto di campi dei pacchetti con alcuni
valori. Un insieme di regole detto classificatore, che formato basandosi sui criteri da
applicare per classificare i pacchetti rispetto a una data applicazione di rete. Dato un
classificatore che definisce contenuti e attributi di un pacchetto, la classificazione dei
pacchetti il processo di identificazione della regola (o delle regole) a cui conforme il
pacchetto.
Un classificatore C composto da N regole, Rj, 1 j N, dove Rj composta da 3 parti:

Unespressione Rj[i], 1 i d, su ognuno dei d campi dellheader del pacchetto


[lheader consiste in indirizzo IP di sorgente (32 bit), indirizzo IP di destinazione (32 bit),
numero di porta sorgente (16 bit), numero di porta del destinatario (16 bit) e tipo di
protocollo (8 bit)];
Un numero Pri(Rj), che indica la priorit della regola nel classificatore;
Unazione, detta azione(Rj);

Un pacchetto in arrivo P, avente header composto da una d-upla (P1, P2, , Pd), fa match
con Rj se e solo se Pi coincide con Rj[i], dove 1 i d

Dato un pacchetto in ingresso P, e quindi una d-upla, il problema di classificazione d-


dimensionale del pacchetto consiste nel trovare la regola R m con la priorit maggiore, tra
tutte le Rj regole che fanno matching con la d-upla. Si sceglie quindi la regola con la priorit
maggiore, e viene applicata al pacchetto lazione corrispondente.

In questo esempio, ogni regola ha 5 espressioni, su 5 campi dellheader del pacchetto (dal
layer di rete a quello applicativo). Ogni espressione pu essere una specifica del tipo
prefisso/lunghezza (come nei lookup IP), oppure del tipo operatore/numero (pu indicare un
valore specifico, un intervallo o un limite inferiore). Inoltre si pu utilizzare una wildcard, che
combacia con ogni valore. Considero un insieme di regole C = Rj (1 j N), in cui ogni
regola Rj ha d campi. I campi sono etichettati come Fi (1 i d), e Rj indicata come <Rj1,
Rj2, ..., Rjd>.
Considero ad esempio un classificatore come la figura precedente, avente 7 regole su 4
campi. I primi 2 campi, F1 e F2, sono specificati attraverso prefissi, mentre gli altri 2, F 3 e F4,
attraverso intervalli. Lultima colonna indica lazione associata alle regole. F 1 e F2 possono
essere trattati in modo pi efficiente utilizzando trie oppure TCAM, mentre F3 e F4 esprimendo
i singoli numeri in intervalli ed eseguendo un lookup dellintervallo. Per confrontare e
analizzare gli algoritmi, possono essere usati diversi criteri:

Velocit di ricerca: i collegamenti ad alta velocit richiedono una classificazione rapida. Ad


esempio, assumendo un pacchetto IP di 40 byte, i collegamenti a 10Gbps possono
trasmettere fino a 31,25 milioni di pacchetti al secondo, quindi il tempo di classificazione
pari a 32 ns;

Requisiti di memoria: memoria ridotta significa accesso rapido alla memoria e basso
consumo energetico, che importante per algoritmi software basati su cache e algoritmi
hardware basati su SRAM;

Scalabilit nella dimensione del classificatore: la dimensione del classificatore dipende dalle
applicazioni. Per un router di confine che effettua operazioni su flussi ridotti, il numero di flussi
tra 128000 e 1000000. Ovviamente, il numero aumenta allaumentare della velocit del
collegamento;

Scalabilit nel numero di campi dellheader: se si forniscono servizi pi complessi, pu essere


necessario includere pi campi dellheader;

Tempo di aggiornamento: se cambia il classificatore (per laggiunta o la rimozione di una


voce) necessario aggiornare la struttura dati. Alcune applicazioni, come il riconoscimento
dei flussi, richiedono che il tempo delloperazione sia breve, pena la diminuzione delle
performance;

Flessibilit nelle specifiche: labilit di un algoritmo di gestire unampia gamma di


specifiche(prefisso/lunghezza, operatore/numero, wildcard, ) permette di utilizzarlo in
diverse circostanze;

Lalgoritmo pi semplice per la classificazione dei pacchetti la ricerca lineare. Linsieme di


regole pu essere organizzato in un array. Dato lheader di un pacchetto in ingresso, le
regole vengono esaminate una a una, finch non si trova una corrispondenza. Per un
classificatore a N regole, sia la memorizzazione sia il tempo di ricerca hanno complessit
O(N), rendendo questo schema irrealizzabile per grandi insiemi. Esistono perci altri schemi di
classificazione.

4.1 CLASSIFICAZIONE BASATA SUI TRIE


4.1.2 Trie gerarchici
Un trie gerarchico una semplice estensione di un albero a una dimensione in un albero a
dimensioni multiple, in cui ogni dimensione rappresenta un campo ( anche noto come trie
multilivello e trie of tries).Considero un trie gerarchico bidimensionale, che rappresenta i primi
2 campi dellinsieme di regole C seguente:

Considero per comodit solo F1 e F2, poich in quanto prefissi possono essere gestiti
facilmente usando i trie: i nodi a forma di ellisse appartengono al trie di F1, mentre i nodi a
forma di cerchio appartengono al trie di F2. I nodi in grassetto rappresentano il puntatore al
trie successivo. Ci sono 4 trie di F2 perch ci sono 4 prefissi differenti nel campo F1 di C. Ogni
nodo grigio etichettato con una regola Rj: ci significa che se quel nodo raggiunto
durante una ricerca, c un match con la regola Rj. In generale, un trie gerarchico pu
essere costruito in questo modo: si costruisce un trie binario radice, detto trie di F1, per
linsieme di prefissi RJ1 che appartengono a F1 per tutte le regole. In seguito, per ogni prefisso
p nel trie di F1, si costruisce un trie gerarchico Tp a (d-1) dimensioni in modo ricorsivo, per
quelle regole che specificano correttamente p in 1 (cio linsieme di regole Rj|Rj1 = p). Il trie
Tp connesso a p tramite un puntatore al trie successivo, salvato nel nodo p. La
classificazione di un pacchetto in ingresso avente header (v 1, v2, , vd) avviene in questo
modo: lalgoritmo di ricerca attraversa il trie di F1 basato su v1. Se incontra un puntatore al
trie successivo, lalgoritmo segue il puntatore e cerca in modo ricorsivo nel trie gerarchico a
(d-1) dimensioni. Nel caso precedente, dato un pacchetto in ingresso (001, 110), il processo
di ricerca comincia dal trie di F1 per trovare il prefisso con corrispondenza migliore con 001.
Dopo aver raggiunto il nodo D nel trie di F1, si usa il puntatore al trie successivo per guidare la
ricerca nel trie di F2 per trovare tutte le corrispondenze con 110: si raggiungono sia il nodo R1
sia il nodo R2, ma viene registrato solo R1, perch ha la priorit pi alta. Ora risalgo fino al
nodo B, cio il predecessore pi basso del nodo D nel trie di F 1. Ancora una volta uso il
puntatore al trie successivo per cercare nel trie di F2. Il procedimento si ripete finch non
esistono pi nodi predecessori di D da cercare. In questo caso il processo di ricerca termina
al nodo x, e lintero processo di attraversamento indicato in figura dalla linea tratteggiata.
Durante il percorso si trovano 3 corrispondenze: R1, R2 e R6. R1viene restituito come la regola a
priorit pi alta. Il processo di risalita necessario poich 001 pu avere match con
parecchi prefissi nel primo campo, e non si conosce a priori se il trie di F2 contiene uno o pi
prefissi che coincidono con 110. Inoltre bisogna cercare tutte le corrispondenze per essere
sicuri di aver trovato quella con priorit massima. Il trie gerarchico uno degli algoritmi pi
economici in termini di memoria: per un insieme di N regole, ognuna con d sottocampi e
con lunghezza massima di ogni campo W, la complessit di memorizzazione O(NdW). La
struttura dei dati diretta e facile da mantenere, ai danni di un tempo di ricerca pi lungo.
La complessit del tempo di ricerca O(Wd). Aggiornamenti incrementali possono essere
implementati in O(d2W), poich ogni campo memorizzato in esattamente una posizione,
alla profondit massima O(dW).
4.1.2 Set-pruning trie
Il set-pruning trie una versione modificata del trie gerarchico, che evita la risalita
(backtracking) durante il processo di ricerca. In un set-pruning trie, ogni nodo del trie (con un
prefisso valido) duplica tutte le regole dei set delle regole dei suoi predecessori nel suo set di
regole, e quindi costruisce la nuova dimensione del trie, basata sul nuovo set di regole.

Considero un set-pruning trie a 2 dimensioni, basato sui campi F1 e F2 del set di regole C. I
nodi A, B e D del trie di F1 diventano {R7}, {R4, R5, R6, R7} e {R1, R2, R4, R5, R6, R7}, poich sono
state duplicate le regole. Il processo di ricerca di una d-upla consiste in d matching
consecutivi del matching pi lungo per ogni dimensione del set-pruning trie. Data una 2-upla
(001, 110), il percorso di ricerca evidenziato in figura dalla linea tratteggiata. R 1viene
restituita come la regola matchata con priorit massima. Si possono incontrare differenti
regole lungo il cammino, e viene salvata quella con la priorit pi alta. Il nodo R 2 include le
regole R2 e R6, ma si mantiene solo R2 perch ha priorit pi alta. Il set-pruning trie non ha la
necessita di backtracking, e quindi il tempo di ricerca ha complessit O(dW), anche se il
costo di memorizzazione O(NddW) (una regola pu dover essere duplicata fino a Nd
volte). La complessit di aggiornamento O(Nd).
4.1.3 Greed of tries
E una struttura dati per la classificazione bidimensionale, che riduce la complessit di
memorizzazione a O(NdW) (come il trie gerarchico), e mantiene il tempo di ricerca a
O(dW) attraverso un precalcolo e la memorizzazione dei cosiddetti puntatori switching
(switching pointers) in alcuni nodi del trie di F2. Il nodo del trie di F1 in un set-pruning trie
duplica le regole appartenenti ai suoi predecessori. Ci analogo a dire che il nodo del trie
di F1 unisce i trie di F2 dei suoi predecessori nel proprio trie di F2.

Ad esempio R7 nel nodo A del trie di F2 duplicato 3 volte. Chiamando trie di F2-B il trie di F2
che appartiene al nodo B, lunica differenza tra i trie di F 2-B nelle 2 figure seguenti (trie
gerarchico e set-pruning trie) che nel set-pruning trie, il nodo R7 duplicato.

Invece che duplicare i nodi, viene incorporato al nodo x un puntatore switching etichettato
con 0, che punta al nodo R7 nel trie di F2-A (i puntatori switching sono rappresentati dalle
linee tratteggiate).
In pratica il puntatore switching etichettato con 0 al nodo x sostituisce il puntatore a 0 nel
set-pruning trie. Se, per un classificatore C, vengono costruiti il trie gerarchico e il set-pruning
trie, la struttura a griglia di trie di C pu essere costruita aggiungendo puntatori switching ai
trie di F2 del trie gerarchico, o al trie del set-pruning trie. Un puntatore switching, ps,
etichettato con 0/1 viene inserito al nodo y ogni volta che la sua controparte nel set-pruning
trie contiene un puntatore a 0/1 a un altro nodo z, mentre y non lo contiene. Il nodo z pu
avere parecchie controparti nel trie gerarchico, ma ps punta a quello contenuto nel trie di F2
che il pi vicino al trie di F2 che contiene il nodo y. Ad esempio i nodi x e x nelle 2 figure
precedenti sono entrambi controparti del nodo x. Comunque il puntatore switching al
nodo y punta al nodo x, poich il nodo B pi vicino al nodo D rispetto al nodo A. Se i
puntatori switching sono visti come puntatori 0/1, il processo di ricerca identico a quello nel
set-pruning trie. La struttura a griglia di trie ha un buon comportamento in termini di tempo di
ricerca, pari a O(dW), e complessit di memorizzazione, pari a O(NdW), ma gli
aggiornamenti incrementali sono complessi perch parecchi puntatori possono puntare a
un singolo nodo. Se viene rimosso un nodo, deve esserne creato un altro, e quindi bisogna
aggiornare i puntatori affinch puntino al nuovo nodo.

4.1.4 Schemi a 2 dimensioni


Lidea quella di usare le caratteristiche dei database di regole per ridurre la complessit
della ricerca multi-dimensionale a quella di una ricerca bidimensionale (2D). Si osservato
che ogni pacchetto matcha al massimo con poche coppie di prefissi sorgente-destinatario
(SIP, DIP) presenti nel set di regole. In altre parole, se limitiamo il set di regole soltanto ai
campi sorgente e destinatario, nessun pacchetto matcha con pi di poche regole del
nuovo set di regole. Questo non si verifica per i singoli campi, a causa delle wildcard: un
pacchetto pu combaciare con centinaia di regole, considerando un campo
singolarmente. Pertanto stata presentata lidea di un semplice metodo di classificazione
2D.
Lidea quella di usare un qualunque schema di matching 2D per trovare tutte le coppie
diverse di prefissi sorgente-destinatario (S1, D1), , (St, Dt) che matchano con lheader. Per
ogni coppia (Si, Di) c un array lineare, o una lista, con tutte le regole che contengono (S i,
Di) nei campi sorgente e destinatario. Nella figura precedente, (S 1, D1) contiene le regole R5,
R6, R2 e R4. Ogni regola pu essere associata soltanto a una coppia sorgente-destinatario
(forse perch a ogni regola associata una priorit). Daltra parte, si pu voler replicare le
regole per ridurre le coppie di prefissi sorgente-destinatario considerate durante la ricerca,
per ridurne il tempo. Durante la ricerca di una regola per una data chiave, parecchie
coppie di prefissi sorgente-destinatario possono coincidere con la chiave. Ad esempio, (*,
000) e (1*, 0*) coincidono con una chiave (111, 000). Di conseguenza, le regole di ogni
coppia matchata (S, D) verranno indagate pi in profondit, con il resto della chiave. Ad
esempio, se (S1, D1) matchata, tutte le sue regole R5, R6, R2 e R4 vengono indagate, ad
esempio con i numeri di porta della chiave. Nel caso peggiore, il tempo di ricerca W(H+2)
(W = ampiezza delle parole di classificazione; H = profondit del trie).

4.2 ALGORITMI GEOMETRICI


Ogni campo di un classificatore pu essere specificato o con una coppia prefisso/lunghezza
o come operatore/numero. Dal punto di vista geometrico, entrambi i metodi possono essere
interpretati come un intervallo sulla linea dei numeri. Ad esempio, una regola con 2 campi
rappresenta un rettangolo nello spazio euclideo a 2 dimensioni, mentre una regola su d
campi rappresenta un iperrettangolo nello spazio d-dimensionale. Lheader di un pacchetto
(d-upla) rappresenta un punto P nello spazio d-dimensionale. Il problema della
classificazione del pacchetto diventa quello di trovare liperrettangolo a priorit massima
che contiene P.
Dato il punto P(0010, 1100), si trova facilmente che la regola a priorit pi alta R 1. Ci sono
diversi problemi nel campo della geometria computazionale che ricordano la classificazione
dei pacchetti. Uno il problema della posizione del punto, cio trovare la regione che
racchiude un punto, dato un insieme di regioni non sovrapposte. I limiti teorici della posizione
di un punto in N regioni iperrettangolari e d>3 dimensioni sono un tempo O(logN) per uno
spazio O(Nd), o un tempo O(logN)(d-1) per uno spazio O(N).

La classificazione diventa pi difficile se gli iperrettangoli si possono sovrapporre. Ci implica


che la classificazione estremamente complessa nel caso peggiore. Gli algoritmi di
classificazione dei pacchetti implicano linterpretazione degli intervalli su certi campi del
classificatore. Se i prefissi o gli intervalli di un campo sono rappresentati sulla linea di numeri
[0, 2W -1], si ottiene un set di intervalli disgiunti, e la concatenazione di questi intervalli forma
lintera linea dei numeri.
Ad esempio, ci sono 4 intervalli nella dimensione F1 e 5 nella dimensione F2. Dato un numero
Z sulla linea di numeri, il problema del lookup degli intervalli consiste nel trovare lintervallo
che contiene Z. Un metodo consiste nellusare la ricerca a k vie vista in precedenza. Un
prefisso rappresenta un intervallo sulla linea di numeri. Daltra parte, un intervallo arbitrario
pu richiedere fino a 2W-2 prefissi per rappresentarlo. Questa una conclusione utile per
analizzare come sia pi alta la complessit di memorizzazione per alcuni algoritmi che
supportano solo la specificazione dei prefissi. Il processo di trasformazione di un intervallo
arbitrario in uno o pi prefissi detto splitting dellintervallo (range splitting).

4.1.2 Cross-producting scheme


E stato proposto uno schema cross-producting, possibile per un numero arbitrario di campi
e per qualsiasi tipo di specificazione di campi. Lo schema funziona effettuando d operazioni
di lookup degli intervalli, una per campo, e componendo i dati ottenuti per indicizzare una

tabella precalcolata che restituisce la regola matchata con pi alta priorit.


Considero F1 e F2 del classificatore C della tabella precedente: come primo passo, le
specificazioni delle regole nei campi F1 e F2 sono proiettate a vicenda su 2 linee verticali di
numeri, in modo da ottenere 2 insiemi di intervalli, {r1[0], ...,r1[3]} e {r2[0], ...,r2[4]}.

Ogni coppia di intervalli (r1[i], r2[ j]) corrisponde a un rettangolo, che contiene la regola
matchata meglio, calcolata in precedenza (- significa che non ci sono regole che
matchano). Perci, data una coppia (p1, p2), vengono effettuati 2 lookup degli intervalli su
ogni insieme di intervalli e i 2 intervalli restituiti vengono composti per indicizzare la tabella
precalcolata. Ad esempio, se p1 = 0010 e p2 = 1100, i 2 intervalli restituiti (r1[0], r2[3]) dicono
che R1 la regola matchata meglio. Per quanto riguarda il generico classificatore d-
dimensionale, si ottengono d insiemi di intervalli proiettando le specificazioni delle regole su
ogni dimensione, e ogni elemento della tabella d-dimensionale pu essere precalcolato nel
modo visto prima. Lo schema cross-producting ha un tempo di ricerca di O(dtRL), dove tRL
il tempo di trovare un intervallo in una dimensione, tuttavia soffre di un problema di
esplosione della memoria: nel caso peggiore, la tabella pu avere O(Nd) voci. Perci stato
proposto uno schema cross-producting con un sistema di cache. Gli aggiornamenti
incrementali richiedono la ricostruzione della tabella cross-product, quindi non supporta
bene classificatori dinamici.

4.2.2 Bitmap intersection


Lo schema bitmap-intersection si applica alla classificazione multidimensionale dei pacchetti
per qualsiasi tipo di specificazione in ogni campo. Lo schema si basa sul fatto che linsieme
di regole, S, che matchano un pacchetto lintersezione di d insiemi S i, dove Si linsieme di
regole che matchano singolarmente il pacchetto nella i-esima dimensione.

4 regole di un classificatore 2D sono rappresentate come 4 rettangoli e proiettate su 2 linee


di numeri. Ci permette di derivare 2 insiemi di intervalli {X1, , X6} e {Y1, , Y6} in ogni
dimensione. Ogni intervallo associato a una bitmap precalcolata di 4 bit, in cui ogni bit
rappresenta una regola (se avessi n regole, avrei n bit). Un 1 nella bitmap di Xk/Yk indica
che la regola matcha con gli intervalli Xk/Yk nella dimensione X/Y. Dato un pacchetto P(p1,
p2), vengono effettuati 2 lookup di intervallo in ogni insieme di intervalli, e vengono
determinati 2 intervalli, Xi e Yj, che contengono p1 e p2. Quindi la bitmap risultante, ottenuta
dallintersezione (cio unoperazione di AND tra bit) delle bitmap di Xi e Yj, mostra tutte le
regole matchate per P. Se le regole sono ordinate in ordine decrescente in base alla priorit,
il primo 1 nella bitmap indica la regola con priorit pi alta. Si pu espandere lo schema e
applicarlo a una classificazione multidimensionale.

Poich ogni bitmap ha unampiezza di N bit, e ci sono O(N) intervalli in ognuna delle d
dimensioni, lo spazio di memorizzazione O(dN2). Il tempo di ricerca O(dtRL + dN/w), dove
tRL il tema per effettuare un lookup dellintervallo e w la profondit della memoria. La
complessit del tempo pu essere ridotta di un fattore d eseguendo il lookup di ogni
dimensione in parallelo. Gli aggiornamenti incrementali non sono supportati bene. Lo
schema funziona bene per un numero piccolo di regole, ma ha un aumento quadratico
nella memorizzazione e lineare nel tempo di classificazione dipendenti dalla dimensione del
classificatore.

4.3 ALGORITMI EURISTICI


4.3.1 Classificazione a flusso ricorsivo (RFC)
Si applica a una classificazione su campi multipli. Classificare un pacchetto implica
mappare lheader (H bit) in un identificatore di azione a T bit (T = log N, T << H) per un
classificatore a N regole. Un metodo semplice ma poco pratico quello di precalcolare
lazione per ognuno dei 2H differenti header e salvare il risultato in un array di dimensione
2H2T. Ci richiede ovviamente un solo accesso in memoria per ottenere il risultato richiesto,
ma anche troppa memoria. Lobiettivo principale del RFC eseguire il mapping, ma in
diverse fasi.
Il mapping ottenuto in modo ricorsivo: a ogni passaggio, lalgoritmo esegue una riduzione,
mappando un insieme di valori in uno pi piccolo. In ogni fase, un insieme di memoria
restituisce un valore pi piccolo (in termini di bit) dellindice dellaccesso in memoria.

Le tabelle precalcolate sono costruite in questo modo:

Si dividono i d campi dellheader in pezzi (chunks), che sono usati per indicizzare in parallelo
memorie multiple. Nel caso precedente ci sono 8 chunks. Un modo per formare i chunks il
seguente:

Ogni lookup parallelo mapper il chunk su un equal ID (eqID) secondo determinate regole.
Considero un chunk di b bit: la sua mapping table di 2b voci, e ognuna contiene un eqID
per quel valore del chunk. LeqID determinato da quelle componenti delle regole nel
classificatore che corrispondono a quel chunk. Si usa il termine CES (Chunk Equivalence Set)
per indicare tutti i valori con lo stesso eqID. Considero ad esempio il chunk 3 (Protocol) del
classificatore in questa tabella:

Se ci sono 2 pacchetti aventi valori di protocollo che giacciono nello stesso insieme e con
header identico, le regole del classificatore non li distinguerebbero. Quindi il CES per i chunk
3 (protocol) sarebbe: {TCP}, {UDP}, {tutti i numeri rimanenti nellintervallo 0-255}. Ogni CES pu
essere costruito in questo modo. Per un chunk di b bit, si proiettano le regole sulla linea di
numeri [0, 2b -1]. Ogni componente viene proiettato su un insieme (non per forza contiguo,
ad esempio se non c' una regola, tipo default, cio con*, che copre tutti i casi non
specificati dalle altre regole) di intervalli sulla linea di numeri. I punti finali (end-points) di tutti
gli intervalli proiettati dalle componenti formano un insieme di intervalli non sovrapposti. Due
punti nello stesso intervallo appartengono allo stesso insieme di equivalenza. 2 intervalli sono
nello stesso insieme di equivalenza se sono stati proiettati esattamente dalle stesse regole. In
questa figura c un esempio di chunk 2 (Port Number) del classificatore nella tabella
precedente con gli end-points degli intervalli (I0, , I4) e gli insiemi di intervalli (E0, , E3):

I 4 CES possono essere decodificati usando 2 bit: ad esempio assegno 00 a E1, 01 a E0, 10
a E2 e 11 a E3. A questo punto la tabella RFC per questo chunk viene riempita con gli eqID
corrispondenti, ad esempio:

table (20) =01, table (23) =11, ecc.

Nei passi successivi un chunk formato dalla combinazione di 2 (o pi) chunks ottenuti dai
lookup di memoria negli step precedenti, con il CES corrispondente. Se ad esempio il chunk
risultante ha ampiezza di b bit, si possono creare insiemi di equivalenza tali che 2 numeri di b
bit, che non sono distinti dalle regole del classificatore, appartengano allo stesso CES. Quindi
(20, UDP) e (21, UDP) saranno nello stesso CES del classificatore al secondo step di questa
tabella:
Per determinare i nuovi insiemi di equivalenza per questa fase, si calcolano tutte le possibili
intersezioni degli insiemi di equivalenza, ottenute combinando gli step precedenti. Ogni
intersezione distinta un insieme di equivalenza per il chunk appena creato. Ad esempio, se
si combina il chunk 2 (numero di porta) con il 3 (protocollo), si ottengono 5 chunks:

(a) { ({80}, {UDP})} // http ha 80 come porta

(b) { ({20 21}, {UDP})}

(c) { ({80}, {TCP})}

(d) { ({gt1023}, {TCP})}

(e) {tutte le altre possibili combinazioni}.

Ci pu essere espresso con eqID di 3 bit

Da ci si pu vedere che il numero di bit si ridotto da 4 a 3 durante il primo step e il


secondo step. Dalla combinazione dei 2 step, il numero calato da 24 (16 bit per port
number e 8 per protocol) a 3. La classificazione di un pacchetto viene quindi divisa in
parecchi chunks, usati come indice: quindi gli eqID richiesti sono combinati in chunks della
seconda fase. La procedura continua fino a che si raggiunge lultima fase, quando tutti gli
eqID rimanenti sono stati combinati in un unico chunk. La tabella corrispondente manterr le
azioni per quel pacchetto. I contenuti di ogni memoria sono scelti affinch il risultato del
lookup sia pi ristretto dellindice. Differenti combinazioni dei chunk possono produrre
differenti requisiti di memoria. I classificatori reali 4D che hanno fino a 1700 regole possono
usare RFC in modo pratico per linee a 10Gbps in hardware e 2,5 Gbps in software. Tuttavia lo
spazio di memorizzazione e il tempo di precalcolo crescono rapidamente per classificatori
aventi pi di 6000 regole. Una possibile ottimizzazione riduce lo spazio richiesto da un
classificatore a 4 campi e 15000 regole fino a 4Mbytes.

4.4 ALGORITMI BASATI SULLE TCAM


Gli algoritmi basati sulle TCAM stanno avendo una popolarit sempre maggiore nella
classificazione rapida dei pacchetti. In generale, un coprocessore (tipologia
di processore che si contraddistingue per essere ausiliaria a un altro processore, ad esempio
GPU) TCAM lavora come un processore associato per la classificazione dei pacchetti per
conto di ununit di elaborazione di rete (NPU), detta processore di rete (network processor).
Appartengono alla famiglia degli ASIP e sono caratterizzati da grossa versatilit e da ottime
prestazioni in termini di throughput. Quando un pacchetto deve essere classificato, una NPU
genera una chiave di ricerca basata sulle informazioni estratte dallheader e le passa al
coprocessore TCAM per la classificazione, attraverso uninterfaccia NPU/TCAM. Il
coprocessore TCAM trova una regola matchata in O(1) cicli di clock, e perci offre la miglior
performance.

Una CPU locale aggiorna le tabelle delle regole attraverso uninterfaccia CPU-TCAM
separata. Nonostante le performance nel lookup, uno dei problemi pi critici nelluso delle
TCAM per la classificazione dei pacchetti il range matching, cio come effettivamente
gestire le regole di filtraggio con gli intervalli. La difficolt nasce dal fatto che devono essere
allocate voci multiple nelle TCAM per rappresentare una regola con intervalli. Un intervallo si
dice esattamente implementato in una TCAM se espresso in una TCAM senza essere
codificato. Ad esempio, sono necessarie 6 voci (cio i primi 6 bit) per esprimere un intervallo
{> 1023} = {> 0000 0011 1111 1111} in una TCAM, se lintervallo implementato esattamente,
come in questo caso (mediante 6 sottointervalli):
Le attuali tabelle di policy/firewall di filtraggio (PF) implicano una quantit significativa di
regole con intervalli. Lefficienza di memorizzazione TCAM pu essere bassa (16%) a causa di
un numero significativo di regole con intervalli di porte. Lefficienza ridotta, oltre al costo e al
consumo energetico, rende il problema ancora pi serio. Una soluzione per trattare gli
intervalli quella di effettuare una preelaborazione degli intervalli, mappandoli in una
sequenza di bit (bit-mapping). Lidea quella di vedere una regola,espressa con una d-
upla, come una regione in uno spazio d-dimensionale di regole, e codificare ogni regione
distinta sovrapposta tra tutte le regole, in modo che ogni regola pu essere tradotta in una
sequenza di bit (rule encoding). Di conseguenza, una chiave di ricerca, che basata sulle
informazioni estratte dallheader, viene preprocessata per generare una chiave di ricerca
codificata (search key encoding). Quindi, la chiave codificata viene confrontata con tutte
le regole codificate per trovare la regola che matcha meglio. A differenza del rule
encoding, che pu essere preprocessata in software, il search key encoding viene
effettuato in hardware a wire-speed. Quando si usa la specificazione degli intervalli per i
campi senza codifica degli intervalli, bisogna eseguire il range splitting per convertire gli
intervalli in formati di prefissi per adattarli ai limiti dei bit. Ci aumenta il numero di voci, e
potrebbe rendere le TCAM irrealizzabili per alcuni classificatori che usano la specificazione
degli intervalli. Esiste un efficiente schema di codifica per i classificatori di intervalli nelle
TCAM. Lalgoritmo espande le TCAM orizzontalmente (usando pi bit per la ricerca), e per
unapplicazione limitata in ampiezza, viene proposto un algoritmo che permette
unespansione verticale e orizzontale. Per ogni intervallo di campo, si usa un vettore di n bit B
= b1, b2, , bn per rappresentarlo (n = numero di intervalli distinti specificati per ogni campo).
Il vettore B per lintervallo Ei ha 1 nella posizione di bit i (cio bi = 1), mentre tutti gli altri bit
sono dont care. Ci si basa sullosservazione che anche se il numero di regole in un
classificatore pu essere grande, il numero di intervalli distinti specificati per un qualsiasi
intervallo nel campo limitato, e anche lesatta specificazione degli intervalli avviene
frequentemente per un campo. Nelle prossime 2 figure ci sono una tabella e la sua
rappresentazione dei vettori di bit (n = 5). Ad esempio lintervallo di valori pi grandi di 1023
in R1 rappresentato da xxxx1.
Una chiave di lookup v [0, 2k] viene tradotta in un vettore di n bit V = v 1, v2, , vn. Il bit
viviene settato a 1 se la chiave v cade nellintervallo corrispondente Ei, altrimenti viene posto
a 0. La traduzione delle chiavi di lookup pu essere implementata con un lookup diretto di
memoria, poich la maggior parte degli intervalli di campo ha ampiezza minore di 16 bit.
Una tabella completa di traduzione delle chiavi di lookup per il classificatore, per ogni
possibile chiave di lookup, mostrata in questa figura:

Ad esempio il vettore di bit pi a destra settato a 1 per tutte le posizioni oltre il 1024
(incluso). Inoltre, il secondo bit da destra tra le posizioni 50 e 2000 (incluse) viene anchesso
settato a 1. Possono essere fatte alcune ottimizzazioni per il match esatto. Si pu ridurre il
numero di bit usati fino a log2 (m+1), dove m il numero di match esatti. La
rappresentazione in bit conterr2 parti <Be, B>: Be per i match esatti, e B per gli altri. Be = b1,
b2, , bt un vettore di t bit, dove t log2 (m + 1). Per un normale intervallo (ad esempio 50-
2000), <Be = 0, B> e la sua porzione B la stessa di prima. Per un match esatto (ad esempio
80), <Be = i, B = 0>, se questo li-esimo match esatto. Nellesempio precedente, se si usano i
bit 2 e 3 come Be (dove il bit 1 il bit significativo pi a sinistra), il classificatore salvato nelle
TCAM questo:
Le regole che hanno exact match sono le 3regole R3, R4 e R5: quindi sono necessari t =
log2(3+1) bit, quindi ne prendo 2. Perci codifico, attraverso i bit 2 e 3, le 3 regole
rispettivamente mediante la codifica 01, 10 e 11. Di conseguenza la tabella della traduzione
delle chiavi di lookup ha bisogno di essere cambiata. La chiave di lookup contiene anche 2
parti <Ve, V>: Ve corrisponde a tutti i match esatti, e V al resto. Ve = {v1, v2, , vt} un vettore
di t bit (ad esempio b2 e b3 della colonna di destra della figura precedente), e Ve = i se la
chiave di lookup v uguale alli-esimo match esatto, altrimenti Ve = 0. Assumo che il
classificatore sia salvato in una TCAM come nellesempio precedente: arriva un pacchetto
con indirizzo di destinazione 192.169.10.1 e numero di porta 80. Prima viene indicizzato il
numero di porta nella tabella di traduzione delle chiavi di lookup: risulta V = 10, perch 80
cade nellintervallo 50-2000 ma non in quello > 1023. Il Ve risultante 01, poich 01 il valore
assegnato per matchare esattamente il valore 80. Insieme allindirizzo IP di destinazione, il
risultato finale 3. Questo schema richiede meno spazio di memorizzazione TCAM. Ci
permette di ospitare un numero maggiore di regole in una singola tabella TCAM, e quindi
ridurre costi e consumi energetici. Nel frattempo, ci ha il vantaggio di avere un tempo di
esecuzione deterministico sui dispositivi TCAM. Detto ci, laggiunta o la rimozione di regole
causa il cambiamento dei vettori di bit, e quindi pu richiedere il ricalcolo dellintera tabella
di traslazione, che un processo che richiede tempo.
5. PACKET SWITCHING
Un router IP un nodo di rete vitale per lattuale rete di packet switching. Esso consiste in
diverse porte di input/output. I pacchetti arrivano alle porte di ingresso di un router IP da
molteplici sorgenti. Questi sono inviati alle porte di uscita appropriate da una switch fabric
secondo una forwarding table, aggiornata da protocolli di routing (RIP, BGP, ). In una rete
a commutazione di pacchetto, pacchetti da diverse porte di ingresso possono essere
destinati allo stesso momento alla stessa porta di uscita, dando vita a una contesa per la
porta. La gestione di queste contese una sfida importante nella realizzazione delle switch
fabric. Le reti telefoniche tradizionali usano tecniche di commutazione di circuito per stabilire
connessioni: in questo schema, c solitamente un processore centralizzato che determina
tutte le connessioni tra le porte di ingresso e uscita. Ogni connessione rimane attiva in media
per 3 minuti. Per uno switch NxN, ci sono contemporaneamente al massimo N connessioni, e
il tempo richiesto per realizzare ogni connessione 180 secondi/N. Se ad esempio ci sono
1000 connessioni, il tempo per realizzarne una al massimo 180 ms, abbastanza comodo per
la maggior parte degli switch che usano le attuali tecnologie (come i chip CMOS). Tuttavia
per i router IP il tempo necessario per configurare le connessioni molto pi rigido, e
normalmente basato su un time-slot di lunghezza fissa. Ad esempio il timeslot potrebbe
essere quello impiegato per la trasmissione di 64 byte, in modo da coprire i 40 byte del pi
piccolo pacchetto: in un collegamento a 10 Gbit/s, il timeslot pari a 50 ns. Allaumentare
del bit rate o del numero delle porte, il tempo richiesto per ogni connessione viene ridotto
ulteriormente. Di conseguenza, non pratico assumere processori centralizzati per le
connessioni tra input e output. Perci per i router IP non si usa un processore centralizzato,
ma piuttosto uno schema self-routing, per stabilire connessioni input-output in maniera
distribuita. In altre parole, la switch fabric ha unintelligenza per instradare pacchetti alle
porte opportune, basata sugli indirizzi fisici delle porte di uscita, scritti su ogni pacchetto. Una
switch fabric che ha questa capacit di self-routing lo switch Banyan. In aggiunta
allinstradamento dei pacchetti nei router IP, unaltra importante funzione quella di
risolvere le contese. Ci sono diversi schemi proposti per questo scopo: un metodo quello di
permettere a tutti i pacchetti destinati alla stessa porta di giungere simultaneamente. Poich
pu essere trasmesso un solo pacchetto alla volta, gli altri rimangono in coda alla porta di
uscita. Uno switch con queste caratteristiche detto output-buffered switch. Per questo
schema, bisogna gestire switch fabric e memoria con una velocit di N volte quella del
collegamento, dove N la dimensione dello switch. Se aumentano il numero di porte o la
velocit del collegamento, questo schema diventa impossibile da realizzare. Tuttavia, se non
si permette a tutti i pacchetti di raggiungere la stessa porta allo stesso tempo, si richiede uno
schema di scheduling (detto schema di arbitrato) per gestire i pacchetti destinati alle stesse
porte. I pacchetti che perdono la contesa devono attendere in un buffer allingresso:
unarchitettura di questo tipo detta input-buffered switch. Il modo di gestire le contese
influisce su costo e performance. Alcuni schemi sono implementati in maniera centralizzata,
altri in maniera distribuita: i primi sono solitamente pi semplici e piccoli, gli altri permettono
la scalabilit in termini di velocit di collegamento e dimensione di switch. Lo scheduling dei
pacchetti pu essere applicato anche alloutput dei pacchetti, per schedulare la
trasmissione dei pacchetti in base alle priorit e alla banda allocata per soddisfare
determinati requisiti (QoS, ).

Switching and routing: lobiettivo principale di switching e routing lo stesso, trasferire


informazione da un punto allaltro. Tuttavia, il routing normalmente rappresenta una
prospettiva a larga scala, dove le informazioni sono scambiate tra 2 nodi che possono
essere molto distanti tra loro. Invece lo switching si riferisce di solito alle informazioni
scambiate allinterno di un nodo di rete. In particolare, il routing necessita solitamente della
cooperazione di altri nodi, ed basato su protocolli di routing, mentre lo switching solo una
funzione di un singolo dispositivo, ed basato su forwarding table, architetture di switching e
algoritmi di scheduling. Le 2 figure seguenti sono un esempio rispettivamente di routing e
switching.

Unicast e multicast: la maggior parte delle connessioni di rete sono punto-punto (dette
unicast). Di conseguenza tutto il traffico che entra in una porta di ingresso di una switch
fabric destinato solo a una porta di uscita. Tuttavia, per applicazioni come broadcasting di
dati e video-conferenze, il traffico da una sorgente inviato a parecchie destinazioni
differenti. Per supportare il multicast, sono necessari meccanismi di switching extra per
copiare i dati da una singola porta a differenti porte in uscita.
Throughput e speedup: il throughput di una switch fabric definito come il rapporto tra la
velocit media del traffico totale in uscita e la velocit media del traffico in ingresso quando
tutte le porte in ingresso trasportano traffico pari al 100% della capacit del collegamento.
E un valore positivo e < 1.

Unaccelerazione (speedup) di k significa che la velocit di forwarding interna k volte


quella del collegamento in ingresso. Quindi, quando k > 1, significa che bisogna usare dei
buffer nelle porte di uscita. Lo speedup permette di inviare pi di un pacchetto nello stesso
timeslot, per attenuare le contese per le porte, causando un throughput maggiore.
Blocking e contese sugli output: nello switching a divisione di spazio, il problema principale
il matching tra porte in ingresso e uscita. Se c sempre la possibilit di stabilire una
connessione tra una porta in ingresso e una in uscita, entrambe non attive (idle), si parla di
nonblocking. Una porta idle una porta n connessa n richiesta. Daltra parte,
blocking significa che possibile che non si possa stabilire una connessione tra una porta
idle in ingresso e una portaidle in uscita.

Questa la rappresentazione di un blocking interno in uno switch di Clos a 3 stage, quando


la porta in ingresso idle 9 richiede una connessione alle porte in uscita 4 oppure 6, idle, che
non pu essere realizzata a causa del blocking.

In questaltro caso, una rete delta, la porta in ingresso 0 richiede una connessione con la
porta di uscita 5, e la porta 2 richiede una connessione alla porta 4, ma entrambe
necessitano della stessa porta di uscita nel secondo stage per stabilire le connessioni, e ci
causa un blocking interno. Una tipica architettura nonblocking il crossbar switch. Un altro
problema che abbassa il throughput di una switching fabric la contesa delloutput, dovuto
alla natura burst del traffico IP.
Se h porte in ingresso richiedono la stessa porta di uscita, e lo speedup k, allora k pacchetti
sono mandati al buffer di output, in attesa della trasmissione. Poich si pu trasmettere un
solo pacchetto per timeslot, allora(h-k) pacchetti non possono attraversare lo switch fabric e
devono attendere nei buffer dingresso.

Switching cell-mode e packet-mode: nelle reti ATM (protocollo di livello 2), linformazione
impacchettata in celle di dimensione fissa, quindi, in uno switch ATM, lo scheduling avviene
per un tempo di cella, quindi un timeslot. Invece nelle reti IP si adottano pacchetti di
dimensione variabile, e quindi gli algoritmi dei router IP operano sulla base del pacchetto
(packet-mode switching). A causa della distribuzione casuale della lunghezza dei pacchetti,
lo scheduler diventa troppo complesso per essere utilizzato in router su larga scala. Per
implementare la tecnologia di switching di cella ATM nei router IP, stata proposta
unarchitettura come questa:

In ogni porta di ingresso, si impiega un modulo di segmentazione di ingresso (ISM) per


convertire il pacchetto IP di lunghezza variabile in celle di lunghezza fissa. Se il pacchetto
rimanente pi corto di unintera cella, questa viene riempita (stuffing) in modo
opportuno. Quindi le celle sono bufferizzate nelle code di celle (CQ), ad esempio le code di
uscita virtuali (VOQ), ognuna associata a un output. Ci sono specifici algoritmi di scheduling
per estrarre le celle dalle VOQ e switcharle alla porta di uscita corretta. Si richiede quindi un
modulo di riassemblaggio in uscita (ORM) per riassemblare assieme le celle dello stesso
pacchetto. Dopo lORM, si usa una coda di pacchetti FIFO (detta PF) per bufferizzare i
pacchetti riassemblati se lORM ha uno speedup. Questa strategia detta cell-mode
switching in router IP.

5.2 SWITCH FABRIC


Le switch fabric possono essere classificate in base alle loro tecniche di switching: time-
division switching (TDS), a sua volta diviso in shared-memory e shared-medium, e space-
division switching (SDS), a sua volta diviso in single-path e multiple-path.

5.2.1 Time division switching (TDS)


Le celle provenienti dai diversi input sono multiplate e inviate attraverso un percorso che
connette tutti gli input e tutti gli output. Questa struttura limitata dalla banda di
comunicazioni interne che dovrebbe raggiungere la banda complessiva di invio di tutte le
porte input. Tuttavia, questa classe di switch fornisce un vantaggio: poich ogni cella scorre
attraverso la singola struttura di comunicazione, pu essere facilmente ampliata per
supportare operazioni multicast/broadcast. In uno switch shared-medium, le celle che
arrivano alle porte input vengono multiplate a divisione di tempo in un mezzo comune ad
alta velocit, ad esempio un bus o un anello, di banda pari a N volte la frequenza di linea di
ingresso. Un filtro di indirizzi (AF) e un buffer di uscita FIFO vengono usati in ogni linea di uscita
che connette al mezzo condiviso. LAF esamina lheader di ogni cella in arrivo e quindi
accetta solo le celle destinate a essa. In questo modo, le celle in ingresso multiplate sono
demultiplate verso le porte di output corrette. A causa del buffer FIFO separato per ogni
porta di uscita, lutilizzo della memoria dello switch shared-medium minore della struttura
shared-memory. Per uno switch shared-medium, la dimensione dello switch limitata dal
tempo di accesso in lettura/scrittura in memoria, poich bisogna accedere a N celle in
ingresso e 1 in uscita in un time-slot. Se il tempo di un time-slot TS e il tempo di accesso a
memoria e Tmem, la dimensione N dello switch data dalla formula (N+1) TS/Tmem. In uno
switch memory-shared, cos come negli switch shared-medium, le celle provenienti da tutte
le porte di input vengono multiplate a divisione di tempo nella logica centrale. Tuttavia, non
vengono inviate immediatamente agli output, cos come avviene nella struttura shared-
medium, ma vengono bufferizzate in una memoria centrale, e quindi schedulate al
demultiplatore, dove le celle destinate alle differenti porte vengono separate. La struttura
shared-memory migliore nellutilizzo della memoria rispetto alla struttura FIFO separata nella
struttura shared-medium, ma richiede una velocit di memoria doppia.
5.2.2 Space division switching (SDS)
Rappresenta una struttura dove sono possibili diversi path di dati tra le porte input e output, e
le celle delle diverse connessioni input-output possono essere inviate contemporaneamente,
se non presente blocking. La capacit totale quindi il prodotto della banda di ogni path
e il numero di path che possono trasmettere celle simultaneamente. Tuttavia, in pratica, la
capacit dello switch limitata dai limiti fisici di implementazione. Gli switch SDS sono
classificati in base al numero di path possibili tra ogni coppia input-output. Negli switch
single-path, esiste un solo path per ogni coppia input-output, mentre negli switch multiple-
path possono essercene di pi. Il primo ha un controllo di routing pi semplice, ma il secondo
ha una migliore flessibilit di connessione e tolleranza agli errori.

5.2.2.1 Single-path switches


5.2.2.1.1 Crossbar switch
Uno switch crossbar NxN consiste in array bidimensionali di N2 crosspoint, che corrispondono
alle coppie input-output. Ogni crosspoint ha 2 possibili stati: cross (default) e bar. Una
connessione tra la porta input i e la porta output j viene stabilita settando l(i,j)esimo
crosspoint allo stato bar, e lasciando allo stato cross gli altri crosspoint lungo la connessione.
Lo stato bar pu essere attivato individualmente da ogni cella in ingresso, quando la sua
destinazione coincide con lindirizzo di output. Non richiesta nessuna informazione globale
a proposito delle altre celle e delle altre destinazioni (propriet di self-routing), e ci riduce
notevolmente la complessit del controllo, poich la funzione di controllo distribuita tra
tutti i crosspoint. Il crossbar switch permette di trasferire fino a N celle con differenti porte
input e output nello stesso timeslot. I crossbar switch hanno 3 propriet: nonblocking interno,
architettura semplice e modularit. Tuttavia, il numero di crosspoint cresce come funzione di
N2, o come NlogN, se si costruiscono switch multistage pi grandi con moduli di crossbar
switch pi piccoli. In un crossbar switch non c blocking interno.
5.2.2.1.2 Fully interconnected switches
Un altro tipo di single-path SDS sono i fully interconnected switches. La connettivit completa
tra input e output viene di solito raggiunta usando N bus broadcast separati, da ogni porta
di input a tutte le porte output. Sono richiesti N buffer separati, uno per ogni porta output.
Tuttavia, se ognuno di questi N buffer viene partizionato e dedicato a ogni linea input,
producendo N2 buffer dedicati, diventa topologicamente identico allo switch crosspoint-
buffered, e quindi fornisce esattamente le stesse performance e la stessa complessit di
implementazione. Questo switch opera in maniera simile allo switch shared-medium. Una
cella da una qualsiasi porta input viene inviata in broadcast a ogni porta output. La
differenza che celle multiple da parecchie porte input possono essere inviate in broadcast
contemporaneamente a ogni porta output. Perci sono richiesti filtri e buffer dedicati, uno
per ogni porta output, per filtrare le celle inviate alla porta sbagliata e memorizzare
temporaneamente le celle inviate correttamente. Inoltre, lo switch fully interconnected
diverso dallo switch shared-medium nel fatto che il requisito di speedup dovuto alla
trasmissione sequenziale nel mezzo condiviso rimpiazzato da un overhead di spazio dovuto
ai N2 bus di broadcast separati. I vantaggi sono invece una semplice struttura non-blocking,
simile a uno switch crossbar-based.

5.2.2.1.3 Banyan-based switches


Sono gli SDS single-path. Sono una famiglia di switches self-routing, costruiti da elementi di
switching 2x2 con un singolo path tra ogni coppia input-output. Ci sono 3 topologie isomorfe:
delta, omega e banyan, che appartengono alla famiglia banyan-based. Tutti questi offrono
performance equivalenti.
5.2.2.2 Multiple-path switches

5.2.2.2.1 Augmented Banyan Switches


In uno switch NxN regolare, le celle passano attraverso logN stage di elementi di switching
prima di raggiungere le destinazioni.

Questo schema si riferisce al banyan switch che ha pi stage rispetto al banyan switch
classico (regular). In uno switch banyan classico, una volta che una cella viene deviata
verso un link sbagliato, e quindi deviata dallunico path predeterminato, non garantito
che la cella raggiunga loutput richiesto. In questo schema, alle celle deviate sono fornite
pi chance per essere indirizzate alle loro destinazioni. Quando le celle deviate non
raggiungono le destinazioni dopo lultimo stage, vengono scartate. Il vantaggio dovuto al
fatto che, aggiungendo stage, si riduce il rate di perdita di celle, aumentando le
performance. Lo svantaggio invece uno schema di routing complicato. Le celle sono
esaminate a ogni stage per determinare se sono arrivate alle porte di output richieste. Se
cos, verranno mandate al modulo di interfaccia di output, altrimenti sono inviate allo stage
successivo ed esaminate ancora. Un altro svantaggio che il numero di stage deve essere
sufficientemente grande per soddisfare le performance richieste, e ci aumenta la
complessit hardware.

5.2.2.2.2 Three-stage Clos Network


La struttura consiste in 3 stage di moduli switch. Il primo usato per distribuire traffico, nel
secondo parecchi moduli paralleli di switch forniscono cammini multipli attraverso gli switch,
e nellultimo le celle da differenti moduli switch sono switchate alle corrette porte di output.
5.2.2.2.3 Multiplane switches
Si riferiscono a switch che hanno multipli piani di switch, spesso identici. Questo schema
proposto come un modo per aumentare il throughput del sistema, e usando meccanismi
per distribuire il carico di traffico in ingresso possibile ridurre le collisioni. Inoltre, pu essere
trasmessa pi di una cella alla stessa porta output, usando ogni piano di switch, cos le linee
di output non devono per forza operare a una velocit maggiore di quella delle linee di
input. Un altro vantaggio che sono usati per raggiungere laffidabilit, poich la perdita di
un intero piano di switch ridurr la capacit ma non la connettivit dello switch.

5.2.2.2.4 Recirculation switches


Questi switch sono disegnati per gestire il problema della contesa delle porte di uscita.
Facendo ricircolare le celle che non raggiungono la porta output nel timeslot, pu essere
ridotto il rate di perdita di celle, e ci comporta un aumento di throughput del sistema. Lo
svantaggio rappresentato dal fatto che richiesta una dimensione maggiore dello switch
per permettere la ricircolazione, che pu causare errori nellordine di sequenza. Si richiedono
perci meccanismi per preservare la sequenza delle celle nella stessa connessione.

5.3 STRATEGIE DI BUFFERING


Poich gli arrivi burst di traffico probabilmente si contendono le porte di uscita e/o i
collegamenti interni, si richiedono buffer per ospitare temporaneamente le celle che
perdono la contesa. Esistono quindi varie strategie di buffering:

5.3.1 Shared-memory queuing


La memoria contiene N code logiche, una per porta di uscita, e ogni coda salva le celle
destinate alla porta corrispondente. La memoria condivisa da tutte le porte in uscita e
lutilizzo della memoria massimo. Tuttavia, lo svantaggio che in ogni timeslot la memoria
deve ospitare N accessi concorrenti a scrittura e N accessi concorrenti a lettura, e ci limita
lo switch ad avere piccole dimensioni.
5.3.2 Output queuing (OQ)
Le celle sono inviate immediatamente alle porte di uscita destinate una volta arrivate alle
porte di ingresso. Poich la frequenza di arrivo in ogni porta di arrivo maggiore della
capacit del collegamento in uscita, sono necessari buffer alle porte di uscita. La struttura
OQ trae vantaggio da unabilit migliore nel controllo del QoS, poich le celle sono sempre
disponibili alle porte di uscita per essere schedulate, in base ai livelli di priorit, alla banda
allocata e ai requisiti nei termini di QoS. Tuttavia questa struttura soffre i limiti della velocit di
memoria e quindi ha limitazioni nella dimensione dello switch. Questo accade perch ci
possono essere fino a N celle, da differenti porte di ingresso, destinate alla stessa porta di
uscita nello stesso tempo di cella. Lutilizzo della memoria non buono come nella shared-
memory queuing.
5.3.3 Input queuing (IQ)
A causa della limitazione nella dimensione dello switch nella struttura OQ, negli ultimi anni la
struttura input queuing ha attratto una maggiore attenzione. Linput queuing ha una sola
coda FIFO per ogni porta di ingresso per bufferizzare le celle. Un algoritmo di scheduling
viene utilizzato per matchare le porte di ingresso con quelle di uscita, poich solo una cella
pu essere inviata alla porta per ogni timeslot. Un problema in questo caso il cosiddetto
head-of-line (HOL) blocking.

In questo caso, la porta di ingresso 0 non pu mandare la sua cella in testa alla lista verso la
porta di uscita 2, avendo perso la contesa contro la porta di ingresso 3. Tuttavia, la cella
dietro la HOL nella porta di ingresso 0 non pu essere trasmessa, anche se la porta di uscita 1
idle. Ci comporta una diminuzione del throughput (in condizioni normali, il throughput
diventa il 58,6%).

5.3.4 Virtual Output Queuing (VOQ)


Per eliminare lHOL blocking, si usa la struttura virtual output queuing(VOQ). Le celle sono
bufferizzate alle porte di ingresso, tuttavia il buffer diviso in N code logiche, dette VOQ,
che ospitano le celle destinate alla porta di uscita associata. La cella HOL di ogni VOQ viene
schedulata nel tempo di cella corrente, confrontata con la struttura di input queuing, e solo
una cella HOL di ogni ingresso pu essere inviata. Tuttavia, poich il numero di code logiche
N volte la struttura di input queuing, lalgoritmo di scheduling molto pi complicato. Sono
stati proposti parecchi algoritmi di scheduling: lobiettivo principale scegliere gli HOL input-
output da una matrice NxN.
5.3.5 Combined Input and Output Queuing (CIOQ)
Un altro modo per combattere lHOL blocking permettere a ogni porta di uscita di ricevere
pi di una cella in ogni timeslot. In questo modo la switch fabric opera a S volte la velocit
del collegamento, dove 1 < S < N. Poich la switch fabric opera pi velocemente del
collegamento, devono essere messi buffer sia alle porte di ingresso sia in quelle di uscita, per
coprire le 2 velocit differenti.

Questa la struttura del CIOQ: ogni porta ha una coda FIFO. Con uno speedup di 4, lo
switch CIOQ pu avere un throughput del 99% in condizioni normali di traffico. Esiste una
struttura CIOQ migliorata:

Questa ha N code VOQ nel buffer di ingresso, mentre ogni porta di uscita ha una singola
coda FIFO. In condizioni di traffico leggermente confinato, la struttura CIOQ pu emulare
uno switch a coda di uscita FIFO (FIFO-OQ, fornisce il miglior rapporto ritardo/throughput)
con uno speedup pari a 2 con un ritardo limitato.
5.3.6 Crosspoint Queuing

Per una crossbar switch fabric, si pu mettere un buffer a ogni crosspoint. Le celle in ingresso
sono inizialmente messe nel buffer del crosspoint corrispondente (XB), in attesa di essere
trasmesse nelle porte di uscita. Un arbitrato di ogni output sceglie una cella tra gli XB sulla
stessa colonna in base ad alcuni schemi di scheduling, ad esempio round robin. Questo
switch pu raggiungere le stesse performance degli switch OQ, poich non c HOL
blocking. Tuttavia, poich ci sono N2 differenti buffer, leffetto di condivisione molto ridotto.
Avendo uno spazio di chip limitato, possono essere implementate solo poche celle. Di
conseguenza, questo switch solitamente aggiunge VOQ a ogni ingresso.

5.4 PERFORMANCE

Modelli di traffico: le celle arrivano alle porte di input slot-by-slot. Secondo gli arrivi di
Bernoulli, la probabilit di arrivo in ogni timeslot indipendente dagli altri slot, ed detta
carico offerto allinput. Se ogni cella ha la stessa probabilit di essere inviata a ogni output, il
traffico diventa uniformemente distribuito nello switch. Considero una disciplina di servizio
FIFO per ogni input. Solo le celle HOL si contendono laccesso agli output dello switch. Se
ogni cella destinata a un output differente, lo switch permette di inviare ai rispettivi output.
Se k celle HOL sono destinate allo stesso output, una passa e le altre k-1 devono attendere il
successivo timeslot. Mentre una cella attende il suo turno per accedere a un output, altre
celle dietro di lei sono bloccate e non possono raggiungere output idle. Se N piccolo, pu
essere utilizzato un modello di Markov per valutare il throughput. Quando N grande, il
numero di celle HOL per slot destinate a un particolare output diventa un processo di
Poisson. I limiti di blocking HOL limitano il throughput fino a 0.586, per N-> .
Modello on-off e traffico bursty: ogni input alterna periodi di attivit e di idle di durata
geometricamente distribuita. Una sorgente di traffico continua a inviare celle in ogni timeslot
durante il periodo di attivit, e si ferma dal farlo durante il periodo idle. La durata del periodo
di attivit (burst) determinata da una variabile casuale X {1, 2, }, che si assume
distribuita geometricamente in celle (lunghezza media del burst). In modo analogo, la
lunghezza del periodo off determinata da una variabile casuale Y {0, 1, 2, }, che si
assume distribuita geometricamente in celle. Si definisce q la probabilit di iniziare un burst
in ogni timeslot, e p la probabilit di terminare il burst. Si suppone che le celle in arrivo su una
porta input siano destinate allo stesso output. Perci, la probabilit che un periodo abbia
durata pari a i timeslot P{X = i} = p(1-p)i-1, i1, quindi la lunghezza media di burst = E[X]
=1/p. La probabilit che un periodo di off duri j timeslot

P{Y = j} = q(1-q)j-1, i0, e quindi = E[Y] = (1-q)/q. Il traffico offerto pari al tempo in cui un
timeslot attivo: = q/(q+p-pq).

Input-buffered switch: si considera un buffer FIFO per calcolare le performance. Si assume


che solo le celle in testa ai buffer possano contendere gli output, quindi se una cella perde
la contesa, quelle dietro di lei devono attendere anche se sono destinate a porte idle (c
quindi un problema di HOL blocking). Di conseguenza, il throughput massimo limitato e
non pu essere il 100%. Si ipotizza che tutte le code in ingresso siano sature (quindi ci sono
sempre celle in attesa di essere inviate): se ci sono k celle in testa alle code di ingresso e
destinate allo stesso output, una verr scelta a caso per passare attraverso lo switch. Di
conseguenza ogni cella HOL ha probabilit 1/k di essere scelta. Considero tutte le N celle in
testa ai bufferdi ingresso al timeslot m. In base alla destinazione, queste possono essere
classificate in N gruppi: alcuni possono avere pi elementi, altri possono essere vuoti. Per
quelli che hanno almeno una cella, una viene inviata attraverso lo switch e le altre
rimangono in attesa. Si indica come Bim il numero di celle rimaste, destinate alloutput i nel
m-esimo timeslot, Bi la variabile casuale nello stato stazionario, Aim il numero di celle che si
muovono in testa ai buffer di ingresso durante il m-esimo timeslot e destinate alloutput i e Ai
la corrispondente variabile casuale. Una cella pu muoversi in testa a una coda di ingresso
solo se la cella HOL al timeslot precedente stata rimossa e trasmessa. Di conseguenza, la
transizione di stato di Bim pu essere rappresentata come il massimo tra 0 e (Bim-1 +Aim-1). Si
assume che ogni nuovo arrivo di celle in testa a una coda di ingresso abbia la stessa
probabilit 1/N di essere destinato a un dato output. Di conseguenza, Aim ha la seguente
distribuzione binomiale:
Fm-1 = numero totale di celle trasmesse attraverso lo switch durante il (m-1)esimo timeslot =
Ni=1 Aim.

Considero il seguente esempio:

Considero il 1 timeslot (m = 1):

F1 = numero di celle trasmesse nel primo timeslot = 2 (celle nella coda 1 e 2);

B11 = 1 (mando una cella alla coda di uscita 1, e me ne rimane 1);

B21 = 0 (non mando nessuna cella alla coda 2, e quindi non me ne rimangono);

B31 = 0 (non mando nessuna cella alla coda 3, e quindi non me ne rimangono);

B41 = 1 (mando una cella alla coda di uscita 4, e me ne rimane 1);

Considero il 2 timeslot:

A12 = 1 (si muove una cella in testa alla coda 1 al timeslot 2);
A22 = 1 (si muove una cella in testa alla coda 2 al timeslot 2);

A32 = 0 (non si muove nessuna cella in testa destinata alla coda 3 al timeslot 2);

A42 = 0 (non si muove nessuna cella in testa destinata alla coda 4 al timeslot 2);

F2 = 3 (invio dalla coda 1, 2 e 3);

B12 = 1 (la coda 4 ha perso la contesa, e quindi non ha inviato la cella alluscita 1);

B22 = 0 (non ho celle destinate alluscita 2 e non inviate);

B32 = 0 (non ho celle destinate alluscita 3 e non inviate);

B42 = 0 (non ho celle destinate alluscita 4 e non inviate);

Considero il 3 timeslot:

A13 = 1 (la cella della coda 2);

A23 = 0 (nessuna cella);

A33 = 0 (nessuna cella);

A43 = 0 (le celle della coda 1 e 3);

F3 = 2 (ho inviato 2 celle);

B13 = 1 (la cella della coda 4);

B23 = 0;

B33 = 0;

B43 = 1 (la cella della coda 3);

Per definizione, il numero totale di celle trasmesse in un timeslot (F m) pari a N-il numero di
HOL bloccate dopo aver perso la contesa. Ai, Bi e Fi sono le variabili casuali di stato
stazionario (steady-state) che corrispondono a Aim, Bim e Fim. Quando N -> , Aim ha una
distribuzione di Poisson con rate im = Fm-1/N. Nello stato stazionario, anche Ai ha una

distribuzione di Poisson con rate 0 = F /N ( F il numero medio di celle che passano

attraverso lo switch). 0 lutilizzo dei collegamenti di uscita (cio il throughput dello switch
normalizzato). La transizione di stato di Bi si deriva dai processi di Markov allo stesso modo
delle code M/D/1 nello stato steady. Per N-> , si ottiene che

In uno stato stazionario, si ha che

Per simmetria, si ottiene che

Di conseguenza si dimostra che 0 =(2-2) = 0.586. Se N piccolo e finito, il throughput dello


switch pu essere calcolato modellizzando il sistema come una catena di Markov (il
throughput converge rapidamente a 0.586 allaumentare di N). Di conseguenza se il rate di
ingresso > 0.586, lo switch si satura e quindi il throughput diventa 0.586. Se invece linput
rate < 0.586, allora il throughput pari al 100%, e ogni cella verr inviata attraverso lo
switch dopo un qualche ritardo.

Per caratterizzare il ritardo, si pu usare il modello G/G/1, per ottenere la formula esatta del
tempo di attesa per N->. Il risultato si basa su 2 ipotesi: la prima che il processo di arrivo a
ogni porta input sia di Bernoulli, cio la probabilit che una cella arrivi in ogni timeslot sia
identica e indipendente rispetto agli altri slot. Questa probabilit indicata come p, ed
detta carico offerto. La seconda che il carico destinato a ogni porta con la stessa
probabilit. Il tempo di servizio per una cella HOL il tempo di attesa finchviene scelta, pi
un timeslot per la trasmissione attraverso lo switch. Per N-> e in uno stato stazionario, il
numero di celle che arrivano in testa alle code input e indirizzate a un particolare output
(detto j) ha una distribuzione di Poisson con rate p. Quindi, la distribuzione del tempo di
servizio per il modello a tempo discreto G/G/1 la distribuzione del ritardo di un altro sistema
di coda: una coda a tempo discreto M/D/1, con gli utenti serviti in maniera casuale. Per
calcolare il ritardo, si pu costruire un modello a coda virtuale (VQ i): un insieme delle
posizioni HOL nelle diverse code in ingresso che hanno una cella indirizzata alla porta i (i = 0,
, M-1). La capacit di ogni VQ di N (celle), e la quantit totale su tutte le VQ non supera
mai N. Nelle code di ingresso si adotta una politica FIFO, mentre nella VQ si adotta una
politica FIFO oppure RO (Random Order). Se N-> , le celle che entrano nelle VQ si
avvicinano a un numero infinito. La cella che raggiunge ogni coda viene scelta in modo
casuale e indipendente. Il processo di arrivo alla coda virtuale diventa asintoticamente
trascurabile, e il tempo di interarrivo da una coda di ingresso a una coda virtuale diventa
sufficientemente lungo. Le code virtuali, cos come le code in ingresso, formano un sistema
tempo-discreto indipendente. Si pu assumere una generica coda tagged in ingresso (o
virtuale) come rappresentativa di ogni altra coda in ingresso (o virtuale).Poich deriva da un
processo di Bernoulli di arrivo di un pacchetto su ogni inlet dello switch con probabilit p,
la coda tagged si comporta come una coda G/G/1: il tempo di servizio i il tempo
impiegato dal pacchetto HOL per vincere la contesa e quindi essere trasmesso, cio il
tempo trascorso nella coda virtuale. Se N -> e ogni outlet indirizzato con la stessa
probabilit 1/M, allora il numero di pacchetti allo stato stazionario che entra nella coda
virtuale tagged diventa poissoniano. La VQ tagged si comporta come una coda sincrona
M/D/1 con un servente interno: il rate di arrivo medio pv = p, il tempo di servizio v uguale
a 1 slot, e il tempo di attesa v il tempo impiegato da un pacchetto (generico) per vincere
la contesa del canale. Il ritardo nella coda nella VQ M/D/1 rappresenta il tempo di servizio
della coda G/G/1: quindi i = v + v. Il ritardo totale medio T il tempo medio speso nella
coda in ingresso.

I momenti del primo e del secondo ordine del tempo di attesa v possono essere trovati
assumendo 2 tipi di servizi nella coda virtuale M/D/1:

FIFO: priorit nella contesa di canale alle celle pi vecchie, cio quelle che hanno trascorso
pi tempo in posizione HOL;

Random Order: la cella che vince la contesa sempre scelta in modo casuale.

I risultati sono riportati in questa figura:


La linea continua rappresenta risultati analitici: il ritardo medio dei pacchetti cresce senza
limiti se p si avvicina alla capacit dello switch.

Uno switch con code in ingresso ha un throughput massimo di 0.586, un crossbar switch
senza buffer ha invece un throughput massimo di 0.632. Il vantaggio di aggiungere code
allingresso quello di permettere il controllo della perdita di performance per < max.
Infatti, mentre con un buffer si possono ottenere probabilit di perdita <10-9 con un traffico
offerto di 0.5, con un crossbar switch la probabilit risulta > 10-2 anche con un traffico di 0.05.

Output-buffered switch: con loutput queuing, le celle sono bufferizzate solo alle uscite, e in
ognuna mantenuta una coda FIFO. Si considera una particolare coda di uscita (ad
esempio quella tagged): si definisce la variabile casuale A come il numero di arrivi di celle
destinate a tale uscita in un dato timeslot. Si ha quindi che
Se N -> , allora

Detti Qm il numero di celle della coda tagged alla fine del m-esimo timeslot, Am il numero di
arrivi di celle durante lm-esimo timeslot e b la capacit del buffer di uscita, si ha che Q m il
minimo tra b e il massimo tra 0 e (Qm-1 + Am-1). Se Qm-1 = 0 e Am> 0, non ci sono celle in attesa
allinizio del m-esimo timeslot, ma ci sono Am celle in arrivo. Si assume che una cella, tra
quelle in arrivo,viene trasmessa immediatamente durante il m-esimo timeslot, cio passa
attraverso lo switch senza ritardo, mentre le altre sono bufferizzate. Per valori di N e b finiti,
questo pu essere modellizzato come una catena di Markov a stati finiti e a tempo discreto,
con probabilit di transizione di stato Pij date da

La dimensione della coda allo stato stazionario si pu calcolare in modo ricorsivo dalle
balance equations della seguente catena di Markov:

dove

Non vengono trasmesse celle sul collegamento tagged di uscita durante il m-esimo timeslot
se e solo se

Qm-1 = 0 e Am = 0. Di conseguenza, il throughput dello switch 0 dato da:

Una cella pu andare persa se, quando emerge dalla switch fabric, trova che il buffer di
uscita contiene gi b celle. La probabilit di perdita di una cella pu essere calcolata
come:

dove p il carico offerto. Se lo speedup S della switching matrix uguale a N, allora il


throughput con OQ sempre 1.

I 2 grafici rappresentano la probabilit di perdita delle celle con output queuing in funzione
del buffer di uscita b, della dimensione dello switch N e del carico offerto p: con p = 0.8
(80%), un buffer di dimensione b = 28 permette di avere una probabilit di perdita di cella <

10-6 per un N arbitrario grande. In generale la curva N -> pu essere un limite superiore

per valori di N finiti e > 32.


La figura rappresenta la perdita di celle quando N-> in funzione della dimensione del
buffer b e del traffico offerto p.

Loutput queuing raggiunge risultati ottimi nel rapporto throughput/ritardo: le celle vengono
ritardate se non inevitabile che 2 o pi celle che arrivano da input differenti sono destinate
alla stessa uscita. Si pu calcolare il tempo medio di attesa usando la legge di Little (il
numero medio di clienti in un sistema uguale al tasso medio di arrivo moltiplicato per il
tempo medio nel sistema):

Se N e b -> , allora il tempo medio di attesa si ottiene da una coda M/D/1:

La figura rappresenta il tempo medio di attesa in funzione del traffico offerto p e della
dimensione del buffer b, per N -> :

Completely Shared-Buffered Switches: con la condivisione completa dei buffer, tutte le celle
sono salvate in

un buffer comune condiviso da tutti gli ingressi e le uscite. A causa della natura statistica
degli arrivi delle celle, questo metodo richiede un buffer minore per ottenere una data
probabilit di perdita di cella. Loutput queuing pu essere mantenuto logicamente con liste
collegate, cosicch nessuna cella sar bloccata dal raggiungere una porta idle, e quindi si
pu sempre raggiungere il risultato ottimale nel rapporto throughput/ritardo che si ha con un
output queuing dedicato.
Queste 2 figure rappresentano la probabilit di perdita di celle con un buffer
completamente condiviso, in funzione della dimensione b del buffer per luscita e della
dimensione N dello switch, rispettivamente offrendo un traffico pari a 0.8 (80%) e 0.9.

Detto Qim il numero di celle destinate alloutput i nel buffer alla fine del m-esimo timeslot, il
numero totale di celle nel buffer condiviso alla fine del m-esimo timeslot pari alla
sommatoria di Qim per ogni i. Se il buffer ha dimensione infinita, allora:

dove Aim il numero di celle indirizzate alloutput i che arrivano durante il m-esimo timeslot.
Se il buffer ha dimensione finita, le celle in arrivo possono riempire il buffer condiviso, e
loverflow del buffer rende solo unapprossimazione. Tuttavia siamo solo interessati alla
regione con bassa probabilit di perdita di cella (ad esempio <10 -6), in cui lapprossimazione
ancora buona. Se N finito, Ai, il numero di arrivi destinati alloutput i nello stato
stazionario, non indipendente da Aj (ji). Ci avviene perch al massimo N celle arrivano
allo switch, e un grande numero di celle verso una porta output comporta un basso numero
verso le altre. Se N->, tuttavia, Ai diventa una VC indipendente di Poisson (con valor medio
p). Quindi Qi, il numero di celle nel buffer destinate alloutput i nello stato stazionario, diventa
indipendente da Qj (ij). Si pu usare questa approssimazione di Poisson per N finito e 16.

6. SWITCHING-NETWORK THEORY
Lo studio delle reti stato perseguito negli ultimi decenni dai ricercatori in 2 differenti campi:
comunicazione e informatica. I primi hanno studiato strutture inizialmente definite
connecting network usate per sistemi di switching e quindi caratterizzate da un numero
molto grande di inlet e outlet e da un controllo centralizzato che stabilisce le permutazioni
richieste.Gli altri hanno invece considerato le cosiddette interconnection networks, usate
in sistemi multiprocessore per la connessione reciproca di memoria e unit di elaborazione, e
quindi caratterizzate da un numero ragionevolmente piccolo (qualche decina) di N inlet e
M outlet, e sono state ideate per essere basate sulla possibilit di elaborazione distribuita,
permettendo di stabilire la permutazione in maniera distribuita. I 2 campi sono confluiti in un
unico obiettivo, lo sviluppo di grandi reti di interconnessione per sistemi di switching in cui
possibile lelaborazione distribuita per stabilire le permutazioni richieste. Le ragioni principali
che hanno portato a questo scenario sono la richiesta di switching fabric in grado di
trasportare traffico dellordine di centinaia di Gb/s, valore tipico di uno switch broadband di
medie dimensioni, e il tremendo progresso raggiunto dalla tecnologia CMOS VLSI, che rende
possibile lelaborazione distribuita delle interconnection networks anche per grandi reti. La
capacit di connessione di una rete solitamente espressa da due indici, che si riferiscono
alla presenza o meno di traffico trasportato dalla rete:

Accessibilit: una rete completamente accessibile quando ogni inlet pu essere connesso
con ogni outletse non ci sono connessioni gi attive nella rete, altrimenti si parla di
accessibilit limitata. La piena accessibilit oggi richiesta in tutte le interconnection
networks, in quanto la tecnologia permette di fornirla facilmente;

Blocking: si parla di blocking se almeno una connessione I/O tra un generico inlet idle e un
generico outlet idle non pu essere stabilit dalla rete a causa di congestione interna
dovuta a connessioni I/O gi presenti, altrimenti si parla di non-blocking.

In base alle tecniche usate per stabilire le connessioni, le reti non-blocking possono essere di
3 tipi:

Strict-sense non-blocking (SNB): se una rete pu sempre connettere un inlet idle con un
outlet idle indipendentemente dalla permutazione della rete, cio indipendentemente da
eventuali connessioni I/O gi presenti e dalla politiche di allocazione delle connessioni;

Wide-sense non-blocking (WNB): se una rete pu sempre connettere un inlet idle con un
outlet idle prevendendo situazioni di blocking attraverso unopportuna politica di
allocazione delle connessioni;

Rearrangeable non-blocking (RNB): se una rete pu sempre connettere un inlet idle con un
outlet idle applicando, se necessario, un riarrangiamento interno delle connessioni gi attive;
Perci solo le reti SNB sono senza stati di blocking, mentre WNB e RNB non lo sono. Da ora in
poi con nonblocking si intende SNB. Possono esserci stati di blocking nelle reti RNB durante
levoluzione dinamica della rete, ma nuove connessioni possono essere stabilite
riarrangiando le connessioni gi esistenti.Le reti non-blocking sono caratterizzate da un costo
decrescente (SNB ha costo massimo). In generale, lindice di costo di una rete era il numero
dei suoi crosspoint. Oggi si usa ancora questo criterio, anche se ha perso di significato a
causa degli sviluppi tecnologici a vantaggio di indici come i gates per chip, i chip per
board, a causa dellestremo grado di integrazione dei componenti elettronici in un
singolo chip permesso dalle tecnologie VLSI. La rete di riferimento la rete crossbar NxM: il
costo di questa rete, cio il numero dei crosspoint, riferito a una struttura quadrata (N = M)
N2.

Poich ogni crosspoint dedicato a una specifica connessione I/O, la rete crossbar
implicitamente non-blocking. Una rete crossbar quadrata (N = M) permette di settare una
permutazione di rete arbitraria, cio un insieme di N connessioni I/O: se P indica linsieme di
tutte le permutazioni stabilite da una generica rete, in generale P N!, dove P=N! una rete
crossbar. Si cercato di identificare una struttura di rete non-blocking pi economica della
rete crossbar. La linea guida stata quella di costruire reti multistage, in cui ogni stage
include matrici di switching che sono reti crossbar (quindi non-blocking). Il modello generale
di una rete multistage include s stage con ri matrici nimi allo stage i (i = 1, s), cosicchN =
n1r1, M = msrs.La caratteristica chiave per classificare le reti multistage il tipo di schema di
interconnessione tra stage adiacenti. Lovvia condizionemiri = ni+1ri + 1 vale sempre, cio il
numero di outlet minello stage i pari al numero di inlet ni+1nello stage (i+1).

Si pu definire uno schema specifico di connessione, lEGS (Extended Generalized Shuffle),


che include come sottocasi un numero significativo di schemi. La coppia (j i, ki) rappresenta il
generico inlet (outlet) j della matrice k del generico stage i, con j i = 0, , n-1 (ji = 0, , m-1) e
ki = 1, , ri. Lo schema EGS tale che loutlet ji della matrice ki, cio loutlet (ji, ki), connesso
allinlet (ji+1, ki+1), con:

In pratica connetto gli m1 outlet della prima matrice con le prime m1 matrici dello stage
successivo, poi gli m2 outlet della seconda matrice con le m2 matrici dello stage successivo
partendo dalla m1 +1, e cos via. Se terminano le matrici dello stage successivo, si riparte
dalla prima (come con il modulo).
Una rete costituita da stage interconnessi mediante pattern EGS detta rete EGS. Le reti
multistage che includono s stage saranno descritte secondo il seguente tipo di
configurazione di pattern interstage:

Full connection (FC): se ogni matrice nello stage i (i = 2, 3, , s-1) connessa a tutte le
matrici negli stage(i-1) e (i+1);

Partial connection (PC): se ogni matrice nello stage i (i = 2, 3, , s-1) non connessa a tutte
le matrici negli stage (i-1) e (i+1);

Una rete EGS con mi ri+1 una rete FC (quindi ho pi outlet che matrici dello stage
successivo), mentre una rete PC se mi< ri+1.

Considero una rete quadrata NxN e numero gli inlet e gli outlet da 0 a N-1 in modo
sequenziale, dallinizio alla fine. Se la rete include pi di uno stage e la generica matrice
include b outlet, essendo etichettato ogni outlet della matrice da 0 a b-1, pu essere
identificato un grafo di fondo per la rete: ogni matrice mappata su un nodo di un grado, e
ogni collegamento interstage su un arco del grafo. I nodi e gli archi del grafo non sono
etichettati, quindi inlet e outlet della rete non devono per forza essere mappati sugli archi, in
quanto non portano informazioni. Di conseguenza, gli elementi pi esterni del grafo sono i
nodi che rappresentano la matrice del primo e dellultimo stage della rete. 2 grafi A e B sono
detti isomorfi se il grafo A pu essere reso identico al grafo B muovendo i suoi nodi, e quindi i
suoi archi. Il mapping cos ottenuto tra i nodi nella stessa posizione nei 2 grafi originali esprime
lisomorfismo dei grafi. Una rete una struttura pi complessa di un grafo, in quanto un
percorso I/O descritto in generale non solo da una sequenza di nodi (matrici), ma anche
attraverso una serie di etichette che identificano gli outlet di una matrice. Pertanto un
isomorfismo tra le reti pu essere definito considerando letichettatura della matrice di
output. 2 reti A e B sono dette isomorfe se, rietichettando inlet, outlet e matrici della rete A
con le rispettive etichette della matrice B, la rete A pu essere resa identica alla rete B
muovendo le sue matrici, e di conseguenza i suoi collegamenti. Rietichettare significa
aggiungere unopportuna permutazione di inlet e outlet alla rete A. Lisomorfismo richiede
che la topologia della rete modificata A abbia le stesse etichette della matrice di output
della rete B per matrici nella stessa posizione, cio un isomorfismo che mantiene le etichette.
Il mapping cos ottenuto tra inlet, outlet e matrici nelle 2 reti esprime lisomorfismo delle reti. In
pratica, poich le permutazioni esterne da aggiungere sono arbitrarie, lisomorfismo delle
reti pu essere provato semplicemente muovendo le matrici, e i collegamenti, in modo che
le topologie delle 2 reti tra il primo e lultimo stage siano identiche. Facendo riferimento alla
propriet di rete, possono essere definiti 3 tipi di relazione:

Isomorfismo: 2 reti sono isomorfe se si mantiene tra loro un isomorfismo che conserva le
etichette;

Equivalenza topologica: 2 reti sono topologicamente equivalenti se esiste un isomorfismo tra


i grafi sottostanti delle 2 reti;

Equivalenza funzionale: 2 reti A e B sono funzionalmente equivalenti se effettuano le stesse


permutazioni, cio PA = PB.

Due reti isomorfe sono anche topologicamente equivalenti (mentre non vale il viceversa). In
generale 2 reti isomorfe non sono funzionalmente equivalenti, ma lo diventano se sono
anche non-blocking (poich entrambe effettuano le stesse N! permutazioni). In 2 reti
isomorfe si richiede lo stesso numero di componenti, non in 2 reti funzionalmente equivalenti.

Considero 2 reti A e B:

Queste sono topologicamente equivalenti, poich il loro grafo sottostante lo stesso, ma


non sono isomorfe, poich non esiste un isomorfismo che mantiene le etichette tra A e B.
Infatti, se vengono mosse le matrici nella rete A, si possono ottenere le due reti A e A, che
sono simili a B ma non uguali: A ha i nodi con la stessa etichetta, ma i link in uscita da H sono
scambiati, se confrontati con gli analoghi in uscita da Y, mentre A ha la stessa topologia di
B, ma con le etichette di H scambiate rispetto a Y. Daltra parte le reti A e A sono isomorfe
alla rete B.

Le 2 reti A e B non sono funzionalmente equivalenti, poich, ad esempio, le connessioni (0,0)


e (1,1) possono appartenere alla stessa permutazione nella rete A, ma non vero per la rete
B. Le seguenti sono 2 reti isomorfe e funzionalmente equivalenti:

Le reti isomorfe hanno lo stesso numero di elementi di rete, mentre le reti topologicamente
equivalenti hanno lo stesso numero di matrici. Un metodo utile per lanalisi delle reti
multistage il grafo del canale (channel graph). Il grafo del canale associato con ogni
coppia inlet/outlet ed dato dalla sequenza di elementi di rete che sono attraversati per
raggiungere loutlet scelto dallinlet desiderato. Le matrici vengono rappresentate da nodi,
e i collegamenti da archi. Pertanto il numero di cammini I/O nel grafo rappresenta il numero
di modi differenti in cui un outlet pu essere raggiunto da un inlet. Una rete in cui un singolo
grafo associato con tutte le coppie inlet/outlet detta rete regolare. In un grafo regolare
tutti i nodi che appartengono allo stesso stage hanno lo stesso numero di archi in ingresso e
in uscita.

I grafi associati alle 2 reti isomorfe a sinistra sono rappresentati nella figura a destra. In
particolare, il primo grafo associato, nella rete A, con le coppie inlet/outlet che terminano
sugli outlet e o f (y o z nella rete B), mentre il secondo grafo rappresenta il percorso I/O che
conduce agli outlet g o h nella rete A (w o x nella rete B). Infatti 3 matrici sono attraversate
nel caso precedente, coinvolgendo entrambe le 2 matrici middle-stage, mentre un single
path connette inlet e outlet attraversando solo 2 matrici nel caso precedente.

Vale la pena esaminare come pu essere costruita una rete crossbar mediante blocchi pi
piccoli, sfruttando speciali elementi di connessione detti splitter (di dimensione 1xK) e
combiner (Kx1), entrambi di costo K. Entrambi sono in grado di stabilire una connessione alla
volta. La rete crossbar-tree una rete di interconnessione funzionalmente equivalente alla
rete crossbar, ed SNB: include N splitter e N combiner, interconnessi mediante uno schema
EGS e con costo C= 2N2.

Lalbero di crossbar pu essere costruito anche usando splitting multistage e strutture di


combinazione basate sulluso di splitter 1x2 e combiner 2x1.
Lindice di costo di tale struttura, detta crossbar binary trie network, C = 4N2-4N.

Lo splitter ha in generale una struttura di questo tipo:

In unimplementazione single-stage, ha un costo pari al numero di crosspoint, mentre in una


multistage composta da splitter binari ha un costo pari al numero di switch. Questo uno
schema a splitter binario completo:

In uno schema di questo tipo, sXP vale 1, e il numero di crosspoint pari a N, mentre s SE vale
log2N, e il numero di switch (N-1). Questo invece uno schema di splitter binario
incompleto:

In uno schema di questo tipo, sXP vale 1, e il numero di crosspoint pari a N, mentre s SE vale
lapprossimazione per eccesso di log2N, e il numero di switch (N-1).
Il combiner ha invece questa struttura:

Gli splitter 1xK e i combiner Kx1 permettono la costruzione di reti multistage non-blocking,
come ad esempio la crossbar tree, in cui non vengono condivisi elementi tra le differenti
coppie I/O. Una crossbar tree pu essere costruita utilizzando splitter e combiner pi piccoli
mediante uno stage centrale di switching. Lobiettivo quello di avere uno stage centrale
con il costo minore e che garantisce una piena accessibilit input/output, e ci suggerisce
un insieme di matrici crossbar, ognuna con la minima dimensione possibile. In generale, se si
ha uno stage di espansione di dimensione 1xK, con K = 2k[k = 1, , log2(N-1), quindi K = 2, ,
N-1], ogni inlet ha accesso a K matrici di switching, da cui tutti gli N outlet possono essere
raggiunti, cosicch ogni matrice di switching ha un numero di outlet (e inlet) almeno pari a
N/K (ogni matrice nello stage di switching connessa a splitter e combiner con al massimo
un link).Adottando lo schema EGS per le 2 connessioni interstage, che fornisce una
connessione ciclica per gli elementi dello stage successivo, segue che la dimensione di tale
matrice sufficiente a garantire piena accessibilit:

Poich il numero di tali matrici KN/(N/K) = K2, il numero di crosspoint (e quindi il costo C)
N2 + 2NK. Gli elementi condivisi sono non-blocking, e quindi la rete SNB.

6.1 FULLY CONNECTION MULTISTAGE NETWORK


La descrizione delle reti FC (Fully Connection) assume come regola generale che le matrici
(reti crossbar) negli stage adiacenti sono sempre connesse da un link singolo. Quindi il
modello generale di una rete multistage NxM FC rappresentato in questa figura [n i = ri-1, mi-
1 = ri (i = 2, , s)]:
Le reti FC sono un sottocaso delle reti EGS con mi = ri+1 (i = 1, , s-1). Considero ora i casi di
reti a 2 e 3 stage (cio s = 2, 3). Questa una rete 2-stage:

La rete ha chiaramente piena accessibilit, ma allo stesso tempo blocking. Infatti non pu
esserci pi di una connessione tra 2 matrici in stage differenti. Solo lutilizzo di collegamenti
multipli tra ogni coppia di matrici negli stage differenti pu fornire assenza di blocking.

Questa invece una rete a 3 stage:

Adottando 3 stage in una rete multistage, rispetto a una disposizione a 2 stage, si introduce
un nuovo importante concetto: sono possibili differenti cammini I/O tra una qualsiasi coppia
di matrici nel primo e nel terzo stage, ognuna coinvolgendo una differente matrice nel
secondo stage. La piena connessione dei 2 schemi interstage garantisce la piena
accessibilit. Dati N e M, bisogna studiare come realizzare le reti interstage per minimizzare i
costi. In particolare, il numero di matrici nel secondo stage determina la condizione di non-
blocking. Il controllo di reti FC multistage richiede in generale un dispositivo di
memorizzazione centralizzato, che mantiene le informazioni riguardo gli stati occupato/idle
di tutte le terminazioni di rete e dei linkinterstage. Cos una nuova connessione tra un inlet
idle e un outlet idle di una rete non-blocking pu essere facilmente trovata visitando in
modo appropriato la mappa di connessioni di rete, mentre si richiedono in generale
algoritmi pi complessi nelle reti rearrangeable per scegliere le connessioni da muovere e il
loro nuovo path.

6.2 PARTIAL CONNECTION MULTISTAGE NETWORK


La classe di reti Partial Connection (PC), in cui ogni matrice degli stage intermedi connessa
solo a un sottoinsieme delle matrici dei 2 stage adiacenti, sta diventando sempre pi
importante nelle reti odierne basate su packet switching. Le interconnection networks di
questi scenari devono trasportare grandi quantit di traffico, e le permutazioni di rete
devono avvenire con un rate molto alto, nellordine di pochi microsecondi. Quindi un
requisito obbligatorio per costruire tali reti di interconnessione di dimensione significativa
sembra essere la possibilit di un alto grado di elaborazione parallela nella rete. Il risultato
raggiunto mediante reti PC multistage, in cui le matrici di ogni stage sono in generale molto
piccole, di solito tutte della stessa dimensione, e sono fornite di una capacit di
elaborazione autonoma. Queste matrici, dette switching elements (SE), hanno in generale
dimensioni che sono potenze di 2. Se non segnalato altrimenti, in seguito si far riferimento a
SE di dimensione 2x2. Facendo riferimento alla loro capacit elaborativa, ogni SE in grado
di fare il routing dei pacchetti in modo autonomo. Tale propriet detta self-routing dei
pacchetti. Le reti che eseguono tale compito sono strutture blocking dette reti banyan. Tali
reti, che forniscono un singolo path per ogni coppia inlet-outlet, possono essere
adeguatamente promosse, per ottenere reti RNB e SNB. Le reti di smistamento (sorting)
hanno un ruolo chiave nello switching di pacchetti ad alta velocit, poich la classe di reti
RNB include anche strutture ottenute mettendo in cascata una rete sorting e una rete
banyan.

Banyan networks: si definiscono 4 permutazioni base, cio il mapping uno a uno tra inlet e
outlet in una generica rete NxN, che sar usata come blocco di base per le reti self-routing.
Indichiamo come a = an-1 a0(n = log2N) un generico indirizzo con cifre in base 2, dove an-1
il bit pi significativo. Si definiscono ora 4 permutazioni base di rete, che saranno usate per
definire le reti banyan base. Loutlet di rete connesso al generico inlet a specificato da
una delle seguenti funzioni:
Le permutazioni e -1 sono dette rispettivamente h-shuffle e h-unshuffle, e una lo
specchio dellaltra, (se linlet a connesso alloutlet b nello shuffle, linlet b connesso
alloutlet a nellunshuffle). La permutazioneh-shuffle (h-unshuffle) consiste in uno shift
circolare a sinistra (destra) di una posizione degli h+1 bit meno significativi dellindirizzo
dellinlet. Se h = n-1, allora lo shift circolare sullintero indirizzo dellinlet e le due
permutazioni sono dette shuffle e unshuffle perfetto. detta permutazione a farfalla e j
permutazione identit. Si ha che 0 = 0 = j. Si pu verificare che h corrisponde a k = 2n-h-1
permutazioni perfect shuffle, ognuna applicata a N/k inlet/outlet di rete adiacenti (solo gli
h+1 bit meno significativi sono ruotati in h). Si possono esprimere le permutazioni di shuffle e
unshuffle perfetti usando indirizzi in base 10:

Possono essere definite altre 2 permutazioni:

La prima detta bit switch, la seconda detta bit reversal.

Un esempio di reti PC sono le reti banyan: sono strutture multistage di semplici elementi di
switching, con un singolo percorso I/O con piena accessibilit, con b x b elementi di
switching -> ci sono n stage, con n = logbN. Gli elementi di switching hanno dimensione bb,
con b = 2k, tipicamente k = 1:

Una rete banyan ha unalta capacit di elaborazione in parallelo: ogni pacchetto


preceduto da unetichetta (tag) per il self-routing, che codifica lindirizzo delloutlet. Un
indirizzo di inlet e un tag determinano in modo univoco un percorso attraverso la rete. Il
descrittore del percorso per un dato outlet sempre lo stesso, e non dipende dallo specifico
inlet. Le regole di routing in ogni elemento dipendono dalla topologia della rete. Ci
nonostante, bisogna prevenire i conflitti nei percorsi I/O dei diversi pacchetti.

7. REARRANGEABLE NON BLOCKING NETWORK (RNB)


(Noi facciamo solo le FC, ci sarebbero anche le PC ma non le facciamo) In una rete FC a
2 stage non ha senso parlare di riarrangiabilit, poich ogni connessione I/O tra un inlet di
rete e un outlet di rete pu essere settata in un solo modo (coinvolgendo uno dei
collegamenti tra le 2 matrici nel primo e nel secondo stage, che collegano inlet e outlet di
rete). Pertanto la condizione di riarrangiabilit in questo tipo di rete la stessa delle reti non-
blocking. Considero ora una rete a 3 stage:

Una rappresentazione utile e sintetica dei percorsi nella rete rappresentata tramite la
notazione a matrice detta matrice di Paull. Una matrice di Paull ha r1 righe e r3 colonne,
rispettivamente tante quante le matrici nel primo e nellultimo stage.
Le voci della matrice sono i simboli dellinsieme {1, 2, , r2}, di cui ogni elemento rappresenta
una delle matrici dello stage centrale. Il simbolo a nella voce (i, j) significa che un inlet della
matrice i del primo stage connessa a un outlet della matrice j dellultimo stage attraverso
la matrice a dello stage centrale. Ogni voce della matrice pu contenere da 0 a r 2 elementi
distinti. Questo un esempio:

In base alla sua definizione, una matrice di Paull soddisfa sempre le seguenti condizioni:

- Ogni riga contiene al massimo il minimo tra (n, r2) simboli distinti;

- Ogni colonna contiene al massimo il minimo tra (r2, m) simboli distinti;

Infatti, il numero di connessioni attraverso una matrice del primo stage (ultimo stage) non
pu superare o il numero degli inlet (outlet) della matrice, o il numero dei percorsi (uguale al
numero delle matrici dello stage centrale) possibili per raggiungere gli outlet (inlet) della
rete. Inoltre, ogni simbolo non pu apparire pi di una volta in una riga o in una colonna,
poich solo un collegamento connette le matrici di stage adiacenti. Il pi importante
risultato teorico sulle reti riarrangiabili a 3 stage dato dal teorema di Slepian-Duguid: una
rete a 3 stage riarrangiabile se e solo se r2 max (n, m).

Dimostrazione: assumiamo, senza perdere di generalit, che la connessione da stabilire sia


tra un inlet della matrice i del primo stage e un outlet della matrice j dellultimo stage.
Quando viene settata una connessione, le matrici i e j stanno gi supportando al massimo
rispettivamente (n-1) e (m-1) connessioni. Se r2> max (n-1, m-1), allora manca
almeno uno degli r2simboli nella riga i e nella colonna j. Daltra parte, per settare una nuova
connessione i-j, una delle 2 condizioni deve essere vera:

C un simbolo a non trovato sia nella riga i che nella colonna j (viene scelta la
matrice a per i-j);

C un simbolo a nella riga i non trovato nella colonna j, e c un simbolo b


nella colonna j non trovato nella riga i (connessioni conflittuali possono essere
riarrangiate partendo da a oppure b per settare la connessione i-j attraverso a oppure
b).

Se vale la prima condizione, la nuova connessione viene settata attraverso la matrice del
middle-stage a. Quindi a scritto nella voce (i,j) della matrice di Paull, e le connessioni
stabilite non devono essere ristabilite.

Se vera solo la condizione 2, la nuova connessione i-j pu essere settata solo dopo aver
riarrangiato alcune connessioni gi esistenti. Ci realizzato scegliendo in modo arbitrario
uno dei 2 simboli a e b (scelgo a) e costruendo una catena di simboli in questo modo.

Cerco il simbolo b nella stessa colonna (j2) in cui appare il simbolo a nella riga i. Se lo trovo
(ad esempio nella riga i3), allora cerco a nella stessa riga. Se trovo a nella stessa riga (ad
esempio j4), allora cerco b nella stessa colonna. Continuo cos finch non riesco a trovare un
simbolo a oppure b. A questo punto posso riorganizzare le connessioni identificate dalla
catena i, j2, i3, j4, sostituendo il simbolo a con b nelle righe i, i3, e il simbolo b con a nelle
colonne j2, j4, Con questo approccio i simboli a e b appaiono al massimo una sola volta in
ogni riga e colonna, e il simbolo a non appare pi nella riga i. Cos la connessione i-j pu
avvenire attraverso la matrice a del middle-stage.
Lalgoritmo di riarrangiamento funziona solo se si pu dimostrare che la catena non termina
in un elemento della matrice di Paull che appartiene o alla riga i o alla colonna j, poich ci
renderebbe impossibile il riarrangiamento. Si pu rappresentare la catena di simboli nella
matrice di Paull come un grafo, in cui i nodi rappresentano le matrici del primo e terzo stage,
e gli archi rappresentano le matrici del secondo stage.

Nella figura precedente, c e k rappresentano lultima matrice attraversata dalla catena nel
secondo e nel primo/terzo stage. Bisogna dunque dimostrare che k i, j. Definisco catena
apertauna catena in cui il primo e lultimo nodo appartengono a stage differenti, e chiusa
se appartengonoallo stesso. E facile verificare che una catena aperta (chiusa) attraversa le
matrici del secondo stage un numero dispari (pari) di volte. Di conseguenza, una catena
aperta (chiusa) include un numero dispari (pari) di archi. Infatti se c = a, kj per la condizione
2, e ki, poich risulterebbe in una catena chiusa C1 con un numero dispari di archi, o una
catena aperta C2 con un numero pari di archi, che impossibile. Analogamente, se c = b,
ki, per la condizione 2, e kj, poich kj risulterebbe in una catena aperta C 1 con un
numero pari di archi, o una catena chiusa C2 con un numero dispari di archi, che
impossibile.

In una rete quadrata a 3 stage, r1 = r3 = N/n, e la regola di Slepian-Duguid per una rete
riarrangiabile diventa r2 = n. Il costo C per questa rete risulta pari a:

La condizione per avere il costo minimo si ottiene ponendo uguale a 0 la derivata del costo
C rispetto a n: in questo modo si ottiene che la condizione per avere il costo minimo n =
(N/2). Ci fornisce un costo C per una rete RNB a 3 stage pari a 2N(2N). Quindi una rete
RNB Slepian-Duguid ha un costo di circa la met di una rete Clos SNB.Dal teorema di
SlepianDuguid segue che il numero massimo di riarrangiamenti al set-up di ogni nuova
connessione pari a r1 + r3 2. Infatti la catena che si crea visita al massimo r1 -1 righe e r3 1
colonne. Di conseguenza il numero massimo di simboli nella catena 2 min(r1, r3) 2. Questa
funzione ha valore massimo quando r1 = r3 = r, quindi il numero massimo 2r-2. Il teorema di
Paull stabilisce che il numero massimo di connessioni da riarrangiare in una rete Slepian
Duguid m = min (r1, r3) -1.

Dimostrazione: assumo che r1 r3,cio che le righe siano pi delle colonne nella matrice di
Paull. A questo punto possono essere costruite 2 catene di simboli: (a, b, a, b, ) partendo
da a nella riga i, e (b, a, b, a, ) partendo da b nella colonna j. Si ottengono quindi
rispettivamente le catene i, j2, j3, j4, e j, i2, i3, i4, Le catene crescono in modo alternato
(la lunghezza delle catene ha differenza di massimo ununit), e la catena che smette di
crescere viene riarrangiata. Il numero massimo di step di crescita r3 -2, poich a ogni step
viene visitata una colonna da entrambe le catene, e le colonne di partenza che includono
simboli iniziali a e b non sono visitate. Quindi il numero massimo di connessioni da riarrangiare
r3 -1. Se si ripete il ragionamento analogo per r1 r3, si trova che il numero massimo pari al
minimo tra (r1, r3) -1. Quindi, se r1 = r3 = r, allora il numero massimo diventa r-1. Considero un
esempio:

Lesempio mostra una matrice di Paull per una rete a 3 stage 24x25, con r1 = 4 e r3 = 5, m
(outlet) = 5, n = 6 (inlet). La condizione di riarrangiabilit dice che r 2 6 [r2 max (n, m)].
Rappresento queste matrici con i simboli {a, b, c, d, e, f}. Nello stato di rete rappresentato
dalla figura, si richiede una nuova connessione tra le matrici 1 e 1 del primo e dellultimo
stage. Le matrici c e d dello stage centrale sono scelte per operate il riarrangiamento. Se la
procedura di riarrangiamento si basa soltanto su una catena, e il simbolo di partenza c
nella riga 1, si ottiene lo stato finale, rappresentato dalla figura seguente, con 5
riarrangiamenti.
Tuttavia, applicando il teorema di Paull, e quindi generando 2 catene alternative di simboli,
si realizza che la catena che comincia dal simbolo d nella colonna 1 si ferma dopo il primo
step. In questo modo il numero totale di riarrangiamenti 2.

Si poteva scegliere il simbolo e piuttosto che d, poich entrambi mancano nella colonna 1.

8. STRICTLY NON BLOCKING NETWORK (SNB)


Sono reti in cui sempre possibile stabilire una nuova connessione tra un inlet idle e un outlet
idle, indipendentemente dalle permutazioni della rete al momento del set-up. Considero
come le reti FC, includendo 2 o 3 stage di piccole matrici crossbar, possano essere fatte non-
blocking. Il modello di rete FC a 2 stage include r1 matrici nr2 al primo stage e r2 matrici r1m
al secondo stage. La rete pienamente accessibile, ma nel contempo blocking. Infatti, se
scegliamo una coppia di matrici arbitrarie al primo e al secondo stage, dette Ai e Bj, non
pu essere stabilita pi di una connessione tra gli n inlet di Ai e gli m outlet di Bj in un dato
tempo. Poich questo limite dovuto al singolo link tra le matrici, si pu ottenere una rete FC
non-blocking a 2 stage dilatando in modo appropriato lo schema di connessione interstage,
cio fornendo d collegamenti tra una qualsiasi coppia di matrici nei 2 stage.

Una rete FC di questo tipo un sottocaso di una rete EGS con mi = dri+1 (i = 1, , s-1). Il
fattore minimo d di dilatazione del collegamento richiesto per una rete non-blocking dato
da d =min (n, m), poich non possono esserci pi di d connessioni tra Ai e Bj allo stesso
tempo. Il costo della rete per una rete non-blocking a 2 stage ovviamente d volte il costo
di una rete a 2 stage non dilatata. Nel caso di una rete quadrata (N = M,n = m, r1 = r2 = r), si
ottiene un indice di costo:

Quindi una rete non-blocking a 2 stage ha un costo doppio della rete crossbar.

Lo schema generale di una rete a 3 stage il seguente, in cui n e m indicano il numero di


inlet e outlet delle matrici del primo (A) e del terzo (C) stage.

Ladozione di 3 stage in una rete multistage introduce unimportante caratteristica: sono


possibili percorsi I/O differenti tra qualsiasi coppia di matrici Ai e Cj, ognuna occupata con
una differente matrice nel secondo stage (B). 2 percorsi I/O possono condividere i
collegamenti interstage, ad esempio quando 2 inlet (outlet) appartengono alla stessa
matrice A (C). Quindi si richiede un algoritmo di controllo per la rete per stabilire il percorso
I/O per le nuove connessioni, in modo da non influire sulle connessioni I/O gi esistenti. La
piena accessibilit garantita implicitamente della piena connessione dei 2 schemi
interstage. Perci, r2 = 1 descrive la condizione di piena accessibilit. La regola pi generale
a proposito delle reti FC non-blocking a 3 stage con valori n1 = n e m3 = m dovuta al
teorema di Clos: una rete a 3 stage SNB se e solo se r2 n+m-1 (se n = m,r2 = 2n 1).

Dimostrazione: considero 2 matrici tagged nel primo (A) e ultimo (C ) stage con la
massima occupazione, ma che permettono di stabilire una nuova connessione. Sono gi
stabilite (n-1) e (m-1) connessioni nelle matrici A e C, e deve essere stabilita una connessione
addizionale tra gli ultimi input e output idle nelle matrici tagged:
La peggior condizione di caricamento della rete corrisponde ad assumere un pattern delle
matrici del secondo stage per quei (n-1) e (m-1) path in modo che le n-1 matrici del
secondo stage, che supportano le (n-1) connessioni attraverso la matrice A, siano diverse
dalle m-1 matrici del secondo stage che supportano le (m-1) connessioni attraverso la
matrice C. Questo significa che non viene stabilita nessunaltra connessione tra le matrici A e
C. Poich serve unaltra matrice del secondo stage per stabilire la nuova connessione
richiesta, sono necessarie (n-1) + (m-1) + 1 = n+m-1 matrici nel secondo stage per rendere
strettamente non-blocking la rete a 3 stage.

Il costo C di una rete quadrata non-blocking (N = M, n = m, r1 = r3) :

Il costo della rete per un dato N dipende quindi dal numero r 1 delle matrici del primo stage,
cio dal numero di inlet per la matrice del primo stage, poich N = nr 1. Il costo minimo si
ottiene ponendo uguale a 0 la derivata del costo C rispetto a n: si dimostra che n = (N/2).
Perci il minimo costo C di una rete SNB a 3 stage risulta pari a:

A differenza di una rete a 2 stage, una rete SNB a 3 stage pu diventare pi economica di
una rete crossbar (a 1 stage): questo si verifica per una rete a 3 stage a costo minimo
quando il numero N di inlet di rete soddisfa la condizione N > 2+22. A partire da N = 24, gli
inlet sono un numero sufficiente per avere una rete a 3 stage pi economica di una rete
crossbar. Il costo di una rete non-blocking circa il doppio di una rete riarrangiabile [che ha
costo 2N(2N)].
Reti con pi di 3 stage possono essere costruite iterando la costruzione di reti standard a 3
stage: ad esempio una rete a 5 stage non-blocking a senso stretto pu essere costruita in
modo ricorsivo progettando ogni matrice del secondo stage come una rete non-blocking a
3 stage. La ricorsione, che pu essere ripetuta un numero arbitrario di volte per generare reti
con un numero dispari di stage s, permette la costruzione di reti che diventano meno
costose quando N cresce oltre una data soglia. In generale una rete quadrata (quindi
simmetrica rispetto allo stage centrale) con un numero dispari di stage s (s 3) richiede che
siano specificati(s-1)/2 parametri, cio n1 = ms, n2 = ms-1, , n(s-1)/2 = m(s+3)/2. (in base alla
regola di Clos:mi = 2ni -1 [i = 1, , (s-1)/2]). Per una rete a 5 stage (s = 5), la scelta ottima dei 2
parametri n1, n2 pu essere determinata ponendo pari a 0 la derivata prima del costo totale
rispetto a n1 e n2. Le due condizioni sono:

Poich una tale procedura difficilmente espandibile a valori grandi di s, esiste unaltra
procedura generale ricorsiva che parte da una struttura a 3 stage, e che espande ogni
matrice dello stage centrale, secondo la regola di Clos, in una struttura a 3 stage, e cos via.
Questa struttura non minimizza il costo di rete, ma richiede soltanto il verificarsi di una sola
condizione, cio il parametro n1 = N2/(s+1). Una rete a 3 stage ha costo:

Uno schema a 5 stage ha invece costo pari a:


Questa procedura pu essere iterata per costruire una rete di Clos ricorsiva a s stage (s
dispari), con indice di costo pari a:

9. INPUT-BUFFERED SWITCHES VIRTUAL OUTPUT QUEUING


La tecnologia di switching a lunghezza fissa largamente accettata come un approccio
efficiente per raggiungere alta efficienza di switching per switch di pacchetto ad alta
velocit. I pacchetti IP di lunghezza variabile sono segmentati in celle di lunghezza fissa agli
ingressi e sono riassemblati alle uscite. Quando sono stati costruiti per la prima volta switches
di pacchetto ad alta velocit, vennero usati o buffer interni condivisi o buffer di ingresso, e si
sofferto il problema della limitazione del throughput. Come risultato, storicamente la
maggior parte della ricerca si focalizzata sull'architettura di buffering in uscita. Poich
liniziale domanda di capacit degli switch era nell'intervallo di poche centinaia di Mbit/s
fino a pochi Gbit/s,gli switch con buffer alluscita sembravano una buona scelta a causa
della loro alta performance throughput/ritardo e del loro utilizzo della memoria (per gli
switch a memoria condivisa). Nei primi anni di sviluppo degli switch ATM, gli switch con buffer
alluscita (compresi gli switch a memoria condivisa) dominavano il mercato. Tuttavia, poich
la domanda di switch ad alta capacit cresciuta rapidamente (aumentava o il rate di
linea o il numero di porte dello switch), di conseguenza aumentato il requisito di velocit
per la memoria. Ci limita la capacit degli switch con buffer alluscita. Sebbene gli switch
con buffer alluscita hanno unottima performance ritardo/throughput per tutte le
distribuzioni di traffico, lo speed-up di N volte per la velocit di operazioni in memoria limita
la scalabilit di tale architettura. Per questo motivo, al fine di costruire switch a larga scala e
con velocit maggiore, ci si focalizzati su switch con buffer allingresso, o con buffer
combinati ingresso-uscita, con scheduling avanzato e tecniche di routing. I buffer allingresso
sono richiesti per switching ad alta velocit, poich la velocit di operazioni interne solo
poco pi alta della velocit di input. Ma ci sono 2 problemi: la limitazione del throughput
dovuta allHOL blocking (58,6 % con buffering FIFO) e la necessit di celle di arbitrato
(arbitrating cells) a causa della contesa sulla porta di uscita. Il primo problema pu essere
aggirato aumentando moderatamente la velocit di operazione della switch fabric o il
numero di routing path per ogni porta di output (cio permettendo a pi celle di arrivare
alla stessa output port nello stesso timeslot). Il secondo problema risolto da schemi veloci di
arbitrato (scheduling). Secondo la legge di Moore, la densit di memoria raddoppia ogni 18
mesi. Ma la velocit di memoria aumenta con un rate molto pi lento. Ad esempio, la
velocit di memoria 4 ns per la RAM statica CMOS, rispetto a 5 ns di un paio di anni fa.
Daltra parte, la velocit dei circuiti logici aumentata con un rate molto maggiore di
quella della memoria. Recentemente, la maggior parte della ricerca ha riguardato
lideazione di schemi di scheduling pi veloci per arbitrare le celle dalle porte di ingresso a
quelle di uscita. Alcuni schemi di scheduling considerano perfino lo scheduling per flusso alle
porte di ingresso, per soddisfare i requisiti di ritardo/throughput per ogni flusso, e ci
ovviamente aumenta la complessit e il costo dellimplementazione. Lo scheduling delle
celle basato su flussi alle porte di ingresso molto pi difficile di quello alle porte di uscita. Ad
esempio, in una porta di output, celle (o pacchetti) possono essere etichettati con valori
basati sulla banda allocata e trasmessi in ordine crescente in base al valore delletichetta.
Tuttavia, in una porta di input, lo scheduling delle celle deve tenere conto della contesa
delle porte di uscita. Ci rende il problema cos complicato che non ancora stato ideato
uno schema possibile.

9.1 SCHEDULING IN VOQ-BASED SWITCHES


Il modello di switch con buffer allingresso mostrato in figura.

Una coda FIFO viene implementata di fronte a ogni input della switch fabric, ed usata per
memorizzare i pacchetti in ingresso. A causa dellHOL blocking, il throughput totale limitato
al 58,6% per il traffico uniforme, e ancora peggiore nel caso di traffico non uniforme. A
causa delle limitazioni del throughput nella struttura di coda FIFO, si usa una struttura a coda
output virtuale (VOQ) per eliminare lHOL blocking e quindi aumentare il throughput del
sistema.
In ogni buffer di ingresso ci sono N code FIFO (N la dimensione dello switch), ognuna
corrispondente a una porta output, o N2 code totali. In altre parole, i pacchetti/celle che
arrivano alla porta input i e destinate alla porta output j sono salvate nella VOQ i,j. La cella
HOL di ogni VOQ pu essere schedulata per la trasmissione in ogni timeslot. Tuttavia, sar
scelta per la trasmissione al massimo una cella tra le N VOQ di ogni buffer. Larrivo della cella
alla porta input i un processo stocastico Ai(t). Allinterno di ogni timeslot, c al massimo un
arrivo per ogni porta di input. La cella che arriva alla porta i e destinata alla porta output j
viene messa nella coda Qij. Al timeslot t, la lunghezza della coda Qij indicata come Lij(t).
Aij(t) indica il processo di arrivo dallinput i alloutput j con un rate di arrivo ij, e A(t) = {Aij(t), 1
i N e 1 j N}. Se gli arrivi a ogni porta di input e output sono ammissibili, cio

allora il set A(t) ammissibile, altrimenti non lo . La matrice di rate di arrivo si indica con =
[ij]. La matrice di servizio S(t) = [s ij(t)]NN rappresenta i matching al timeslot t con ogni
elemento:

Larrivo di una cella, che un processo indipendente, soddisfa le seguenti condizioni:

- Gli arrivi delle celle a ogni porta di ingresso sono indipendenti e identicamente distribuiti;

- Gli arrivi a una porta sono indipendenti rispetto alle altre porte di input.

Se i rate di arrivo sono uguali, e le distribuzioni sono uniformemente distribuite tra tutte le
porte, allora la distribuzione detta uniforme. Per valutare le performance dello switch si
analizzano throughput e ritardo. Il throughput il numero medio di celle trasmesse in un
timeslot, e il ritardo il tempo trascorso da una cella dallarrivo alla partenza. Uno switch
detto stabile se la lunghezza attesa della coda limitata (<). Se uno switch stabile sotto
qualunque input di traffico ammissibile e indipendente, allora lo switch pu raggiungere un
throughput del 100%. Si richiedono sofisticati algoritmi di scheduling per schedulare le celle
nella switch fabric in ogni timeslot. Questi schemi possono essere modellizzati come un grafo
bipartito. Larco tra una porta input e una portaoutput indica che ci sono richieste per
trasmettere celle tra questi. Uno scheduler sceglie un insieme di archi (detti matches), fino a
N2, dove ogni input connesso al massimo a un output, e ogni output connesso al
massimo a un input. Un matching input-output pu essere rappresentato come una matrice
di permutazione M = (Mi, j), i, j N, dove Mi,j = 1 se linput i matchato con loutput j. Per
scegliere un appropriato algoritmo di scheduling, bisogna considerare parecchi fattori:

Efficienza: lalgoritmo dovrebbe ottenere un alto throughput e basso ritardo, cio scegliere
linsieme di match con pi archi in ogni timeslot;

Correttezza: lalgoritmo dovrebbe evitare la starvation (impossibilit di ottenere le risorse


desiderate di ogni VOQ);

Stabilit: loccupazione attesa di ogni VOQ dovrebbe rimanere finita per ogni pattern di
traffico ammissibile;

Complessit implementativa: lalgoritmo dovrebbe poter essere implementato facilmente in


hardware. Unalta complessit causer un lungo tempo di scheduling, che limita
ulteriormente la velocit dello switch.

Con questi obiettivi, sono stati proposti diversi algoritmi di scheduling.

9.2 MAXIMUM MATCHING


9.2.1 Matching di peso massimo
In un grafo bipartito, si definisce wi,j come il peso dellarco ei,j dallinput i alloutput j. Il peso
della VOQ si riferisce di solito alla lunghezza (numero di pacchetti nel backlog) della VOQ. Il
matching di peso massimo (MWM) M per un grafo bipartito quello che massimizza wi,j per
tutti gli archi ei,jche appartengono a M. Un algoritmo MWM raggiunge un throughput pari al
100% per ogni traffico ammissibile. MWM pu essere risolto in un tempo O(N3), che troppo
grande per uno switch ad alta velocit. Scegliendo con attenzione il peso di ogni arco, o
utilizzando approssimazioni di MWM, si pu ridurre la complessit nel calcolo dei MWM. Gli
algoritmi proposti sono LQF (longest queue first) e OCF (oldest cell first). LQF usa la lunghezza
della coda Lij(t) come peso wij(t), mentre OCF usa il tempo di attesa della cella HOL. Sotto un
traffico ammissibile, pu verificarsi starvation per LQF, ma non per OCF. Per ridurre la
complessit di LQF, si propone lalgoritmo LPF (longest port first), con il peso w ij(t) definito
come loccupazione della porta:
dove Ri(t) = j=1N Lij(t), Cj(t) i=1N Lij(t). Poich il peso di LPF non uguale alla lunghezza della
coda, questo ha il vantaggio del matching di dimensione massima (MSM) e MWM.

9.2.2 Matching di peso massimo approssimato


E stata proposta una classe di approssimazione, 1-APRX. Il peso di uno schedule ottenuto da
un algoritmo B sia WB. Sia W* il peso del MWM per lo stesso stato di switch. B un 1-APRX per
MWM se vale la seguente propriet: WB W* f (W*), dove f() una funzione sub-lineare,
cio limx [ f (x)/x] = 0 per ogni stato di switch. TEO: Sia W*(t) il peso del MWM al tempo t,
rispetto allo stato di switch Q(t)(dove Q(t) = [Qi, j(t)]) e Qi,j(t) indica il numero di celle nella
coda VOQi,j. Sia B un 1-APRX per MWM e WB(t) indica il peso al tempo t. B ha una propriet
per cui:

Allora, lalgoritmo di scheduling B stabile sotto ogni traffico di input ammissibile di variabili
indipendenti e identicamente distribuite di Bernoulli.

9.2.3 Maximum Size Matching


Il matching di dimensione massima (MSM) trova il match con il massimo numero di archi.
Ovviamente, MSM un caso speciale per MWM, quando il peso di ogni arco pari a 1. La
complessit di tempo di MSM O(N2.5). Si dimostrato che MSM porta al 100% del
throughput quando il traffico uniforme. Tuttavia, sotto un traffico non uniforme, pu
portare a una situazione di instabilit e di non correttezza, e addirittura alla starvation per
alcune porte.

9.3 MAXIMAL MATCHING


Un algoritmo di matching maximal porta al match maximal aggiungendo connessioni in
modo incrementale, senza rimuovere le connessioni messe in precedenza. In un match
maximal, se un input non vuoto non matchato con un qualsiasi output, tutti gli output di
destinazione delle celle in attesa in questo input devono essere matchati con gli altri input. In
generale, il match massimo ha meno archi matchati rispetto al MSM, ma pi semplice da
implementare. Gli algoritmi di matching maximal hanno una complessit di
implementazione pi bassa rispetto a MWM. Tuttavia, i risultati delle simulazioni mostrano che
il matching maximal raggiunge un throughput del 100% con un traffico uniforme, ma non
sotto un traffico non uniforme.E necessario uno speedup per garantire un throughput del
100% quando si usa un algoritmo di matching maximal. Uno switch con uno speedup di s
pu trasferire fino a s celle da ogni input e fino a s celle a ogni output in un singolo timeslot.
Uno switch a coda in uscita ha uno speedup di N, e uno switch a coda di ingresso ha uno
speedup di 1. Di solito, quando 1<s<N, lo switch detto a coda di input e output (CIOQ),
poich le celle devono essere bufferizzate agli input prima dello switching, cos come agli
output dopo lo switching. Sotto un qualsiasi traffico ammissibile, uno switch CIOQ che usa un
qualsiasi algoritmo di matching maximal raggiunge il throughput del 100% per un qualsiasi
speedup 2. Un modo per implementare il matching maximal quello di usare algoritmi che
usano iterazioni multiple per convergere a un match maximal. In ogni iterazione, al massimo
una connessione in pi viene aggiunta al match prima di ottenere il match maximal. Quindi
pu essere trovato un match maximal entro N iterazioni. Alcuni algoritmi di matching a
iterazione multipla convergono velocemente e richiedono un numero minore di iterazioni,
ad esempio log2N. La differenza principale tra i vari algoritmi il fondamento per la selezione
delle porte di input che concedono, e delle porte di output che accettano, quando c lo
scheduling.

9.3.1 Parallel Iterative Matching (PIM)


Lo schema PIM usa una scelta casuale per risolvere la contesa tra input e output. Le celle in
ingresso sono accodate in VOQ. Ogni iterazione consiste in 3 step: ci possono essere fino a N
iterazioni in ogni timeslot. Allinizio, tutti gli input e gli output non sono matchati, e solo quegli
input e output che non sono matchati alla fine di uniterazione sono idonei a partecipare
alla successiva iterazione. I 3 stage, che operano in parallelo, sono i seguenti:

Step 1: Request. Ogni input non matchato invia una richiesta a tutti gli output per cui ha una
cella in coda;

Step 2: Grant. Se un output non matchato riceve richieste multiple, ne accetta uno
scegliendo in modo casuale una richiesta tra tutte quelle che gli sono arrivate. Ogni richiesta
ha la stessa probabilit di essere accettata;

Step 3: Accept. Se un input riceve accettazioni multiple, ne sceglie una da accettare, in


modo fair, e informa loutput.
Nello step 1, input 1 invia la richiesta agli output 1 e 2, linput 3 invia la richiesta agli output 2
e 4, linput 4 invia la richiesta alloutput 4. In step 2, loutput 1 accetta solo la richiesta
dallinput 1, loutput 2 accetta linput 3 e loutput 4 sceglie linput 3. Nellultimo step 3, input
1 accetta solo dalloutput 1 e linput 3 sceglie casualmente loutput 2 da accettare. Si
mostrato che ogni iterazione risolve, in media, almeno il 25% delle richieste rimanenti. Quindi,
lalgoritmo converge a O(logN) iterazioni, dove N indica il numero di porte. Non si usa
memoria per tenere traccia di come stata fatta la connessione, poich, allinizio di ogni
timeslot, il match ricomincia da capo, indipendentemente dai match fatti nei timeslot
precedenti. Daltra parte, PIM non si comporta bene in una singola iterazione. Il throughput
per uniterazione di circa 63% con traffico uniforme. Il motivo questo: assumiamo che
ogni VOQ di uno switch NxN sia non vuota. Con PIM, ogni output ricever N richieste, una
per ogni input. La probabilit che un output scelga e accetti un particolare input 1/N,
quindi la probabilit che un input non sia scelto da un output 1-(1/N). Se un input viene
accettato da almeno un output, questo input sceglie casualmente uno di questi. In altre
parole, se un input non riceve nessun accettazione, non viene matchato. Questo avviene
quando nessun output sceglie questo input per accettarlo, con probabilit 1-(1/N)N, cio 1-
1/e per N-> . Quindi il throughput tende a 0.63 per N->. Perci, con un traffico uniforme,
PIM raggiunge il 63% e il 100% del throughput rispettivamente per 1 e N iterazioni. Quando lo
switch viene usato troppo, PIM porta a uningiustizia tra le connessioni.

In figura, la porta 1 ha celle verso gli output 1 e 2 in ogni timeslot, e analogamente linput 2
ha celle verso loutput 1. Con PIM, linput 1 accetter solo loutput 1 per un quarto del
tempo, poich loutput 1 dovrebbe prima accettare linput 1 e poi linput 1 dovrebbe
accettare loutput 1. Tuttavia, poich nessuna porta ha contesa con linput 1 verso loutput
2, linput 1 accetter loutput 2 durante gli altri 3 quarti del tempo. Ci porta a uningiustizia
tra linput 1 verso loutput 1 e linput 1 verso loutput 2. Inoltre, implementare una funzione
casuale ad alta velocit pu essere costoso.

9.3.2 Iterative Round-Robin Matching (iRRM)


Lo schema iRRM lavora simile a PIM, ma usa invece lo scheduler round-robin invece di una
selezione casuale. Ogni scheduler mantiene un puntatore alla porta con la priorit massima.
Tale puntatore detto puntatore acceptaiallinput i e puntatore grant gj alloutput j. Gli step
dellalgoritmo sono i seguenti:

Step 1: Request. Ogni input non matchato invia una richiesta a ogni output per cui ha una
cella in coda;

Step 2: Grant. Se un output non matchato riceve multiple richieste, sceglie quella che la
successiva nello schedule round-robin partendo dallelemento con la priorit pi alta.
Loutput notifica a ogni input se la sua richiesta stata accettata o meno. Il puntatore gi
incrementato (modN) di una posizione oltre linput accettato;

Step 3: Accept. Se un input riceve accettazioni multiple, accetta quella che appare
successiva nel suo schedule round-robin partendo dallelemento con priorit massima. In
modo analogo, il puntatore ajviene incrementato (modN) di una posizione oltre loutput
accettato.

In questo esempio, supponiamo che il valore iniziale di ogni puntatore di grant sia input 1
(cio gi = 1). In modo analogo, ogni puntatore accept inizialmente puntato alloutput 1
(cio aj = 1). Durante lo step 1, gli input richiedono la trasmissione a tutti gli output che hanno
una cella destinata a questi.
Nello step 2, tra tutte le richieste ricevute, ogni scheduler di grant sceglie linput, tra quelli
che hanno richiesto, che pi vicino a quello che attualmente puntato. Loutput 1 sceglie
linput 1, loutput 2 sceglie linput 1, loutput 3 non ha richieste e loutput 4 sceglie linput 3.
Quindi, ogni puntatore grant si muove di una posizione oltre quello scelto: in questo caso g1
= 2, g2 = 2, g3 = 1, e g4 = 4.

Nello step 3, ogni puntatore accept decide quale grant viene accettato in modo analogo a
come stato fatto dai puntatori grant. Nellesempio, linput 1 accetta loutput 1, e linput 3
accetta loutput 4; quindi a1 = 2, a2 = 1, a3 = 1 e a4 = 1. Bisogna notare che il puntatore a3 ha
accettato il grant dalloutput 4, quindi il puntatore ritorna alla posizione 1. Sebbene iRRM
porta una buona giustizia usando una policy round-robin, in realt non raggiunge un
throughput molto pi alto rispetto a PIM in uniterazione. Ci principalmente dovuto al
meccanismo di aggiornamento del puntatore delloutput. Considerando la situazione in cui
linput i con il puntatore accept che punta a j ha celle verso tutte le porte delloutput, e i
puntatori grant in tutti gli output puntano a i, con una iterazione, solo una cella verr
trasferita nel sistema dallinput i alloutput j. Questo fenomeno detto sincronizzazione di
output. Ci degrada significativamente il throughputdi iRRM. Lo switch 2x2 con uniterazione
iRRM raggiunger solo il 50% del throughput sotto un carico pesante.

9.3.3 Iterative Round-Robin con SLIP (iSLIP)


Gli step per questo schema sono i seguenti:

Step 1: Request. Ogni input non matchato invia una richiesta a ogni output per cui ha una
cella in coda;

Step 2: Grant. Se un output non matchato riceve richieste multiple, sceglie quella che la
successiva nello schedule fisso round-robin partendo dallelemento con la priorit pi alta.
Loutput notifica a ogni input se la sua richiesta stata accettata o meno. Il puntatore g i
incrementato (modN) a una posizione oltre linput accettato se e solo se il grant stato
accettato nello step 3 della prima iterazione.

Step 3: Accept. Se un input riceve accettazioni multiple, accetta quella che appare
successiva nel suo schedule round-robin partendo dallelemento con priorit massima. In
modo analogo, il puntatore ajviene incrementato (modN) di una posizione oltre loutput
accettato. I puntatori accept aisono aggiornati solo nella prima iterazione.

La differenza principale rispetto a iRRM che in iSLIP i puntatori grant aggiornano la loro
posizione solo se le loro grant sono accettate. Inoltre, i puntatori grant in uscita e accept in
ingresso sono aggiornati solo durante la prima iterazione, poich se i puntatori venissero
aggiornati in ogni iterazione, allora qualche connessione potrebbe restare in uno stato di
starvation in modo indefinito.

Ci rappresenta un grafo di richiesta nel primo timeslot. Assumiamo che il puntatore accept
della porta input 1 punti alloutput 1, e che il puntatore grant delloutput 2 punti allinput 1.
Durante la prima iterazione del timeslot, linput 1 accetter loutput 1, e durante la seconda
iterazione, loutput 2 accetter solo linput 2, poich linput 1 stato connesso. Quando
linput 2 finalmente accetta loutput 2, il puntatore grant nelloutput 2 sar aggiornato oltre
linput 1 fino alla porta 3. Cos la connessione tra linput 1 e loutput 2 pu essere rinviata in
modo indefinito. Tuttavia, in questo schema di aggiornamento dei puntatori solo alla prima
iterazione, si evita la starvation poich ogni coppia di richieste viene servita entro 2N
timeslot, e alla coppia connessa pi recente assegnata la priorit minore. A causa del
movimento round-robin dei puntatori, lalgoritmo fornisce unallocazione giusta di banda tra
tutti i flussi. Questo schema contiene 2N arbitri, dove ogni arbitro implementabile con
bassa complessit. Il throughput offerto con tale algoritmo pari al 100% con traffico
uniforme per un qualsiasi numero di iterazioni a causa delleffetto di desincronizzazione.

Inizialmente tutti i puntatori aj e gi sono settati a 1.

Nello step 2 di iSLIP, loutput accetta la richiesta che pi vicina allinput puntato in senso
orario: tuttavia, in maniera differente rispetto a iRRM, i puntatori gi non sono aggiornati in
questo step, ma attendono laccettazione dei risultati.
Nello step 3, gli input accettano il grant che pi vicino a quello puntato da ai. I puntatori
accept cambiano fino alla posizione oltre quello accettato, a1 = 2, a2 = 1, a3 = 1 e a4 = 1.
Allora, dopo che i puntatori accept decidono quale richiesta accettare, i puntatori grant
cambiano di una posizione oltre il grant accettato (cio un grant non accettato non
produce cambiamento nella posizione del puntatore grant). I nuovi valori per questi
puntatori sono g1 = 2, g2 = 1, g3 = 1 e g4 = 4. Nelle successive iterazioni, solo gli input e output
non matchati vengono considerati, e i puntatori non vengono modificati (cio
laggiornamento avviene solo nella prima iterazione). iSLIP pu raggiungere un throughput
del 100% con una singola iterazione sotto un traffico di Bernoulli composto da arrivi
indipendenti e uniformemente distribuiti. Ci avviene perch, in un tempo finito, il puntatore
di ogni arbitro di output punter verso un input diverso dagli altri puntatori output, cosicch
ogni input avr una cella da servire in ogni timeslot. Sotto traffico pesante, lalgoritmo di
scheduling iSLIP si riduce alle seguenti regole:

- In ogni timeslot, ogni input invia richieste a tutti gli output;

- In ogni output, se il puntatore g punta a k in un timeslot, questo output accetta la richiesta


dal k-esimo input. Se la richiesta viene scelta e accettata dal k-esimo arbitro input, nel
successivo timeslot il puntatore punta a (k+1) modN; se non viene scelta, nel successivo
timeslot il puntatore rimarr sempre a k;

- In ogni input k, se solo un puntatore output punta a k, questo output sar scelto dallinput k,
se ci sono m puntatori output che puntano allinput k, uno di questi verr scelto;

Definiamo un vettore Xi = (x1,i, . . ., xk,i, . . ., xN,i) per esprimere lo stato degli arbitri input: nel
timeslot i ci sono xk,ipuntatori arbitri output che puntano allinput k, con k = 1, . . ., N, 0 xk,i
N, k=1N xk,i = N. Se, al timeslot i, xk,i = 1, k = 1, . . ., N, che indica che ogni input puntato
da un puntatore arbitro output, allora il throughput sar pari al 100% in questo timeslot.
Mostriamo ora che Xi = (1, 1, . . ., 1) per tutti gli i N 1. Quindi un throughput del 100% pu
essere prolungato in modo indefinito dopo N-1 timeslot. Per semplificare la notazione,
scartiamo il modN, cio (k+1)modN sar rappresentato da k+1. Usando le regole di arbitrato
iSLIP al vettore Xi, abbiamo:

Facendo scorrere ciclicamente Xi a sinistra di uno slot ogni timeslot, abbiamo un altro
vettoreYi = (y1,i, . . ., yk,i, . . ., yN,i). Yi definito in questo modo: nel timeslot 0 Y0 = X0, cio yk,0 =
xk,0, k = 1, . . ., N, e nei timeslot m 0, yk,m = xk+m,m, k = 1, ..., N. In ogni timeslot, yk,i rappresenta
lo stato di un arbitro di input. Se e solo se, nel timeslot i, y k,i = 1 per ogni k = 1, ,N, allora xk,i
uguale a 1 per ogni k. Quindi sufficiente mostrare che Yi = (1, 1, , 1) per ogni i N 1 per
dimostrare un throughput del 100% con iSLIP con un traffico uniforme. Si ha che:

Considerando la terza e la quarta condizione, si pu concludere che ogni volta che y k > 0,
dopo ci sar pi grande di 0. Secondo questa condizione, se nel timeslot i yk,i = 1 per ogni k
= 1, , N, allora per ogni timeslot j>i, tutti gli yk,i saranno pi grandi di 0. Poich ci sono N input
e N output, e Nk=1 yk = N, dopo il timeslot i, yk = 1, k = 1, ,N, che indica che xk = 1 per tutti i k
e il throughput sar sempre pari al 100%. Dimostreremo che qualunque sia lo stato iniziale Y 0,
in un numero finito di timeslot M, con M < N-1, avremo sempre yk,M = 1, k = 1, ,N.
Il vettore dello stato Y e le sue transizioni di stato pu essere espresso come nella figura
precedente. Abbiamo N palle in N scatole. Nel timeslot i, ci sono yk,i palle nella k-esima
scatola, con k = 1, ,N. Mostreremo che non importa quante siano le palle in ogni scatola
allinizio, dopo al massimo N-1 timeslot, ogni scatola conterr esattamente una palla. Nel
timeslot i, se la scatola k occupata e ha m palle, con m>0, allora nel timeslot i+1 una delle
m palle rimarr nella scatola k e le altre (se ce ne sono) si muoveranno nella scatola k-1. Se
arriva pi di una palla in una scatola vuota, una di queste viene scelta arbitrariamente per
restare. Quindi se una palla arriva in una scatola vuota, rimarr l per sempre. In figura, le
palle nere sono quelle che occupano una scatola per sempre, mentre quelle bianche
continuano a muoversi finch trovano una scatola vuota e la occupano, e a questo punto
diventano nere. Ognuna delle N palle trover una scatola da occupare in modo
permanente in meno di N-1 timeslot, cos ogni scatola avr al suo interno una palla.
Seguendo le regole, e sapendo quante palle ci sono nella scatola k e nella scatola k+1 nel
timeslot i (yk,i e yk+1,i), possiamo sapere il numero di palle nella scatola k nel timeslot i+1 (yk,i+1).

Condizione 1: se nel timeslot i la scatola k vuota e la scatola k+1 ha al massimo una palla,
allora la scatola k sar sempre vuota nel timeslot i+1;

Condizione 2: se nel timeslot i la scatola k vuota e la scatola k+1 ha j palle (j>1), allora una
della j palle rimarr nella scatola k+1 e nella scatola k ci saranno le altre j-1 palle;

Condizione 3: se nel timeslot i la scatola k ha j palle, con j>1, e la scatola k+1 ha al massimo
una palla, allora nel timeslot i+1 nessuna palla si muover dalla scatola k+1 alla scatola k, e
solo una palla (che occupa permanentemente la scatola k) rimarr nella scatola k;

Condizione 4: se nel timeslot i ci sono m palle nella scatola k e j palle nella scatola k+1, con
m>1 e j>1, allora nel timeslot i+1 una delle m palle (che occupano la scatola k) resta nella
scatola k e le altre si muovono nella scatola k-1, e una delle j palle (che occupano la
scatola k+1) resta nella scatola k+1 e j-1 palle si muovono nella scatola k; la scatola k avr
allora j palle.

Nel timeslot 0, se una palla solitaria occupa una scatola, significa che ha gi trovato la sua
scatola definitiva. Dobbiamo dimostrare che se una palla non occupa una scatola nel
timeslot 0, trover la sua scatola entro N-1 timeslot. Supponiamo che nel timeslot 0 la scatola
k occupata e c una palla bianca (detta B) al suo interno; allora nel successivo timeslot,
la palla B deve muoversi nella scatola k-1. Usiamo ora una dimostrazione per assurdo:
assumiamo che fino al timeslot N-1 la palla B non trova la sua scatola da occupare; ci
significa che si mossa in ogni timeslot e ha viaggiato per N-1 scatole, tutte occupate.
Poich la scatola k gi occupata, tutte le N scatole sono occupate da N palle. Con la
palla B, c un totale di N+1 palle nel sistema, che impossibile. Quindi lipotesi sbagliata e
la palla B trover una scatola da occupare entro N-1 timeslot. Quindi concludiamo che ogni
palla pu trovare una scatola da occupare entro N-1 timeslot, e dal timeslot N-1 ogni
scatola ha una palla al suo interno. Quindi Yi,yk,i = 1, k = 1, ,N, i N 1, per ogni Y0, che
indica che dopo il timeslot N-1, ogni puntatore output arbitro punter a un input differente, e
ci continuer in modo indefinito. Ci garantisce un throughput del 100%.

Potrebbero piacerti anche