kution 发表于 2015-10-14 08:14:53

OpenContrail架构文档

OpenContrail架构文档


ANKUR SINGLA和布鲁诺Rijsman的撰写

内容

1概述的OpenContrail

使用案例

1.2 OpenContrail的控制器和vRouter

1.3 虚拟网络









:SDN作为一个编译器

1.9应用程序编程接口

图形用户界面1.10

1.11 一个可扩展的平台

架构详情

2.2 OpenContrail转发平面

服务链

2.4控制和管理平面协议

2.5 OpenStack的集成

2.6安全

2.7的水平可伸缩性和高可用性的

数据模型

3.1编程模型

3.2配置和操作数据模型

4 OpenContrail用例

4.1的数据中心域使用案例

4.2网络功能虚拟化SP网络

比较的OpenContrail系统MPLS VPN的

6缩略语

7参考


1 OpenContrail概述

本章提供了一个概述的OpenContrail系统 - 一个可扩展的平台,为软件定义网络(SDN)。
所有的主要概念进行了简要本章中介绍的,在本文档的其余部分中更详细地描述。



1.1用例

OpenContrail是一个可扩展的系统,它可以用于多个网络连接中使用的情况下,但有两个主要的驱动程序的体系结构的


[*]云网络 - 企业或服务提供商,基础设施即服务(IaaS)和虚拟私有云(VPC的)云服务提供商的私有云
[*]网络功能虚拟化(NFV) - 这在服务提供商网络提供增值服务(VAS),如业务边缘网络,宽带用户管理边缘网络,和移动边缘网络服务提供商边缘网络。

私有云,虚拟私有云(VPC),基础设施即服务(IaaS)的用例都涉及到多租户虚拟化数据中心。在每个这些用例中,在数据中心共享相同的物理资源(物理服务器,物理存储,物理网络)的多个租户。每个租户分配自己的逻辑资源(虚拟机,虚拟存储,虚拟网络)。这些逻辑资源是相互隔离的,除非明确允许的安全策略。也可以在数据中心的虚拟网络互连的物理IP虚拟专用网(VPN)上,或者L2
VPN。
使用网络功能虚拟化(NFV)案件涉及的业务流程和管理网络功能,例如一个防火墙,入侵检测或预防系统(IDS / IPS),深度包检测(DPI),缓存,广域网(WAN)优化等在虚拟机上,而不是物理硬件设备。虚拟化的网络服务,在这个市场上的主要驱动力是市场的时间和成本优化。



1.2 OpenContrail控制器和vRouter的

的OpenContrail系统由两个主要部分组成:OpenContrail的控制器和OpenContrail vRouter。
OpenContrail控制器是一种逻辑上集中,但物理上分布的软件定义网络(SDN)控制器,负责提供虚拟化网络的管理,控制和分析功能。
OpenContrail vRouter是转发平面(分布式路由器),运行在一个虚拟服务器的虚拟机管理程序。它扩展成一个虚拟的覆盖网络中承载的虚拟化服务器(覆盖网络的概念,下文第1.4节中更详细地解释)从物理路由器和交换机在数据中心网络。的OpenContrail
vRouter在概念上类似于现有的商业和开源的vSwitch如开放的vSwitch(OVS),但它也提供了路由和更高一层的服务(因此vRouter代替的vSwitch)。
OpenContrail控制器提供了逻辑上的集中控制平面和管理平面的系统和编排vRouters。



1.3虚拟网络

虚拟网络(VNS)是一个关键的概念在OpenContrail系统。虚拟网络的物理网络上实现的逻辑结构。虚拟网络是用来取代基于VLAN的隔离,并提供多租户虚拟化数据中心。每个租户或应用程序可以有一个或多个虚拟网络。每个虚拟网络是孤立的,除非明确允许从所有其他的虚拟网络安全政策。
可以连接到虚拟网络,并扩展到物理多协议标签交换(MPLS)第3层虚拟专用网络(应用于L3VPN)和以太网虚拟专用网络(EVPNs)网络使用数据中心边缘路由器。
虚拟网络也可以用来实现网络功能的虚拟化(NFV)和服务链。这是如何实现使用虚拟网络,在2.3节中详细解释。



1.4覆盖网络

虚拟网络可以使用多种机制来实现的。例如,每一个虚拟网络可以被实现为虚拟的本地区域网络(VLAN),虚拟专用网络(VPN)等。
也可以使用两个网络 - 物理底层网络和虚拟覆盖网络实现虚拟网络。这个覆盖网络技术已经广泛部署在无线局域网行业超过十年,但其应用到数据中心网络是相对较新。标准化工作组在各种论坛,如Internet工程任务组(IETF)通过网络虚拟化叠加(NVO3)从多家供应商的开源和商业网络的虚拟化产品,并已实施。
的物理底层网络的作用是提供一个“IP织物” - 它的责任是从任何物理设备(服务器,存储设备,路由器或交换机)的任何其他物理设备以提供单播的IP连通性。一个理想的衬底网络提供了统一的低延迟,无阻塞,高带宽连接在网络中的任何其他点从网络中的任何一点。
运行在虚拟机监控程序的虚拟化服务器vRouters创建一个虚拟的覆盖网络之上的的物理底层网络使用的网格,在它们之间的动态“隧道”。在这些重叠的情况下OpenContrail隧道可以是MPLS通过GRE / UDP隧道,或VXLAN隧道。
底衬物理路由器和交换机的每个租户不包含任何状态:它们不包含任何媒体访问控制(MAC)地址,IP地址,或虚拟机的政策。底图物理路由器和交换机的转发表只包含的物理服务器的IP前缀或MAC地址。虚拟网络连接到物理网络的网关路由器或交换机是个例外
- 他们需要包含租户MAC或IP地址。
另一方面,做的vRouters,包含每个租户状态。他们每个虚拟网络包含一个单独的转发表(路由实例)。即转发表中包含的IP地址前缀(在一个层3覆盖的情况下)或虚拟机的MAC地址(层2覆盖的情况下)。没有的单vRouter需要包含的所有IP前缀或整个数据中心的所有虚拟机的MAC地址。一个给定vRouter的只需要包含这些路由的实例是本地存在于服务器上(即至少有一个存在于服务器上的虚拟机)。



1.5覆盖基于MPLS L3VPN网络和EVPNs

供应商和标准组织已经提出的各种控制平面协议和数据平面协议覆盖网络。
例如,IETF VXLAN草案草案玛哈林甘杜特dcops
VXLAN]提出了一种新的数据平面封装,并提出了控制平面,这是类似标准的乙太网路“洪水和学习的源地址”的行为,填补转发表这需要一个或多个组播组的底层网络实现洪水。
的OpenContrail系统的灵感和概念上非常相似,标准的MPLS L3VPN网络(L3覆盖)和L2覆盖:MPLS EVPNs()。
在数据平面,OpenContrail支持过GRE,MPLS数据平面封装,现有的路由器,来自所有主要供应商的广泛支持。OpenContrail还支持其他数据平面封装如MPLS通过UDP(更好的多路径和CPU利用率)和VXLAN标准。NVGRE额外的封装标准,比如可以很容易地在未来的版本中加入。
之间的控制平面的节点的OpenContrail系统或物理的网关路由器(或交换机)的控制平面的协议是:BGP(NETCONF管理)。这是确切的协议,该协议是MPLS应用于L3VPN和MPLS EVPNs的的用于同一控制平面。
的OpenContrail的控制器和OpenContrail vRouters之间的协议是基于XMPP [IETF
XMPP-WG] 。IETF草案[草案,IETF
L3VPN终端系统],此协议通过XMPP交换的消息中描述的架构,而语法上是不同的,是语义上非常相似BGP。
事实上,的OpenContrail系统采用控制平面和数据平面的协议,该协议是用于MPLS L3VPN网络EVPNs的具有多重优势 - 这些技术的成熟和规模的协议非常相似,他们都生产网络中广泛部署,并支持多供应商的物理齿轮,允许无缝的互操作性,而不需要为软件网关。



1.6 OpenContrail和开源

OpenContrail设计工作在一个开源的云环境。为了提供一个完全集成的终端到终端的解决方案:


[*]的OpenContrail系统集成,如基于内核的虚拟机(KVM)和Xen的开源虚拟机管理程序。
[*]系统集成OpenContrail,如OpenStack和的CloudStack开源虚拟化的业务流程系统。
[*]用开源的物理服务器的管理系统,如厨师,木偶,补鞋,节OpenContrail系统集成。

宽容的Apache 2.0许可下提供OpenContrail - 这基本上意味着,任何人都可以部署和修改OpenContrail的系统代码没有任何义务发布或发布的代码修改。
Juniper网络公司还提供一个商业版本的OpenContrail系统。整个开源栈的商业支持(不仅仅是OpenContrail的系统,但也如例如OpenStack的其他开源组件)是Juniper网络公司及其合作伙伴。
开源版本的OpenContrail系统不是一个“传情” - 它提供同样完整的功能,在功能方面和缩放方面的商业版本。



1.7向外扩展(scale-out)架构和高可用性

前面我们提到,的OpenContrail控制器在逻辑上是集中的,但在物理上分布的。
物理上分布的手段,OpenContrail控制器由多种类型的节点,每一个都可以有多个实例,以实现高可用性和水平缩放。这些节点实例可以是物理服务器或虚拟机。对于最小的部署中,多个节点类型可以组合成一个单一的服务器。有三种类型的节点:


