Nexus driver keeps trying to configure VLAN at the switch

Bug #1381285 reported by Danny Choi
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
networking-cisco
New
Undecided
Unassigned

Bug Description

OpenStack version: Juno

Issue: Nexus driver keeps trying to configure VLAN at the switch after update_port_postcommit failed due to ssh connection issue

Description:
I used devstack to deploy Multi-Node OpenStack with Cisco Nexus ML2 plugin for VLAN network type.

There’s a requirement to first ssh to the Nexus switch from the Controller node in order to set up the ssh credentials before launching VMs.

I did not do that and caused the ssh exception and update_port_postcommit failure, resulting in the VLAN not configured at the Nexus switch.

In the Controller’s screen-q-svc.log, it showed the Nexus driver repeatedly trying to configure the VLAN every 2+ seconds;
and, after a few minutes, causing ssh failure to the Nexus switch from my MAC.

DANNCHOI-M-G07T:~ dannychoi$ ssh -l admin 172.22.191.67
ssh_exchange_identification: Connection closed by remote host
DANNCHOI-M-G07T:~ dannychoi$ ssh -l admin 172.22.191.67
ssh_exchange_identification: Connection closed by remote host
DANNCHOI-M-G07T:~ dannychoi$ ssh -l admin 172.22.191.67
ssh_exchange_identification: Connection closed by remote host

This continues until the VM is deleted; and after a few minutes, I can ssh to the Nexus switch from my MAC.

Below is a snippet of the log that keeps repeating every 2+ seconds:

