[openstack-dev] [Neutron] dhcp port always in dead status
Li, Chen
chen.li at intel.com
Thu Jun 5 01:47:57 UTC 2014
Hi list,
I'm working under Havana.
openstack-neutron.noarch 2013.2-1.el6 @openstack-havana
openstack-neutron-linuxbridge.noarch 2013.2-1.el6 @openstack-havana
openstack-neutron-openvswitch.noarch 2013.2-1.el6 @openstack-havana
python-neutron.noarch 2013.2-1.el6 @openstack-havana
python-neutronclient.noarch 2.3.1-2.el6 @openstack-havana
I met an issue here:
1. We have a network "vlan-1" working under VLAN mode.
2. For instance booted from network "vlan-1", on compute node, easy to observed the vlan tag on the virtual port is "1":
ovs-vsctl show
b3ac6cf1-a2c1-4e64-9bf4-ac8e84814332
Bridge br-int
......
Port "qvod36113be-0f"
tag: 1
Interface "qvod36113be-0f"
......
3. Issue : the dhcp agent on network node, its virtual port's vlan id is not "1":
ovs-vsctl show
34e0c8b4-315c-42c5-9d7d-183d3a6fbd83
......
Bridge br-int
Port "tapc14349df-c0"
tag: 4095
Interface "tapc14349df-c0"
......
I have learned that VLAN tag 4095 has special meaning that the port is "dead".
By searching bugs, I found this one:
https://bugs.launchpad.net/neutron/+bug/1269795
But, the biggest difference between my issue and this bug is:
even I removed everything from openvswitch, and restart neutron-openvswitch-agent & neutron-dhcp-agent, the port is still not work.
While the bug reporter said if restart neutron-openvswitch-agent, things would back to work.
I did some tests like this:
1. The init status on network node:
a. ip netns => empty
b. ovs-vsctl show => only br-int & br-eth4(phynet) exit
34e0c8b4-315c-42c5-9d7d-183d3a6fbd83
Bridge br-int
Port br-int
Interface br-int
type: internal
Bridge "br-eth4"
Port "br-eth4"
Interface "br-eth4"
type: internal
Port "eth4"
Interface "eth4"
ovs_version: "1.11.0"
2. Start neutron-openvswitch-agent
3. Start neutron-dhcp-agent
Then I noticed the log in openvswitch-agent.log:
2014-06-04 14:17:56.627 41763 DEBUG neutron.agent.linux.utils [-]
Command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ovs-vsctl', '--timeout=2', '--', '--columns=external_ids,name,ofport', 'find', 'Interface', 'external_ids:iface-id="c14349df-c064-4731-ae50-de50dc0fef37"']
Exit code: 0
Stdout: 'external_ids : {attached-mac="fa:18:3e:9b:46:4d", iface-id="c14349df-c064-4731-ae50-de50dc0fef37", iface-status=active}\nname : "tapc14349df-c0"\nofport : 8\n'
Stderr: '' execute /usr/lib/python2.6/site-packages/neutron/agent/linux/utils.py:60
2014-06-04 14:17:56.628 41763 DEBUG neutron.plugins.openvswitch.agent.ovs_neutron_agent [-] Device c14349df-c064-4731-ae50-de50dc0fef37 not defined on plugin treat_devices_added /usr/lib/python2.6/site-packages/neutron/plugins/openvswitch/agent/ovs_neutron_agent.py:931
2014-06-04 14:17:56.628 41763 DEBUG neutron.agent.linux.utils [-] Running command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ovs-vsctl', '--timeout=2', 'set', 'Port', 'tapc14349df-c0', 'tag=4095'] execute /usr/lib/python2.6/site-packages/neutron/agent/linux/utils.py:43
2014-06-04 14:17:56.726 41763 DEBUG neutron.agent.linux.utils [-]
Command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ovs-vsctl', '--timeout=2', 'set', 'Port', 'tapc14349df-c0', 'tag=4095']
Exit code: 0
Stdout: ''
.......
In function treat_devices_added , openvswitch-agent try to get details for this port from RPC, so I checked neutron-server's log, and I get:
2014-06-04 06:35:56.603 78765 WARNING neutron.plugins.ml2.plugin [-] In _notify_port_updated(), no bound segment for port c14349df-c064-4731-ae50-de50dc0fef37 on network c7e26ebc-078b-4375-b313-795a89a9d8bd
2014-06-04 06:35:57.695 78765 WARNING neutron.plugins.ml2.rpc [-] Device c14349df-c064-4731-ae50-de50dc0fef37 requested by agent ovs36f40340c540 on network c7e26ebc-078b-4375-b313-795a89a9d8bd not bound, vif_type: unbound
This log happens when I start neutron-dhcp-agent.
Obviously, currently, when dhcp-agent start, it try to use the already exist port c1...37 (because the port used to work for dhcp).
Would/Should DHCP agent change the port status ?
But, why the port is still in "down" status ??
Looks like openvswitch-agent take this port as a dead port due to the wrong status in database:
neutron port-show c14349df-c064-4731-ae50-de50dc0fef37
+-----------------------+------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------+------------------------------------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | |
| binding:capabilities | {"port_filter": false} |
| binding:host_id | |
| binding:vif_type | unbound |
| device_id | dhcpb5e69c7b-a9a1-5cb7-9d79-465144102f2a-c7e26ebc-078b-4375-b313-795a89a9d8bd |
| device_owner | network:dhcp |
| extra_dhcp_opts | |
| fixed_ips | {"subnet_id": "22789dfc-e41e-412c-a325-10a210f176c5", "ip_address": "30.1.100.19"} |
| id | c14349df-c064-4731-ae50-de50dc0fef37 |
| mac_address | fa:18:3e:9b:46:4d |
| name | |
| network_id | c7e26ebc-078b-4375-b313-795a89a9d8bd |
| security_groups | |
| status | DOWN |
| tenant_id | 45c69667e2a64c889719ef8d8e0dd098 |
+-----------------------+------------------------------------------------------------------------------------+
Thanks,
-chen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140605/cb0298f2/attachment-0001.html>
More information about the OpenStack-dev
mailing list