Tungsten Fabric架构解析丨TF怎么运作?



  • 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的典型部署如下图所示:
    bc23298f-1ceb-4107-968b-2ad8a44f725a-image.png
    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的架构,以及与协调器的交互,如下图所示:
    2509607b-3e49-4613-b8f8-68eb40ff0382-image.png

    该图显示了一个协调器工作虚拟机管理程序和虚拟机,这和容器协调器的信息流类似,例如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上配置网络的逻辑流程如下:

    1. 使用UI、CLI或北向REST API在Orchestrator或Tungsten Fabric中定义网络和网络策略。网络主要定义为IP地址池,在创建VM时将分配给接口。
    2. 用户请求由协调器启动VM,包括其接口所在的网络。
    3. 协调器选择要运行的新VM的主机,并指示该主机上的计算代理程序获取其映像并启动VM。
    4. Tungsten Fabric插件从协调器的网络服务接收事件或API调用,指示它为将要启动的新VM的接口设置网络。这些指令将转换为Tungsten Fabric REST调用并发送到Tungsten Fabric控制器。
    5. Tungsten Fabric控制器向vRouter代理发送请求,以便将新VM虚拟接口连接到指定的虚拟网络。vRouter代理指示vRouter转发器将VM接口连接到虚拟网络的VRF。如果不存在,则创建VRF,并且接口连接到它。
    6. 计算代理启动VM,通常将其配置为使用DHCP为其每个接口请求IP地址。vRouter代理DHCP请求,然后对接口IP地址,默认网关和DNS服务器地址进行响应。
    7. 一旦接口启动且具有来自DHCP的IP地址,vRouter安装到VM的IP和MAC地址路由,并将下一跳设为VM虚拟接口。
    8. vRouter为接口分配标签,并在MPLS表中安装标签路由。vRouter向控制器发送XMPP消息,该消息包含到新VM的路由。该路由具有运行vRouter的服务器的IP地址的下一跳,并使用刚刚分配的标签指定封装协议。
    9. 在网络策略所允许下,控制器将新VM路由分发到其他vRouters,包含VM位于同一网络和其他网络。
    10. 在网络策略所允许下,控制器将其他VM的路由发送到新VM的vRouter。

    在此过程结束时,已更新数据中心中所有vRouter的VRF中的路由已经有新VM的信息。

    【链接】Tungsten Fabric架构解析文章第一篇:TF主要特点和用例


Log in to reply