Skip to content

Conversation

asingh-g
Copy link

To be able to load test Terminating HTTP CONNECT/CONNECT-UDP Proxies, I've implemented encapsulation by spinning up a second envoy as a subprocess and routing nighthawk's generated traffic through it.

Presently CONNECT-UDP is only supported for HTTP/2 in envoy, and CONNECT is supported for all of H1, H2 and H3 QUIC.
Therefore only following combinations are supported
H1,H2 over H1,H2,H3
and
H3 over H2
using a combination of the --protocol and --tunnel-protocol flags.

@asingh-g asingh-g force-pushed the nighthawk-connect-support branch from 46c5e51 to fbe6068 Compare June 28, 2025 17:22
Copy link
Collaborator

@mum4k mum4k left a comment

Choose a reason for hiding this comment

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

Thank you @asingh-g, glad to see this landing!

I note this is still marked as Draft, leaving a few observations below to get us started. Please mark it as ready for review once ready. I will be ooo for two weeks, but @eric846 will be able to help with review and merge.

@mum4k mum4k requested a review from eric846 July 1, 2025 17:00
@mum4k mum4k added the waiting-for-changes A PR waiting for comments to be resolved and changes to be applied. label Jul 1, 2025
@asingh-g asingh-g force-pushed the nighthawk-connect-support branch from ca97948 to eda8939 Compare July 1, 2025 23:14
asingh-g added 25 commits July 2, 2025 00:18
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
asingh-g and others added 7 commits July 2, 2025 00:18
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
- Major .bazelrc update after envoyproxy/envoy#39755
  - Not taking the upstream update `build:linux --action_env=BAZEL_LINKOPTS=-lm:-fuse-ld=gold` which breaks my local `ci/do_ci.sh build` with `clang-18: error: invalid linker name in argument '-fuse-ld=gold'`
- `Http1PoolImpl` started taking an `OverloadManager` argument; created a `NullOverloadManager` in `NighthawkServerInstance` to be used for that

Signed-off-by: eric846 <56563761+eric846@users.noreply.github.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
- Major .bazelrc update after envoyproxy/envoy#39755
  - Not taking the upstream update `build:linux --action_env=BAZEL_LINKOPTS=-lm:-fuse-ld=gold` which breaks my local `ci/do_ci.sh build` with `clang-18: error: invalid linker name in argument '-fuse-ld=gold'`
- `Http1PoolImpl` started taking an `OverloadManager` argument; created a `NullOverloadManager` in `NighthawkServerInstance` to be used for that

Signed-off-by: eric846 <56563761+eric846@users.noreply.github.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Update `ENVOY_COMMIT` and `ENVOY_SHA`.

Signed-off-by: eric846 <56563761+eric846@users.noreply.github.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
@asingh-g asingh-g force-pushed the nighthawk-connect-support branch from e9b11d7 to 87f61fe Compare July 2, 2025 00:21
asingh-g and others added 3 commits July 1, 2025 20:22
Signed-off-by: asingh-g <100796504+asingh-g@users.noreply.github.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Copy link

@asedeno asedeno left a comment

Choose a reason for hiding this comment

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

I still need to read over source/client/process_impl.cc and the tests, but here's some comments.

@@ -1,5 +1,7 @@
#include "source/client/process_bootstrap.h"

#include <semaphore.h>
Copy link

Choose a reason for hiding this comment

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

Can we use the C++ semaphore header rather than the C semaphore.h header, or perhaps something from Abseil's synchronization library?

Copy link
Author

@asingh-g asingh-g Sep 3, 2025

Choose a reason for hiding this comment

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

I looked into std::semaphore and abseil's synchronisation libs, I am not convinced if they're meant for IPC. The pshared flag (PTHREAD_PROCESS_SHARED) in semaphore.h is what allows us to do inter process synchronisation and it looks to me that both of the alternatives use PTHREAD_PROCESS_PRIVATE

Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
Signed-off-by: asingh-g <abhisinghx@google.com>
@asingh-g asingh-g force-pushed the nighthawk-connect-support branch 2 times, most recently from b0b330f to 47d662f Compare September 16, 2025 00:44
Signed-off-by: asingh-g <abhisinghx@google.com>
@asingh-g asingh-g marked this pull request as ready for review September 16, 2025 01:09
@asingh-g asingh-g requested a review from eric846 September 16, 2025 01:09
Signed-off-by: asingh-g <abhisinghx@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
waiting-for-changes A PR waiting for comments to be resolved and changes to be applied.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants