NOTIFY delay?

Jim Reid jim at rfc1035.com
Wed Feb 16 08:36:35 UTC 2005


>>>>> "Mark" == Mark K Pettit <pettit at yahoo-inc.com> writes:


    Mark> Hello.  In reading RFC1996 ("A Mechanism for Prompt
    Mark> Notification of Zone Changes"), I see the following section,
    Mark> which interests me:

    Mark>     4.3. If a master server seeks to avoid causing a large
    Mark> number of simultaneous outbound zone transfers, it may delay
    Mark> for an arbitrary length of time before sending a NOTIFY
    Mark> message to any given slave.  It is expected that the time
    Mark> will be chosen at random, so that each slave will begin its
    Mark> transfer at a unique time.  The delay shall not in any case
    Mark> be longer than the SOA REFRESH time.

    Mark>     Note: This delay should be a parameter that each primary
    Mark> master name server can specify, perhaps on a per-zone basis.
    Mark> Random delays of between 30 and 60 seconds would seem
    Mark> adequate if the servers share a LAN and the zones are of
    Mark> moderate size.

    Mark> My question is simple: Does BIND 8.X implement this "delay"?

Yes. This would have been obvious from the name server's logs. They'd
show that there was a random delay after zones were loaded before
NOTIFYs were sent out.

    Mark> I can find no option on the named.conf manpage which says
    Mark> anything about it.

That's because BIND has no configuration hooks for controlling this
delay interval. The server staggers the sending of NOTIFYs
automatically. In BIND8, the delay is up to 15 minutes in proportion
to the number of zones: the more zones, the longer the delay. Here's
the relevant code snippet from ns_notify():

        /*
         * Delay notification for from five seconds up to fifteen minutes,
         * unless reload was by "ndc reload <zone>" command.
         */
        if ((zp->z_flags & Z_NDC_RELOAD) != 0) {
                zp->z_flags &= ~(Z_NDC_RELOAD);
                delay = 1;
        } else {
                max_delay = MIN(nzones, 895);
                max_delay = MAX(max_delay, 25);
                delay = 5 + (rand() % max_delay);
        }



More information about the bind-users mailing list