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.
-- 
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
[email protected]
https://lists.isc.org/mailman/listinfo/kea-users

Reply via email to