Page MenuHomeVyOS Platform

DHCP Server configuration script performance degradation with multiple entries
Open, HighPublicBUG

Description

The Issue

The src/conf_mode/service_dhcp-server.py script exhibits significant performance degradation when configured with multiple shared networks/subnets. The slowdown becomes noticeable with dozens of entries and can become severe (dozens of minutes) with hundreds.

How to reproduce

The config that triggers the issue can be generated by the script:

#!/usr/bin/env bash

NUM=500         # how many VLANs/interfaces to generate
START_VLAN=3001 # first VLAN ID to use

for ((i=0; i<NUM; i++)); do
  vlan=$((START_VLAN + i))

  # Map i -> network 10.o2.o3.0/24
  # i = 0..999 gives you:
  #   10.0.0.0/24, 10.0.1.0/24, ... up to 10.3.231.0/24
  o2=$((i / 256))
  o3=$((i % 256))

  subnet="10.$o2.$o3.0/24"
  router="10.$o2.$o3.1"
  range_start="10.$o2.$o3.10"
  range_stop="10.$o2.$o3.200"

  cat <<EOF
set interfaces ethernet eth3 vif $vlan address '$router/24'
set interfaces ethernet eth3 vif $vlan description 'LAN VLAN $vlan'
set service dhcp-server shared-network-name VLAN$vlan subnet $subnet option default-router '$router'
set service dhcp-server shared-network-name VLAN$vlan subnet $subnet option name-server '$router'
set service dhcp-server shared-network-name VLAN$vlan subnet $subnet range 0 start '$range_start'
set service dhcp-server shared-network-name VLAN$vlan subnet $subnet range 0 stop '$range_stop'
set service dhcp-server shared-network-name VLAN$vlan subnet $subnet subnet-id '$vlan'
set service dhcp-server shared-network-name VLAN$vlan authoritative
set service dns forwarding allow-from '$subnet'

EOF

done

Reasons

There are a lot of them (probably only a surface):

  • iterates through all system interfaces for each listen-address
  • repeated interface enumeration for each subnet to check if an address is connected to the system
  • O(n²) subnet overlap detection logic

Solution

The logic of the script needs to be re-implemented to avoid unnecessary work.

Details

Version
2025.12.01-0024-rolling, 1.5
Is it a breaking change?
Perfectly compatible
Issue type
Performance optimization