Skip to content

router: add experimental HTTP/1.1 kTLS body-splice fast path#45581

Open
agrawroh wants to merge 1 commit into
envoyproxy:mainfrom
agrawroh:l7-http1-ktls-body-splice
Open

router: add experimental HTTP/1.1 kTLS body-splice fast path#45581
agrawroh wants to merge 1 commit into
envoyproxy:mainfrom
agrawroh:l7-http1-ktls-body-splice

Conversation

@agrawroh

Copy link
Copy Markdown
Member

Description

This PR adds an experimental, disabled-by-default HTTP/1.1 kTLS body-splice fast path. When eligible, Envoy can relay a Content-Length request or response body with in-kernel splice(), bypassing user-space body buffers and codec filter-chain body processing while preserving HTTP/1.1 keep-alive reuse.

The fast path is guarded by envoy.reloadable_features.http1_ktls_body_splice and only engages for single HTTP/1.1 socket legs with trusted upstream kTLS and a plaintext or installed-kTLS peer. Per-cluster lifecycle counters track engaged, abandoned, completed, and truncated splice decisions.


Commit Message: router: add experimental HTTP/1.1 kTLS body-splice fast path
Additional Description: Added an experimental, disabled-by-default HTTP/1.1 kTLS body-splice fast path.
Risk Level: Low
Testing: Added Unit + Integration Tests
Docs Changes: Added
Release Notes: Added

@repokitteh-read-only

Copy link
Copy Markdown

CC @envoyproxy/coverage-shephards: FYI only for changes made to (test/coverage.yaml).
envoyproxy/coverage-shephards assignee is @RyanTheOptimist
CC @envoyproxy/runtime-guard-changes: FYI only for changes made to (source/common/runtime/runtime_features.cc).

🐱

Caused by: #45581 was opened by agrawroh.

see: more, trace.

@agrawroh agrawroh force-pushed the l7-http1-ktls-body-splice branch 8 times, most recently from 93dba8f to dcbb415 Compare June 11, 2026 21:27
Relay a Content-Length HTTP/1.1 body between a kernel-TLS upstream and a
plaintext or kernel-TLS peer with an in-kernel splice(), bypassing the
userspace buffers and codec filter chains in both directions (download and
upload). Dark by default behind the runtime flag
envoy.reloadable_features.http1_ktls_body_splice and observable via the
cluster.<name>.http1_ktls_splice.{engaged,abandoned,completed,truncated}
counters.

Signed-off-by: Rohit Agrawal <rohit.agrawal@databricks.com>
@agrawroh agrawroh force-pushed the l7-http1-ktls-body-splice branch from dcbb415 to e6e3275 Compare June 11, 2026 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants