On Sat, Jul 19, 2025 at 8:27 AM Sragdhara Datta Chaudhuri <sragdha.chau...@nutanix.com> wrote: > > New tables: > Network_Function: Each row contains {inport, outport, health_check} > Network_Function_Group: Each row contains a list of Network_Function entities. > Min and max length of this list is 1. > It also contains a unique id (1 and 255) generated by > northd and and a reference to the current active NF. > The mode field is for future extension when we want > to support both inline and mirror modes. > Network_Function_Health_Check: Each row contains configuration for probes in > options field: > {interval, timeout, success_count, failure_count} > > Modified table: > ACL: The ACL entity would have a new optional field that is a reference to a > Network_Function_Group entity. Only accepted for stateful allow ACLs. > > Acked-by: Naveen Yerramneni <naveen.yerramn...@nutanix.com> > Signed-off-by: Sragdhara Datta Chaudhuri <sragdha.chau...@nutanix.com>
Acked-by: Numan Siddique <num...@ovn.org> Numan > --- > ovn-nb.ovsschema | 64 +++++++++++++++++++++++- > ovn-nb.xml | 123 +++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 185 insertions(+), 2 deletions(-) > > diff --git a/ovn-nb.ovsschema b/ovn-nb.ovsschema > index f55930a2e..353a53905 100644 > --- a/ovn-nb.ovsschema > +++ b/ovn-nb.ovsschema > @@ -1,7 +1,7 @@ > { > "name": "OVN_Northbound", > - "version": "7.12.0", > - "cksum": "2749576410 39903", > + "version": "7.13.0", > + "cksum": "109127550 43083", > "tables": { > "NB_Global": { > "columns": { > @@ -184,6 +184,61 @@ > "min": 0, "max": "unlimited"}}}, > "indexes": [["name"]], > "isRoot": false}, > + "Network_Function_Health_Check": { > + "columns": { > + "name": {"type": "string"}, > + "options": { > + "type": {"key": "string", > + "value": "string", > + "min": 0, > + "max": "unlimited"}}, > + "external_ids": { > + "type": {"key": "string", "value": "string", > + "min": 0, "max": "unlimited"}}}, > + "isRoot": true}, > + "Network_Function": { > + "columns": { > + "name": {"type": "string"}, > + "outport": {"type": {"key": {"type": "uuid", > + "refTable": > "Logical_Switch_Port", > + "refType": "strong"}, > + "min": 1, "max": 1}}, > + "inport": {"type": {"key": {"type": "uuid", > + "refTable": > "Logical_Switch_Port", > + "refType": "strong"}, > + "min": 1, "max": 1}}, > + "health_check": {"type": { > + "key": {"type": "uuid", > + "refTable": "Network_Function_Health_Check", > + "refType": "strong"}, > + "min": 0, "max": 1}}, > + "external_ids": { > + "type": {"key": "string", "value": "string", > + "min": 0, "max": "unlimited"}}}, > + "isRoot": true}, > + "Network_Function_Group": { > + "columns": { > + "name": {"type": "string"}, > + "network_function": {"type": > + {"key": {"type": "uuid", > + "refTable": "Network_Function", > + "refType": "strong"}, > + "min": 0, "max": "unlimited"}}, > + "network_function_active": {"type": > + {"key": {"type": "uuid", > + "refTable": "Network_Function", > + "refType": "strong"}, > + "min": 0, "max": 1}}, > + "mode": {"type": {"key": {"type": "string", > + "enum": ["set", ["inline"]]}}}, > + "id": { > + "type": {"key": {"type": "integer", > + "minInteger": 0, > + "maxInteger": 255}}}, > + "external_ids": { > + "type": {"key": "string", "value": "string", > + "min": 0, "max": "unlimited"}}}, > + "isRoot": true}, > "Forwarding_Group": { > "columns": { > "name": {"type": "string"}, > @@ -297,6 +352,11 @@ > ["allow", "allow-related", > "allow-stateless", "drop", > "reject", "pass"]]}}}, > + "network_function_group": {"type": {"key": {"type": "uuid", > + "refTable": > "Network_Function_Group", > + "refType": "strong"}, > + "min": 0, > + "max": 1}}, > "log": {"type": "boolean"}, > "severity": {"type": {"key": {"type": "string", > "enum": ["set", > diff --git a/ovn-nb.xml b/ovn-nb.xml > index 4a7581807..1d84bc3ee 100644 > --- a/ovn-nb.xml > +++ b/ovn-nb.xml > @@ -2648,6 +2648,13 @@ or > </p> > </column> > > + <column name="network_function_group"> > + <p> > + Group of network functions to which the traffic matching this ACL > + is redirected. > + </p> > + </column> > + > <group title="options"> > <p> > ACLs options. > @@ -5935,4 +5942,120 @@ or > </column> > </group> > </table> > + > + > + <table name="Network_Function_Group" title="network function group"> > + <p> > + Each row contains a list of <ref table="Network_Function"/>. Health > + monitoring of each Network_Function in the list would be done based > + on parameters defined in <ref table="Network_Function_Health_Check"/>. > + Traffic redirection would be done towards one of the active > + Network_Functions. If all are detected to be down, one of the > + Network_Functions is chosen for redirection. > + </p> > + > + <column name="name"> > + Name of the <ref table="Network_Function_Group"/>. Name should be > unique. > + </column> > + > + <column name="id"> > + A unique integer between 1 and 255, assigned to the > + network function group. > + </column> > + > + <column name="network_function"> > + A list of network functions which belong to this group. > + </column> > + > + <column name="network_function_active"> > + Current active network function. This column is populated by northd. > + </column> > + > + <column name="mode"> > + Network-function mode. The "inline" mode means the network-function > + is directly in the path of network traffic - traffic being redirected > + through it. > + </column> > + > + <group title="Common Columns"> > + <column name="external_ids"> > + See <em>External IDs</em> at the beginning of this document. > + </column> > + </group> > + </table> > + > + <table name="Network_Function" title="network function"> > + <p> > + Each row represents one network function entity. This contains a pair > + of logical_switch_ports. Traffic matching the ACL are redirected to the > + inport for from-lport and to the outport for the to-lport ACLs. Once > + it comes out of the other port, it gets forwarded nomally. The response > + traffic gets redirected to the outport for from-lport and to the inport > + for the to-lport ACLs, and when it comes out of the other port, it > + gets forwarded. > + </p> > + > + <column name="name"> > + Name of the <ref table="Network_Function"/>. Name should be unique. > + </column> > + > + <column name="inport"> > + Logical port UUID where request traffic for from-lport ACL and response > + traffic for to-lport ACL are redirected. > + </column> > + > + <column name="outport"> > + Logical port UUID where request traffic for to-lport ACL and response > + traffic for from-lport ACL are redirected. > + </column> > + > + <column name="health_check"> > + Health check associated with this network function. > + </column> > + > + <group title="Common Columns"> > + <column name="external_ids"> > + See <em>External IDs</em> at the beginning of this document. > + </column> > + </group> > + </table> > + > + <table name="Network_Function_Health_Check" title="network function health > check"> > + <p> > + Each row represents one network function health check. > + </p> > + > + <column name="name"> > + Name of the <ref table="Network_Function_Health_Check"/>. > + Name should be unique. > + </column> > + > + > + <group title="Health check options"> > + <column name="options" key="interval" type='{"type": "integer"}'> > + The interval, in seconds, between health checks. > + </column> > + > + <column name="options" key="timeout" type='{"type": "integer"}'> > + The time, in seconds, after which a health check times out. > + </column> > + > + <column name="options" key="success_count" type='{"type": "integer"}'> > + The number of successful checks after which the Network_Function is > + considered online. > + </column> > + > + <column name="options" key="failure_count" type='{"type": "integer"}'> > + The number of failure checks after which the Network_Function is > + considered offline. > + </column> > + </group> > + > + <group title="Common Columns"> > + <column name="external_ids"> > + See <em>External IDs</em> at the beginning of this document. > + </column> > + </group> > + </table> > + > </database> > -- > 2.39.3 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev