neutron/neutron
Neil Jerram f3f5940201 DHCP agent: allow using gateway IPs instead of uniquely allocated
In each place where the DHCP agent runs, and for each subnet for which
DHCP is handing out IP addresses, the DHCP port needs - at the Linux
level - to have an IP address within that subnet.  Generally this
needs to be a unique Neutron-allocated IP address, because the
subnet's underlying L2 domain is bridged across multiple compute hosts
and network nodes, and for HA there may be multiple DHCP agents
running on that same bridged L2 domain.

However, if the DHCP ports - on multiple compute/network nodes but for
the same network - are _not_ bridged to each other, they do not need
each to have a unique IP address.  Instead they can all share the same
address from the relevant subnet.  This works, without creating any
ambiguity, because those ports are not all present on the same L2
domain, and because no data within the network is ever sent to that
address.  (DHCP requests are broadcast, and it is the network's job to
ensure that such a broadcast will reach at least one of the available
DHCP servers.  DHCP responses will be sent _from_ the DHCP port
address.)

Specifically, for some networking backends it makes sense to allow all
DHCP ports to use the subnet's gateway IP address, and thereby to
completely avoid any unique IP address allocation.

This change therefore enhances the DHCP agent code to be able to use
gateway IPs as an alternative to uniquely allocated ones, with the
choice between those being made by a new interface driver property,
'use_gateway_ips'.  The back-compatible default is to use unique IPs.
An interface driver that wants the DHCP agent to use gateway IPs can
achieve that by overriding as follows:

    @property
    def use_gateway_ips(self):
        return True

Partial-Bug: #1486649
Change-Id: I17e1dc9231a5ec35bd6f84c4c7aca6350d76e8ec
2015-09-01 23:46:15 +01:00
..
agent DHCP agent: allow using gateway IPs instead of uniquely allocated 2015-09-01 23:46:15 +01:00
api Reservations support 2015-08-17 15:54:19 -07:00
callbacks Improve callback registry devref documentation and usability 2015-08-12 10:15:07 -07:00
cmd Merge remote-tracking branch 'origin/feature/qos' into merge-branch 2015-08-17 15:16:55 +02:00
common Merge remote-tracking branch 'origin/feature/qos' into merge-branch 2015-08-17 15:16:55 +02:00
core_extensions Forbid attaching rules if policy isn't accessible 2015-08-12 09:52:33 +00:00
db Merge "Reservations support" 2015-08-18 09:00:53 +00:00
debug Migrate to oslo.log 2015-03-12 11:22:56 +01:00
extensions Merge remote-tracking branch 'origin/feature/qos' into merge-branch 2015-08-17 15:16:55 +02:00
hacking Restructure agent code in preparation for decomp 2015-06-26 15:06:49 +00:00
ipam Support subnetpool association to an address scope 2015-08-04 12:09:15 +05:30
locale Imported Translations from Transifex 2015-08-10 06:11:06 +00:00
notifiers Merge "Revert "Revert "Add VIF_DELETED notification event to Nova""" 2015-08-12 18:05:47 +00:00
objects Fix get_objects to allow filtering 2015-08-09 14:57:52 +03:00
openstack Switch to the oslo_utils.fileutils 2015-07-15 08:09:26 +03:00
plugins Merge "Get rid of exception converter in db/api.py" 2015-08-18 07:18:36 +00:00
quota Reservations support 2015-08-17 15:54:19 -07:00
scheduler Merge "Bug-Fix for unexpected DHCP agent redundant" 2015-08-11 04:37:03 +00:00
server Remove unneeded shebangs 2015-08-13 12:39:07 +02:00
services Merge "Don't fatal error during initialization for missing service providers" 2015-08-18 01:12:22 +00:00
tests DHCP agent: allow using gateway IPs instead of uniquely allocated 2015-09-01 23:46:15 +01:00
__init__.py Allow users to run 'tox -epy34' 2015-05-11 16:09:51 +02:00
auth.py Migrate to oslo.log 2015-03-12 11:22:56 +01:00
context.py Add DB support for resource usage tracking 2015-07-26 15:26:10 -07:00
i18n.py oslo: migrate to namespace-less import paths 2015-02-05 15:09:32 +01:00
manager.py Flavor Framework implementation 2015-07-16 09:07:41 -07:00
neutron_plugin_base_v2.py Basic subnetpool CRUD 2015-03-18 22:53:50 -07:00
policy.py Use oslo.log library instead of system logging module 2015-08-10 15:52:26 +03:00
service.py Avoid printing log options multiple times 2015-07-24 05:26:58 -07:00
version.py
wsgi.py Merge "Python 3: encode unicode response bodies" 2015-08-13 08:01:29 +00:00