[Kea-users] full set of option82 agent options for v4, flex-id extension

Christian Kratzer ck at cksoft.de
Tue Jun 6 11:43:41 UTC 2017


Hi,

another thing turned up in my quest in evaluation the move from isc to kea dhcp.

I currently have all of the following options for identifying host reservations in isc dhcp:

   host-identifier option agent.circuit-id "lineid-1001";
   host-identifier option agent.remote-id "/lineid-1002/";
   host-identifier option agent.subscriber-id "lineid-1003";

We have older zyxel dslam that only have configurable remote-id.

We also have newer zyxel gear where the dhcp snooping agent can insert both circuit-id and remote-id

We also have cisco4506 switches that only do circuit-id.

In another setup I have a vlan per customer where the cisco l3 gateway only supports inserting a subscriber-id.

As you see the zyxel cpe we have also require strange quoting with / around the remote-id value.

Our provisining system knows which access node a cpe is connected to and will provision the appropriate host reservation ( via patched omapi for isc dhcp ) depending on the specific cas.e

We need all 3 though.

No comibinations like recently requested on the list, just alternatives.

The design paper on I found here https://kea.isc.org/wiki/HostReservationDesign says kea 1.1 would support all 3 circuit-id, remote-id, subscriber-id for the host identifier.

The postgresql db schema only has circuit-id:

 	ck at kea1:/usr/local/share/kea/scripts/pgsql$ grep host_identifier_type dhcpdb_create.pgsql  | grep ^INSERT
 	INSERT INTO host_identifier_type VALUES (0, 'hw-address');
 	INSERT INTO host_identifier_type VALUES (1, 'duid');
 	INSERT INTO host_identifier_type VALUES (2, 'circuit-id');
 	INSERT INTO host_identifier_type VALUES (3, 'client-id');
 	INSERT INTO host_identifier_type VALUES (4, 'flex-id');
 	ck at kea1:/usr/local/share/kea/scripts/pgsql$

Any reason remote-id and subscriber-id were left out.  Or is this just missing in the db schema ?

A related issue would turn up when using flex-id.  As we neeed different identifiers depending on the access technology we might also need different flex-id instances.   Currently we would be fine with ipv4 when remote-id and subscriber-id are added.  Also in ipv6 we currently have all the ldra set to option 18 interface-id.  Still a situation might turn up in the future where we might need multiple variations of flex-id.

A possible design for supporting this would be to have named flex-id instances that you preconfigure in the config file and then reference by name.  I am thinking of something like the following:

 	"Dhcp6": {
 	    "reservations": [
 		{
 			"identifier-type":"interface-id",
 			"flex-id": "'foo'",
 			"ip-addresses": [ "2001:db8::1" ]
 		},
 		{
 			"identifier-type":"remote-id",
 			"flex-id": "'bar'",
 			"ip-addresses": [ "2001:db8::2" ]
 		},
 	    ],
 	    "hooks-libraries": [
 		{
 		    "library": "/path/libdhcp_flex_id.so",
 		    "parameters": [
 			{
 				"name": "interface-id",
 				"identifier-type": "
 				"identifier-expression": "relay6[2].option[18].hex"
 			},
 			{
 				"name": "remote-id",
 				"identifier-expression": "relay6[2].option[37].hex"
 			}
 		    [
 		},
 		...
     ],


Greetings
Christian

-- 
Christian Kratzer                   CK Software GmbH
Email:   ck at cksoft.de               Wildberger Weg 24/2
Phone:   +49 7032 893 997 - 0       D-71126 Gaeufelden
Fax:     +49 7032 893 997 - 9       HRB 245288, Amtsgericht Stuttgart
Mobile:  +49 171 1947 843           Geschaeftsfuehrer: Christian Kratzer
Web:     http://www.cksoft.de/



More information about the Kea-users mailing list