Skip to content

Commit

Permalink
http3: make quic/quiche core code (#15720)
Browse files Browse the repository at this point in the history
Part of envoyproxy/envoy#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 envoyproxy/envoy#12829

Signed-off-by: Matt Klein <[email protected]>
  • Loading branch information
mattklein123 authored Mar 29, 2021
1 parent fc47528 commit 5c16375
Show file tree
Hide file tree
Showing 228 changed files with 462 additions and 1,138 deletions.
2 changes: 1 addition & 1 deletion .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ build:coverage --strategy=CoverageReport=sandboxed,local
build:coverage --experimental_use_llvm_covmap
build:coverage --collect_code_coverage
build:coverage --test_tag_filters=-nocoverage
build:coverage --instrumentation_filter="//source(?!/common/chromium_url|/extensions/quic_listeners/quiche/platform)[/:],//include[/:]"
build:coverage --instrumentation_filter="//source(?!/common/chromium_url|/common/quic/platform)[/:],//include[/:]"
build:test-coverage --test_arg="-l trace"
build:fuzz-coverage --config=plain-fuzzer
build:fuzz-coverage --run_under=@envoy//bazel/coverage:fuzz_coverage_wrapper.sh
Expand Down
17 changes: 0 additions & 17 deletions api/envoy/config/listener/v3/udp_default_writer_config.proto

This file was deleted.

19 changes: 0 additions & 19 deletions api/envoy/config/listener/v3/udp_gso_batch_writer_config.proto

This file was deleted.

24 changes: 7 additions & 17 deletions api/envoy/config/listener/v3/udp_listener_config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -16,36 +16,26 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: UDP listener config]
// Listener :ref:`configuration overview <config_listeners>`

// [#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 <envoy_v3_api_field_config.core.v3.UdpSocketConfig.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
// <envoy_api_field_config.core.v3.SocketAddress.protocol>` is :ref:`UDP
// <envoy_api_enum_value_config.core.v3.SocketAddress.Protocol.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 {
Expand Down
20 changes: 0 additions & 20 deletions api/envoy/config/listener/v4alpha/udp_default_writer_config.proto

This file was deleted.

This file was deleted.

24 changes: 7 additions & 17 deletions api/envoy/config/listener/v4alpha/udp_listener_config.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions bazel/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -380,11 +380,6 @@ config_setting(
values = {"define": "zlib=ng"},
)

config_setting(
name = "enable_quiche",
values = {"define": "quiche=enabled"},
)

# TODO: consider converting WAVM VM support to an extension (https://github.com/envoyproxy/envoy/issues/12574)
config_setting(
name = "wasm_wavm",
Expand Down
2 changes: 1 addition & 1 deletion bazel/envoy_internal.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def envoy_copts(repository, test = False):
repository + "//bazel:apple": ["-D__APPLE_USE_RFC_3542"],
"//conditions:default": [],
}) + envoy_select_hot_restart(["-DENVOY_HOT_RESTART"], repository) + \
envoy_select_enable_http3(["-DENVOY_ENABLE_QUICHE"], repository) + \
envoy_select_enable_http3(["-DENVOY_ENABLE_QUIC"], repository) + \
_envoy_select_perf_annotation(["-DENVOY_PERF_ANNOTATION"]) + \
envoy_select_google_grpc(["-DENVOY_GOOGLE_GRPC"], repository) + \
_envoy_select_path_normalization_by_default(["-DENVOY_NORMALIZE_PATH_BY_DEFAULT"], repository)
Expand Down
Loading

0 comments on commit 5c16375

Please sign in to comment.