[ovs-dev] [PATCH ovn v3 2/6] ovn-sb.ovsschema: Add Logical Datapath Groups.
Ilya Maximets
i.maximets at ovn.org
Fri Dec 4 17:54:10 UTC 2020
New table 'Logical_Datapath_Group'. Each row of this table will store
a set of logical datapaths. Each logical flow now has a reference to
a logical datapath group, so the same logical flow could be applied to
many different logical datapaths in a group.
Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Acked-by: Mark Michelson <mmichels at redhat.com>
---
ovn-sb.ovsschema | 22 ++++++++++++++++++----
ovn-sb.xml | 42 +++++++++++++++++++++++++++++++-----------
2 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/ovn-sb.ovsschema b/ovn-sb.ovsschema
index a1ee8d8d1..5228839b8 100644
--- a/ovn-sb.ovsschema
+++ b/ovn-sb.ovsschema
@@ -1,7 +1,7 @@
{
"name": "OVN_Southbound",
- "version": "2.11.0",
- "cksum": "455413803 23814",
+ "version": "20.12.0",
+ "cksum": "3969471120 24441",
"tables": {
"SB_Global": {
"columns": {
@@ -90,8 +90,14 @@
"isRoot": true},
"Logical_Flow": {
"columns": {
- "logical_datapath": {"type": {"key": {"type": "uuid",
- "refTable": "Datapath_Binding"}}},
+ "logical_datapath":
+ {"type": {"key": {"type": "uuid",
+ "refTable": "Datapath_Binding"},
+ "min": 0, "max": 1}},
+ "logical_dp_group":
+ {"type": {"key": {"type": "uuid",
+ "refTable": "Logical_DP_Group"},
+ "min": 0, "max": 1}},
"pipeline": {"type": {"key": {"type": "string",
"enum": ["set", ["ingress",
"egress"]]}}},
@@ -107,6 +113,14 @@
"type": {"key": "string", "value": "string",
"min": 0, "max": "unlimited"}}},
"isRoot": true},
+ "Logical_DP_Group": {
+ "columns": {
+ "datapaths":
+ {"type": {"key": {"type": "uuid",
+ "refTable": "Datapath_Binding",
+ "refType": "weak"},
+ "min": 0, "max": "unlimited"}}},
+ "isRoot": false},
"Multicast_Group": {
"columns": {
"datapath": {"type": {"key": {"type": "uuid",
diff --git a/ovn-sb.xml b/ovn-sb.xml
index 4c6df3fef..c13994848 100644
--- a/ovn-sb.xml
+++ b/ovn-sb.xml
@@ -579,11 +579,12 @@
<p>
In more detail, to start, OVN searches the <ref table="Logical_Flow"/>
- table for a row with correct <ref column="logical_datapath"/>, a <ref
- column="pipeline"/> of <code>ingress</code>, a <ref column="table_id"/>
- of 0, and a <ref column="match"/> that is true for the packet. If none
- is found, OVN drops the packet. If OVN finds more than one, it chooses
- the match with the highest <ref column="priority"/>. Then OVN executes
+ table for a row with correct <ref column="logical_datapath"/> or a
+ <ref column="logical_dp_group"/>, a <ref column="pipeline"/> of
+ <code>ingress</code>, a <ref column="table_id"/> of 0, and a <ref
+ column="match"/> that is true for the packet. If none is found, OVN
+ drops the packet. If OVN finds more than one, it chooses the match with
+ the highest <ref column="priority"/>. Then OVN executes
each of the actions specified in the row's <ref table="actions"/> column,
in the order specified. Some actions, such as those to modify packet
headers, require no further details. The <code>next</code> and
@@ -616,12 +617,12 @@
<p>
To execute the egress pipeline, OVN again searches the <ref
table="Logical_Flow"/> table for a row with correct <ref
- column="logical_datapath"/>, a <ref column="table_id"/> of 0, a <ref
- column="match"/> that is true for the packet, but now looking for a <ref
- column="pipeline"/> of <code>egress</code>. If no matching row is found,
- the output becomes a no-op. Otherwise, OVN executes the actions for the
- matching flow (which is chosen from multiple, if necessary, as already
- described).
+ column="logical_datapath"/> or a <ref column="logical_dp_group"/>,
+ a <ref column="table_id"/> of 0, a <ref column="match"/> that is true for
+ the packet, but now looking for a <ref column="pipeline"/> of
+ <code>egress</code>. If no matching row is found, the output becomes a
+ no-op. Otherwise, OVN executes the actions for the matching flow (which
+ is chosen from multiple, if necessary, as already described).
</p>
<p>
@@ -652,6 +653,11 @@
The logical datapath to which the logical flow belongs.
</column>
+ <column name="logical_dp_group">
+ The group of logical datapaths to which the logical flow belongs. This
+ means that the same logical flow belongs to all datapaths in a group.
+ </column>
+
<column name="pipeline">
<p>
The primary flows used for deciding on a packet's destination are the
@@ -2391,6 +2397,20 @@ tcp.flags = RST;
</group>
</table>
+ <table name="Logical_DP_Group" title="Logical Datapath Groups">
+ <p>
+ Each row in this table represents a group of logical datapaths referenced
+ by the <ref column="logical_dp_group" table="Logical_Flow"/> column
+ in the <ref table="Logical_Flow"/> table.
+ </p>
+
+ <column name="datapaths">
+ <p>
+ List of <ref table="Datapath_Binding"/> entries.
+ </p>
+ </column>
+ </table>
+
<table name="Multicast_Group" title="Logical Port Multicast Groups">
<p>
The rows in this table define multicast groups of logical ports.
--
2.25.4
More information about the dev
mailing list