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