OpenStack Networking (Neutron)
Go to file
Assaf Muller 0267c6a5ac Make DHCP agent scheduler physical_network aware
Currently neutron DCHP scheduler assumes that that every server running
a dhcp-agent can reach every network. Typically the scheduler can
wrongly schedule a vlan network on a dhcp-agent that has no reachability
to the network it's supposed to serve (ex: network's physical_network
not supported).

Typically such usecase can append if:

* physical_networks are dedicated to a specific service and we don't
  want to mix dnsmasqs related to different services (for
  isolation/configuration purpose),
* physical_networks are dedicated to a specific rack (see example
  diagram http://i.imgur.com/NTBxRxk.png), the rack interconnection can
  be handled outside of neutron or inside when routed-networks will be
  supported.

This change makes the DHCP scheduler network reachability aware by
querying plugin's filter_hosts_with_network_access method.

This change provides an implementation for ML2 plugin delegating host
filtering to its mechanism drivers: it aggregates the filtering done by
each mechanism or disables filtering if any mechanism doesn't overload
default mechanism implementation[1] (for backward compatibility with
out-of-tree mechanisms). Every in-tree mechanism overloads the default
implementation: OVS/LB/SRIOV mechanisms use their agent mapping to filter
hosts, l2pop/test/logger ones return empty set (they provide to "L2
capability").

This change provides a default implementation[2] for other plugins
filtering nothing (for backward compatibility), they can overload it to
provide their own implementation.

Such host filtering has some limitations if a dhcp-agent is on a host
handled by multiple l2 mechanisms with one mechanism claiming network
reachability but not the one handling dhcp-agent ports. Indeed the
host is able to reach the network but not dhcp-agent ports! Such
limitation will be handled in a follow-up change using host+vif_type
filtering.

[1] neutron.plugin.ml2.driver_api.MechanismDriver.\
      filter_hosts_with_network_access
[2] neutron.db.agents_db.AgentDbMixin.filter_hosts_with_network_access

Closes-Bug: #1478100
Co-Authored-By: Cedric Brandily <zzelle@gmail.com>
Change-Id: I0501d47404c8adbec4bccb84ac5980e045da68b3
2016-02-15 22:25:29 +01:00
bin Fixes typos Openstack -> OpenStack 2016-01-18 16:04:56 +00:00
devstack Add BGP Dynamic Routing DB Model and Basic CRUD 2016-02-11 14:43:35 -07:00
doc Add precommit_XXX event for security group and rules 2016-02-14 22:36:27 +08:00
etc BGP Dynamic Routing: introduce BgpDrScheduler model 2016-02-12 14:17:57 +05:30
neutron Make DHCP agent scheduler physical_network aware 2016-02-15 22:25:29 +01:00
rally-jobs Changes in rally-jobs/README.rst 2015-06-04 10:34:15 -04:00
releasenotes Make DHCP agent scheduler physical_network aware 2016-02-15 22:25:29 +01:00
tools Add necessary executable permission 2016-02-15 15:11:57 +08:00
.coveragerc Change ignore-errors to ignore_errors 2015-09-21 14:31:29 +00:00
.gitignore Automatically generate neutron core configuration files 2015-11-27 15:22:59 +00:00
.gitreview Fix .gitreview to not point at a branch 2015-08-17 13:51:51 -06:00
.mailmap Add mailmap entry 2014-05-16 13:40:04 -04:00
.pylintrc Start using neutron-lib for shared constants and exceptions 2016-02-10 16:41:18 -07:00
.testr.conf Workaround test stream corruption issue. 2015-09-05 04:19:40 +00:00
CONTRIBUTING.rst Workflow documentation is now in infra-manual 2014-12-05 03:30:37 +00:00
HACKING.rst Add hacking check for assertEqual HTTP code 2016-02-06 00:01:08 +08:00
LICENSE Adding Apache Version 2.0 license file. This is the official license agreement under which Quantum code is available to 2011-08-08 12:31:04 -07:00
MANIFEST.in Include alembic versions directory to the package 2015-10-21 07:26:24 +00:00
README.rst Update the URLs to the Cloud Admin Guide 2015-08-24 17:24:34 +02:00
TESTING.rst Compile OVS for functional tests 2016-02-04 11:06:22 +00:00
babel.cfg Use babel to generate translation file 2013-01-24 00:20:32 +08:00
openstack-common.conf remove openstack-common.conf 2016-01-08 12:58:59 +08:00
requirements.txt Updated from global requirements 2016-02-14 23:09:06 +00:00
run_tests.sh Remove check for bash usage 2015-04-07 15:15:33 +00:00
setup.cfg Add BGP Dynamic Routing DB Model and Basic CRUD 2016-02-11 14:43:35 -07:00
setup.py Updated from global requirements 2015-09-21 18:56:49 +00:00
test-requirements.txt Updated from global requirements 2016-02-14 23:09:06 +00:00
tox.ini Switch "dsvm-functional:" into same pattern as constraints 2016-02-11 18:21:36 -05:00

README.rst

Welcome!

You have come across a cloud computing network fabric controller. It has identified itself as "Neutron." It aims to tame your (cloud) networking!

External Resources:

The homepage for Neutron is: http://launchpad.net/neutron. Use this site for asking for help, and filing bugs. Code is available on git.openstack.org at <http://git.openstack.org/cgit/openstack/neutron>.

The latest and most in-depth documentation on how to use Neutron is available at: <http://docs.openstack.org>. This includes:

Neutron Administrator Guide

http://docs.openstack.org/admin-guide-cloud/networking.html

Networking Guide

http://docs.openstack.org/networking-guide/

Neutron API Reference:

http://docs.openstack.org/api/openstack-network/2.0/content/

Current Neutron developer documentation is available at:

http://wiki.openstack.org/NeutronDevelopment

For help on usage and hacking of Neutron, please send mail to <mailto:openstack-dev@lists.openstack.org>.

For information on how to contribute to Neutron, please see the contents of the CONTRIBUTING.rst file.