]> granicus.if.org Git - pdns/commitdiff
add documentation, make sure dnsdist builds separately with delaypipe
authorbert hubert <bert.hubert@netherlabs.nl>
Fri, 5 Jun 2015 17:04:29 +0000 (19:04 +0200)
committerbert hubert <bert.hubert@netherlabs.nl>
Tue, 9 Jun 2015 11:14:26 +0000 (13:14 +0200)
pdns/README-dnsdist.md
pdns/dnsdistdist/populate

index 611e74a9974f8cd1a763eb223823097c08b79da1..54afb55073e209428a1d7ec4b1b47ff348da57d6 100644 (file)
@@ -198,6 +198,7 @@ Current actions are:
  * Return with TC=1 (truncated, ie, instruction to retry with TCP)
  * Force a ServFail, NotImp or Refused answer
  * Send out a crafted response (NXDOMAIN or "real" data)
+ * Delay a response by n milliseconds
 
 More power
 ----------
@@ -320,6 +321,26 @@ To delete a limit (or a rule in general):
 1           0 nl., be.                                           qps limit to 1
 ```
 
+Delaying answers
+----------------
+Sometimes, runaway scripts will hammer your servers with back-to-back
+queries.  While it is possible to drop such packets, this may paradoxically
+lead to more traffic. 
+
+An attractive middleground is to delay answers to such back-to-back queries,
+causing a slowdown on the side of the source of the traffic.
+
+To do so, use:
+```
+> addDelay("yourdomain.in.ua.", 500)
+> addDelay({"65.55.37.0/24"}, 500)
+```
+This will delay responses for questions to the mentioned domain, or coming
+from the configured subnet, by half a second.
+
+Like the QPSLimits and other rules, the delaying instructions can be
+inspected or edited using showRule(), rmRule(), topRule(), mvRule() etc.
+
 Dynamic load balancing
 ----------------------
 The default load balancing policy is called 'leastOutstanding', which means 
@@ -528,6 +549,11 @@ Here are all functions:
    * `addQPSLimit({domain, domain}, n)`: limit queries within those domains (together) to n per second
    * `addQPSLimit(netmask, n)`: limit queries within that netmask to n per second
    * `addQPSLimit({netmask, netmask}, n)`: limit queries within those netmasks (together) to n per second   
+ * Delaying related:
+   * `addDelay(domain, n)`: delay answers within that domain by n milliseconds
+   * `addDelay({domain, domain}, n)`: delay answers within those domains (together) by n milliseconds
+   * `addDelay(netmask, n)`: delay answers within that netmask by n milliseconds
+   * `addDelay({netmask, netmask}, n)`: delay answers within those netmasks (together) by n milliseconds     
  * Answer changing functions:
    * `truncateTC(bool)`: if set (default) truncate TC=1 answers so they are actually empty. Fixes an issue for PowerDNS Authoritative Server 2.9.22.
  * Advanced functions for writing your own policies and hooks
index 66f7b609692ebbb76cc056eecac32733fd26f6e2..adbf0ad6e5e62e5e0067435e3f6cdc79f3db0039 100755 (executable)
@@ -9,7 +9,7 @@ ln -fs ../base32.hh ../base64.hh ../dnsdist.cc ../dnsdist.hh ../dnsdist-lua.cc \
   ../iputils.cc ../iputils.hh ../misc.cc ../misc.hh ../namespaces.hh \
   ../pdnsexception.hh ../qtype.cc ../qtype.hh ../sholder.hh ../sodcrypto.cc \
   ../sodcrypto.hh ../dnsdist-web.cc ../sstuff.hh ../dnsdist-tcp.cc \
-  ../dnsdist-carbon.cc .
+  ../dnsdist-carbon.cc ../delaypipe.cc ../delaypipe.hh .
 
 mkdir -p m4
 ln -fs ../../../m4/pdns_check_libsodium.m4 m4/