How to enable gre/vxlan/vlan/flat network at one cloud at the same time ?

Asked by li,chen

Hi list,

I’m doing some function test based on neutron + ml2 plugin.

I want my cloud can support all kind of network, so I can do further comparison tests between different type of network.

So, I create 4 networks:

neutron net-list
+--------------------------------------+---------+------------------------------------------------------+
| id | name | subnets |
+--------------------------------------+---------+------------------------------------------------------+
| 1314f7bb-9b52-4db8-a677-a751e52aad0e | gre-1 | c0774200-7aff-44bd-b122-4264368947da 20.1.100.0/24 |
| 4e7d06f0-3547-446d-98ca-3adac416e370 | flat-1 | 83df18e1-ab2e-4983-8892-66d7699c4e9a 192.168.13.0/24 |
| c7e26ebc-078b-4375-b313-795a89a9d8bd | vlan-1 | 22789dfc-e41e-412c-a325-10a210f176c5 30.1.100.0/24 |
| fcd5c1a8-34ab-4e0c-9e4d-d99d168aa300 | vxlan-3 | 534558b0-c0a4-4c7e-add5-1f0abcb91cc3 40.1.100.0/24 |
+--------------------------------------+---------+------------------------------------------------------+

Because my machine only have 1 NIC port can be used for instances data network, so I start two dhcp agents:

neutron agent-list
+--------------------------------------+--------------------+-------------+-------+----------------+
| id | agent_type | host | alive | admin_state_up |
+--------------------------------------+--------------------+-------------+-------+----------------+
| 05e23822-0966-4c7c-9b16-687484385383 | Open vSwitch agent | b-compute05 | :-) | True |
| 1267a2c6-f7cb-49d9-b579-18e986139878 | Open vSwitch agent | b-compute06 | :-) | True |
| 55f457bf-9ffe-417b-ad50-5878c8a71aab | DHCP agent | b-compute05 | :-) | True |
| 928495d3-fac0-4fbf-b958-36c3627d9b18 | Open vSwitch agent | b-compute01 | :-) | True |
| 934c721b-8c7d-4605-8e03-400676665afc | Open vSwitch agent | b-network01 | :-) | True |
| bd491c90-3597-45ea-b4a0-f37610f2ed9b | DHCP agent | b-network01 | :-) | True |
| e07c8133-a3f6-4864-adb2-318f2233fe63 | Linux bridge agent | b-compute02 | xxx | True |
| e1070c1e-fcb6-43fc-b2a0-a81e688b814a | Open vSwitch agent | b-compute02 | :-) | True |
+--------------------------------------+--------------------+-------------+-------+----------------+

The DHCP agent started on b-compute05 is working for network flat-1 and vlan-1.
The DHCP agent started on b-network01 is working for network gre-1 and vxlan-3.

The Open vSwitch agent on b-compute05 and b-compute06 is configured to working for flat and vlan.
The Open vSwitch agent on b-compute01 and b-compute02 is configured to working for vxlan and gre.

Then I start to create new instances.

Here comes the issues:

1. Network will not be auto scheduled to the right DHCP agent.
It just randomly chose one of the active DHCP agent, and ignore whether the DHCP agent can work for that type of network or not.
And no error message can be found in /var/log/neutron/dhcp-agent.log.
Everything looks just fine.
Only, active instances will never get IP addresses from DHCP.
I have to assign network to the right DHCP by hand.

2. Similar issues to nova-scheduler.
Because nova-scheduler scheduler instances without awareness of what type of network compute node support.
So, it will scheduler instances to the wrong compute node that do not actually support the kind of network.
These instances will end with error status, and with error message in /var/log/nova/compute.log:

2014-01-10 14:59:48.454 9085 ERROR nova.compute.manager [req-f3863a12-30e9-420d-a44a-0dd9c0bd1412 c4633e89685d41c4a2d20a2234b5025e 45c69667e2a64c889719ef8d8e0dd098] [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] Instance failed to spawn
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] Traceback (most recent call last):
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1413, in _spawn
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] block_device_info)
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 2067, in spawn
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] write_to_disk=True)
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 3040, in to_xml
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] disk_info, rescue, block_device_info)
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 2927, in get_guest_config
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] inst_type)
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/vif.py", line 364, in get_config
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] _("Unexpected vif_type=%s") % vif_type)
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] NovaException: Unexpected vif_type=binding_failed
2014-01-10 14:59:48.454 9085 TRACE nova.compute.manager [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a]
2014-01-10 14:59:48.620 9085 AUDIT nova.compute.manager [req-f3863a12-30e9-420d-a44a-0dd9c0bd1412 c4633e89685d41c4a2d20a2234b5025e 45c69667e2a64c889719ef8d8e0dd098] [instance: d477a7c1-590b-485a-ac1a-055a6fdaca3a] Terminating instance

Anyone know what should I do to avoid these two issues ????
Or any suggestion about what I should do to change the cloud infrastructure to support 4 kind of network at the same time but without these issue ??

Thanks a lot !!
-chen

Question information

Language:
English Edit question
Status:
Answered
For:
neutron Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
yong sheng gong (gongysh) said :
#1

currently, there is no way to do network aware scheduling in nova scheduler or neutron scheduler.
we are assuming all of compute nodes and network nodes are using same networks.

Revision history for this message
li,chen (chen-li) said :
#2

Do we have plans for that ?

Revision history for this message
Edgar Magana (emagana) said :
#3

this is a very interesting point, it has been discussed in previous OpenStack summits but it is still not defined.

Can you help with this problem?

Provide an answer of your own, or ask li,chen for more information if necessary.

To post a message you must log in.