[Kea-users] Cable modem setup, failed to select subnet

Darren Ankney darren.ankney at gmail.com
Sat Nov 2 09:30:14 UTC 2024


Hi Jesper,

This is solved in 2.6.1 with "stash-agent-option": true See here:
https://kea.readthedocs.io/en/kea-2.6.1/arm/dhcp4-srv.html#stash-agent-options
for further information.

Thank you,
Darren Ankney

On Sat, Nov 2, 2024 at 3:15 AM Jesper Nørgaard <jesper at trommefisk.dk> wrote:
>
> All,
>
> I am setting up a new KEA DHCP solution for an ISP. When clients are doing a DISCOVER they source from the CMTS which acts as a relay. They then get the correct IP address. But when the client comes back half time with a unicast, the DHCP server does not know in which subnet the client belongs and does a NAK, meaning the client looses the IP until the client does a new DISCOVER:
>
> tid=0x322cdf6c: failed to select a subnet for incoming packet, src 100.71.0.208, type DHCPREQUEST
>
> Shouldn’t the DHCP server be able to match the clients IP with a subnet, ignoring the client class?
>
>
>
> Config:
>
> {
> "Dhcp4": {
>     "control-socket": {
>         "socket-type": "unix",
>         "socket-name": "/tmp/kea4-ctrl-socket"
>     },
>     "hooks-libraries": [
>         {
>             "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_flex_id.so",
>             "parameters": {
>                 "identifier-expression": "option[82].option[2].hex",
>                 "replace-client-id": true
>             }
>         },
>         {
>             "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so",
>        "parameters": {
>                 "store-extended-info": true
>             }
>         },
>         {
>             "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_cb_cmds.so"
>         },
>  {
>      "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_host_cmds.so"
>  },
>  {
>      "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_host_cache.so"
>  },
>  {
>      "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_pgsql_cb.so"
>  },
>  {
>      "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_subnet_cmds.so"
>  },
>  {
>      "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_class_cmds.so"
>  },
>  {
>             "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so"
>         },
>
>  {
>      "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_legal_log.so",
>      "parameters": {
>                     "path": "/var/log/kea",
>                     "base-name": "kea-forensic4",
>       "time-unit": "second",
>       "count": 3600
>             }
>  }
>     ],
>     "lease-database": {
>         "type": "postgresql",
>         "port": 5432,
>         "max-reconnect-tries": 3,
>         "reconnect-wait-time": 50
>     },
>
>     "hosts-database": {
>         "type": "postgresql",
>         "port": 5432,
>         "max-reconnect-tries": 3,
>         "reconnect-wait-time": 50
>      },
>
>      "config-control": {
>         "config-databases": [
>         {
>             "type": "postgresql",
>
>             "port": 5432
>         }
>         ],
>         "config-fetch-wait-time": 20
>     },
>     "expired-leases-processing": {
>         "reclaim-timer-wait-time": 10,
>         "flush-reclaimed-timer-wait-time": 25,
>         "hold-reclaimed-time": 3600,
>         "max-reclaim-leases": 100,
>         "max-reclaim-time": 250,
>         "unwarned-reclaim-cycles": 5
>     },
>
>     "interfaces-config": {
>         "interfaces": ["ens35"],
>         "dhcp-socket-type": "udp"
>     },
>
>     //"host-reservation-identifiers": ["client-id", "hw-address", "circuit-id", "flex-id", "duid"],
>     "host-reservation-identifiers": ["flex-id"],
>     "match-client-id": true,
>
>     "renew-timer": 900,
>     "rebind-timer": 1800,
>     "valid-lifetime": 3600,
>
>
> // Logging configuration starts here. Kea uses different loggers to log various
> // activities. For details (e.g. names of loggers), see Chapter 18.
>         "loggers": [
>             {
>                 "name": "kea-dhcp4",
>                 "output_options": [
>                     {
>                         "output": "/var/log/kea/kea-dhcp4.log"
>                     }
>                 ],
>                 "severity": "INFO",
>                 "debuglevel": 99
>             },
>             {
>                 "name": "kea-dhcp4.leases",
>                 "output_options": [
>                     {
>                         "output": "/var/log/kea/kea-dhcp4-leases.log"
>                     }
>                 ],
>                 "severity": "INFO",
>                 "debuglevel": 0
>             },
>             {
>                 "name": "kea-dhcp4.alloc-engine",
>                 "output_options": [
>                     {
>                         "output": "/var/log/kea/kea-dhcp4-alloc-engine.log"
>                     }
>                 ],
>                 "severity": "INFO",
>                 "debuglevel": 99
>             },
>             {
>                 "name": "kea-dhcp4.ddns",
>                 "output_options": [
>                     {
>                         "output": "/var/log/kea/kea-dhcp4-ddns.log"
>                     }
>                 ],
>                 "severity": "INFO",
>                 "debuglevel": 0
>             }
>         ]
>     }
>
> }
>
>
>
>
> "shared-networks":[{
>         "interface":"ens35",
>         "name":"CMTS-A",
>         "option-data":[],
>         "relay":{"ip-addresses":["100.70.224.1","188.228.85.1"]},
>         "subnet4":[{"4o6-interface":"",
>                 "4o6-interface-id":"",
>                 "4o6-subnet":"",
>                 "client-class":"Option82Subscribers",
>                 "id":1,
>                 "option-data":[{
>                 "always-send":false,
>         "code":3,"csv-format":true,
> "data":"100.70.224.1",
> "name":"routers",
> "never-send":false,
> "space":"dhcp4"}],
>                 "pools":[{
>                 "option-data":[],
>         "pool":"100.70.224.2-100.70.255.254"}],
>                 "relay":{"ip-addresses":[]},
>         "reservations":[],
> "subnet":"100.70.224.0/19"},
> {"4o6-interface":"",
>         "4o6-interface-id":"",
>         "4o6-subnet":"",
>         "client-class":"Option82Subscribers",
>         "id":2,
>         "option-data":[{
>         "always-send":false,
> "code":3,
> "csv-format":true,
> "data":"188.228.85.1",
> "name":"routers",
> "never-send":false,
> "space":"dhcp4"}],
>         "pools":[],
>         "relay":{
>         "ip-addresses":[]},
> "reservations":[],
> "subnet":"188.228.85.0/26"}]},
>         {"interface":"ens35",
>                 "name":"CMTS-B",
>                 "option-data":[],
>                 "relay":{"ip-addresses":["100.71.0.1","188.228.85.65"]},
>                 "subnet4":[{
>                         "4o6-interface":"",
>                         "4o6-interface-id":"",
>                         "4o6-subnet":"",
>                         "client-class":"Option82Subscribers",
>                         "id":3,
>                         "option-data":[{
>                         "always-send":false,
>                 "code":3,
>         "csv-format":true,
> "data":"100.71.0.1",
> "name":"routers",
> "never-send":false,
> "space":"dhcp4"}],
>                         "pools":[{
>                         "option-data":[],
>                 "pool":"100.71.0.2-100.71.31.254"}],
>                         "relay":{
>                         "ip-addresses":[]},
>                 "reservations":[],
>         "subnet":"100.71.0.0/19"},
>         {"4o6-interface":"",
>                 "4o6-interface-id":"",
>                 "4o6-subnet":"",
>                 "client-class":"Option82Subscribers",
>                 "id":4,
>                 "option-data":[{
>                 "always-send":false,
>         "code":3,
> "csv-format":true,
> "data":"188.228.85.65",
> "name":"routers",
> "never-send":false,
> "space":"dhcp4"}],
>                 "pools":[],
>                 "relay":{"ip-addresses":[]},
>         "reservations":[],
> "subnet":"188.228.85.64/26"}]},
>                 {"interface":"ens35",
>                         "name":"CMTS-C",
>                         "option-data":[],
>                         "relay":{
>                         "ip-addresses":["100.71.32.1","188.228.85.129"]},
>                         "subnet4":[{
>                                 "4o6-interface":"",
>                                 "4o6-interface-id":"",
>                                 "4o6-subnet":"",
>                                 "client-class":"Option82Subscribers",
>                                 "id":5,"option-data":[{
>                                 "always-send":false,
>                         "code":3,
>                 "csv-format":true,
>         "data":"100.71.32.1",
> "name":"routers",
> "never-send":false,
> "space":"dhcp4"}],
>         "pools":[{
>         "option-data":[],
> "pool":"100.71.32.2-100.71.63.254"}],
>         "relay":{
>         "ip-addresses":[]},
> "reservations":[],
> "subnet":"100.71.32.0/19"},
> {"4o6-interface":"",
>         "4o6-interface-id":"",
>         "4o6-subnet":"",
>         "client-class":"Option82Subscribers",
>         "id":6,
>         "option-data":[{
>         "always-send":false,
> "code":3,
> "csv-format":true,
> "data":"188.228.85.129",
> "name":"routers",
> "never-send":false,
> "space":"dhcp4"}],
>         "pools":[],
>         "relay":{
>         "ip-addresses":[]},
> "reservations":[],
> "subnet":"188.228.85.128/26"}]}],
> "stash-agent-options":false,
> "statistic-default-sample-age":0,
> "statistic-default-sample-count":20,
> "store-extended-info":false,
> "subnet4":[],
> "t1-percent":0.5,
> "t2-percent":0.875,
> "valid-lifetime":3600},
>
> "daemonId":3,
> "daemonName":"dhcp4",
> "editable":true,
> "options":{
>         "options":[{"code":6,
>                 "fields":[{
>                 "fieldType":"ipv4-address",
>         "values":["81.167.36.5"]},
>         {"fieldType":"ipv4-address",
>         "values":["81.167.36.12"]}],
>         "options":null,
> "universe":4},
> {"code":15,
>         "fields":[{
>         "fieldType":"string",
> "values":[""]}],
> "options":null,
> "universe":4}],
>
>
> ————————————————
> Jesper Nørgaard
>
>
> --
> 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


More information about the Kea-users mailing list