]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Avoid lines counts and be more honest: rec is a big and complex piece
authorOtto <otto.moerbeek@open-xchange.com>
Fri, 16 Apr 2021 08:28:11 +0000 (10:28 +0200)
committerOtto <otto.moerbeek@open-xchange.com>
Fri, 16 Apr 2021 08:28:11 +0000 (10:28 +0200)
of code.

pdns/recursordist/docs/appendices/internals.rst
pdns/recursordist/docs/index.rst

index 81bfa025bd00b99750d05182e5f5e7d8f6f72be1..66b75a26c99e8b898b903fc7ca85d031a14dd587 100644 (file)
@@ -5,19 +5,16 @@ Internals of the PowerDNS Recursor
 to the recursor, or to help fix bugs. It is not required reading for a
 PowerDNS operator, although it might prove interesting.
 
-The PowerDNS Recursor consists of very little code, the core DNS logic
-is less than a thousand lines.
-
-This smallness is achieved through the use of some fine infrastructure:
-MTasker, MOADNSParser, MPlexer and the C++ Standard Library/Boost. This
-page will explain the conceptual relation between these components, and
-the route of a packet through the program.
+This Recursor depends on the use of some fine infrastructure: MTasker,
+MOADNSParser, MPlexer and the C++ Standard Library/Boost. This page
+will explain the conceptual relation between these components, and the
+route of a packet through the program.
 
  The PowerDNS Recursor
 ----------------------
 
 The Recursor started out as a tiny project, mostly a technology
-demonstration. These days it consists of the core plus 9000 lines of
+demonstration. These days it is a full blown recursor with many
 features. This combined with a need for very high performance has made
 the recursor code less accessible than it was. The page you are reading
 hopes to rectify this situation.
@@ -40,9 +37,8 @@ nameserver needs. It offers cooperative multitasking, which means there
 is no forced preemption of threads. This in turn means that no two
 **MThreads** ever really run at the same time.
 
-This is both good and bad, but mostly good. It means PowerDNS does not
-have to think about locking. No two threads will ever be talking to the
-DNS cache at the same time, for example.
+This is both good and bad, but mostly good. It means the recursor does not
+have to think about locking in many cases.
 
 It also means that the recursor could block if any operation takes too
 long.
@@ -354,8 +350,9 @@ exhausted all nameservers and all their IP addresses. DNS is
 surprisingly resilient that there is often only a single non-broken
 nameserver left to answer queries, and we need to be prepared for that.
 
-This is the whole DNS algorithm in PowerDNS, all in less than 700 lines
-of code. It contains a lot of tricky bits though, related to the cache.
+This is the whole DNS algorithm in PowerDNS. It contains a lot of
+tricky bits though, related to the caches and things like RPZ handling
+and DNSSEC validation.
 
 QName Minimization
 ------------------
index 68256812f80a8172e2b36d7c199c574b6192bd3a..01fe91d48cd0b91c253e6c2a43d138e1dd9ced35 100644 (file)
@@ -17,14 +17,13 @@ Notable features
 ----------------
 
 - Can handle tens of thousands of concurrent questions. A quad Xeon 3GHz has been measured functioning very well at 400000 real life replayed packets per second.
-- Relies heavily on Standard C++ Library infrastructure, which makes for little code.
+- Relies heavily on Standard C++ Library infrastructure.
 - Powered by a highly modern DNS packet parser that should be resistant against many forms of buffer overflows.
 - Best spoofing protection that we know about, involving both source port randomisation and spoofing detection.
 - Uses 'connected' UDP sockets which allow the recursor to react quickly to unreachable hosts or hosts for which the server is running, but the nameserver is down. This makes the recursor faster to respond in case of misconfigured domains, which are sadly very frequent.
-- Special support for FreeBSD, Linux and Solaris stateful multiplexing (kqueue, epoll, completion ports, /dev/poll).
+- Special support for *BSD, Linux and Solaris stateful multiplexing (kqueue, epoll, completion ports, /dev/poll).
 - Very fast, and contains innovative query-throttling code to save time talking to obsolete or broken nameservers.
 - Code is written linearly, sequentially, which means that there are no problems with 'query restart' or anything.
-- The algorithm is simple and quite nifty.
 - Does DNSSEC validation
 - Is highly scriptable in `Lua <http://lua.org>`_