Router schedule error in L3 router plugin as there are multi-external network

Bug #1638151 reported by jingting
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
DragonFlow
Invalid
Medium
Hong Hui Xiao

Bug Description

In the condition that there are more than one external network:

Testing procedure:
1 Creating several external networks
2 Creating a router
3 running command "neutron router-gateway-set router-ID external-network-ID"

neutron server reported error after executed command above:
Bad router request: No eligible l3 agent associated with external network 784fbbdd-4c91-4944-9dce-8a1f767b4097 found.

Problem analysis:
When running command router-gateway-set, it will update_router and then check if router need schedule. The method _check_router_needs_rescheduling in l3_db.py file as below[1] will neglect schedule with non-agent-based implementation of l3 services, such as Dragonflow.

Sustainable Solution:
There is no need to import object of router_scheduler_driver[2], because DF don't need it now.

[1] https://github.com/openstack/neutron/blob/master/neutron/db/l3_db.py#L277
[2] https://github.com/openstack/dragonflow/blob/master/dragonflow/neutron/services/l3_router_plugin.py#L73

rajiv (rajiv-kumar)
Changed in dragonflow:
assignee: nobody → rajiv (rajiv-kumar)
Revision history for this message
Omer Anson (omer-anson) wrote :

@jingting, what are the effects of the exception? Does the system continue to operate as expected, is admin intervention required, or is the command simply ignored?

This is important to understand the severity of this bug.

Changed in dragonflow:
importance: Undecided → High
rajiv (rajiv-kumar)
Changed in dragonflow:
assignee: rajiv (rajiv-kumar) → nobody
Omer Anson (omer-anson)
Changed in dragonflow:
importance: High → Medium
Revision history for this message
jingting (kangjingting) wrote :

@Omer, Yes, It's require dragonflow to support multi external network.

Hong Hui Xiao (xiaohhui)
Changed in dragonflow:
assignee: nobody → Hong Hui Xiao (xiaohhui)
Revision history for this message
Hong Hui Xiao (xiaohhui) wrote :

I don't know if it is a bug for dragonflow. It is an expected exception from neutron's point of view. By default, devstack will config "external_network_bridge" with br-ex, which means that neutron l3-agent will only accept certain external network. To enable multi-external network, either config external_network_bridge with empty string or config gateway_external_network_id should work.

On the other side, config option "external_network_bridge" is marked as deprecated_for_removal. It is expected to be removed in O release. The issue here will be gone then.

I will leave this bug open for several days for discussion, if everyone is OK, I will close it then.

Hong Hui Xiao (xiaohhui)
Changed in dragonflow:
status: New → Invalid
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.