[*]配置节点负责管理层。配置节点提供了北行的具象状态传输(REST)的应用程序编程接口(API),它可以用来配置系统或提取业务系统的状态。实例化的服务都表示正式的服务数据模型(了解数据模型后)中所描述的水平可扩展的数据库中的对象。的配置的节点还包含一个转换引擎(有时也被称为作为一个编译器),高级别服务的数据模型中的对象转换成相应的更多的较低级别的技术中的对象数据模型。而高层次的服务数据模型描述需要实现什么服务,低层次的技术数据模型描述了如何实施这些服务需要。的配置节点发布的内容的低级别的技术数据模型使用的元数据接入点接口(IF-MAP)协议的控制节点。
[*]控制节点控制平面实现逻辑集中的部分。并非所有的控制平面功能逻辑集中 - 物理和虚拟路由器和交换机在网络上,一些仍然在分布式的方式实现控制平面功能。控制节点使用的IF-MAP协议,低级别的技术数据模型计算出的配置的节点,描述了所需的网络状态监视的内容。控制节点使用一个组合南下协议的“让”,即让网络的实际状态等于所需的网络状态。,这些南下协议包括在最初的版本的OpenContrail系统扩展消息处理现场协议(XMPP)的OpenContrail
vRouters以及边界网关协议(BGP)和网络配置(NETCONF)协议来控制相结合的控制物理路由器。也可以使用BGP的控制节点彼此之间的同步状态时,控制节点的扩展性和高可用性的原因有多个实例。
[*]分析节点负责收集,整理,并提出分析信息的故障排除问题,并了解网络的使用。每个组件的OpenContrail系统生成的详细事件记录,系统中的每一个重要事件。这些事件的记录,整理和存储水平扩展的数据库中的信息,采用时间序列分析和查询优化的格式发送到多个实例之一(规模)分析节点。分析节点有机制自动触发收集更详细的记录,当某个事件发生时,我们的目标是能够去任何问题的根源,而无需重现。分析节点提供了北行分析查询REST
API。

物理上分布的性质的OpenContrail控制器是一个显着特点。因为任何节点可以有多个冗余的情况下,主动 - 主动模式(而不是到积极待机模式),该系统可以继续运行,没有任何中断,当任何一个节点出现故障时。超载,当一个节点,节点类型的其他实例可以被实例化后自动分配负载。这可以防止任何单个节点成为瓶颈,并允许系统管理非常大规模的系统
- 数十万台服务器。
逻辑上集中的表示OpenContrail控制器表现为一个逻辑单元,尽管事实,即它是作为一个群集的多个节点中实现。



1.8数据模型中的核心作用:SDN作为一个编译器

在OpenContrail系统数据模型中发挥核心作用。一个数据模型由一组物体,它们的功能,以及它们之间的关系。
的数据模型,允许应用程序在一个声明,而不是在实现高程序员的工作效率的关键,这是势在必行的方式表达自己的意图。OpenContrail的架构的一个基本方面操作平台,以及由应用程序中的数据是由平台。因此,应用程序可以被视为是几乎无国籍。这种设计的结果是最重要的,各个应用程序中解脱出来,不必担心的复杂性,高可用性,规模和窥视。
有两种类型的数据模型的高级别服务的数据模型和低级别的技术数据模型。这两个数据模型使用一个正式的数据建模语言,目前基于IF-MAP XML架构虽然杨也被视为未来可能的建模语言描述。
高层次的服务数据模型描述了在一个非常高层次的抽象所需的网络状态,使用对象直接映射到给最终用户提供服务 - 例如,一个虚拟的网络,或连接政策,或安全政策。
低级别的技术数据模型描述了在一个非常低的抽象级别所需的网络状态,使用对象,诸如例如BGP路由目标,或VXLAN网络标识符映射到特定的网络协议构造。
的配置节点负责转化高级别服务的数据模型,以低级别的​​技术数据模型的变化对应的一组中的任何变化。这在概念上是相似的即时(JIT)编译器 - 因此被称为“SDN作为编译器”有时也用来形容建筑的OpenContrail系统。
控制节点负责低层次的技术使用相结合的南行的协议,包括XMPP协议,BGP和NETCONF数据模型所描述的实现所需的网络状态。



1.9北行的应用程序编程接口

配置节点在OpenContrail控制器提供北行具象状态传输(REST)的应用程序编程接口(API)提供或业务流程系统。此路北REST的API是自动生成的正式高层次的数据模型。这保证了路北REST API是“一流公民”在某种意义上说,任何一个服务,可以通过REST
API置备。
这些REST的API是安全的:它可以使用HTTPS验证和加密,而且还提供了基于角色的授权。这也是水平可扩展性,,因为API负载可以分布在多个配置节点实例。



1.10图形用户界面

的OpenContrail系统还提供了图形用户界面(GUI)。该GUI全部建成使用REST API的前面描述的,保证不存在滞后的API。据预计,大规模部署或服务供应商的OSS / BSS系统将被集成使用的REST API。
注:我们在这个过程中进行更改的UI,将使我们以使其可在开放式源代码库。



1.11一个可扩展的平台

的OpenContrail系统的最初版本于一个特定的高层次的服务的数据模型,具体低层次的技术数据模型,转换引擎映射前者向后者。此外,最初版本的OpenContrail系统附带一组特定的南行协议。
高水平的服务的数据模型,如租户,虚拟网络,连接政策和安全政策的初始版本附带的OpenContrail系统模型服务构建。这些模拟​​的对象选择支持最初的目标使用的情况下,即云网络和NFV。
低级别的服务数据模型的初始版本附带的OpenContrail系统是专门面向实现服务覆盖网络。
在配置节点中包含了“编译器”,这最初的高层次服务的数据模型转换到最初的低层次数据模型转换引擎。
由XMPP协议,BGP和NETCONF的南下协议的实施在控制节点的初始设置。
的OpenContrail系统是一个可扩展的平台,在这个意义上,上述任何组件都可以进行扩展以支持额外的用例和/或额外的网络技术,在未来的版本:


[*]高水平的服务数据模型可以扩展与其他对象代表新的服务,如例如在服务提供商核心网络的流量工程和带宽日历。
[*]低级别的服务数据模型也可以扩展两个原因之一。无论是相同的高层次服务使用不同的技术来实现的,例如,可以实现多租户使用VLAN,而不是覆盖。可以引进或新的高层次的服务需要新的技术水平低,例如引入交通工程或带宽日历作为一个新的高层次的服务,可能需要引入一个新的低级别的对象,如交通工程标签交换路径(TE
LSP)。
[*]可以延长发动机的转型,要么现有的高层次的服务对象映射到新的低层次的技术对象(即一个新的方式来实现现有服务)或新的高水平的服务对象映射到新的或现有的低层次的技术对象(即实施一项新的服务)。

南行新的协议可以被引入到控制节点。这可能需要支持新类型的物理或虚拟网络中的设备,讲一个不同的协议,例如命令行界面(CLI),可以引入一个特定的网络设备供应商。或者这可能是必要的,因为在低级别的技术要实现新协议的数据模式,需要引入新对象。



2 OpenContrail架构细节

如下图所示,在图1中,的OpenContrail系统由两部分组成:逻辑上集中的,但物理上分布的控制器和一组的vRouters作为通用的虚拟化服务器中的虚拟机管理程序的软件实现的转发元素。
该控制器提供北向由应用程序使用的REST API。这些API是用于与云编排系统的集成,例如与OpenStack的通过中子(前身为量子)插件集成。REST的API,也可用于由其他应用程序和/或通过操作者的OSS / BSS。最后,REST的API,用于实现基于web的图形用户界面,包括在OpenContrail系统。
的OpenContrail系统提供3接口:一组北行的REST API的,正在使用的业务流程系统和应用程序,南下接口,都使用虚拟网络元素(vRouters)或物理网络元素(网关说话交谈路由器和交换机),一个东西方的接口,用于与其他控制器等。OpenStack和的CloudStack支持的协作型,标准的BGP是由东至西的接口,XMPP是vRouters,BGP和NETCONF的南向接口的网关路由器和交换机的南向接口。
内部,控制器由三个主要部分组成:


[*]配置节点负责翻译到一个较低的水平形式,适用于与网络元素的相互作用的高层次数据模型;
[*]控制节点负责传播这种低水平状态,并从网络元素和同行系统最终一致的方式;
[*]分析节点是负责捕获实时数据网络元素,​​抽象,它适合应用程序使用一种形式。

所有这些节点将在本章后面详细描述。

应该想到vRouters完全以软件实现网络元素。他们是负责报文转发给其他虚拟机从一个虚拟机,通过一组服务器到服务器的隧道。隧道形成一个覆盖网络,坐在上面的物理IP以太网网络。每个vRouter由两部分组成:实现控制平面和转发引擎的内核模块,实现一个用户空间代理。
的OpenContrail系统实现了三个基本构建块:


[*]多租户,也被称为网络虚拟化或网络切片是能够创建虚拟网络,提供一组虚拟机的封闭用户组(CUG中)。
[*]网关功能:这是通过网关路由器(例如互联网),和能够附加到虚拟网络的非虚拟化服务器或网络服务,通过网关连接到物理网络的虚拟网络的能力。
[*]服务链,也被称为网络功能虚拟化(NFV):这是引导交通流的能力,通过一系列的物理或虚拟网络服务,如防火墙,深度包检测(DPI),或负载平衡器。

