Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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: 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.
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.
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.
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.
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:
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.
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.
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.
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.
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).
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.
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).
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).
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.
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:
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).
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.
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:
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
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:
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;
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.
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.
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.
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:
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:
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, ).
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.
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:
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.
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%).
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).
F1 = numero di celle trasmesse nel primo timeslot = 2 (celle nella coda 1 e 2);
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);
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);
B12 = 1 (la coda 4 ha perso la contesa, e quindi non ha inviato la cella alluscita 1);
Considero il 3 timeslot:
B23 = 0;
B33 = 0;
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
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
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.
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
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:
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
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):
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).
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;
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:
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.
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.
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.
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.
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:
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 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;
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).
C un simbolo a non trovato sia nella riga i che nella colonna j (viene scelta la
matrice a per i-j);
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.
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.
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 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:
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:
- 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;
Stabilit: loccupazione attesa di ogni VOQ dovrebbe rimanere finita per ogni pattern di
traffico ammissibile;
Allora, lalgoritmo di scheduling B stabile sotto ogni traffico di input ammissibile di variabili
indipendenti e identicamente distribuite di Bernoulli.
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;
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.
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.
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.
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 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%.