From dbb8cfe447eb9e09e23a63611f2f8786077b0c03 Mon Sep 17 00:00:00 2001 From: "data-plane-api(Azure Pipelines)" Date: Mon, 29 Mar 2021 20:08:23 +0000 Subject: [PATCH] http3: make quic/quiche core code (#15720) Part of https://github.com/envoyproxy/envoy/issues/12829. The transport extension will stay a built-in extension since it fits well. UDP listener and UDP writer extension points have been removed. GSO is still only enabled for QUIC because it currently depends on QUICHE, has some obvious perf issues, and is failing non-QUIC integration tests. Futher work is needed to remove codec extension factories. Part of https://github.com/envoyproxy/envoy/issues/12829 Signed-off-by: Matt Klein Mirrored from https://github.com/envoyproxy/envoy @ 8e8a21d20ef0e90ef31ea16f5b5c85ac08d922ae --- .../v3/udp_default_writer_config.proto | 17 ------------- .../v3/udp_gso_batch_writer_config.proto | 19 --------------- .../listener/v3/udp_listener_config.proto | 24 ++++++------------- .../v4alpha/udp_default_writer_config.proto | 20 ---------------- .../v4alpha/udp_gso_batch_writer_config.proto | 22 ----------------- .../v4alpha/udp_listener_config.proto | 24 ++++++------------- 6 files changed, 14 insertions(+), 112 deletions(-) delete mode 100644 envoy/config/listener/v3/udp_default_writer_config.proto delete mode 100644 envoy/config/listener/v3/udp_gso_batch_writer_config.proto delete mode 100644 envoy/config/listener/v4alpha/udp_default_writer_config.proto delete mode 100644 envoy/config/listener/v4alpha/udp_gso_batch_writer_config.proto diff --git a/envoy/config/listener/v3/udp_default_writer_config.proto b/envoy/config/listener/v3/udp_default_writer_config.proto deleted file mode 100644 index 82fffffd..00000000 --- a/envoy/config/listener/v3/udp_default_writer_config.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -package envoy.config.listener.v3; - -import "udpa/annotations/status.proto"; - -option java_package = "io.envoyproxy.envoy.config.listener.v3"; -option java_outer_classname = "UdpDefaultWriterConfigProto"; -option java_multiple_files = true; -option (udpa.annotations.file_status).package_version_status = ACTIVE; - -// [#protodoc-title: Udp Default Writer Config] - -// [#not-implemented-hide:] -// Configuration specific to the Udp Default Writer. -message UdpDefaultWriterOptions { -} diff --git a/envoy/config/listener/v3/udp_gso_batch_writer_config.proto b/envoy/config/listener/v3/udp_gso_batch_writer_config.proto deleted file mode 100644 index 75904d68..00000000 --- a/envoy/config/listener/v3/udp_gso_batch_writer_config.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -package envoy.config.listener.v3; - -import "udpa/annotations/status.proto"; - -option java_package = "io.envoyproxy.envoy.config.listener.v3"; -option java_outer_classname = "UdpGsoBatchWriterConfigProto"; -option java_multiple_files = true; -option (udpa.annotations.file_status).package_version_status = ACTIVE; - -// [#protodoc-title: UDP GSO Batch Writer] -// [#comment:#extension: envoy.udp_packet_writers.udp_gso_batch_writer] - -// Configuration specific to the UDP GSO Batch Writer. -// [#not-implemented-hide:] -// [#comment:TODO(#12829): Remove this as an extension point.] -message UdpGsoBatchWriterOptions { -} diff --git a/envoy/config/listener/v3/udp_listener_config.proto b/envoy/config/listener/v3/udp_listener_config.proto index f59c9e3b..614f7e9d 100644 --- a/envoy/config/listener/v3/udp_listener_config.proto +++ b/envoy/config/listener/v3/udp_listener_config.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package envoy.config.listener.v3; -import "envoy/config/core/v3/extension.proto"; import "envoy/config/core/v3/udp_socket_config.proto"; +import "envoy/config/listener/v3/quic_config.proto"; import "udpa/annotations/status.proto"; import "udpa/annotations/versioning.proto"; @@ -16,36 +16,26 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: UDP listener config] // Listener :ref:`configuration overview ` -// [#next-free-field: 7] +// [#next-free-field: 8] message UdpListenerConfig { option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.listener.UdpListenerConfig"; - reserved 1, 2, 3; + reserved 1, 2, 3, 4, 6; reserved "config"; - // Used to create a specific UDP listener factory. If not specified the default UDP listener is - // used. - // [#comment:#extension-category: envoy.udp_listeners] - // [#not-implemented-hide:] - // [#comment:TODO(#12829): Remove this as an extension point.] - core.v3.TypedExtensionConfig listener_config = 4; - // UDP socket configuration for the listener. The default for // :ref:`prefer_gro ` is false for // listener sockets. If receiving a large amount of datagrams from a small number of sources, it // may be worthwhile to enable this option after performance testing. core.v3.UdpSocketConfig downstream_socket_config = 5; - // If the protocol in the listener socket address in :ref:`protocol - // ` is :ref:`UDP - // `, this field specifies the - // actual UDP writer to create. If not specified the default UDP writer is used. - // [#comment:#extension-category: envoy.udp_packet_writers] + // Configuration for QUIC protocol. If empty, QUIC will not be enabled on this listener. Set + // to the default object to enable QUIC without modifying any additional options. // [#not-implemented-hide:] - // [#comment:TODO(#12829): Remove this as an extension point.] - core.v3.TypedExtensionConfig writer_config = 6; + // [#comment:Unhide when QUIC alpha is announced with other docs.] + QuicProtocolOptions quic_options = 7; } message ActiveRawUdpListenerConfig { diff --git a/envoy/config/listener/v4alpha/udp_default_writer_config.proto b/envoy/config/listener/v4alpha/udp_default_writer_config.proto deleted file mode 100644 index 51cf63af..00000000 --- a/envoy/config/listener/v4alpha/udp_default_writer_config.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -package envoy.config.listener.v4alpha; - -import "udpa/annotations/status.proto"; -import "udpa/annotations/versioning.proto"; - -option java_package = "io.envoyproxy.envoy.config.listener.v4alpha"; -option java_outer_classname = "UdpDefaultWriterConfigProto"; -option java_multiple_files = true; -option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; - -// [#protodoc-title: Udp Default Writer Config] - -// [#not-implemented-hide:] -// Configuration specific to the Udp Default Writer. -message UdpDefaultWriterOptions { - option (udpa.annotations.versioning).previous_message_type = - "envoy.config.listener.v3.UdpDefaultWriterOptions"; -} diff --git a/envoy/config/listener/v4alpha/udp_gso_batch_writer_config.proto b/envoy/config/listener/v4alpha/udp_gso_batch_writer_config.proto deleted file mode 100644 index 87625555..00000000 --- a/envoy/config/listener/v4alpha/udp_gso_batch_writer_config.proto +++ /dev/null @@ -1,22 +0,0 @@ -syntax = "proto3"; - -package envoy.config.listener.v4alpha; - -import "udpa/annotations/status.proto"; -import "udpa/annotations/versioning.proto"; - -option java_package = "io.envoyproxy.envoy.config.listener.v4alpha"; -option java_outer_classname = "UdpGsoBatchWriterConfigProto"; -option java_multiple_files = true; -option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; - -// [#protodoc-title: UDP GSO Batch Writer] -// [#comment:#extension: envoy.udp_packet_writers.udp_gso_batch_writer] - -// Configuration specific to the UDP GSO Batch Writer. -// [#not-implemented-hide:] -// [#comment:TODO(#12829): Remove this as an extension point.] -message UdpGsoBatchWriterOptions { - option (udpa.annotations.versioning).previous_message_type = - "envoy.config.listener.v3.UdpGsoBatchWriterOptions"; -} diff --git a/envoy/config/listener/v4alpha/udp_listener_config.proto b/envoy/config/listener/v4alpha/udp_listener_config.proto index f6226911..fc99b86d 100644 --- a/envoy/config/listener/v4alpha/udp_listener_config.proto +++ b/envoy/config/listener/v4alpha/udp_listener_config.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package envoy.config.listener.v4alpha; -import "envoy/config/core/v4alpha/extension.proto"; import "envoy/config/core/v4alpha/udp_socket_config.proto"; +import "envoy/config/listener/v4alpha/quic_config.proto"; import "udpa/annotations/status.proto"; import "udpa/annotations/versioning.proto"; @@ -16,36 +16,26 @@ option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSIO // [#protodoc-title: UDP listener config] // Listener :ref:`configuration overview ` -// [#next-free-field: 7] +// [#next-free-field: 8] message UdpListenerConfig { option (udpa.annotations.versioning).previous_message_type = "envoy.config.listener.v3.UdpListenerConfig"; - reserved 1, 2, 3; + reserved 1, 2, 3, 4, 6; reserved "config"; - // Used to create a specific UDP listener factory. If not specified the default UDP listener is - // used. - // [#comment:#extension-category: envoy.udp_listeners] - // [#not-implemented-hide:] - // [#comment:TODO(#12829): Remove this as an extension point.] - core.v4alpha.TypedExtensionConfig listener_config = 4; - // UDP socket configuration for the listener. The default for // :ref:`prefer_gro ` is false for // listener sockets. If receiving a large amount of datagrams from a small number of sources, it // may be worthwhile to enable this option after performance testing. core.v4alpha.UdpSocketConfig downstream_socket_config = 5; - // If the protocol in the listener socket address in :ref:`protocol - // ` is :ref:`UDP - // `, this field specifies the - // actual UDP writer to create. If not specified the default UDP writer is used. - // [#comment:#extension-category: envoy.udp_packet_writers] + // Configuration for QUIC protocol. If empty, QUIC will not be enabled on this listener. Set + // to the default object to enable QUIC without modifying any additional options. // [#not-implemented-hide:] - // [#comment:TODO(#12829): Remove this as an extension point.] - core.v4alpha.TypedExtensionConfig writer_config = 6; + // [#comment:Unhide when QUIC alpha is announced with other docs.] + QuicProtocolOptions quic_options = 7; } message ActiveRawUdpListenerConfig {