2.1.1节点

我们现在转向系统的内部结构。正如图2中所示,该系统被实现为一个协同传输组的节点上运行的通用的x86服务器。每一个节点可以被实现为一个单独的物理服务器上,或者它可以被实现为一个虚拟机(VM)。
一个给定类型的所有节点运行在主动 - 主动配置,所以没有一个节点是一个瓶颈。向外扩展设计提供了冗余和水平的可扩展性。


[*]配置节点保持到较低的水平模式适合与网络元素的持久副本所需的配置状态和翻译高层次数据模型。这两个都保持在一个NoSQL数据库。
[*]控制节点实现一个逻辑上的集中控制平面,负责维持短暂的网络状态。控制节点与相互之间以及与网络元素,以确保网络状态是最终一致。
[*]分析节点收集,存储,关联和分析信息,从网络元素,虚拟或物理。此信息包括统计信息,日志,事件和错误。

除了是部分的OpenContrail控制器的节点类型,我们还确定物理服务器和执行特定角色在整体OpenContrail系统的物理网络元素的一些额外的节点类型:


[*]计算节点是通用的虚拟化服务器托管的虚拟机。这些虚拟机可能是租户运行一般的应用程序,或者这些虚拟机可能是服务运行的虚拟机的网络服务,如虚拟负载平衡器或虚拟防火墙。每个计算节点的包含一个vRouter的实现转发平面和控制平面的分布式的一部分。
[*]网关节点租户虚拟网络连接到物理网络(如Internet)的的物理网关路由器或交换机,客户VPN,另一个数据中心,或到非虚拟化服务器。
[*]服务节点的物理网络元素提供网络服务,如深度包检测(DPI),入侵检测(IDP),入侵防御(IPS),广域网优化和负载平衡器。服务链可以包含虚拟服务(作为计算节点上的虚拟机实现)和物理服务(托管服务节点)的混合物。

为清楚起见,图中未示,形成底层的IP以太网网络的物理路由器和交换机。还有一个接口从系统中每个节点的分析节点。此接口在图2中未示出,以避免混乱。


2.1.2计算节点

计算节点是一个通用的x86服务器托管的虚拟机。这些虚拟机可以是租户的虚拟机运行的客户应用程序,如Web服务器,数据库服务器,或企业应用程序。或者这些虚拟主机可以使用它来创建虚拟化服务服务链。假设Linux的标准配置是主机操作系统和KVM或Xen虚拟机管理程序。的vRouter转发平面坐在Linux内核和vRouter代理的本地控制平面。此结构,在下面的图3所示。
也可能被其它主机操作系统和虚拟机管理程序如VMware ESXi或Windows的Hyper-V的支持未来。

计算节点中的两个积木实施vRouter:vRouter的代理和vRouter的转发平面。这些在下面的章节中描述。

2.1.2.1 vRouter代理

vRouter代理是一个用户空间进程内运行Linux的。它作为地方,重量轻的控制平面,负责以下功能:


[*]交换控制状态,如控制节点使用XMPP航线。
[*]如路由实例和转发策略,从控制节点使用XMPP接收低级别的配置状态。
[*]报告分析说出这样的日志,统计和分析节点的事件。
[*]安装转发状态到转发平面。
[*]发现的存在和属性的虚拟机与新星代理合作。
[*]每一个新的流的第一个数据包转发策略应用和安装的流入口在流表中的转发平面。
[*]代理,DNS,DHCP,ARP和MDN。未来可能会增加额外的代理。

每个vRouter代理连接到至少两个控制节点的冗余主动 - 主动冗余模型。

2.1.2.2 vRouter转发平面

在Linux作为内核模块运行的的vRouter转发平面,并负责以下功能:


[*]封装的数据包发送到覆盖网络和接收的数据包解封覆盖网络。
[*]指定数据包的路由的实例:

[*]从覆盖网络接收的数据包分配到基于MPLS标签或虚拟网络标识符(VNI)的路由的实例。
[*]本地虚拟机的虚拟接口绑定路由实例。
[*]这样做的目的地址查找转发信息库(FIB)和转发数据包发送到正确的目的地。该航线可能是第3层IP前缀或第2层MAC地址。
[*]或者,应用转发策略使用流量表:

[*]对流量表的数据包匹配和应用流量的行动。
[*]或者,平底船发现没有水流规则的数据包(即每个流的第一个数据包),然后安装流量表中的规则的vRouter代理。
[*]撑船的某些数据包,如DHCP,ARP,MDNS的vRouter代理的代理。



下面的图4所示的内部结构的的vRouter转发平面。

在GRE / UDP和VXLAN覆盖网络中封装支持MPLS转发平面。转发平面同时支持第3层转发,这样做的目的IP地址以及使用的目的MAC地址的二层转发最长前缀匹配(LPM)。的vRouter转发平面目前只支持IPv4。对IPv6的支持,在未来将被添加。
有关详细信息,请参见2.2节。

2.1.3控制节点

图5示出控制节点的内部结构。
控制节点与多个其他类型的节点进行通信:


[*]控制节点接收配置状态,从配置节点使用IF-MAP。
[*]控制节点交换路由与其他控制节点使用IBGP以确保所有控制节点具有相同的网络状态。
[*]控制节点交换路由计算节点上使用XMPP的vRouter代理。他们还使用XMPP发送配置状态,如路由实例和转发策略。
[*]控制节点还代理某些类型的流量计算节点代表。这些代理请求也收到了XMPP。
[*]控制节点与网关节点(路由器和交换机)使用BGP交换路由。他们还使用NETCONF发送配置状态。



2.1.4配置节点

图6示出了一个配置节点的内部结构。通过REST接口配置节点通信与业务流程系统,与其他配置节点通过一个分布式的同步机制,并与控制节点通过IF-MAP。
配置节点还提供发现服务,客户可以使用定位服务提供商(即其他节点提供特定的服务)。例如,当在一个计算节点vRouter剂要连接到的控制节点(更精确地对控制虚拟机的主动 - 主动式),它使用服务发现来发现的控制节点的IP地址。客户端使用本地配置,DHCP或DNS来定位服务发现服务器。
配置节点包含以下组件:


[*]一个REST API服务器提供北行的业务流程系统或其他应用程序的接口。这个接口是用来安装配置状态,使用高层次数据模型。
[*]àRedis的再分配]消息总线,方便内部组件之间的通信。
[*]Â 卡桑德拉卡桑德拉[]数据库的持久性存储的配置。Cassandra是一个容错和水平扩展的数据库。
[*]变压器的架构了解的Redis的消息总线和转换(或编译)高层次数据模型的这些变化成相应的变化,低层次的数据模型在高层次数据模型的变化。
[*]IF-MAP服务器,提供了一个南行推计算的低级配置的接口控制节点。
[*]动物园管理员动物园管理员](图中未示出),用于分配唯一的对象标识符,并执行交易。



2.1.5   分析节点

下面的图7示出一个分析节点的内部结构。Google Analytics(分析)节点通信与北行的REST API的应用程序使用,与其他分析节点采用分布式的同步机制,控制和配置节点使用一种基于XML的协议,专为处理大量数据称为桑德什科的组件。
分析节点包含以下组件:


[*]A集电极交流桑德什科消息(参见2.4.4节)收集分析信息与控制节点和配置节点的组件
[*]这些信息存储的一个NoSQL数据库
[*]规则引擎自动收集发生特定事件时运行状态
[*]一个REST API服务器的北向接口,提供了一个查询分析数据库和检索操作状态。
[*]执行查询点查询引擎收到超过路北REST API。该引擎提供了灵活的接入能力,潜在的大量的分析数据。


桑德什科进行两种消息:分析报告日志,事件和痕迹的目的节点收到的异步消息和同步消息,据此分析节点可以发送请求和接收响应来收集特定的操作状态。
由收藏家收集的所有信息永久存储在NoSQL数据库。不过滤消息是通过对信息源。
分析节点提供了路北的REST API,允许客户端应用程序提交查询。
分析节点提供分散聚集称为“聚合”的逻辑。一个单一的GET请求(和一个单一的相应的CLI命令在客户端应用程序)可以被映射到多个请求消息的结果组合起来。
作为一个简单的map-reduce引擎查询引擎实现。绝大多数的OpenContrail查询的时间序列。



2.2 OpenContrail转发平面

转发平面是通过使用覆盖网络。覆盖网络可以是一个第3层重叠(IP)网络或第2层覆盖网络(以太网)。-3层覆盖,最初仅支持IPv4支持IPv6的支持,在以后的版本中将会加入。Layer-3的覆盖网络,同时支持单播和组播。代理使用DHCP,ARP,和若干其他协议,以避免水浸。

2.2.1数据包封装

该系统支持多个重叠封装,每一个在下面详细描述。

2.2.1.1 MPLS over GRE的

图8显示了MPLS过GRE报文封装格式为L3和L2覆盖。

图9显示了MPLS L2覆盖超过GRE报文封装格式。

MPLS L3VPN网络 EVPNs [草案raggarwa
sajassi L2VPN EVPN],通常使用MPLS MPLS封装的,但他们可以使用MPLS的GRE封装以及如果不启用MPLS核心。OpenContrail使用GRE封装,而不是在MPLS
MPLS MPLS对以下几个原因:第一,衬底在数据中心的交换机和路由器往往不支持MPLS功能; 第二,即使他们做,运营商可能不希望运行的复杂性MPLS在数据中心,第三,有没有必要在数据中心内部的流量工程,因为带宽超量。

2.2.1.2 VXLAN

L2覆盖,OpenContrail还支持VXLAN封装[草案玛哈林甘杜特dcops
VXLAN] 。这是显示在图10。

VXLAN封装的主要优点之一是,它具有更好的支持多路径中的底层凭借把熵(内部头的哈希值)的外报头的源UDP端口。
来自该VLAN的IETF草案在两个显着的方式不同VXLAN的OpenContrail实现。首先,它只有实现了的数据包封装部分的IETF草案;它并没有实现的洪水-和-学习控制平面;而不是它使用基于XMPP控制飞机在本章描述,作为一个结果,它不需要底衬的组播组标识符(VNI)虚拟网络VXLAN头其次,是当地特有的,而不是全球唯一的出口vRouter。

2.2.1.3 MPLS通过UDP

OpenContrail支持第三封装在UDP上,即MPLS。它是一个跨之间的MPLS over GRE的VXLAN封装:它同时支持L2和L3覆盖的,它使用一个“内部”与本地显著的MPLS标签MPLS报头识别目标路由实例(类似MPLS的GRE的) ,但是它使用高效的多路径在底衬(如VLXAN)中基于熵的外UDP报头。
图11显示了在UDP报文封装格式的MPLS L3覆盖。

图12显示了在UDP报文封装格式的MPLS L2覆盖。


2.2.2 3层单播


发送一个IP包从虚拟机1a,2a的虚拟机的事件序列的摘要在下面给出。如需更详细的说明,请参阅[草案,IETF-L3VPN终端系统]。下面的描述中假定的是IPv4,但对IPv6的步骤是相似的。


[*]虚拟机1A中的应用程序发送一个IP数据包的目的IP地址VM 2A。
[*]VM 1A有一条默认路由指向一个169.254.xx的链路本地地址,路由实例1A。
[*]VM 1A发送一个ARP请求,链路本地地址。ARP代理路由实例1A响应。
[*]VM 1A发送的IP数据包路由实例1A。
[*]IP FIB路由实例1A 1A包含/ 32路由的其他虚拟机在同一个虚拟网络,包括VM 2A。这条路线是由控制节点使用XMPP安装使用。下一跳的路由执行以下操作:

[*]施加MPLS路由实例2A标签分配由vRouter 2,。
[*]征收GRE报文头的目的IP地址的计算节点2。

[*]vRouter 1的封装后的分组的新的目的地IP地址(计算节点2)在全局IP FIB表1中执行查找。
[*]vRouter 1计算节点2发送的封装后的报文。这是如何发生正是取决于底衬网络是否是第2层交换网或第3层路由网络。这在下面详细描述。现在,我们跳过这部分,假设封装的数据包使得它来计算节点2。
[*]计算节点2接收封装的数据包,并做IP查找在全球IP FIB 2。由于外层的目的IP地址是本地的,解封装数据包,即它消除了公开MPLS头GRE头。
[*]计算节点2不一个MPLS标签查找全球MPLS FIB 2的和找到一个条目指向路由实例2A。解封装的数据包,即它消除了MPLS报头和暴露的IP数据包注入到路由实例2A。
[*]计算节点2 IP FIB 2A露出的内部目标IP地址进行查找。找到路由指向虚拟接口连接到VM ​​2A的。
[*]Compute节点将数据包发送到VM 2A。

现在我们回到掩盖的部分,我们在第7步:跨越底层网络是如何封装的数据包转发。
如果底层网络的第2层网络,然后:


[*]外源IP地址计算节点(1)和(计算节点2)封装的数据包的目的IP地址在同一子网中。
[*]Compute节点1发送一个ARP请求的IP地址计算节点2。计算节点2的MAC地址为计算节点2发送一个ARP应答。注意通常没有ARP代理在底图。
[*]被封装的数据包是从计算节点1切换到计算节点2,根据目的MAC地址的第2层。

如果底层网络是一个3层网络,那么:


[*]外源IP地址计算节点(1)和(计算节点2)封装的数据包的目的IP地址在不同的子网。
[*]在底层网络中的所有路由器的物理路由器(S1和S2)和虚拟路由器(vRouter 1和2 vRouter的)参与一些路由协议,如OSPF。
[*]封装后的分组是从计算节点1计算路由的目的IP地址的基础上的节点2的第3层。等价多路径(ECMP)允许使用多个并行路径。出于这个原因,VXLAN封装包括熵的UDP数据包的源端口。

2.2.3第2层单播


L2覆盖转发L3转发覆盖上一节中所描述的,除了作品完全一样:


[*]转发表中的路由的实例包含的MAC地址,而不是IP前缀。
[*]覆盖中的未使用ARP(但它是用来在衬底)。

2.2.4后备开关

OpenContrail支持的混合模式的虚拟网络是一个L2和L3覆盖的同时。在这种情况下的路由的实例上vRouters有一个IP FIB和一个MAC FIB。对于每个数据包中,vRouter首先做的IP FIB表中查找。如果IP
FIB表包含一个匹配的路由,它是用于转发数据包。如果IP FIB表不包含匹配的路由,的vRouter确实 - 因此而得名回退切换的MAC FIB中的查找。
请注意“的路线,然后再桥”的行为后备切换是相反的“桥梁第一,然后路线”集成的路由和桥接(IRB)的行为。

2.2.5三层组播

OpenContrail支持IP组播L3覆盖的。组播阐述使用组播树进行覆盖,或使用多播树在底图。无论哪种方式,树木可以共享的(*,G)的树木或特定于源树(S,G)。

2.2.5.1覆盖多播树

OpenContrail不重叠代替底图采用组播树的组播阐述。详情请见[草案私人物品L3VPN
MCAST边],在这里我们只总结的基本概念。
图15说明创建组播树覆盖的一般概念。树的根vRouter发送N份交通到N下游vRouters的。发送那些下游vRouters的交通N多下游vRouters的,依此类推,直到所有的的侦听器vRouters所涵盖。在这个例子中,N等于2。的数目N不具有,是在每个vRouter相同。

该系统采用的XMPP信号编程的FIB每个vRouters上,为每个虚拟网络创建的覆盖多播树(次)。协议细节的描述太复杂,在这里,请参阅[草案私人物品L3VPN
MCAST边细节。
入口的复制,如图16中所示,可以被看作是一个特殊的退化的情况下,一般的覆盖多播树。然而,在实践中,入口复制树的信令是非常简单的比一般的覆盖多播树的信令。


2.2.5.2底图组播树

另一种方法是做底图使用多播树如图17所示的组播阐述。

这是普遍使用的方法是,在MPLS L3VPN网络来实现组播(见 )。此外,洪水和学习控制平面中描述的VXLAN 草案玛哈林甘杜特dcops
VXLAN]依赖于衬底组播树。
作为一个组播目的地址的GRE隧道实现的底衬组播树。这意味着,底层网络必须支持IP组播,它必须运行一些组播路由协议,通常是协议独立型组播(PIM),它必须有一个组播组每底衬组播树。

2.2.5.3比较

在衬底的组播树要求数据中心交换机的IP组播支持。在实践中,这可以是一个问题有许多原因:


[*]即使的底衬网络支持组播,运营商也未必愿意来启用它的复杂性,管理和故障排除。
[*]通常基于商人硅的开关只支持转发平面中的组播组数量相对较小。为了获得最佳的组播需要有一组每组各租户的叠加,它可以是一个非常大的组数在底层。可以减少每个虚拟网络使用一个单一的共享树,组播组数目底图或多个虚拟网络之间共享一棵树。这是在降低最优的费用和复杂性增加。
[*]当运行组播底图,数据中心交换机必须保持控制平面状态,每个组的听众。控制平面状态量可能非常大。
[*]组播控制平面协议可以是非常CPU密集型的,因为需要每次更新一个监听器加入或离开多播树。

覆盖多播树,在另一方面,从自己的一组问题,但也受到


[*]第一个问题是,在同一条物理链路,特别是连结靠近源发送相同的数据包的多个副本。然而,这会浪费带宽,数据中心网络,这是不是大问题,在广域网,因为数据中心的布通常是一个提供完全无阻塞任何到任何连接的Clos结构


[*]第二个问题是覆盖多播树把的负担做组播阐述可以是CPU密集型的软件vRouters的。的底衬硬件开关通常有硬件支持组播的阐述。这个问题可以缓解传播的负担在多个vRouters上使用级联阐述的,如图15所示

2.2.6第2层多层板交通

二层广播,未知单播和组播流量(BUM交通)需要被淹没在一个二层网络。在OpenContrail,未知单播流量下降,而不是被淹没,因为该系统不依赖于洪水和学习,以填补MAC表。相反,它使用的控制平面协议填写的MAC表,如果目的地是不知道,有一些其他的系统中的故障。L2广播也避免因为大多数L2广播是由一小部分协议。
对于任何剩余的L2广播和多播,系统会创建一个分发树的每个虚拟网络连接该虚拟网络的所有路由实例。无论是在覆盖或底图那棵树可以构造具有相同每种方法的利弊。

