Bug 2190344

Summary: about ignore_lsp_down for NB_Global
Product: Red Hat OpenStack Reporter: Chorong Park <chopark>
Component: openstack-neutronAssignee: Jakub Libosvar <jlibosva>
Status: NEW --- QA Contact: Eran Kuris <ekuris>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 16.2 (Train)CC: chrisw, jlibosva, ldenny, scohen, twilson
Target Milestone: ---Flags: ldenny: needinfo? (jlibosva)
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Chorong Park 2023-04-28 02:56:31 UTC
Description of problem:

According to the doc, it seems that the default value of "ignore_lsp_down" has been changed to true[1].

I understood that logical switch port is only reply from APR when the port is up when ignore_lsp_down is 'false', and logical switch port is reply from APR regardless of the port status (even when port is down) when ignore_lsp_down is 'true'.[2]

[1] https://www.mail-archive.com/ovs-dev@openvswitch.org/msg60064.html: [ovs-dev] [PATCH ovn] northd: Change the default value of ignore_lsp_down to true.

[2] https://github.com/ovn-org/ovn/blob/main/ovn-nb.xml
===
      <column name="options" key="ignore_lsp_down">
        <p>
          If set to false, ARP/ND reply flows for logical switch ports will be
          installed only if the port is up, i.e. claimed by a Chassis. If set
          to true, these flows are installed regardless of the status of the
          port, which can result in a situation that ARP request to an IP is
          resolved even before the relevant VM/container is running. For
          environments where this is not an issue, setting it to
          <code>true</code> can reduce the load and latency of the control
          plane. The default value is <code>true</code>.
        </p>
      </column>
===


Version-Release number of selected component (if applicable):

I believe that this change is fixed in RHOSP16.2.3.


How reproducible:
We confirmed that don't learn the mac bindings from the ARP when set to false 
the command: ovn-nbctl set NB_Global . options:ignore_lsp_down=false


Additional info:
Did the default value for the ignore_lsp_down change in RHOSP 16.2.3.?
Is there any way to check the ignore_lsp_down?

Comment 2 ldenny 2023-05-02 23:48:06 UTC
Hi Chorong, 

This is an adjustable parameter as there may be some reasons a customer would want the old default value, as such this is safe to adjust. 

I would share the following with the customer: 

```
To make the default behavior
desirable for majority of the use cases, set the option ignore_lsp_down
to true by default. This would help saving the control plane cost in
large scale environment, reduce the e2e latency for all flows to be
installed for a VIF, and making the VIF readiness checking more convenient
in test cases and likely in CMS as well. User can still set it to false
in circumstances (if any) when this behavior is not desired.
```

> Is there any way to check the ignore_lsp_down?
Yes, using the follow command: `ovn-nbctl get NB_Global . options`

As you can see from my output the `ignore_lsp_down` value isn't set:
[root@controller-0 /]# ovn-nbctl get NB_Global . options
{mac_prefix="5e:37:e7", max_tunid="16711680", northd_internal_version="21.12.3-20.21.0-61.4", svc_monitor_mac="1a:32:b1:e7:e0:2e"}

The new code that was implemented will now default to true if the value is not explicitly configured[1]:
```
    check_lsp_is_up = !smap_get_bool(&nb->options,
                                     "ignore_lsp_down", true);
```

So to set it to false the customer will need to run the following command in the master ovn-dbs container:

Example:
```
[root@controller-1 ~]# pcs status | grep ovn-dbs-bundle |grep Master
    * ovn-dbs-bundle-1	(ocf::ovn:ovndb-servers):	 Master controller-1
[root@controller-1 /]# podman exec -it ovn-dbs-bundle-podman-1 bash
```

*inside container* 

```
[root@controller-1 /]# ovn-nbctl get NB_Global . options
{mac_prefix="5e:37:e7", max_tunid="16711680", northd_internal_version="21.12.3-20.21.0-61.4", svc_monitor_mac="1a:32:b1:e7:e0:2e"}
[root@controller-1 /]# ovn-nbctl set NB_Global . options:ignore_lsp_down=false
[root@controller-1 /]# ovn-nbctl get NB_Global . options
{ignore_lsp_down="false", mac_prefix="5e:37:e7", max_tunid="16711680", northd_internal_version="21.12.3-20.21.0-61.4", svc_monitor_mac="1a:32:b1:e7:e0:2e"}
```

The only problem I can see is I don't see anywhere to set it in THT or Neutron, so this value may need to be set again in the future.

> Did the default value for the ignore_lsp_down change in RHOSP 16.2.3.?
Yes, RHOSP 16.2.3 is shipped with `ovn-2021-21.12.0-94.el8fdp` which is the first RHOSP version to contain this code as it was added to `21.09`

[1] https://github.com/ovn-org/ovn/blob/8e109f387c85d18ab3763366ff4a81e3ce7b99bf/northd/northd.c#L16621-L16622

Comment 3 Chorong Park 2023-05-03 06:06:40 UTC
Hi Lewis,

Thanks for confirming the ovn package details and share the feedback with us. 
Let me share this with the customer as you mentioned.

Best Regards,
Chorong