Hello,

I discovered this issue while preparing to migrate my virtual machine
and virtual network configuration from the old ISC server to KEA. This
problem is absent in the old ISC DHCPv4 server.

A minimal network topology to illustrate the problem. Note the absence
of any switches, virtual bridges, etc. Just a very simple topology with
two Ethernet cables connecting three hosts:


                       +--------------------------+
                       |                          |
        192.168.1.1/32 |         Host A           |192.168.1.1/32
             ___vif1.0_|   KEA DHCP server for    |_vif2.0___
            |          | subnet 192.168.1.0/24    |          |
            |          +--------------------------+          |
            |                                                |
            |                                                |
          eth0                                              eth0
+--------------------------             +--------------------------+
|                         |             |                          |
|         Host B          |             |         Host C           |
|      DHCP client 1      |             |      DHCP client 2       |
|                         |             |                          |
+-------------------------+             +--------------------------+

The expected behavior is that if we configure KEA to listen
on both vif1.0 and vif2.0 with a section in the kea-dhcp4.conf
file like this, both clients will be served with an IPv4
configuration:

  "interfaces-config": {
    "interfaces": [ "vif1.0", "vif2.0" ],
    "dhcp-socket-type": "raw"
  },

The actual behavior is that only Host B, client 1, which
is connected to the first interface listed in the "interfaces"
specification of the config file, receives an IPv4 configuration.

If we reverse the order of the interfaces like this:

    "interfaces": [ "vif2.0", "vif1.0" ],

then only Host C, client 2, which is now the client connected to
the first interface listed, vif2.0, gets an IPv4 configuration.

The ISC DHCP client handles this configuration perfectly and
serves both clients without any problem.

The workaround to cause the KEA server to also be able to serve
both clients is simply to assign vif2.0 a different address,
such as 192.168.1.2. After doing that and reloading the configuration,
Host C, client 2 finally also receives its configuration.

IMHO, this is not an acceptable workaround. I also discovered that
for each additional interface I added to serve another directly
connected client, it was necessary to use another address, such
as 192.168.1.3, for that next interface on the server, which in
this case would be vif3.0. With the old ISC client, I could assign
the same address to all three interfaces, which in this example is
192.168.1.1. So with the old ISC server, I only need to use N + 1
addresses to serve N clients, but with KEA, I need to use 2*N addresses.
This substantially reduces the pool of addresses from 192.168.1.0/24
that would be available for clients from 253 down to 126. The other
126 would need to be wasted on Host A, the KEA DHCP server.

More details and a likely cause of this issue in this previous
message:

https://lists.isc.org/pipermail/kea-users/2025-April/005506.html

Kind regards,

Chuck Zmudzinski

-- 
ISC funds the development of this software with paid support subscriptions. 
Contact us at https://www.isc.org/contact/ for more information.

To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users.

Kea-users mailing list
Kea-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/kea-users

Reply via email to