2.2.7代理服务

的vRouter代理几种类型的流量(从VM)和避免洪水。拦截特定vRouter请求数据包,并将其代理的控制节点,使用XMPP。控制节点发送的响应,通过XMPP。
目前,该系统代理下列类型的流量(额外的代理将被添加):


[*]DHCP请求。控制节点提供基于虚拟机的配置的DHCP响应
[*]ARP请求。控制节点提供IP地址到MAC地址的映射
[*]DNS的和MDNS请求的。控制节点提供名字到IP地址的映射

2.2.8转发策略

的vRouter转发平面包含多个不同功能的流表-防火墙策略,负载均衡,统计等流量表包含流条目有一个匹配的标准和相关的操作。匹配规则可以是N -元组匹配接收数据包(通配符的领域是可能的)。这些操作包括:丢弃数据包,允许该数据包,或重定向到另一个路由的实例。流条目在转发平面由vRouter代理的编程的
流表编程能撑船包的vRouter代理,其中有没有流表中的条目。这允许vRouter代理看到每一个新流的第一个数据包。的vRouter剂将安装每一个新的流的流条目,然后重新注入到转发平面中的数据包。



2.3服务链

OpenContrail支持一个高层次的政策语言,允许虚拟网络相连,受政策的制约。此策略语言类似于Snort的snort的 规则语言,但可能会改变系统推广。规则看起来与此类似:


允许任何    SRC-VN - > DST-意见书   SVC-1,SVC-2


这条规则允许所有通信流量从虚拟网络SRC-VN虚拟网络DST-VN,并强制流量通过一个服务链,包括服务SVC-1,然后由服务SVC-2 。在上面的例子中,该规则适用于任何虚拟机虚拟网络SRC-VN时,将流量发送到虚拟网络的任何虚拟机DST-VN。
该系统主要关注交通转向,即注入流量流入正确的虚拟机使用的虚拟接口。虚拟机提供的网络服务,如防火墙,DPI,IDS,IPS,缓存等
系统将创建额外的路由服务虚拟机实例除了为租户虚拟机的路由实例。交通转向:


[*]通过操纵路由的路由目标影响进口和出口路由从一个路由实例到另一个路由的实例。
[*]通过操纵,因为它们是从路由实例泄漏路由的路由对应的虚拟机的实例,并以正确的顺序正确的顺序,迫使流量通过实例,下一跳和/或标签的航线。

图18说明了服务链路由实例操作的总体思路。

在上面的例子:


[*]选择这样一种方式,路由路由实例RI RI-S2 -T2泄露的进口和出口路由目标的路由实例,然后RI-S1,然后RI-T1。
[*]当服务路由实例出口的路线,他们做了自己的下一跳,他们分配一个新的标签:

[*]下一跳自我指导的交通承载该服务的服务器上。
[*]标签引导流量到该服务器上的虚拟机服务。


IETF草案[草案rfernando的virt-TOPO-BGP-VPN服务链接]介绍了一种类似的机制。



2.4控制和管理平面协议

2.4.1 IF-MAP

元数据接入点接口(IF-MAP)[地图]是一个开放标准的客户端/服务器协议开发的可信计算机组(TCG)的可信网络连接(TNC)开放式体系结构的核心协议之一。
IF-MAP原来的应用程序提供了一个通用的元数据访问点(MAPS),数据库服务器作为一个信息交流中心信息安全事件和对象,并且TNC架构的其他元素之间的接口。
IF-MAP定义数据模型提供了一个可扩展的机制。它还定义了一个协议,发布,订阅和搜索的数据存储的内容。
OpenContrail使用IF-MAP协议来分发配置信息,从配置节点控制节点。控制节点可以使用订阅机制,只接收配置的子集,使他们有兴趣。该系统还采用IF-MAP来定义高级别和低级别的配置数据模型。

2.4.2 XMPP

