From b0620e48df01b7f7b6b80310fa62f59ef293cdcb Mon Sep 17 00:00:00 2001 From: Swaminathan Vasudevan Date: Wed, 23 Apr 2014 13:51:04 -0700 Subject: [PATCH] Neutron OVS based Distributed Virtual Router This blueprint spec provides information about the Neutron OVS based Distributed Virtual Router Implementation. This changeset addresses gaps in the original blueprint, in order to make it current to upstream pushed code. This blueprint addresses both the East-West routing and North-South routing. Change-Id: I5f92a214ddd52d1a2dc3c6f990c0d42d559ff831 --- specs/juno/neutron-ovs-dvr.rst | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/specs/juno/neutron-ovs-dvr.rst b/specs/juno/neutron-ovs-dvr.rst index d4a37de4b..bf2ec006f 100644 --- a/specs/juno/neutron-ovs-dvr.rst +++ b/specs/juno/neutron-ovs-dvr.rst @@ -127,6 +127,74 @@ track the SNAT service on each node. | l3_agent_id | string(36) | YES | MUL | NULL | +------------------+--------------+------+-----+---------+ +3. ML2 DVR interface binding data model. + +:: + +-------------------+--------------+------+-----+---------+ + | Field | Type | Null | Key | Default | + +-------------------+--------------+------+-----+---------+ + | port_id | string(36) | NO | PRI | | + | host | string(255) | NO | PRI | | + | router_id | string(36) | YES | | NULL | + | vif_type | string(64) | YES | | NULL | + | vif_details | string(4095) | YES | | NULL | + | vnic_type | string(64) | YES | | NULL | + | profile | string(36) | YES | | NULL | + | cap_port_filter | boolean | YES | | NULL | + | driver | string(64) | YES | | NULL | + | segment | string(36) | YES | | NULL | + | status | string(16) | YES | | NULL | + +-------------------+--------------+------+-----+---------+ + +A new table that is used to hold port bindings for DVR router +interfaces only. +This is similar to the portbindings table, but this table will hold +bindings only for dvr router interfaces. + +The original portbindings table will also hold one-binding row +for a dvr router interface, but that won’t hold binding information. +That binding row is held there, only to ensure transparency of dvr presence +to the tenants themselves. + +Some of the significant fields in the above are: +port_id - This refers to the port id of the DVR Router interface for which +this binding is applied to. The port-id will refer to id field +of the port table. +host - This holds the host on which the DVR interface is bound. +router_id - This field indicates for which router interface, this +binding belongs. +status - This field represents the status of the dvr interface port on the +host, which is represented by this binding. + +The status field value of the single-binding row for dvr router +interface in the original portbindings table will now be an ORed result +of the above status field of all such bindings available in the above +table for dvr router interfaces. + +4. ML2 DVR Unique MAC Address Table: + +:: + +-------------------+--------------+------+-----+---------+ + | Field | Type | Null | Key | Default | + +-------------------+--------------+------+-----+---------+ + | host | string(255) | NO | PRI | | + | mac_address | string(32) | NO | | NULL | + +-------------------+--------------+------+-----+---------+ + +A new table that is used to hold Unique DVR Base mac assigned to OVS L2 +agent that is running in DVR Mode. + +For any given host where an OVS L2 Agent is running, only one MAC Address +from the DVR Base Mac pool is allocated to that OVS L2 Agent. This +allocation rpc cycle, completes during init() of the OVS L2 Agent. + +In order to make OVS L2 Agent run in DVR Mode, enable_distributed_routing +flag must be set to True in the [agent] section of ml2 ini file (ml2_conf.ini). + +Similarly, the DVR Base Mac Address which represents start of the pool, need +to be defined in neutron.conf + + REST API impact ---------------