SRIOV VF port attachment timed out when there is a port which has the same MAC address

Solution Verified - Updated -

Issue

  • Create a SRIOV VF port with a specific MAC address.

    $ openstack port create --network net1 --vnic-type direct --mac-address aa:aa:aa:aa:aa:aa sriov_port
    

    Creating an instance with the SRIOV VF port fails with Failed to allocate the network(s), not rescheduling error:

    $ openstack server create --port sriov_port test-instance ......
    $ openstack server show test-instance 
    +------------------------+-----------------------
    | Field                  | Value                 
    +------------------------+-----------------------
       :
    | OS-EXT-STS:power_state | NOSTATE
    | OS-EXT-STS:task_state  | None
    | OS-EXT-STS:vm_state    | error
       :
    | fault                  | {'code': 500, 'created': '2023-01-01T01:01:01Z' ...... nova.exception.BuildAbortException: Build of instance xxxxxxxxxxxxxxx aborted: Failed to allocate the network(s), not rescheduling.\n'}
       :
    | status                 | ERROR
       :
    +------------------------+----------------------
    
  • nova-compute.log on a compute node where the instance creation was attempted shows the following error message:

    <nova-compute.log>
    WARNING nova.virt.libvirt.driver [......] [instance: xxxxxxxxxxxxxxx] Timeout waiting for [('network-vif-plugged', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')] for instance with vm_state building and task_state spawning.: eventlet.timeout.Timeout: 300 seconds
    
  • Neutron side doesn't show any ERROR messages, but the following INFO message is shown in /var/log/containers/neutron/sriov-nic-agent.log on the compute:

    INFO neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent [req-xxxxxxxxxx - - - - -] Device with MAC aa:aa:aa:aa:aa:aa has no active binding in host
    
  • There is another port which has the same MAC address as the SRIOV VF port's one:

    $ openstack port list --long
    | aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa | SRIOV-VF-port | aa:aa:aa:aa:aa:aa | ip_address='10.0.0.1', subnet_id='bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb' | DOWN   | None |                 |      |  
    
        ==> SRIOV VF port which was attached to the instance
    
    | cccccccc-cccc-cccc-cccc-cccccccccccc | another-port  | aa:aa:aa:aa:aa:aa |                                                                         | ACTIVE | None | compute:compute |      |   
    
        ==> another port which has the same MAC address
    

Environment

  • Red Hat OpenStack Platform 13
  • Red Hat OpenStack Platform 16
  • Red Hat OpenStack Platform 17

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content