mapped to the primary. Virgin leases now have an interleaved preference
between primary and secondary. [ISC-Bugs #17174]
- A bug was repaired where MAC Address Affinity for clients with no client
identifier was sometimes mishashed to the peer. Load balancing during
runtime and pool rebalancing were opposing. [ISC-Bugs #17174]
(moving leases between free and back to backup where there are an
odd number of leases).
[ISC-Bugs #16910]
- The 'pool' log line has been split into two messages, one before the
rebalance run, and one after.
[ISC-Bugs #16910]
- Any queued BNDACKs are transmitted before transmitting new BNDUPDs.
This enforces the correct sequence of events for the remote server
processing these messages.
[ISC-Bugs #16910]
3.1.0a1's tables resulted in a reduction in default server memory use.
The new selected values provide more of a zero sum (increasing the size
of tables likely to be populated, decreasing the size of tables unlikely).
- Lease structures appear in three spearate hashes: by IP address, by UID,
and by hardware address. One type of table was used for all three, and
improvements to IP address hashing were applied to all three (so UID and
hardware addresses were treated like 4-byte integers). There are now two
types of tables, and the uid/hw hashes use functions more appropriate
to their needs.
- The max-lease-misbalance percentage no longer causes scheduled rebalance
runs to be skipped: it still governs the schedule, but every scheduled
run will attempt balance.
[ISC-Bugs #16396]
entering normal state. [ISC-Bugs #16412]
- UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and
requeues all pending updates. This should reduce the number of spurious
'xid mismatch' log mesasges. [ISC-Bugs #16412]
active to free states. Leases that belonged to the failover secondary
are moved to BACKUP state rather than FREE upon exiting EXPIRED state.
If lease rebalancing must move leases, it tries first to move leases
that belong to the peer in need.
- The server no longer sends POOLREQ messages unless the pool is severely
misbalanced in the peer's favor (see 'man dhcpd.conf' for more details).
- Pool rebalance events no longer happen upon successfully allocating a
lease. Instead, they happen on a schedule. See 'man dhcpd.conf' for the
min-balance and max-balance statements for more information.
[ISC-Bugs #13308]
- Correctly handle an immediate peer transition to partner-down when we come
up in normal.
- Change 'peer_name' attribute of failover-state object to just 'name'.
- If we make transition from startup to recover_wait, set a timer to
get us to recover_done.
- If peer state update is received, _always_ check to see if we should
do a transition out of startup.
via OMAPI. In addition, attempts to set other fields in a state object
will return success without modifying the object; this is very ugly, but
required to allow an open -> modify -> update sequence of OMAPI operations
to work properly.
immediately responded to, but are placed on a queue (attached to
the dhcp_failover_state_t structure). Updated leases are committed
only when the queue is drained, giving a significant performance
increase.
The toack queue is drained:
a) when the queue size exceeds half the partner's max-unacked-updates
setting, or
b) two seconds after the last update message is received.
Added 'refcnt' and 'next' fields to the failover_message_t structure,
to allow messages to be placed on the toack queue.
On the sending side, leases are no longer committed immediately after
being acked. Rather, the commit is deferred until no further acks are
pending. This also gives a major gain in performance.