From 73fdc08d542f9b3dcb3fd2b45aa000d210090bcf Mon Sep 17 00:00:00 2001 From: "data-plane-api(Azure Pipelines)" Date: Wed, 22 Jun 2022 15:08:47 +0000 Subject: [PATCH] Listener: extend connection balancer (#20268) Signed-off-by: Loong Dai Mirrored from https://github.com/envoyproxy/envoy @ 2167cb3b0bc0353cf53bca4a14a846c19de59018 --- BUILD | 1 + .../connection_balance/dlb/v3alpha/BUILD | 9 ++++++ .../connection_balance/dlb/v3alpha/dlb.proto | 30 +++++++++++++++++++ envoy/config/listener/v3/listener.proto | 6 ++++ versioning/BUILD | 1 + 5 files changed, 47 insertions(+) create mode 100644 contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD create mode 100644 contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto diff --git a/BUILD b/BUILD index bf3dce3b..dd9edbb6 100644 --- a/BUILD +++ b/BUILD @@ -86,6 +86,7 @@ proto_library( "//contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha:pkg", "//contrib/envoy/extensions/filters/network/sip_proxy/v3alpha:pkg", "//contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha:pkg", + "//contrib/envoy/extensions/network/connection_balance/dlb/v3alpha:pkg", "//contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha:pkg", "//contrib/envoy/extensions/vcl/v3alpha:pkg", "//envoy/admin/v3:pkg", diff --git a/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD b/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD new file mode 100644 index 00000000..ee92fb65 --- /dev/null +++ b/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD @@ -0,0 +1,9 @@ +# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. + +load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") + +licenses(["notice"]) # Apache 2 + +api_proto_package( + deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], +) diff --git a/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto b/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto new file mode 100644 index 00000000..3b4615a6 --- /dev/null +++ b/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package envoy.extensions.network.connection_balance.dlb.v3alpha; + +import "udpa/annotations/status.proto"; + +option java_package = "io.envoyproxy.envoy.extensions.network.connection_balance.dlb.v3alpha"; +option java_outer_classname = "DlbProto"; +option java_multiple_files = true; +option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/network/connection_balance/dlb/v3alpha"; +option (udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: Dlb connection balancer configuration] +// DLB :ref:`configuration overview `. +// [#extension: envoy.network.connection_balance.dlb] + +// The Dlb is a hardware managed system of queues and arbiters connecting producers and consumers. It is a PCIE device +// in the CPU package. It interacts with software running on cores and potentially other devices. The Dlb implements the +// following balancing features: +// +// - Lock-free multi-producer/multi-consumer operation. +// - Multiple priorities for varying traffic types. +// - Various distribution schemes. +// +// Dlb connection balancer uses Dlb hardware to balance connections, and can significantly reduce latency. +// +// As the Dlb connection balancer provides assistance from dedicated Dlb hardware, it can be used for a proxy with a large number of connections +// (e.g., a gateway). +message Dlb { +} diff --git a/envoy/config/listener/v3/listener.proto b/envoy/config/listener/v3/listener.proto index 5dcddadc..39655d2b 100644 --- a/envoy/config/listener/v3/listener.proto +++ b/envoy/config/listener/v3/listener.proto @@ -5,6 +5,7 @@ package envoy.config.listener.v3; import "envoy/config/accesslog/v3/accesslog.proto"; import "envoy/config/core/v3/address.proto"; import "envoy/config/core/v3/base.proto"; +import "envoy/config/core/v3/extension.proto"; import "envoy/config/core/v3/socket_option.proto"; import "envoy/config/listener/v3/api_listener.proto"; import "envoy/config/listener/v3/listener_components.proto"; @@ -94,6 +95,11 @@ message Listener { // If specified, the listener will use the exact connection balancer. ExactBalance exact_balance = 1; + + // The listener will use the connection balancer according to ``type_url``. If ``type_url`` is invalid, + // Envoy will not attempt to balance active connections between worker threads. + // [#extension-category: envoy.network.connection_balance] + core.v3.TypedExtensionConfig extend_balance = 2; } } diff --git a/versioning/BUILD b/versioning/BUILD index 99e31b1b..ef9aaa54 100644 --- a/versioning/BUILD +++ b/versioning/BUILD @@ -23,6 +23,7 @@ proto_library( "//contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha:pkg", "//contrib/envoy/extensions/filters/network/sip_proxy/v3alpha:pkg", "//contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha:pkg", + "//contrib/envoy/extensions/network/connection_balance/dlb/v3alpha:pkg", "//contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha:pkg", "//contrib/envoy/extensions/vcl/v3alpha:pkg", "//envoy/admin/v3:pkg",