Madala DNS-latents on vÔtmetÀhtsusega tegur kiire interneti toimimises. Selle minimaalne hoidmine nÔuab hoolikat DNS-serverite valimist ja . Kuid kÔigepealt tuleb vabaneda tarbetutest pÀringutest.
Just seetĂ”ttu loodi DNS algselt vĂ€ga vahemĂ€llu salvestatava protokollina. Domeeni administraatorid seadistavad eluea (TTL) ĂŒksikutele kirjadele, ja resolvijad kasutavad seda teavet kirjade mĂ€lu hoidmiseks, et vĂ€ltida tarbetut liiklust.
Kas vahemÀllu salvestamine on efektiivne? MÔni aasta tagasi nÀitas mu vÀike uurimus, et see ei ole ideaalne. Vaatame praegust olukorda.
Teabe kogumiseks parandasin ma TTL vÀÀrtuse sĂ€ilitamiseks vastuse jaoks. See mÀÀratletakse kui kirjade minimaalne TTL, iga sisenemise pĂ€ringu jaoks. See annab hea ĂŒlevaate reaalsete liikluse TTL jaotumisest ning arvestab ĂŒksikute pĂ€ringute populaarsust. Parandatud serveri versioon töötas paar tundi.
Saadud andmekogum koosneb 1 583 579 kirjest (nimi, qtype, TTL, ajatempleid). Siin on TTL ĂŒldine jaotumine (X-telg on TTL sekundites):

Kui mitte arvestada vĂ€ikest tĂ”usu 86 400 (peamiselt SOA kirjade jaoks), on ĂŒsna ilmne, et TTL-d jÀÀvad madalale tasemele. Vaatame lĂ€hemalt:

Noh, TTL, mis on pikem kui 1 tund, ei ole statistiliselt oluline. Seega keskendume vahemikule 0â3600:

Enamik TTL-d on vahemikus 0 kuni 15 minutit:

Valdav enamus on vahemikus 0 kuni 5 minutit:

See ei ole eriti hea.
Kumulatiivne jaotumine muudab probleemi veelgi selgemaks:

Pooles DNS-vastustes on TTL 1 minut vÔi vÀhem, kolmes neljandikus on see 5 minutit vÔi vÀhem.
Aga oota, tegelikult on asi veel hullem. See TTL on autoriteetsete serverite poolt. Siiski saavad kliendi resolvijad (nt ruuteri, kohalikud vahemÀlud) TTL kÔrgemalt resolvijalt ning see vÀheneb iga sekundi jÀrel.
Seega saab klient tegelikult igat kirjet keskmiselt kasutada poole algsest TTL-ist, pÀrast mida saadab ta uue pÀringu.
VÔib-olla, et need vÀga madalad TTL-id puudutavad ainult ebatavalisi pÀringuid, mitte populaarseid veebisaite ja API-sid? Vaadakem:

X-telg on TTL, Y-telg on pÀringute populaarsus.
Kahjuks on kÔige populaarsemate pÀringute vahemÀllu salvestamine kÔige halvem.
LĂ€heneme sellele:

Kohtuotsus: kĂ”ik on tĂ”esti halvasti. Juba eelnevalt oli halb, kuid nĂŒĂŒd on veel hullem. DNS-i vahemĂ€lu on muutunud praktiliselt kasutuks. Kuna ĂŒha vĂ€hem inimesi kasutab oma pakkuja DNS-resolvrid (mĂ”istetavatel pĂ”hjustel), muutub viivitus mĂ€rgatavamaks.
DNS-i vahemĂ€lu on kasulik ainult sisu jaoks, mida keegi ei kĂŒlastanud.
Pange tÀhele, et tarkvara vÔib tÔlgendada madalaid TTL-e.
Miks nii?
Miks on DNS-i kirjade jaoks seatud nii madal TTL?
- Aegunud koormuse tasakaalustajad on jÀÀnud vaike seadistustega.
- Levitavad mĂŒĂŒte, et DNS-i koormuse tasakaalus sĂ”ltub TTL-ist (see ei ole tĂ”si â alates Netscape Navigatori ajast valivad kliendid juhusliku IP-aadressi RR komplektist ja proovivad sujuvalt teist, kui ei Ă”nnestu ĂŒhenduda)
- DNS-serveri administraatorid soovivad muudatusi kohe rakendada, seetÔttu on see lihtsam planeerida.
- DNS-serveri vĂ”i koormuse tasakaalustaja administraator peab oma ĂŒlesandeks tĂ”husalt rakendama konfiguratsiooni, mida kasutajad nĂ”uavad, mitte kiirendama veebilehtede ja teenuste tööd.
- Madalamad TTL-id annavad meelerahu.
- Inimesed seadistavad alguses madalad TTL-id katsetamiseks ja unustavad need hiljem muuta.
Ma ei lisanud âjuhtimissektoreidâ nimekirja, kuna see muutub ĂŒha vĂ€hem asjakohaseks. Kui peate suunama kasutajad teise vĂ”rku ainult vea lehe kuvamiseks, kui kĂ”ik muu on katki, on tĂ”enĂ€oliselt lubatav viivitus ĂŒle 1 minuti.
Lisaks tĂ€hendab minuti TTL, et kui autoriteetsed DNS-serverid on blokeeritud rohkem kui 1 minut, ei saa keegi enam juurde pÀÀseda sĂ”ltuvatele teenustele. Ja ĂŒleolekus ei aita, kui pĂ”hjuseks on konfiguratsiooni tĂ”rge vĂ”i hĂ€kkimine. Teiselt poolt, mĂ”istlike TTL-idega jĂ€tkab palju kliente eelmise konfiguratsiooni kasutamist ega mĂ€rka kunagi midagi.
Madala TTL-i eest on suures osas sĂŒĂŒdistada CDN-teenuseid ja koormuse tasakaalustajaid, eriti kui nad kombineerivad CNAME jooksva madala TTL-iga ja rekorditega, millel on samuti madalad (kuid sĂ”ltumatud) TTL-id:
$ drill raw.githubusercontent.com raw.githubusercontent.com. 9 IN CNAME github.map.fastly.net. github.map.fastly.net. 20 IN A 151.101.128.133 github.map.fastly.net. 20 IN A 151.101.192.133 github.map.fastly.net. 20 IN A 151.101.0.133 github.map.fastly.net. 20 IN A 151.101.64.133
Iga kord, kui CNAME vĂ”i ĂŒkskĂ”ik milline A-kirje aegub, tuleb saata uus pĂ€ring. MĂ”lema TTL on 30 sekundit, kuid need ei ĂŒhti. Tegelik keskmine TTL on 15 sekundit.
Aga oodake! KÔik on isegi hullem. MÔned resolverid kÀituvad sellistes olukordades, kus on kaks seotud madala TTL-iga, vÀga halvasti:
$ drill raw.githubusercontent.com @4.2.2.2 raw.githubusercontent.com. 1 IN CNAME github.map.fastly.net. github.map.fastly.net. 1 IN A 151.101.16.133
Level3 resolver töötleb ilmselt BIND-i. Kui te jÀtkate selle pÀringu saatmist, tagastatakse alati TTL, mis on vÔrdne 1. Sisuliselt, raw.githubusercontent.com ei cache'ita kunagi.
Siin on veel ĂŒks selline olukord vĂ€ga populaarse domeeniga:
$ drill detectportal.firefox.com @1.1.1.1 detectportal.firefox.com. 25 IN CNAME detectportal.prod.mozaws.net. detectportal.prod.mozaws.net. 26 IN CNAME detectportal.firefox.com-v2.edgesuite.net. detectportal.firefox.com-v2.edgesuite.net. 10668 IN CNAME a1089.dscd.akamai.net. a1089.dscd.akamai.net. 10 IN A 104.123.50.106 a1089.dscd.akamai.net. 10 IN A 104.123.50.88
VĂ€hemalt kolm CNAME-kirjet. Oi. Ăhel on korralik TTL, kuid see on tĂ€iesti kasutu. Teistes CNAME-des on algne TTL 60 sekundit, kuid domeenide akamai.net maksimaalne TTL on 20 sekundit ja ĂŒkski neist ei ole faasis.
Kuidas on domeenidega, mis pidevalt kĂŒsivad Apple'i seadmete kaudu?
$ drill 1-courier.push.apple.com @4.2.2.2 1-courier.push.apple.com. 1253 IN CNAME 1.courier-push-apple.com.akadns.net. 1.courier-push-apple.com.akadns.net. 1 IN CNAME gb-courier-4.push-apple.com.akadns.net. gb-courier-4.push-apple.com.akadns.net. 1 IN A 17.57.146.84 gb-courier-4.push-apple.com.akadns.net. 1 IN A 17.57.146.85
Sama probleem, mis Firefoxil, ja TTL jÀÀb enamiku ajast 1 sekundi peale, kui kasutatakse Level3 resolverit.
Dropbox?
$ drill client.dropbox.com @8.8.8.8 client.dropbox.com. 7 IN CNAME client.dropbox-dns.com. client.dropbox-dns.com. 59 IN A 162.125.67.3 $ drill client.dropbox.com @4.2.2.2 client.dropbox.com. 1 IN CNAME client.dropbox-dns.com. client.dropbox-dns.com. 1 IN A 162.125.64.3
Kirje safebrowsing.googleapis.com TTL vÀÀrtus on 60 sekundit, nagu ka Facebooki domeenidel. Ja taas, kliendi seisukohalt, need vÀÀrtused vÀhenevad poole vÔrra.
Kuidas oleks minimaalse TTL-i seadistamisega?
Kasutades nime, pĂ€ringutĂŒĂŒpi, TTL-i ja algselt salvestatud ajatemplit, kirjutasin skripti, et simuleerida 1,5 miljoni pĂ€ringu lĂ€bimist lĂ€bi vahemĂ€luresolveri, et hinnata liigsete pĂ€ringute hulka, mis saadetakse aegunud vahemĂ€lukirje tĂ”ttu.
47,4% pÀringutest tehti pÀrast olemasoleva kirje aegumist. See on pÔhjendamatult kÔrge.
Milline oleks mÔju vahemÀlule, kui minimaalse TTL-i seaksime?

X-akse on TTL-i minimaalne vÀÀrtus. Kirjed, mille algne TTL on sellest vÀÀrtusest kÔrgem, ei mÔjuta.
Y-akse nÀitab protsenti kliendi pÀringutest, kellel on juba vahemÀllu salvestatud kirje, kuid selle kehtivusaeg on lÔppenud ning ta teeb uue pÀringu.
Liigne pÀringute osakaal vÀheneb 47% -lt 36% -le, kui seada minimaalne TTL 5 minutile. Kui minimaalne TTL on 15 minutit, vÀheneb see osakaal 29% -le. Minimaalne TTL 1 tunni kohta vÀhendab selle 17% -ni. Oluline erinevus!
Kuidas oleks, kui te ei muudaks serveri poolt midagi, vaid seataksite minimaalset TTL-i kliendi DNS-vahemÀlus (ruutereid, kohalikke resolvereid)?

NÔutavate pÀringute arv vÀheneb 47% -lt 34% -le, kui seada minimaalne TTL 5 minutile, 25% -ni minimaalsega 15 minutit ja 13% -ni minimaalsega 1 tund. VÔib-olla on optimaalne vÀÀrtus 40 minutit.
Selle minimaalse muudatuse mÔju on tohutu.
Millised on tagajÀrjed?
Muidugi, teenuse saab ĂŒle viia uuele pilvepakkujale, uuele serverile, uuele vĂ”rgu, nĂ”udes klientidelt viimaste DNS-kirjete kasutamist. Ja piisavalt madal TTL aitab sujuvalt ja mĂ€rkamatult seda ĂŒleminekut teostada. Kuid uusi DNS-kirjeid ei oodata, et kliendid aktsepteeriksid 1 minuti, 5 minuti vĂ”i 15 minuti jooksul. Minimaalse eluea seadmine 40 minutile ei takista kasutajatel teenusele juurdepÀÀsu.
Kuid see vÔimaldab oluliselt vÀhendada viivitust ja suurendada privaatsust ning usaldusvÀÀrsust, vÀltides tarbetuid pÀringuid.
Muidugi ĂŒtleb RFC, et TTL-i tuleb rangelt jĂ€rgida. Kuid reaalsus on see, et DNS-sĂŒsteem on muutunud liiga ebaefektiivseks.
Kui teie töötab autoritatiivsete DNS-serveritega, palun kontrollige oma TTL-e. Kas teil tÔesti on vaja nii absurdelt madalaid vÀÀrtusi?
Muidugi on olemas ka pÔhjusi, miks seada madalaid TTL-e DNS-kirjadele. Kuid mitte 75% DNS-i liiklusest, mis praktiliselt ei muutu.
Ja kui mingitel pÔhjustel peate tÔeliselt kasutama madalaid TTL-e DNS-ile, veenduge samas, et teie saidil pole aktiivne vahemÀlumine. Sama pÔhjusel.
Kui teil on töötav kohalik DNS-vahemÀlu, nagu , mis vÔimaldab seada minimaalset TTL-i, kasutage seda funktsiooni. See on tÀiesti normaalne. Midagi halba ei juhtu. Seadke minimaalne TTL umbes 40 minuti (2400 sekundi) ja 1 tunni vahele. TÀiesti mÔistlik vahemik.
Allikas: habr.com
