全网最细 - 深度解析 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。
- 本文未提及的细节将在未来分享中逐步介绍。
➡️