BIND 8.2.3 T1A and Notify

Mark.Andrews at nominum.com Mark.Andrews at nominum.com
Mon Mar 6 05:27:43 UTC 2000


> Paul,
> 
> We have tested BIND 8.2.3 T1A IXFR here on Linux and HP/UX, it looks great!!
> 
> There is a problem we found with Notify. The feature of a slave sending out a
> notify after loading a zone is back.  This at one time was removed and in 
> 8.2.3 T1A is back.
> Looking at the RFC it looks like you put it back for  RFC compliance.
> 
> I am not sure that this is a good thing. Here is an example of why:
> 
> master.zone.com hosts zone.com
> 
> The slaves for zone.com are slave1.zone.com, slave2.zone.com, 
> and  slave3.offsite.com.
> 
> Someone updates zone.com on the master, and the serial number is
> incremented. master.zone.com sends a notify to slave1, slave2, and
> slave3. This is proper behavior, and it is a "good thing".
> However, with this feature put back in, the following happens:
> slave1.zone.com gets the notify, and performs an IXFR or AXFR. When
> slave1 loads the zone, it sends a notify to slave2 and slave3.
> slave2.zone.com and slave3.offsite.com do exactly the same thing, and
> slave2 notifies slave1 and slave3 - slave3 notifies slave1 and slave2.
> Now, on each of the slaves, we have something like:
> 
> // comments inline
> 
> rcvd NOTIFY (zone.com, IN, SOA) from [master.zone.com].53
> 
> // this is the notify from the master
> IXFR Success zone.com.db.bak.ixfr.tmp
> 
> // the IXFR process starts here
> NOTIFY(SOA) from non-master server (zone zone.com), from [slave2.zone.com].53
> 
> // this is the notify from the first slave, who has now loaded
> // the zone and is notifying the other slaves. this message
> // tells us that we have had a notify come in from someone who
> // is NOT a known master for that zone.
> 
> IXFR Merge success zone.com.db.bak.ixfr.tmp
> // the IXFR from the master has completed
> 
> NOTIFY(SOA) from non-master server (zone zone.com), from
> [slave3.offsite.com].53
> // another notify from the other slave, who has also just
> // loaded the zone and is now notifying the other slave servers.
> Sent NOTIFY for "zone.com IN SOA" (zone.com); 2 NS, 2 A
> // now that our slave server has loaded the zone, it is going
> // to go back and notify the other slaves (who, incidentally,
> // just got through notifying THIS server.
> 
> As you can see, this will create confusion as to why all the extra
> NOTIFY packets are getting tossed around. Now, imagine what will
> happen with one of our customers with the following configuration - one 
> master,
> 200 slave servers.
> Each of those 200 slave servers will notify each of the other 199.
> 200 servers * 199 notifies each = 38,900 unnecessary notifies. And
> 38,900 unnecessary confusing messages in the log.

	You would only get this many packets if there were 200 NS records
	as well as 200 slaves.  A more realistic senario w/ 200 slaves
	would be that 5-10 of them would be in the NS RRset the rest would
	be stealth servers.  This would lead to 1995-3990 packets. 
> 
> Unfortunately, according to RFC 1996 (DNS NOTIFY), this is absolutely
> correct behavior. I don't know if there's anything we can do about
> this.

	The 8.2.2 code, for slaves, was just bad in that it never
	even looked at the NS RRset, even with "notify yes;" in
	the zone block.

	We could default slaves to "notify no;".  This is consistent
	w/ existing behaviour (though not w/ RFC 1996).

	e.g.
		options {
			notify [slave|master] {yes|no};
		};

	Mark

> -------------------------------------------------------------
>  From RFC 1996:
> 3.10. If a slave receives a NOTIFY request from a host that is not a
> known master for the zone containing the QNAME, it should ignore the
> request and produce an error message in its operations log.
> 
> 4.2. Each slave is likely to receive several copies of the same
> NOTIFY request: One from the primary master, and one from each other
> slave as that slave transfers the new zone and notifies its potential
> peers. The NOTIFY protocol supports this multiplicity by requiring
> that NOTIFY be sent by a slave/master only AFTER it has updated the
> SOA RR or has determined that no update is necessary, which in
> practice means after a successful zone transfer. Thus, barring
> delivery reordering, the last NOTIFY any slave receives will be the
> one indicating the latest change. Since a slave always requests SOAs
> and AXFR/IXFRs only from its known masters, it will have an
> opportunity to retry its QUERY for the SOA after each of its masters
> have completed each zone update.
> --------------------------------------------------
> 
> Is this an implementation problem? Or should this discussion get moved to 
> Namedroppers?
> 
> -Kevin
> 
> 
> 
--
Mark Andrews, Nominum Inc. / Internet Software Consortium
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742                 INTERNET: Mark.Andrews at nominum.com



More information about the bind-workers mailing list