[Kea-users] different lease times

Jason Keltz jas at yorku.ca
Fri Apr 5 19:54:54 UTC 2024


Darren,

I take that back (partially)...

At least one of

"client-classes": [
      {
        "name": "long-lease",
        "valid-lifetime": 604800
      },
      {
        "name": "short-lease",
        "test": "member('KNOWN') and not member('long-lease')"
      }
    ],

... Is still needed to define the alternate lease time.  Although I could be explicit:

"client-classes": [
      {
        "name": "long-lease",
        "valid-lifetime": 604800
      },
      {
        "name": "short-lease",
        "valid-lifetime": 300
        "test": "member('KNOWN') and not member('long-lease')"
      }
    ],

I do wonder if I can leave the test condition out of short-lease, again because I define who gets a short-lease and a long-lease explicitly.

Jason.


________________________________
From: Kea-users <kea-users-bounces at lists.isc.org> on behalf of Jason Keltz <jas at yorku.ca>
Sent: Friday, April 5, 2024 3:49 PM
To: Kea user's list <kea-users at lists.isc.org>
Subject: Re: [Kea-users] different lease times

Hi Darren,

Thanks.  I have this working now!  Excellent...

Since each host defines a mac address, and whether it's in short-lease or long-lease, then is this:

 "client-classes": [
      {
        "name": "long-lease",
        "valid-lifetime": 604800
      },
      {
        "name": "short-lease",
        "test": "member('KNOWN') and not member('long-lease')"
      }
    ],

Still needed?

Each reservation includes a mac address and :

"client-classes": [ "long-lease"] or

"client-classes": [ "short-lease"]

Is that not enough to build the client classes for long-lease and short-lease?

The definitions at the top include everyone by default, but I don't want them to include everyone..

Jason.

________________________________
From: Kea-users <kea-users-bounces at lists.isc.org> on behalf of Darren Ankney <darren.ankney at gmail.com>
Sent: Friday, April 5, 2024 3:31 PM
To: Kea user's list <kea-users at lists.isc.org>
Subject: Re: [Kea-users] different lease times

Hi Jason,

Here you go.  Not 100% sure it will work, however.  Decided to make
the default lease 300 and set the long lease time in the class that
reserved clients are added to.  Also note that I moved the reservation
inside the subnet.  This was to avoid any situation where you might
need to use "early-global-reservations-lookup" to make things work
properly.

{
  "Dhcp4": {
    "interfaces-config": {
      "interfaces": [
        "ens256"
      ]
    },
    "lease-database": {
      "type": "memfile",
      "persist": false
    },
    "calculate-tee-times": true,
    "option-data": [
      {
        "name": "domain-name-servers",
        "data": "10.0.0.1"
      }
    ],

    "valid-lifetime": 300,
    "subnet4": [
      {
        "subnet": "10.1.2.0/24",
        "id": 1,
        "option-data": [
          {
            "name": "routers",
            "data": "10.1.2.1"
          }
        ],
        "pools": [
          {
            "pool": "10.1.2.100-10.1.2.200",
            "client-class": "short-lease"
          }
        ],
        "reservations": [
          {
            "hw-address": "00:00:00:11:11:11",
            "ip-address": "10.1.2.12",
            "client-classes": [
              "long-lease"
            ]
          }
        ]
      }
    ],
    "loggers": [
      {
        "name": "kea-dhcp4",
        "severity": "DEBUG",
        "debuglevel": 99,
        "output_options": [
          {
            "output": "stdout"
          }
        ]
      }
    ]
  }
}


Thank you,
Darren Ankney