2014-10-14 20:41:26.381 DEBUG neutron.context [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Arguments dropped when creating context: {u'project_name': None, u'tenant': None} from (pid=961) __init__ /opt/stack/neutron/neutron/context.py:83
2014-10-14 20:41:26.382 DEBUG neutron.plugins.ml2.rpc [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Device 0f9454bc-1a31-4743-9c98-9c42a084e673 up at agent ovs-agent-qa4 from (pid=961) update_device_up /opt/stack/neutron/neutron/plugins/ml2/rpc.py:149
2014-10-14 20:41:26.402 DEBUG neutron.openstack.common.lockutils [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Got semaphore "db-access" from (pid=961) lock /opt/stack/neutron/neutron/openstack/common/lockutils.py:168
2014-10-14 20:41:26.426 DEBUG neutron.plugins.ml2.drivers.cisco.nexus.nexus_db_v2 [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] add_nexusport_binding() called from (pid=961) add_nexusport_binding /opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_db_v2.py:45
2014-10-14 20:41:26.431 DEBUG neutron.plugins.ml2.drivers.cisco.nexus.nexus_db_v2 [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] get_nexusvlan_binding() called from (pid=961) get_nexusvlan_binding /opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_db_v2.py:39
2014-10-14 20:41:26.437 DEBUG neutron.plugins.ml2.drivers.cisco.nexus.mech_cisco_nexus [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Nexus: create & trunk vlan %s from (pid=961) _configure_switch_entry /opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/mech_cisco_nexus.py:125
2014-10-14 20:41:26.438 DEBUG neutron.plugins.ml2.drivers.cisco.nexus.nexus_network_driver [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] NexusDriver:
      <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
        <configure>
          <__XML__MODE__exec_configure>
            <vlan>
              <vlan-id-create-delete>
                <__XML__PARAM_value>300</__XML__PARAM_value>
                <__XML__MODE_vlan>
                  <name>
                    <vlan-name>dan-300</vlan-name>
                  </name>
                </__XML__MODE_vlan>
              </vlan-id-create-delete>
            </vlan>

          </__XML__MODE__exec_configure>
        </configure>
      </config>
 from (pid=961) create_vlan /opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_network_driver.py:123
2014-10-14 20:41:26.438 DEBUG ncclient.transport.session [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] <SSHSession(session, initial daemon)> created: client_capabilities=['urn:ietf:params:netconf:capability:writable-running:1.0', 'urn:ietf:params:netconf:capability:rollback-on-error:1.0', 'urn:ietf:params:netconf:capability:validate:1.0', 'urn:ietf:params:netconf:capability:confirmed-commit:1.0', 'urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file,https,sftp', 'urn:ietf:params:netconf:capability:candidate:1.0', 'urn:ietf:params:netconf:capability:xpath:1.0', 'urn:ietf:params:netconf:capability:startup:1.0', 'urn:ietf:params:xml:ns:netconf:base:1.0', 'urn:liberouter:params:netconf:capability:power-control:1.0urn:ietf:params:netconf:capability:interleave:1.0'] from (pid=961) __init__ /usr/local/lib/python2.7/dist-packages/ncclient/transport/session.py:42
2014-10-14 20:41:26.438 DEBUG ncclient.transport.session [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] <SSHSession(session, initial daemon)> created: client_capabilities=['urn:ietf:params:netconf:capability:writable-running:1.0', 'urn:ietf:params:netconf:capability:rollback-on-error:1.0', 'urn:ietf:params:netconf:capability:validate:1.0', 'urn:ietf:params:netconf:capability:confirmed-commit:1.0', 'urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file,https,sftp', 'urn:ietf:params:netconf:capability:candidate:1.0', 'urn:ietf:params:netconf:capability:xpath:1.0', 'urn:ietf:params:netconf:capability:startup:1.0', 'urn:ietf:params:xml:ns:netconf:base:1.0', 'urn:liberouter:params:netconf:capability:power-control:1.0urn:ietf:params:netconf:capability:interleave:1.0'] from (pid=961) __init__ /usr/local/lib/python2.7/dist-packages/ncclient/transport/session.py:42
2014-10-14 20:41:26.440 DEBUG ncclient.transport.ssh [-] starting thread (client mode): 0xa417d690L from (pid=961) _log /usr/local/lib/python2.7/dist-packages/paramiko/transport.py:1428
2014-10-14 20:41:26.440 ERROR ncclient.transport.ssh [-] Exception: Error reading SSH protocol banner
2014-10-14 20:41:26.441 ERROR ncclient.transport.ssh [-] Traceback (most recent call last):
2014-10-14 20:41:26.441 ERROR ncclient.transport.ssh [-] File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 1582, in run
2014-10-14 20:41:26.441 ERROR ncclient.transport.ssh [-] self._check_banner()
2014-10-14 20:41:26.441 ERROR ncclient.transport.ssh [-] File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 1709, in _check_banner
2014-10-14 20:41:26.441 ERROR ncclient.transport.ssh [-] raise SSHException('Error reading SSH protocol banner' + str(e))
2014-10-14 20:41:26.441 ERROR ncclient.transport.ssh [-] SSHException: Error reading SSH protocol banner
2014-10-14 20:41:26.442 ERROR ncclient.transport.ssh [-]
2014-10-14 20:41:26.442 ERROR neutron.plugins.ml2.managers [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Mechanism driver 'cisco_nexus' failed in update_port_postcommit
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers Traceback (most recent call last):
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", line 291, in _call_on_drivers
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers getattr(driver.obj, method_name)(context)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/mech_cisco_nexus.py", line 227, in update_port_postcommit
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers self._configure_switch_entry)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/mech_cisco_nexus.py", line 190, in _port_action
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers func(vlan_id, device_id, host_id)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/mech_cisco_nexus.py", line 127, in _configure_switch_entry
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers switch_ip, vlan_id, vlan_name, intf_type, nexus_port)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_network_driver.py", line 177, in create_and_trunk_vlan
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers self.create_vlan(nexus_host, vlan_id, vlan_name)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_network_driver.py", line 124, in create_vlan
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers self._edit_config(nexus_host, target='running', config=confstr)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_network_driver.py", line 66, in _edit_config
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers mgr = self.nxos_connect(nexus_host)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers File "/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus/nexus_network_driver.py", line 106, in nxos_connect
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers raise cexc.NexusConnectFailed(nexus_host=nexus_host, exc=e)
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers NexusConnectFailed: Unable to connect to Nexus 172.22.191.67. Reason: Negotiation failed.
2014-10-14 20:41:26.442 TRACE neutron.plugins.ml2.managers
2014-10-14 20:41:26.443 ERROR oslo.messaging.rpc.dispatcher [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Exception during message handling: update_port_postcommit failed.
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher Traceback (most recent call last):
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 134, in _dispatch_and_reply
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher incoming.message))
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 177, in _dispatch
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher return self._do_dispatch(endpoint, method, ctxt, args)
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 123, in _do_dispatch
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher result = getattr(endpoint, method)(ctxt, **new_args)
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/neutron/neutron/plugins/ml2/rpc.py", line 161, in update_device_up
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher host)
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line 1136, in update_port_status
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher self.mechanism_manager.update_port_postcommit(mech_context)
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", line 527, in update_port_postcommit
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher continue_on_failure=True)
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", line 302, in _call_on_drivers
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher method=method_name
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher MechanismDriverError: update_port_postcommit failed.
2014-10-14 20:41:26.443 TRACE oslo.messaging.rpc.dispatcher
2014-10-14 20:41:26.444 ERROR oslo.messaging._drivers.common [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Returning exception update_port_postcommit failed. to caller
2014-10-14 20:41:26.444 ERROR oslo.messaging._drivers.common [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] ['Traceback (most recent call last):\n', ' File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 134, in _dispatch_and_reply\n incoming.message))\n', ' File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 177, in _dispatch\n return self._do_dispatch(endpoint, method, ctxt, args)\n', ' File "/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/dispatcher.py", line 123, in _do_dispatch\n result = getattr(endpoint, method)(ctxt, **new_args)\n', ' File "/opt/stack/neutron/neutron/plugins/ml2/rpc.py", line 161, in update_device_up\n host)\n', ' File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line 1136, in update_port_status\n self.mechanism_manager.update_port_postcommit(mech_context)\n', ' File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", line 527, in update_port_postcommit\n continue_on_failure=True)\n', ' File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", line 302, in _call_on_drivers\n method=method_name\n', 'MechanismDriverError: update_port_postcommit failed.\n']
2014-10-14 20:41:27.389 DEBUG neutron.context [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] Arguments dropped when creating context: {u'project_name': None, u'tenant': None} from (pid=961) __init__ /opt/stack/neutron/neutron/context.py:83
2014-10-14 20:41:27.390 DEBUG neutron.plugins.ml2.db [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] get_port_and_sgs() called for port_id 0f9454bc-1a31-4743-9c98-9c42a084e673 from (pid=961) get_port_and_sgs /opt/stack/neutron/neutron/plugins/ml2/db.py:212
2014-10-14 20:41:27.406 DEBUG neutron.plugins.ml2.db [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] get_port_and_sgs() called for port_id da4cfe0f-70fc-4fc3-ab1a-8a87df7ccabc from (pid=961) get_port_and_sgs /opt/stack/neutron/neutron/plugins/ml2/db.py:212
2014-10-14 20:41:27.418 DEBUG neutron.plugins.ml2.db [req-25e05ffb-da63-4aaf-b7a8-6e58c0762abc None None] get_port_and_sgs() called for port_id a66e2f7b-17a9-4fb6-b450-d0ac4048b5ee from (pid=961) get_port_and_sgs /opt/stack/neutron/neutron/plugins/ml2/db.py:212

Tags: nexus cisco
Revision history for this message
Danny Choi (dannchoi) wrote :
tags: added: cisco
Changed in neutron:
importance: Undecided → Medium
status: New → Confirmed
no longer affects: neutron
Henry Gessau (gessau)
tags: added: nexus
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.