扩展消息处理现场协议(XMPP)[XMPP是一个面向消息
​​的中间件,基于XML的通信协议。最初被命名为XMPP Jabber和用于即时消息,状态信息和联系人列表维护。设计为可扩展,该协议自演变成一般的发布-订阅消息总线,是现在使用的许多应用。
OpenContrail使用XMPP作为计算节点和控制节点之间的一个通用消息总线交换信息,包括路由,配置,运行状态,统计,日志和事件的多种类型的。
IETF草案[草案,IETF-L3VPN终端系统]和[草案私人物品L3VPN
MCAST边]描述XMPP消息格式。

2.4.3 BGP

OpenContrail使用BGP协议控制节点之间交换路由信息。BGP也可以用来交换之间的路由信息控制节点和网关节点(路由器和交换机的主要网络供应商)

2.4.4桑德什科

桑德什科是一个基于XML的协议,报告分析信息。中公布的结构描述的XML消息的结构的描述。在每个节点上的每个组件有一个桑德什科分析节点的连接。桑德什科携带两种消息:


[*]系统中的所有组件分析节点发送异步消息报告日志,跟踪事件等
[*]分析节点可以发送请求消息并接收响应消息来收集特定的操作状态。



2.5 OpenStack的整合

图19显示了OpenStack的新星,中子和OpenContrail,之间的整合。

OpenStack的新星模块指示新星代理计算节点来创建虚拟机。新星代理与OpenContrail中子插件来检索新的虚拟机网络属性(如IP地址)进行通信。一旦虚拟机创建新星代理人通知vRouter的代理配置虚拟网络为新创建的虚拟机(如新航线,在路由实例)。



2.6安全

所有的控制平面协议传输层安全性(TLS)和安全套接字层(SSL)来提供认证和完整性运行。它也可以被用于提供机密性,虽然通常是没有必要在数据中心的局限。
对于初始服务发现证书用于验证。对于所有后续通信使用基于令牌的认证以提高性能。服务发现服务器发出的令牌两个服务器和客户端证书认证的TLS连接。
证书的分布是本文的​​讨论范围。在实践中,这通常是处理由服务器管理系统,如木偶或厨师。
所有的REST API,在该系统使用基于角色的授权。服务器建立使用TLS身份验证的客户端的身份,并分配一个或多个角色。角色确定通过接口(例如只读和可读写的)和对象数据模型中的客户端允许访问的客户端是否被允许执行什么操作。



2.7的水平可伸缩性和高可用性

为了实现高可用性,以及用于水平缩放控制节点,配​​置节点和分析节点有多个实例。所有节点是主动 - 主动 - OpenContrail不使用主动待机的概念。

2.7.1控制节点

目前,每个控制节点包含所有对整个系统的运行状态。例如,所有的路由所有虚拟网络中的所有虚拟机。控制状态的总金额比较小,适合在内存中的每个控制节点。随着越来越多的功能被添加在控制节点的控制状态,聚集和分片可能会推出在未来使用类似的原则,在BGP路由目标的具体路由反射器。
每个“vRouter代理程序连接到两个或多个控制节点的所有节点都主动 - 主动。vRouter代理接收所有的状态(路由,路由实例配置等),每个控制节点。两个或多个节点接收到的状态是保证最终一致的,但也可以是瞬时不一致。它使一个本地副本的控制状态,以决定哪些使用。这是类似于如何BGP
PE路由器接收的多个副本相同的路线(从每个BGP邻居),并使得当地的最佳路线选择。
如果一个控制节点出现故障时,会注意到vRouter代理,控制节点的连接丢失。vRouter剂冲洗所有的状态从控制节点失败。它已经从其他控制节点的冗余副本的所有状态。的vRouter可以在本地,并立即切换无需任何重新同步。vRouter代理会联系您的服务发现服务器,再重新建立一个新的控制节点来替换发生故障的控制节点的连接。

2.7.2配置节点

配置节点在一个容错和高可用NoSQL数据库存储所有的配置状态。这包括高层次数据模型的内容,即明确安装配置系统的配置状态。它也包括低级别的数据模型的内容,即,是来自于高级别数据模型转换模块的配置状态。
控制节点使用IF-MAP认购只是一部分,这是所需的控制平面的低级别的数据模型。服务发现服务器分配一个特定的配置节点每个控制节点。如果该配置服务器出现故障时,控制节点重新接触的服务发现服务器被分配到不同的配置服务器。
控制节点重新同步切换后,其状态与新的配置节点使用相同的“标志一切陈旧,重播,冲洗剩余的陈旧状态”的方法,用于平滑重启路由协议。

2.7.3分析节点

该系统提供了完整的高可用性功能,所有的分析组件,类似的配置节点。分析节点是无状态的,因此,分析组件故障不会导致系统丢失消息。当一个分析节点出现故障时,系统的发现服务将影响发电机过渡到一个正常运作的分析节点。和上游的REST
API客户端也可以使用发现服务检测到故障的节点和过渡到一个正常工作的节点。故障分析节点的可用节点池取出余下的分析节点接管工作的数据收集和处理查询。
OpenContrail提供完整的高可用性功能,跨数据库组件。数据库集群是安装在多个复制方式,因此,数据本身是有弹性的数据库节点故障。群集将多个数据库节点故障是有弹性。分析节点数据库节点故障后,将顺利从故障节点过渡到正常工作的节点。在这个过程中,我们将排队的数据,因此在此过渡期间的数据损失将是很小的。

2.7.4 VRouter代理

VRouter高可用性是基于模型所使用的许多路由协议,包括BGP平滑重启。如果因任何原因(崩溃,升级)vRouter转发平面继续转发流量使用安装由vRouter代理重新启动之前的转发状态重新启动vRouter剂。
当的vRouter剂下山vRouter,转发平面运行在一具无头模式。所有转发状态标记为失效。当代理重新启动vRouter,重新建立连接的一对冗余的控制节点。它重新学习所有国家从控制节点和转发平面中更换陈旧的状态重新安装的新鲜状态。
当的vRouter剂完成从控制节点重新学习状态,并完成重新安装的新鲜状态,在转发平面,转发平面中的任何剩余的陈旧的状态被刷新。

2.7.5 VRouter转发平面

如果因任何原因(崩溃,升级)的vRouter转发平面重启会有特定的服务器中断交通处理。
这是不可避免的,因为只有一个实例的的vRouter转发平面上的每个路由器。重要的是要保持尽可能的简单vRouter转发平面的崩溃或升级的可能性降到最低。



3数据模型

相关系统中所有的状态,无论是配置,操作或分析,是一家集数据模型。每个数据模型定义了一组物体,它们的语义,和它们之间的关系。该系统运行在这些数据模型来执行它的任务:创建和更新对象和关系,翻译成“低层次”对象的“高层次”的对象,在网络元素和低级别对象实例创建所需的连接和服务。这些数据模型提供了一定的能力来操纵它们的模块,并反过来施加一定的要求。这一数据基于模型的设计的主要结果是,该系统是分布式,可扩展,高可用,易升级,而富有弹性。
数据模型是本质上注明的图形顶点代表表示对象之间的关系的对象和链接,本系统采用了数据建模语言(DML)指定它们。捕获的一些对象以及它们之间的关系的语义直接在数据模型中,例如,图中的一个顶点表示一个抽象的或具体的对象,和一个链接可能代表了父 - 子关系的依赖关系之间的对对象。其余的语义被捕获在顶点和链接上的注解,例如,一个地址,它表示的一对顶点之间的连接可能是所需要的带宽,或链路之间的路由的实例可以是与所需的路由策略注释注释。



3.1编程模型

使用IF-MAP配置和运行状态的数据模型的定义,本身被保存在一个卡桑德拉数据库的数据。这个数据库提供持久性,可用性和向外扩展的特点。覆盖在顶部使用Redis的key-value存储在内存中的一个“子”酒吧总线。与数据库交互的模块可以选择订阅某些类型的更新。当一个模块发布的更新一个对象,更​​新被发送到所有订阅该类型对象的其他模块。
所有修改数据模型必须向后兼容,换句话说,任何程序引用一个数据模型,必须继续像以前那样工作,而不需要修改。这意味着,所有数据模型的变化可能只扩展现有对象,链接和注释,但决不能改变的语义或之间的关系时,现有物件。此外,修改绝不贬低一个对象或链接类型。对象之间的关系如何,可以向后兼容的一个例子如下所示。进一步的要求是,一个数据模型的修改必须是渐进的,允许更改推送到运行模块,而不需要重新编译。
数据模型的访问是通过一个RESTful API,自动生成的模型的规范。此外,也产生了各种语言的绑定(的Python,Java等),让这些语言的程序员操纵模型中的数据。
模块上运行这些数据模型必须是事件驱动的。这意味着两件事情:第一模块必须听酒馆子总线上的更新,以及第二个时,它得到的所有信息,它需要一个特定的动作,执行该操作。更新可能会在不保证任何订单酒馆子总线的顺序更新或管理的依赖关系是每个模块的责任。此外,模块必须能够重新启动。如果它崩溃,或者被强制重新启动(如升级),它​​只需重新连接到数据库,重新获取其状态,并继续处理。要做到这一点,一个模块必须保持所有非暂时性的状态,无论是在数据库中,通过数据模型或“网络”,在这种情况下,模块重新获得其同行状态。最后,模块必须是弹性的。也就是说,它们必须是能够以分布式的方式工作;实例可能是催生或终止所确定的当前负载。这是通过具有一个分布式数据库保持的数据模型,并具有分布的实体(例如,用于分配唯一的ID)进行协调服务。



3.2配置和操作数据模型

这个数据模型由根深蒂固,注明有向无环图(DAG)表示的对象的层次结构。在DAG中的顶点表示的对象可以是管理实体,或物理的或逻辑的资源。DAG中的链接表示对象之间的关系。一个对象可以有零个或更多的孩子,但有一个父(除了根,它有没有父母)。删除对象隐式地删除它下面的子树。一个对象可能指的另一个目的,在这种情况下,维持一个“引用计数”。删除引用的对象的引用计数减1。删除一个对象,它具有优异的引用是不允许的。“弱引用”对象不存在尚未被允许的。弱称为对象可能会被删除。
DAG的根下面的图20所示表示该系统是宇宙的对象负责,也就是说,“管理域”(AD)。这可能是一个数据中心集群,存在点(POP),中央局(CO),或广域网(WAN)。一个AD有一个整体的管理员负责管理。一个AD也有一个关联的命名空间,它可以用在所有的标识符。标识符的例子是IP地址,域名,路由实例ID。

一个AD包含一个或多个“租户”或“域”。例如,在DC的租户可能是可口可乐和百事可乐在POP或CO的租户可能是服务部门为企业客户和宽带。
租户可能包含了一些项目。租客内部的一个部门,说营销的一个项目就是一个例子。项目包含虚拟网络(VN)。在DC A相VN可能包括在应用层的虚拟机。A相VN在POP可能代表了VPN业务的客户,或移动用户的一组具有相似的配置文件,或者一组用户在校园环境。
项目包含的服务实例,网关和政策。一个项目也有安全组,管理员可以使用分配“角色”端点的端点,这些角色可能进一步确定的政策。
VN包含端点。在DC领域,这些都是虚拟机的业务优势,这些都是客户的网站(CES);有线/无线边缘,他们是用户。端点安全组的一部分,安全集团有一个参考。
在数据模型中的其他对象是“路由实例”(RI)。A相VN“编译”成一个或多个注册机构,并实现为中vRouters。然而,其他对象,这是用来控制路由泄漏RI之间的路由目标。
这种层次结构的背景下开发的一个数据中心,但它似乎是足够概括地包含的其他领域。在某些情况下,在层次结构中的某些水平可能是多余的。在这种情况下,一个单一的实例可以被用于在该水平保持层次结构。例如,如果租户的概念是不需要的,那么单一租户可以实例化,以保留租户层次中的。如果一个新的层次结构中的水平是必要的,这需要引入以向后兼容的方​​式。

假设一个新的层次中,部门之间是理想的租户和项目。人们可以很容易地扩展数据模型添加。然而,为了向后兼容的要求意味着三件事:


[*]处必须是一个可选的层次中。即,它必须能够创建一个项目,紧接下租户,以及下一个部门。
[*]作为一个孩子的租户创建一个项目,必须保持作为该租户的孩子,直到它被删除。
[*]一个新的项目可以是孩子的租客或一个部门,但不能同时使用。

此外,应用程序必须准备要求租客儿童的接收项目以外的其他类型的孩子。它可以简单地忽略他们,但必须引起错误或未能。
在左边上面的图表显示与亲子关系的租客和项目的数据模型。点对象和链接代表部门新增加的水平。
在右边的图显示了一个实例与租户的T1和项目t1.p2的橙色的数据模型;这些按照原始数据模型。还显示是一个部门t1.d1的紫和另一个项目t1.d1.p1的 ;按照修改后的数据模型。需要注意的是每个项目只有一个父:,橙色项目有T1作为其母公司,作为其母公司的紫色项目有t1.d1。

3.2.1高层次和低层次数据模型

所有的上述目的和关系是在一个共同的数据模型。进入“高层次”和“低级别”是一个松散的对象的区别。境外实体系统(业务流程系统或应用程序)创建的对象被认为是配置状态,因此,高层次数据模型的一部分​​。例子包括住户和项目。模块生成的对象是操作状态下,被认为是低级别的数据模型的一部分​​,因为它们是靠近内部网络元素使用的抽象;例子包括路由实例。有些对象可能是配置或产生模糊线之间的高和低层次数据模型,一个例子是,这通常是产生路由目标,但也可能进行配置,以便系统可以跟外部BGP发言者。
此外,一些物理实体数据模型中的表示。例如,每个实例的服务器上vRouter表示。所关心的每一个BGP扬声器系统(在控制节点,以及那些,OpenContrail的对等体,例如作为DC网关)也表示。最后,物理和虚拟服务设备也派代表出席了会议。这些对象被用来跟踪BGP或XMPP对等会话和服务之间的连接。

3.2.2服务连接的数据模型

“产业链”的服务是一对VN规范之间的流量。从越南的交通可能通过服务节点的任意图才到达另一个VN。交通可能会采取不同的路径的基础上的服务(例如,IDS可能会重定向到DPI引擎的流量),或进行复制,以便监察,例如。虽然“服务链”并不涵盖这些更一般的情况下,应更正确地称为“服务图”,我们将继续使用它。
的服务链的规范由两部分组成:交通路径从入口VN到外出VN的服务元素的一组,并且该服务配置文件,适用于每个服务元素。目前,这两个规格的对象的注解。前者作为批注的政策,而后者作为服务对象的一个​​注解。这可能是有利于捕捉前者在明确的数据模型,这个数据模型将是一个图,其顶点是服务和链接服务之间的连接。该曲线图,然后将系统的一对之间插入。



4 OpenContrail使用案例

有三个立即使用的案件OpenContrail - 为企业私有云服务和虚拟私有云服务提供商(c)网络服务提供商网络的功能虚拟化(b)基础设施。我们的目标是不使用的情况下,提供一个详尽的清单,但提供一个用例说明采样。



4.1数据中心域使用案例

4.1.1在数据中心的业务流程中的作用

在我们深入到数据中心的具体使用情况下,它是有用的,首先讨论在数据中心的业务流程的作用。
在数据中心,的配器(OpenStack里的CloudStack,VMware的,微软系统中心等)管理数据中心的许多关键方面:


[*]计算(虚拟机)
[*]存储
[*]网络
[*]应用

软件定义网络(SDN)控制器的作用是协调网络和网络服务,如负载平衡和安全性的基础上的应用程序分配给它的计算和存储资源的需求。
在Orchestrator使用北向接口,以协调网络的SDN控制器在一个非常高层次的抽象,例如:


[*]租客创建一个虚拟网络,数据中心内或跨数据中心。
[*]将一个虚拟机的租户的虚拟网络。
[*]一个租户的虚拟网络连接到一些外部网络,如Internet或VPN。
[*]将一组虚拟机或租户的网络边界安全策略。
[*]部署一个租户的虚拟网络中的网络服务(如负载平衡器)。

SDN控制器的负责翻译这些请求在一个高层次的抽象到具体行动上的物理和虚拟网络设备,如:


[*]物理开关,如架顶式(TOR)交换机,汇聚交换机,或单层开关面料。
[*]物理路由器。
[*]物理服务节点,如防火墙和负载平衡器。
[*]虚拟服务,如在一个虚拟机的虚拟防火墙。



4.1.2虚拟化多租户数据中心

允许多租户托管在数据中心的虚拟化多租户数据中心的使用情况。多租户意味着,租户共享相同的物理基础设施(服务器,网络,存储),但在逻辑上彼此分离。
租客的概念可能意味着不同的东西在不同的情况下:


[*]在服务提供者提供公共云服务的数据中心,这意味着属于客户的客户或应用程序。
[*]在企业实施私有云的数据中心,这可能意味着一个部门或属于客户的应用。

一些建筑方法(特别是本地终端到终端的VLAN)是很重要的,因为有限制每个数据中心的4096个住户的住户数目。
并非所有的数据中心是多租户的。一些大型内容提供商(例如Facebook)的私有数据中心,仅用于内部应用程序和尚未提供云服务。即使是那些支持多租户的数据中心不以同样的方式定义多租户。例如,原来的亚马逊网络服务(AWS)确实支持多租户,但是从网络的角度来看,租户并没有逻辑彼此分开(所有住户被连接到相同的第三层网络)。自那时以来,亚马逊已经推出了更先进的服务被称为虚拟私有云(VPC)[AWS
VPC允许每个租户获得一个或多个私有隔离网络。
下面的图23显示了各细分市场的虚拟化和多租户的要求。虚拟化时,往往使用不同的细分市场不同的协作型和hypervisor:


[*]对于企业细分市场,商业的业务流程系统得到广泛应用。随着对软件定义的数据中心越来越多地采用云和移动,有一个愿望,采取综合的开源堆栈,如OpenStack的或的CloudStack


[*]在基础设施作为服务(IaaS)云和公共云市场,开源协作型(如OpenStack里的CloudStack)和虚拟机管理程序(如KVM,XEN)通常用于可定制,成本和可伸缩性原因。
[*]非常大的内容提供商(如谷歌和Facebook)往往建立自己的业务流程软件,不使用的虚拟机管理程序的性能和规模方面的原因。


一般来说,每个租户承载的虚拟机,如下面的图24中所示的服务器上运行的虚拟机监控程序的一组相对应。虚拟机管理程序包含虚拟交换机(vSwitch的“)的虚拟机到物理网络彼此连接。应用程序也可以运行“裸机”在服务器上(即不是在虚拟机),如图(B)在右下角的绿色服务器。

数据中心网络可能是一个多层的网络,如在上面的图24中所示,数据中心可以是单层的网络(例如,布料),如下面的图25中所示。

使用物理数据中心网络服务器互连。在图24中被描绘为2层(接入,核心)网络网络。它也可能是一个3层网络(接入,汇聚,核心)或1层(如Q-面料)网络。数据中心网络覆盖解决方案的建议,是一个3层网络(IP或MPLS)。
在下面的图26所示,在最简单的情况下,云服务提供商为每个虚拟机分配一个IP地址。一个给定的租户的虚拟机在同一个二层网络。所有虚拟机(无论是从同一承租人或从不同的租户)可路由的IP网络与对方沟通。
例如,在亚马逊网络服务AWS] [AWS
EC2弹性计算云(EC2)]默认情况下,分配给每个虚拟机的私有IP地址(亚马逊EC2网络内到达)和一个公网IP地址(到达互联网通过NAT)[AWS
EC2实例寻址]。亚马逊动态分配私营和公共IP地址的虚拟机时,实例化。亚马逊的EC2弹性IP地址(EIP)功能[AWS
EC2-EIP分配有限的(默认为5)的静态IP地址(可以分配给虚拟机(租户)从Internet访问。

为了彼此隔离租户在一个网络中,每个租户可以分配一个私有的L2网络,如在图27中示出。租户的网络,允许同一承租人的其他虚拟机,受政策限制每个虚拟机进行通信。租户网络相互隔离的:一个租户的虚拟机是无法与另一个租户的虚拟机进行通信,除非政策明确允许。此外,虚拟机是无法访问的,除政策明确允许从互联网。

租户专用网络一般称为虚拟网络,在一个给定的租户网络上的所有虚拟机相同的L3子网。租户可获准来接他的自己的IP地址的虚拟机或云服务提供商可以分配的IP地址。无论哪种方式,IP地址可能不是唯一的租户(即两个虚拟机的两个不同的租户可能会使用相同的IP地址)。
一个单一的租户可能有多个虚拟网络。这些虚拟网络可能会或可能不会彼此连接使用三层路由器,防火墙,NAT,负载均衡器,或某些其他的服务。

作为隔离虚拟租户网络的一个例子,亚马逊虚拟私有云(VPC)服务AWS
VPC]允许租户创建一个或多个子网,并将它们连接到对方,或到互联网,或使用的客户网络路由器或服务(如NAT)。[AWS
VPC-SUBNETS]
用例包括管理租户网络逻辑上集中的业务流程层(在任何上面的图中未示出):


[*]添加和删​​除租户,
[*]添加和删​​除虚拟机和租户,
[*]指定的带宽,服务质量和安全属性的租户网络,
[*]等等

此业务流程层必须涵盖所有方面的数据中心(计算,存储,网络和存储)支持率高的变化。

4.1.3连接到Internet / VPN租户

在这种使用情况下,租户通过VPN连接到互联网或企业网络,如图29所示。VPN可以L3VPN,L2VPN,SSL VPN的IPsec VPN等

数据中心网关功能是负责为租户网络连接到Internet或VPN的。网关功能,可以实现在软件或硬件(例如,使用一个网关路由器)。

4.1.4数据中心互连(DCI)

在这种使用情况下,多个数据中心通过广域网(WAN)互连。

用于灾难恢复,数据中心可能是主用/备用,暂时主动/主动避灾,或永久的主动/主动。在主动/主动的情况下,租客可在多个数据中心的虚拟机。数据中心互连(DCI)将一个给定的租户在所有数据中心的所有虚拟机在同一个虚拟租户网络。
DCI必须解决下列网络要求:


[*]存储复制。
[*]允许租户网络,跨数据中心的IP地址空间重叠使用。
[*]全局负载均衡(GLB)。
[*]跨数据中心的虚拟机迁移避灾

多个传输选项是可用对于DCI的互连,包括暗光纤,SONET / SDH,DWDM,伪线,第3层VPN,E-VPN的等不同的数据中心网络,带宽是一种稀缺资源在DCI广域网,所以流量工程(TE)经常被用来有效地利用现有资源。

4.1.5网络监控

在数据中心网络中,它往往是必要作出具体交通流在网络中的特定点副本,该副本的流量发送到一个或多个监控设备作进一步的分析。这被称为作为网络监视或自来水用例。
监测可能是暂时的,例如调试网络问题时。或监控,例如合规性的原因可能是永久性的。
传统的监控是通过手动配置交换端口分析器(SPAN)功能的交换机在网络上发送一个副本流量到一个特定的端口实现。远程SPAN(RSPAN)是更先进版本的功能:它允许复制的流量被发送到GRE隧道进行远程分析。
一个集中SDN系统可用于:


[*]建立监测采集点(“水龙头”)在网络监控设备收集和分析交通隧道。
[*]指示引导特定流量的交通网络中的交换机和路由器到分析这些隧道。

4.1.6动态虚拟化服务

在这种使用情况下,网络服务,如防火墙,入侵检测系统(IDS),入侵防御系统(IPS),负载均衡,SSL关闭装载机,缓存,和广域网优化租户网络中部署。
可以位于不同的地方,如图31所示,在这些服务中所提供的服务节点。

服务可以部署在多个地点:


[*]在虚拟机管理程序。
[*]在虚拟机中。
[*]在一个物理设备。
[*]物理接入交换机或vSwitch上使用访问控制列表。
[*]在线服务在路由器或交换机上的服务卡或本地转发的ASIC。

可伴有一个或多个虚拟机服务,例如一个或多个VM安装安全策略的结果。
另外,服务可以与网络的边界,例如,通过附加的安全策略网络边界,或通过插入在网络边界处的负载平衡。正如图32中所示,该网络的边界可以是:


[*]的租户网络和外部网络(互联网或到企业网络的VPN)之间的边界。
[*]一个租户的网络和网络的另一租户之间的边界。
[*]同一承租人多个网络之间的边界。





4.2网络功能SP的网络虚拟化

4.2.1服务插入

边缘路由器要应用一些服务(防火墙,DPI,缓存,HTTP头富集,等),从用户的流量。这些服务可以在路由器所提供的服务卡或的物理服务设备,或在云中的虚拟服务设备。
SDN系统用于创建和管理虚拟化或物理的服务,通过这些服务,建立服务链,引导用户流量。这是可以做到根据本地配置,但是,它通常是通过一个集中的策略服务商。

4.2.2服务实例 - 虚拟CPE(vCPE)

在宽带用户网络(BSN)的每个用户提供与用户驻地设备(CPE),例如一个多服务路由器。运营商需要更多的功能在这些客户端设备过顶(OTT)服务竞争,但面临的挑战是这样做的,因为:


[*]CPE厂商缓慢增加新的功能和上门服务,硬件功能的补充或替代昂贵
[*]不一致的功能支持,导致网络中存在许多不同的CPE设备。

在虚拟CPE使用情况下(也被称为云CPE使用情况下)操作员解决这些问题的条件:


[*]使用一个简化的用户端设备(CPE),其中只实现基本layer-2/layer-3的功能。
[*]虚拟化商用x86硬件上运行的虚拟机或容器中剩余的功能集中策划和供应。

服务器虚拟化CPE功能可设在不同的地方:


[*]拴在宽带网络网关(BNG)。
[*]服务卡上的BNG。
[*]行BNG和CPE之间。
[*]在数据中心
[*]上述的组合



5 MPLS VPN的比较的OpenContrail系统

的OpenContrail系统的体系结构在许多方面类似MPLS的VPN的体系结构(另一种类比[了一套不同的不完善]是到比较控制虚拟机路由引擎和一个线路卡的vRouter进行比较。)作为下面的图33中所示。

两种架构之间的相似之处包括以下内容:


[*]底图开关在OpenContrail系统对应的P路由器的MPLS VPN。由于的OpenContrail系统使用MPLS通过GRE或VXLAN封装协议没有要求,底层网络支持MPLS。唯一的要求是,它知道如何转发单播IP包从一台物理服务器迁移到另一个。
[*]vRouters在OpenContrail系统对应一个MPLS VPN PE路由器。他们就像物理PE路由器有多个路由实例。
[*]虚拟机在OpenContrail系统对应在MPLS VPN的CE路由器。为PE-CE路由协议在OpenContrail系统中也没有必要,因为CE的路由发现,通过后述的其他机制。
[*]通过GRE隧道,MPLS和VXLAN隧道在OpenContrail系统对应到MPLS,MPLS VPN在MPLS。
[*]XMPP协议在OpenContrail系统结合了两种不同的协议在MPLS VPN的功能:

[*]XMPP分布类似IBGP MPLS VPN的路由信息​​。
[*]XMPP推动某些类型的配置类似DMI MPLS VPN的(如路由实例)。
[*]的OpenContrail系统提供了三个独立的部分功能:

[*]集中控制,类似于BGP路由反射器(RR)在MPLS VPN。
[*]管理,推动类似的MPLS VPN的网络管理系统(NMS)vRouters上下配置状态。
[*]Google Analytics(分析)。




[*]OpenContrail同时支持第3层的覆盖,这是相当于MPLS L3 VPN和2层的覆盖,这是相当于MPLS EVPN的。



6缩略语


缩写
意思
AD
管理域
API
应用程式介面
ASIC
特定应用集成电路
ARP
地址解析协议
BGP
边界网关协议
BNG
宽带网络网关
BSN
宽带用户网络
BSS
业务支撑系统
BUM
广播,未知单播,组播
CE
客户边缘路由器
CLI
命令行界面
COTS
常见现成的
CPE
客户端设备
CSP
云服务提供商
CO
中央办公厅
CPU
中央处理单元
CUG
封闭用户组
DAG
向无环图
DC
数据中心
DCI
数据中心互连
DHCP
动态主机配置协议
DML
数据建模语言
DNS
域名系统
DPI
深度包检测
DWDM
密集波分复用
EVPN
以太网虚拟专用网络
FIB
转发信息库
GLB
全局负载平衡器
GRE
通用路由封装
图形用户界面
图形用户界面
HTTP
超文本传输​​协议
HTTPS
超文本传输​​协议安全
IaaS的
基础设施即服务
IBGP
内部边界网关协议
IDS
入侵检测系统
IETF
互联网工程任务组
IF-MAP
界面元数据接入点
IP
互联网协议
IPS
入侵防御系统
IPVPN
互联网协议虚拟专用网络
IRB
集成的路由和桥接
JIT
正好
KVM
基于内核的虚拟机
区域网路
局域网
L2VPN
第2层虚拟专用网络
LSP
标签交换路径
MAC
媒体访问控制
地图
元数据接入点
MDNS
组播域命名系统
MPLS
多协议标签交换
NAT
网络地址转换
NETCONF
网络配置
NFV
网络功能虚拟化
网管
网络管理系统
NVO3
网络虚拟化覆盖
操作系统
操作系统
OSS
操作支持系统
P
供应商的核心路由器
PE
提供商边缘路由器
PIM
独立组播协议
POP
存在点
QEMU
快速仿真
REST
代表性状态传输(Representational State Transfer)
RI
路由实例
RIB
路由信息库
RSPAN
远程交换端口分析器
(S,G)
源集团
SDH
同步数位阶层
SDN
软件定义网络
SONET
同步光网络
SP
服务提供者
SPAN
交换端口分析器
SQL
结构化查询语言
SSL
安全套接字层
TCG
可信计算机组
TE
交通工程
TE-LSP
交通工程标签交换路径
TLS
传输层安全性
跨国公司
可信网络连接
UDP
单播数据报协议
增值服务
增值服务
vCPE
虚拟客户端设备
VLAN
虚拟局域网
VM
虚拟机
VN
虚拟网络
VNI
虚拟网络标识符
VXLAN
虚拟扩展局域网
广域网
广域网
XML
可扩展标记语言(Extensible Markup Language)
XMPP
可扩展消息处理现场协议


7参考

亚马逊网络服务。http://aws.amazon.com/
亚马逊三维弹性计算云(亚马逊EC2)http://aws.amazon.com/ec2/
亚马逊EC2弹性IP地址。http://aws.amazon.com/articles/1346
Amazon
EC2实例的IP地址。http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html
亚马逊虚拟私有云(亚马逊VPC)。http://aws.amazon.com/vpc/
亚马逊虚拟私有云子网。http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html
[卡桑德拉]的Apache Cassandra的网站。http://cassandra.apache.org/
[草案rfernando的virt-TOPO-BGP-VPN] “BGP
VPN的虚拟服务拓扑”。IETF互联网草案
[草案玛哈林甘杜特dcops VXLAN] “VXLAN叠加3层网络虚拟2层网络的框架。” IETF互联网草案
[草案私人物品L3VPN MCAST边边缘组播复制为BGP的IP
VPN的。“ IETF互联网草案草案-私人物品L3VPN MCAST边缘。https://datatracker.ietf.org/doc/draft-marques-
L3VPN MCAST缘/
[草案IETF L3VPN终端系统的“BGP信号端系统的IP
/ VPN的。” IETF互联网草案IETF草案L3VPN终端系统。https://datatracker.ietf.org/doc/draft-
IETF L3VPN高端系统/
[草案raggarwa sajassi L2VPN
EVPN] “BGP基于MPLS的以太网VPN” IETF互联网草案
IETF XMPP工作组。http://datatracker.ietf.org/wg/xmpp/
如果map.org的网站上。http://www.if-map.org/
[杜松为什么叠加] “主动覆盖与活性端至端。” Juniper网络公司 http://www.juniper.net/us/en/local/pdf/whitepapers/2000515-en.pdf
[再分配] Redis的网站。http://redis.io/
“ 封装MPLS
IP或通用路由封装。” IETF RFC4023。http://tools.ietf.org/html/rfc4023
“ 边界网关协议(BGP-4)。” IETF
RFC4271 http://www.ietf.org/rfc/rfc4271.txt
“BGP / MPLS IP虚拟专用网络(VPN)”。IETF
RFC4364。http://tools.ietf.org/html/rfc4364
“ 组播在BGP
/ MPLS VPN的。” IETF RFC6513。 http://tools.ietf.org/html/rfc6513
[哼]的 Snort的网站。http://www.snort.org/
简介“Snort的规则。”安全分析师。http://www.secanalyst.org/2010/05/27/a-brief-introduction-to-snort-rules/
XMPP.org网站。http://xmpp.org/
饲养员阿帕奇饲养员网站http://zookeeper.apache.org/

         
版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: OpenContrail架构文档