[Kea-users] DHCPv6 option 16 and built in client class

Xuo Guoto xuoguoto at protonmail.com
Thu Dec 1 12:43:48 UTC 2022


Hello list,

I am trying to configure kea dhcpv6 to allocate prefix from a specific pool based on client classification based on vendor class option.

The kea config is: (showing only the subnet6 part)

"subnet6": [
{
"id": 1,
"subnet": "2404:640:4003:2600::/56",
"pools": [
{
"pool": "2404:640:4003:2600:0:0:0:1 - 2404:640:4003:263f:ffff:ffff:ffff:fffe"
}
],
"pd-pools": [
{
"prefix": "2404:640:5878:2640::",
"prefix-len": 58,
"delegated-len": 64
},
{
"prefix": "2404:640:5878:2680::",
"prefix-len": 58,
"delegated-len": 64
},
{
"prefix": "2404:640:5878:26c0::",
"prefix-len": 58,
"delegated-len": 64,
"client-class": "VENDOR_CLASS_dhv6_pool"
}
],
"option-data": [
{
"name": "dns-servers",
"data": "2404:640:4003:2640::dead:beef, 2404:640:4003:2640::cafe:babe"
}
]
}
],

Based on https://kea.readthedocs.io/en/kea-2.2.0/arm/classify.html?highlight=vendor_class#built-in-client-classes

<quote>
Some classes are built-in, so they do not need to be defined. Vendor class information is the primary example: the server checks whether an incoming DHCPv4 packet includes the vendor class identifier option (60) or an incoming DHCPv6 packet includes the vendor class option (16). If it does, the content of that option is prepended withVENDOR_CLASS_and the result is interpreted as a class.

</quote>

I expect that the dhcpv6 clients will be allocated IP from "2404:640:5878:26c0::" if the option 16 contains the value dhv6_pool, based on the above explanation.

The dhcpv6 client sends a packet with following payload:

localAddr=[::1]:0 remoteAddr=[fd40:761b:fff1:2::3]:546
msgtype=3(REQUEST), transid=0xdd45f5
type=00001, len=00010: 00:03:00:01:02:00:00:00:00:01
type=00002, len=00014: 00:01:00:01:2a:f2:70:1e:5e:b2:d7:b4:94:54
type=00003(IA_NA), len=00040: iaid=981586272, t1=1800, t2=2880,
options:
type=00005(IAADDR), len=00024: address=2404:640:4003:2600::2, preferred-lft=3600, valid-lft=300
type=00006, len=00002: 23(uint16)
type=00008, len=00002: 0 (uint16)
type=16, len=15, enterprise id=0x96xx, data-len0=9, vendor-class-data0='dhv6_pool'
type=00025(IA_PD), len=00041: iaid=1736983355, t1=1800, t2=2880,
options:
type=00026(IAPREFIX), len=00025: prefix=2404:640:5878:2641::/64, preferred-lft=3600, valid-lft=300
2 relay(s):
relay[0]: msg-type=12(RELAY_FORWARD), hop-count=1,
link-address=fd40:761b:fff1:2::3, peer-address=fd40:761b:fff1:2::2, 0 option(s)
relay[1]: msg-type=12(RELAY_FORWARD), hop-count=0,
link-address=2404:640:4003:2600::, peer-address=fe80::ffff:ffff:ff00:1, 2 option(s)
type=00018, len=00004: 00:00:00:04
type=00079, len=00008: 00:01:02:00:00:00:00:01

But kea is not recognizing the packet to be of class VENDOR_CLASS_dhv6_pool. Logs show the following:

2022-11-30 13:02:02.314 DEBUG [kea-dhcp6.dhcp6/1876234.139694032694912] DHCP6_CLASS_ASSIGNED duid=[00:03:00:01:02:00:00:00:00:01], tid=0xdd45f5: client packet has been assigned to the following class(es): UNKNOWN

Subsequently its getting a prefix from another pool:

2022-11-30 13:02:02.314 DEBUG [kea-dhcp6.dhcpsrv/1876234.139694032694912] DHCPSRV_MEMFILE_ADD_ADDR6 adding IPv6 lease with address 2404:640:5878:2641::
2022-11-30 13:02:02.314 INFO [kea-dhcp6.leases/1876234.139694032694912] DHCP6_PD_LEASE_ALLOC duid=[00:03:00:01:02:00:00:00:00:01], tid=0xdd45f5: lease for prefix 2404:640:5878:2641::/64 and iaid=1736983355 has been allocated for 300 seconds

How can I ensure that the packet is correctly classified so that the address gets allocated fro the correct pool.

X.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/kea-users/attachments/20221201/5fa195ff/attachment-0001.htm>


More information about the Kea-users mailing list