14

初识Tungsten Fabric

 4 years ago
source link: https://www.sdnlab.com/23752.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Tungsten Fabric项目是一个开源项目协议,它基于标准协议开发,并且提供网络虚拟化和网络安全所必需的所有组件。项目的组件包括:SDN控制器,虚拟路由器,分析引擎,北向API的发布,硬件集成功能,云编排软件和广泛的REST API。

本文主要介绍Tungsten Fabric的主要特点和用例、服务链、如何运作三大方面。

Tungsten Fabric的主要特点和用例

Tungsten Fabric有哪些特点?如何运作?如何部署?如何编排?……这是很多初入TF社区的技术朋友的困惑。

随着虚拟化成为提供公共云和私有云服务的关键技术,迄今为止广泛使用的虚拟化技术(例如,使用L2网络的VMware,以及OpenStack的Nova,Neutron或ML2网络),网络规模问题日益明显。 Tungsten Fabric提供高度可扩展的虚拟网络平台,旨在支持最大环境中的多租户网络,同时支持多个协调器。

由于很少有数据中心部署是真正的“绿场”,因此几乎总是要求将部署在新基础架构上的工作负载与之前部署的工作负载和网络相集成。本文描述了一组部署方案,其中将部署新的云基础架构,并且还需要与现有基础架构共存。

Tungsten Fabric常见用例:

  • 在OpenStack管理的数据中心中实现具有高可扩展性和灵活性的平台即服务和软件即服务
  • 使用Kubernetes容器管理系统的虚拟网络,包括Red Hat OpenShift
  • 允许运行VMware vCenter的新的或现有的虚拟化环境在虚拟机之间使用Tungsten Fabric虚拟网络
  • 直接通过数据中心底层网络使用BGP peering和网络覆盖与网关路由器将Tungsten Fabric虚拟网络连接到物理网络。这些用例可以任意组合部署,以满足各种部署方案中的特定要求。

Tungsten Fabric的主要特征如下所示:

支持主要用例的关键功能是:

  • 虚拟网络使用虚拟主机之间的封装隧道
  • 用于虚拟机和容器的开源协调器的插件
  • 基于标签的基于应用程序的安全策略
  • 与VMware业务流程堆栈集成
  • 使用BGP,SNAT和底层网络连接到外部网络

由于在每个实现中都使用相同的控制器和转发组件,因此Tungsten Fabric提供了一致的界面来管理其支持的所有环境中的连接,并且能够在不同的协调器(无论是虚拟机还是容器)管理的工作负载之间提供无缝连接,以及到外部网络的目的地。

Tungsten Fabric主要特点

Tungsten Fabric使用OpenStack和Kubernetes协调器在云环境中管理和实施虚拟网络。 Tungsten Fabric在每台主机上运行的vRouters之间使用覆盖网络。它基于成熟的和标准的网络技术,如今支持世界主要服务提供商的广域网,但重新用于数据中心的虚拟化工作负载和云自动化,范围从大型企业数据中心到 较小的电信公司POPs。它在协调器的本机网络实现上提供了许多增强功能,包括:

  • 高度可扩展的多租户网络
  • 多租户IP地址管理
  • DHCP,ARP代理,以避免泛滥到网络
  • 广播和多播流量的高效边缘复制
  • 本地,每个租户的DNS解析
  • 带访问控制列表的分布式防火墙
  • 基于应用程序的安全策略
  • 跨主机的分布式负载平衡
  • 网络地址转换(1:1浮动IP和分布式SNAT)
  • 使用服务链接进行虚拟网络功能
  • IPv4和IPv6双栈支持
  • BGP与网关路由器对等
  • BGP即服务(BGPaaS),用于在私有管理的客户网络和服务提供商网络之间分配路由

Tungsten Fabric的服务链

当网络策略指定两个网络之间的流量,必须流经一个或多个网络服务(例如防火墙、TCP代理、负载平衡器等)时,即形成服务链,这些网络服务也被称为虚拟网络功能(VNF)。

网络服务在虚拟机(VM)中实现,这些虚拟机在Tungsten Fabric中被标识为服务,然后包含在策略中。

Tungsten Fabric支持OpenStack和VMware vCenter环境中的服务链。

下面显示了在两个VM之间实现服务链的路由简化视图(实际的Tungsten Fabric实现中,特殊的“服务”VRF包含在服务链的路由中)。

12TFcs01.jpg

当在控制器中将VM配置为服务实例(VNF),并在网络策略中应用该服务实例时,控制器将在“Left”和“Right”端口所在的VRF中安装路由,用于引导流量通过VNF。

当封装路由通过VNF vRouter发布回控制器时,路由将分发给具有Red和Green VRF的其他vRouters,最终结果是一组路由指示Red和Green网络之间的流量通过该服务实例。

当VNF启动时,通过标签“Left”和“Right”标识顺序激活的接口。 VNF必须有一个配置,该配置可根据数据包到达的接口,正确地处理这些数据包。 服务(VNF)有三种类型:

  • Layer 2 Transparent -以太网帧被发送到服务中,其目标MAC地址是原始目的地的MAC地址。这最常用于深度包检测服务。
  • Layer 3 (In Network) - 以太网帧被发送到服务中,其目的地MAC设置为服务的入口接口的MAC,终止L2连接并使用出口MAC作为发送到目的地的帧的源MAC建立新的连接。这用于防火墙,负载平衡器和TCP代理。
  • Layer 3 (NAT) - 类似 In Network,除了服务将源IP地址更改为可从目的地路由的地址(网络地址转换)。

下面说明了各种服务链的场景,并分别进行简要说明。

12TFcs02.jpg

基本服务链

在第一个面板中,通过编辑Red和Green网络之间的网络策略来创建简单的服务链,包括服务FW和DPI。这些虚拟机是先前在OpenStack或vCenter中启动的,然后在Tungsten Fabric中配置为具有Red和Green网络中的接口的服务实例。

保存策略并将其应用于两个网络后,所有附加了Red或Green VM的vRouters中的路由都将被修改,以通过服务链发送流量。

例如,在修改策略之前,Red网络中的每个VRF都有一条到绿色网络中每个VM的路由,其中包含运行VM的主机的下一跳,以及控制器指定了主机vRouter的标签。

路由被修改为具有FW服务实例的入口VRF的下一跳,以及为FW Left接口指定的标签。Right FW接口所在的VRF具有指向DPI Left接口的所有Green目的地的路由,并且DPI的Right VRF将包含所有Green目的地的路由以及它们运行的主机的下一跳和原始路由标签。

反向流量的路由,也是类似的处理。

规模化的服务

当单个VM没有处理服务链流量要求的能力时,可以在服务中包含多个相同类型的VM,如第二个面板所示。完成此操作后,使用ECMP在两端服务链的入口接口对流量进行负载均衡,并在不同服务实例之间进行负载均衡。

可以根据需要在Tungsten Fabric中添加新的服务实例,虽然传统的ECMP哈希算法实现通常会在目标数量发生变化时,将大多数会话移动到其他路径,但在Tungsten Fabric中,这仅适用于新流,因为现有路径流量是根据上一篇文章(详解vRouters的体系结构)中描述的流表确定的。

对于必须查看流中的所有数据包的有状态服务,此行为至关重要,否则流将被阻止,从而导致用户会话中断。

通过相同的服务实例,流表还被反向填充,以确保数据流中反向的流量。

互联网草案 https://datatracker.ietf.org/doc/draft-ietf-bess-service-chaining 上包含有关具有状态服务的扩展服务链的更多详细信息。

基于策略指导

有些情况下,不同类型的流量需要传递到不同的服务链中。通过在网络或安全策略中包含多条子策略,可以在Tungsten Fabric中实现。在图中的示例中,端口80和8080上的流量必须通过防火墙(FW-1)和DPI,而所有其他流量仅通过防火墙(FW-2),其可能具有与防火墙FW-1不同的配置。

主-备服务链{#active-standby}

在某些情况下,流量通常需要通过某个特定的服务链,但如果检测到该链存在问题,则应将流量切换为备份。备用服务链位于不太有利的地理位置时,可能会出现这种情况。

在Tungsten Fabric中,主-备机制配置分两步完成。

首先,将路由策略应用于每个服务链的入口,为优选的活动链入口指定较高的本地优先级值。

其次,每个链上都附有一个运行状况检查,可以测试服务实例是否可达,或是否可以到达链另一侧的目的地。如果运行状况检查失败,则撤消到正常活动服务链的路由,并且流量将流经备用服务链。

Tungsten Fabric怎么运作?

本小节将介绍TF控制器和vRouter的软件体系结构,以及在虚拟机或容器启动时,vRouters与Tungsten Fabric控制器之间的交互。

Tungsten Fabric支持Orchestrator(编排器)

Tungsten Fabric控制器集成了OpenStack或Kubernetes等云管理系统,其功能是确保在创建虚拟机(VM)或容器时,根据控制器或协调器中指定的网络和安全策略为其提供网络连接。

Tungsten Fabric由两个主要软件组成:

  • Tungsten Fabric 控制器– 一组维护网络和网络策略模型的软件服务,为实现高可用性,通常在多个服务器上运行。
  • Tungsten Fabric vRouter– 安装在运行工作负载(虚拟机或容器)的每个主机上,vRouter执行封包转发,并实施网络和安全策略。

Tungsten Fabric的典型部署如下图所示:

12TFcs03.jpg

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的架构,以及与协调器的交互,如下图所示:

12TFcs04.jpg

该图显示了一个协调器工作虚拟机管理程序和虚拟机,这和容器协调器的信息流类似,例如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)社区在今年6月正式推出5.1版本,这是到目前为止社区的最新版(更多历史版本信息详见文末链接)。
TF社区一直在努力应对来自社区和技术上的挑战,以确保无论公共云、编排器或工作负载如何,都能通过繁荣而充满活力的社区解决最棘手的网络难题,TF 5.1版本就是这一努力的成果。现在是个很好的时机,Tungsten Fabric能够基于开发或运营的角色,在这个多云世界中满足网络需求。

12TFcs05.jpg

TF 5.1版本的要点速览:

  • 代码质量至上,所有已知的P1和P2错误均在发布前被消除
  • 容器和混合云的新功能使开发人员可以更出色地工作
  • 性能和可扩展性增强,满足运营商需求

有关5.1版本中新增功能的其他信息
以下为Tungsten Fabric 5.1更详细的优点和功能介绍:

对代码质量的坚定承诺
在为所有类型的编排器和公共云创建功能丰富的网络方面,TF社区有着多年经验。在发布之前,最新的TF消除了1600个P1和P2错误。目前已知的P1和P2问题为零!特别感谢TF社区的所有成员,他们花费了无数的时间,致力于优化开发实践,以及进行严格的软件测试。

增强各种使用场景下的网络功能

  • Tungsten Fabric 5.1现在可通过支持具有多个网络接口的容器来支持容器服务链。服务链是TF上一个与众不同的强大功能,现在这一功能可用于所有云原生/容器工作负载。
  • TF 5.1控制平面还支持扩展的community属性,允许运营商构建灵活的路由策略,以便与现有的网络设计集成。
  • 最后,您是否尝试向客户提供使用BGP 的“Cloud Router” VRF服务?基于控制节点,TF 5.1的BGPaaS功能现在提供可选择性的peering服务,您可以借此集成运行BGP的VNF,在控制节点发生故障时还能保证高可用性。

高性能网络

  • TF 5.1通过支持“Fat Flow”来持续提高支持高性能网络的能力,针对高性能场景优化了流表的建立。在TF必须支持数百万个流的场景(例如运营商用户的互联网访问),运营商可以利用Fat Flow来聚合流,从而减少流表建立中的延迟。
  • TF 5.1还具有许多流表优化功能,以减少性能瓶颈。具体来说,TF vRouter现在支持利用Cuckoo哈希来消除vRouter必须在重负载下执行大量流表查找引起的性能瓶颈。
  • TF 5.1通过批处理引入了DPDK优化,以提高数据平面性能。我们希望满足最苛刻的吞吐量需求!

