深入理解OpenStack Neutron
上QQ阅读APP看书,第一时间看更新

1.2 Neutron的特性与应用

从Nova-Network起步,经过Quantum,再跨入新时代以后,经过几年的积累,Neutron在网络的各个方面都取得了长足的发展。当前Neutron支持的特性,如表1-2所示:

表1-2 Neutron支持的特性

Neutron支持的这些特性,涵盖了2~7层的各种服务。除了基本的、必须支持的二层、三层服务,Neutron在4~7层支持的服务有:LBaaS(负载均衡即服务)、FWaaS(防火墙即服务)、VPNaaS(VPN即服务)、Metering(网络计量服务)、DNSaaS(DNS即服务)等。Neutron在大规模高性能层面,还支持L2pop、DVR、VRRP等特性。

Neutron的应用分为两大类:基于OpenStack的应用、基于SDN的应用。前者是在云的场景下,与OpenStack其他部件一起配合,为用户提供云服务。后者是在SDN场景下,与SDN Controller一起配合,为用户提供网络服务。

1.2.1 基于OpenStack的应用

基于OpenStack的应用,就是原生的云应用,Neutron作为OpenStack中的网络部件,为用户提供网络服务。

早期的Nova-Network时代,Neutron所支持的网络模型还比较简单,仅仅是单一的网络平面(或者是Flat,或者是VLAN),而且没有租户隔离,如图1-3所示参考https://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstacknetwork/。

图1-3 单平面租户共享网络

图1-3中,共享网络那个方框是Neutron的管理范围,它所表达的意思是:租户可以创建许多虚拟机,但是这些虚拟机只能连接到一个网络上。不同的租户共享一个网络,而且这个网络要么是VLAN网络,要么是Flat网络,只能是单一的网络类型。虽然Neutron在当时能够支持两种网络类型,但是在同一时刻,只能选择一种(虽然也没什么好选的)。另外,Neutron还不支持路由器,它必须借助外部路由器(图1-3中的Physical Router)才能有三层路由功能,这也意味着,不同租户的VM也必须在同一个网段,而且IP地址也不能重叠。

笔者当初第一眼看到这个图的时候,内心是崩溃的。不是因为它简单,而是因为它太简单。如果我们以物理世界的交换机、路由器来组网的话,单一平面网络就相当于图1-4所示的组网图:

图1-4 单平面网络在物理世界的映射

单一平面网络,名字取得这么清新脱俗,不过是实现了一个低端交换机而已。人生若只如初见,何事秋风悲画扇。说句心里话,如果网络技术真的这么简单倒挺好,大家也不用费那么大力气去学习了。

世界是复杂的,网络也是复杂的,Neutron也在慢慢成长,变成了今天的模样——支持多平面租户私有网络,如图1-5所示:

图1-5所表达的网络特征,总结如表1-3所示:

图1-5 多平面租户私有网络

表1-3 多平面租户私有网络的特征

可以看到,Neutron从当初的低端交换机已经发展成为支持各种协议,融合交换机、路由器为一体的,支持多租户隔离的综合解决方案。

有一点需要澄清一下,图1-5中的网络(比如租户A的私有网络)具体指的是什么?图1-4用了一个交换机做比方,虽然很痛快地说明了当初Nova-Network时代功能的不足,但是容易让人产生误解,以为Neutron当前的网络也不过是一个交换机而已,只是高端一点罢了。其实不然,无论是当初的Nova-Network时代,还是当今的Neutron时代,网络从具体实现来说,都不仅仅是一个交换机,而是一群交换机。

从模型角度来说,网络指的是Neutron的资源模型,是一个逻辑概念。从实现来说,网络指的是一群交换机,如图1-6所示:

图1-6 网络的实现模型

图1-6中,VM1、VM2、VM3分属3个Host,组成一个网络。从实现角度来说,这个网络指的就是3个Host中的3个虚拟交换机。

说明

实际上,虚拟机交换机比图1-6还要复杂,这里仅仅是一个简单示意。具体请参见第3章的描述。

Neutron基于OpenStack的应用,网络的实现一般都是Host内的虚拟交换机。在SDN场景下,网络的实现很多选用厂商的硬件交换机(和路由器)。

1.2.2 基于SDN的应用

一千个人的心中,就有一千个SDN。本文所说的SDN,指的是传统老牌设备厂商推出的SDN方案,如图1-7所示:

图1-7 基于SDN的应用场景

图1-7所描述的应用场景,可以说是SDN浪潮大背景下的运营商与传统老牌设备商心照不宣各取所需的“创新”方案。运营商一直以来都被各个设备厂商提供的形态各异、纷繁复杂的管理接口所深深“伤害”,一直期望能有一个统一的接口。随着OpenStack的发展,Neutron接口成为不少运营商的一个选择。当然,在SDN浪潮之下,仅仅选择Neutron接口是不够的,必须得沾上SDN的仙气。于是图1-7中的SDN控制器的存在就成为一种必然。这正好也中了设备商的下怀。1.2.1节提到,基于OpenStack的Neutron应用,其选择的基本是Host内的虚拟交换机、路由器,这是传统老牌设备商所不能接受的——如果都选择了虚拟设备,那自家生产的交换机、路由器卖给谁去?于是设备商就与运营商一拍即合,推出了自家的“SDN控制器+硬件设备(交换机、路由器)”综合解决方案,并将SDN控制器挂接在Neutron的下面,对外以Neutron的统一接口和SDN的面貌出现,其实醉翁之意不在酒,在乎销售自己的硬件设备也。

客观地说,设备商以这样的方案推销自己的硬件设备,除了在商言商无可指责以外,从技术角度而言,其实也是一个比较正确的选择,毕竟当前的虚拟交换机、路由器,其性能还是不能跟硬件设备相比,在很多场景下还是有点力不从心。

下面我们就以开源组织OPEN-O的一个用例为例来直观感受一下,如图1-8所示:

图1-8 OPEN-O Enterprise 2 DC场景解决方案

图1-8描述的是一个Enterprise 2 DC的场景,图左边的组网及“其他SDN控制器”与本文主题无关,我们先忽略。图右边是一个DC(数据中心), OPEN-O向下看到的是Neutron接口,而DC SDN控制器挂接在Neutron之下,对DC中的硬件设备(GW、TOR)进行配置管理。

说明

OPEN-O已经与AT&T的openECOMP合并为一个新的开源组织ONAP。

业界基于SDN的Neutron的应用案例还有很多,限于篇幅原因,这里就不一一列举。不过所有的案例、所有的解决方案,它们都有一个共同的特点:所有的SDN控制器都是挂接在Neutron之下的。这不仅因为业界期望Neutron能够成为统一的北向接口,也是源于Neutron的可扩展能力。