The Domain Name System, DNS, is a fundamental part in the usability of the Internet, but its caching function is challenged by the increase of address size, number of addresses and automation. Meanwhile, there are limits in the memory capacity of certain devices at the Internet’s edge towards the Internet of Things. This study has taken a closer look at concurrent needs of DNS resolution and considered how DNS is affected by IPv6 address propagation, mobile devices, content delivery networks and web browser functions. The investigation has, in two freely available DNS resolver implementations, searched for the optimal cache memory management in constrained devices on, or at the border of, the Internet of Things. By means of open source access to the programs, Unbound and PowerDNS Recursor, each of their structures have been interpreted in order to approximate and compare memory requirements. Afterwards a laboratory simulation has been made using fictitious DNS data with real-world characteristics to measure the actual memory consumption at the server process. The simulation avoided individual adaption of program settings, involvement of DNSSEC data and imposing memory constraints on the test environment. The source code analysis estimated that Unbound handled A+AAAA records more optimally while PowerDNS Recursor was more efficient for PTR records. When using both record types as a whole the measurements in the simulation showed that Unbound was able to store DNS data more densely than PowerDNS Recursor. The result has shown that the standardized wireformat for DNS data used in Unbound is less optimal than the object-based of PowerDNS Recursor. On the other hand, the study showed that Unbound which was procedurally written in the C language was able to manage the cache more sparingly than the object- oriented PowerDNS Recursor which was developed in C++. / Domännamnsystemet, DNS, utgör en fundamental del av användbarheten för Internet, men dess cachefunktion utmanas av adressers ökande storlek, antal och automatisering. Parallellt råder begränsad minneskapacitet hos vissa enheter i Internets utkant mot Internet of Things. Studien har tittat närmare på nutida behov av namnuppslagning och har då betraktat hur DNS påverkats av IPv6- adressutbredning, mobila enheter, innehållsleveransnätverk och webbläsarfunktioner. Undersökningen har i två fritt tillgängliga serverprogramvaror för DNS-uppslag sökt efter den optimala hanteringen av cache hos begränsade enheter i, eller på gränsen till, Sakernas Internet. Med hjälp av tillgången till öppen källkod för programmen, Unbound och PowerDNS Recursor, har dess respektive strukturer tolkats för att uppskatta och jämföra minnesbehov. Därefter har en simulering gjorts i en laborativ miljö med fiktiva DNS-data av verklighetstrogen karaktär för att mäta den faktiska förbrukningen av minne på DNS-serverns process. Vid simuleringen undveks att individuellt anpassa programmens inställningar, att blanda in data för DNSSEC, samt att införa minnesbegränsningar i testmiljön. Undersökningen av källkod beräknade att Unbound var mer optimalt för posttyperna A+AAAA medan PowerDNS Recursor var effektivare för posttypen PTR. För båda posttyperna som helhet visade mätningarna i simuleringen att Unbound kunde lagra DNS-data tätare än PowerDNS Recursor. Resultatet har visat att det standardiserade meddelandeformatet för DNS-data som används i Unbound är mindre optimalt än det objektbaserade i PowerDNS Recursor. Å andra sidan visades att Unbound som var procedurellt skrivet i programspråket C lyckades hushålla med cacheminnet bättre än det objektorienterade PowerDNS Recursor som utvecklats i C++.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:miun-36484 |
Date | January 2019 |
Creators | Lindqvist, Hans |
Publisher | Mittuniversitetet, Institutionen för informationssystem och –teknologi |
Source Sets | DiVA Archive at Upsalla University |
Language | Swedish |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0018 seconds