4: Az IP Prefix Lookup Probléma Bináris keresés hosszosztályok alapján. HálózatokII, 2007

Hasonló dokumentumok
Hálózatok II 2005/ : Peer-To-Peer Hálózatok II

Az Ethernet példája. Számítógépes Hálózatok Az Ethernet fizikai rétege. Ethernet Vezetékek

Számítógép hálózatok, osztott rendszerek 2009

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Az adott eszköz IP címét viszont az adott hálózat üzemeltetői határozzákmeg.

Alhálózatok. Bevezetés. IP protokoll. IP címek. IP címre egy gyakorlati példa. Rétegek kommunikáció a hálózatban

Internet Protokoll 6-os verzió. Varga Tamás

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Dr. Wührl Tibor Ph.D. MsC 04 Ea. IP kapcsolás hálózati réteg

Számítógép-hálózatok zárthelyi feladat. Mik az ISO-OSI hálózati referenciamodell hálózati rétegének főbb feladatai? (1 pont)

Routing update: IPv6 unicast. Jákó András BME EISzK

Hálózati réteg. Feladata: a csomag eljusson a célig Több útválasztó Ez a legalacsonyabb rétek, mely a két végpont

Adatszerkezetek 2. Dr. Iványi Péter

Számítógép-hálózatok. Gyakorló feladatok a 2. ZH témakörének egyes részeihez

Számítógépes Hálózatok ősz Hálózati réteg IP címzés, ARP, Circuit Switching, Packet Switching

Algoritmuselmélet 6. előadás

JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN

Routing. Számítógép-hálózatok. Dr. Lencse Gábor. egyetemi docens Széchenyi István Egyetem, Távközlési Tanszék

Algoritmusok és adatszerkezetek 2.

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Számítógépes Hálózatok 2012

Hálózati architektúrák laborgyakorlat

Adatszerkezetek 7a. Dr. IványiPéter

Számítógép hálózatok gyakorlat

Algoritmuselmélet 2. előadás

Hálózati architektúrák laborgyakorlat

Algoritmusok és adatszerkezetek gyakorlat 07

Számítógépes Hálózatok 2011

Nagy Gábor compalg.inf.elte.hu/ nagy

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Dr. Wührl Tibor Ph.D. MsC 04 Ea. IP P címzés

Online migrációs ütemezési modellek

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Gyakorló feladatok a 2. ZH témakörének egyes részeihez. Számítógép-hálózatok. Dr. Lencse Gábor

Az internet ökoszisztémája és evolúciója. Gyakorlat 2

A TCP/IP számos adatkapcsolati réteggel együtt tud működni:

Adatkapcsolati réteg. A TCP/IP számos adatkapcsolati réteggel együtt tud működni: Ethernet, token ring, FDDI, RS-232 soros vonal, stb.

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Fraktál alapú képtömörítés p. 1/26

Az internet ökoszisztémája és evolúciója. Gyakorlat 4

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

Hálózati Technológiák és Alkalmazások

Nagy Gábor compalg.inf.elte.hu/ nagy

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 3. óra. Kocsis Gergely, Kelenföldi Szilárd

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 3. óra. Kocsis Gergely, Supák Zoltán

Számítógépes Hálózatok és Internet Eszközök

Algoritmuselmélet 18. előadás

Fibonacci számok. Dinamikus programozással

2: Minimális feszítőfák, legrövidebb utak. HálózatokII, 2007

Konfiguráljuk be a TCP/IP protokolt a szerveren: LOAD INETCFG A menüpontokból válasszuk ki a Proctcols menüpontot:

Hálózatok II. A hálózati réteg funkciói, szervezése

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

Tűzfal megoldások. ComNETWORX nap, I. 30. ComNETWORX Rt.

Ethernet/IP címzés - gyakorlat

IV. - Hálózati réteg. Az IP hálózati protokoll

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Statikus routing. Hoszt kommunikáció. Router működési vázlata. Hálózatok közötti kommunikáció. (A) Partnerek azonos hálózatban

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Programozás alapjai. 10. előadás

Gépi tanulás a gyakorlatban. Lineáris regresszió

Hálózati réteg - áttekintés

Médiakommunikációs hálózatok (VIHIM161) évi fóliái alapján készült

Adatszerkezetek 2. Dr. Iványi Péter

Amortizációs költségelemzés

Médiakommunikációs hálózatok (VIHIM161) évi fóliái alapján készült

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Két típusú összeköttetés PVC Permanent Virtual Circuits Szolgáltató hozza létre Operátor manuálisan hozza létre a végpontok között (PVI,PCI)

Multiprotocol encapsulation (RFC1483) - IETF Classical IP over ATM (RFC1577) - IETF LAN Emulation (LANE) - ATM Forum Multiprotocol over ATM (MPOA) -

2. Visszalépéses keresés

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

Valószínűségi változók. Várható érték és szórás

IP anycast. Jákó András BME TIO

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Internet Protokoll 4 verzió

1. A számítógép-hálózatok ISO-OSI hivatkozási modelljének hálózati rétege 1.a Funkciói, szervezése

Tartalom. Hálózati kapcsolatok felépítése és tesztelése. Rétegek használata az adatok továbbításának leírására. OSI modell. Az OSI modell rétegei

Kommunikációs rendszerek programozása. Routing Information Protocol (RIP)

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. Kocsis Gergely, Supák Zoltán

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Tuesday, March 6, 12. Hasító táblázatok

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Unicast. Broadcast. Multicast. A célállomás egy hoszt. A célállomás az összes hoszt egy adott hálózaton

Unicast A célállomás egy hoszt. Broadcast A célállomás az összes hoszt egy adott hálózaton

A TCP/IP modell hálózati rétege (Network Layer) Protokoll-készlet: a csomagok továbbítása. Legjobb szándékú kézbesítés

Címzés IP hálózatokban. Varga Tamás

Partíció probléma rekurzíómemorizálással

Beállítások 1. Töltse be a Planet_NET.pkt állományt a szimulációs programba! A teszthálózat már tartalmazza a vállalat

10. előadás Speciális többágú fák

Általános algoritmustervezési módszerek

Nagyordó, Omega, Theta, Kisordó

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Információs rendszerek elméleti alapjai. Információelmélet

Átírás:

Hálózatok II 2007 4: Az IP Prefix Lookup Probléma Bináris keresés hosszosztályok alapján 1

Internet Protocol IP Az adatok a küldőtől a cél-állomásig IP-csomagokban kerülnek átvitelre A csomagok fejléce tartalmazza a cél IP-címét IPv4: 32 Bit-címek IPv6: 128 Bit-címek 20 octet 0 4 8 16 31 Ver HL ToS Total Length Identification - D M Fragment Offset TTL Protocol Source Address Destination Address Options (max. 40 octet) Header Data IPv4 Paket 2

Internet Protocol IP Minden csomópont (router) a cél címe alapján dönt, hogy melyik szomszédos csomópontnak kell továbbítania a csomagot Az ehhez szükséges információt minden csomópontban egy forwarding-tábla tárolja Osztály alapú címzés IPv4-ben: A prefix 8, 16, vagy 24 bit hosszú lehet 1 0 1 1 0 0 0 0 1. 1 0 0 0 0 0 1 0. 1 1 1 1 0 1 1 0. 0 0 0 0 0 0 1 0 152. 66. 246. 2 Network Address Präfix Host Identification Kiterjesztett hálózati cím (Extended Network Address) IPv4-ben: Network Subnet Host Präfix Hogyan lehet ezeket az információkat hatékonyan tárolni és megtalálni? 3

IP Prefix Lookup Probléma A címek W hosszúságú bináris sztringek. Egy router forwarding-táblája R bejegyzéseket tartalmaz (x,y) formában x: legfeljebb W hosszú bináris sztring, melynek a neve prefix. x lehet az üres sztring is, amit ε-nal jelölünk, y: egy a router-ből kivezető link. Minden x bináris sztringhez R legfeljebb egy (x,y) bejegyzést tartalmaz. A bejegyzések száma a forwarding-táblában N. Feladat: Egy a routerhez érkező csomaghoz, melynek cél-címe k, találjuk meg R-ben azt az (x,y) bejegyzést, melyre teljesül, hogy x prefixe k-nak és x maximális hosszúságú. Ezt az x sztringet a leghosszabb egyező prefixnek nevezzük (angol.: best matching prefix, röviden BMP) 4

A Trie Adatstruktúra Tétel 1: A trie adatstruktúrával a forwarding-táblát O(N) tárterületen lehet tárolni. Minden keresés és aktualizálás O(W) időt igényel. A trie felépítésének időigénye O(N W). 01 y 1 0 1 0 1 y 2 y 1 0 1 y 3 y 2 5

IP Prefix Lookup bináris kereséssel prefixhossz alapján [Waldvogel et al. 97] Alapötlet: Az IP Prefix Lookup Probléma megoldható konstans idő alatt, ha minden bejegyzés hossza megegyezik (azaz ha az x sztring minden bejegyzésben ugyanolyan hosszú), ha elegendő tár áll rendelkezésre. A forwarding-tábla bejegyzéseit a hosszuk alapján W osztályba soroljuk. Egy osztályon belül a bejegyzéseket egy olyan adatstruktúrában tároljuk, amiben a keresés k cím szerint konstans idő alatt lehetséges. Bináris kereséssel O(log W) idő alatt megkeressük azt a hosszosztályt, amely k-hoz a leghosszabb egyező prefixét tartalmazza. 6

Keresés egy hosszosztályon belül Notáció: Egy hosszosztály L i tárolja az R forwarding-tábla mindazon (x,y) bejegyzéseit, melyben x hossza i. Legyen N i = L i az ilyen bejegyzések száma. Van olyan adatstruktúra, amiben L i -t O(N i ) tárterületen tudjuk tárolni és egy adott i hosszú k bináris sztringhez O(1) idő alatt el tudjuk dönteni, hogy L i tartalmaz-e egy (k,y) bejegyzést, vagy nem. Példa egy ilyen adatstruktúrára: Perfekt Hashing [Fredman, Komlós, Szemerédi 84] 7

Keresés egy hosszosztályon belül - Hashing Hashing: A hash-táblában L i tárolására a rendelkezésre álló indexek száma legalább c N i kell hogy legyen, ahol c>0 egy konstans. Egy f hash-függvény L i minden (x,y) bejegyzéséhez hozzárendel egy f(x) indexet. Pl. f(x) = (3*x mod 23) mod 7 8

Keresés egy hosszosztályon belül - Hashing Hashing: Egy f hash-függvény L i minden (x,y) bejegyzéséhez hozzárendel egy f(x) indexet. Feltesszük, hogy f(x) konstans idő alatt kiszámolható. Ha több bejegyzés ugyanarra az indexre képeződik le, akkor kollízióról beszélünk. Kollíziók kezelésére egy lehetőség az összeláncolás: azaz minden j indexnél a prefixeket, melyek j-re képeződnek le, egy listába összeláncolva tároljuk. Ha a hash-táblában egy k prefixet keresünk, akkor kiszámoljuk f(k)-t és az f(k) indexnél az összeláncolt listában keresünk. Egy lista hosszának várható értéke O(1), így a keresés várhatóan O(1) időt igényel. (worst-case idő: O(N i )) 9

Keresés egy hosszosztályon belül - Hashing Perfekt Hashing: tárigénye O(N i ) és keresés időigénye O(1) worst-case Alapötlet: Kétszintű hashing: Az első hash-függvény f alkalmazása után kollízió léphet fel. A kollíziók feloldására minden j indexnél egy második f j hashfüggvényt alkalmazunk, amely a j-re leképeződött bejegyzések számától függ, és amely címtartománya négyzetes, azaz, ha n j a bejegyzések száma, amiket f a j -re képezett le, akkor f j (k) [1,c n j2 ]. Ha f és f j véletlen lineáris függvények, akkor konstans valószínűséggel (pl. 1/2 valószínűséggel) nem lesz kollízió, és a szükséges tár O(N i ). Így a függvények fele jó. Ha egy véletlen funkcióról kiderül, hogy nem rendelkezik az elvárt tulajdonsággal, akkor választunk véletlenül egy másikat. 10

