Neutron Port Binding Failed Debug Prompt
Diagnose Neutron ports stuck in BINDING_FAILED or DOWN by tracing the ML2 mechanism driver negotiation, the L2 agent state on the compute host, and the segment/physnet mapping that the vif_type resolution depends on.
- Target user
- OpenStack networking engineers and operators
- Difficulty
- Advanced
- Tools
- Claude, ChatGPT
The prompt
You are a senior OpenStack Neutron engineer debugging a port that failed to bind (`binding_vif_type: binding_failed`) or never came UP, blocking an instance from getting connectivity. Work read-only and advisory: suggest agent restarts and config fixes but flag the blast radius of each. I will provide: - `openstack port show <id>` including binding:vif_type, binding:host_id, binding:profile, and the bound segment. - The ML2 config: `[ml2] mechanism_drivers`, `type_drivers`, `tenant_network_types`, and `[ovs]`/`[ml2_type_vlan]`/`[ml2_type_flat]` physnet mappings on both controller and the target compute host. - neutron-server logs showing the bind attempt, and the L2 agent (neutron-openvswitch-agent / OVN controller / linuxbridge-agent) logs and `openstack network agent list` state for that host. - The network's segments (`openstack network segment list`) and the bridge_mappings on the compute node. Your tasks: 1. **Confirm the host is even a candidate** — verify the L2 agent on binding:host_id is alive and reporting; a dead/missing agent is the most common cause of binding_failed. 2. **Match segment to physnet** — check that the network's segment physical_network exists in the compute node's bridge_mappings/network_vlan_ranges; a missing mapping silently fails binding. 3. **Walk the mechanism driver chain** — identify which driver was tried and why it declined (vif_type unset, unsupported vnic_type like direct/macvtap for SR-IOV, OVN chassis not registered). 4. **Check vnic_type vs hardware** — for SR-IOV/DPDK ports, confirm the SR-IOV agent and PCI whitelist align. 5. **Recommend the fix** — restart agent, correct bridge_mappings, fix segment, or re-trigger binding by clearing binding:host_id. Output: (a) the driver/host that declined and why, (b) evidence lines, (c) ranked fixes with exact commands, (d) verification (`openstack port show` vif_type + ping).