[ovs-dev] [PATCH ovn] doc: Fix Update Openflow Table numbers

Numan Siddique numans at ovn.org
Wed Oct 6 17:15:54 UTC 2021


On Fri, Sep 24, 2021 at 6:52 AM Xavier Simonart <xsimonar at redhat.com> wrote:
>
> Openflow tables OFTABLE_REMOTE_OUTPUT, OFTABLE_LOCAL_OUTPUT
> and OFTABLE_CHECK_LOOPBACK numbering changed, but documentation
> was not updated.
>
> Fixes: dd94f1266c ("northd: MAC learning: Add logical flows for fdb.")
>
> Signed-off-by: Xavier Simonart <xsimonar at redhat.com>

Thanks.  Applied.

Numan

> ---
>  controller/physical.c  | 40 ++++++++++++------------
>  ovn-architecture.7.xml | 70 +++++++++++++++++++++---------------------
>  2 files changed, 55 insertions(+), 55 deletions(-)
>
> diff --git a/controller/physical.c b/controller/physical.c
> index 0cfb158c8..c5effe521 100644
> --- a/controller/physical.c
> +++ b/controller/physical.c
> @@ -955,12 +955,12 @@ consider_port_binding(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>              || ha_chassis_group_is_active(binding->ha_chassis_group,
>                                            active_tunnels, chassis))) {
>
> -        /* Table 33, priority 100.
> +        /* Table 38, priority 100.
>           * =======================
>           *
>           * Implements output to local hypervisor.  Each flow matches a
>           * logical output port on the local hypervisor, and resubmits to
> -         * table 34.  For ports of type "chassisredirect", the logical
> +         * table 39.  For ports of type "chassisredirect", the logical
>           * output port is changed from the "chassisredirect" port to the
>           * underlying distributed port. */
>
> @@ -1007,7 +1007,7 @@ consider_port_binding(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>                  put_load(zone_ids.snat, MFF_LOG_SNAT_ZONE, 0, 32, ofpacts_p);
>              }
>
> -            /* Resubmit to table 34. */
> +            /* Resubmit to table 39. */
>              put_resubmit(OFTABLE_CHECK_LOOPBACK, ofpacts_p);
>          }
>
> @@ -1312,7 +1312,7 @@ consider_port_binding(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>
>      } else if (!tun && !is_ha_remote) {
>          /* Remote port connected by localnet port */
> -        /* Table 33, priority 100.
> +        /* Table 38, priority 100.
>           * =======================
>           *
>           * Implements switching to localnet port. Each flow matches a
> @@ -1329,7 +1329,7 @@ consider_port_binding(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>
>          put_load(localnet_port->tunnel_key, MFF_LOG_OUTPORT, 0, 32, ofpacts_p);
>
> -        /* Resubmit to table 33. */
> +        /* Resubmit to table 38. */
>          put_resubmit(OFTABLE_LOCAL_OUTPUT, ofpacts_p);
>          ofctrl_add_flow(flow_table, OFTABLE_LOCAL_OUTPUT, 100,
>                          binding->header_.uuid.parts[0],
> @@ -1341,7 +1341,7 @@ consider_port_binding(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>
>          /* Remote port connected by tunnel */
>
> -        /* Table 32, priority 100.
> +        /* Table 38, priority 100.
>           * =======================
>           *
>           * Handles traffic that needs to be sent to a remote hypervisor.  Each
> @@ -1469,7 +1469,7 @@ consider_mc_group(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>          }
>      }
>
> -    /* Table 33, priority 100.
> +    /* Table 38, priority 100.
>       * =======================
>       *
>       * Handle output to the local logical ports in the multicast group, if
> @@ -1485,7 +1485,7 @@ consider_mc_group(struct ovsdb_idl_index *sbrec_port_binding_by_name,
>                          &match, &ofpacts, &mc->header_.uuid);
>      }
>
> -    /* Table 32, priority 100.
> +    /* Table 37, priority 100.
>       * =======================
>       *
>       * Handle output to the remote chassis in the multicast group, if
> @@ -1635,7 +1635,7 @@ physical_run(struct physical_ctx *p_ctx,
>                                p_ctx->chassis, flow_table, &ofpacts);
>      }
>
> -    /* Handle output to multicast groups, in tables 32 and 33. */
> +    /* Handle output to multicast groups, in tables 37 and 38. */
>      const struct sbrec_multicast_group *mc;
>      SBREC_MULTICAST_GROUP_TABLE_FOR_EACH (mc, p_ctx->mc_group_table) {
>          consider_mc_group(p_ctx->sbrec_port_binding_by_name,
> @@ -1656,7 +1656,7 @@ physical_run(struct physical_ctx *p_ctx,
>       * encapsulations have metadata about the ingress and egress logical ports.
>       * VXLAN encapsulations have metadata about the egress logical port only.
>       * We set MFF_LOG_DATAPATH, MFF_LOG_INPORT, and MFF_LOG_OUTPORT from the
> -     * tunnel key data where possible, then resubmit to table 33 to handle
> +     * tunnel key data where possible, then resubmit to table 38 to handle
>       * packets to the local hypervisor. */
>      struct chassis_tunnel *tun;
>      HMAP_FOR_EACH (tun, hmap_node, p_ctx->chassis_tunnels) {
> @@ -1730,12 +1730,12 @@ physical_run(struct physical_ctx *p_ctx,
>          }
>      }
>
> -    /* Table 32, priority 150.
> +    /* Table 37, priority 150.
>       * =======================
>       *
>       * Handles packets received from a VXLAN tunnel which get resubmitted to
>       * OFTABLE_LOG_INGRESS_PIPELINE due to lack of needed metadata in VXLAN,
> -     * explicitly skip sending back out any tunnels and resubmit to table 33
> +     * explicitly skip sending back out any tunnels and resubmit to table 38
>       * for local delivery.
>       */
>      struct match match;
> @@ -1743,13 +1743,13 @@ physical_run(struct physical_ctx *p_ctx,
>      match_set_reg_masked(&match, MFF_LOG_FLAGS - MFF_REG0,
>                           MLF_RCV_FROM_RAMP, MLF_RCV_FROM_RAMP);
>
> -    /* Resubmit to table 33. */
> +    /* Resubmit to table 38. */
>      ofpbuf_clear(&ofpacts);
>      put_resubmit(OFTABLE_LOCAL_OUTPUT, &ofpacts);
>      ofctrl_add_flow(flow_table, OFTABLE_REMOTE_OUTPUT, 150, 0,
>                      &match, &ofpacts, hc_uuid);
>
> -    /* Table 32, priority 150.
> +    /* Table 37, priority 150.
>       * =======================
>       *
>       * Packets that should not be sent to other hypervisors.
> @@ -1757,19 +1757,19 @@ physical_run(struct physical_ctx *p_ctx,
>      match_init_catchall(&match);
>      match_set_reg_masked(&match, MFF_LOG_FLAGS - MFF_REG0,
>                           MLF_LOCAL_ONLY, MLF_LOCAL_ONLY);
> -    /* Resubmit to table 33. */
> +    /* Resubmit to table 38. */
>      ofpbuf_clear(&ofpacts);
>      put_resubmit(OFTABLE_LOCAL_OUTPUT, &ofpacts);
>      ofctrl_add_flow(flow_table, OFTABLE_REMOTE_OUTPUT, 150, 0,
>                      &match, &ofpacts, hc_uuid);
>
> -    /* Table 32, priority 150.
> +    /* Table 37, priority 150.
>       * =======================
>       *
>       * Handles packets received from ports of type "localport".  These ports
>       * are present on every hypervisor.  Traffic that originates at one should
>       * never go over a tunnel to a remote hypervisor, so resubmit them to table
> -     * 33 for local delivery. */
> +     * 38 for local delivery. */
>      match_init_catchall(&match);
>      ofpbuf_clear(&ofpacts);
>      put_resubmit(OFTABLE_LOCAL_OUTPUT, &ofpacts);
> @@ -1789,7 +1789,7 @@ physical_run(struct physical_ctx *p_ctx,
>          }
>      }
>
> -    /* Table 32, Priority 0.
> +    /* Table 37, Priority 0.
>       * =======================
>       *
>       * Resubmit packets that are not directed at tunnels or part of a
> @@ -1800,11 +1800,11 @@ physical_run(struct physical_ctx *p_ctx,
>      ofctrl_add_flow(flow_table, OFTABLE_REMOTE_OUTPUT, 0, 0, &match,
>                      &ofpacts, hc_uuid);
>
> -    /* Table 34, Priority 0.
> +    /* Table 39, Priority 0.
>       * =======================
>       *
>       * Resubmit packets that don't output to the ingress port (already checked
> -     * in table 33) to the logical egress pipeline, clearing the logical
> +     * in table 38) to the logical egress pipeline, clearing the logical
>       * registers (for consistent behavior with packets that get tunneled). */
>      match_init_catchall(&match);
>      ofpbuf_clear(&ofpacts);
> diff --git a/ovn-architecture.7.xml b/ovn-architecture.7.xml
> index 3d2910358..c2eb3c2cc 100644
> --- a/ovn-architecture.7.xml
> +++ b/ovn-architecture.7.xml
> @@ -1224,8 +1224,8 @@
>          output port field, and since they do not carry a logical output port
>          field in the tunnel key, when a packet is received from ramp switch
>          VXLAN tunnel by an OVN hypervisor, the packet is resubmitted to table 8
> -        to determine the output port(s); when the packet reaches table 32,
> -        these packets are resubmitted to table 33 for local delivery by
> +        to determine the output port(s); when the packet reaches table 37,
> +        these packets are resubmitted to table 38 for local delivery by
>          checking a MLF_RCV_FROM_RAMP flag, which is set when the packet
>          arrives from a ramp tunnel.
>        </p>
> @@ -1364,9 +1364,9 @@
>        <dl>
>          <dt><code>output:</code></dt>
>          <dd>
> -          Implemented by resubmitting the packet to table 32.  If the pipeline
> +          Implemented by resubmitting the packet to table 37.  If the pipeline
>            executes more than one <code>output</code> action, then each one is
> -          separately resubmitted to table 32.  This can be used to send
> +          separately resubmitted to table 37.  This can be used to send
>            multiple copies of the packet to multiple ports.  (If the packet was
>            not modified between the <code>output</code> actions, and some of the
>            copies are destined to the same hypervisor, then using a logical
> @@ -1430,38 +1430,38 @@
>
>      <li>
>        <p>
> -        OpenFlow tables 32 through 47 implement the <code>output</code> action
> -        in the logical ingress pipeline.  Specifically, table 32 handles
> -        packets to remote hypervisors, table 33 handles packets to the local
> -        hypervisor, and table 34 checks whether packets whose logical ingress
> +        OpenFlow tables 37 through 39 implement the <code>output</code> action
> +        in the logical ingress pipeline.  Specifically, table 37 handles
> +        packets to remote hypervisors, table 38 handles packets to the local
> +        hypervisor, and table 39 checks whether packets whose logical ingress
>          and egress port are the same should be discarded.
>        </p>
>
>        <p>
>          Logical patch ports are a special case.  Logical patch ports do not
>          have a physical location and effectively reside on every hypervisor.
> -        Thus, flow table 33, for output to ports on the local hypervisor,
> +        Thus, flow table 38, for output to ports on the local hypervisor,
>          naturally implements output to unicast logical patch ports too.
>          However, applying the same logic to a logical patch port that is part
>          of a logical multicast group yields packet duplication, because each
>          hypervisor that contains a logical port in the multicast group will
>          also output the packet to the logical patch port.  Thus, multicast
> -        groups implement output to logical patch ports in table 32.
> +        groups implement output to logical patch ports in table 37.
>        </p>
>
>        <p>
> -        Each flow in table 32 matches on a logical output port for unicast or
> +        Each flow in table 37 matches on a logical output port for unicast or
>          multicast logical ports that include a logical port on a remote
>          hypervisor.  Each flow's actions implement sending a packet to the port
>          it matches.  For unicast logical output ports on remote hypervisors,
>          the actions set the tunnel key to the correct value, then send the
>          packet on the tunnel port to the correct hypervisor.  (When the remote
>          hypervisor receives the packet, table 0 there will recognize it as a
> -        tunneled packet and pass it along to table 33.)  For multicast logical
> +        tunneled packet and pass it along to table 38.)  For multicast logical
>          output ports, the actions send one copy of the packet to each remote
>          hypervisor, in the same way as for unicast destinations.  If a
>          multicast group includes a logical port or ports on the local
> -        hypervisor, then its actions also resubmit to table 33.  Table 32 also
> +        hypervisor, then its actions also resubmit to table 38.  Table 37 also
>          includes:
>        </p>
>
> @@ -1469,7 +1469,7 @@
>          <li>
>            A higher-priority rule to match packets received from ramp switch
>            tunnels, based on flag MLF_RCV_FROM_RAMP, and resubmit these packets
> -          to table 33 for local delivery.  Packets received from ramp switch
> +          to table 38 for local delivery.  Packets received from ramp switch
>            tunnels reach here because of a lack of logical output port field in
>            the tunnel key and thus these packets needed to be submitted to table
>            8 to determine the output port.
> @@ -1477,7 +1477,7 @@
>          <li>
>            A higher-priority rule to match packets received from ports of type
>            <code>localport</code>, based on the logical input port, and resubmit
> -          these packets to table 33 for local delivery.  Ports of type
> +          these packets to table 38 for local delivery.  Ports of type
>            <code>localport</code> exist on every hypervisor and by definition
>            their traffic should never go out through a tunnel.
>          </li>
> @@ -1492,32 +1492,32 @@
>            packets, the packets only need to be delivered to local ports.
>          </li>
>          <li>
> -          A fallback flow that resubmits to table 33 if there is no other
> +          A fallback flow that resubmits to table 38 if there is no other
>            match.
>          </li>
>        </ul>
>
>        <p>
> -        Flows in table 33 resemble those in table 32 but for logical ports that
> +        Flows in table 38 resemble those in table 37 but for logical ports that
>          reside locally rather than remotely.  For unicast logical output ports
> -        on the local hypervisor, the actions just resubmit to table 34.  For
> +        on the local hypervisor, the actions just resubmit to table 39.  For
>          multicast output ports that include one or more logical ports on the
>          local hypervisor, for each such logical port <var>P</var>, the actions
>          change the logical output port to <var>P</var>, then resubmit to table
> -        34.
> +        39.
>        </p>
>
>        <p>
>          A special case is that when a localnet port exists on the datapath,
>          remote port is connected by switching to the localnet port. In this
> -        case, instead of adding a flow in table 32 to reach the remote port, a
> -        flow is added in table 33 to switch the logical outport to the localnet
> -        port, and resubmit to table 33 as if it were unicasted to a logical
> +        case, instead of adding a flow in table 37 to reach the remote port, a
> +        flow is added in table 38 to switch the logical outport to the localnet
> +        port, and resubmit to table 38 as if it were unicasted to a logical
>          port on the local hypervisor.
>        </p>
>
>        <p>
> -        Table 34 matches and drops packets for which the logical input and
> +        Table 39 matches and drops packets for which the logical input and
>          output ports are the same and the MLF_ALLOW_LOOPBACK flag is not
>          set. It also drops MLF_LOCAL_ONLY packets directed to a localnet port.
>          It resubmits other packets to table 40.
> @@ -1545,7 +1545,7 @@
>      <li>
>       <p>
>         Table 64 bypasses OpenFlow loopback when MLF_ALLOW_LOOPBACK is set.
> -       Logical loopback was handled in table 34, but OpenFlow by default also
> +       Logical loopback was handled in table 39, but OpenFlow by default also
>         prevents loopback to the OpenFlow ingress port.  Thus, when
>         MLF_ALLOW_LOOPBACK is set, OpenFlow table 64 saves the OpenFlow ingress
>         port, sets it to zero, resubmits to table 65 for logical-to-physical
> @@ -1583,8 +1583,8 @@
>      traverse tables 0 to 65 as described in the previous section
>      <code>Architectural Physical Life Cycle of a Packet</code>, using the
>      logical datapath representing the logical switch that the sender is
> -    attached to.  At table 32, the packet will use the fallback flow that
> -    resubmits locally to table 33 on the same hypervisor.  In this case,
> +    attached to.  At table 37, the packet will use the fallback flow that
> +    resubmits locally to table 38 on the same hypervisor.  In this case,
>      all of the processing from table 0 to table 65 occurs on the hypervisor
>      where the sender resides.
>    </p>
> @@ -1615,7 +1615,7 @@
>    <p>
>      The packet traverses tables 8 to 65 a third and final time.  If the
>      destination VM or container resides on a remote hypervisor, then table
> -    32 will send the packet on a tunnel port from the sender's hypervisor
> +    37 will send the packet on a tunnel port from the sender's hypervisor
>      to the remote hypervisor.  Finally table 65 will output the packet
>      directly to the destination VM or container.
>    </p>
> @@ -1642,9 +1642,9 @@
>      When a hypervisor processes a packet on a logical datapath
>      representing a logical switch, and the logical egress port is a
>      <code>l3gateway</code> port representing connectivity to a gateway
> -    router, the packet will match a flow in table 32 that sends the
> +    router, the packet will match a flow in table 37 that sends the
>      packet on a tunnel port to the chassis where the gateway router
> -    resides.  This processing in table 32 is done in the same manner as
> +    resides.  This processing in table 37 is done in the same manner as
>      for VIFs.
>    </p>
>
> @@ -1737,21 +1737,21 @@
>      chassis, one additional mechanism is required.  When a packet
>      leaves the ingress pipeline and the logical egress port is the
>      distributed gateway port, one of two different sets of actions is
> -    required at table 32:
> +    required at table 37:
>    </p>
>
>    <ul>
>      <li>
>        If the packet can be handled locally on the sender's hypervisor
>        (e.g. one-to-one NAT traffic), then the packet should just be
> -      resubmitted locally to table 33, in the normal manner for
> +      resubmitted locally to table 38, in the normal manner for
>        distributed logical patch ports.
>      </li>
>
>      <li>
>        However, if the packet needs to be handled on the chassis
>        associated with the distributed gateway port (e.g. one-to-many
> -      SNAT traffic or non-NAT traffic), then table 32 must send the
> +      SNAT traffic or non-NAT traffic), then table 37 must send the
>        packet on a tunnel port to that chassis.
>      </li>
>    </ul>
> @@ -1763,11 +1763,11 @@
>      egress port to the type <code>chassisredirect</code> logical port is
>      simply a way to indicate that although the packet is destined for
>      the distributed gateway port, it needs to be redirected to a
> -    different chassis.  At table 32, packets with this logical egress
> -    port are sent to a specific chassis, in the same way that table 32
> +    different chassis.  At table 37, packets with this logical egress
> +    port are sent to a specific chassis, in the same way that table 37
>      directs packets whose logical egress port is a VIF or a type
>      <code>l3gateway</code> port to different chassis.  Once the packet
> -    arrives at that chassis, table 33 resets the logical egress port to
> +    arrives at that chassis, table 38 resets the logical egress port to
>      the value representing the distributed gateway port.  For each
>      distributed gateway port, there is one type
>      <code>chassisredirect</code> port, in addition to the distributed
> --
> 2.31.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


More information about the dev mailing list