On Fri, Apr 5, 2024 at 2:17 PM Jason Keltz <jas at yorku.ca> wrote:
>
> Hi Darren,
>
> I tries this, but no success.  When I restart kea it complains that the class long-lease doesn't exist.  You defined short-lease as being known and not in long-lease, but how do you define long-lease?
>
> In the actual reservations, I tried both defining client-class of long-lease, and when the failed, I tried client-classes of long-lease, but kea still wants long-lease defined.
>
> The format of my configuration with reservations (in "pseudo-code")
>
> subnet4--
>       define subnet id 1
>       define pool for subnet id 1
>       include subnet id 1 reservations file - these reservations all define ip-address
>
>         define subnet id 2
>       define pool for subnet id 2
>       include subnet id 2 reservations file - these reservations all define ip-address
>              ...
>
> Include global reservations file (reservations specifying hw-address, hostname, and some option-data for each host) - no ip
>
> The goal is: hosts that get an IP from any pool have a shorter lease time, and hosts that have an ip-address reserved for them get a much longer lease time
>
> Jason.
>
> ________________________________
> From: Kea-users <kea-users-bounces at lists.isc.org> on behalf of Darren Ankney <darren.ankney at gmail.com>
> Sent: Friday, April 5, 2024 5:53 AM
> To: Kea user's list <kea-users at lists.isc.org>
> Subject: Re: [Kea-users] different lease times
>
> Hi Jason,
>
> Ahh yes.  I failed to remember the goal here.  All clients would be in
> that class.  I assume you have reservations for these static clients?
> You could, in these reservations add them to another class
> ("long-lease").  Then you could alter the test line in short lease:
>
> "test": "member('KNOWN') and not member('long-lease')",
>
> I'm not entirely sure that will work.  It depends on where your
> reservations are set.  You may have to experiment with:
> "early-global-reservations-lookup"
>
> FYI, if you'd like to see a change to "valid-lifetime" (such as
> allowing use inside a pool), then you could add a comment indicating
> your support of: https://gitlab.isc.org/isc-projects/kea/-/issues/953
> Be sure and describe, in detail, your use case for this change.
>
> Thank you,
> Darren Ankney
>
> On Thu, Apr 4, 2024 at 12:33 PM Jason Keltz <jas at yorku.ca> wrote:
> >
> > Hi Darren,
> >
> > I tried your suggestion, but unfortunately, it didn't quite work.
> > I modified my kea configuration as you specified.  My default
> > valid-lifetime is 4000.
> > In short-lease, I defined valid-lifetime to be 300 (exactly as yours is
> > specified).
> > In the pool used by my test host, I added the client-class for
> > short-lease as you specified.
> > I restarted kea dhcp server to ensure it re-read the configuration.
> > I checked for any existing lease from my test host "jastest", and there
> > was none.
> > I booted...
> > The lease was registered, and was for 300 seconds...
> >
> > [ { "arguments": { "leases": [ { "client-id": "01:ac:24:11:5f:be:b7",
> > "cltt": 1712245568, "fqdn-fwd": false, "fqdn-rev": false, "hostname":
> > "jastest", "hw-address": "ac:24:11:5f:be:b7", "ip-address":
> > "130.63.XX.YY", "state": 0, "subnet-id": 6, "valid-lft": 300 } ] },
> > "result": 0, "text": "1 IPv4 lease(s) found." } ]
> >
> > So good, so far, right?
> >
> > I then assigned my test host an IP, cleared the DHCP lease for it, and
> > booted... the host got the proper IP outside of the pool, but it ALSO
> > had valid-lifetime 300 and not 4000!
> >
> > Is this because:
> >
> >         "client-classes": [
> >            {
> >              "name": "short-lease",
> >              "test": "member('KNOWN')",
> >              "valid-lifetime": 300
> >            }
> >          ],
> >
> > ... automatically adds "short-lease" to any member of KNOWN?
> >
> > I just wish that ISC made it so that valid-lifetime could be configured
> > in pool.
> >
> > Jason.
> >
> > On 4/4/24 05:34, Darren Ankney wrote:
> > > Hi Jason,
> > >
> > >   Something like this might work:
> > >
> > >         "client-classes": [
> > >            {
> > >              "name": "short-lease",
> > >              "test": "member('KNOWN')",
> > >              "valid-lifetime": 300
> > >            }
> > >          ],
> > > ...
> > >          "subnet4": [
> > >              {
> > >                  "subnet": "10.1.2.0/24",
> > >                  "id": 1,
> > >                  "option-data": [
> > >                      {
> > >                          "name": "routers",
> > >                          "data": "10.1.2.1"
> > >                      }
> > >                  ],
> > >                  "valid-lifetime": 300,
> > >                  "pools": [
> > >                      {
> > >                          "pool": "10.1.2.100-10.1.2.200",
> > >                          "client-class": [ "short-lease" ]
> > >                      }
> > >                  ]
> > >              }
> > >          ],
> > >
> > > On Wed, Apr 3, 2024 at 10:56 AM Jason Keltz <jas at yorku.ca> wrote:
> > >> Hi Darren,
> > >>
> > >> Yes - "lease-lifetime" was my error - I meant "valid-lifetime".
> > >> I understand that I cannot apply "valid-lifetime" to a pool (although I
> > >> feel like I should be able to).
> > >> I already define client-class as "KNOWN" in all my pools so that unknown
> > >> hosts can't get an IP, and I understand that I can't use a second
> > >> client-class of "short-lease" in each pool.
> > >> I looked in the Kea code where options are defined, and thought I would
> > >> be able to add:
> > >>
> > >>              {
> > >>                   "name": "dhcp-lease-time",
> > >>                   "data": "300"
> > >>               }
> > >>
> > >> ... to "option-data" section for each host, but this didn't work
> > >> either.  I see that in the Kea docs, all-options.json skips from code 49
> > >> to code 52, thereby skipping over code 51 which is lease time.
> > >>
> > >> I tried adding "code": 51, to the section to my option above, but it
> > >> didn't make any difference.
> > >>
> > >> I tried adding "valid-lifetime" to the "reservations" section to see if
> > >> that would work, but it would not.
> > >>
> > >> Therefore, I'm still not sure how to implement different lease times for
> > >> pools.
> > >>
> > >> Jason.
> > >>
> > >> On 4/3/24 06:35, Darren Ankney wrote:
> > >>> Hi Jason,
> > >>>
> > >>>
> > >>>> would it be valid syntax to also set lease-lifetime in the pool instead of using the class?
> > >>>>
> > >>>>    "pools": [
> > >>>>                       {
> > >>>>                           "pool": "10.1.2.100-10.1.2.200",
> > >>>>                            "lease-lifetime": "300"
> > >>>>                       }
> > >>>> ]
> > >>> I cannot find evidence of a parameter called "lease-lifetime" but
> > >>> "valid-lifetime" cannot be set inside a pools [] block.
> > >>>
> > >>>> I already assign the pools to "client-class": "KNOWN" - can I specify multiple classes? "client-class": "KNOWN", "short-lease"?
> > >>>> If I use a class to do this, is the "valid-lifetime": 300 inside the subnet definition necesary? It is repeated in both the subnet and the client-class short-lease.
> > >>> The "valid-lifetime" inside the subnet was a mistake.  That was a
> > >>> relic of some earlier testing.  You cannot specify multiple classes on
> > >>> a client-class line.  I don't know if you can have both client-class
> > >>> and client-classes as I've never tried.  "client-class" does not do
> > >>> the same thing that "client-classes" does.
> > >>>
> > >>> Thank you,
> > >>> Darren Ankney
> > >> --
> > >> 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 at lists.isc.org
> > >> https://lists.isc.org/mailman/listinfo/kea-users
> >
> >
> > --
> > Jason Keltz
> > Computer Development Manager
> > Department of Electrical Engineering and Computer Science
> > York University
> > Toronto, Ontario Canada
> > Tel: (416) 736-2100 x. 33570
> > Fax: (416) 736-5872
> >
> > --
> > 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 at lists.isc.org
> > https://lists.isc.org/mailman/listinfo/kea-users
> --
> 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 at lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users
> --
> 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 at lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users
--
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 at lists.isc.org
https://lists.isc.org/mailman/listinfo/kea-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/kea-users/attachments/20240405/ea46bf20/attachment-0001.htm>


More information about the Kea-users mailing list