On 10/30/25 12:06 PM, Ales Musil wrote:
> On Wed, Oct 29, 2025 at 4:26 PM Felix Huettner via dev <
> [email protected]> wrote:
> 
>> On Wed, Oct 29, 2025 at 12:24:06PM +0100, Dumitru Ceara wrote:
>>> For routers with dynamic-routing enabled, if router ports are configured
>>> with 'dynamic-routing-port-name=<LSP>' external routes should only be
>>> learned if they're configured to use the Linux device that's configured
>>> for the underlying OVS interface that binds <LSP>.
>>>
>>> There were however a couple of races that made this feature unreliable:
>>>
>>> 1. the en_route I-P engine handler for port binding changes completely
>>>    ignored changes for port bindings corresponding to LSPs that are
>>>    configured as 'dynamic-routing-port-name=<LSP>'.  If the LSP was
>>>    bound _after_ the router port configuration was parsed the en_route
>>>    data wouldn't be correctly recomputed and ovn-controller would ignore
>>>    routes that used the underlying OVS device until the next time a
>>>    recompute of the en_route node would happen (potentially indefinitely
>>>    long).
>>>
>>> 2. the function to extract the OVS interface name corresponding to a
>>>    port binding logical_port was using the local_binding_is_up() helper
>>>    to determine of the logical switch port is bound locally.  While that
>>>    may seem correct (because it also takes into account whether OF rules
>>>    have been fully installed in OVS for that port - ovn-installed=true)
>>>    it introduces a race.  If ovn-controller can't write the OVS
>>>    external_id (e.g., the last OVS transaction is still executing) the
>>>    function returns false.
>>>
>>>    Once the OVS transaction succeeds there's no easy way to inform the
>>>    en_route I-P engine node that it has to recompute.
>>>
>>>    However, from the en_route node perspective it's enough to check
>>>    that:
>>>    - a local binding exists for that LSP
>>>    - the local binding is claimed by the local chassis (it's "chassis
>>>      resident")
>>>
>>>    This commit takes this path as it has the lowest chance of
>>>    introducing bugs due to missed I-P dependencies.
>>>
>>> A system test is also added to cover the scenarios above.
>>
>> Acked-By: Felix Huettner <[email protected]>
>>

...

>>
> Thank you Dumitru and Felix,
> 
> I went ahead, merged this into main and backported all the way down to
> 25.03. In order to make it work on 25.03 I had to also backport
> https://github.com/ovn-org/ovn/commit/aa088003.
> 

Thanks, Felix and Ales, for reviewing and merging this!

Regards,
Dumitru

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to