Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Uvod
Osnovna funkcija Internet rutera je usmeravanje paketa na osnovu odredišne IP adrese
IP lukap predstavlja proces određivanja izlaznog porta rutera (na osnovu odredišne IP adrese) na koji IP paket treba izaći
U ovoj prezentaciji će biti predstavljeno više algoritama za efikasno obavljanje lukap funkcije
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Lukap kod klasnog adresiranja Kod klasnog adresiranja postojale su tri klase adresa A, B i
C dužine mrežnog prefiksa 8, 16 i 24 bita, respektivno Na osnovu početnih bita IP adrese se može odrediti kojoj
klasi pripada i zatim pretražiti tabela prosleđivanja odgovarajuće klase
Pošto su u istoj klasi svi mrežni prefiksi iste dužine može se koristiti neki od efikasnih algoritama za brzo pretraživanja (npr. binarna pretraga), a u slučaju klase A i B zbog malog broja ukupnih adresa moguće je koristiti i direktan pristup na bazi mrežnog prefiksa
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Lukap kod besklasnog adresiranja
Klasno adresiranje je napušteno zbog neracionalnog korišćenja adresnog prostora
Uvedeno je besklasno adresiranje kod kojeg mrežni prefiks može da bude proizvoljne dužine
Takođe, uvodi se agregacija zapisa u tabeli prosleđivanja radi smanjivanja veličine tabele
Agregacija dovodi do problema da za istu odredišnu IP adresu može da se nađe dva ili više rezultata pri pretrazi tabele prosleđivanja
Pravilo izabiranja najdužeg prefiksa koji se poklapa – tzv. ‘longest matching prefix rule’
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Lukap kod besklasnog adresiranja
Lukap funkcija sada postaje značajno složenija jer pored dimenzije vrednosti prefiksa dodajemo i dimenziju dužine prefiksa – dvodimenzionalni problem
Ovo otežava primenu klasičnih brzih algoritama pretrage poput binarne pretrage
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Zahtevi Zahtevi koje dobar lukap algoritam mora da ispuni:
Brzina - Usled rasta brzine linkova, smanjuje se vreme koje je na raspolaganju ruteru da za svaki paket odradi lukap funkciju. Pošto se tabele obično smeštaju u memorijske čipove, brzina se najčešće procenjuje kao broj memorijskih pristupa u najgorem slučaju
Memorijski prostor - Pošto memorijski čipovi veće brzine obično imaju manji kapacitet, poželjno je da tabele zauzimaju manji prostor tako da stanu u što brže čipove
Skalabilnost - Kako se očekuje prelaz na IPv6, neophodno je da lukap algoritmi mogu da se efikasno primene i na IPv6 adrese
Ažuriranje – U nestabilnim mrežama moe doći do čestih promena strukture tabele prosleđivanja. Lukap algoritam mora da omogući veoma brzo osvežavanje tabele novim podacima, a da se pri tome proces pretrage (lukapa) ne uspori značajno.
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Podele
Podela lukap algoritama može da se izvrši na više načina:
Na osnovu implementacije:
• Hardverski
• Softverski Na osnovu dimenzije po kojoj se vrši lukap:
• Po dimenziji dužine prefiksa
• Po dimenziji vrednosti prefiksa
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Binarno stablo Najprirodniji način za predstavljanje tabele prosleđivanja je binarno
stablo Adresni prefiksi tabele prosleđivanja se nalaze u stablu u vidu čvorova
sa zapisima, gde zapis predstavlja ID izlaznog porta rutera na koji treba usmeriti IP paket sa tim adresnim prefiksom
Uzima se bit po bit IP adrese i kreće se kroz stablo – levo ili desno zavisno od vrednosti bita
Pretraga se završava kad se dođe do kraja stabla, a rešenje je najbolji čvor koji je sadržao zapis
Realizacija ovog algoritma je veoma jednostavna, kao i samo ažuriranje tabele
Mana je da u najgorem slučaju treba 32 memorijska pristupa (128 u slučaju IPv6), kao i čuvanje velikog broja praznih čvorova koji ne sadrže zapis
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Primer binarnog stabla Prefiksi:
0* 0001* 001* 01* 0110* 0111* 10* 100* 1011*
Koren
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Kompresija putanje Često se javljaju putanje bez
račvanja sa praznim čvorovima Nema račvanja – nema
odlučivanja u čvorovima o daljem smeru kretanja
One mogu da se komprimuju izbacivanjem praznih čvorova
Mora da se pamti broj preskočenih čvorova
Mora da se u svakom čvoru poredi kompletan prefiks
0
1
1
1
Skip 3
100*
1001011*
1001011*
100*
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
M-rna stabla Za kretanje između
čvorova stabla se koristi m bita
Iz svakog čvora može da ide 2m grana
U najgorem slučaju 32/m memorijskih pristupa
Mana - smanjena granularnost
Mana – veliko m nije praktično za realizaciju
Koren
00 1101 10
00 01 10 11
m=2
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
LC-stablo
Modifikacija m-rnog stabla Za razliku od m-rnog stabla, kod LC (Level
Compressed) stabla se parametar m može menjati Cilj je postizanje optimalne strukture kod koje će
se postići minimalna dubina stabla tako što će se veoma popunjena podstabla zameniti m-rnom strukturom
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
LC-stablo
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Lukap algoritam koji koriste Intelovi mrežni procesori
Primer korišćenja tehnike m-rnih stabala Postoje dve pretrage po dužim prefiksima
(dužim od 16 bita) i po kraćim prefiksima (dužine do 16 bita) – princip pretrage je u oba slučaja identičan – osnovna razlika je u određivanju lokacije u početnoj tabeli, kod pretrage po dužim prefiksima se koristi prvi 16 bita IP adrese, a kod pretrage po kraćim prefiksima prvih 8 bita IP adrese
U tabeli prosleđivanja se čuvaju dve informacije – ‘next-hop’ informacija koja daje informaciju na koji izlazni port rutera treba da se prosledi paket i pokazivač na podstablo koji daje lokaciju podstabla gde može da nalazi duži prefiks koji odgovara adresi za koju se vrši pretraga – u Intelovoj implementaciji obe informacije su dužine 16 bita
0 Pokazivač na podstablo
0 Pokazivač na podstablo
0 Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
Početno velikatabela - 216 lokacija
Početno mala tabela- 28 lokacija
Podstablo 1- 16 lokacija
Podstablo 2
'Next-hop' informacija Pokazivač na podstablo
Podstablo N
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Lukap algoritam koji koriste Intelovi mrežni procesori
Princip pretrage po dužim prefiksima:1. Na osnovu prvih 16 bita IP adrese
određuje se lokacija u početnoj velikoj tabeli i proverava se da li ima pokazivač na podstablo
2. Ukoliko pokazivača nema pretraga se prekida i prelazi se na pretragu po kraćim prefiksima
3. Ukoliko pokazivač postoji on pokazuje na početnu lokaciju podstabla, a sledeća 4 bita IP adrese određuju koja lokacija od 16 lokacija podstabla odgovara IP adresi za koju se vrši pretraga (uočiti ovde upotrebu m-rne tehnike)
4. Na odgovarajućoj lokaciji utvrditi da li postoji ‘next-hop’ informacija i ukoliko postoji zapamtiti je kao najbolju
5. Proveriti da li postoji pokazivač na podstablo i ukoliko postoji ponoviti korake 3, 4 i 5
6. Pretraga se prekida ukoliko nema pokazivača na sledeće podstablo ili su iskorišćeni svi biti IP adrese, pretraga je uspešna ukoliko je u toku pretrage nađena ‘next-hop’ informacija, u suprotnom pretraga se nastavlja po kraćim prefiksima
0 Pokazivač na podstablo
0 Pokazivač na podstablo
0 Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
'Next-hop' informacija Pokazivač na podstablo
Početno velikatabela - 216 lokacija
Početno mala tabela- 28 lokacija
Podstablo 1- 16 lokacija
Podstablo 2
'Next-hop' informacija Pokazivač na podstablo
Podstablo N
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Lukap algoritam koji koriste Intelovi mrežni procesori - primer
U primeru sa gornje slike paket će se usmeriti na port 12, a u primeru sa donje slike paket će se usmeriti na port 10
Na pretragu po kraćim prefiksima se prelazi samo ako je pretraga po dužim prefiksima bila neuspešna
U slučaju da je moguća primena pajplajn tehnike onda se pretrage po kraćim i po dužim prefiksima vrše u paraleli tj. istovremeno radi povećanja brzine lukap algoritma
IP adresa : 188.98.79.12 = 10111100.01100010.01001111.00001100
0 ADR110111100 01100010
Port 10 ADR2ADR1 + 0100
ADR2 + 1111 Port 12 0
IP adresa : 188.98.79.12 = 10111100.01100010.01001111.00001100
0 ADR110111100 01100010
Port 10 ADR2ADR1 + 0100
ADR2 + 1111 0 0
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Tehnike za unapređivanje lukapa Transformacija prefiksa
‘leaf pushing’ – interni zapisi se pomeraju na kraj stabla radi izbegavanja preklapanja prefiksa, često se koristi kod m-rnih stabala
Proširivanje prefiksa na zadatu dužinu radi svođenja problema na problem lukapa kod klasnog adresiranja
Tehnike kompresije Uređivanje sadržaja tabele radi izbegavanja redudantnih pokazivača
Optimizacioni postupci Najčešće je cilj smanjenje memorijskih resursa koje zauzima tabela,
ali mana je u slučaju čestih ažuriranja proces optimizacije mora da se radi ponovo tj. nije moguće inkrementalno ažuriranje
Prilagođavanje strukturi korišćene memorije Npr. delovi tabele kojima se često pristupa se smeštaju u keš
procesora radi povećanja brzine
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Heš funkcije Heš funkcije h(x) se često koriste u lukap algoritmima Da bi se mogle primeniti, vrši se proširivanje prefiksa na
fiksnu dužinu Rezultat heš funkcije daje lokaciju gde je smešten zapis Kompleksnost heš funkcije je o(1) Jednostavne za realizaciju Postoji mogućnost kolizije tj. za dve različite adrese se
dobija isti rezultat Potrebno koristiti dobre heš funkcije kod kojih je mala
verovatnoća sudara
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Pretraga po vrednostima Prefiksi se svode na fiksnu dužinu čime se eliminiše
dimenzija dužine prefiksa i pretraga svodi na pretragu po vrednostima prefiksima
Ovi metodi su ređi jer je prirodnija struktura za tabelu prosleđivanja struktura stabla
Tipično se prefiks proširuje na dve vrednosti koje predstavljaju granice opsega adresa koje prefiks pokriva tj. prefiks se proširuje svim nulama i svim jedinicima do zadate dužine
Pretraga po vrednostima traži najuži opseg kome adresa za koju se vrši pretraga pripada jer to je prefiks koji se najviše poklapa sa adresom
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Pretraga po vrednostima
Prefiksi: 0* 001* 0001* 01* 0110* 10* 100* 1011* 11* 1101*
0*
0000
00
1111
11
0000
00
0111
11
001*0010
00
0011
11
0001
00
0001
11
0001*
0111
11
0100
00
01*
0110
00
0110
11
0110*
1011
11
1000
00
10*
1111
11
1100
00
11*
100*1000
00
1001
11
1011
00
1011
11
1011*
1101
00
1101
11
1101*
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
TCAM Ternarna CAM (Content Addressable Memory)
predstavlja čip koji je direktno prilagođen funkciji lukapa Kod ove memorije su definisana tri stanja 0, 1 i X (don’t
care) Adresa za koju se vrši pretraga se upoređuje sa svim
zapisima u memoriji istovremeno i selektuje se najbolje rešenje
TCAM su najbrža realizacija lukapa (kompleksnost je o(1)), ali mana je velika potrošnja i cena
Takođe, velik problem je i prelaz na IPv6 zbog potrebnog kapaciteta
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Primer hardverske realizacije lukap algoritma upotrebom FPGA čipa
LEVELMODULE
i
i=1..4
CENTRALMODULE
SEARCHi
ADDi
CLRi
PREFIXi
SUBTREEi
SUBTREE MASKi
MATCH FOUNDi
SRAM LOCATIONi
IP ADDRESS
PREFIX LENGTH
SEARCH
ADD
CLR
NEW NEXT-HOP INFO
SRAMSRAM DATA BUS
SRAM ADR BUS
READ/WRITE
NEXT-HOP INFO
FPGA čipovi predstavljaju programabilne čipove koji se mogu koristiti za implementaciju raznih funkcija
Zbog svoje brzine i fleksibilnosti predstavljaju pogodna rešenja za implementaciju lukap funkcija
Ideja prikazane implementacije je da internu memoriju FPGA čipa koristi za binarnu prezentaciju stabla, a same ‘next-hop’ informacije da smešta u brzu SRAM memoriju
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Primer hardverske realizacije lukap algoritma upotrebom FPGA čipa
LEVELMODULE
i
i=1..4
CENTRALMODULE
SEARCHi
ADDi
CLRi
PREFIXi
SUBTREEi
SUBTREE MASKi
MATCH FOUNDi
SRAM LOCATIONi
IP ADDRESS
PREFIX LENGTH
SEARCH
ADD
CLR
NEW NEXT-HOP INFO
SRAMSRAM DATA BUS
SRAM ADR BUS
READ/WRITE
NEXT-HOP INFO
Centralni modul prima zahteve za pretragu i prosleđuje ih ka ‘level’ modulima
‘Level’ moduli čuvaju informacije u binarnom obliku onih podstabala koji imaju bar jedan čvor sa ‘next-hop’ informacijom
Kada primi zahtev ‘level’ modul proverava da li za zadatu adresu postoji podstablo i ako postoji vrši pretragu podstabla da vidi postoji li čvor sa zapisom koji odgovara zadatoj adresi
Ukoliko takav čvor postoji kao rezultat se vraća adresa u SRAM memoriji gde se ‘next-hop’ informacija nalazi
LEVEL 1
LEVEL 2
LEVEL 3
LEVEL 4
8 BITS
8 BITS
8 BITS
8 BITS
Aleksandra Smiljanić: High-Capacity Switching
Belgrade University
Primer hardverske realizacije lukap algoritma upotrebom FPGA čipa
SUBTREE PREFIX1 SUBTREE PREFIXnRegisters
COMPARATOR COMPARATOR
IP address
Match Vector
ONE HOT DECODER
MEMORY BLOCK
SubtreeAddress
SUBTREEPROCESSOR
SRAMAddress
MatchFound
SubtreeVector
Prefix Length
Search
Add
Clr
PREFIX
Node 1 Node 2
Node 3 Node 4 Node 5 Node 6
Node 510Node 255 Node 256