HBONE

HBONE(HTTP Based Overlay Network Encapsulation,基于 HTTP 的覆盖网络封装) 是 Istio 组件之间使用的安全隧道协议。 HBONE 是 Istio 特定的术语。它是一种通过单个 mTLS 加密网络连接(加密隧道) 透明地多路复用与许多不同应用程序连接相关的 TCP 流的机制。

在 Istio 当前的实现中,HBONE 协议包含三个开放标准:

HTTP CONNECT 用于建立隧道连接,mTLS 用于保护和加密该连接, HTTP/2 用于在单个安全和加密隧道上复用应用程序连接流,并传送其他流级元数据。

安全和租户

根据 mTLS 规范的强制要求,每个底层隧道连接必须具有唯一的来源身份和唯一的目标身份, 并且必须使用这些身份为该连接进行加密。

这意味着通过 HBONE 协议到相同目标身份的应用程序连接将在相同的共享、 加密的和安全的底层 HTTP/2 连接上进行多路复用 - 实际上, 每个唯一的源和目标都必须获得自己专用的安全隧道连接, 甚至如果该底层专用连接正在处理多个应用程序级连接。

实现细节

根据 Istio 约定,ztunnel 和其他理解 HBONE 协议的代理在 TCP 端口 15008 上公开侦听器。

由于 HBONE 只是 HTTP/2、HTTP CONNECT 和 mTLS 的组合, 因此在启用 HBONE 的代理之间流动的 HBONE 隧道数据包如下图所示:

HBONE L3 数据包格式
HBONE L3 数据包格式

HBONE 隧道的一个重要特性是可以透明地代理原始应用程序请求, 而无需以任何方式改变底层应用程序流量流。 这意味着有关连接的元数据可以传送到目标代理,而无需更改应用程序请求 - 例如, 无需将 Istio 特定的标头附加到应用程序流量中。

随着 Ambient 模式和标准的发展,未来将研究 HBONE 和 HTTP 隧道(例如 UDP)的其他用例。

这些信息有用吗?
您是否有更多建议和改进意见?

感谢您的反馈!