Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • CLI
  • Multimedia
  • Plugins
  • Windows

Cloud

  • OpenStack
    • Application credentials
    • Authentificaton
    • Barbican (Secret)
    • CLI client (OSC)
    • Cleanup OpenStack
    • Cloud images
    • Designate (DNSaaS)
    • DevStack
    • Gerrit / OpenDev
    • Glance (image)
    • Heat
    • Horizon
    • Ironic / Bifrost
    • Magnum
    • MicroStack
    • Mistral
    • Neutron (network)
      • Address Scopes
      • Check OpenvSwitch
      • Create probe
      • Debug DHCP
      • Find router binding_host_id mismatch
      • Floating IPs
      • Ping VM from IP namespace
      • RBAC
      • port
      • router
    • Object storage
    • Octavia (loadbalancer)
    • OpenStack GPU passthrough
    • OpenvSwitch (OVS)
    • Quota
    • RabbitMQ
    • VPN
    • block storage volume (cinder)
    • compute (nova)
    • control
    • diskimage-builder
    • flavor
    • gnocchi
    • kolla-ansible
    • project
    • resource provider
    • server (VM)
    • user
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN
  • Incus

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid
  • openstack
  • network

Restart DHCP namespaces

openstack subnet set --no-dhcp ${SUBNET_ID}
openstack subnet set --dhcp ${SUBNET_ID}

Find unnecessary DHCP namespaces

MAX_DHCP_NS=3
SUBNET_IDS=$(openstack subnet list --dhcp -c ID -f value)
for SUBNET_ID in ${SUBNET_IDS}; do
    NETWORK_ID=$(openstack subnet show ${SUBNET_ID} -c network_id -f value)
    DHCP_PORTS="$(openstack port list --device-owner network:dhcp --network ${NETWORK_ID} -c ID -c binding_host_id -c fixed_ips -c status -f value)"

    if [ $(echo "${DHCP_PORTS}" | wc -l) -ne ${MAX_DHCP_NS} ]; then
        echo "NETWORK_ID: ${NETWORK_ID}"
        echo "${DHCP_PORTS}"

        echo
    fi
done

Add / remove DHCP ports

NETWORK_ID=xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx
CONTROL_NODE=az3-ctl3-prod

DHCP_AGENT_ID=$(openstack network agent list --host ${CONTROL_NODE} --agent-type dhcp -f value -c ID)
echo "DHCP_AGENT_ID: ${DHCP_AGENT_ID}"

# Add DHCP namespace
openstack network agent add network ${DHCP_AGENT_ID} ${NETWORK_ID} --dhcp

# Remove DHCP namespace
openstack network agent remove network ${DHCP_AGENT_ID} ${NETWORK_ID} --dhcp

# List DHCP namespaces for network
openstack port list --device-owner network:dhcp --network ${NETWORK_ID} -c id -c mac_address -c fixed_ips -c status -c binding_host_id

Remove unnecessary DHCP port

MAX_DHCP_NS=3
NETWORK_ID=8f397a1d-ee0e-4203-b8d9-803a244c429c

# DEBUG: openstack port list --network ${NETWORK_ID} --device-owner network:dhcp -c ID -c binding_host_id -c fixed_ips -c status --sort-column binding_host_id
DHCP_PORT_COUNT=$(openstack port list --network ${NETWORK_ID} --device-owner network:dhcp -f value | wc -l)
if [ ${DHCP_PORT_COUNT} -gt ${MAX_DHCP_NS} ]; then
    DHCP_AGENT_HOST=$(openstack port list --network ${NETWORK_ID} --device-owner network:dhcp -c binding_host_id -f value | sort -u | tail -1)
    echo "DHCP_AGENT_HOST: ${DHCP_AGENT_HOST}"
    # DEBUG: openstack network agent list --agent-type dhcp
    DHCP_AGENT_ID=$(openstack network agent list --agent-type dhcp --host ${DHCP_AGENT_HOST} -c ID -f value)
    echo "DHCP_AGENT_ID: ${DHCP_AGENT_ID}"

    # delete namespace
    openstack network agent remove network --dhcp ${DHCP_AGENT_ID} ${NETWORK_ID}
    sleep 10

    # delete obsolete DHCP port
    DHCP_PORT_ID=$(openstack port list --network ${NETWORK_ID} --device-owner network:dhcp -c ID -c binding_host_id -c fixed_ips -c status -f json | jq -r '.[] | select(.Status == "DOWN") .ID')
    echo "DHCP_PORT_ID: ${DHCP_PORT_ID}"

    openstack port delete ${DHCP_PORT_ID}

    # list remaining router namespaces
    openstack port list --network ${NETWORK_ID} --device-owner network:dhcp -c ID -c binding_host_id -c fixed_ips -c status
fi

# Debug on control node
tail -f /var/lib/docker/volumes/kolla_logs/_data/neutron/neutron-dhcp-agent.log
ip netns | grep dhcp | grep ${NETWORK_ID}

Get HIGH lease rate not found

for NODE in $(openstack compute service list --service nova-scheduler -c Host -f value); do
    echo ${NODE}
    ssh ${NODE} cat /var/lib/docker/volumes/kolla_logs/_data/neutron/dnsmasq.log | grep "lease not found" | grep Sep | awk '{print $1, $2}' | uniq -c | awk '$1 > 100 {print}'
    echo
done

Many dhcp requests

for NODE in $(openstack compute service list --service nova-scheduler -c Host -f value); do
    echo "NODE: ${NODE}"

    OUTPUT=$(ssh ${NODE} cat /var/lib/docker/volumes/kolla_logs/_data/neutron/dnsmasq.log | grep Sep | awk '/DHCPREQUEST/ {print $7}' | sort | uniq -c | awk '$1 > 100 {print $2}')
    for MAC in ${OUTPUT}; do
        echo "MAC: ${MAC}"

        PORT_ID=$(openstack port list --mac-address ${MAC} -c id -f value)
        echo "PORT: ${PORT_ID}"

        SERVER_ID=$(openstack port show ${PORT_ID} -c device_id -f value)
        echo "SERVER: ${SERVER_ID}"

        echo $(openstack server show ${SERVER_ID} -c addresses -c name -c id -c status -f value | paste - - - -)

        echo
    done
    echo
done

Fix Too few / many DHCP ports

NETWORK_ID=xxxx-xxxx-xxxx-xxxx

SUBNET_ID=$(openstack port list --device-owner network:dhcp --network ${NETWORK_ID} -c fixed_ips -f json | jq -r  '. | first | ."Fixed IP Addresses" | first | .subnet_id')
echo "SUBNET_ID=${SUBNET_ID}"

openstack subnet set --no-dhcp ${SUBNET_ID}
sleep 10
openstack subnet set --dhcp ${SUBNET_ID}
sleep 10
openstack port list --device-owner network:dhcp --network ${NETWORK_ID} -c id -c mac_address -c fixed_ips -c status -c binding_host_id
Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung