On Wed, Dec 04, 2024 at 02:18:31PM +0100, Dumitru Ceara wrote:
> On 12/3/24 3:58 PM, Felix Huettner via dev wrote:
> > The Route table will be used in the future to coordinate routing
> > information between northd and ovn-controller.
> > Northd will insert routes that should be advertised to the outside
> > fabric.
> > Ovn-controller will insert routes that have been learned from the
> > outside fabric.
> >
> > Signed-off-by: Felix Huettner <[email protected]>
> > ---
>
> Hi Felix,
>
> I have a few minor comments, otherwise, this looks ok to me.
Hi Dimitru,
thanks a lot for the review.
>
> > ovn-sb.ovsschema | 29 ++++++++++++++++--
> > ovn-sb.xml | 80 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 2 files changed, 107 insertions(+), 2 deletions(-)
> >
> > diff --git a/ovn-sb.ovsschema b/ovn-sb.ovsschema
> > index 73abf2c8d..76d32197d 100644
> > --- a/ovn-sb.ovsschema
> > +++ b/ovn-sb.ovsschema
> > @@ -1,7 +1,7 @@
> > {
> > "name": "OVN_Southbound",
> > - "version": "20.37.0",
> > - "cksum": "1950136776 31493",
> > + "version": "20.38.0",
> > + "cksum": "550338719 32889",
> > "tables": {
> > "SB_Global": {
> > "columns": {
> > @@ -617,6 +617,31 @@
> > "type": {"key": "string", "value": "string",
> > "min": 0, "max": "unlimited"}}},
> > "indexes": [["chassis"]],
> > + "isRoot": true},
> > + "Route": {
> > + "columns": {
> > + "datapath":
> > + {"type": {"key": {"type": "uuid",
> > + "refTable": "Datapath_Binding"}}},
> > + "logical_port": {"type": {"key": {"type": "uuid",
> > + "refTable":
> > "Port_Binding",
> > + "refType": "weak"}}},
>
> It's probably fine to keep this as a strong reference, right?
>
> > + "ip_prefix": {"type": "string"},
> > + "nexthop": {"type": "string"},
> > + "tracked_port": {"type": {"key": {"type": "uuid",
> > + "refTable":
> > "Port_Binding",
> > + "refType": "weak"},
>
> Same here, I guess.
Yes, will both be changed in v3.
>
> > + "min": 0,
> > + "max": 1}},
> > + "type": {"type": {"key": {"type": "string",
> > + "enum": ["set", ["advertise",
> > + "receive"]]},
> > + "min": 1, "max": 1}},
> > + "external_ids": {
> > + "type": {"key": "string", "value": "string",
> > + "min": 0, "max": "unlimited"}}},
> > + "indexes": [["datapath", "logical_port", "ip_prefix",
> > "nexthop",
> > + "type"]],
> > "isRoot": true}
>
> Do we really need this table to be root?
As i understood the isRoot flag it keeps the records around even if
there is no incoming reference to any of the rows. As there are no
incoming references to the Route table at all we need this to be true.
Thanks a lot
Felix
>
> > }
> > }
> > diff --git a/ovn-sb.xml b/ovn-sb.xml
> > index ea4adc1c3..fa9e7b4ba 100644
> > --- a/ovn-sb.xml
> > +++ b/ovn-sb.xml
> > @@ -5217,4 +5217,84 @@ tcp.flags = RST;
> > The set of variable values for a given chassis.
> > </column>
> > </table>
> > +
> > + <table name="Route">
> > + <p>
> > + Each record represents a route thas is export from ovn or imported
> > to ovn
>
> Typo: thas
> Maybe: s/export/exported/
>
> > + using some dynamic routing logic outside of ovn.
> > + It is populated on the one hand by <code>ovn-northd</code> based on
> > the
> > + addresses, routes and NAT Entries of a
> > + <code>OVN_Northbound.Logical_Router_Port</code>.
> > + On the other hand <code>ovn-controller</code> populates it with
> > routes
> > + learned from outside of OVN.
> > + </p>
> > +
> > + <column name="datapath">
> > + The datapath belonging to the
> > + <code>OVN_Northbound.Logical_Router</code> that this route is valid
> > + for.
> > + </column>
> > +
> > + <column name="logical_port">
> > + <p>
> > + If the type is <code>advertise</code> then this is the logical_port
> > + the router will send packets out.
> > + </p>
> > +
> > + <p>
> > + If the type is <code>receive</code> then this is the logical_port
> > + the route was learned on.
> > + </p>
> > + </column>
> > +
> > + <column name="ip_prefix">
> > + <p>
> > + IP prefix of this route (e.g. 192.168.100.0/24).
> > + </p>
> > + </column>
> > +
> > + <column name="nexthop">
> > + <p>
> > + If the type is <code>advertise</code> then this is empty.
> > + </p>
> > +
> > + <p>
> > + If the type is <code>receive</code> then this is the nexthop ip we
> > + from the outside.
> > + </p>
> > + </column>
> > +
> > + <column name="tracked_port">
> > + <p>
> > + Only relevant for type <code>advertise</code>.
> > +
> > + In combination with a host <code>ip_prefix</code> this trackes the
> > port
>
> Typo: trackes
>
> > + OVN will forward the packets for this destination to.
> > +
> > + An announcing chassis can use this information to check if this
> > + destination is local and adjust the route priorities based on that.
> > + </p>
> > + </column>
> > +
> > + <column name="type">
> > + <p>
> > + If the route is to be exported from OVN to the outside network or
> > if
> > + it is imported from the outside network.
> > + </p>
> > + <ul>
> > + <li>
> > + <code>advertise</code>: This route should be advertised to the
> > + outside network.
> > + </li>
> > + <li>
> > + <code>receive</code>: This route has been learned from the
> > outside
> > + network.
> > + </li>
> > + </ul>
> > + </column>
> > +
> > + <column name="external_ids">
> > + See <em>External IDs</em> at the beginning of this document.
> > + </column>
> > + </table>
> > </database>
>
> Regards,
> Dumitru
>
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev