On Wed, Jul 14, 2021 at 4:02 PM Rodolfo Alonso Hernandez
<ralon...@redhat.com> wrote:
>
> Hello all:
>
> First of all, a bit of context. This question/request is related to [1]. The 
> problem we have in OpenStack is that we are trying to create a VIP but not 
> with a /32 IP address but with a CIDR.
>
> Since [2][3], is it possible to define VIPs in Neutron using OVN by creating 
> an unassigned port. This port will provide the VIP. When this VIP is set to a 
> bound port as "allowed_address_pairs", we set the LSP port type to "virtual".
>
> In Neutron we can assign a CIDR to a port as an "allowed_address_pairs". For 
> example:
> $ openstack port show port10 | grep allowed_address_pairs
> allowed_address_pairs   | ip_address='1.2.3.0/24', 
> mac_address='fa:16:3e:7d:ca:e4'
>
> The problem is that OVN, to set the virtual LSP chassis and thus create the 
> OpenFlow rules in the selected OVS, is expecting an ARP from the exact IP 
> address that matches with the VIP IP address. Any other IP address in the 
> CIDR '1.2.3.0/24' (following the example provided), won't trigger the rule 
> creation.
>
> Is there any mechanism to provide support for a virtual CIDR instead of a 
> VIP? If not, are there any plans for this?

Hi Rodolfo,

As you know we have the logical port of type  - virtual to support the
use case where VIP is an IP.

Suppose if a logical port 'P' is created with address -
'50:54:00:00:00:03 10.0.0.3', ovn-northd adds
the below logical flow in the "lr_in_arp_resolve" logical router
pipeline (if the logical switch of
port 'P' is connected to the logical router),

  - table=14(lr_in_arp_resolve  ), priority=100  , match=(outport ==
"lr0-sw0" && reg0 == 10.0.0.3), action=(eth.dst = 50:54:00:00:00:03;
next;)


If the logical port 'P' is of type virtual, then ovn-northd modifies
the above logical flow to set the eth.dst to that of the virtual
parent.

In the issue you mentioned above,  since neutron doesn't set the
logical port 'P' as virtual, the eth.dst of the logical port 'P' is
used
and the packet gets dropped because the port 'P' is down.

I'm not sure if we can provide support for a virtual CIDR.

I think the problem would be solved if ovn-northd adds the above
arp_resolve flow only if the logical port is "UP".
Since the logical port 'P' would not be set as virtual and since it is
not bound to any VM, this could work.

But this would cause some latency as ovn-northd need to add this
logical flow after the logical port is UP.
Probably we can make use of the existing "lsp_is_up" config option for this.


Thanks
Numan

> Thank you in advance.
> Rodolfo Alonso (ralon...@redhat.com).
>
> [1]https://bugzilla.redhat.com/show_bug.cgi?id=1970907
> [2]https://github.com/ovn-org/ovn/commit/054f4c85c413e20d893e10ba053ec52ac15db49c
> [3]https://review.opendev.org/c/openstack/networking-ovn/+/676223
> _______________________________________________
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to