Szerző: Bizó Dániel

2009. december 4. 13:27

Publikus DNS-szervereket lőtt fel a Google

Publikus DNS-szolgáltatást indított a Google. A kísérlet célja, hogy a netes szakmai közösséggel együtt egy best practice kidolgozásával tegye gyorsabbá a böngészést.

Bejelentése alapján a Google úgy hiszi, hogy egy gyorsabb DNS-infrastruktúra révén nagyban javítani lehetne a felhasználók által tapasztalt böngészési sebességet - a sebesség alapvető a webes szolgáltatások és alkalmazások sikerességében, melyekre stratégiája alapoz. A sebességen kívül cég ezenkívül fokozni kívánja a DNS biztonságát a mérgezésekkel és szolgáltatásmegtagadásos támadásokkal szemben, valamint a megbízhatóságát is. Ez utóbbi alatt azt érti, hogy a feloldás nem tolerál vagy javít semmiféle elírást, nem irányít át, és nem szűr: a felhasználó pontosan annak a domainnek az IP-címét kapja vissza, amelyet beírt, persze ha létezik olyan. A cég szerint egyes nyitott DNS-feloldók és ISP-k nem így járnak el.

A Google ezért kidolgozta a Public DNS szolgáltatást, hogy ezen keresztül tesztelje az általa eszközölt fejlesztéseket és konfiguráció helyességét. A jelek szerint a fókusz nem az, hogy a Google megalomán módon gigantikus DNS-szolgáltatóvá váljon, hanem hogy a felhalmozott tapasztalatait mások számára is elérhetővé téve, valamint más szolgáltatók és fejlesztők számára versenyt szolgáltatva gyorsítsa a névfeloldás átlagos sebességét, használhatóbbá téve a webet. Kísérleti DNS-szervereit a Google a 8.8.8.8 és 8.8.4.4 címeken tette elérhetővé - IPv6-os cím nincs.

A HUP.hu olvasóinak gyors próbálgatásai alapján a Public DNS egyes felhasználók számára jelenleg mintegy harmadával gyorsabb, mint az OpenDNS rendszere - igaz, előbbin minden bizonnyal kisebb a terhelés, mint az utóbbin. A különbség nagyjából 10-14 milliszekundumot jelent, amit természetesen döntően befolyásol a kliens és szerver távolsága is, nem véletlenül hangsúlyozza a Google, hogy a szervereket a felhasználók viszonylagos közelébe kell telepíteni. Ez bár önmagában nem jelentős, egy weblapon több tucat, akár különféle domaineken és aldomaineken található tartalom is lehet, így ezek a különbségek összeadódnak, és érzékelhetően akadozottabbá teszik a betöltődést. Az OpenDNS mindenesetre azonnal védekező pozícióba vágta magát.

Túlméretezés

A sebesség fokozása érdekében a Google elsősorban a DNS cache missekre koncentrált, vagyis azokra az esetekre, mikor a felhasználó felől beérkezett domain lekéréshez tartozó IP-cím vagy nem található a kérést kezelő szerver gyorsítótárában, vagy már lejárt az érvényessége. A webes óriás szerint ez a legnagyobb visszatartó tényező a feloldások sebességében, és az alacsony találati arányt számos tényező magyarázza, köztük az elégtelen erőforrások, szeparált gyorsítótárak, vagy a rövid érvényességi idők.

A Google ezeket a problémákat háromféle módon orvosolná. Az első, hogy bőséges kapacitásokkal kell ellátni a DNS-rendszereket, a tipikusan tapasztaltnál jóval nagyobb terhelés kiszolgálására méretezni az infrastruktúrát, legyen szó egy, vagy több fürtbe szervezett gépről, különös tekintettel a memóriára és a hálózati interfészre. A Google szerint ez az egyetlen hatásos módja annak, hogy a DoS-támadásokat elfogadhatóan kezelni tudjuk.

Kétszintű terheléselosztás

Ehhez kapcsolódik a második pont, a megfelelő szervezés és terheléselosztás. A Google arra figyelmeztet, hogy egy tipikus terheléselosztó algoritmus, mely például minden egyes lekérést, vagy lekérések egy kis csoportját a sorban következő DNS-szerverhez irányítja, nem legmegfelelőbb mód a feloldáshoz. Ekkor ugyanis minden egyes gép saját gyorsítótárral rendelkezik, vagyis egyes rekordokat redundánsan tárolnak, ami nem hatékony a memóriafelhasználás szempontjából, ráadásul egyes gépek rendelkeznek bizonyos domainek IP-címeivel, míg mások nem. Az elosztás így akár lassabbá teheti is a lekérést, mintha a megfelelő gépekhez több kérés érkezett volna, melyeknek a gyorsítótárában megtalálható a cím.

A Google ezt a kihívást úgy oldotta meg saját kísérleti DNS-feloldó rendszerében, hogy kétszintes hierarchiát alakított ki. Az első szinten egy viszonylag kicsi, globális cache-t hozott létre, mely szinkronban van az összes elsőszintű feloldó gépben - itt a terheléselosztás hagyományos módon, véletlenszerűen vagy rotációval történik. Ez a cache a legnépszerűbb domaineket tartalmazza. Ha itt nincs találat, akkor egy másik fürthöz továbbítja a rendszer a kérést, melyben a domaintartományt szétdarabolták a gépek közt, így minden egyes gép adott domainek egy listáját kezeli - például TLB és alfabetikus rendezés szerint. Ha egy domainre több lekérés érkezik, mind egy adott géphez kerül.

Komplex prefetching

A cache miss probléma mérséklésére bevetett harmadik eszköz a domainekhez tartozó IP-címek sűrű prefetchelése, azaz előtöltés, avagy a cache folyamatos melegítése. Ez annyit tesz, hogy külön felhasználói kérés nélkül is frissíti a rendszer a domainekhez tartozó IP-címeket. Az elv egyszerű, a megvalósítás azonban már korántsem triviális, és a Google is egy komplexnek nevezhető választ dolgozott ki. Mivel a kapacitások végesek, főként az internet méretéhez és dinamikus növekedéséhez viszonyítva, ezért ki kell tudni választani, mely neveket és milyen gyakran frissítse a DNS-infrastruktúra - meg kell tippelni, mely rekordokra lesz leginkább szükség. A probléma hasonlatos a processzorok gyorsítótárazásának problematikájához.

A kiválasztás ráadásul nem egyszeri, hanem újra és újra frissíteni kell a preferált domainek listáját, ráadásul védettnek kell lennie a DoS-támadásokkal és tipikus elírásokkal szemben, így nem hagyatkozhat kizárólag a beérkező feloldási kérésekre. A Google úgy találta, hogy a feladat komplexitása meghaladja az online DNS-rendszerek képességeit, így megalkotott egy külső, független rangsoroló rendszert, mely eteti majd a prefetchelő DNS-szervereket. A rangsoroláskor egy úgynevezett hasznossági faktort kalkulál a domain Google webes kereső indexe és a DNS-logok alapján, ahol a népszerűség mellett figyelembe veszi a tapasztalt találati arányt, és a cache miss költségét is . Ez a motor újra és újra rangsorolja a listát, és ezzel eteti a prefetchelést végző szervereket, melyek az egyes rekordok érvényességi (TTL) ideje alapján frissítenek.

További információ a Google Public DNS szolgáltatásról itt olvasható.

Nagyon széles az a skála, amin az állásinterjú visszajelzések tartalmi minősége mozog: túl rövid, túl hosszú, semmitmondó, értelmetlen vagy semmi. A friss heti kraftie hírlevélben ezt jártuk körül. Ha tetszett a cikk, iratkozz fel, és minden héten elküldjük emailben a legfrissebbet!

a címlapról