On 12/10/24 10:31 AM, Ales Musil wrote:
> On Tue, Dec 10, 2024 at 10:30 AM Ales Musil <[email protected]> wrote:
>
>>
>>
>> On Thu, Dec 5, 2024 at 1:28 PM Ilya Maximets <[email protected]> wrote:
>>
>>> STT tunnel support will be deprecated in upcoming OVS 3.5 release and
>>> planned for removal in OVS 3.6.
>>>
>>
>>
>> Hi Ilya,
>>
>> thank you for the patch. I have two small comments that could be addressed
>> during merge.
>> We should leave a note in "enum chassis_tunnel_type" about the deprecation.
>>
>>
>>> 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.06.
>>>
>>
>> nit: 25.09 we don't have 25.06 anymore.
>>
>>
>>>
>>> Signed-off-by: Ilya Maximets <[email protected]>
>>> ---
>>>
>>> The corresponding OVS patch:
>>>
>>> https://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/
>>>
>>> The OVS change is not applied yet, so maybe wait for it to be in ovs/main
>>> before applying this deprecation patch.
>>>
>>> Documentation/faq/general.rst | 3 +++
>>> NEWS | 2 ++
>>> controller/chassis.c | 8 ++++++--
>>> controller/ovn-controller.8.xml | 4 ++++
>>> ovn-architecture.7.xml | 7 +++----
>>> ovn-sb.xml | 3 ++-
>>> tests/ovn-ic.at | 2 +-
>>> 7 files changed, 21 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/Documentation/faq/general.rst b/Documentation/faq/general.rst
>>> index df4952ef5..63f5c4cbe 100644
>>> --- a/Documentation/faq/general.rst
>>> +++ b/Documentation/faq/general.rst
>>> @@ -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
>>> diff --git a/NEWS b/NEWS
>>> index da3aba739..c9eb8ede8 100644
>>> --- a/NEWS
>>> +++ b/NEWS
>>> @@ -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
>>> --------------------------
>>> diff --git a/controller/chassis.c b/controller/chassis.c
>>> index 8b1964c54..19a251f26 100644
>>> --- a/controller/chassis.c
>>> +++ b/controller/chassis.c
>>> @@ -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");
>>> }
>>> }
>>> }
>>> diff --git a/controller/ovn-controller.8.xml
>>> b/controller/ovn-controller.8.xml
>>> index aeaa374c1..6a7d676af 100644
>>> --- a/controller/ovn-controller.8.xml
>>> +++ b/controller/ovn-controller.8.xml
>>> @@ -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
>>> diff --git a/ovn-architecture.7.xml b/ovn-architecture.7.xml
>>> index 640944faf..b11277bb9 100644
>>> --- a/ovn-architecture.7.xml
>>> +++ b/ovn-architecture.7.xml
>>> @@ -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>
>>> diff --git a/ovn-sb.xml b/ovn-sb.xml
>>> index ea4adc1c3..9394bb5f4 100644
>>> --- a/ovn-sb.xml
>>> +++ b/ovn-sb.xml
>>> @@ -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">
>>> diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
>>> index 1ba65fd9f..13150a453 100644
>>> --- a/tests/ovn-ic.at
>>> +++ b/tests/ovn-ic.at
>>> @@ -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
>>> --
>>> 2.47.0
>>>
>>> _______________________________________________
>>> dev mailing list
>>> [email protected]
>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>>
>>>
>> Thanks,
>> Ales
>>
>
> Forgot to add, that with those 2 things addressed:
> Acked-by: Ales Musil <[email protected]>
>
Thanks, Ilya and Ales! I took care of the 2 small things and applied
the patch to main.
The incremental was:
diff --git a/lib/ovn-util.h b/lib/ovn-util.h
index 7b98b9b9a1..b48573a93a 100644
--- a/lib/ovn-util.h
+++ b/lib/ovn-util.h
@@ -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
};
Regards,
Dumitru
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev