Skip to content

Commit

Permalink
chassis: Deprecate support for STT encapsulation.
Browse files Browse the repository at this point in the history
STT tunnel support will be deprecated in upcoming OVS 3.5 release and
planned for removal in OVS 3.6.

The main reasons are:

  STT tunnel implementation was rejected in the upstream Linux kernel
  long time ago and will probably never be there, because it is
  not considered safe for use, as it can confuse parts of the network
  mistaking it for normal TCP.

  The only available implementation for Linux is an OOT openvswitch
  kernel module shipped with OVS 2.17.  This module is deprecated and
  2.17 reaches EoL in Feb 2025.  At that point there will be no
  supported implementation for Linux.

  The standard draft for the protocol itself is also expired and
  archived with the latest update made in 2016:
    https://datatracker.ietf.org/doc/draft-davie-stt/

  Modern network interface cards support various hardware offload
  features with UDP tunnels, diminishing the main selling point of
  STT - the ability to reuse hardware offload features meant for TCP.

Deprecate the STT encapsulation type in OVN as well, so support can
be removed in 25.09.

Signed-off-by: Ilya Maximets <[email protected]>
Acked-by: Ales Musil <[email protected]>
Signed-off-by: Dumitru Ceara <[email protected]>
  • Loading branch information
igsilya authored and dceara committed Dec 11, 2024
1 parent 26f6640 commit 8a3981e
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 9 deletions.
3 changes: 3 additions & 0 deletions Documentation/faq/general.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ Q: Why does OVN use STT and Geneve instead of VLANs or VXLAN (or GRE)?

See ``ovn-architecture(7)``, under "Tunnel Encapsulations", for details.

Note: Support for STT tunnels is deprecated and will be removed in OVN
25.09 release.

Together, these metadata require 24 + 15 + 16 = 55 bits. GRE provides 32
bits, VXLAN provides 24, and VLAN only provides 12. Most notably, if
logical egress pipelines do not match on the logical ingress port, thereby
Expand Down
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ Post v24.09.0
hash (with specified hash fields) for ECMP routes
while choosing nexthop.
- ovn-ic: Add support for route tag to prevent route learning.
- Support for STT tunnels in ovn-encap-type is deprecated and will be
removed in the next release.

OVN v24.09.0 - 13 Sep 2024
--------------------------
Expand Down
8 changes: 6 additions & 2 deletions controller/chassis.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,12 +243,16 @@ chassis_parse_ovs_encap_type(const char *encap_type,
{
sset_from_delimited_string(encap_type_set, encap_type, ",");

static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
const char *type;

SSET_FOR_EACH (type, encap_type_set) {
if (!get_tunnel_type(type)) {
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
uint32_t tun_type = get_tunnel_type(type);

if (!tun_type) {
VLOG_INFO_RL(&rl, "Unknown tunnel type: %s", type);
} else if (tun_type == STT) {
VLOG_WARN_RL(&rl, "STT encapsulation type is deprecated");
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions controller/ovn-controller.8.xml
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@
are <code>geneve</code>, <code>vxlan</code>, and <code>stt</code>.
</p>

<p>
<code>stt</code> tunnel type is deprecated.
</p>

<p>
Due to the limited amount of metadata in <code>vxlan</code>,
the capabilities and performance of connected gateways and
Expand Down
3 changes: 2 additions & 1 deletion lib/ovn-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,8 @@ hash_add_in6_addr(uint32_t hash, const struct in6_addr *addr)
* least-preferred (lower number). */
enum chassis_tunnel_type {
GENEVE = 1 << 2,
STT = 1 << 1,
STT = 1 << 1, /* NOTE: STT support is deprecated and will be removed
* in an upcoming release. */
VXLAN = 1 << 0
};

Expand Down
7 changes: 3 additions & 4 deletions ovn-architecture.7.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2897,10 +2897,9 @@
</diagram>

<p>
Environments whose NICs lack Geneve offload may prefer STT encapsulation
for performance reasons. For STT encapsulation, OVN encodes all three
pieces of logical metadata in the STT 64-bit tunnel ID as follows, from MSB
to LSB:
Support for STT encapsulation is deprecated. While using STT on setups
that didn't migrate to Geneve yet, OVN encodes all three pieces of logical
metadata in the STT 64-bit tunnel ID as follows, from MSB to LSB:
</p>

<diagram>
Expand Down
3 changes: 2 additions & 1 deletion ovn-sb.xml
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,8 @@
<column name="type">
The encapsulation to use to transmit packets to this chassis.
Hypervisors and gateways must use one of: <code>geneve</code>,
<code>vxlan</code>, or <code>stt</code>.
<code>vxlan</code>, or <code>stt</code>. <code>stt</code> is
deprecated.
</column>

<column name="options">
Expand Down
2 changes: 1 addition & 1 deletion tests/ovn-ic.at
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ OVS_WAIT_UNTIL([ovn_as az2 ovn-sbctl show | grep "192.168.0.2"])
ovs-vsctl set open . external_ids:ovn-encap-type="geneve,stt"
OVS_WAIT_UNTIL([ovn_as az2 ovn-sbctl show | grep stt])

OVN_CLEANUP_SBOX(gw2)
OVN_CLEANUP_SBOX([gw2], ["/STT encapsulation type is deprecated/d"])
OVN_CLEANUP_IC([az1], [az2])

AT_CLEANUP
Expand Down

0 comments on commit 8a3981e

Please sign in to comment.