diff mbox

[ovs-dev,v3,1/6] ovn: l3ha, NBDB and SBDB changes and documentation

Message ID CA+0q_PhUO2i7pjjsxBrKsQY3FZ3YgEZxOepq-K5qM+JoYBJFPg@mail.gmail.com
State Not Applicable
Headers show

Commit Message

Russell Bryant July 6, 2017, 4:51 p.m. UTC
On Wed, Jul 5, 2017 at 9:45 AM, Miguel Angel Ajo <majopela@redhat.com> wrote:
> This commit introduces the north and south db changes necessary for
> the l3ha router implementation.
>
> It defines a new Table in both NBDB and SBDB.
>
> The Gateway_Chassis table is created, with a tiny difference between
> NBDB and SBDB, NBDB references the chassis via it's name (chassis_name)
> and SBDB references the chassis via reference (chassis) to the Chassis table.
>
> In NBDB a new column (gateway_chassis) is added to Logical_Router_Ports
> with a list of Gateway_Chassis which can be empty.
>
> In SBDB a new column (gateway_chassis) is added to Port_Binding with
> the same list, this column will be used for ports of type chassis-redirect.
>
> Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
> ---
>  ovn/ovn-nb.ovsschema | 28 +++++++++++++++++++++++++---
>  ovn/ovn-nb.xml       | 39 +++++++++++++++++++++++++++++++++++++++
>  ovn/ovn-sb.ovsschema | 30 +++++++++++++++++++++++++++---
>  ovn/ovn-sb.xml       | 38 ++++++++++++++++++++++++++++++++++++++
>  4 files changed, 129 insertions(+), 6 deletions(-)
>

A couple of patches in this series introduce whitespace errors.  I'll
fix them as I go through, but FYI:

Applying: ovn: l3ha, NBDB and SBDB changes and documentation
Applying: ovn: l3ha, ovn-northd gateway chassis propagation
.git/rebase-apply/patch:539: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
Applying: ovn: l3ha, handling of multiple gateway chassis
Applying: ovn: l3ha, enable bfd between tunnel endpoints
Applying: ovn: l3ha, make is_chassis_active aware of gateway_chassis
Applying: ovn: l3ha, gratuitous ARP for HA router
.git/rebase-apply/patch:311: new blank line at EOF.
+
warning: 1 line adds whitespace errors.


Also, here's a patch you can squash into this one that adjusts the
schema version numbers and adds a bit to the docs.  I'll collect my
suggestions in this branch for now:

https://github.com/russellb/ovs/tree/l3ha



commit 26c1347bfe8faa96a4218e363281ee7154e8d5f4
Author: Russell Bryant <russell@ovn.org>
Date:   Thu Jul 6 08:58:27 2017 -0400

    ovn: Update schema versions and docs.

    Bump minor version since we've added new backwards compatible features.

    Also add some additional content and tweaks to schema documentation.

    Signed-off-by: Russell Bryant <russell@ovn.org>

       <column name="tunnel_key">
@@ -2891,14 +2896,22 @@ tcp.flags = RST;
     </column>
   </table>
   <table name="Gateway_Chassis">
-    Association of Port_Binding of type <code>chassisredirect</code> to
-    a Chassis. The traffic going out through an specific chassisredirect
-    port will be redirected to a chassis, or a set of them in high
-    availability configurations.
+    <p>
+      Association of <ref table="Port_Binding"/> rows of
+      <ref table="Port_Binding" column="type"/> <code>chassisredirect</code> to
+      a <ref table="Chassis"/>. The traffic going out through a specific
+      <code>chassisredirect</code> port will be redirected to a chassis,
+      or a set of them in high availability configurations.
+    </p>

     <column name="name">
-      Name of the Gateway Chassis element, a recommendation
-      is using ${port_name}_${chassis_name}
+      <p>
+        Name of the <ref table="Gateway_Chassis"/>.
+      </p>
+      <p>
+        A suggested, but not required naming convention is
+        <code>${port_name}_${chassis_name}</code>.
+      </p>
     </column>

     <column name="chassis">
@@ -2907,7 +2920,7 @@ tcp.flags = RST;

     <column name="priority">
       This is the priority the specific <ref table="Chassis"/> among all
-      Gateway_Chassis belonging to the same logical router port.
+      Gateway_Chassis belonging to the same <ref table="Port_Binding"/>.
     </column>

     <column name="options">

Comments

Miguel Angel Ajo July 6, 2017, 5:27 p.m. UTC | #1
Thanks a lot Russell, your help & review is really appreciated.

On Thu, Jul 6, 2017 at 6:51 PM, Russell Bryant <russell@ovn.org> wrote:

> On Wed, Jul 5, 2017 at 9:45 AM, Miguel Angel Ajo <majopela@redhat.com>
> wrote:
> > This commit introduces the north and south db changes necessary for
> > the l3ha router implementation.
> >
> > It defines a new Table in both NBDB and SBDB.
> >
> > The Gateway_Chassis table is created, with a tiny difference between
> > NBDB and SBDB, NBDB references the chassis via it's name (chassis_name)
> > and SBDB references the chassis via reference (chassis) to the Chassis
> table.
> >
> > In NBDB a new column (gateway_chassis) is added to Logical_Router_Ports
> > with a list of Gateway_Chassis which can be empty.
> >
> > In SBDB a new column (gateway_chassis) is added to Port_Binding with
> > the same list, this column will be used for ports of type
> chassis-redirect.
> >
> > Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
> > ---
> >  ovn/ovn-nb.ovsschema | 28 +++++++++++++++++++++++++---
> >  ovn/ovn-nb.xml       | 39 +++++++++++++++++++++++++++++++++++++++
> >  ovn/ovn-sb.ovsschema | 30 +++++++++++++++++++++++++++---
> >  ovn/ovn-sb.xml       | 38 ++++++++++++++++++++++++++++++++++++++
> >  4 files changed, 129 insertions(+), 6 deletions(-)
> >
>
> A couple of patches in this series introduce whitespace errors.  I'll
> fix them as I go through, but FYI:
>
> Applying: ovn: l3ha, NBDB and SBDB changes and documentation
> Applying: ovn: l3ha, ovn-northd gateway chassis propagation
> .git/rebase-apply/patch:539: new blank line at EOF.
> +
> warning: 1 line adds whitespace errors.
> Applying: ovn: l3ha, handling of multiple gateway chassis
> Applying: ovn: l3ha, enable bfd between tunnel endpoints
> Applying: ovn: l3ha, make is_chassis_active aware of gateway_chassis
> Applying: ovn: l3ha, gratuitous ARP for HA router
> .git/rebase-apply/patch:311: new blank line at EOF.
> +
> warning: 1 line adds whitespace errors.
>
>
> Also, here's a patch you can squash into this one that adjusts the
> schema version numbers and adds a bit to the docs.  I'll collect my
> suggestions in this branch for now:
>
> https://github.com/russellb/ovs/tree/l3ha
>
>
>
> commit 26c1347bfe8faa96a4218e363281ee7154e8d5f4
> Author: Russell Bryant <russell@ovn.org>
> Date:   Thu Jul 6 08:58:27 2017 -0400
>
>     ovn: Update schema versions and docs.
>
>     Bump minor version since we've added new backwards compatible features.
>
>     Also add some additional content and tweaks to schema documentation.
>
>     Signed-off-by: Russell Bryant <russell@ovn.org>
>
> diff --git a/ovn/ovn-nb.ovsschema b/ovn/ovn-nb.ovsschema
> index 6a96704..d85a3fe 100644
> --- a/ovn/ovn-nb.ovsschema
> +++ b/ovn/ovn-nb.ovsschema
> @@ -1,7 +1,7 @@
>  {
>      "name": "OVN_Northbound",
> -    "version": "5.6.2",
> -    "cksum": "3482049799 16164",
> +    "version": "5.7.0",
> +    "cksum": "3754583060 16164",
>      "tables": {
>          "NB_Global": {
>              "columns": {
> diff --git a/ovn/ovn-nb.xml b/ovn/ovn-nb.xml
> index 6061114..1e73465 100644
> --- a/ovn/ovn-nb.xml
> +++ b/ovn/ovn-nb.xml
> @@ -179,7 +179,7 @@
>        <column name="other_config" key="subnet">
>          Set this to an IPv4 subnet, e.g. <code>192.168.0.0/24</code>, to
> enable
>          <code>ovn-northd</code> to automatically assign IP addresses
> within
> -        that subnet.
> +        that subnet.
>        </column>
>
>        <column name="other_config" key="exclude_ips">
> @@ -1251,8 +1251,31 @@
>      </column>
>
>      <column name="gateway_chassis">
> -      Several <ref table="Gateway_Chassis"/> can be referenced for a given
> -      logical router port.
> +      <p>
> +        If set, this indicates that this logical router port represents
> +        a distributed gateway port that connects this router to a logical
> +        switch with a localnet port.  There may be at most one such
> +        logical router port on each logical router.
> +      </p>
> +
> +      <p>
> +        Several <ref table="Gateway_Chassis"/> can be referenced for a
> given
> +        logical router port.  A single <ref table="Gateway_Chassis"/> is
> +        functionally equivalent to setting
> +        <ref column="options" key="redirect-chassis"/>.  Refer to the
> +        description of <ref column="options" key="redirect-chassis"/>
> +        for additional details on gateway handling.
> +      </p>
> +
> +      <p>
> +        Defining more than one <ref table="Gateway_Chassis"/> will enable
> +        gateway high availability.  Only one gateway will be active at a
> +        time.  OVN chassis will use BFD to monitor connectivity to a
> +        gateway.  If connectivity to the active gateway is interrupted,
> +        another gateway will become active.
> +        The <ref column="priority" table="Gateway_Chassis"/> column
> +        specifies the order that gateways will be chosen by OVN.
> +      </p>
>      </column>
>
>      <column name="networks">
> @@ -1324,6 +1347,14 @@
>            table="Logical_Switch_Port"/> should be set to
>            <code>router</code>.
>          </p>
> +
> +        <p>
> +          While <ref column="options" key="redirect-chassis"/> is still
> +          supported for backwards compatibility, it is now preferred to
> +          specify one or more <ref column="gateway_chassis"/> instead.
> +          It is functionally equivalent, but allows you to specify
> multiple
> +          chassis to enable high availability.
> +        </p>
>        </column>
>      </group>
>
> @@ -2117,26 +2148,42 @@
>      </group>
>    </table>
>    <table name="Gateway_Chassis">
> -    Association of chassis to logical router port. The traffic
> -    going out through an specific router port will be redirected to a
> -    chassis, or a set of them in high availability configurations.
> -    This is the equivalent of option:redirect-chassis for Logical
> -    Router ports, but allowing the association and prioritize multiple
> -    Chassis to a single port.
> +    <p>
> +      Association of one or more chassis to a logical router port. The
> traffic
> +      going out through an specific router port will be redirected to a
> +      chassis, or a set of them in high availability configurations.
> +      A single <ref table="Gateway_Chassis"/> is equivalent to setting
> +      <ref column="options" key="redirect-chassis"/>.  Using
> +      <ref table="Gateway_Chassis"/> allows associating multiple
> prioritized
> +      chassis with a single logical router port.
> +    </p>
>
>      <column name="name">
> -      Name of the Gateway Chassis element, a recommendation
> -      is using ${port_name}_${chassis_name}
> +      <p>
> +        Name of the <ref table="Gateway_Chassis"/>.
> +      </p>
> +      <p>
> +        A suggested, but not required naming convention is
> +        <code>${port_name}_${chassis_name}</code>.
> +      </p>
>      </column>
>
>      <column name="chassis_name">
> -      Name of the chassis that we want to use to traffic going
> -      through an specific logical router port
> +      <p>
> +        Name of the chassis that we want to redirect traffic through for
> the
> +        associated logical router port.  The value must match the
> +        <ref db="OVN_Southbound" table="Chassis" column="name"/> column
> +        of the <ref db="OVN_Southbound" table="Chassis"/> table in the
> +        <ref db="OVN_Southbound"/> database.
> +      </p>
>      </column>
>
>      <column name="priority">
> -      This is the priority of a chassis among all Gateway_Chassis
> belonging
> -      to the same logical router port.
> +      <p>
> +        This is the priority of a chassis among all
> +        <ref table="Gateway_Chassis"/> belonging to the same logical
> router
> +        port.
> +      </p>
>      </column>
>
>      <column name="options">
> @@ -2144,9 +2191,9 @@
>      </column>
>
>      <group title="Common Columns">
> -      The overall purpose of these columns is described under <code>Common
> -      Columns</code> at the beginning of this document.
> -      <column name="external_ids"/>
> +      <column name="external_ids">
> +        See <em>External IDs</em> at the beginning of this document.
> +      </column>
>      </group>
>    </table>
>
> diff --git a/ovn/ovn-sb.ovsschema b/ovn/ovn-sb.ovsschema
> index 5c7a001..2643640 100644
> --- a/ovn/ovn-sb.ovsschema
> +++ b/ovn/ovn-sb.ovsschema
> @@ -1,7 +1,7 @@
>  {
>      "name": "OVN_Southbound",
> -    "version": "1.13.1",
> -    "cksum": "1200651109 13275",
> +    "version": "1.14.0",
> +    "cksum": "3613553908 13275",
>      "tables": {
>          "SB_Global": {
>              "columns": {
> diff --git a/ovn/ovn-sb.xml b/ovn/ovn-sb.xml
> index 04f3d76..d9b6e36 100644
> --- a/ovn/ovn-sb.xml
> +++ b/ovn/ovn-sb.xml
> @@ -1838,10 +1838,15 @@ tcp.flags = RST;
>        </column>
>
>        <column name="gateway_chassis">
> -        The list of <ref table="Gateway_Chassis"/> should only be
> populated for
> -        ports of type <code>chassisredirect</code>. And defines the list
> -        of chassis which outgoing traffic of the port will be redirected
> -        through.
> +        <p>
> +          A list of <ref table="Gateway_Chassis"/>.
> +        </p>
> +        <p>
> +          This should only be populated for ports with
> +          <ref column="type"/> set to <code>chassisredirect</code>.
> +          This column defines the list of chassis used as gateways
> where traffic
> +          will be redirected through.
> +        </p>
>        </column>
>
>        <column name="tunnel_key">
> @@ -2891,14 +2896,22 @@ tcp.flags = RST;
>      </column>
>    </table>
>    <table name="Gateway_Chassis">
> -    Association of Port_Binding of type <code>chassisredirect</code> to
> -    a Chassis. The traffic going out through an specific chassisredirect
> -    port will be redirected to a chassis, or a set of them in high
> -    availability configurations.
> +    <p>
> +      Association of <ref table="Port_Binding"/> rows of
> +      <ref table="Port_Binding" column="type"/>
> <code>chassisredirect</code> to
> +      a <ref table="Chassis"/>. The traffic going out through a specific
> +      <code>chassisredirect</code> port will be redirected to a chassis,
> +      or a set of them in high availability configurations.
> +    </p>
>
>      <column name="name">
> -      Name of the Gateway Chassis element, a recommendation
> -      is using ${port_name}_${chassis_name}
> +      <p>
> +        Name of the <ref table="Gateway_Chassis"/>.
> +      </p>
> +      <p>
> +        A suggested, but not required naming convention is
> +        <code>${port_name}_${chassis_name}</code>.
> +      </p>
>      </column>
>
>      <column name="chassis">
> @@ -2907,7 +2920,7 @@ tcp.flags = RST;
>
>      <column name="priority">
>        This is the priority the specific <ref table="Chassis"/> among all
> -      Gateway_Chassis belonging to the same logical router port.
> +      Gateway_Chassis belonging to the same <ref table="Port_Binding"/>.
>      </column>
>
>      <column name="options">
>
diff mbox

Patch

diff --git a/ovn/ovn-nb.ovsschema b/ovn/ovn-nb.ovsschema
index 6a96704..d85a3fe 100644
--- a/ovn/ovn-nb.ovsschema
+++ b/ovn/ovn-nb.ovsschema
@@ -1,7 +1,7 @@ 
 {
     "name": "OVN_Northbound",
-    "version": "5.6.2",
-    "cksum": "3482049799 16164",
+    "version": "5.7.0",
+    "cksum": "3754583060 16164",
     "tables": {
         "NB_Global": {
             "columns": {
diff --git a/ovn/ovn-nb.xml b/ovn/ovn-nb.xml
index 6061114..1e73465 100644
--- a/ovn/ovn-nb.xml
+++ b/ovn/ovn-nb.xml
@@ -179,7 +179,7 @@ 
       <column name="other_config" key="subnet">
         Set this to an IPv4 subnet, e.g. <code>192.168.0.0/24</code>, to enable
         <code>ovn-northd</code> to automatically assign IP addresses within
-        that subnet.
+        that subnet.
       </column>

       <column name="other_config" key="exclude_ips">
@@ -1251,8 +1251,31 @@ 
     </column>

     <column name="gateway_chassis">
-      Several <ref table="Gateway_Chassis"/> can be referenced for a given
-      logical router port.
+      <p>
+        If set, this indicates that this logical router port represents
+        a distributed gateway port that connects this router to a logical
+        switch with a localnet port.  There may be at most one such
+        logical router port on each logical router.
+      </p>
+
+      <p>
+        Several <ref table="Gateway_Chassis"/> can be referenced for a given
+        logical router port.  A single <ref table="Gateway_Chassis"/> is
+        functionally equivalent to setting
+        <ref column="options" key="redirect-chassis"/>.  Refer to the
+        description of <ref column="options" key="redirect-chassis"/>
+        for additional details on gateway handling.
+      </p>
+
+      <p>
+        Defining more than one <ref table="Gateway_Chassis"/> will enable
+        gateway high availability.  Only one gateway will be active at a
+        time.  OVN chassis will use BFD to monitor connectivity to a
+        gateway.  If connectivity to the active gateway is interrupted,
+        another gateway will become active.
+        The <ref column="priority" table="Gateway_Chassis"/> column
+        specifies the order that gateways will be chosen by OVN.
+      </p>
     </column>

     <column name="networks">
@@ -1324,6 +1347,14 @@ 
           table="Logical_Switch_Port"/> should be set to
           <code>router</code>.
         </p>
+
+        <p>
+          While <ref column="options" key="redirect-chassis"/> is still
+          supported for backwards compatibility, it is now preferred to
+          specify one or more <ref column="gateway_chassis"/> instead.
+          It is functionally equivalent, but allows you to specify multiple
+          chassis to enable high availability.
+        </p>
       </column>
     </group>

@@ -2117,26 +2148,42 @@ 
     </group>
   </table>
   <table name="Gateway_Chassis">
-    Association of chassis to logical router port. The traffic
-    going out through an specific router port will be redirected to a
-    chassis, or a set of them in high availability configurations.
-    This is the equivalent of option:redirect-chassis for Logical
-    Router ports, but allowing the association and prioritize multiple
-    Chassis to a single port.
+    <p>
+      Association of one or more chassis to a logical router port. The traffic
+      going out through an specific router port will be redirected to a
+      chassis, or a set of them in high availability configurations.
+      A single <ref table="Gateway_Chassis"/> is equivalent to setting
+      <ref column="options" key="redirect-chassis"/>.  Using
+      <ref table="Gateway_Chassis"/> allows associating multiple prioritized
+      chassis with a single logical router port.
+    </p>

     <column name="name">
-      Name of the Gateway Chassis element, a recommendation
-      is using ${port_name}_${chassis_name}
+      <p>
+        Name of the <ref table="Gateway_Chassis"/>.
+      </p>
+      <p>
+        A suggested, but not required naming convention is
+        <code>${port_name}_${chassis_name}</code>.
+      </p>
     </column>

     <column name="chassis_name">
-      Name of the chassis that we want to use to traffic going
-      through an specific logical router port
+      <p>
+        Name of the chassis that we want to redirect traffic through for the
+        associated logical router port.  The value must match the
+        <ref db="OVN_Southbound" table="Chassis" column="name"/> column
+        of the <ref db="OVN_Southbound" table="Chassis"/> table in the
+        <ref db="OVN_Southbound"/> database.
+      </p>
     </column>

     <column name="priority">
-      This is the priority of a chassis among all Gateway_Chassis belonging
-      to the same logical router port.
+      <p>
+        This is the priority of a chassis among all
+        <ref table="Gateway_Chassis"/> belonging to the same logical router
+        port.
+      </p>
     </column>

     <column name="options">
@@ -2144,9 +2191,9 @@ 
     </column>

     <group title="Common Columns">
-      The overall purpose of these columns is described under <code>Common
-      Columns</code> at the beginning of this document.
-      <column name="external_ids"/>
+      <column name="external_ids">
+        See <em>External IDs</em> at the beginning of this document.
+      </column>
     </group>
   </table>

diff --git a/ovn/ovn-sb.ovsschema b/ovn/ovn-sb.ovsschema
index 5c7a001..2643640 100644
--- a/ovn/ovn-sb.ovsschema
+++ b/ovn/ovn-sb.ovsschema
@@ -1,7 +1,7 @@ 
 {
     "name": "OVN_Southbound",
-    "version": "1.13.1",
-    "cksum": "1200651109 13275",
+    "version": "1.14.0",
+    "cksum": "3613553908 13275",
     "tables": {
         "SB_Global": {
             "columns": {
diff --git a/ovn/ovn-sb.xml b/ovn/ovn-sb.xml
index 04f3d76..d9b6e36 100644
--- a/ovn/ovn-sb.xml
+++ b/ovn/ovn-sb.xml
@@ -1838,10 +1838,15 @@  tcp.flags = RST;
       </column>

       <column name="gateway_chassis">
-        The list of <ref table="Gateway_Chassis"/> should only be populated for
-        ports of type <code>chassisredirect</code>. And defines the list
-        of chassis which outgoing traffic of the port will be redirected
-        through.
+        <p>
+          A list of <ref table="Gateway_Chassis"/>.
+        </p>
+        <p>
+          This should only be populated for ports with
+          <ref column="type"/> set to <code>chassisredirect</code>.
+          This column defines the list of chassis used as gateways
where traffic
+          will be redirected through.
+        </p>
       </column>