Hello,

I am using two routers on OpenBSD (called mulder and scully), and I wish
to make dhcpd listen on a carp interface between both of them. I am
using the synchronization mechanism:

    mulder# rcctl get dhcpd flags
    -y em2 -Y em2 carp0

    scully# rcctl get dhcpd flags
    -y em2 -Y em2 carp0

I tested it and it works great when both routers are up.

But what is explained in the man page is that it is only a realtime
sync. So if I understand correctly, when one of the hosts is down, there
is no way for it to get the new leases when it gets back up. My thought
about that is that it defeats the original purpose of the feature. My
concerns are confirmed by the test:

  1. Make sure that carp0 master is mulder.
  2. Stop dhcpd on scully.
  3. Plug a new machine using a dhcp client on the network of carp0.
  4. Observe that the lease is present in /etc/dhcpd.leases on mulder.
  5. Start dhcpd on scully.
  6. Observe that the lease is missing in /etc/dhcpd.leases on scully.

I have found no information about leases synchronization other than the
one given in dhcpd man page, but I guess there is no possible leases
recovery from other routers after a downtime, or when a new router is
inserted in the stack.

What is the correct solution to manage this case? Is there a possibility
for a router to ask for its missing leases when it gets up? Something
like this:

  0. mulder is up, scully is down.
  1. scully gets up and asks on multicast:
    "My last lease was created on date d, what's up since that date?"
  2. mulder answers:
    "Here is the leases created since d: ..."

Thanks.

Guy

Reply via email to