计算、存储和网络,奠定了当今云计算格局的三足鼎立之势。
计算通过虚拟化CPU、Disk、Memory等硬件来获得高效的应用;存储通过诸如Glusterfs、Ceph等分布式文件系统,提供了众多特性的功能。而相对于,计算和存储两方面的成熟与稳定,网络一直以其在稳定、效率、设计等方面,而备受人们爱之、痛之。
随着物联网和云计算的蓬勃发展,网络作为信息传输的桥梁,其地位和重要性只会愈加凸显。从另一种角度而言,鉴于Neutron的整个生态环境。这里我们将扼要浅析OpenStack Neutron中的那些前沿技术,或者说是非主流技术,从某种角度而言,它们代表了虚拟网络服务的一些发展趋势。
一、OpenvSwitchOVN项目
OVS团队于2015年1月推出了C语言倾向的OVN项目,由VMWARE公司主导,旨在提高基于OpenvSwitch的OpenStack网络方案的扩展性和易用性。
OVN体系架构,如下图所示:
该项目用于给OVS这款在OpenStack项目中广泛使用的虚拟交换机引入一个轻量级的控制平面,即类似于SDN控制器,致力于提高基于OVS的OpenStack网络方案的扩展性和易用性,同时也为分布式路由等走捷径似的转发提供了可能性。
OpenvSwitch OVN项目将租户的概念引入了OVS,正式向neutron方向发展。提供对L2/L3网络虚拟化的支持。从目前的趋势来看,neutron及openstack最好的归宿就是将精力集中于微内核,提供北向REST API建立生态圈,扩展的Service实现可以由第三方公司自己来做。
更加详尽的PDF资料,请参见:
http://openvswitch.org/support/slides/OVN-Vancouver.pdf
二、SDN Controller
典型的,SDN控制器的核心是实现集中控制平面(注:难道分布式控制不好吗,为什么很多人一直在强调集中控制呢,这不是与SDN东西向扩展理念背道而驰吗?大家如何看待呢!)和数据转发平面的相分离。这里强调两个,控制器和交换机的接口——我们叫做南向接口;另一个是往上的北向接口。
SDN的核心理念有三个,第一个控制和转发分离,第二个集中控制,第三个开放的API——网络可编程。
OpenStack平台中应用的SDN技术已经成为了云环境中的网络支柱,OpenStack的Neutron本身作为一个SDN网络控制系统,在网络配置方面提供了一种自服务能力,用户可以创建自己的网络并控制流量,实现连接服务器和设备到一个或多个网络。基于Neutron的SDN技术,OpenStack网络实现了一个可扩展的框架,并能部署和管理多种网络服务,如入侵检测系统(IDS),负载均衡,防火墙和虚拟专用网络(VPN)等。
SDN技术在云计算中的核心作用不言而喻,鉴于当前业界SDN控制器如此繁多,这里,我们仅罗列出与openstack Neutron相关联的开源控制器来。
主要有:OpenContrail、ONOS、Floodlight、Ryu、OpenDaylight项目等,它们都有各自的特点。关于这些控制器的具体讲解,不在该篇文章范畴内,请按需Google之。
值得注意的是,SDN中除了大名鼎鼎的OpenFlow协议之外,还有用于解决控制平面路由及计算的Routeflow协议。
三、Neutron DVR
相比较于其他一些前沿的非主流技术,DVR(分布式虚拟路由)应该算是玩家们所耳熟的一个项目了。为什么说是耳熟,而非能手呢。即在于,大部分人是通过看理论资料来认识它的,从实践角度参与的人可真不多。
从实用主义角度而言,它也是一种非主流技术,且显得太过于复杂。但由于,DVR本身作为社区为Neutron开发的一个子项目,这里,我们不能不提及。
需要特别指出的是,由于DVR是三层的路由转换服务,所以仅适用于VXLAN、GRE等网络模式场景中,而VLAN等并不适用。
DVR的核心作用是,通过Neutron的东西向横向流量扩展,将L3-Agent同时分布于网络节点和计算节点上,减轻网络节点的L3性能瓶颈/流量集中,实现负载均衡等。并通过其他第三方软件,来实现L3 Agent的高可用。
当某个租户建立了一个路由的时候,如果某台主机上存在其路由所连接子网的虚机,那么这台主机上就会建立一个路由。所有的东西向流量都会由这个路由进行转发而不是通过网络节点进行转发。如果虚拟机有浮动IP的话,所有的南北向流量也会由这个路由器进行转发而不是由网络节点进行转发。只有没有浮动IP的虚机访问外网的时候,会通过SNAT走网络节点进行转发。
通过使用 DVR,三层的转发和 NAT 功能都会被分布到计算节点上,这意味着计算节点也有了网络节点的功能。但是,DVR 依然不能消除集中式的 Virtual Router,这是为了节省宝贵的 IPV4 公网地址,所以依然将 SNAT 放在网络节点上提供。这样,计算和网络节点就看起来如下:
- 网络节点:提供南-北 SNAT,即在不使用浮动 IP 时,虚机访问外网的网络得经过网络节点。也就是说,网络节点依然必须走传统的 HA 解决方法,比如 VRRP 和PeaceMaker。
- 计算节点:提供南-北 DNAT,即外网访问虚机的网络流量得经过计算节点;以及东-西转发,即虚机之间的网络经过计算节点。因为所有计算节点的参与,这部分的网络负载也就自然地被均衡了。
更加详尽的DVR资料,请参见:
https://wiki.openstack.org/wiki/Neutron/DVR
四、Dragonflow
Dragonflow作为Neutron最新的子项目之一,由华为以色列技术团队提出,于2015年开始提交代码,目前已经成为OpenStack的孵化项目。
Dragonflow和DVR,倒是像一对近亲。从设计和理念等角度而言,都与DVR极为相似,可以说,Dragonflow是DVR的升级版或补充版。
Dragonflow的设计比较符合一个标准的Neutron扩展,通过Plugin来实现API,通过L2 Agent和L3 Agent分别实现功能。
在Dragonflow模式中,Service的实现方式是一样的(service plugin)。它把Network节点由单纯的网络节点(走SNAT流量)改成了Neutron Controller Agent。Neutron Controller Agent相当于传统SDN方案的网络控制器,更准确的说是三层的SDN控制器。计算节点上跑的还是L2 Agent。在原来DVR的模式下,网络节点要跑L3 Agent,现在就不需要了。Dragonflow改成了纯粹用OpenFLow去控制三层流量的方式。
Dragonflow实现了Neutron的L3 Service API,还为Neutron提供了分布式虚拟路由器功能。从设计理念上讲,Dragonflow使用的是可插入式无状态化轻量级SDN控制器,实现了租户子网间(东-西)流量的完全分布化,避开了网络节点,减小了故障域,避免单点故障。
按照Dragonflow的设计理念,它可以提升OpenStack Neutron L3的可扩展性、性能和可靠性。它可以支持数千个计算节点,为实现动态增长而保持控制器的无状态化,没有中央瓶颈,通过避免使用iptables和命名空间减少计算节点开销。
更加详尽的dragonflow资料,请参见:
https://github.com/openstack/dragonflow
五、OpenContrail
OpenContrail是由瞻博网络公司开源的网络虚拟化和智能化解决方案,包含所有用于创建虚拟覆盖网络的组件:SDN控制器、vRouter和分析引擎。当进行网络配置时,Contrail是连接物理网络与虚拟环境、配置底层服务、减少时间、降低成本和风险的一种简便方法。
和VMware NSX相似的是,OpenContrail对通用路由封装(GRE)或虚拟可扩展局域网(VXLAN)技术提供了技术支撑。另一方面,OpenContrail也和NSX方案一样能够控制网络设备硬件。两个平台方案的根本区别在于两者与编排系统的连接方式。OpenContrail被设计为能够在OpenStack云管理平台上工作,而NSX是和Vmware的云自动化中心(vCAC)相连。
值得注意的是,OpenContrail通过一种分布式哈希表(DHT)NoSQL方式来访问数据库以防止单点失败。
OpenContrail系统由两个主要部件组成:OpenContrail控制器和OpenContrail虚拟路由器
OpenContrailvRouter(虚拟路由器)是一个转发平面(或者是分布部署的路由器),运行在虚拟服务器的hypervisor,将一个数据中心的物理路由器和交换机扩展成一个虚拟的overlay网络,OpenContrail虚拟路由器从概念上和开源的OVS很像,但是他会提供路由以及更高层的服务(使用vRouter替代vSwitch)。
OpenContrail控制器提供了系统的逻辑集中控制平面和管理平面,并且协调管理vRouter。该控制器是一个逻辑上集中但是物理上分布的SDN控制器,为虚拟网络提供管理、控制和分析功能。
更详尽的OpenContrail资料,请参见这里:
http://www.sdnap.com/sdnap-post/2886.html
六、Midonet
MidoNet项目由日本Midokura公司开源,MidoNet是一款网络虚拟化软件,其基于底层物理设备来实现网络虚拟化,具有分布式、分散、多层次的特点。主要作为OpenStack系统中的默认网络组件,提供虚拟网络解决方案,为云平台如OpenStack服务。MidoNet是类似于OpenContrail, Neutron DVR, DragonFlow, OVN的SDN产品
Midonet网络解决方案,实现了很多企业级的特性,比如BGP的支持、Tunnel Zone、DoS抵御隔离的支持等。
Midonet充分借助了已有成熟的分布式软件降低自己本身的复杂性,而且只使用了OpenvSwitch的Datapath模块,使转发和控制更加灵活,不失为一个好的设计。但是其企业级服务还需要定制,对社区的部分高级功能也支持有限,这也是它的缺点。
Midokura没有开源MidoNet GUI部分的代码。而GUI将作为企业版MidoNet的一部分。企业版MidoNet(MEM,Midokura Enterprise MidoNet)包括了MidoNet管理工具和集成了VMware的vSphere技术及第三方管理工具,此外还包括OpenStack发行认证等服务和支持等。
更详尽的资料,请参见:
http://docs.midonet.org/
七、结语
基于众所周知的原因,在生产环境上,基于上诉技术的使用,大多仍处于研究阶段。
众多的厂商举着拥抱开源、拥抱OpenStack的旗帜,同时提供自己的产品,进行盈利。一方面因为利益的分歧,导致了Neutron的发展显得相对混乱,迟滞了其规范化、协调发展。另一方面,通过提供开源或商用产品,也为OpenStack的虚拟网络服务,提供了更多的选择和发展。
参考链接
1.http://blog.csdn.net/quqi99/article/details/42773417
2.https://www.ustack.com/blog/openstack-dragonflow/
作者简介:徐超:2015——至今,从事OpenStack相关工作。个人倾向于研究OpenStack、SDN和Docker。