Perfekt Hashing Perfekt Hashing: Minden hash függvényhez van worst-case input, ezért hashfüggvények családját tekintjük: Legyen s a hash-tábla mérete, U = {1,,m} (univerzum) S U, S = n, az input H s = { h : U {1,,s} h(x)= (kx mod p) mod s, 1 k < p } ahol p prím, p > m. Az első hash-függvény s partícióra osztja az elemeket A partíciókat egy második hash függvénnyel tároljuk kollízió nélkül Válasszuk h-t véletlenül H s -ből egyenletes eloszlás szerint Legyen W jh = { x S h(x) = j } 11

Perfekt Hashing Lemma 1: (bizonyítás nélkül) Ha h-t egyenletes eloszlás szerint véletlenül válaszjuk H s -ből, akkor Ahol E(X) az X véletlen változó várható értéke. Következésképpen: (1) Ha s = 2(n-1), akkor ebből következik, hogy legalább a h H s függvények felére: Egy ilyen függvényt használunk S partícionálására W j blokkokra, 1 j < s. 12

Perfekt Hashing Minden W j blokkhoz, 1 j < s, válasszuk s j = max{ 1, 2 W j ( W j -1) }, Ekkor (1) szerint legalább a h j H s j függvények felére érvényes: ahol Azaz legalább a h j H s j függvények fele injektív. Egy ilyen függvényt használunk W j tárolására. Így nem fordul elő kollízió. A teljes tárígény: 13

Perfekt Hashing Példa m=30, p=31, s=6, S={2,4,5,15,18,30} h(x) = (2x mod 31) mod 6 h 4 = (1x mod 31) mod 4, h 5 = (3x mod 31) mod 4, 0 1 2 3 4 5 0 1 2 3 0 1 2 3 15 4 5 2 30 18 14

Bináris keresés prefixhossz szerint Első ötlet: Kezdjünk a középső hosszosztállyal L W/2 -vel. O(1) idő alatt teszteljük, hogy L W/2 tartalmazza-e k prefixét. A teszt eredményétől függően, keressünk tovább rekurzívan a L 1,.., L W/2-1 (ha nem) vagy a L W/2+1,,L W (ha igen) osztályokban. Ehhez O(log W) teszt szükéges és így O(log W) idő. Sajnos ez az ötlet így még nem működik. Pl.: Legyenek 0, 1, 00, 111 a prefixek R-ben. Ekkor L 1 ={0,1}, L 2 ={00}, L 3 ={111}. Keressünk a 11101 célcím szerint. L 2 -vel kezdünk: a prefix 11 nincs benne L 2 -ben, így a rövidebb prefixek között keresnénk L 1 -ben, pedig a leghosszabbb egyező prefix 111 L 3 -ban van. 15

Bináris keresés prefixhossz szerint Első módosítás: Legyen x egy i hosszú prefix és jelölje x[1..j] az x első j jelét, 1 j i. Ha x az L i hosszoszályban van, akkor tárolunk minden L j hosszosztályban, 1 j < i, amelyben nincs bejegyzés x[1..j]-hez, egy u.n. jelzést x[1..j]-hez. A jelzés biztosítja, hogy egy keresésnél x[1..j]-nél felismerjük, hogy R-ben van egy hosszabb bejegyzés, ami x[1..j]-vel kezdődik. Így a bináris keresés a helyes döntést tud hozni, miszerint a hosszabb prefixek között keres tovább. Az előző példában: L 1 ={0,1} L 2 ={00,11}, L 3 ={111}. 16

Bináris keresés prefixhossz szerint Van még egy probléma: Ha a példánkban a 11010 célcím szerint keresünk, a 11 jelzés L 2 -ben ahhoz vezetne, hogy a keresés L 3 -ban folytatódik. Mivel L 3 -ban nem találunk 110 bejegyzést, a keresés visszatérne L 2 -höz. Mivel 11 csak egy jelzés, nem valódi bejegyzés, a keresést L 1 -nél kellene folytatni. Ez a backtracking O(log 2 W) futási időt eredményezne. 17

Bináris keresés prefixhossz szerint Második módosítás: Minden x jelzésnél tárolunk egy x.bmp mutatót: x.bmp arra az R-beli (x,y ) bejegyzésre mutat, ahol x egy prefixe x-nek és x maximális hosszúságú. Ha a bináris keresés egy x jelzést talál meg, mint leghosszabb egyező prefix, akkor x.bmp megadja a valódi leghosszabb egyező prefixet. A példánkban 11.BMP az 1-re mutat L 1 -ben. Ha a 11010 célcím szerint keresünk, akkor 11.BMP megadja a leghosszabb egyező prefixet 1-et. Ezen kiegészítések után a bináris keresés helyesen működik: A worst-case keresési idő O(log W). Ha R-ben kevesebb mint W különböző hossz fordul elő, mondjuk r, akkor a worst-case keresési idő O(log r). 18

A forwarding-tábla tárigénye A jelzések bevezetése nélkül O(N) tár. Ha egy L i -beli x prefixhez minden L j,1 j < i, hosszosztályban tárolunk egy jelzést, ha L j még nem tartalmaz bejegyzést x[1..j]-hez, prefixenként O(W) jelzésre lehet szükség. Így az adatstruktúra társzükségletére csak O(W N) korlátot tudunk adni. Ha a jelzéseket csak azokban a hosszosztályokban tároljuk, ahol tényleg szükséges (amiket a bináris keresés tényleg tesztel), akkor a korlát O(N log W). 19

A forwarding-tábla konstrukciója Az adatstruktúra felépítéséhez szükséges idő lineáris a tárolt értékek (bejegyzések+jelzések) számával, feltéve, hogy a táblákat L i -khez O( L i ) idő alatt fel tudjuk építeni. Ez érvényes hash-táblák esetén. R bejegyzéseit prefixhossz szerint növekvő sorredben dolgozzuk fel. Egy i hosszú x prefixet befűzzük L i táblájába. Ezután befűzzük a jelzéseket az L j táblákba, j < i, hossz szerint csökkenő sorrendben, amíg egy tábla nem tartalmaz egy igazi bejegyzést a megfelelő prefixhez. 20

A forwarding-tábla aktualizálása Egy (x,y) bejegyzés hozzáfűzése: Először (x,y)-t befűzzük L i -be, ahol i az x hossza. Az L j, j < i, táblákban be kell fűzni esetleg egy jelzést. Minden x jelzésnél a L j, j > i, táblában, amihez x a leghosszabb egyező prefix, az x.bmp mutatót (x,y)-ra kell állítani. Az aktualizálás nagyon időigényes lehet, mivel lehetséges, hogy sok jelzést kell aktualizálni. Egy bejegyzés törlésekor a szituáció hasonló. Tanács: Egy darabig gyüjtsük az aktualizálásokat és utánna építsük fel újra a teljes adatstruktúrát. 21

Irodalom Marcel Waldvogel, George Varghese, Jon Turner, Bernhard Plattner: Scalable High Speed IP Routing Lookups. Proc. ACM SIGCOMM '97, 25-36, 1997. Michael L. Fredman, János Komlós, and Endre Szemerédi: Storing a sparse table with O(1) worst case access time. Journal of the ACM, Vol. 31(3), 538--544, 1984. Martin Dietzfelbinger, Anna R. Karlin, Kurt Mehlhorn, Friedhelm Meyer auf der Heide, Hans Rohnert, and Robert E. Tarjan: Dynamic perfect hashing: upper and lower bounds, SIAM Journal on Computing, Vol. 23(4), 738-761, 1994. 22