Home | History | Annotate | Line # | Download | only in doc
      1  1.3  christos Id
      2  1.1  christos 
      3  1.1  christos AUTOCONF
      4  1.1  christos - check/translate arguments to --with-facility
      5  1.1  christos 
      6  1.1  christos ZONE COMPILER
      7  1.1  christos - unify dns type table (name, dns type, yacc token, rdata types) prettier?
      8  1.1  christos - unify dns class table (name, dns type, yacc token) prettier?
      9  1.1  christos - one db file per zone (as an option?) (featurecreep)?
     10  1.1  christos   req by Alex (Bit). So that after rsync, zonec is fast with many zones.
     11  1.1  christos - if a zone is dropped from the config file, but not removed from the
     12  1.1  christos   nsd.db. NSD refuses to start. Should skip/drop the zone.
     13  1.1  christos   Redesign file format, so that you can skip a zone more easily, this
     14  1.1  christos   also makes multiply db files easier.
     15  1.1  christos - profile the zonec compiling speed. Speed it up. Many people complain about
     16  1.1  christos   this.
     17  1.1  christos - wireformat interop. testing for IPSECKEY type.
     18  1.1  christos - chown nsd nsd.db (Paul Wouters nsd-users mail)
     19  1.1  christos 
     20  1.1  christos SERVER
     21  1.1  christos - make sure that we dont copy anything from the query we dont want to copy, like
     22  1.1  christos   funny headers etc
     23  1.1  christos - From Aaron Hopkins: set O_NONBLOCK on all sockets. Now a udp raging herd of
     24  1.1  christos   server can get woken up when a message arrives. One server handles the packet,
     25  1.1  christos   the rest blocks on that socket and does not serve other sockets.
     26  1.1  christos - From Aaron Hopkins: write tcp length and tcp data in one write operation,
     27  1.1  christos   instead of multiple calls to write. Avoids Nagle algo delay in this case.
     28  1.1  christos   preallocate 2 bytes in front of buffer to put them into.
     29  1.1  christos - Test TCP performance (do a lot of AXFRs, different zone sizes, and compare
     30  1.1  christos   time averages).
     31  1.1  christos - From Aaron Hopkins: after you do select calls, do multiple read calls
     32  1.1  christos   per select. This polling improves performance in high-load situations.
     33  1.1  christos   Speed test to prove that it does so.
     34  1.1  christos - Turn off TC bit on all error replies.
     35  1.1  christos - Bug #133: print empty statistic blocks. Not sure if the feature is wanted.
     36  1.1  christos - XFRD should throttle the number of notifys going out for a zone to
     37  1.1  christos   x/minute. (even if updates are very often).
     38  1.1  christos - Option to only notify a batch of slaves (from loads) at a time, with
     39  1.1  christos   timeout between.
     40  1.1  christos - Round robin selection to send notify to secondaries. So the last one
     41  1.1  christos   on the notify list does not diverge.
     42  1.1  christos - xfrd NOTIFY timeouts exponential backoff.
     43  1.1  christos - query SOA before getting AXFR and then cutting it off, it causes an errlog
     44  1.1  christos   on the master. 
     45  1.1  christos - when verbose, print the ip addresses that cause network errors to the log.
     46  1.1  christos - the server reaps children every minute, this is bad for powersaving laptops.
     47  1.1  christos - Implement AXFR clarify, RFC 5936.
     48  1.1  christos 
     49  1.1  christos SECURITY
     50  1.1  christos 
     51  1.1  christos PURITY
     52  1.1  christos - some data is in network order some in host order, make it clear with prefixes
     53  1.1  christos   prettier?
     54  1.1  christos - brush up the function and identifiers names
     55  1.1  christos - The XFRD zone state can be split up in expired/service-possible and 
     56  1.1  christos   in idle/zone-transfer-busy state flags. Is this more beautiful?
     57  1.1  christos - no more #ifdefs, remove them all, but keep configure options.
     58  1.1  christos - getflags on socket before setflags nonblocking.
     59  1.1  christos - exponential backoff for retries xfrd and notify.
     60  1.1  christos - conformance to RFC: NSD accepts TSIG before OPT in additional, but this
     61  1.1  christos   is not legal, only TSIG after OPT is allowed.
     62  1.1  christos - Allow for username: uid:gid, next to uid.gid.
     63  1.1  christos - Log error when serial in xfrd.state is inconsistent with that from nsd.db.
     64  1.1  christos 
     65  1.1  christos NSD PATCH
     66  1.1  christos - -q(?) option: no output when no patch necessary
     67  1.1  christos - cleaner output on normal operation (don't mention memory)
     68  1.1  christos - patch on demand after a xfrd reload has occurred (including checks for disk 
     69  1.1  christos   memory and a reload timeout (no more often than 15 minutes or so)?).
     70  1.1  christos 
     71  1.1  christos CLEANUP
     72  1.1  christos - make so that startup sends SOA_INFO to xfrd just like reload does, prettier? 
     73  1.1  christos - dlopen and dynlib checks can be removed from autoconf scripts.
     74  1.1  christos - If presentation format NSEC3 stays, put optout-iterations into one 4byte
     75  1.1  christos   datatype, easier reading and printing, avoids ugly special cases.
     76  1.1  christos 
     77  1.1  christos DOCUMENTATION
     78  1.1  christos - document what to do when adding (or removing) a config option (what
     79  1.1  christos   changes have to be made in the code).
     80  1.1  christos 
     81  1.1  christos OPTIMISATIONS
     82  1.1  christos - delete entire zone for AFXR during reload read in,
     83  1.1  christos   now walks the tree, but could use a double linked list to speed up.
     84  1.1  christos - less memory churn in deleting RRs/adding RRs: keep rrset->capacity num.
     85  1.1  christos   initial read in capacity==limit, if you want to add RRs, alloc capacity*2.
     86  1.1  christos - less memory churn in deleting rrsets : keep a linked list of deleted rrsets
     87  1.1  christos   for reuse.
     88  1.1  christos   Keep a list (based on buckets of size of the malloc) of rr arrays.
     89  1.1  christos   Keep a list (based on buckets of size of malloc) of rdata arrays.
     90  1.1  christos   Keep a list (buckets on size) of rdata_data allocs.
     91  1.1  christos   For reuse, buckets on char size, because we know most are small anyway
     92  1.1  christos   large ones can be discarded/churned.
     93  1.1  christos - Look for special purpose memory allocators for NSD.
     94  1.1  christos - compress dnames in ixfr queries (write_soa_buffer) (zone 2x, mname, rname).
     95  1.1  christos   small gain, nasty code.
     96  1.1  christos - compress dnames in tsig records, keyname, algorithmname.
     97  1.1  christos - compress names in packets by pointing to uncompressed_dname entries.
     98  1.1  christos   After each DNAME(with uncompressed target) follows a CNAME that can be
     99  1.1  christos   compressed in this way.
    100  1.1  christos - Do not give servfail during reload quit sync process. Only stop old
    101  1.1  christos   server processes once the new ones are forked and answering for secondary
    102  1.1  christos   zones (so when xfrd is done with sending zone state to all children).
    103  1.1  christos   The brief double answers are preferable to brief SERVFAIL.
    104  1.1  christos - nsd manual programs contain identical functions that are written down multiple 
    105  1.1  christos   times. Do we need to introduce a util_programs.c or something?
    106  1.1  christos - reduce the memory leak on zone transfers (deleted domains are not removed from
    107  1.1  christos   tree).
    108  1.1  christos - Options server: ip-address: and zone: outgoing-interface are pretty much the same.
    109  1.1  christos - Options to make NSD restrict AXFR response messages to a single RR (RFC5936)
    110  1.1  christos 
    111  1.1  christos TESTS
    112  1.1  christos - tpkg test for bug 157: a valid NSID EDNS0 option generates FORMERR on
    113  1.1  christos 	nsd-3.0.5
    114  1.1  christos - tpkg test for bug 163: unable to read nsd.db when chroot'ed
    115  1.1  christos - tpkg test for bug 164: chkconfig
    116  1.1  christos - Update tpkg long tests
    117  1.1  christos - tpkg test for bug 347: NSEC3 no data tests when requesting DS
    118  1.1  christos From tpkg/bugzilla-bugs todo:
    119  1.1  christos !  - other ways to test this?
    120  1.1  christos ! 3   "RCODE for dynamic updates" --- how to send dynamic updates?
    121  1.1  christos ! 20   "256 questions per-se should generate form err"
    122  1.1  christos ! 22   "trailing byte in queries (see also bug4)" ALLOW TESTING WITH TRACES
    123  1.1  christos ! 31   "query section not included in 'NotImp' answers to updates"
    124  1.1  christos ! 37   "invalid packet echoed on FormErr" - how to send stuff with tcp replay
    125  1.1  christos ! 100   "zonec alters RRSIG inception/expiration" on sparc only --- hmmmm
    126  1.1  christos ! 29   "NSD sends answer on notify"  - cannot send notify with DIG
    127  1.1  christos M  - Moet nog
    128  1.1  christos M 157   "return FORMERR if edns query is received with version=0 and rdlen>0"
    129  1.1  christos M 163   "..."
    130  1.1  christos M 164   "chkconfig"
    131  1.1  christos -  - too little information to write a testcase
    132  1.1  christos - 4   "Correctly handle queries with too much data"  to little info
    133  1.1  christos - 6   "different name encodings?"
    134  1.1  christos - 7   "sometimes label compression skip some parts"
    135  1.1  christos - 8   "do not exit on sendto buffer exhaustion"
    136  1.1  christos - 10   "Segmentation violation while trying to destroy the database on exit"
    137  1.1  christos - 11   "EDNS(0) spurious formerr"
    138  1.1  christos - 14   "Magic string alignment"
    139  1.1  christos - 15   "nsd hangs on some queries..."
    140  1.1  christos - 16   "zonec dumps core with HASH -z nl nl -c . examples/zones/root"
    141  1.1  christos - 18   "name compression not quite 100% yet"
    142  1.1  christos - 28   "Wrong additional section RRcount in case of EDNS."
    143  1.1  christos - 35   "sending wrong name errors (NXDOMAIN)"
    144  1.1  christos - 36   "we should not bounce on RR Type when doing a referral"
    145  1.1  christos 
    146