New tables:
Network_Function: Each row contains {inport, outport, health_check}
Network_Function_Group: Each row contains a list of Network_Function entities
and a unique id (between 1 and 255).
Min and max length of this list is 1.
Northd sets a reference to the current active NF.
The mode field is for future extension when we want
to support both inline and mirror modes. Currently
only inline is supported.
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.
Signed-off-by: Sragdhara Datta Chaudhuri <[email protected]>
Acked-by: Naveen Yerramneni <[email protected]>
Acked-by: Numan Siddique <[email protected]>
---
ovn-nb.ovsschema | 67 ++++++++++++++++++++++-
ovn-nb.xml | 137 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 202 insertions(+), 2 deletions(-)
diff --git a/ovn-nb.ovsschema b/ovn-nb.ovsschema
index f55930a2e..1d04e0e37 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": "489138816 43149",
"tables": {
"NB_Global": {
"columns": {
@@ -184,6 +184,64 @@
"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"}}},
+ "indexes": [["name"]],
+ "isRoot": false},
+ "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"}}},
+ "indexes": [["name"]],
+ "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": 1,
+ "maxInteger": 255}}},
+ "external_ids": {
+ "type": {"key": "string", "value": "string",
+ "min": 0, "max": "unlimited"}}},
+ "indexes": [["name"], ["id"]],
+ "isRoot": true},
"Forwarding_Group": {
"columns": {
"name": {"type": "string"},
@@ -297,6 +355,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 1f5c58490..246b6155d 100644
--- a/ovn-nb.xml
+++ b/ovn-nb.xml
@@ -2716,6 +2716,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.
@@ -6051,4 +6058,134 @@ or
</column>
</group>
</table>
+
+ <table name="Network_Function_Group"
+ title="network function group">
+ <p>
+ Each row contains a list of <ref table="Network_Function"/>. Traffic
+ redirection is achieved by referencing a
+ <code>Network_Function_Group</code> from an <ref table="ACL"/>. Health
+ monitoring of each <code>Network_Function</code> is performed based on
+ parameters defined in <ref table="Network_Function_Health_Check"/>.
+ Traffic matching the ACL is redirected to one of the active
+ <code>Network_Functions</code>. If all are detected as down, traffic is
+ redirected to one of the <code>Network_Functions</code> regardless of
+ status.
+ </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 must be assigned to each
+ <code>Network_Function_Group</code>.
+ </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
+ based on health monitoring status.
+ </column>
+
+ <column name="mode">
+ Traffic forwarding mode, with default and only value as "inline". The
+ "inline" mode means that the network function is directly in the path
+ of traffic, with 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 that matches the ACL is redirected to
+ <code>inport</code> for from-lport ACLs and to <code>outport</code>
+ for to-lport ACLs. Once the traffic is received on the other port, it
+ continues through the standard OVN pipeline.
+ Response traffic follows the reverse path: it is redirected to the
+ <code>outport</code> for from-lport ACLs and to the <code>inport</code>
+ for to-lport ACLs. Once the traffic is received on the other port, it is
+ processed by the regular OVN pipeline.
+
+ <code>NOTE</code>:
+ 1. The Network Function MUST NOT modify the packet headers.
+ 2. The Network Function is not supported when used in conjunction with
+ Load Balancer.
+ </p>
+
+ <column name="name">
+ Name of the <ref table="Network_Function"/>. Name should be unique.
+ </column>
+
+ <column name="inport">
+ <ref table="Logical_Switch_Port"/> where request traffic for from-lport
+ ACL and response traffic for to-lport ACL is redirected.
+ </column>
+
+ <column name="outport">
+ <ref table="Logical_Switch_Port"/> where request traffic for to-lport ACL
+ and response traffic for from-lport ACL is redirected.
+ </column>
+
+ <column name="health_check">
+ <ref table="Network_Function_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. Default: 5s.
+ </column>
+
+ <column name="options" key="timeout" type='{"type": "integer"}'>
+ The time, in seconds, after which a health check times out.
+ Default: 3s.
+ </column>
+
+ <column name="options" key="success_count" type='{"type": "integer"}'>
+ The number of successful checks after which the Network_Function is
+ considered online. Default: 1.
+ </column>
+
+ <column name="options" key="failure_count" type='{"type": "integer"}'>
+ The number of failure checks after which the Network_Function is
+ considered offline. Default: 1.
+ </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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev