On 11/27/25 10:46 AM, Felix Huettner wrote:
> On Wed, Nov 26, 2025 at 03:09:53PM +0100, Dumitru Ceara wrote:
>> On 11/26/25 8:05 AM, Frode Nordahl wrote:
>>> Hello,
>>>
>>
>> Hi Frode,
>>
>>> On 11/25/25 14:52, Dumitru Ceara via dev wrote:
>>>> Hi Felix, Frode, Martin,
>>>>
>>>> I'm not sure others are using the OVN dynamic-routing feature yet but I
>>>> know you guys might be.
>>>>
>>>> Looking at how ovn-controller learns routes from the VRF table it
>>>> monitors it currently just skips all the link-local prefixes and routes
>>>> that OVN installed:
>>>>
>>>> https://github.com/ovn-org/ovn/blob/
>>>> b1fa54864bba7669ec81a710852a462101f3b280/controller/route-exchange-
>>>> netlink.c#L216-L222
>>>>
>>>> static void
>>>> handle_route_msg(const struct route_table_msg *msg, void *data)
>>>> {
>>>> [...]
>>>>      /* This route is not from us, so we learn it. */
>>>>      if (rd->rtm_protocol != RTPROT_OVN) {
>>>>          if (!handle_data->learned_routes) {
>>>>              return;
>>>>          }
>>>>          if (prefix_is_link_local(&rd->rta_dst, rd->rtm_dst_len)) {
>>>>              return;
>>>>          }
>>>>
>>>> This to me sounds a bit counter intuitive (also based on the discussions
>>>> that happened at OVS+OVN'25 last week).  The feature is about learning
>>>> dynamic routes (learned through BGP/OSPF/etc), why would OVN learn
>>>> anything else.
>>>
>>> I suspect the != SELF condition was originally put there with the sole
>>> purpose of avoiding the ovn-controller from learning the routes itself
>>> had announced.
>>>
>>
>> Yes, exactly.
>>
>>>> E.g., if the routing protocol daemon learns routes dynamically it will
>>>> install them with rtm_protocol > RTPROT_STATIC (e.g., RTPROT_ZEBRA for
>>>> FRR).  All other routes are configured by the user.
>>>
>>> The different routing protocol suites use different values for
>>> rtm_protocol, and AFAICT all of them are indeed > RTPROT_STATIC.
>>>
>>> We're experimenting with BIRD which is using RTPROT_BIRD.
>>>
>>
>> Nice, I'm curious to learn about your results when you're done
>> experimenting.
>>
>>> As a side note, we discovered that the feature actually can be used to
>>> learn IPv6 routes discovered by kernel or systemd through IPv6 Router
>>> Advertisement.  Both the kernel and systemd implementation make use of
>>> RTPROT_RA for those routes, which would also keep working if we use >
>>> RTPROT_STATIC as threshold.
>>>
>>
>> This is an interesting use case.  Thanks for sharing!
>>
>>>> So my question is: why learn the "other routes" in OVN?  If the user
>>>> wishes that OVN uses them they could just configure
>>>> OVN.NB.Logical_Router_Static_Route records.
>>>>
>>>> Would such a change be OK for your use cases?
>>>
>>> Having a check for rtm_protocol > RTPROT_STATIC seems reasonable to me,
>>> avoids yet another configuration option, and works for our use case.
>>>
>>
>> Cool, we're planning to work on it on our side:
>> https://issues.redhat.com/browse/FDP-2739
>>
>> But I'll wait for feedback from Felix too before we start on it.
> 
> Hi everyone,
> 

Hi Felix,

> that sounds good to me as well.
> 

Thanks for the confirmation.  We'll start working on it.

Best regards,
Dumitru

> Thanks a lot,
> Felix
> 
>>
>> Thanks,
>> Dumitru
>>
>>
> 

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

Reply via email to