Merge "DHCP port per lswitch spec "

This commit is contained in:
Zuul
2017-10-25 09:38:51 +00:00
committed by Gerrit Code Review
2 changed files with 90 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
=====================
DHCP port per network
=====================
Problem Description
===================
Currently dragonflow creates one dhcp-port per enable-dhcp-subnet.
DF does not save information about packet subnet in the ovs metadata/registers.
For forwarding packets toward the dhcp-port its needs to install flow for
each port in the subnet.
This behaviour causes complexity in the code and create a performance penalty,
that because every change in subnet (updated/add/delete/enabled-dhcp/disabled-dhcp)
raises the need to do diff with the previous state, and install/remove all relevant flows.
Proposed Change
===============
Instead of creating dhcp-port per subnet, DF will create one port per
enabled-dhcp network (when enabled-dhcp-network defined as a network that
have at least one enable-dhcp-subnet).
This port will contain multiple ips - one for each dhcp subnet that
connected to the port. All port CUD operation will done with neutron
plugin for using it's ip-address-managemnt.
Neutron data-model impact
-------------------------
Instead of one dhcp logical port subnet, there will be
one dhcp-port per network.That port will be connected to all enabled-dhcp-subnet,
and will hold an ip for each subnet (The port owner will remain "neutron:dhcp").
Dragonflow data-model impact
----------------------------
Instead dhcp-lport per logical-subnet, there will be one dhcp-port
per logical-switch. enable_dhcp trait will be removed from logical-subnet.
(an upgrade code should be supplied).
Dragonflow controller impact
----------------------------
For forwarding the dhcp requests to the controller - the dhcp-app will install
one flow per lswitch (The lswitch can be identified in the ovs tables
by the OXM_OF_METADATA field).
when packets arrived to the dhcp-app, the subnet of the packets
will be identified by the lport (that information stored in reg6).
Packets that belong to subnet that not enabled dhcp will be dropped.
Advantage of that change
------------------------
* Remove the code complication that described above
* Reduce mumber of flows in dhcp tables
* Reduce the number of lports in the DB
Separate the DHCP logic
=======================
As part of the effort to reduce the coupling between components in
the system, this spec suggests moving all the dhpc-logic from the
mech_driver code to a separate code module.
This module will be invoked by the ml2-driver, and will function
independently. It's will use neutron registry _[1] for subscribing
to sunbet and lswitch CUD event's, and will be responsible to maintain
the dhcp-port according to the logic that described above.
References
==========
.. [1] https://docs.openstack.org/neutron-lib/latest/contributor/callbacks.html

View File

@@ -74,6 +74,7 @@ Specs
tunneling_app
logical_port_locality
extra_dhcp_opts
dhcp_port_per_network
Templates
---------