多个云环境,一个Tungsten Fabric
TF的使命是为任何云、任何编排器和任何工作负载提供网络矩阵。我们提供了最新的增强功能来支持这个多云世界。 Tungsten Fabric可作为任何编排器和任何工作负载的网络overlay。TF 5.1通过其最新版本支持以下编排器

  • Kubernetes 1.12
  • OpenShift 3.11
  • OpenStack Ocata和更高版本
  • VMware vCenter 6.7

公有云中的Tungsten Fabric
多云涉及了几乎所有在公共云中运行工作负载的客户。Tungsten Fabric 5.1希望可以满足开发人员和运营商的多云需求,目前已经支持AWS和Azure(GCP支持开发中)!

想更多了解5.1版本?
Tungsten Fabric社区将所有新功能记录为蓝图。查看5.1版本的全部新功能,点击此处(https://jira.tungsten.io/projects/TFP/issues)。此外,熟悉Tungsten Fabric及其历史的朋友请注意,社区将蓝图从GitHub迁移到了Jira

想更多了解历史版本?
Tungsten Fabric 5.0.1版本
https://www.linuxfoundation.org/press-release/2018/09/tungsten-fabric-completes-move-to-the-lf-networking-and-releases-new-version/
OpenContrail 3.0版本
https://tungsten.io/port-tuples-service-chain-redundancy/
发布OpenContrail
https://tungsten.io/blog-at-launch/


Recommend

  • 40

    Linux基金会网络项目Tungsten Fabric,将于2018年11月13日(星期二)与KubeCon中国官方联合举办为期一天的SDN研讨会。http...

  • 40

    阿姆斯特丹 - 欧洲开放网络峰会 - 2018年9月25日 - LFN委员会已经认可了Tungsten Fabric项目,Tungsten Fabric(前OpenContrail)完成了加入Linux基金会的流程。

  • 27

    上海(KubeCon + CloudNativeCon中国) - 2018年11月13日 - LFN宣布推出新的Tungsten Fabric性能实验室,该实验室由英特尔、Juniper、联想和SDNLAB联合推出,旨在为Tungsten Fabric和其他软件定义网络(SDN)项目打造一个开源...

  • 25
    • learnblockchain.cn 5 years ago
    • Cache

    联盟链初识以及Fabric环境搭建流程

    这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程。 区块链分类 以参与方式分类,区块链可以分为:公有链、联盟链和私有链。 定义 我们知道区块链就是一个分布式...

  • 26

    Tungsten Fabric将在中国安“新家”——Tungsten Fabric中文社区,欢迎对Tungsten Fabric社区、多云互联、SDN、SD-WAN有兴趣的伙伴关注社区,与我们共同建设社区,解决云网络建设过程中遇到的技术问题。

  • 21

    Tungsten Fabric项目是一个开源项目协议,它基于标准协议开发,并且提供网络虚拟化和网络安全所必需的所有组件。项目的组件包括:SDN控制器,虚拟路由器,分析引擎,北向API的发布,硬件集成功能,云编排软件和广泛的REST API...

  • 16

    本文整理自瞻博网络杰出工程师Sukhdev Kapur在“TF中文社区成立暨第一次全员大会”上的演讲,增加了对于TF功能的描述。

  • 29
    • www.sdnlab.com 4 years ago
    • Cache

    OpenStack与Tungsten Fabirc如何集成

    本文整理自CodiLime工程总监Krzysztof Kajkowski在“TF中文社区成立暨第一次全员大会”上的演讲。

  • 27
    • www.sdnlab.com 4 years ago
    • Cache

    干货!Tungsten Fabric入门攻略

    Tungsten Fabric曾用名OpenContrail,最初是由Juniper开源的一个可扩展的多云网络平台,拥有一个充满活力的开发者和最终用户社区。2018年3月完成向Linux基金会的迁移,并且正式更名为Tungsten Fabric。

  • 2

    容器网络系列:第二期随着 Kubernetes 社区的发展,实际生产环境中使用 Kubernetes 越来越多,用户对 CNI (Container Network Interface) 的要求也越来越多。Fabric 作为博云自研的一款成熟的 CNI 产品,旨在提供能适应多种场景,功能丰富易用且性能卓越...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK