On Thu, Nov 28, 2024 at 11:48 PM Vladislav Odintsov <[email protected]> wrote: > > Prior to this patch documentation for routes lookup did not match the actual > behavior. > > Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2024-November/418485.html > Fixes: 1655a6c146ca ("northd, utils: support for RouteTables in LRs") > Signed-off-by: Vladislav Odintsov <[email protected]> > --- > v1 -> v2: > - replaced unordered with ordered list > - removed src-ip based routes description as suggested by Han.
Thanks Vladislav for v2. Please see some more comment below. > --- > ovn-nb.xml | 26 ++++++++++++++------------ > 1 file changed, 14 insertions(+), 12 deletions(-) > > diff --git a/ovn-nb.xml b/ovn-nb.xml > index 5114bbc2e..a41dc6c1c 100644 > --- a/ovn-nb.xml > +++ b/ovn-nb.xml > @@ -3877,24 +3877,26 @@ or > > <column name="route_table"> > <p> > - Any string to place route to separate routing table. If Logical Router > - Port has configured value in <ref table="Logical_Router_Port" > - column="options" key="route_table"/> other than empty string, OVN > - performs route lookup for all packets entering Logical Router ingress > - pipeline from this port in the following manner: > + Any string to place route to separate routing table. Maximum prefix > + length matched route takes precedence over others, while for the same Sorry that I didn't notice this in v1. It seems confusing here because maximum prefix length only applies within the same route table (and with directly connected routes) but not across route tables. I think this needs to be emphasized to avoid confusion. For example: route_table A: prefix X/24, nexthop-1 route_table B: prefix X/25, nexthop-2 For packets enters LRP with options:route_table = A, they should go to nexthop-1 according to the implementation, but according to the above documentation it should go to nexthop-2 because X/25 has longer prefix length than X/24, which is misleading. > + routes with same prefix length the following lookup order applies: > </p> > > - <ul> > + <ol> > <li> > - 1. First lookup among "global" routes: routes without > - <code>route_table</code> value set and routes to directly connected > - networks. > + Lookup among routes of directly connected networks (including > + directly connected networks learned from other availability zones > + within same LR through OVN-IC). > </li> > <li> > - 2. Next lookup among routes with same <code>route_table</code> value > - as specified in LRP's options:route_table field. > + Lookup among static routes with same <ref > + table="Logical_Router_Static_Route" column="route_table"/> value > + as specified in <ref table="Logical_Router_Port" column="options" > + key="route_table"/> field. If no value specified in <ref > + table="Logical_Router_Port" column="options" key="route_table"/>, Please note that the part (ref table="xxx") will not appear in the text after the XML is converted to manpage. It needs to be something like: Lookup among static routes with same <ref table="Logical_Router_Static_Route" column="route_table"/> value of the <ref table="Logical_Router_Static_Route"/> table as specified in the <ref table="Logical_Router_Port" column="options" key="route_table"/> field of the <ref table="Logical_Router_Port"/>. We should also mention that the LRP is where the packets enter the LR. Best, Han > + static routes with empty <code>route_table</code> are looked up. > </li> > - </ul> > + </ol> > </column> > > <column name="external_ids" key="ic-learned-route"> > -- > 2.46.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
