Skip to content

reverse_tunnel: Add protos for contrib reverse tunnel reporting service#44327

Merged
agrawroh merged 1 commit intoenvoyproxy:mainfrom
aakugan:reverse_tunnel_reporting_protos
Apr 18, 2026
Merged

reverse_tunnel: Add protos for contrib reverse tunnel reporting service#44327
agrawroh merged 1 commit intoenvoyproxy:mainfrom
aakugan:reverse_tunnel_reporting_protos

Conversation

@aakugan
Copy link
Copy Markdown
Contributor

@aakugan aakugan commented Apr 8, 2026

Commit Message

Add protos for contrib reverse tunnel reporting service

Additional Description:

The reporting service allows Envoy to push reverse tunnel connection state to a remote server.

Three proto files are introduced:

  1. event_reporter.proto: Configuration for the EventReporter, which aggregates connection/disconnection events and fans them out to one or more pluggable clients.

  2. grpc_client.proto: Configuration for the gRPC streaming client, which sends batched events to a cluster over a bidirectional stream using an ACK/NACK protocol similar to xDS.

  3. stream_reverse_tunnels.proto: The gRPC service definition and request/response messages for the bidirectional reporting stream. Includes tunnel identity, nonce-based ACK/NACK, and server-driven send interval adjustment.

All protos use v3alpha versioning under the contrib API path.

Risk Level: Low
Testing: Proto builds verified
Docs Changes: N/A
Release Notes: N/A

Copy link
Copy Markdown
Contributor

@basundhara-c basundhara-c left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aakugan let's try to keep this interface as thin as we can.

repeated string removed_tunnel_names = 3
[(validate.rules).repeated = {items {string {min_len: 1}}}];

// Optional metadata for additional context or debugging information.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want to keep this interface as lean as possible. Seems like the Node struct already supports a metadata field. In that case, let's remove this and use the Node.metadata instead.

message StreamReverseTunnelsResponse {
// Node identifier acknowledging which Envoy instance this response is for.
// Should match the node from the corresponding request.
config.core.v3.Node node = 1;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we echoing back the entire Node proto? Can't we just use the node.id?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Initially wanted to have the flexibility if needed but yes we can make new fields in the future too made the changes


// Unique nonce for this request to enable proper ACK/NACK handling.
// Must be non-negative and should increment for each request.
// This can also be modified to be used for checksum and tracking in the future.a
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: remove the 'a'

@aakugan aakugan force-pushed the reverse_tunnel_reporting_protos branch from da27d8b to 2d2ce10 Compare April 17, 2026 01:21
@aakugan aakugan requested a review from basundhara-c April 17, 2026 01:22
@aakugan aakugan force-pushed the reverse_tunnel_reporting_protos branch 3 times, most recently from 31f9a7b to e5ebf6d Compare April 17, 2026 03:19
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Apr 17, 2026
@repokitteh-read-only
Copy link
Copy Markdown

CC @envoyproxy/dependency-shepherds: Your approval is needed for changes made to (bazel/.*repos.*\.bzl)|(bazel/dependency_imports\.bzl)|(api/bazel/.*\.bzl)|(.*/requirements\.txt)|(.*\.patch).
envoyproxy/dependency-shepherds assignee is @agrawroh

🐱

Caused by: #44327 was synchronize by aakugan.

see: more, trace.

@aakugan aakugan force-pushed the reverse_tunnel_reporting_protos branch from e5ebf6d to 698abc0 Compare April 17, 2026 03:20
@aakugan
Copy link
Copy Markdown
Contributor Author

aakugan commented Apr 17, 2026

/retest


// Maximum events to buffer at any given time
// Default is 1,000,000.
uint32 max_buffer = 6;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: call it max_buffer_count for better understanding of it as event count?

Signed-off-by: aakugan <aakashganapathy2@gmail.com>
@aakugan aakugan force-pushed the reverse_tunnel_reporting_protos branch from 698abc0 to ff44e98 Compare April 18, 2026 02:54
@agrawroh agrawroh merged commit 0575c02 into envoyproxy:main Apr 18, 2026
29 checks passed
krinkinmu pushed a commit to grnmeira/envoy that referenced this pull request Apr 20, 2026
…ce (envoyproxy#44327)

## Commit Message 
Add protos for contrib reverse tunnel reporting service

## Additional Description:
The reporting service allows Envoy to push reverse tunnel connection
state to a remote server.

Three proto files are introduced:

1. `event_reporter.proto`: Configuration for the EventReporter, which
aggregates connection/disconnection events and fans them out to one or
more pluggable clients.

2. `grpc_client.proto`: Configuration for the gRPC streaming client,
which sends batched events to a cluster over a bidirectional stream
using an ACK/NACK protocol similar to xDS.

3. `stream_reverse_tunnels.proto`: The gRPC service definition and
request/response messages for the bidirectional reporting stream.
Includes tunnel identity, nonce-based ACK/NACK, and server-driven send
interval adjustment.

All protos use v3alpha versioning under the contrib API path.

Risk Level: Low
Testing: Proto builds verified
Docs Changes: N/A
Release Notes: N/A

Signed-off-by: aakugan <aakashganapathy2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deps Approval required for changes to Envoy's external dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants