全网最细 - 深度解析 Istio Ambient Mesh 流量路径

💡 原文中文,约15800字,阅读约需38分钟。
📝

内容提要

本文介绍了ztunnel-B到httpbin的数据包路径,包括使用SO_ORIGINAL_DST选项获取原始目标地址和通过HTTP CONNECT握手消息获取真实目标端口。ztunnel需要使用IP_TRANSPARENT选项将连接的源地址设置为sleep Pod的地址。数据包通过main路由表路由到httpbin Pod。

🎯

关键要点

  • Istio Ambient Mesh 是一种新架构,将 Sidecar 的能力抽离至 ztunnel 和 waypoint。
  • 本文旨在详细解读 Istio Ambient Mesh 的流量路径,帮助读者理解其关键部分。
  • 使用一个简化场景说明从 sleep Pod 到 httpbin 的请求路径。
  • 数据包在 Ambient Mesh 下需经过一系列 iptables 和策略路由转发至 ztunnel 或 waypoint。
  • 数据包的流量路径分为三部分:curl 到 ztunnel-A,ztunnel-A 到 ztunnel-B,ztunnel-B 到 httpbin。
  • curl 发起连接时,数据包源地址和目标地址经过一系列 iptables 规则转化。
  • ztunnel 进程的 outbound 代理监听在 15001 端口,数据包通过 TPROXY 重定向到该端口。
  • ztunnel 需要使用 SO_ORIGINAL_DST 选项获取原始目标地址。
  • ztunnel 通过 HTTP CONNECT 握手消息获取真实目标端口。
  • ztunnel 需要使用 IP_TRANSPARENT 选项将连接的源地址设置为 sleep Pod 的地址。
  • 数据包通过主路由表路由到 httpbin Pod,确保透明传输路径。
  • 在 Node-A 和 Node-B 的流量路径中,数据包通过不同的策略路由规则进行转发。
  • ztunnel-B 收到连接后建立 TCP 连接,将解密的数据发送到目标 Pod。
  • 本文未提及的细节将在未来分享中逐步介绍。
➡️

继续阅读