Skip to content

Internal Upstream Transport & Metadata Passthrough #108

@Eeshu-Yadav

Description

@Eeshu-Yadav

Implement the InternalUpstreamTransport functionality including metadata passthrough as specified in the Envoy internal upstream transport configuration.

Background

For complete waypoint proxy support, we need to implement metadata passthrough from downstream connections to internal upstream connections. This enables features like original destination preservation and custom metadata flow.

Configuration Structure to Support

transport_socket:
  name: "internal_upstream"
  typed_config:
    "@type": "type.googleapis.com/envoy.extensions.transport_sockets.internal_upstream.v3.InternalUpstreamTransport"
    passthrough_metadata:
      - kind:
          host: {}
        name: "envoy.filters.listener.original_dst"
      - kind:
          cluster: {}
        name: "custom.metadata.key"
    transport_socket:
      name: "raw_buffer"

Core Functionality Needed

async fn apply_internal_upstream_transport(
    connection: &mut InternalConnection,
    transport: &InternalUpstreamTransport,
    downstream_metadata: &DownstreamConnectionMetadata,
) -> Result<()> {
    for metadata_source in &transport.passthrough_metadata {
        let value = extract_metadata(downstream_metadata, metadata_source)?;
        connection.set_metadata(&metadata_source.name, value);
    }
    // Handle nested transport socket...
}

Dependencies

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions