Differences of Bind 10 to other software
========================================

BIND 9
------

TODO: There are definitely more differences than just this.

DNS zone transfer:
* When an incoming zone transfer fails, for example because the
  received zone doesn't contain a NS record, bind 9 stops serving the
  zone and returns SERVFAIL to queries for that zone. Bind 10 still
  uses the previous version of zone.

RDATA implementations:
* IN/A: BIND 10 does not accept abbreviated forms of textual IPv4
  addresses for class-IN, type-A RDATA.  BIND 9 warns about it but
  still accepts it as the standard inet_aton() function.  Such forms
  should actually be NOT accepted per RFC 1035, but BIND 9 accepts them
  probably because of compatibility reasons.  Until our strict
  (and more correct) behavior causes operations issues, we'll keep it.

DNS data sources:
* In-memory data source does not sort RDATA of each RRset (in the
  DNSSEC order) while BIND 9 normally sorts them internally.  The main
  purpose of the BIND 9's behavior is to make the ordering
  predictable, but if the RDATA are rotated in DNS responses (which
  BIND 9 also does by default) the predictability wouldn't be that
  useful for the clients.  So we skip the sorting in the BIND 10
  implementation to simplify the implementation (and possibly make it
  a bit more efficient).

* If different RRs of the same RRset and their RRSIGs have different
  TTL when loaded to the in-memory data source, the lowest TTL among
  all RRs (whether it's the covered RRset or RRSIGs) will be used.
  BIND 9 shows some inconsistent policy on this point for unknown
  reason (sometimes the TTL of the first RR is used, sometimes the
  latest one is used).  We differ here firstly for consistency, and
  because it seems to be more compliant to the sense of RFC2181.
  In any case, the administrator should make the TTLs same, especially
  if the zone is signed, as described in RFC4034 (and, that will be
  normally ensured by zone signing tools).
