In Istio’s ambient mode, ztunnel acts as a node-level security proxy responsible for L4 traffic interception and encryption between services. However, ztunnel doesn’t handle L7 tasks such as HTTP-based routing or policy enforcement. For L7 traffic management, waypoint proxy, powered by Envoy, processes HTTP requests and applies L7 policies. When ztunnel detects traffic requiring L7 processing, it forwards the traffic using the HBONE protocol to the waypoint proxy. The proxy applies policies, logs telemetry data, and forwards requests to the target Pod through ztunnel.
This post details this traffic forwarding path, breaking down how L7 traffic flows from ztunnel to waypoint proxy and ultimately to the target Pod.
When a request requires L7 handling (e.g., productpage
service calling reviews-v1
), ztunnel forwards traffic to waypoint proxy using HBONE, enabling transparent policy application and telemetry collection.
The following diagram illustrates the L7 traffic path in Istio ambient mode:
The following two pictures respectively show the L7 traffic processing paths of the source Pod and the destination Pod in the same node and cross-node scenarios.
The productpage
service initiates an HTTP request to the reviews-v1
service at reviews.default.svc.cluster.local:9080
.
Ztunnel on the source node intercepts the outbound request from productpage
using Kubernetes’ iptables
rules. It inspects Istio’s control plane configuration and determines that L7 policies must be applied.
Ztunnel uses HBONE protocol instead of native Envoy-to-Envoy XDS or TCP+mTLS tunneling. HBONE (HTTP-Based Overlay Network Environment) encapsulates traffic in HTTP/2, enabling transparent forwarding of traffic for L7 processing.
ztunnel wraps the intercepted traffic into an HBONE tunnel and forwards it to waypoint proxy.
Waypoint proxy, built on Envoy, verifies the downstream client’s mTLS credentials using SPIFFE IDs and contextual metadata for authentication. It then applies the following policies:
Waypoint proxy forwards the processed traffic through HBONE to the target node’s ztunnel.
ztunnel on the target node receives traffic from waypoint proxy through HBONE, decapsulates the request, and forwards it to the target Pod (reviews-v1
) on its application port.
15008
.iptables
.Use istioctl ztunnel
to inspect ztunnel configurations and states.
istioctl pc
and istioctl ps
to inspect Envoy proxy configurations.istioctl waypoint
for streamlined configuration inspection.Istio ambient mode uses ztunnel for L4 traffic processing, including transparent interception, mTLS encryption, and forwarding. L7 tasks such as HTTP-based routing, policy enforcement, and telemetry collection are managed by waypoint proxy, with communication between ztunnel and waypoint proxy facilitated by HBONE protocol.
This innovative design eliminates sidecars, simplifying operations while maintaining high performance, security, and observability.
Last updated on Mar 9, 2025