Neutron背景
Quantum(Neutron的前身)在Openstack的Folsom(2012年9月发布)版本正式发布,其实它已经作为试用组件包含在之前的Essex版本中。在Grizzly里功能得到了增强。因为商标侵权的原因,Openstack在Havana版本上将Quantum更名为Neutron,所以Neutron并不是什么新的东西。在Havana版里,Neutron也只增加和增强了少数功能。
Neutron是OpenStack中的一个项目,在各接口设备之间提供网络即服务(networking as a service),而且受其他OpenStack服务管理,如Nova。 具体来说,Neutron为OpenStack云更灵活地划分物理网络,在多租户环境下提供给每个租户独立的网络环境。另外,Neutron提供API来实现这种目标。Neutron中“网络”是一个可以被用户创建的对象,如果要和物理环境下的概念映射的话,这个对象相当于一个巨大的交换机,可以拥有无限多个动态可创建和销毁的虚拟端口。
Neutron网络结构
Neutron网络结构图,管理员创建和管理Neutron外部网络,是租户虚拟机与互联网信息交互的桥梁。更具体的,外部网络会分出一个子网,它是一组在互联网上可寻址的IP地址。一般情况下,外部网络只有一个(neutron是支持多个外部网络的),且由管理员创建。租户虚拟机创建和管理租户网络,每个网络可以根据需要划分成多个子网。诸多子网通过路由器与Neutron外部网络(图中具体是子网A)连接。路由器的gateway网关端连接外部网络的子网,interfaces接口端有多个,连接租户网络的子网。路由器及interface接口端连接的网络都是由租户根据需要自助创建,管理者只创建和管理Neutron外部网络部分。
总结来看,创建一个Neutron网络的过程如下:
1 、首先管理员拿到一组可以在互联网上寻址的IP地址,并且创建一个外部网络和子网
2、 租户创建一个网络和子网
3、 租户创建一个路由器并且连接租户子网和外部网络
4、 租户创建虚拟机
Neutron 服务网络管理的三种模式
1、Flat 模式
Flat 模式和 FlatDHCP 模式其实区别不大,都是基于网桥网络,只是 FLat 模式需要管理员手动配置(包括配置网桥和外部的 DHCP 设备)。
网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工作于数据链路层,不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。网桥两端的网络相对独立(属于同一个网络号),一端网络的故障不会影响到另一端网络的运行。
这种模式下与 Flat 模式不同的地方在于有一个 DHCP 进程,每一个运行 nova-network 进程的节点(网络控制节点/nove-network 主机)就是一个单独的网络。Nova 会在nova-network 主机建立网桥(默认名称 br100,配置项 flat_network_bridge=br100),并给该网桥指定该网络的网关 IP,同时 Nova 在网桥处起一个 DHCP 进程,最后,会建立 iptables 规则(SNAT/DNAT)使虚拟机能够与外界通信,同时与一个 metadata 服务器通信以取得 cloud 内的信息。
DHCP是动态主机分配协议(Dynamic Host Configuration Protocol),简单的说DHCP进程就是由网络中一台主机(DHCP Server)将所有的网络参数自动分配给网络内的所有计算机。
3、VLAN模式
VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。VLAN 是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。
VLAN 模式与 Flat 模式的区别
在 Flat 模式下,管理员的工作流程应该是这样的:
1、为所有租户创建一个 IP 池
2、创建租户
3、租户创建虚拟机,为虚拟机分配 IP 池中的可用 IP
在 VLAN 模式下流程如下:
1、创建新的租户,并记下租户的标识
2、为该租户创建独占的 fixed_ip 段:
3、租户创建虚拟机,从租户的私有 IP 段内分配 IP 给虚拟机
总结来说,Flat模式创建IP池为所有租户准备IP地址;VLAN模式则是把IP地址分段,每段分别对应一个租户。此外,VLAN 模式独有的是:将网络与租户关联、为网络分配一个 VLAN 号。
介绍Neutrion之余,也简单介绍OpenStack网络类型。一个标准的 OpenStack 网络设置有 4 个不同的物理数据中心网络:
1、管理网络:用于 OpenStack 各组件之间的内部通信。
2、数据网络:用于云部署中虚拟数据之间的通信。
3、外部网络:公共网络,外部或 internet 可以访问的网络。
4、API 网络:暴露所有的 OpenStack APIs,包括 OpenStack 网络 API 给租户们。
图中管理网络中交互的是Openstack个组件的请求,调用信息,是各组件是内部信息的传递。数据网络传递的数据信息,如图中就是网络节点与计算节点(Nova)之间的数据通信,受管理网络的支配。以上两种完全属于Openstack的内部通信,不与互联网直接联系。互联网与Openstack的通信大部分都是通过外部网络实现,可想而知,外部网络一端连接Openstack内部,一端通过路由器连接到Internet。API网络是实现了Openstack的开源,也与外部网络直接相连,但只接受租户获取Openstack各组件API的请求。
Neutron 总结
OpenStack 虚拟网络 Neutron 把部分传统网络管理的功能推到了租户方,租户通过它可以创建一个自己专属的虚拟网络及其子网,创建路由器等等,在虚拟网络功能的帮助下,基础物理网络就可以向外提供额外的网络服务了,比如租户完全可以创建一个属于自己的类似于数据中心网络的虚拟网络。Neutron 提供了比较完善的多租户环境下的虚拟网络模型以及 API。像部署物理网络一样,使用 Neutron 创建虚拟网络时也需要做一些基本的规划和设计。
参考文献:
1、OpenStack官网Neutron部分,https://wiki.openstack.org/wiki/Neutron
2、http://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstacknetwork/index.html
3、http://blog.ustack.com/blog/neutron_intro/