On Mon, Feb 15, 2016 at 2:02 PM, Russell Bryant <russ...@ovn.org> wrote:
> On 02/01/2016 01:19 PM, Amitabha Biswas wrote:
>> This is a proposal regarding how Floating IP will be supported in
>> OpenStack using OVN.
>>
>> The complete proposal can also be found at
>> https://review.openstack.org/#/c/274274/.
>>
>> The additions proposed to the OVN Northbound Schema and Southbound Flows
>> are outlined here as well. The proposal assumes the availability of
>> conntrack NAT support in kernel.
>>
>> OVN Floating IP Design and Setup
>> ================================
>>
>> OpenStack/Neutron provides support for "Floating IP" where a VM/container
>> can be accessed from the external network using that "Floating IP"
>> assigned
>> to the VM. Neutron provides a 1-1 mapping between the "Fixed IP" assigned
>> to
>> the VM and the "Floating IP".
>>
>> Floating IP support for OVN is provided by utilizing the NAT capabilities
>> provided by OVS. Inbound traffic is DNATed (Floating IP --> Fixed IP) and
>> outbound traffic is SNATed (Fixed IP --> Floating IP).
>>
>> In the example below Fixed IP=10.1.1.5 is mapped to FloatingIP=172.16.0.5
>>
>> OVN Bridge Setup
>> ----------------
>>
>>         ------------                                          ------------
>>         |   VM     |                                          |FloatingIP|
>>         | 10.1.1.5 |                                          |172.16.0.5|
>>         | MAC[VM]  |                                          | MAC[FIP] |
>>         ------|-----                                          -----|-----
>>               | [UP]                                          [UP] |
>>  ----------|----------------------------------------------------|--------
>>     |   ----------------                                           | |
>>     |   |   LSwitch    |             (BR-INT)                      | |
>>     |   |   10.1.1.X   |                                           | |
>>     |   |              |                                           | |
>>     |   |L2 Flow Tables|                                           | |
>>     |   ----------------                                           | |
>>     |                \                                             | |
>>     |     lRouterPort \                      lRouterPortExt        | |
>>     |       10.1.1.1   \  ---------------------   | 172.16.0.2     | |
>>     |      MAC[PrvtRtr] \ {                   }   | MAC[ExtRtr]    | |
>>     |                    \|     LRouter       |   |                | |
>>     |                     |                   |   |   ------------------ |
>>     |                     | Flow Tables       |  \ /  |    LSwitch     | |
>>     |                     | 10.1.1.X   (Prv)  |-------|     (EXT)      | |
>>     |                     | 172.16.X.X (Ext)  |       |                | |
>>     |                     { 0.0.0.0 (Wildcard)}       |    L2 Flows    | |
>>     |                     ---------------------       |(diff from norm)| |
>>     |                                                 -----------------| |
>>     |                                              (localnet) | |
>>     |                                                (port)   | |
>>  ----------------------------------------------------------|-------------
>>                                                               |
>>                                                      ------------------
>>                                                      |                |
>>                                                      |    (BR-EXT)    |
>>                                                      |                |
>>                                                      ------------------
>>                                                               |
>>                                                       chassis |
>> [172.16.0.4]
>>                               ---------                       |
>>                  To Internet  |       |      Physical Net     |
>>                 <-------------| Phy   |---------------------------------
>> ...
>>                               | Router| 172.16.0.1 (default gateway)
>>                               |       |
>>                               ---------
>
> Thank you very much for your work on this.  I believe you said you had
> some code for this already?  What's your plan for the code?  Are you
> waiting for the various pre-requisites to be merged first?  (NAT
> support, OVN ARP)
>
> This proposal covers the case where we have floating IPs assigned
> directly to a hypervisor.  That model seems beneficial primarily because
> it avoids needing to send all traffic through a gateway node.  This is
> what Neutron supports today if you have DVR enabled.
>
Yes, the main benefit is the removal of the central gateway node.

> We've also been discussing an OVN gateway solution.  I think we should
> figure out exactly how this proposal works with that.  Would we also
> support floating IPs on OVN gateways instead of on each hypervisor?
>
> It seems that as long as we keep the logical and physical separation,
> the same northbound db configuration could be implemented both ways,
> depending on how the physical side has been configured (localnet ports
> like today, or a gateway).
>
I agree here. I also think figuring out how this solution works with
the GW solution is critical. I think this email thread ties into the
other thread Matt started [1] as well. This stuff is critically
important to get broader OVN adoption inside of OpenStack.

[1] http://openvswitch.org/pipermail/dev/2016-February/066102.html

>> OVN NorthDB Changes
>> ===================
>>
>> Map from VM Fixed IP to Floating IP, new options field in lport.
>>
>> Logical_Port TABLE
>> ------------------
>>
>> Type:
>>     floatingip: A port representing a Floating IP.
>>     router-external: A connection to an External Logical Router.
>
> What is router-external used for?  Is default_gw on Logical_Router not
> enough?
>
> Do you have an example workflow that shows how you would use this?
>
>>
>> Options:
>>     Options for floating ip ports:
>>         options: floatingip-port     optional string
>>                  Required: The name of Logical_Port to which this Floating
>>                  IP port is connected.
>
>
>
> --
> Russell Bryant
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to