Hi! 这里是 TF 中文社区关于 Tungsten Fabric 架构解析内容的第二篇, 解读 TF 如何运作. 本文介绍 TF 控制器和 vRouter 的软件体系结构, 以及在虚拟机或容器启动时, vRouters 与 Tungsten Fabric 控制器之间的交互.
Tungsten Fabric 架构解析系列文章, 旨在帮助初入 TF 社区的朋友答疑解惑, 我们将系统介绍 TF 有哪些特点, 如何运作, 如何收集 / 分析 / 部署, 如何编排, 如何连接到物理网络等话题.
Tungsten Fabric 支持 Orchestrator(编排器)
Tungsten Fabric 控制器集成了 OpenStack 或 Kubernetes 等云管理系统, 其功能是确保在创建虚拟机 (VM) 或容器时, 根据控制器或协调器中指定的网络和安全策略为其提供网络连接.
Tungsten Fabric 由两个主要软件组成:
? Tungsten Fabric 控制器 - 一组维护网络和网络策略模型的软件服务, 为实现高可用性, 通常在多个服务器上运行.
? Tungsten Fabric vRouter- 安装在运行工作负载 (虚拟机或容器) 的每个主机上, vRouter 执行封包转发, 并实施网络和安全策略.
Tungsten Fabric 的典型部署如下图所示:
Tungsten Fabric 控制器通过软件插件与协调器集成在一起, 该插件实现了协调器的网络服务.
例如, OpenStack 的 Tungsten Fabric 插件实现了 Neutron API,kube-network-manager_和_CNI(容器网络接口)组件使用 Kubernetes k8s API 监听网络相关事件.
Tungsten Fabric vRouter 取代 Linux 桥接器和 IP 表, 或计算主机上的 Open vSwitch 网络, 控制器配置 vRouters 以实现所需的网络和安全策略.
VM 的封包如果要转发到不同主机上, vRouter 会加 MPLS over UDP / GRE 或 VXLAN 封装, 其中外部标头的目标是运行目标 VM 的主机的 IP 地址. 控制器负责在每个实现网络策略的 vRouter 的每个 VRF 中安装路由集.
例如: 默认情况下, 同一网络中的虚拟机可以相互通信, 但不能与不同网络中的虚拟机进行通信, 除非在网络策略中特别允许. 控制器和 vRouters 之间的通信是通过一种广泛使用且灵活的消息传递协议 XMPP 实现的.
云自动化的一个关键特性, 是用户可以为其应用程序请求资源, 而无需了解如何或在何处提供资源的详细信息.
这通常是通过一个门户网站完成的, 该门户网站提供了一组服务产品, 用户可以从中选择, 并将其转换为 API 调用到底层系统, 包括云协调器, 以启动具有必要内存, 磁盘和 CPU 的虚拟机或容器, 满足用户要求的能力.
服务产品可以像具有特定内存, 分配给它的磁盘和 CPU 的虚拟机一样简单, 也可以包括由多个预配置软件实例组成的整个应用程序堆栈.
和 Orchestrator 的互动
Tungsten Fabric 控制器和 vRouter 的架构, 以及与协调器的交互, 如下图所示:
该图显示了一个协调器工作虚拟机管理程序和虚拟机, 这和容器协调器的信息流类似, 例如 Kubernetes(带有 Tungsten Fabric 的 Kubernetes 容器).
主机上运行的工作负载的每个接口都连接到 VRF, 包含相应网络的 L2 和 L3 转发表, 其中包含该接口的 IP 地址.
vRouter 实现物理路由器执行的集成桥接和路由 (IRB) 功能. vRouter 仅具有位于该主机上有网络接口的 VRF, 包括连接到主机物理接口的 Fabric VRF. 使用 VRF 可以使不同的虚拟网络具有重叠的 IP 和 Mac 地址, 不会定义任何网络策略来允许它们之间的流量.
Tungsten Fabric 虚拟化网络使用封装隧道在不同主机上的 VM 之间传输封包, 而封装和解封装在 Fabric VRF 和 VM VRF 之间发生.
创建新的虚拟工作负载时, 会在特定于 orchestrator 的插件中看到一个事件并将其发送到控制器, 然后控制器会向代理发送请求, 以便在虚拟网络的 VRF 中安装路由, 然后代理将其配置在转发器里.
使用单个接口在新 VM 上配置网络的逻辑流程如下:
使用 UI,CLI 或北向 REST API 在 Orchestrator 或 Tungsten Fabric 中定义网络和网络策略. 网络主要定义为 IP 地址池, 在创建 VM 时将分配给接口.
用户请求由协调器启动 VM, 包括其接口所在的网络.
协调器选择要运行的新 VM 的主机, 并指示该主机上的计算代理程序获取其映像并启动 VM.
Tungsten Fabric 插件从协调器的网络服务接收事件或 API 调用, 指示它为将要启动的新 VM 的接口设置网络. 这些指令将转换为 Tungsten Fabric REST 调用并发送到 Tungsten Fabric 控制器.
Tungsten Fabric 控制器向 vRouter 代理发送请求, 以便将新 VM 虚拟接口连接到指定的虚拟网络. vRouter 代理指示 vRouter 转发器将 VM 接口连接到虚拟网络的 VRF. 如果不存在, 则创建 VRF, 并且接口连接到它.
计算代理启动 VM, 通常将其配置为使用 DHCP 为其每个接口请求 IP 地址. vRouter 代理 DHCP 请求, 然后对接口 IP 地址, 默认网关和 DNS 服务器地址进行响应.
一旦接口启动且具有来自 DHCP 的 IP 地址, vRouter 安装到 VM 的 IP 和 Mac 地址路由, 并将下一跳设为 VM 虚拟接口.
vRouter 为接口分配标签, 并在 MPLS 表中安装标签路由. vRouter 向控制器发送 XMPP 消息, 该消息包含到新 VM 的路由. 该路由具有运行 vRouter 的服务器的 IP 地址的下一跳, 并使用刚刚分配的标签指定封装协议.
在网络策略所允许下, 控制器将新 VM 路由分发到其他 vRouters, 包含 VM 位于同一网络和其他网络.
在网络策略所允许下, 控制器将其他 VM 的路由发送到新 VM 的 vRouter.
在此过程结束时, 已更新数据中心中所有 vRouter 的 VRF 中的路由已经有新 VM 的信息.
Tungsten Fabric 架构解析文章第一篇: TF 主要特点和用例 https://blog.51cto.com/14638699/2458327
关注微信: TF 中文社区
来源: http://www.bubuko.com/infodetail-3359981.html